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