diff options
| -rw-r--r-- | modules/nixos/traits/default.nix | 1 | ||||
| -rw-r--r-- | modules/nixos/traits/nvidia.nix | 47 | ||||
| -rw-r--r-- | systems/glados/default.nix | 5 | ||||
| -rw-r--r-- | systems/glados/gpu.nix | 35 |
4 files changed, 52 insertions, 36 deletions
diff --git a/modules/nixos/traits/default.nix b/modules/nixos/traits/default.nix index 51682a3..6816c56 100644 --- a/modules/nixos/traits/default.nix +++ b/modules/nixos/traits/default.nix @@ -4,6 +4,7 @@ ./containers.nix ./home-manager.nix ./locale.nix + ./nvidia.nix ./secrets.nix ./tailscale.nix ./zram.nix diff --git a/modules/nixos/traits/nvidia.nix b/modules/nixos/traits/nvidia.nix new file mode 100644 index 0000000..b66fa80 --- /dev/null +++ b/modules/nixos/traits/nvidia.nix @@ -0,0 +1,47 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.traits.nvidia; + usingNvidia = lib.elem "nvidia" config.services.xserver.videoDrivers; +in { + options.traits.nvidia = { + enable = lib.mkEnableOption "NVIDIA drivers"; + nvk.enable = lib.mkEnableOption "NVK specialisation"; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ + { + boot.kernelParams = lib.optional usingNvidia "nvidia_drm.fbdev=1"; + + services.xserver.videoDrivers = ["nvidia"]; + + hardware = { + opengl.extraPackages = [pkgs.vaapiVdpau]; + nvidia = { + package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.latest; + modesetting.enable = true; + }; + }; + } + + (lib.mkIf cfg.nvk.enable { + specialisation = { + nvk.configuration = { + boot = { + kernelParams = ["nouveau.config=NvGspRm=1"]; + initrd.kernelModules = ["nouveau"]; + }; + + hardware.opengl.extraPackages = lib.mkForce []; + + services.xserver.videoDrivers = lib.mkForce ["modesetting"]; + + system.nixos.tags = ["with-nvk"]; + }; + }; + }) + ]); +} diff --git a/systems/glados/default.nix b/systems/glados/default.nix index 847940e..86cb76a 100644 --- a/systems/glados/default.nix +++ b/systems/glados/default.nix @@ -6,7 +6,6 @@ imports = [ ./boot.nix ./hardware-configuration.nix - ./gpu.nix ]; archetypes.personal.enable = true; @@ -20,6 +19,10 @@ traits = { containers.enable = true; + nvidia = { + enable = true; + nvk.enable = true; + }; tailscale.enable = true; zram.enable = true; }; diff --git a/systems/glados/gpu.nix b/systems/glados/gpu.nix deleted file mode 100644 index 8e494c7..0000000 --- a/systems/glados/gpu.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: let - usingNvidia = lib.elem "nvidia" config.services.xserver.videoDrivers; -in { - boot.kernelParams = lib.optional usingNvidia "nvidia_drm.fbdev=1"; - - services.xserver.videoDrivers = ["nvidia"]; - - hardware = { - opengl.extraPackages = [pkgs.vaapiVdpau]; - nvidia = { - package = config.boot.kernelPackages.nvidiaPackages.latest; - modesetting.enable = true; - }; - }; - - specialisation = { - nvk.configuration = { - boot = { - kernelParams = ["nouveau.config=NvGspRm=1"]; - initrd.kernelModules = ["nouveau"]; - }; - - hardware.opengl.extraPackages = lib.mkForce []; - - services.xserver.videoDrivers = lib.mkForce ["modesetting"]; - - system.nixos.tags = ["with-nvk"]; - }; - }; -} |
