This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

power-action: replace krebs module with native upower

Uses services.upower for suspend on critical battery and a lightweight
systemd user service for espeak warnings. Removes krebs.power-action
dependency, special user, and sudo hacks.

Import moved from desktop configs to individual machine configs
(xerxes, ignavia) for explicit control.

+37 -43
-1
2configs/default.nix
··· 49 49 self.inputs.stockholm.nixosModules.exim-retiolum 50 50 self.inputs.stockholm.nixosModules.tinc 51 51 self.inputs.stockholm.nixosModules.iptables 52 - self.inputs.stockholm.nixosModules.power-action 53 52 self.inputs.stockholm.nixosModules.setuid 54 53 self.inputs.stockholm.nixosModules.secret 55 54 self.inputs.stockholm.nixosModules.sitemap
+35 -36
2configs/power-action.nix
··· 1 - { config, pkgs, ... }: 1 + { pkgs, ... }: 2 2 3 3 let 4 - suspend = pkgs.writers.writeDash "suspend" '' 5 - ${pkgs.systemd}/bin/systemctl suspend 4 + # Script that monitors upower D-Bus signals and speaks when battery gets low 5 + batteryMonitor = pkgs.writers.writeBash "battery-monitor" '' 6 + ${pkgs.upower}/bin/upower --monitor-detail | while read -r line; do 7 + if echo "$line" | grep -q "warning-level:.*low"; then 8 + ${pkgs.espeak}/bin/espeak -v +whisper -s 110 "power level low" 9 + fi 10 + done 6 11 ''; 7 - 8 - speak = 9 - text: 10 - pkgs.writers.writeDash "speak" '' 11 - ${pkgs.espeak}/bin/espeak -v +whisper -s 110 "${text}" 12 - ''; 13 12 14 13 in 15 14 { 16 - krebs.power-action = { 15 + # UPower handles battery monitoring via kernel events (not polling) 16 + services.upower = { 17 17 enable = true; 18 - plans.low-battery = { 19 - upperLimit = 10; 20 - lowerLimit = 15; 21 - charging = false; 22 - action = pkgs.writers.writeDash "warn-low-battery" '' 23 - ${speak "power level low"} 24 - ''; 25 - }; 26 - plans.suspend = { 27 - upperLimit = 10; 28 - lowerLimit = 0; 29 - charging = false; 30 - action = pkgs.writers.writeDash "suspend-wrapper" '' 31 - /run/wrappers/bin/sudo ${suspend} 32 - ''; 33 - }; 34 - user = "lass"; 18 + 19 + # Use percentage thresholds instead of time-based 20 + usePercentageForPolicy = true; 21 + 22 + # Warning levels (triggers D-Bus signals for our monitor) 23 + percentageLow = 15; 24 + percentageCritical = 10; 25 + 26 + # Suspend when battery drops below this 27 + percentageAction = 5; 28 + 29 + # Action to take at critical level 30 + criticalPowerAction = "Suspend"; 31 + allowRiskyCriticalPowerAction = true; 35 32 }; 36 33 37 - users.users.power-action = { 38 - isNormalUser = true; 39 - extraGroups = [ 40 - "audio" 41 - ]; 42 - }; 34 + # User service to monitor battery and speak warnings 35 + systemd.user.services.battery-warning = { 36 + description = "Battery low warning speaker"; 37 + wantedBy = [ "default.target" ]; 38 + after = [ "upower.service" ]; 43 39 44 - security.sudo.extraConfig = '' 45 - ${config.krebs.power-action.user} ALL= (root) NOPASSWD: ${suspend} 46 - ''; 40 + serviceConfig = { 41 + ExecStart = batteryMonitor; 42 + Restart = "always"; 43 + RestartSec = 5; 44 + }; 45 + }; 47 46 }
+1
machines/ignavia/config.nix
··· 13 13 # ../../2configs/baseX.nix 14 14 ../../2configs/desktops/qtile/nixos.nix 15 15 # ../../2configs/desktops/xmonad 16 + ../../2configs/power-action.nix 16 17 ../../2configs/yubikey.nix 17 18 ../../2configs/pipewire.nix 18 19 ../../2configs/browsers.nix
-2
machines/ignavia/physical.nix
··· 21 21 # inherit (pkgs) system; 22 22 # }).fwupd; 23 23 24 - krebs.power-action.battery = "BAT1"; 25 - 26 24 networking.hostId = "deadbeef"; 27 25 28 26 boot.loader.grub = {
-2
machines/styx/config.nix
··· 25 25 26 26 krebs.build.host = config.krebs.hosts.styx; 27 27 28 - krebs.power-action.enable = lib.mkForce false; 29 - 30 28 environment.systemPackages = with pkgs; [ 31 29 wol 32 30 (writeDashBin "wake-alien" ''
+1
machines/xerxes/config.nix
··· 7 7 ../../2configs/yubikey.nix 8 8 ../../2configs/tpm2.nix 9 9 ../../2configs/desktops/sway/default.nix 10 + ../../2configs/power-action.nix 10 11 ../../2configs/sunshine.nix 11 12 ../../2configs/rtl-sdr.nix 12 13 ../../2configs/browsers.nix
-1
2configs/desktops/lib/wayland.nix
··· 7 7 { 8 8 imports = [ 9 9 ../../alacritty.nix 10 - ../../power-action.nix 11 10 ../../xdg-open.nix 12 11 ../../yubikey.nix 13 12 ../../themes.nix
-1
2configs/desktops/lib/x11.nix
··· 8 8 { 9 9 imports = [ 10 10 ../../alacritty.nix 11 - ../../power-action.nix 12 11 ../../xdg-open.nix 13 12 ../../yubikey.nix 14 13 ../../pipewire.nix