{ config, lib, ... }: let cfg = config.os.core.power; in { options.os.core.power = { enable = lib.mkEnableOption "enables power management"; mode = lib.mkOption { type = lib.types.enum ["amd" "intel" "none"]; default = "none"; }; }; config = lib.mkIf cfg.enable (lib.mkMerge [ { powerManagement.powertop.enable = true; boot.kernelParams = ["nvme_core.default_ps_max_latency_us=0"]; } (lib.mkIf (cfg.mode == "amd") { services.power-profiles-daemon.enable = true; boot.kernelParams = ["amd_pstate=active"]; }) (lib.mkIf (cfg.mode == "intel") { services = { power-profiles-daemon.enable = false; thermald.enable = true; tlp = { enable = true; settings = { START_CHARGE_THRESH_BAT0 = 75; STOP_CHARGE_THRESH_BAT0 = 80; START_CHARGE_THRESH_BAT1 = 75; STOP_CHARGE_THRESH_BAT1 = 80; CPU_SCALING_GOVERNOR_ON_AC = "performance"; CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; }; }; }; }) ]); }