{ pkgs, self, ... }: { imports = [ ./assist.nix ./bluetooth.nix ./firmware.nix ./frontend.nix ./netdaemon ./spotify ./timer self.nixosModules.ha-plus ]; services.home-assistant = { enable = true; extraComponents = [ "androidtv" "androidtv_remote" "caldav" "cast" "holiday" "isal" "met" "switchbot" "upnp" "yamaha_musiccast" ]; customComponents = builtins.attrValues { inherit (self.scopedPackages.${pkgs.system}.hass-components) yamaha-soundbar ; }; config = { homeassistant = { name = "Home"; unit_system = "metric"; currency = "CAD"; country = "CA"; time_zone = "America/Montreal"; external_url = "https://homie.nelim.org"; }; media_player = [ { platform = "yamaha_soundbar"; host = "192.168.0.96"; name = "Living Room Speaker"; sources = { HDMI = "TV"; }; } ]; # Proxy settings http = { server_host = "0.0.0.0"; trusted_proxies = ["100.64.0.8" "100.64.0.9"]; use_x_forwarded_for = true; }; # `default_config` enables too much stuff. this is what I want from it config = {}; dhcp = {}; history = {}; image_upload = {}; logbook = {}; mobile_app = {}; my = {}; sun = {}; zeroconf = {}; }; }; environment.systemPackages = [ (pkgs.writeShellApplication { name = "yaml2nix"; runtimeInputs = with pkgs; [yj]; text = '' input="$(yj < "$1")" output="''${2:-""}" nixCode="$(nix eval --expr "builtins.fromJSON '''$input'''" --impure | alejandra -q | sed 's/ = null;/ = {};/g')" if [[ "$output" != "" ]]; then echo "$nixCode" > "$output" else echo "$nixCode" fi ''; }) (pkgs.writeShellApplication { name = "nix2yaml"; runtimeInputs = with pkgs; [remarshal]; text = '' input="$1" output="''${2:-""}" yamlCode="$(nix eval --json --file "$input" | remarshal --if json --of yaml)" if [[ "$output" != "" ]]; then echo "$yamlCode" > "$output" else echo "$yamlCode" fi ''; }) ]; }