nixos-config/services/esphome.nix

34 lines
867 B
Nix

{ config, pkgs, ... }:
with pkgs;
let
port = 6052;
inherit (config.services.home-assistant) configDir;
passwordFile = config.age.secrets.esphome-password.path;
in {
age.secrets.esphome-password.file = ../secrets/esphome/password.age;
services.nginx = {
virtualHosts."esphome.felschr.com" = {
enableACME = true;
forceSSL = true;
locations."/" = {
proxyPass = "http://localhost:${toString port}";
proxyWebsockets = true;
};
};
};
systemd.services.esphome = {
description = "ESPHome";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig.LoadCredential = [ "password:${passwordFile}" ];
script = ''
password="$(<"$CREDENTIALS_DIRECTORY/password")"
${pkgs.esphome}/bin/esphome dashboard ${configDir}/esphome --password "$password"
'';
};
}