From eb81eaeb91a76085102d7175685d36837887933c Mon Sep 17 00:00:00 2001 From: seth Date: Wed, 13 Mar 2024 02:54:23 -0400 Subject: nixos/nvidia: init --- modules/nixos/traits/nvidia.nix | 47 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 modules/nixos/traits/nvidia.nix (limited to 'modules/nixos/traits/nvidia.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"]; + }; + }; + }) + ]); +} -- cgit v1.2.3