1
0
Fork 0
nixos-config/home-manager/modules/battery.nix
Malte Brandy 9f1ec78d04
WIP
2018-05-31 14:03:03 +02:00

41 lines
1.1 KiB
Nix

{ lib, pkgs, config, ... }:
with lib;
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 {
options.m-0.battery.enable = mkEnableOption "Battery";
config = mkIf config.m-0.battery.enable {
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" ];
};
};
};
};
}