From d854f9bd809bfb5d322db6d81bb1d6b4baf2a45a Mon Sep 17 00:00:00 2001 From: Myned Date: Wed, 29 Jan 2025 06:23:30 -0600 Subject: [PATCH] power-profiles-daemon: add profile switch at boot/resume Signed-off-by: Myned --- .../custom/services/power-profiles-daemon.nix | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/options/custom/services/power-profiles-daemon.nix b/options/custom/services/power-profiles-daemon.nix index 785552b..c5d4178 100644 --- a/options/custom/services/power-profiles-daemon.nix +++ b/options/custom/services/power-profiles-daemon.nix @@ -5,6 +5,7 @@ ... }: with lib; let + grep = "${pkgs.gnugrep}/bin/grep"; powerprofilesctl = "${pkgs.power-profiles-daemon}/bin/powerprofilesctl"; cfg = config.custom.services.power-profiles-daemon; @@ -28,12 +29,27 @@ in { # Switch to power-saver mode when on battery # https://wiki.archlinux.org/title/Power_management#Using_a_script_and_an_udev_rule udev.extraRules = mkIf cfg.auto '' - # Battery - SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="${powerprofilesctl} set power-saver" - # AC SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="${powerprofilesctl} set balanced" + # Battery + SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="${powerprofilesctl} set power-saver" ''; }; + + # Set power profile at boot/resume + powerManagement = let + set_profile = toString (pkgs.writeShellScript "set_profile" '' + if ${grep} 1 /sys/class/power_supply/*/online; then + # AC + ${powerprofilesctl} set balanced + else + # Battery + ${powerprofilesctl} set power-saver + fi + ''); + in { + powerUpCommands = set_profile; + resumeCommands = set_profile; + }; }; }