diff options
Diffstat (limited to 'modules/power.nix')
| -rw-r--r-- | modules/power.nix | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/modules/power.nix b/modules/power.nix new file mode 100644 index 0000000..b3dbf91 --- /dev/null +++ b/modules/power.nix @@ -0,0 +1,54 @@ +{ + 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"; + }; + }; + }; + }) + ] + ); +} |
