From bf63f448756136ff1e5abeed2faaf2e88aea7cfb Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Mon, 16 Jun 2025 18:45:05 +0800 Subject: [PATCH] refactor(nixos): move nvidia config to its own module --- modules/nixos/hardware/default.nix | 2 - modules/nixos/hardware/gpu/default.nix | 41 +++++++++++++++++++ modules/nixos/hardware/nvidia.nix | 29 ------------- .../web-apps/sd-webui-forge/default.nix | 2 +- systems/x86_64-linux/nemesis/default.nix | 2 +- 5 files changed, 43 insertions(+), 33 deletions(-) create mode 100644 modules/nixos/hardware/gpu/default.nix delete mode 100644 modules/nixos/hardware/nvidia.nix 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 = {