2018-02-06 10:56:36 +00:00
|
|
|
{ config, lib, pkgs, buildPythonPackage, ... }:
|
|
|
|
with import <stockholm/lib>;
|
|
|
|
let
|
|
|
|
pkg = pkgs.ampel;
|
|
|
|
home = "/var/lib/ampel";
|
2019-02-09 22:19:53 +00:00
|
|
|
sec = "${toString <secrets>}/ampel/google-muell.json";
|
2018-02-06 10:56:36 +00:00
|
|
|
ampelsec = "${home}/google-muell.json";
|
2019-02-09 22:19:53 +00:00
|
|
|
cred = "${toString <secrets>}/ampel/google-muell-creds.json";
|
2018-09-16 22:46:26 +00:00
|
|
|
# TODO: generate this credential file locally
|
|
|
|
ampelcred = "${home}/google-muell-creds.json";
|
2018-02-06 10:56:36 +00:00
|
|
|
sleepval = "1800";
|
2019-03-06 15:42:52 +00:00
|
|
|
# default-color = "18,63,40";
|
|
|
|
default-color = "255,127,0";
|
2019-02-09 22:19:53 +00:00
|
|
|
config_json = toFile "config.json" (toJSON {
|
|
|
|
mq_hostname = "localhost";
|
|
|
|
mq_port = 1883;
|
|
|
|
mq_username = "sensor";
|
|
|
|
mq_topic = "/ham/flurlicht/cmnd/MEM1";
|
|
|
|
mq_password = replaceChars ["\n"] [""] (readFile "${toString <secrets>}/mqtt/sensor");
|
|
|
|
});
|
2018-02-06 10:56:36 +00:00
|
|
|
in {
|
|
|
|
users.users.ampel = {
|
|
|
|
uid = genid "ampel";
|
|
|
|
createHome = true;
|
|
|
|
isSystemUser = true;
|
|
|
|
inherit home;
|
|
|
|
};
|
|
|
|
systemd.services.google-muell-ampel = {
|
|
|
|
description = "Send led change to rgb cubes";
|
|
|
|
after = [ "network-online.target" ];
|
|
|
|
wantedBy = [ "multi-user.target" ];
|
|
|
|
serviceConfig = {
|
|
|
|
User = "ampel";
|
|
|
|
ExecStartPre = pkgs.writeDash "copy-ampel-secrets" ''
|
2018-09-16 22:46:26 +00:00
|
|
|
install -m600 -o ampel ${sec} ${ampelsec}
|
|
|
|
install -m600 -o ampel ${cred} ${ampelcred}
|
2018-02-06 10:56:36 +00:00
|
|
|
'';
|
2019-02-09 22:19:53 +00:00
|
|
|
ExecStart = "${pkg}/bin/google-muell --config ${config_json} --default-color=${default-color} --client-secrets=${ampelsec} --credential-path=${ampelcred} --sleepval=${sleepval}";
|
2018-02-06 10:56:36 +00:00
|
|
|
PermissionsStartOnly = true;
|
|
|
|
Restart = "always";
|
|
|
|
RestartSec = 10;
|
|
|
|
PrivateTmp = true;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|