moved hardware configuration software options to hardware.nix

This commit is contained in:
Leyla Becker 2024-09-20 21:28:53 -05:00
parent 834165443a
commit 2213d099d0
8 changed files with 85 additions and 62 deletions

View file

@ -32,11 +32,11 @@ updating passwords: `sops secrets/secrets.yaml`
## Tech Debt ## Tech Debt
- allowUnfree should be enabled user side not host side (this isn't enabled at all right now for some reason???) - allowUnfree should be enabled user side not host side (this isn't enabled at all right now for some reason???)
- Move configs for pipe mouse, open rgb, and via keyboard to hardware config and install users side from those configs
- have nfs binds and exports defined by same code - have nfs binds and exports defined by same code
- move services from defiant into own flake - move services from defiant into own flake
- made base domain in nas services configurable - made base domain in nas services configurable
- vscode extensions should be in own flake (make sure to add the nixpkgs.overlays in it too) - vscode extensions should be in own flake (make sure to add the nixpkgs.overlays in it too)
- server service system users should also be on local systems for file permission reasons
## New Features ## New Features
- GNOME default monitors per hardware configuration? - GNOME default monitors per hardware configuration?
- offline access for nfs mounts (overlay with rsync might be a good option here? https://www.spinics.net/lists/linux-unionfs/msg07105.html note about nfs4 and overlay fs) - offline access for nfs mounts (overlay with rsync might be a good option here? https://www.spinics.net/lists/linux-unionfs/msg07105.html note about nfs4 and overlay fs)

View file

@ -4,8 +4,9 @@
{ config, lib, pkgs, modulesPath, ... }: { config, lib, pkgs, modulesPath, ... }:
{ {
imports = imports = [
[ (modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
../hardware-common.nix
]; ];
boot = { boot = {
@ -41,5 +42,8 @@
}; };
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware = {
# TODO: hardware graphics
cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
} }

16
hosts/hardware-common.nix Normal file
View file

@ -0,0 +1,16 @@
{ lib, ... }:
{
options = {
hardware = {
piperMouse = {
enable = lib.mkEnableOption "host has a piper mouse";
};
viaKeyboard = {
enable = lib.mkEnableOption "host has a via keyboard";
};
openRGB = {
enable = lib.mkEnableOption "host has open rgb hardware";
};
};
};
}

View file

@ -4,8 +4,9 @@
{ config, lib, pkgs, modulesPath, ... }: { config, lib, pkgs, modulesPath, ... }:
{ {
imports = imports = [
[ (modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
../hardware-common.nix
]; ];
boot = { boot = {
@ -23,9 +24,6 @@
}; };
}; };
hardware.graphics.enable = true;
fileSystems = { fileSystems = {
"/" = "/" =
{ device = "/dev/disk/by-uuid/866d422b-f816-4ad9-9846-791839cb9337"; { device = "/dev/disk/by-uuid/866d422b-f816-4ad9-9846-791839cb9337";
@ -100,5 +98,10 @@
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware = {
graphics.enable = true;
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
} }

View file

@ -14,9 +14,6 @@
users = { users = {
leyla = { leyla = {
isFullUser = true; isFullUser = true;
hasPiperMouse = true;
hasOpenRGBHardware = true;
hasViaKeyboard = true;
hasGPU = true; hasGPU = true;
}; };
ester.isFullUser = true; ester.isFullUser = true;

View file

@ -4,8 +4,9 @@
{ config, lib, pkgs, modulesPath, ... }: { config, lib, pkgs, modulesPath, ... }:
{ {
imports = imports = [
[ (modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
../hardware-common.nix
]; ];
boot = { boot = {
@ -31,43 +32,6 @@
displayManager.gdm.wayland = false; displayManager.gdm.wayland = false;
}; };
hardware = {
# Enable OpenGL
graphics.enable = true;
# install graphics drivers
nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
# Enable this if you have graphical corruption issues or application crashes after waking
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
# of just the bare essentials.
powerManagement.enable = false;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.production;
};
};
fileSystems = { fileSystems = {
"/" = "/" =
{ device = "/dev/disk/by-uuid/8be49c65-2b57-48f1-b74d-244d26061adb"; { device = "/dev/disk/by-uuid/8be49c65-2b57-48f1-b74d-244d26061adb";
@ -114,6 +78,48 @@
}; };
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware = {
piperMouse.enable = true;
viaKeyboard.enable = true;
openRGB.enable = true;
# Enable OpenGL
graphics.enable = true;
# install graphics drivers
nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
# Enable this if you have graphical corruption issues or application crashes after waking
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
# of just the bare essentials.
powerManagement.enable = false;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.production;
};
cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
};
} }

View file

@ -10,9 +10,6 @@ in
options.users.leyla = { options.users.leyla = {
isFullUser = lib.mkEnableOption "create usable leyla user"; isFullUser = lib.mkEnableOption "create usable leyla user";
isThinUser = lib.mkEnableOption "create usable user but witohut user applications"; isThinUser = lib.mkEnableOption "create usable user but witohut user applications";
hasPiperMouse = lib.mkEnableOption "install programs for managing piper supported mouses";
hasOpenRGBHardware = lib.mkEnableOption "install programs for managing openRGB supported hardware";
hasViaKeyboard = lib.mkEnableOption "install programs for managing via supported keyboards";
hasGPU = lib.mkEnableOption "installs gpu intensive programs"; hasGPU = lib.mkEnableOption "installs gpu intensive programs";
}; };

View file

@ -118,9 +118,9 @@ in
noisetorch noisetorch
# hardware managment tools # hardware managment tools
(lib.mkIf cfg.hasPiperMouse piper) (lib.mkIf config.hardware.piperMouse.enable piper)
(lib.mkIf cfg.hasOpenRGBHardware openrgb) (lib.mkIf config.hardware.openRGB.enable openrgb)
(lib.mkIf cfg.hasViaKeyboard via) (lib.mkIf config.hardware.viaKeyboard.enable via)
] ]
) )
) )