refactor(nixos): move nvidia config to its own module

This commit is contained in:
Mohammad Rafiq 2025-06-16 18:45:05 +08:00
parent 5f71bc8925
commit bf63f44875
No known key found for this signature in database
5 changed files with 43 additions and 33 deletions

View file

@ -8,12 +8,10 @@ let
in
{
imports = [
./nvidia.nix
./audio.nix
];
options.hardware = {
gpu = lib.pantheon.mkStrOption;
platform = lib.pantheon.mkStrOption;
};

View file

@ -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="
];
})
];
}

View file

@ -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="
];
};
}

View file

@ -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 = {