one flake containing all of my nixos configs
{pkgs, ...}: {
  # allow openssl 1.1 because home-assistant requires it :(
  # https://github.com/NixOS/nixpkgs/issues/269713
  nixpkgs.config.permittedInsecurePackages = ["openssl-1.1.1w"];
  services.home-assistant = let
    package =
      (pkgs.home-assistant.override {
        extraPackages = pythonPackages:
          with pythonPackages; [
            aiounifi # ubiquity router
            aiowebostv # lg webOS tv
            psycopg2 # postgres
            pyatv # apple tv
            pyicloud # apple icloud
            python-miio # roborock
            securetar # backup
          ];
      })
      .overrideAttrs (oldAttrs: {
        doInstallCheck = false;
      });
  in {
    inherit package;
    enable = true;
    extraComponents = [
      "met"
      "radio_browser"
    ];
    config = {
      # Includes dependencies for a basic setup
      # https://www.home-assistant.io/integrations/default_config/
      default_config = {};
      recorder.db_url = "postgresql://@/hass";
    };
  };

  services.postgresql = {
    enable = true;
    package = pkgs.postgresql_14;
    ensureDatabases = ["hass"];
    ensureUsers = [
      {
        name = "hass";
        ensureDBOwnership = true;
      }
    ];
  };
}