{ config, pkgs, lib, ... }: let shackopen = import ./multi/shackopen.nix; wasser = import ./multi/wasser.nix; in { services.nginx.virtualHosts."hass.shack" = { serverAliases = [ "glados.shack" ]; locations."/" = { proxyPass = "http://localhost:8123"; extraConfig = '' proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_buffering off; ''; }; }; services.home-assistant = let dwd_pollen = pkgs.fetchFromGitHub { owner = "marcschumacher"; repo = "dwd_pollen"; rev = "0.1"; sha256 = "1af2mx99gv2hk1ad53g21fwkdfdbymqcdl3jvzd1yg7dgxlkhbj1"; }; in { enable = true; package = (pkgs.home-assistant.overrideAttrs (old: { # TODO: find correct python package installCheckPhase = '' echo LOLLLLLLLLLLLLLL ''; postInstall = '' cp -r ${dwd_pollen} $out/lib/python3.7/site-packages/homeassistant/components/dwd_pollen ''; })).override { extraPackages = ps: with ps; [ python-forecastio jsonrpc-async jsonrpc-websocket mpd2 (callPackage ./deps/gtts-token.nix { }) (callPackage ./deps/pyhaversion.nix { }) ]; }; autoExtraComponents = true; config = { homeassistant = { name = "Bureautomation"; time_zone = "Europe/Berlin"; latitude = "48.8265"; longitude = "9.0676"; elevation = 303; auth_providers = [ { type = "homeassistant";} { type = "legacy_api_password";} { type = "trusted_networks"; # allow_bypass_login = true; } ]; }; # https://www.home-assistant.io/components/influxdb/ influxdb = { database = "hass"; tags = { instance = "wolf"; source = "hass"; }; }; mqtt = { broker = "localhost"; port = 1883; client_id = "home-assistant"; keepalive = 60; protocol = 3.1; birth_message = { topic = "glados/hass/status/LWT"; payload = "Online"; qos = 1; retain = true; }; will_message = { topic = "glados/hass/status/LWT"; payload = "Offline"; qos = 1; retain = true; }; }; switch = wasser.switch; light = []; media_player = [ { platform = "mpd"; host = "lounge.mpd.shack"; } ]; sensor = [{ platform = "version"; }] ++ (import ./sensors/hass.nix) ++ (import ./sensors/power.nix) ++ shackopen.sensor; binary_sensor = shackopen.binary_sensor; camera = []; frontend = { }; http = { # TODO: https://github.com/home-assistant/home-assistant/issues/16149 base_url = "http://hass.shack"; use_x_forwarded_for = true; trusted_proxies = "127.0.0.1"; api_password = "shackit"; trusted_networks = [ "127.0.0.1/32" "10.42.0.0/16" "::1/128" "fd00::/8" ]; }; conversation = {}; history = {}; logbook = {}; tts = [ { platform = "google"; language = "de"; } { platform = "picotts"; language = "de-DE"; } ]; recorder = {}; sun = {}; automation = wasser.automation; device_tracker = []; }; }; }