diff options
| author | adikro <adikro@disroot.org> | 2026-02-03 22:58:50 +0100 |
|---|---|---|
| committer | adikro <adikro@disroot.org> | 2026-02-03 22:58:50 +0100 |
| commit | eb95abfc230dc239122f1e89e90cd9a998491a2f (patch) | |
| tree | 9d60efacf83b97059f6300e360be2248f8e9c57e /os/core/drivers.nix | |
| parent | e5036417abe5d3597792f869e2831decd50eba5d (diff) | |
...
Diffstat (limited to 'os/core/drivers.nix')
| -rw-r--r-- | os/core/drivers.nix | 81 |
1 files changed, 50 insertions, 31 deletions
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"; + } ] ); } |
