import ./make-test.nix ({ pkgs, ... }: let configDir = "/var/lib/foobar"; in { name = "home-assistant"; nodes = { hass = { config, pkgs, ... }: { services.home-assistant = { inherit configDir; enable = true; config = { homeassistant = { name = "Home"; time_zone = "UTC"; latitude = "0.0"; longitude = "0.0"; elevation = 0; }; frontend = { }; http = { }; }; }; }; }; testScript = '' startAll; $hass->waitForUnit("home-assistant.service"); # Since config is specified using a Nix attribute set, # configuration.yaml is a link to the Nix store $hass->succeed("test -L ${configDir}/configuration.yaml"); # Check that Home Assistant's web interface and API can be reached $hass->waitForOpenPort(8123); $hass->succeed("curl --fail http://localhost:8123/states"); $hass->succeed("curl --fail http://localhost:8123/api/ | grep 'API running'"); $hass->fail("cat ${configDir}/home-assistant.log | grep -qF ERROR"); ''; })