This commit is contained in:
2025-08-29 15:25:40 +02:00
parent 26440bfeee
commit f3821f0dfa
201 changed files with 2461 additions and 1546 deletions

View File

@@ -3,8 +3,17 @@
lib,
pkgs,
...
}: let
inherit (lib) mkEnableOption mkOption types mkIf mkMerge flatten concatMap;
}:
let
inherit (lib)
mkEnableOption
mkOption
types
mkIf
mkMerge
flatten
concatMap
;
cfg = config.nixos.hardware.graphics;
@@ -42,13 +51,20 @@
'';
hasVendor = vendor: builtins.elem vendor cfg.vendors;
in {
in
{
options.nixos.hardware.graphics = {
enable = mkEnableOption "Enable general graphics support";
vendors = mkOption {
type = types.listOf (types.enum ["amd" "intel" "nvidia"]);
default = ["amd"];
type = types.listOf (
types.enum [
"amd"
"intel"
"nvidia"
]
);
default = [ "amd" ];
description = "List of GPU vendors to configure support for.";
};
@@ -59,7 +75,12 @@ in {
description = "Use nvidia open driver";
};
package = mkOption {
type = types.enum ["stable" "beta" "production" "latest"];
type = types.enum [
"stable"
"beta"
"production"
"latest"
];
default = "stable";
description = "NVidia driver package to use.";
};
@@ -71,52 +92,57 @@ in {
hardware.graphics = {
enable = true;
enable32Bit = true;
extraPackages = flatten (concatMap (
extraPackages = flatten (
concatMap (
vendor:
if vendor == "amd"
then commonPackages ++ mesaVulkanPackages
else if vendor == "intel"
then
commonPackages
++ mesaVulkanPackages
++ (with pkgs; [
vpl-gpu-rt
intel-media-driver
intel-compute-runtime
intel-vaapi-driver
])
else if vendor == "nvidia"
then
commonPackages
++ (with pkgs; [
nvidiaOffloadScript
intel-media-driver
nvidia-vaapi-driver
vulkan-tools
])
else []
)
cfg.vendors);
if vendor == "amd" then
commonPackages ++ mesaVulkanPackages
else if vendor == "intel" then
commonPackages
++ mesaVulkanPackages
++ (with pkgs; [
vpl-gpu-rt
intel-media-driver
intel-compute-runtime
intel-vaapi-driver
])
else if vendor == "nvidia" then
commonPackages
++ (with pkgs; [
nvidiaOffloadScript
intel-media-driver
nvidia-vaapi-driver
vulkan-tools
])
else
[ ]
) cfg.vendors
);
extraPackages32 = flatten (concatMap (_: commonPackages32) cfg.vendors);
};
environment.systemPackages = flatten (concatMap (
environment.systemPackages = flatten (
concatMap (
vendor:
if vendor == "amd"
then
tools
++ (with pkgs; [
# rocmPackages.rpp
# rocmPackages.clr
])
else if vendor == "intel"
then tools
else if vendor == "nvidia"
then with pkgs; [egl-wayland libGL]
else []
)
cfg.vendors);
if vendor == "amd" then
tools
++ (with pkgs; [
# rocmPackages.rpp
# rocmPackages.clr
])
else if vendor == "intel" then
tools
else if vendor == "nvidia" then
with pkgs;
[
egl-wayland
libGL
]
else
[ ]
) cfg.vendors
);
}
(mkIf (hasVendor "amd") {
@@ -126,13 +152,14 @@ in {
(mkIf (hasVendor "nvidia") {
hardware.nvidia = {
package =
if cfg.nvidia.package == "beta"
then config.boot.kernelPackages.nvidiaPackages.beta
else if cfg.nvidia.package == "latest"
then config.boot.kernelPackages.nvidiaPackages.latest
else if cfg.nvidia.package == "production"
then config.boot.kernelPackages.nvidiaPackages.production
else config.boot.kernelPackages.nvidiaPackages.stable;
if cfg.nvidia.package == "beta" then
config.boot.kernelPackages.nvidiaPackages.beta
else if cfg.nvidia.package == "latest" then
config.boot.kernelPackages.nvidiaPackages.latest
else if cfg.nvidia.package == "production" then
config.boot.kernelPackages.nvidiaPackages.production
else
config.boot.kernelPackages.nvidiaPackages.stable;
modesetting.enable = true;
powerManagement.enable = false;