system/roles/home-automation.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | {
config,
...
}:
let
inherit (config.networking) domain fqdn;
image = "ghcr.io/home-assistant/home-assistant";
tag = "stable";
port = 8123;
hostPort = "[::1]:${toString port}";
in
{
imports = [
./oci.nix
];
virtualisation.oci-containers.containers = {
home-assistant = {
image = "${image}:${tag}";
autoStart = true;
autoRemoveOnStop = false;
pull = "always";
environment = {
TZ = config.time.timeZone;
};
volumes = [
"/var/lib/home-assistant:/config"
];
extraOptions = [
"--network=host"
];
};
matter-server = {
image = "ghcr.io/matter-js/python-matter-server:stable";
autoStart = true;
autoRemoveOnStop = false;
pull = "always";
volumes = [
"matter-server:/data"
];
extraOptions = [
"--network=host"
];
};
};
services.caddy.virtualHosts = {
"ha.${domain}" = {
extraConfig = ''
tls {
issuer internal {
ca home
}
}
reverse_proxy http://${hostPort}
'';
};
};
services.dnsmasq.settings.cname = [
"ha.${domain},${fqdn}"
];
}
|