{ config, pkgs, ... }: let batteryNotify = pkgs.writeShellScript "battery-notify" '' BAT="/sys/class/power_supply/BAT1" LEVEL=$(cat "$BAT/capacity") STATUS=$(cat "$BAT/status") if [ "$STATUS" = "Discharging" ] && [ "$LEVEL" -lt 20 ]; then ${pkgs.dunst}/bin/dunstify \ -r 9991 \ -t 0 \ -u critical \ "Battery Low" \ "Battery is at ''${LEVEL}%" else ${pkgs.dunst}/bin/dunstify \ -C 9991 2>/dev/null || true fi ''; in { systemd.user.services.battery-notify = { Unit = { Description = "Low battery notification"; After = [ "dunst.service" ]; Requires = [ "dunst.service" ]; }; Service = { Type = "oneshot"; ExecStart = batteryNotify; }; }; systemd.user.timers.battery-notify = { Unit = { Description = "Check battery level every 20 seconds"; }; Timer = { OnBootSec = "20s"; OnUnitActiveSec = "20s"; }; Install = { WantedBy = [ "timers.target" ]; }; }; }