diff options
| -rw-r--r-- | modules/nixos/mixins/default.nix | 1 | ||||
| -rw-r--r-- | modules/nixos/mixins/nvidia.nix | 51 | ||||
| -rw-r--r-- | modules/nixos/traits/default.nix | 1 | ||||
| -rw-r--r-- | modules/nixos/traits/nvidia.nix | 62 | ||||
| -rw-r--r-- | systems/glados/default.nix | 5 |
5 files changed, 53 insertions, 67 deletions
diff --git a/modules/nixos/mixins/default.nix b/modules/nixos/mixins/default.nix index 72bc296..f586904 100644 --- a/modules/nixos/mixins/default.nix +++ b/modules/nixos/mixins/default.nix @@ -5,6 +5,7 @@ ./hercules.nix ./kanidm.nix ./nginx.nix + ./nvidia.nix ./promtail.nix ]; } diff --git a/modules/nixos/mixins/nvidia.nix b/modules/nixos/mixins/nvidia.nix new file mode 100644 index 0000000..97a8f2e --- /dev/null +++ b/modules/nixos/mixins/nvidia.nix @@ -0,0 +1,51 @@ +{ config, lib, ... }: + +let + cfg = config.hardware.nvidia; + + # Unlike Nixpkgs, I know all of my GPUs should prefer the open modules after 560 + useOpenModulesByDefault = lib.versionAtLeast config.hardware.nvidia.package.version "560"; +in + +{ + options.hardware.nvidia = { + nvk.enable = lib.mkEnableOption "an NVK specialisation"; + }; + + config = lib.mkMerge [ + { + hardware.nvidia = { + open = useOpenModulesByDefault; + # We usually want this to make suspend, etc. work + powerManagement.enable = lib.mkDefault true; + }; + } + + (lib.mkIf cfg.nvk.enable { + specialisation = { + nvk.configuration = { + boot = { + # required for GSP firmware + kernelParams = [ "nouveau.config=NvGspRm=1" ]; + # we want early KMS + # https://wiki.archlinux.org/title/Kernel_mode_setting#Early_KMS_start + initrd.kernelModules = [ "nouveau" ]; + }; + + hardware = { + graphics.extraPackages = lib.mkForce [ ]; + nvidia-container-toolkit.enable = lib.mkForce false; + }; + + services.xserver.videoDrivers = lib.mkForce [ "modesetting" ]; + + system.nixos.tags = [ "with-nvk" ]; + }; + }; + }) + + (lib.mkIf config.traits.containers.enable { + hardware.nvidia-container-toolkit.enable = true; + }) + ]; +} diff --git a/modules/nixos/traits/default.nix b/modules/nixos/traits/default.nix index e8117ab..5036526 100644 --- a/modules/nixos/traits/default.nix +++ b/modules/nixos/traits/default.nix @@ -8,7 +8,6 @@ ./locale.nix ./mac-builder.nix ./nvd-diff.nix - ./nvidia.nix ./resolved.nix ./secrets.nix ./tailscale.nix diff --git a/modules/nixos/traits/nvidia.nix b/modules/nixos/traits/nvidia.nix deleted file mode 100644 index 2ab0f5b..0000000 --- a/modules/nixos/traits/nvidia.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ config, lib, ... }: -let - cfg = config.traits.nvidia; -in -{ - options.traits.nvidia = { - enable = lib.mkEnableOption "NVIDIA drivers"; - - openModules.enable = lib.mkEnableOption "open kernel modules for the proprietary driver" // { - # unlike nixpkgs, i know all of my nvidia cards should prefer the open modules after 560 - default = lib.versionAtLeast config.hardware.nvidia.package.version "560"; - }; - - nvk.enable = lib.mkEnableOption "an NVK specialisation"; - }; - - config = lib.mkIf cfg.enable ( - lib.mkMerge [ - { - services.xserver.videoDrivers = [ "nvidia" ]; - - hardware.nvidia = { - package = lib.mkDefault config.boot.kernelPackages.nvidiaPackages.latest; - - open = cfg.openModules.enable; - }; - } - - (lib.mkIf cfg.nvk.enable { - specialisation = { - nvk.configuration = { - boot = { - # required for GSP firmware - kernelParams = [ "nouveau.config=NvGspRm=1" ]; - # we want early KMS - # https://wiki.archlinux.org/title/Kernel_mode_setting#Early_KMS_start - initrd.kernelModules = [ "nouveau" ]; - }; - - # TODO: make sure we don't need this anymore - environment.sessionVariables = { - MESA_VK_VERSION_OVERRIDE = "1.3"; - }; - - hardware = { - graphics.extraPackages = lib.mkForce [ ]; - nvidia-container-toolkit.enable = lib.mkForce false; - }; - - services.xserver.videoDrivers = lib.mkForce [ "modesetting" ]; - - system.nixos.tags = [ "with-nvk" ]; - }; - }; - }) - - (lib.mkIf config.traits.containers.enable { - hardware.nvidia-container-toolkit.enable = true; - }) - ] - ); -} diff --git a/systems/glados/default.nix b/systems/glados/default.nix index a8e063c..85c2d85 100644 --- a/systems/glados/default.nix +++ b/systems/glados/default.nix @@ -53,6 +53,7 @@ flatpak.enable = true; fstrim.enable = true; fwupd.enable = true; + xserver.videoDrivers = [ "nvidia" ]; }; swapDevices = [ @@ -73,10 +74,6 @@ containers.enable = true; determinate.enable = true; mac-builder.enable = true; - nvidia = { - enable = true; - nvk.enable = false; - }; tailscale.enable = true; zram.enable = true; }; |
