changes to fix compliance with home server
This commit is contained in:
@@ -17,7 +17,7 @@ in {
|
||||
|
||||
hardware = mkOption {
|
||||
type = types.enum ["amd" "nvidia"];
|
||||
default = "amd";
|
||||
default = "";
|
||||
description = "Hardware type (GPU) configuration.";
|
||||
};
|
||||
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkIf mkOption types mkEnableOption mkMerge;
|
||||
cfg = config.nixos.hardware.graphics.amd;
|
||||
in {
|
||||
options = {
|
||||
nixos.hardware.graphics.amd = {
|
||||
enable = mkEnableOption "AMD graphics support";
|
||||
|
||||
packageSet = mkOption {
|
||||
type = types.enum ["standard" "chaotic"];
|
||||
default = "standard";
|
||||
description = ''
|
||||
Which set of AMD graphics packages to use:
|
||||
- standard: Additional AMD-specific tools and utilities
|
||||
- chaotic: Chaotic Mesa git version with additional optimizations
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
{
|
||||
# Base configuration
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
}
|
||||
|
||||
# Standard Package Set
|
||||
(mkIf (cfg.packageSet == "standard") {
|
||||
hardware.graphics.extraPackages = with pkgs; [
|
||||
libva
|
||||
vaapiVdpau
|
||||
libvdpau-va-gl
|
||||
vulkan-loader
|
||||
vulkan-validation-layers
|
||||
vulkan-extension-layer
|
||||
vulkan-utility-libraries
|
||||
];
|
||||
hardware.graphics.extraPackages32 = with pkgs.pkgsi686Linux; [
|
||||
libva
|
||||
vaapiVdpau
|
||||
libvdpau-va-gl
|
||||
];
|
||||
environment.systemPackages = with pkgs; [
|
||||
vulkan-tools
|
||||
wayland
|
||||
wayland-protocols
|
||||
scx.rustscheds
|
||||
libGL
|
||||
# rocmPackages.rocm-smi
|
||||
];
|
||||
})
|
||||
|
||||
# Chaotic Package Set
|
||||
(mkIf (cfg.packageSet == "chaotic") {
|
||||
chaotic = {
|
||||
mesa-git = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs; [
|
||||
libva
|
||||
libvdpau-va-gl
|
||||
vaapiVdpau
|
||||
libdrm_git
|
||||
latencyflex-vulkan
|
||||
mesa_git
|
||||
mesa_git.opencl
|
||||
vulkanPackages_latest.vulkan-loader
|
||||
vulkanPackages_latest.vulkan-headers
|
||||
vulkanPackages_latest.vulkan-validation-layers
|
||||
vulkanPackages_latest.vulkan-extension-layer
|
||||
vulkanPackages_latest.vulkan-utility-libraries
|
||||
vulkanPackages_latest.vulkan-volk
|
||||
vulkanPackages_latest.spirv-headers
|
||||
vulkanPackages_latest.spirv-tools
|
||||
];
|
||||
extraPackages32 = with pkgs.pkgsi686Linux; [
|
||||
pkgs.mesa32_git
|
||||
pkgs.mesa32_git.opencl
|
||||
libdrm32_git
|
||||
libva
|
||||
libvdpau-va-gl
|
||||
vaapiVdpau
|
||||
];
|
||||
};
|
||||
};
|
||||
environment.systemPackages = with pkgs; [
|
||||
vulkanPackages_latest.vulkan-tools
|
||||
# vulkanPackages_latest.vulkan-tools-lunarg
|
||||
vulkanPackages_latest.gfxreconstruct
|
||||
vulkanPackages_latest.spirv-cross
|
||||
wayland-protocols_git
|
||||
wayland_git
|
||||
scx.rustscheds
|
||||
# rocmPackages.rocm-smi
|
||||
libGL
|
||||
];
|
||||
})
|
||||
]);
|
||||
}
|
||||
136
modules/nixos/hardware/graphics/default.nix
Normal file
136
modules/nixos/hardware/graphics/default.nix
Normal file
@@ -0,0 +1,136 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib) mkEnableOption mkOption types mkIf mkMerge;
|
||||
|
||||
cfg = config.nixos.hardware.graphics;
|
||||
vendor = cfg.vendor;
|
||||
|
||||
# Common packages used across all vendors
|
||||
commonPackages = with pkgs; [
|
||||
libva
|
||||
vaapiVdpau
|
||||
libvdpau-va-gl
|
||||
libGL
|
||||
];
|
||||
commonPackages32 = with pkgs.pkgsi686Linux; [
|
||||
libva
|
||||
vaapiVdpau
|
||||
libvdpau-va-gl
|
||||
];
|
||||
|
||||
# Mesa Vulkan packages (used by AMD & Intel only)
|
||||
mesaVulkanPackages = with pkgs; [
|
||||
vulkan-loader
|
||||
vulkan-validation-layers
|
||||
vulkan-extension-layer
|
||||
vulkan-utility-libraries
|
||||
];
|
||||
|
||||
# Extra desktop utilities
|
||||
tools = with pkgs; [
|
||||
vulkan-tools
|
||||
wayland
|
||||
wayland-protocols
|
||||
scx.rustscheds
|
||||
libGL
|
||||
];
|
||||
|
||||
nvidiaOffloadScript = pkgs.writeShellScriptBin "nvidia-offload" ''
|
||||
export LIBVA_DRIVER_NAME=nvidia
|
||||
export GBM_BACKEND=nvidia-drm
|
||||
export __GLX_VENDOR_LIBRARY_NAME=nvidia
|
||||
export __GL_VRR_ALLOWED=1
|
||||
export XDG_SESSION_TYPE=wayland
|
||||
export NVD_BACKEND=direct
|
||||
export ELECTRON_OZONE_PLATFORM_HINT=auto
|
||||
exec "$@"
|
||||
'';
|
||||
in {
|
||||
options.nixos.hardware.graphics = {
|
||||
enable = mkEnableOption "Enable general graphics support";
|
||||
|
||||
vendor = mkOption {
|
||||
type = types.enum ["amd" "intel" "nvidia"];
|
||||
default = "amd";
|
||||
description = "GPU vendor to configure support for.";
|
||||
};
|
||||
|
||||
nvidia = {
|
||||
open.enable = mkEnableOption "Enable NVidia open drivers";
|
||||
package = mkOption {
|
||||
type = types.enum ["stable" "beta" "production" "latest"];
|
||||
default = "stable";
|
||||
description = "NVidia driver package to use.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (
|
||||
mkMerge [
|
||||
{
|
||||
hardware.graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
}
|
||||
|
||||
# AMD-specific configuration
|
||||
(mkIf (vendor == "amd") {
|
||||
hardware.graphics.extraPackages = commonPackages ++ mesaVulkanPackages;
|
||||
hardware.graphics.extraPackages32 = commonPackages32;
|
||||
environment.systemPackages = tools;
|
||||
})
|
||||
|
||||
# Intel-specific configuration
|
||||
(mkIf (vendor == "intel") {
|
||||
hardware.graphics.extraPackages =
|
||||
commonPackages
|
||||
++ mesaVulkanPackages
|
||||
++ (with pkgs; [
|
||||
intel-media-driver
|
||||
intel-compute-runtime
|
||||
]);
|
||||
hardware.graphics.extraPackages32 = commonPackages32;
|
||||
environment.systemPackages = tools;
|
||||
})
|
||||
|
||||
# Nvidia-specific configuration
|
||||
(mkIf (vendor == "nvidia") {
|
||||
hardware.graphics.extraPackages =
|
||||
commonPackages
|
||||
++ (with pkgs; [
|
||||
nvidiaOffloadScript
|
||||
intel-media-driver
|
||||
nvidia-vaapi-driver
|
||||
vulkan-tools
|
||||
]);
|
||||
hardware.graphics.extraPackages32 = commonPackages32;
|
||||
environment.systemPackages = with pkgs; [
|
||||
egl-wayland
|
||||
libGL
|
||||
];
|
||||
|
||||
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;
|
||||
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = false;
|
||||
powerManagement.finegrained = false;
|
||||
open = cfg.nvidia.open.enable;
|
||||
nvidiaSettings = true;
|
||||
};
|
||||
})
|
||||
]
|
||||
);
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: let
|
||||
nvidia-offload = pkgs.writeShellScriptBin "nvidia-offload" ''
|
||||
export LIBVA_DRIVER_NAME=nvidia
|
||||
export GBM_BACKEND=nvidia-drm
|
||||
export __GLX_VENDOR_LIBRARY_NAME=nvidia
|
||||
export __GL_VRR_ALLOWED=1
|
||||
export XDG_SESSION_TYPE=wayland
|
||||
export NVD_BACKEND=direct
|
||||
export ELECTRON_OZONE_PLATFORM_HINT=auto
|
||||
exec "$@"
|
||||
'';
|
||||
inherit (lib) types mkIf mkEnableOption mkOption;
|
||||
cfg = config.nixos.hardware.graphics.nvidia;
|
||||
in {
|
||||
options = {
|
||||
nixos.hardware.graphics.nvidia = {
|
||||
enable = mkEnableOption "Enables NVidia graphics";
|
||||
open.enable = mkEnableOption "Enables open version of drivers";
|
||||
package = mkOption {
|
||||
type = types.enum ["stable" "beta" "production" "latest"];
|
||||
default = "stable";
|
||||
description = "Choose between the stable, beta, latest, or production NVidia driver package";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = with pkgs; [
|
||||
egl-wayland
|
||||
libGL
|
||||
];
|
||||
hardware = {
|
||||
graphics = {
|
||||
enable = true;
|
||||
enable32Bit = true;
|
||||
extraPackages = with pkgs; [
|
||||
nvidia-offload
|
||||
libva
|
||||
vaapiVdpau
|
||||
libvdpau-va-gl
|
||||
intel-media-driver
|
||||
nvidia-vaapi-driver
|
||||
vulkan-tools
|
||||
];
|
||||
extraPackages32 = with pkgs.pkgsi686Linux; [
|
||||
vaapiVdpau
|
||||
libvdpau-va-gl
|
||||
];
|
||||
};
|
||||
nvidia = {
|
||||
package =
|
||||
if cfg.package == "beta"
|
||||
then config.boot.kernelPackages.nvidiaPackages.beta
|
||||
else if cfg.package == "latest"
|
||||
then config.boot.kernelPackages.nvidiaPackages.latest
|
||||
else if cfg.package == "production"
|
||||
then config.boot.kernelPackages.nvidiaPackages.prodution
|
||||
else config.boot.kernelPackages.nvidiaPackages.stable;
|
||||
modesetting.enable = true;
|
||||
powerManagement = {
|
||||
enable = false;
|
||||
finegrained = false;
|
||||
};
|
||||
open = cfg.open.enable;
|
||||
nvidiaSettings = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -92,7 +92,7 @@ in {
|
||||
|
||||
(mkIf (host == "cnixtop") {
|
||||
programs.hyprland.settings = {
|
||||
"$terminal" = "ghostty";
|
||||
"$terminal" = "alacritty";
|
||||
"$browser" = "zen";
|
||||
"$browserinc" = "zen --private-window";
|
||||
"$mod" = "SUPER";
|
||||
|
||||
@@ -88,6 +88,7 @@ in {
|
||||
|
||||
(mkIf cfg.dev.enable [
|
||||
# lldb_20 # some biuld error atm
|
||||
gemini-cli
|
||||
nfs-utils
|
||||
gcc
|
||||
rust-analyzer
|
||||
|
||||
@@ -39,6 +39,10 @@ in {
|
||||
certpem.file = "${self}/secrets/certpem.age";
|
||||
keypem.file = "${self}/secrets/keypem.age";
|
||||
mailpwd.file = "${self}/secrets/mailpwd.age";
|
||||
gcapi = {
|
||||
file = "${self}/secrets/gcapi.age";
|
||||
owner = "cnst";
|
||||
};
|
||||
};
|
||||
})
|
||||
(mkIf cfg.toothpc.enable {
|
||||
@@ -53,9 +57,11 @@ in {
|
||||
})
|
||||
];
|
||||
|
||||
environment.systemPackages = [
|
||||
inputs.agenix.packages.x86_64-linux.default
|
||||
pkgs.age
|
||||
];
|
||||
environment = {
|
||||
systemPackages = [
|
||||
inputs.agenix.packages.x86_64-linux.default
|
||||
pkgs.age
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user