{ lib, config, ... }: let dbUser = "hass"; in { config = lib.mkIf config.services.home-assistant.enable ( lib.mkMerge [ { host = { postgres = { enable = true; }; }; assertions = [ { assertion = config.services.home-assistant.database == "postgres"; message = "Home Assistant database type must be postgres"; } ]; } (lib.mkIf config.host.postgres.enable { host = { postgres = { extraUsers = { ${dbUser} = { isClient = true; createUser = true; }; }; extraDatabases = { ${dbUser} = { name = dbUser; }; }; }; }; services.home-assistant = { extraPackages = python3Packages: with python3Packages; [ psycopg2 ]; }; systemd.services.home-assistant = { requires = [ config.systemd.services.postgresql.name ]; }; }) ] ); }