stockholm/makefu/2configs/bureautomation/default.nix

44 lines
977 B
Nix

{ pkgs, lib, ... }:
with lib;
let
port = 3001;
runit = pkgs.writeDash "runit" ''
set -xeuf
PATH=${pkgs.mosquitto}/bin:${pkgs.coreutils}/bin
name=''${1?must provide name as first arg}
state=''${2?must provide state as second arg}
# val=''${3?must provide val as third arg}
# we ignore non-alerting events
test $state = alerting || exit 0
echo $name - $state
topic=plug
mosquitto_pub -t /bam/$topic/cmnd/POWER -m ON
sleep 5
mosquitto_pub -t /bam/$topic/cmnd/POWER -m OFF
'';
in {
imports = [
./ota.nix
];
services.logstash = {
package = pkgs.logstash7;
plugins = [ pkgs.logstash-output-exec ];
enable = true;
inputConfig = ''
http {
port => ${toString port}
host => "127.0.0.1"
type => "schlechteluft"
}
'';
outputConfig = ''
if [type] == "schlechteluft" {
exec { command => "${runit} '%{ruleName}' '%{state}'" }
}
'';
};
}