56 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  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
 | 
						|
          ];
 | 
						|
        };
 | 
						|
      })
 | 
						|
    ]
 | 
						|
  );
 | 
						|
}
 |