diff --git a/modules/nixos/hardware/default.nix b/modules/nixos/hardware/default.nix index 8463849..7652c0d 100644 --- a/modules/nixos/hardware/default.nix +++ b/modules/nixos/hardware/default.nix @@ -8,12 +8,10 @@ let in { imports = [ - ./nvidia.nix ./audio.nix ]; options.hardware = { - gpu = lib.pantheon.mkStrOption; platform = lib.pantheon.mkStrOption; }; diff --git a/modules/nixos/hardware/gpu/default.nix b/modules/nixos/hardware/gpu/default.nix new file mode 100644 index 0000000..300271a --- /dev/null +++ b/modules/nixos/hardware/gpu/default.nix @@ -0,0 +1,41 @@ +{ + config, + lib, + pkgs, + ... +}: +let + inherit (lib) + mkMerge + mkIf + mkEnableOption + singleton + ; + cfg = config.hardware.gpu; +in +{ + options.hardware.gpu = { + nvidia.enable = mkEnableOption ""; + }; + config = mkMerge [ + (mkIf cfg.nvidia.enable { + hardware = { + graphics.enable = true; + graphics.extraPackages = singleton pkgs.nvidia-vaapi-driver; + nvidia.open = true; + nvidia.package = config.boot.kernelPackages.nvidiaPackages.latest; + }; + services.xserver.videoDrivers = [ "nvidia" ]; + nixpkgs.config.allowUnfree = true; + environment.variables = { + LIBVA_DRIVER_NAME = "nvidia"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + NVD_BACKEND = "direct"; + }; + nix.settings.substituters = [ "https://cuda-maintainers.cachix.org" ]; + nix.settings.trusted-public-keys = [ + "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" + ]; + }) + ]; +} diff --git a/modules/nixos/hardware/nvidia.nix b/modules/nixos/hardware/nvidia.nix deleted file mode 100644 index 0f537f2..0000000 --- a/modules/nixos/hardware/nvidia.nix +++ /dev/null @@ -1,29 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: -{ - config = lib.mkIf (config.hardware.gpu == "nvidia") { - hardware = { - graphics.enable = true; - graphics.extraPackages = with pkgs; [ - nvidia-vaapi-driver - ]; - nvidia.open = true; - nvidia.package = config.boot.kernelPackages.nvidiaPackages.latest; - }; - services.xserver.videoDrivers = [ "nvidia" ]; - nixpkgs.config.allowUnfree = true; - environment.variables = { - LIBVA_DRIVER_NAME = "nvidia"; - __GLX_VENDOR_LIBRARY_NAME = "nvidia"; - NVD_BACKEND = "direct"; - }; - nix.settings.substituters = [ "https://cuda-maintainers.cachix.org" ]; - nix.settings.trusted-public-keys = [ - "cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E=" - ]; - }; -} diff --git a/modules/nixos/server/web-apps/sd-webui-forge/default.nix b/modules/nixos/server/web-apps/sd-webui-forge/default.nix index c039bc0..4ad3e82 100644 --- a/modules/nixos/server/web-apps/sd-webui-forge/default.nix +++ b/modules/nixos/server/web-apps/sd-webui-forge/default.nix @@ -15,7 +15,7 @@ mkWebApp { }; extraConfig = { assertions = singleton { - assertion = config.hardware.gpu == "nvidia"; + assertion = config.hardware.gpu.nvidia.enable; message = "You must run the sd-webui-forge service only with an nvidia gpu."; }; services.sd-webui-forge = { diff --git a/systems/x86_64-linux/nemesis/default.nix b/systems/x86_64-linux/nemesis/default.nix index 46ac398..fe75eec 100644 --- a/systems/x86_64-linux/nemesis/default.nix +++ b/systems/x86_64-linux/nemesis/default.nix @@ -16,7 +16,7 @@ ephemeralRoot = true; }; platform = "amd"; - gpu = "nvidia"; + gpu.nvidia.enable = true; }; desktop = {