Some checks failed
		
		
	
	Check flake / build-amd64-linux (push) Failing after 1m34s
				
			
		
			
				
	
	
		
			307 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			307 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   inputs,
 | |
|   config,
 | |
|   pkgs,
 | |
|   ...
 | |
| }:
 | |
| 
 | |
| {
 | |
|   imports = [
 | |
|     ./floorplan/default.nix
 | |
|     ./mqtt.nix
 | |
|   ];
 | |
| 
 | |
|   age.secrets."files/services/home-assistant/secrets.yaml" = {
 | |
|     file = "${inputs.secrets}/files/services/home-assistant/secrets.yaml.age";
 | |
|     path = "${config.services.home-assistant.configDir}/secrets.yaml";
 | |
|     owner = "hass";
 | |
|     group = "hass";
 | |
|   };
 | |
| 
 | |
|   services.home-assistant = {
 | |
|     enable = true;
 | |
| 
 | |
|     config = {
 | |
|       automation = "!include automations.yaml";
 | |
|       backup = { };
 | |
|       binary_sensor = [ ];
 | |
|       default_config = { };
 | |
|       http = {
 | |
|         server_host = "::1";
 | |
|         trusted_proxies = [ "::1" ];
 | |
|         use_x_forwarded_for = true;
 | |
|       };
 | |
|       ffmpeg = { };
 | |
|       homeassistant = {
 | |
|         name = "Home";
 | |
|         latitude = "!secret latitude";
 | |
|         longitude = "!secret longitude";
 | |
|         country = "GB";
 | |
|         temperature_unit = "C";
 | |
|         time_zone = config.time.timeZone;
 | |
|         unit_system = "metric";
 | |
|         auth_providers = [
 | |
|           {
 | |
|             type = "trusted_networks";
 | |
|             trusted_networks = [
 | |
|               "100.64.0.0/10"
 | |
|               "127.0.0.1"
 | |
|             ];
 | |
|             allow_bypass_login = true;
 | |
|           }
 | |
|           {
 | |
|             type = "homeassistant";
 | |
|           }
 | |
|         ];
 | |
|       };
 | |
|       logger = {
 | |
|         default = "info";
 | |
|         logs = { };
 | |
|       };
 | |
|       lovelace = {
 | |
|         mode = "yaml";
 | |
|       };
 | |
|       media_player = [ ];
 | |
|       mobile_app = { };
 | |
|       open_meteo = { };
 | |
|       recorder = {
 | |
|         purge_keep_days = 365;
 | |
|       };
 | |
|       scene = "!include scenes.yaml";
 | |
|       script = "!include scripts.yaml";
 | |
|       sensor = [ ];
 | |
|       system_health = { };
 | |
|       zeroconf = { };
 | |
|     };
 | |
| 
 | |
|     extraComponents = [
 | |
|       "air_quality"
 | |
|       "airly"
 | |
|       "alert"
 | |
|       "api"
 | |
|       "application_credentials"
 | |
|       "asuswrt"
 | |
|       "auth"
 | |
|       "automation"
 | |
|       "bayesian"
 | |
|       "binary_sensor"
 | |
|       # "blackbird"
 | |
|       "blueprint"
 | |
|       "bluetooth_adapters"
 | |
|       "bluetooth_le_tracker"
 | |
|       "button"
 | |
|       "calendar"
 | |
|       "camera"
 | |
|       "cast"
 | |
|       "cert_expiry"
 | |
|       "climate"
 | |
|       "co2signal"
 | |
|       "color_extractor"
 | |
|       "command_line"
 | |
|       "compensation"
 | |
|       "configurator"
 | |
|       "counter"
 | |
|       "cover"
 | |
|       "cpuspeed"
 | |
|       "default_config"
 | |
|       "demo"
 | |
|       "derivative"
 | |
|       "device_automation"
 | |
|       "device_sun_light_trigger"
 | |
|       "device_tracker"
 | |
|       "dlna_dmr"
 | |
|       "dlna_dms"
 | |
|       "dnsip"
 | |
|       "esphome"
 | |
|       "fail2ban"
 | |
|       "fan"
 | |
|       "feedreader"
 | |
|       "ffmpeg"
 | |
|       "file"
 | |
|       "file_upload"
 | |
|       "filesize"
 | |
|       "folder"
 | |
|       "folder_watcher"
 | |
|       "forecast_solar"
 | |
|       "frontend"
 | |
|       "gdacs"
 | |
|       "generic"
 | |
|       "generic_hygrostat"
 | |
|       "generic_thermostat"
 | |
|       "geo_json_events"
 | |
|       "geo_location"
 | |
|       "geo_rss_events"
 | |
|       "github"
 | |
|       "group"
 | |
|       "hardware"
 | |
|       "hdmi_cec"
 | |
|       "history_stats"
 | |
|       "homeassistant"
 | |
|       "homekit"
 | |
|       "homekit_controller"
 | |
|       "html5"
 | |
|       "http"
 | |
|       "humidifier"
 | |
|       "icloud"
 | |
|       "image_processing"
 | |
|       "input_boolean"
 | |
|       "input_button"
 | |
|       "input_datetime"
 | |
|       "input_number"
 | |
|       "input_select"
 | |
|       "input_text"
 | |
|       "integration"
 | |
|       "ios"
 | |
|       "jellyfin"
 | |
|       "light"
 | |
|       "local_calendar"
 | |
|       "local_file"
 | |
|       "local_ip"
 | |
|       "local_todo"
 | |
|       "lock"
 | |
|       "logentries"
 | |
|       "logger"
 | |
|       "lovelace"
 | |
|       "manual"
 | |
|       "manual_mqtt"
 | |
|       "matter"
 | |
|       "media_player"
 | |
|       "min_max"
 | |
|       "mjpeg"
 | |
|       "modern_forms"
 | |
|       "mold_indicator"
 | |
|       "moon"
 | |
|       "mysensors"
 | |
|       "network"
 | |
|       "nmap_tracker"
 | |
|       "notify"
 | |
|       "number"
 | |
|       "onboarding"
 | |
|       "onkyo"
 | |
|       "panel_custom"
 | |
|       "persistent_notification"
 | |
|       "person"
 | |
|       "ping"
 | |
|       "plant"
 | |
|       "prometheus"
 | |
|       "proximity"
 | |
|       "push"
 | |
|       "proximity"
 | |
|       "python_script"
 | |
|       "radio_browser"
 | |
|       "random"
 | |
|       "recorder"
 | |
|       "remote"
 | |
|       "repairs"
 | |
|       "rest"
 | |
|       "rest_command"
 | |
|       "rss_feed_template"
 | |
|       "scene"
 | |
|       "schedule"
 | |
|       "scrape"
 | |
|       "script"
 | |
|       "search"
 | |
|       "season"
 | |
|       "select"
 | |
|       "sense"
 | |
|       "sensor"
 | |
|       "sensorpush"
 | |
|       "shell_command"
 | |
|       "shopping_list"
 | |
|       "siren"
 | |
|       "smtp"
 | |
|       "snmp"
 | |
|       "sql"
 | |
|       "statistics"
 | |
|       "sun"
 | |
|       "switch"
 | |
|       "switch_as_x"
 | |
|       "system_health"
 | |
|       "system_log"
 | |
|       "systemmonitor"
 | |
|       "tag"
 | |
|       "tailscale"
 | |
|       "tcp"
 | |
|       "template"
 | |
|       "text"
 | |
|       "thread"
 | |
|       "threshold"
 | |
|       "time_date"
 | |
|       "timer"
 | |
|       "tod"
 | |
|       "todo"
 | |
|       "tomorrowio"
 | |
|       "trend"
 | |
|       "universal"
 | |
|       "upb"
 | |
|       "update"
 | |
|       "upnp"
 | |
|       "uptime"
 | |
|       "utility_meter"
 | |
|       "vacuum"
 | |
|       "vlc"
 | |
|       "vlc_telnet"
 | |
|       "wake_on_lan"
 | |
|       "water_heater"
 | |
|       "weather"
 | |
|       "webostv"
 | |
|       "websocket_api"
 | |
|       "wled"
 | |
|       "workday"
 | |
|       "worldclock"
 | |
|       "zone"
 | |
|     ];
 | |
| 
 | |
|     extraPackages =
 | |
|       python3Packages: with python3Packages; [
 | |
|         onkyo-eiscp
 | |
|         zeroconf
 | |
|       ];
 | |
| 
 | |
|     customComponents = with pkgs; [
 | |
|       home-assistant-browser-mod
 | |
|     ];
 | |
| 
 | |
|     customLovelaceModules = with pkgs.home-assistant-custom-lovelace-modules; [
 | |
|       bubble-card
 | |
|       button-card
 | |
|       card-mod
 | |
|       light-entity-card
 | |
|       mini-graph-card
 | |
|       mini-media-player
 | |
|       mushroom
 | |
|       sankey-chart
 | |
|       universal-remote-card
 | |
|     ];
 | |
| 
 | |
|     lovelaceConfigWritable = true;
 | |
|   };
 | |
| 
 | |
|   environment.persistence."/persist".directories = [
 | |
|     {
 | |
|       directory = config.services.home-assistant.configDir;
 | |
|       user = "hass";
 | |
|       group = "hass";
 | |
|       mode = "0700";
 | |
|     }
 | |
|   ];
 | |
| 
 | |
|   modules.services.borgmatic.directories = [
 | |
|     config.services.home-assistant.configDir
 | |
|   ];
 | |
| 
 | |
|   services.nginx = {
 | |
|     enable = true;
 | |
|     virtualHosts."home.mesh.vimium.net" = {
 | |
|       forceSSL = false;
 | |
|       extraConfig = ''
 | |
|         proxy_buffering off;
 | |
|       '';
 | |
|       locations."/" = {
 | |
|         proxyPass = "http://[::1]:8123";
 | |
|         proxyWebsockets = true;
 | |
|       };
 | |
|     };
 | |
|   };
 | |
| }
 |