diff --git a/nixos/modules/services/misc/ersatztv.nix b/nixos/modules/services/misc/ersatztv.nix index e32a224241f0..faba7cc1d8e6 100644 --- a/nixos/modules/services/misc/ersatztv.nix +++ b/nixos/modules/services/misc/ersatztv.nix @@ -20,12 +20,14 @@ let bool float int + package ; cfg = config.services.ersatztv; defaultEnv = { ETV_UI_PORT = 8409; ETV_BASE_URL = "/"; }; + in { options = { @@ -54,6 +56,8 @@ in int float bool + path + package ]); default = defaultEnv; example = { @@ -108,7 +112,7 @@ in ETV_CONFIG_FOLDER = "/var/lib/ersatztv/config"; ETV_TRANSCODE_FOLDER = "/var/lib/ersatztv/transcode"; } - // cfg.environment; + // (lib.mapAttrs (_: s: if lib.isBool s then lib.boolToString s else toString s) cfg.environment); }; }; diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 9902d3e7e686..e54cceea4f2d 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -522,7 +522,7 @@ in }; ergo = runTest ./ergo.nix; ergochat = runTest ./ergochat.nix; - ersatztv = handleTest ./ersatztv.nix { }; + ersatztv = runTest ./ersatztv.nix; espanso = import ./espanso.nix { inherit (pkgs) lib; inherit runTest; diff --git a/nixos/tests/ersatztv.nix b/nixos/tests/ersatztv.nix index 0924579a74d9..12a41e19c9aa 100644 --- a/nixos/tests/ersatztv.nix +++ b/nixos/tests/ersatztv.nix @@ -1,21 +1,41 @@ -import ./make-test-python.nix ( - { lib, ... }: +{ lib, ... }: - { - name = "ersatztv"; - meta.maintainers = with lib.maintainers; [ allout58 ]; +{ + name = "ersatztv"; + meta.maintainers = with lib.maintainers; [ allout58 ]; - nodes.machine = - { ... }: - { - services.ersatztv.enable = true; - }; + nodes.basic = + { ... }: + { + services.ersatztv.enable = true; + }; + nodes.reconfigured = + { ... }: + { + services.ersatztv.enable = true; + services.ersatztv.environment.ETV_UI_PORT = 8123; + services.ersatztv.openFirewall = true; + }; - # ErsatzTV doesn't really have an API to speak of currently, so just check if it responds at all - testScript = '' - machine.wait_for_unit("ersatztv.service") - machine.wait_for_open_port(8409) - machine.succeed("curl --fail http://localhost:8409/") + # ErsatzTV doesn't really have an API to speak of currently, so just check if it responds at all + testScript = + { nodes, ... }: + let + basicIp = (lib.head nodes.basic.networking.interfaces.eth1.ipv4.addresses).address; + reconfiguredIp = (lib.head nodes.reconfigured.networking.interfaces.eth1.ipv4.addresses).address; + in + '' + start_all() + basic.wait_for_unit("ersatztv.service") + basic.wait_for_open_port(8409) + basic.succeed("curl --fail http://localhost:8409/api/sessions") + + reconfigured.wait_for_unit("ersatztv.service") + reconfigured.wait_for_open_port(8123) + reconfigured.succeed("curl --fail http://localhost:8123/api/sessions") + + # Test that the firewall is open + reconfigured.fail("curl --fail --connect-timeout 5 http://${basicIp}:8409/api/sessions") + basic.succeed("curl --fail http://${reconfiguredIp}:8123/api/sessions") ''; - } -) +}