diff --git a/hosts/pi4/default.nix b/hosts/pi4/default.nix index 8e28963..51099a2 100644 --- a/hosts/pi4/default.nix +++ b/hosts/pi4/default.nix @@ -9,6 +9,7 @@ ./forgejo.nix ./hardware.nix ./headscale.nix + ./home-assitant.nix ./mailserver.nix ./nextcloud.nix ./nginx.nix diff --git a/hosts/pi4/home-assitant.nix b/hosts/pi4/home-assitant.nix new file mode 100644 index 0000000..a6744fd --- /dev/null +++ b/hosts/pi4/home-assitant.nix @@ -0,0 +1,65 @@ +{ pkgs, common, ... }: +let + dbName = "hass"; + domain = "beta.home.${common.domain}"; + port = 8085; +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"; + }; + 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; + }; + }; + services.postgresql = { + enable = true; + ensureDatabases = [ dbName ]; + ensureUsers = [ + { + name = dbName; + ensureDBOwnership = true; + } + ]; + }; +}