From 39a2b09c27bb74c9e59d1772764f901e3c8fb9e4 Mon Sep 17 00:00:00 2001 From: adi Date: Wed, 29 Jul 2026 17:09:58 +0200 Subject: revamped flake.nix, removed homelab specific modules --- modules/drivers.nix | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 modules/drivers.nix (limited to 'modules/drivers.nix') diff --git a/modules/drivers.nix b/modules/drivers.nix new file mode 100644 index 0000000..6e74e98 --- /dev/null +++ b/modules/drivers.nix @@ -0,0 +1,99 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.os.core.drivers; +in +{ + options.os.core.drivers = { + enable = lib.mkEnableOption "enables hardware drivers"; + + cpu = lib.mkOption { + type = lib.types.enum [ + "intel" + "amd" + "none" + ]; + default = "none"; + description = "cpu manufacturer for microcode and platform-specific drivers"; + }; + + graphics = { + enable = lib.mkEnableOption "graphics support"; + amdgpu.enable = lib.mkEnableOption "amd specific gpu features"; + }; + + kernel = lib.mkOption { + type = lib.types.enum [ + "stable" + "zen" + "zfs" + "hardened" + ]; + default = "stable"; + }; + }; + + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + hardware.enableAllFirmware = true; + services = { + smartd.enable = true; + fwupd.enable = true; + }; + environment.systemPackages = [ pkgs.rivalcfg ]; + } + + (lib.mkIf (cfg.cpu == "amd") { + hardware.cpu.amd.updateMicrocode = true; + programs.coolercontrol.enable = true; + }) + + (lib.mkIf (cfg.cpu == "intel") { + hardware.cpu.intel.updateMicrocode = true; + services.thermald.enable = true; + }) + + (lib.mkIf cfg.graphics.enable { + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + hardware.sensor.iio.enable = true; + }) + + (lib.mkIf (cfg.graphics.enable && cfg.graphics.amdgpu.enable) { + services = { + lact.enable = true; + hardware.openrgb.enable = true; + }; + hardware = { + amdgpu = { + initrd.enable = true; + overdrive.enable = true; + }; + graphics.extraPackages = with pkgs; [ + rocmPackages.clr.icd + libva-utils + ]; + }; + }) + { + boot.kernelPackages = + let + kernels = { + "stable" = pkgs.linuxPackages_latest; + "zen" = pkgs.linuxPackages_zen; + "hardened" = pkgs.linuxPackages_hardened; + "zfs" = config.boot.zfs.package.latestCompatibleLinuxPackages; + }; + in + kernels.${cfg.kernel} or kernels."stable"; + } + ] + ); +} -- cgit v1.3