created home assistant service

This commit is contained in:
Leyla Becker 2025-01-02 18:22:05 -06:00
parent 1824bc8cc9
commit a4e308650f
4 changed files with 56 additions and 21 deletions

View file

@ -77,6 +77,10 @@
enable = true; enable = true;
subdomain = "search"; subdomain = "search";
}; };
home-assistant = {
enable = true;
subdomain = "home";
};
}; };
networking = { networking = {
hostId = "c51763d6"; hostId = "c51763d6";

View file

@ -239,17 +239,6 @@ in {
}; };
}; };
home-assistant = {
enable = true;
config.http = {
server_port = 8082;
use_x_forwarded_for = true;
trusted_proxies = ["127.0.0.1"];
ip_ban_enabled = true;
login_attempts_threshold = 10;
};
};
# nextcloud here is built using its auto setup mysql db because it was not playing nice with postgres # nextcloud here is built using its auto setup mysql db because it was not playing nice with postgres
nextcloud = { nextcloud = {
enable = true; enable = true;
@ -271,16 +260,6 @@ in {
proxyWebsockets = true; proxyWebsockets = true;
}; };
}; };
${config.apps.forgejo.hostname} = {
# forceSSL = true;
# enableACME = true;
locations."/".proxyPass = "http://localhost:${toString config.services.forgejo.settings.server.HTTP_PORT}";
};
${config.apps.home-assistant.hostname} = {
# forceSSL = true;
# enableACME = true;
locations."/".proxyPass = "http://localhost:${toString config.services.home-assistant.config.http.server_port}";
};
}; };
}; };
}; };

View file

@ -6,5 +6,6 @@
./jellyfin.nix ./jellyfin.nix
./forgejo.nix ./forgejo.nix
./searx.nix ./searx.nix
./home-assistant.nix
]; ];
} }

View file

@ -0,0 +1,51 @@
{
lib,
config,
...
}: let
configDir = "/var/lib/hass";
in {
options.host.home-assistant = {
enable = lib.mkEnableOption "should home-assistant be enabled on this computer";
subdomain = lib.mkOption {
type = lib.types.str;
description = "subdomain of base domain that home-assistant will be hosted at";
default = "home-assistant";
};
};
config = lib.mkIf config.host.home-assistant.enable (lib.mkMerge [
{
services.home-assistant = {
enable = true;
config.http = {
server_port = 8082;
use_x_forwarded_for = true;
trusted_proxies = ["127.0.0.1"];
ip_ban_enabled = true;
login_attempts_threshold = 10;
};
};
host = {
reverse_proxy.subdomains.${config.host.home-assistant.subdomain} = {
target = "http://localhost:${toString config.services.home-assistant.config.http.server_port}";
};
};
}
(lib.mkIf config.host.impermanence.enable {
assertions = [
{
assertion = config.services.home-assistant.configDir == configDir;
message = "home assistant config directory does not match persistence";
}
];
environment.persistence."/persist/system/root" = {
enable = true;
hideMounts = true;
directories = [
configDir
];
};
})
]);
}