{ config, lib, pkgs, ... }: { # Enable the TLP daemon services.tlp = { enable = true; settings = { CPU_MIN_PERF_ON_AC = 0; CPU_MAX_PERF_ON_AC = 100; CPU_MIN_PERF_ON_BAT = 0; CPU_MAX_PERF_ON_BAT = 50; }; }; # Suspend when the battery is critical and autosuspend USB and PCI services.udev.extraRules = '' SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{model_name}=="01AV405", ATTR{capacity}=="[0-5]", RUN+="${config.systemd.package}/bin/systemctl suspend -i" ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="auto" ACTION=="add", SUBSYSTEM=="pci", TEST=="power/control", ATTR{power/control}="auto" ''; # Undervolt CPU and GPU services.undervolt = { enable = true; coreOffset = -100; gpuOffset = -75; }; # Prevent overheating of the CPU services.thermald.enable = true; # Provide power management support to programs services.upower.enable = true; # HACK Enable internal microphone when headphones are plugged in and add workaround for frequent WiFi disconnects hardware.firmware = [ (pkgs.writeTextDir "/lib/firmware/hda-jack-retask.fw" '' [codec] 0x10ec0293 0x17aa2233 0 [pincfg] 0x12 0x90a60130 0x13 0x40000000 0x14 0x90170110 0x15 0x03211040 0x16 0x21211010 0x18 0x411111f0 0x19 0x21a11010 0x1a 0x40f000f0 0x1b 0x411111f0 0x1d 0x40738105 0x1e 0x411111f0 '') ]; # Power saving features for multiple devices boot.extraModprobeConfig = '' options snd-hda-intel patch=hda-jack-retask.fw power_save=1 options mac80211 beacon_loss_count=500 options iwlwifi power_save=1 uapsd_disable=0 options iwlmvm power_scheme=3 ''; }