summaryrefslogtreecommitdiff
path: root/nixos/modules/services/catbus-observer-networkpresence.nix
diff options
context:
space:
mode:
authorEthel Morgan <eth@ethulhu.co.uk>2020-06-29 23:18:00 +0100
committerEthel Morgan <eth@ethulhu.co.uk>2020-06-29 23:18:00 +0100
commit8710105f65154d19f7c65be10dd95b0e4ccab63b (patch)
treeccce00feb646e4b28ac4045fd1e6ea59cf36b6a4 /nixos/modules/services/catbus-observer-networkpresence.nix
parentea0e976056ee1b1652a51dc1ae3b02debf80e74d (diff)
refactor eth.services.catbus-{networkpresence,wakeonlan}
Diffstat (limited to 'nixos/modules/services/catbus-observer-networkpresence.nix')
-rw-r--r--nixos/modules/services/catbus-observer-networkpresence.nix83
1 files changed, 0 insertions, 83 deletions
diff --git a/nixos/modules/services/catbus-observer-networkpresence.nix b/nixos/modules/services/catbus-observer-networkpresence.nix
deleted file mode 100644
index da54956..0000000
--- a/nixos/modules/services/catbus-observer-networkpresence.nix
+++ /dev/null
@@ -1,83 +0,0 @@
-{ config, lib, pkgs, ... }:
-with lib;
-
-let
-
- cfg = config.eth.services.catbus-observer-networkpresence;
-
- configJSON = pkgs.writeText "config.json" (builtins.toJSON {
- mqttBroker = cfg.mqttBroker;
- devices = cfg.devices;
- });
-
-in {
-
- options.eth.services.catbus-observer-networkpresence = {
-
- enable = mkEnableOption "Whether to enable the Catbus network-presence observer";
-
- interface = mkOption {
- type = types.str;
- description = "interface to scan";
- default = "";
- example = "enp2s0";
- };
-
- mqttBroker = mkOption {
- type = types.str;
- description = "URL of the MQTT broker.";
- example = "tcp://broker.local:1883";
- };
-
- devices = mkOption {
- type = types.attrsOf (types.submodule {
- options = {
- mac = mkOption {
- type = types.str;
- description = "The device's MAC address";
- example = "aa:bb:cc:dd:ee:ff";
- };
- topic = mkOption {
- type = types.str;
- description = "MQTT topic for controlling the device";
- example = "home/house/speakers/power";
- };
- };
- });
- example = { TV = { mac = "aa:bb:cc:dd:ee:ff"; topic = "home/living-room/tv/power"; }; };
- description = "A set of devices and their MACs & controller topics.";
- };
- };
-
-
- config = mkIf cfg.enable {
- assertions = [
- {
- assertion = cfg.interface != "";
- message = "must set config.eth.services.catbus-observer-networkpresence.interface";
- }
- ];
-
- systemd.services.catbus-observer-networkpresence = {
- enable = true;
- description = "Detect devices on the network to publish to Catbus";
- wants = [ "network.target" ];
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
- serviceConfig = {
- DynamicUser = true;
- AmbientCapabilities = "CAP_NET_RAW CAP_NET_ADMIN";
-
- ExecStart = "${pkgs.eth.catbus-networkpresence}/bin/catbus-observer-networkpresence --config-path ${configJSON} --interface ${cfg.interface}";
-
- NoNewPrivileges = true;
- ProtectKernelTunables = true;
- ProtectControlGroups = true;
- ProtectKernelModules = true;
- RestrictNamespaces = true;
- };
- };
- };
-
-}
-