diff options
| author | Seth Flynn <[email protected]> | 2025-02-10 14:12:12 -0500 |
|---|---|---|
| committer | Seth Flynn <[email protected]> | 2025-02-10 20:26:23 -0500 |
| commit | 688b481cf189d27daad494d3cf5391c8c012ee84 (patch) | |
| tree | 114a14513d6d706d0a98c15fcb5511f9292604b3 /modules/nixos/mixins/nvidia.nix | |
| parent | 81f2281e08d46e43c3c50dc945af75973e57355f (diff) | |
nixos/nvidia: move to a mixin
Diffstat (limited to 'modules/nixos/mixins/nvidia.nix')
| -rw-r--r-- | modules/nixos/mixins/nvidia.nix | 51 |
1 files changed, 51 insertions, 0 deletions
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; + }) + ]; +} |
