67 lines
1.6 KiB
Nix
67 lines
1.6 KiB
Nix
{
|
|
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
|
|
'';
|
|
};
|
|
|
|
}
|