feat(graphics): generalize to graphics module
check / lint (push) Successful in 15s

This commit is contained in:
2026-10-09 21:54:33 +02:00
parent 7f497792de
commit a3905e5b3d
7 changed files with 148 additions and 113 deletions
+56
View File
@@ -0,0 +1,56 @@
{ lib, config, ... }:
let
cfg = config.graphics;
cardCount = lib.count lib.id [
cfg.intel.enable
cfg.nvidia.enable
];
in
{
imports = [
./intel-arc-140t.nix
./intel-uhd-770.nix
./nvidia.nix
];
options.graphics = {
enable = lib.mkEnableOption "graphics";
intel = {
enable = lib.mkEnableOption "Intel graphics";
model = lib.mkOption {
type = lib.types.nullOr (
lib.types.enum [
"arc-140t"
"uhd-770"
]
);
default = null;
};
};
nvidia.enable = lib.mkEnableOption "NVIDIA graphics";
};
config = {
assertions = [
{
assertion = !(cfg.enable && cardCount != 1);
message = "'graphics.enable' requires one and only one graphics card";
}
{
assertion = !(cardCount > 0 && !cfg.enable);
message = "'graphics.*.enable' require 'graphics.enable'";
}
{
assertion = !(cfg.intel.enable && cfg.intel.model == null);
message = "'graphics.intel.enable' requires 'graphics.intel.model'";
}
{
assertion = !(cfg.intel.model != null && !cfg.intel.enable);
message = "'graphics.intel.model' requires 'graphics.intel.enable'";
}
];
hardware.graphics.enable = lib.mkIf cfg.enable true;
};
}
+27
View File
@@ -0,0 +1,27 @@
{
lib,
config,
pkgs,
...
}:
{
config =
lib.mkIf
(
config.graphics.enable && config.graphics.intel.enable && config.graphics.intel.model == "arc-140t"
)
{
boot.initrd.kernelModules = [ "i915" ];
hardware.graphics = {
enable32Bit = true;
extraPackages = with pkgs; [
intel-compute-runtime
intel-media-driver
vpl-gpu-rt
];
extraPackages32 = with pkgs; [ driversi686Linux.intel-media-driver ];
};
environment.sessionVariables.LIBVA_DRIVER_NAME = "iHD";
};
}
+25
View File
@@ -0,0 +1,25 @@
{
lib,
config,
pkgs,
...
}:
{
config =
lib.mkIf
(config.graphics.enable && config.graphics.intel.enable && config.graphics.intel.model == "uhd-770")
{
boot.initrd.kernelModules = [ "i915" ];
hardware.graphics = {
enable32Bit = true;
extraPackages = with pkgs; [
intel-compute-runtime
intel-media-driver
vpl-gpu-rt
];
extraPackages32 = with pkgs; [ driversi686Linux.intel-media-driver ];
};
environment.sessionVariables.LIBVA_DRIVER_NAME = "iHD";
};
}
+22
View File
@@ -0,0 +1,22 @@
{ lib, config, ... }:
{
config = lib.mkIf (config.graphics.enable && config.graphics.nvidia.enable) {
nixpkgs.allowedUnfree = [
"nvidia-x11"
"nvidia-persistenced"
"nvidia-settings"
];
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
powerManagement.finegrained = false;
open = true;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.stable;
};
services.xserver.videoDrivers = [ "nvidia" ];
};
}