diff options
| -rw-r--r-- | machines/corsac/default.nix | 3 | ||||
| -rw-r--r-- | services/home-assistant.nix | 57 |
2 files changed, 59 insertions, 1 deletions
diff --git a/machines/corsac/default.nix b/machines/corsac/default.nix index fde09f6..d030b31 100644 --- a/machines/corsac/default.nix +++ b/machines/corsac/default.nix @@ -13,13 +13,14 @@ ../../modules/nfs.nix ../../modules/jellyfin.nix + ../../services/home-assistant.nix ../../services/immich.nix ../../services/transmission.nix ]; foundation.monitoring = { client.enable = true; - services = [ "base" "dns" "jellyfin" "immich" ]; + services = [ "base" "dns" "home" "jellyfin" "immich" ]; }; system.stateVersion = "24.05"; diff --git a/services/home-assistant.nix b/services/home-assistant.nix new file mode 100644 index 0000000..cf594b0 --- /dev/null +++ b/services/home-assistant.nix @@ -0,0 +1,57 @@ +{ me, auxiliaryPkgs, ... }: + +let + inherit (auxiliaryPkgs) common; + + homeVersion = "2025.3.3"; + homeDir = "/srv/home"; + homeLocalPort = 8123; + + homeImage = common.pullImage { + name = "homeassistant/home-assistant"; + tag = homeVersion; + digest = "sha256:b67d76f5d0bacf55cf6c914be379a0436a1da1f8acb94ee08e3b108d46cf8c58"; + x86.sha256 = "06ijcvdzax473fsy90657jmr2vjzh5pwdssk2vzgva8d6g3d396l"; + }; + +in +{ + foundation.service.home-assistant = { + default = { + fullImage = homeImage; + # give home-assistant control over the device network + # stack to auto-discover devices on the network. + customNetwork = "host"; + volumes = [ + [ + "/etc/localtime" + "/etc/localtime:ro" + ] + [ + "${homeDir}/config" + "/config" + ] + ]; + ports = [ 8123 ]; + }; + + # additional services can be added here to enable + # more home-manager device integrations. + }; + + services.nginx.virtualHosts = { + "home.rnrd.fyi" = { + useACMEHost = "rnrd.fyi"; + forceSSL = true; + listenAddresses = [ me.tailscale.ip ]; + locations."/" = { + proxyPass = "http://127.0.0.1:${toString homeLocalPort}"; + proxyWebsockets = true; + }; + extraConfig = '' + proxy_buffering off; + access_log /var/log/nginx/home.access.log json_combined; + ''; + }; + }; +} |
