feat(fun/idual && nixos/camden): Add light alarm systemd units

Adds a systemd unit to run the idual light alarm using a transient
timer created by systemd-run.
This commit is contained in:
Vincent Ambo 2020-04-26 00:24:49 +01:00
parent 28bf77a1f1
commit 6644d0031d
3 changed files with 21 additions and 4 deletions

View file

@ -62,8 +62,10 @@ if __name__ == "__main__":
#
# The command sending doesn't always work, hence this brute-force
# approach.
print('Initialising light controller')
ctrl = LightController()
print('Turning on the lights. Wakey, wakey!')
for i in range(9):
ctrl.send_cmd('morning')
time.sleep(0.2)

View file

@ -12,8 +12,13 @@ let
python.broadlink
];
};
in lib.fix (self: {
package = python3Packages.buildPythonPackage opts;
script = python3Packages.buildPythonApplication opts;
python = python3.withPackages (_: [ self.package ]);
})
in {
inherit script;
python = python3.withPackages (_: [ package ]);
setAlarm = pkgs.writeShellScriptBin "set-alarm" ''
echo "setting an alarm for ''${1}"
${pkgs.systemd}/bin/systemd-run --user --on-calendar="''${1} Europe/London" --unit=light-alarm.service
'';
}

View file

@ -1,5 +1,5 @@
# This file configures camden.tazj.in, my homeserver.
{ depot, lib, ... }:
{ depot, pkgs, lib, ... }:
config: let
nixpkgs = import depot.third_party.nixpkgsSrc {
@ -100,6 +100,7 @@ in lib.fix(self: {
environment.systemPackages =
# programs from the depot
(with depot; [
fun.idual.setAlarm
third_party.git
third_party.honk
third_party.pounce
@ -347,5 +348,14 @@ in lib.fix(self: {
};
};
# Timer units that can be started with systemd-run to set my alarm.
systemd.user.services.light-alarm = {
script = "${depot.fun.idual.script}/bin/__init__.py";
postStart = "${pkgs.systemd}/bin/systemctl --user stop light-alarm.timer";
serviceConfig = {
Type = "oneshot";
};
};
system.stateVersion = "19.09";
})