summaryrefslogtreecommitdiff
path: root/os/core/power.nix
diff options
context:
space:
mode:
Diffstat (limited to 'os/core/power.nix')
-rw-r--r--os/core/power.nix56
1 files changed, 42 insertions, 14 deletions
diff --git a/os/core/power.nix b/os/core/power.nix
index 3a8bed2..3929033 100644
--- a/os/core/power.nix
+++ b/os/core/power.nix
@@ -1,18 +1,46 @@
-{ config, lib, ... }:
-let
- cfg = config.os.core.power;
-in
{
- options.os.core.power.enable = lib.mkEnableOption "enables AMD-optimized power management";
- config = lib.mkIf cfg.enable {
- services.power-profiles-daemon.enable = true;
+ 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";
+ };
+ };
- boot.kernelParams = [
- "amd_pstate=active"
- "nvme_core.default_ps_max_latency_us=0"
- ];
+ config = lib.mkIf cfg.enable (lib.mkMerge [
+ {
+ powerManagement.powertop.enable = true;
+ boot.kernelParams = ["nvme_core.default_ps_max_latency_us=0"];
+ }
- powerManagement.powertop.enable = true;
- services.thermald.enable = true;
- };
+ (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";
+ };
+ };
+ };
+ })
+ ]);
}