{ pkgs, config, lib, system, ... }: let inherit (lib) optionals optional concatLines getExe getExe' elem mkIf ; inherit (pkgs) writeShellScriptBin tlp tlpui; inherit (config.grimmShared) enable laptop_hardware graphical sway ; inherit (config.boot.kernelPackages) x86_energy_perf_policy cpupower; enable_perf_policy = (elem system x86_energy_perf_policy.meta.platforms); powersave = writeShellScriptBin "powersave-mode" ( concatLines ( [ "${getExe cpupower} frequency-set -g powersave -u 2000000" # clock speed "${getExe pkgs.brightnessctl} s 20%" # display brightness ] ++ optionals enable_perf_policy [ "${getExe x86_energy_perf_policy} 15" # power save preference "${getExe x86_energy_perf_policy} --turbo-enable 0" # disable turbo ] ++ optional sway.enable "init-screens-min" ) ); performance = writeShellScriptBin "performance-mode" ( concatLines ( [ "${getExe cpupower} frequency-set frequency-set -g performance -u 5000000" # clock speed "${getExe pkgs.brightnessctl} s 100%" # display brightness ] ++ optionals enable_perf_policy [ "${getExe x86_energy_perf_policy} 0" # performance preference "${getExe x86_energy_perf_policy} --turbo-enable 1" # enable turbo ] ++ optional sway.enable "init-screens-max" ) ); auto = writeShellScriptBin "auto-mode" '' ${getExe' tlp "run-on-ac"} ${getExe performance} ${getExe' tlp "run-on-bat"} ${getExe powersave} ''; in { config = mkIf (enable && laptop_hardware.enable) { environment.systemPackages = (with pkgs; [ acpi powertop brightnessctl ]) ++ [ cpupower powersave performance auto ] ++ optionals graphical [ tlpui ] ++ optional enable_perf_policy x86_energy_perf_policy; services.acpid = { enable = true; acEventCommands = getExe auto; }; powerManagement.scsiLinkPolicy = lib.mkIf (!config.services.tlp.enable) "min_power"; powerManagement.cpuFreqGovernor = lib.mkDefault "normal"; services.power-profiles-daemon.enable = false; services.upower.enable = true; boot.extraModulePackages = [ cpupower ] ++ optional enable_perf_policy x86_energy_perf_policy; services.tlp = { enable = true; settings = { USB_AUTOSUSPEND = 1; USB_EXCLUDE_BTUSB = 1; USB_EXCLUDE_PHONE = 1; SOUND_POWER_SAVE_ON_AC = 0; SOUND_POWER_SAVE_ON_BAT = 1; SATA_LINKPWR_ON_AC = "max_performance"; SATA_LINKPWR_ON_BAT = "min_power"; MAX_LOST_WORK_SECS_ON_BAT = 15; CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; CPU_BOOST_ON_AC = 1; CPU_BOOST_ON_BAT = 0; RUNTIME_PM_ON_AC = "on"; RUNTIME_PM_ON_BAT = "auto"; }; }; }; }