changes to fix compliance with home server

This commit is contained in:
2025-07-01 20:21:38 +02:00
parent 6d96d1a015
commit 7dfec3a2b0
23 changed files with 232 additions and 307 deletions

View File

@@ -58,8 +58,7 @@
./nixos/boot/loader
./nixos/hardware/bluetooth
./nixos/hardware/graphics/amd
./nixos/hardware/graphics/nvidia
./nixos/hardware/graphics
./nixos/hardware/logitech
./nixos/hardware/network

View File

@@ -11,7 +11,7 @@
window#waybar {
color: #fbf1c7;
background-color: rgba(43, 45, 50, 0.5);
background-color: rgba(43, 45, 50, 0.6);
}
#workspaces button {
@@ -60,7 +60,7 @@ window#waybar {
#cpu.warning,
#custom-dnd.dnd-notification,
#custom-dnd.dnd-none {
border-top: 3px solid #282828;
border-top: 3px solid transparent;
border-bottom: 3px solid #c35e0a;
}
@@ -71,12 +71,12 @@ window#waybar {
#cpu.critical,
#custom-yubikey,
#custom-recording {
border-top: 3px solid #282828;
border-top: 3px solid transparent;
border-bottom: 3px solid #c14a4a;
}
#battery.charging {
border-top: 3px solid #282828;
border-top: 3px solid transparent;
border-bottom: 3px solid #4c7a5d;
}

View File

@@ -26,14 +26,12 @@ in {
ConditionEnvironment = "WAYLAND_DISPLAY";
Description = "waybar";
};
Service = {
ExecStart = "${uwsm} app -- ${waybar} -c ${waybarAssets}/config.jsonc -s ${waybarAssets}/style.css";
Slice = "app-graphical.slice";
Restart = "always";
RestartSec = 10;
RestartSec = 30;
};
Install = {
WantedBy = ["graphical-session.target"];
};

View File

@@ -17,7 +17,7 @@ in {
hardware = mkOption {
type = types.enum ["amd" "nvidia"];
default = "amd";
default = "";
description = "Hardware type (GPU) configuration.";
};

View File

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

View 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;
};
})
]
);
}

View File

@@ -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;
};
};
};
}

View File

@@ -92,7 +92,7 @@ in {
(mkIf (host == "cnixtop") {
programs.hyprland.settings = {
"$terminal" = "ghostty";
"$terminal" = "alacritty";
"$browser" = "zen";
"$browserinc" = "zen --private-window";
"$mod" = "SUPER";

View File

@@ -88,6 +88,7 @@ in {
(mkIf cfg.dev.enable [
# lldb_20 # some biuld error atm
gemini-cli
nfs-utils
gcc
rust-analyzer

View File

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