From eb95abfc230dc239122f1e89e90cd9a998491a2f Mon Sep 17 00:00:00 2001 From: adikro Date: Tue, 3 Feb 2026 22:58:50 +0100 Subject: ... --- os/core/drivers.nix | 81 +++++++++++++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 31 deletions(-) (limited to 'os/core/drivers.nix') diff --git a/os/core/drivers.nix b/os/core/drivers.nix index a6905d5..da9d83a 100644 --- a/os/core/drivers.nix +++ b/os/core/drivers.nix @@ -4,14 +4,23 @@ pkgs, inputs, ... -}: -let +}: let cfg = config.os.core.drivers; -in -{ +in { options.os.core.drivers = { enable = lib.mkEnableOption "enables hardware drivers"; - amdgpu.enable = lib.mkEnableOption "AMD specific drivers and microcode"; + + 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" @@ -22,47 +31,57 @@ in default = "stable"; }; }; + config = lib.mkIf cfg.enable ( lib.mkMerge [ { - programs.coolercontrol.enable = true; - services.lact.enable = true; - services.smartd.enable = true; - hardware.sensor.iio.enable = true; 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; - extraPackages = with pkgs; [ - rocmPackages.clr.icd - ]; }; - environment.systemPackages = [ pkgs.rivalcfg ]; - } + hardware.sensor.iio.enable = true; + }) - (lib.mkIf cfg.amdgpu.enable { + (lib.mkIf (cfg.graphics.enable && cfg.graphics.amdgpu.enable) { + services.lact.enable = true; hardware.amdgpu = { initrd.enable = true; overdrive.enable = true; }; + hardware.graphics.extraPackages = with pkgs; [ + rocmPackages.clr.icd + ]; }) - - (lib.mkIf (cfg.kernel == "unstable") { - boot.kernelPackages = inputs.kernelv.legacyPackages.x86_64-linux.linuxPackages_6_17; - }) - - (lib.mkIf (cfg.kernel == "stable") { - boot.kernelPackages = pkgs.linuxPackages_latest; - }) - - (lib.mkIf (cfg.kernel == "zen") { - boot.kernelPackages = pkgs.linuxPackages_zen; - }) - - (lib.mkIf (cfg.kernel == "hardened") { - boot.kernelPackages = pkgs.linuxPackages_hardened; - }) + { + boot.kernelPackages = let + kernels = { + "stable" = pkgs.linuxPackages_latest; + "zen" = pkgs.linuxPackages_zen; + "hardened" = pkgs.linuxPackages_hardened; + "unstable" = inputs.kernelv.legacyPackages.x86_64-linux.linuxPackages_6_17; + }; + in + kernels.${cfg.kernel} or kernels."stable"; + } ] ); } -- cgit v1.3