From cb6e38604d2f238e594e730efb5277f95c6aa20c Mon Sep 17 00:00:00 2001 From: Martin Berg Alstad Date: Tue, 12 Aug 2025 16:38:00 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9E=95=20[pi4]=20ADd=20roomba=20dependency?= =?UTF-8?q?=20to=20home=20assistant=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hosts/pi4/home-assitant.nix | 110 +++++++++++++++++++----------------- 1 file changed, 59 insertions(+), 51 deletions(-) diff --git a/hosts/pi4/home-assitant.nix b/hosts/pi4/home-assitant.nix index a6744fd..9908515 100644 --- a/hosts/pi4/home-assitant.nix +++ b/hosts/pi4/home-assitant.nix @@ -6,60 +6,68 @@ let in { - services.home-assistant = { - enable = true; - package = - (pkgs.home-assistant.override { - extraPackages = py: with py; [ psycopg2 ]; - }).overrideAttrs - (oldAttrs: { - # Avoid long install checks - doInstallCheck = false; - }); - extraComponents = [ - # Components required to complete the onboarding - "esphome" - "met" - "radio_browser" - ]; - config = { - # Includes dependencies for a basic setup - # https://www.home-assistant.io/integrations/default_config/ - default_config = { }; - homeassistant = { - name = "Hjem"; - unit_system = "metric"; - temperature_unit = "C"; + services = { + home-assistant = { + enable = true; + package = + (pkgs.home-assistant.override { + extraPackages = + py: with py; [ + # Postgres + psycopg2 + # Roomba + roombapy + ]; + }).overrideAttrs + (oldAttrs: { + # Avoid long install checks + doInstallCheck = false; + }); + extraComponents = [ + # Components required to complete the onboarding + "esphome" + "met" + "radio_browser" + ]; + config = { + # Includes dependencies for a basic setup + # https://www.home-assistant.io/integrations/default_config/ + default_config = { }; + homeassistant = { + name = "Hjem"; + unit_system = "metric"; + temperature_unit = "C"; + }; + http = { + server_host = "::1"; + trusted_proxies = [ "::1" ]; + use_x_forwarded_for = true; + server_port = port; + }; + recorder.db_url = "postgresql://@/${dbName}"; }; - http = { - server_host = "::1"; - trusted_proxies = [ "::1" ]; - use_x_forwarded_for = true; - server_port = port; - }; - recorder.db_url = "postgresql://@/${dbName}"; }; - }; - services.nginx.virtualHosts.${domain} = { - forceSSL = true; - enableACME = true; - extraConfig = '' - proxy_buffering off; - ''; - locations."/" = { - proxyPass = "http://[::1]:${toString port}"; - proxyWebsockets = true; + nginx.virtualHosts.${domain} = { + forceSSL = true; + enableACME = true; + extraConfig = '' + proxy_buffering off; + ''; + locations."/" = { + proxyPass = "http://[::1]:${toString port}"; + proxyWebsockets = true; + }; + }; + postgresql = { + enable = true; + ensureDatabases = [ dbName ]; + ensureUsers = [ + { + name = dbName; + ensureDBOwnership = true; + } + ]; }; - }; - services.postgresql = { - enable = true; - ensureDatabases = [ dbName ]; - ensureUsers = [ - { - name = dbName; - ensureDBOwnership = true; - } - ]; }; }