Laptop

From NixOS Wiki
Revision as of 17:20, 18 June 2023 by imported>AmnesiaAmesia (Added initial text about auto-cpufreq)

Power management

NixOS has several tools to help you manage the power on your system.

tlp

A common tool used to save power on laptops is tlp, which have sensible defaults for most laptops. To enable tlp you simply just write services.tlp.enable = true; in your configraion.nix. However if you need a specific configuration you can do as shown in the example here below.

services.tlp = {
      enable = true;
      settings = {
        CPU_SCALING_GOVERNOR_ON_AC = "performance";
        CPU_SCALING_GOVERNOR_ON_BAT = "powersave";

        CPU_ENERGY_PERF_POLICY_ON_BAT = "powersave";
        CPU_ENERGY_PERF_POLICY_ON_AC = "performance";

        CPU_SCALING_MIN_FREQ_ON_AC = 800000;
        CPU_SCALING_MAX_FREQ_ON_AC = 5000000;
        CPU_SCALING_MIN_FREQ_ON_BAT = 800000;
        CPU_SCALING_MAX_FREQ_ON_BAT = 2600000;
      };
    };

This example enables tlp and sets the minimum and maximum frequencies for the cpu based on whether it is plugged into power or not. It also changes the cpu scaling governor based on this.

auto-cpufreq

Another tool used for power management is auto-cpufreq which aims to replace tlp. When using auto-cpufreq it is therefore recommended to disable tlp as these tools are conflicting each other. However NixOS does allow for using both at the same time and you therefore run them in tandem at your own risk. To enable the service just add services.auto-cpufreq.enable = true; to your configuration.nix

Troubleshooting

My laptops runs hot when on power, but not on battery

If you use tlp and experience this issue a simple solution can be to tell tlp to always run in battery mode.

services.tlp = {
      enable = true;
      settings = {
	TLP_DEFAULT_MODE = "BAT";
	TLP_PERSISTENT_DEFAULT = 1;
      };
    };