From 031b9e1b0cada730333e9dd1d0eb26cc975630f5 Mon Sep 17 00:00:00 2001 From: Ethel Morgan Date: Mon, 29 Jun 2020 23:06:50 +0100 Subject: refactor eth.services.catbus-lgtv --- nixos/modules/module-list.nix | 3 +- nixos/modules/services/catbus-actuator-lgtv.nix | 108 -------------------- nixos/modules/services/catbus-lgtv.nix | 128 ++++++++++++++++++++++++ nixos/modules/services/catbus-observer-lgtv.nix | 108 -------------------- 4 files changed, 129 insertions(+), 218 deletions(-) delete mode 100644 nixos/modules/services/catbus-actuator-lgtv.nix create mode 100644 nixos/modules/services/catbus-lgtv.nix delete mode 100644 nixos/modules/services/catbus-observer-lgtv.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index a5e7dcc..3f80aac 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -5,10 +5,9 @@ ./overlays.nix ./programs/dwm.nix ./services/ambience.nix - ./services/catbus-actuator-lgtv.nix ./services/catbus-actuator-wakeonlan.nix ./services/catbus-bridge-snapcast.nix - ./services/catbus-observer-lgtv.nix + ./services/catbus-lgtv.nix ./services/catbus-observer-networkpresence.nix ./services/dlnatoad.nix ./services/helix-directory-jackalope.nix diff --git a/nixos/modules/services/catbus-actuator-lgtv.nix b/nixos/modules/services/catbus-actuator-lgtv.nix deleted file mode 100644 index 051da5b..0000000 --- a/nixos/modules/services/catbus-actuator-lgtv.nix +++ /dev/null @@ -1,108 +0,0 @@ -{ config, lib, pkgs, ... }: -with lib; - -let - - cfg = config.eth.services.catbus-actuator-lgtv; - - configJSON = pkgs.writeText "config.json" (builtins.toJSON { - mqttBroker = "tcp://${cfg.mqttBroker.host}:${toString cfg.mqttBroker.port}"; - apps = cfg.apps; - topics = { - app = cfg.topics.input; - appValues = cfg.topics.inputValues; - power = cfg.topics.power; - volume = cfg.topics.volume; - }; - tv = cfg.tv; - }); - -in { - - options.eth.services.catbus-actuator-lgtv = { - - enable = mkEnableOption "Whether to enable the Catbus WebOS LGTV actuator"; - - mqttBroker = { - host = mkOption { - type = types.str; - description = "Host of the MQTT broker."; - example = "localhost"; - }; - port = mkOption { - type = types.int; - description = "Port of the MQTT broker."; - default = 1883; - }; - }; - - tv = { - host = mkOption { - type = types.str; - default = ""; - description = "TV host"; - example = "192.168.16.69"; - }; - key = mkOption { - type = types.str; - default = ""; - description = "A key generated from pkgs.eth.catbus-lgtv/bin/generate-key"; - example = "25561897424495c18042fef5ebe8d7fc"; - }; - }; - - topics = { - input = mkOption { - type = types.str; - description = "MQTT topic for controlling the TV's app"; - example = "home/living-room/tv/app_enum"; - }; - inputValues = mkOption { - type = types.str; - description = "MQTT topic for exporting the TV's apps"; - example = "home/living-room/tv/app_enum/values"; - }; - power = mkOption { - type = types.str; - description = "MQTT topic for controlling the TV's power"; - example = "home/living-room/tv/power"; - }; - volume = mkOption { - type = types.str; - description = "MQTT topic for controlling the TV's volume"; - example = "home/living-room/tv/volume_percent"; - }; - }; - - apps = mkOption { - type = types.attrsOf types.str; - example = { PS4 = "com.webos.input.hdmi1"; }; - description = "A set of friendly app names and their corresponding IDs"; - }; - }; - - - config = mkIf cfg.enable { - systemd.services.catbus-actuator-lgtv = { - enable = true; - description = "Control a WebOS LGTV via Catbus"; - wants = [ "network.target" ]; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - DynamicUser = true; - - ExecStart = "${pkgs.eth.catbus-lgtv}/bin/catbus-actuator-lgtv --config-path ${configJSON}"; - - NoNewPrivileges = true; - ProtectKernelTunables = true; - ProtectControlGroups = true; - ProtectKernelModules = true; - RestrictAddressFamilies = "AF_INET AF_INET6"; - RestrictNamespaces = true; - }; - }; - }; - -} - diff --git a/nixos/modules/services/catbus-lgtv.nix b/nixos/modules/services/catbus-lgtv.nix new file mode 100644 index 0000000..8011004 --- /dev/null +++ b/nixos/modules/services/catbus-lgtv.nix @@ -0,0 +1,128 @@ +{ config, lib, pkgs, ... }: +with lib; + +let + + cfg = config.eth.services.catbus-lgtv; + + configJSON = pkgs.writeText "config.json" (builtins.toJSON { + mqttBroker = "tcp://${cfg.mqttBroker.host}:${toString cfg.mqttBroker.port}"; + apps = cfg.apps; + topics = { + app = cfg.topics.input; + appValues = cfg.topics.inputValues; + power = cfg.topics.power; + volume = cfg.topics.volume; + }; + tv = cfg.tv; + }); + +in { + + options.eth.services.catbus-lgtv = { + + enable = mkEnableOption "Whether to enable the Catbus WebOS LGTV daemons."; + + mqttBroker = { + host = mkOption { + type = types.str; + description = "Host of the MQTT broker."; + example = "localhost"; + }; + port = mkOption { + type = types.int; + description = "Port of the MQTT broker."; + default = 1883; + }; + }; + + tv = { + host = mkOption { + type = types.str; + default = ""; + description = "TV host"; + example = "192.168.16.69"; + }; + key = mkOption { + type = types.str; + default = ""; + description = "A key generated from pkgs.eth.catbus-lgtv/bin/generate-key"; + example = "25561897424495c18042fef5ebe8d7fc"; + }; + }; + + topics = { + input = mkOption { + type = types.str; + description = "MQTT topic for controlling the TV's app"; + example = "home/living-room/tv/app_enum"; + }; + inputValues = mkOption { + type = types.str; + description = "MQTT topic for exporting the TV's apps"; + example = "home/living-room/tv/app_enum/values"; + }; + power = mkOption { + type = types.str; + description = "MQTT topic for controlling the TV's power"; + example = "home/living-room/tv/power"; + }; + volume = mkOption { + type = types.str; + description = "MQTT topic for controlling the TV's volume"; + example = "home/living-room/tv/volume_percent"; + }; + }; + + apps = mkOption { + type = types.attrsOf types.str; + example = { PS4 = "com.webos.input.hdmi1"; }; + description = "A set of friendly app names and their corresponding IDs"; + }; + }; + + + config = mkIf cfg.enable { + systemd.services.catbus-lgtv-actuator = { + enable = true; + description = "Control a WebOS LGTV via Catbus"; + wants = [ "network.target" ]; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + DynamicUser = true; + + ExecStart = "${pkgs.eth.catbus-lgtv}/bin/catbus-actuator-lgtv --config-path ${configJSON}"; + + NoNewPrivileges = true; + ProtectKernelTunables = true; + ProtectControlGroups = true; + ProtectKernelModules = true; + RestrictAddressFamilies = "AF_INET AF_INET6"; + RestrictNamespaces = true; + }; + }; + + systemd.services.catbus-lgtv-observer = { + enable = true; + description = "Observe a WebOS LGTV via Catbus"; + wants = [ "network.target" ]; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + DynamicUser = true; + + ExecStart = "${pkgs.eth.catbus-lgtv}/bin/catbus-observer-lgtv --config-path ${configJSON}"; + + NoNewPrivileges = true; + ProtectKernelTunables = true; + ProtectControlGroups = true; + ProtectKernelModules = true; + RestrictAddressFamilies = "AF_INET AF_INET6"; + RestrictNamespaces = true; + }; + }; + }; + +} + diff --git a/nixos/modules/services/catbus-observer-lgtv.nix b/nixos/modules/services/catbus-observer-lgtv.nix deleted file mode 100644 index 9e727f3..0000000 --- a/nixos/modules/services/catbus-observer-lgtv.nix +++ /dev/null @@ -1,108 +0,0 @@ -{ config, lib, pkgs, ... }: -with lib; - -let - - cfg = config.eth.services.catbus-observer-lgtv; - - configJSON = pkgs.writeText "config.json" (builtins.toJSON { - mqttBroker = "tcp://${cfg.mqttBroker.host}:${toString cfg.mqttBroker.port}"; - apps = cfg.apps; - topics = { - app = cfg.topics.input; - appValues = cfg.topics.inputValues; - power = cfg.topics.power; - volume = cfg.topics.volume; - }; - tv = cfg.tv; - }); - -in { - - options.eth.services.catbus-observer-lgtv = { - - enable = mkEnableOption "Whether to enable the Catbus WebOS LGTV observer"; - - mqttBroker = { - host = mkOption { - type = types.str; - description = "Host of the MQTT broker."; - example = "localhost"; - }; - port = mkOption { - type = types.int; - description = "Port of the MQTT broker."; - default = 1883; - }; - }; - - tv = { - host = mkOption { - type = types.str; - default = ""; - description = "TV host"; - example = "192.168.16.69"; - }; - key = mkOption { - type = types.str; - default = ""; - description = "A key generated from pkgs.eth.catbus-lgtv/bin/generate-key"; - example = "25561897424495c18042fef5ebe8d7fc"; - }; - }; - - topics = { - input = mkOption { - type = types.str; - description = "MQTT topic for controlling the TV's input"; - example = "home/living-room/tv/app_enum"; - }; - inputValues = mkOption { - type = types.str; - description = "MQTT topic for exporting the TV's apps"; - example = "home/living-room/tv/app_enum/values"; - }; - power = mkOption { - type = types.str; - description = "MQTT topic for controlling the TV's power"; - example = "home/living-room/tv/power"; - }; - volume = mkOption { - type = types.str; - description = "MQTT topic for controlling the TV's volume"; - example = "home/living-room/tv/volume_percent"; - }; - }; - - apps = mkOption { - type = types.attrsOf types.str; - example = { PS4 = "com.webos.input.hdmi1"; }; - description = "A set of friendly app names and their corresponding IDs"; - }; - }; - - - config = mkIf cfg.enable { - systemd.services.catbus-observer-lgtv = { - enable = true; - description = "Observe a WebOS LGTV via Catbus"; - wants = [ "network.target" ]; - after = [ "network.target" ]; - wantedBy = [ "multi-user.target" ]; - serviceConfig = { - DynamicUser = true; - - ExecStart = "${pkgs.eth.catbus-lgtv}/bin/catbus-observer-lgtv --config-path ${configJSON}"; - - NoNewPrivileges = true; - ProtectKernelTunables = true; - ProtectControlGroups = true; - ProtectKernelModules = true; - RestrictAddressFamilies = "AF_INET AF_INET6"; - RestrictNamespaces = true; - }; - }; - }; - -} - -- cgit v1.2.3