From d71ee4073c040cd39a2445eb4b1411ed7d3996ea Mon Sep 17 00:00:00 2001 From: Infinidoge Date: Mon, 22 Nov 2021 00:49:51 -0500 Subject: [PATCH] hardware/gpu: add gpu module --- hosts/Infini-DESKTOP/default.nix | 5 +--- hosts/Infini-FRAMEWORK/default.nix | 5 +--- hosts/Infini-SERVER/default.nix | 9 +++--- modules/modules/hardware/form.nix | 5 ++++ modules/modules/hardware/gpu.nix | 48 ++++++++++++++++++++++++++++++ profiles/hardware/gpu/amdgpu.nix | 7 ----- profiles/hardware/gpu/common.nix | 12 -------- profiles/hardware/gpu/intel.nix | 8 ----- profiles/hardware/gpu/nvidia.nix | 12 -------- 9 files changed, 59 insertions(+), 52 deletions(-) create mode 100644 modules/modules/hardware/gpu.nix delete mode 100644 profiles/hardware/gpu/amdgpu.nix delete mode 100644 profiles/hardware/gpu/common.nix delete mode 100644 profiles/hardware/gpu/intel.nix delete mode 100644 profiles/hardware/gpu/nvidia.nix diff --git a/hosts/Infini-DESKTOP/default.nix b/hosts/Infini-DESKTOP/default.nix index 2f968f8..c414579 100644 --- a/hosts/Infini-DESKTOP/default.nix +++ b/hosts/Infini-DESKTOP/default.nix @@ -8,10 +8,6 @@ (with profiles; [ networking.wireless - (with hardware; [ - gpu.nvidia - ]) - btrfs virtualization @@ -28,6 +24,7 @@ modules = { boot.grub.enable = true; hardware = { + gpu.nvidia = true; wireless.enable = true; form.desktop = true; }; diff --git a/hosts/Infini-FRAMEWORK/default.nix b/hosts/Infini-FRAMEWORK/default.nix index 92ec885..61e21f1 100644 --- a/hosts/Infini-FRAMEWORK/default.nix +++ b/hosts/Infini-FRAMEWORK/default.nix @@ -5,10 +5,6 @@ (with profiles; [ networking.wireless - (with hardware; [ - gpu.intel - ]) - # services.privoxy ]) @@ -44,6 +40,7 @@ modules = { boot.grub.enable = true; hardware = { + gpu.intel = true; form.laptop = true; }; }; diff --git a/hosts/Infini-SERVER/default.nix b/hosts/Infini-SERVER/default.nix index 94b7eee..27138d7 100644 --- a/hosts/Infini-SERVER/default.nix +++ b/hosts/Infini-SERVER/default.nix @@ -1,14 +1,13 @@ { suites, profiles, pkgs, lib, ... }: { imports = lib.our.flattenListSet { suites = with suites; [ base ]; - imports = [ ]; - profiles = with profiles; [ - hardware.gpu.nvidia - ]; }; modules = { boot.grub.enable = true; - hardware.form.server = true; + hardware = { + gpu.nvidia = true; + form.server = true; + }; }; } diff --git a/modules/modules/hardware/form.nix b/modules/modules/hardware/form.nix index f3c1f56..2f5cb9c 100644 --- a/modules/modules/hardware/form.nix +++ b/modules/modules/hardware/form.nix @@ -41,6 +41,11 @@ in }) (mkIf cfg.portable { modules.hardware = { + gpu = { + nvidia = mkDefault true; + intel = mkDefault true; + amdgpu = mkDefault true; + }; wireless.enable = mkDefault true; }; }) diff --git a/modules/modules/hardware/gpu.nix b/modules/modules/hardware/gpu.nix new file mode 100644 index 0000000..1f2168d --- /dev/null +++ b/modules/modules/hardware/gpu.nix @@ -0,0 +1,48 @@ +{ config, lib, ... }: +with lib; +with lib.hlissner; +let + cfg = config.modules.hardware.gpu; +in +{ + options.modules.hardware.gpu = { + amdgpu = mkBoolOpt false; + nvidia = mkBoolOpt false; + intel = mkBoolOpt false; + }; + + config = mkMerge [ + (mkIf (any (with cfg; [ amdgpu nvidia intel ])) { + hardware.opengl = { + enable = true; + driSupport = true; + driSupport32Bit = true; + + extraPackages = with pkgs; [ + vaapiVdpau + libvdpau-va-gl + ]; + }; + }) + + (mkIf cfg.amdgpu { + boot.initrd.kernelModules = [ "amdgpu" ]; + services.xserver.videoDrivers = [ "amdgpu" ]; + }) + + (mkIf cfg.nvidia { + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware.nvidia = { + modesetting.enable = true; + powerManagement.enable = true; + }; + + virtualisation.docker.enableNvidia = true; + }) + + (mkIf cfg.intel { + hardware.opengl.extraPackages = with pkgs; [ intel-media-driver vaapiIntel ]; + }) + ]; +} diff --git a/profiles/hardware/gpu/amdgpu.nix b/profiles/hardware/gpu/amdgpu.nix deleted file mode 100644 index 0b9d36a..0000000 --- a/profiles/hardware/gpu/amdgpu.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ ... }: { - imports = [ ./common.nix ]; - - boot.initrd.kernelModules = [ "amdgpu" ]; - - services.xserver.videoDrivers = [ "amdgpu" ]; -} diff --git a/profiles/hardware/gpu/common.nix b/profiles/hardware/gpu/common.nix deleted file mode 100644 index d71e4b1..0000000 --- a/profiles/hardware/gpu/common.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ pkgs, ... }: { - hardware.opengl = { - enable = true; - driSupport = true; - driSupport32Bit = true; - - extraPackages = with pkgs; [ - vaapiVdpau - libvdpau-va-gl - ]; - }; -} diff --git a/profiles/hardware/gpu/intel.nix b/profiles/hardware/gpu/intel.nix deleted file mode 100644 index e3b340a..0000000 --- a/profiles/hardware/gpu/intel.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs, ... }: { - imports = [ ./common.nix ]; - - hardware.opengl.extraPackages = with pkgs; [ - intel-media-driver - vaapiIntel - ]; -} diff --git a/profiles/hardware/gpu/nvidia.nix b/profiles/hardware/gpu/nvidia.nix deleted file mode 100644 index 4387095..0000000 --- a/profiles/hardware/gpu/nvidia.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ ... }: { - imports = [ ./common.nix ]; - - services.xserver.videoDrivers = [ "nvidia" ]; - - hardware.nvidia = { - modesetting.enable = true; - powerManagement.enable = true; - }; - - virtualisation.docker.enableNvidia = true; -}