{ config, lib, myData, ... }: let cfg = config.mj.services.hass; in { options.mj.services.hass = with lib.types; { enable = lib.mkEnableOption "Enable home-assistant"; }; config = lib.mkIf cfg.enable { mj.services.friendlyport.ports = [ { subnets = [myData.subnets.tailscale.cidr]; tcp = [myData.ports.hass]; } ]; environment.systemPackages = []; services = { home-assistant = { enable = true; extraComponents = [ "met" "radio_browser" # my stuff "yamaha_musiccast" "dlna_dmr" "shelly" "webostv" "daikin" "ipp" ]; config = { default_config = {}; http = { use_x_forwarded_for = true; trusted_proxies = ["127.0.0.1"]; }; homeassistant = { auth_providers = [ { type = "trusted_networks"; trusted_networks = myData.subnets.motiejus.cidrs; } ]; }; wake_on_lan = {}; # requires a restore from backup "automation ui" = "!include automations.yaml"; "automation yaml" = [ { alias = "Turn On Living Room TV with WakeOnLan"; trigger = [ { platform = "webostv.turn_on"; entity_id = "media_player.lg_webos_smart_tv"; } ]; action = [ { service = "wake_on_lan.send_magic_packet"; data = {mac = "74:e6:b8:4c:fb:b7";}; } ]; } ]; }; }; }; }; }