From bdeff8ce20162641d4d0051c868b79448ca982a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9C=BF=20corey?= Date: Tue, 17 Mar 2026 20:35:01 +0000 Subject: [PATCH 1/4] fix(spore): enable WebSocket proxying for ha.zx.dev Home Assistant requires WebSocket support for its frontend to load. Co-Authored-By: Claude Sonnet 4.6 (1M context) --- hosts/spore/services/web/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hosts/spore/services/web/default.nix b/hosts/spore/services/web/default.nix index 4a5e378f..14b99f8e 100644 --- a/hosts/spore/services/web/default.nix +++ b/hosts/spore/services/web/default.nix @@ -60,7 +60,10 @@ "ha.zx.dev" = { forceSSL = true; useACMEHost = "zx.dev"; - locations."/".proxyPass = "http://zeta.rove-duck.ts.net:8123"; + locations."/" = { + proxyPass = "http://zeta.rove-duck.ts.net:8123"; + proxyWebsockets = true; + }; }; "files.zx.dev" = { forceSSL = true; From 4716f16933c48861f2359106dd3bffa6dd2c6e91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9C=BF=20corey?= Date: Tue, 17 Mar 2026 20:41:32 +0000 Subject: [PATCH 2/4] fix(zeta): add camera extraComponent to Home Assistant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit HA 2026.2 introduced an ai_task component that's unconditionally imported during WebSocket service description loading. The import chain (ai_task → camera → img_util) requires pyturbojpeg, which wasn't present. Adding camera as an extraComponent pulls in the required Python dependencies via the NixOS HA module. Co-Authored-By: Claude Sonnet 4.6 (1M context) --- hosts/zeta/services/home-assistant.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/zeta/services/home-assistant.nix b/hosts/zeta/services/home-assistant.nix index caf1dfce..84ac223d 100644 --- a/hosts/zeta/services/home-assistant.nix +++ b/hosts/zeta/services/home-assistant.nix @@ -10,6 +10,8 @@ "esphome" "met" "radio_browser" + # Required by ai_task → camera import chain in service descriptions + "camera" ]; config = { http = { From d550d8eca1688aa15de48aa4c28a9bbfca408a88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9C=BF=20corey?= Date: Tue, 17 Mar 2026 20:49:42 +0000 Subject: [PATCH 3/4] feat(zeta): add mobile_app component to Home Assistant Enables iOS companion app access. Co-Authored-By: Claude Sonnet 4.6 (1M context) --- hosts/zeta/services/home-assistant.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/zeta/services/home-assistant.nix b/hosts/zeta/services/home-assistant.nix index 84ac223d..5a400e8d 100644 --- a/hosts/zeta/services/home-assistant.nix +++ b/hosts/zeta/services/home-assistant.nix @@ -12,6 +12,7 @@ "radio_browser" # Required by ai_task → camera import chain in service descriptions "camera" + "mobile_app" ]; config = { http = { From 740ea9ecc735fa30d92f36fc8775362904da6490 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=9C=BF=20corey?= Date: Tue, 17 Mar 2026 20:57:05 +0000 Subject: [PATCH 4/4] fix(zeta): explicitly enable mobile_app in HA configuration extraComponents only makes packages available; the component also needs to be declared in configuration.yaml to be loaded by HA. Co-Authored-By: Claude Sonnet 4.6 (1M context) --- hosts/zeta/services/home-assistant.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/zeta/services/home-assistant.nix b/hosts/zeta/services/home-assistant.nix index 5a400e8d..ce06ccd5 100644 --- a/hosts/zeta/services/home-assistant.nix +++ b/hosts/zeta/services/home-assistant.nix @@ -21,6 +21,7 @@ "100.64.0.0/10" ]; }; + mobile_app = {}; }; }; networking.firewall.allowedTCPPorts = [8123];