{ config, lib, pkgs, ... }: { options.nix-config = { power = { batteryThresholds = lib.mkOption { type = lib.types.listOf lib.types.int; default = [ 60 80 ]; description = "Battery charge thresholds for power management."; }; }; }; config = { services.tlp = { enable = true; settings = { # processor chooses frequencies itself but respects the limits set by the user CPU_DRIVER_OPMODE_ON_AC = "guided"; CPU_DRIVER_OPMODE_ON_BAT = "guided"; # governor dictates global behavior of the CPU CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; CPU_SCALING_GOVERNOR_ON_AC = "performance"; # energy performance policy (EPP) sets the energy/performance balance CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power"; CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; # clock speeds reported by `sudo tlp-stat` # 623377 [kHz] and 5090910 [kHz] # CPU_SCALING_MIN_FREQ_ON_AC = 623377; # CPU_SCALING_MAX_FREQ_ON_AC = 5090910; # CPU_SCALING_MIN_FREQ_ON_BAT = 0; # # reduce max frequency on battery to save power # CPU_SCALING_MAX_FREQ_ON_BAT = 3000000; # Allow the CPU to boost CPU_BOOST_ON_AC = 1; CPU_BOOST_ON_BAT = 1; RADEON_DPM_PERF_LEVEL_ON_AC = "high"; WIFI_PWR_ON_BAT = "off"; # enable battery charge thresholds on the default battery STOP_CHARGE_THRESH_BAT0 = 1; }; }; systemd.sleep.extraConfig = '' AllowSuspend=yes AllowHibernation=yes AllowHybridSleep=yes AllowSuspendThenHibernate=yes ''; }; }