2018-05-31 10:34:48 +00:00
|
|
|
{ lib, pkgs, ... }:
|
|
|
|
with lib;
|
2018-05-26 20:48:33 +00:00
|
|
|
let
|
|
|
|
battery-watch = pkgs.writeShellScriptBin "battery-watch" ''
|
|
|
|
critical_level=20 #percent
|
|
|
|
|
|
|
|
while true
|
|
|
|
do
|
|
|
|
if [ "$(${pkgs.acpi}/bin/acpi -a | grep -o off)" == "off" ]; then
|
|
|
|
battery_level=`${pkgs.acpi}/bin/acpi -b | sed 's/.*[dg], //g;s/\%,.*//g'`
|
|
|
|
if [ $battery_level -le $critical_level ]; then
|
|
|
|
${pkgs.eventd}/bin/eventc critical battery -d "title='Battery level is low!'" -d "message='Only $battery_level% of the charge remains.'"
|
|
|
|
else
|
|
|
|
${pkgs.eventd}/bin/eventc notification battery -d "title='Battery is discharging!'" -d "message='Only $battery_level% of the charge remains.'"
|
|
|
|
sleep 18m
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
sleep 2m
|
|
|
|
done
|
|
|
|
'';
|
|
|
|
in {
|
2018-05-31 10:34:48 +00:00
|
|
|
|
|
|
|
options.m-0.battery.enable = mkEnableOption "Battery";
|
|
|
|
|
|
|
|
config = mkIf config.m-0.battery.enable {
|
2018-05-26 20:48:33 +00:00
|
|
|
systemd.user = {
|
|
|
|
services.battery = {
|
|
|
|
Unit = {
|
|
|
|
Description = "Watch battery state and warn user";
|
|
|
|
};
|
|
|
|
Service = {
|
|
|
|
ExecStart="/bin/sh ${battery-watch}/bin/battery-watch";
|
|
|
|
};
|
|
|
|
Install = {
|
|
|
|
WantedBy = [ "graphical-session.target" ];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2018-05-31 10:34:48 +00:00
|
|
|
};
|
|
|
|
|
2018-05-26 20:48:33 +00:00
|
|
|
}
|