diff --git a/nixos/modules/services/misc/home-assistant.nix b/nixos/modules/services/misc/home-assistant.nix index 07b14bb6764..b9a97296779 100644 --- a/nixos/modules/services/misc/home-assistant.nix +++ b/nixos/modules/services/misc/home-assistant.nix @@ -134,8 +134,10 @@ in { description = "Home Assistant"; after = [ "network.target" ]; preStart = lib.optionalString (cfg.config != null) '' - rm -f ${cfg.configDir}/configuration.yaml - ln -s ${configFile} ${cfg.configDir}/configuration.yaml + config=${cfg.configDir}/configuration.yaml + rm -f $config + ${pkgs.remarshal}/bin/json2yaml -i ${configFile} -o $config + chmod 444 $config ''; serviceConfig = { ExecStart = "${package}/bin/hass --config '${cfg.configDir}'"; diff --git a/nixos/tests/home-assistant.nix b/nixos/tests/home-assistant.nix index 2e45dc78471..4ebccb7ab86 100644 --- a/nixos/tests/home-assistant.nix +++ b/nixos/tests/home-assistant.nix @@ -51,9 +51,9 @@ in { 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"); + # The config is specified using a Nix attribute set, + # but then converted from JSON to YAML + $hass->succeed("test -f ${configDir}/configuration.yaml"); # Check that Home Assistant's web interface and API can be reached $hass->waitForOpenPort(8123);