Switch home-assistant to PostgreSQL

Signed-off-by: main <magic_rb@redalder.org>
This commit is contained in:
main 2022-10-25 18:34:25 +02:00
parent ecdcf01e77
commit b6dc065c5d

View file

@ -1,98 +1,136 @@
{ nglib, nixpkgs }: { nglib, nixpkgs }:
nglib.makeSystem { {
system = "x86_64-linux"; postgresql = nglib.makeSystem {
name = "nixng-home-assistant"; system = "x86_64-linux";
inherit nixpkgs; name = "nixng-hass-postgresql";
config = ({ pkgs, config, nglib, ... }: inherit nixpkgs;
let config = { pkgs, config, ... }:
ids = config.ids;
in
{ {
config = { config = {
dumb-init = { dumb-init = {
enable = true; enable = true;
type.services = { }; type.services = {};
}; };
services.postgresql = {
init.services.home-assistant = {
shutdownOnExit = true;
environment = {
PATH = with pkgs; pkgs.lib.makeBinPath [
coreutils git ffmpeg bash runit
];
};
};
services.home-assistant = {
enable = true; enable = true;
envsubst = true; package = pkgs.postgresql_12;
customComponents = {
xiaomi_gateway3 = pkgs.fetchFromGitHub { initialScript = "/secrets/init.sql";
owner = "AlexxIT"; enableTCPIP = true;
repo = "XiaomiGateway3";
rev = "v1.6.5"; authentication = "host all all all md5";
sha256 = "sha256-RSIJqsbgnktl7zNaxAKUoMjbkrJ1aJTej0vjlCgstJ8=";
} + "/custom_components/xiaomi_gateway3"; ensureDatabases = [ "hass" ];
ensureExtensions = {
"pg_trgm" = [ "hass" ];
}; };
config = ensureUsers = [
{ default_config = {}; { name = "hass"; ensurePermissions = {
stream = {}; "DATABASE \"hass\"" = "ALL PRIVILEGES";
http = {
server_port = "8123";
use_x_forwarded_for = true;
trusted_proxies = [ "127.0.0.1" ];
}; };
logger.default = "info"; }
homeassistant = ];
{ name = "Home";
latitude = "\${LATITUDE}";
longitude = "\${LONGTITUDE}";
elevation = "\${ELEVATION}";
# currency = "EUR";
unit_system = "metric";
time_zone = "\${TIME_ZONE}";
internal_url = "http://localhost:8123/";
};
automation = "!include automations.yaml";
"automation static" = [
(import ./home-assistant/automations/alarm/pending.nix)
(import ./home-assistant/automations/alarm/disarmed.nix)
(import ./home-assistant/automations/alarm/triggered.nix)
(import ./home-assistant/automations/alarm/motion-detected.nix)
(import ./home-assistant/automations/alarm/motion-detected-away.nix)
];
alarm_control_panel = import ./home-assistant/alarm_control_panel.nix;
frontend.themes =
{ };
};
package =
(pkgs.home-assistant.override
{ extraComponents =
[ "http"
"homeassistant"
"image"
"person"
"cloud"
"onboarding"
"frontend"
"safe_mode"
"met"
"zha"
"mobile_app"
"dhcp"
"logbook"
"history"
"ssdp"
"mqtt"
"stream"
];
extraPackages = ps: with ps;
[ xmodem
];
}).overridePythonAttrs (old:
{ doCheck = false;
});
}; };
}; };
}); };
};
hass =
nglib.makeSystem {
system = "x86_64-linux";
name = "nixng-home-assistant";
inherit nixpkgs;
config = ({ pkgs, config, nglib, ... }:
let
ids = config.ids;
in
{
config = {
dumb-init = {
enable = true;
type.services = { };
};
init.services.home-assistant = {
shutdownOnExit = true;
environment = {
PATH = with pkgs; pkgs.lib.makeBinPath [
coreutils git ffmpeg bash runit
];
};
};
services.home-assistant = {
enable = true;
envsubst = true;
customComponents = {};
config =
{ default_config = {};
recorder = {
db_url = "postgresql://hass:\${PSQL_PASSWORD}@127.0.0.1/hass";
db_max_retries = 5;
db_retry_wait = 30;
};
stream = {};
http = {
server_port = "8123";
use_x_forwarded_for = true;
trusted_proxies = [ "127.0.0.1" ];
};
logger.default = "info";
homeassistant =
{ name = "Home";
latitude = "\${LATITUDE}";
longitude = "\${LONGTITUDE}";
elevation = "\${ELEVATION}";
# currency = "EUR";
unit_system = "metric";
time_zone = "\${TIME_ZONE}";
internal_url = "http://localhost:8123/";
};
automation = "!include automations.yaml";
"automation static" = [
(import ./home-assistant/automations/alarm/pending.nix)
(import ./home-assistant/automations/alarm/disarmed.nix)
(import ./home-assistant/automations/alarm/triggered.nix)
(import ./home-assistant/automations/alarm/motion-detected.nix)
(import ./home-assistant/automations/alarm/motion-detected-away.nix)
];
alarm_control_panel = import ./home-assistant/alarm_control_panel.nix;
frontend.themes =
{ };
};
package =
(pkgs.home-assistant.override
{ extraComponents =
[ "http"
"homeassistant"
"image"
"person"
"cloud"
"onboarding"
"frontend"
"safe_mode"
"met"
"zha"
"mobile_app"
"dhcp"
"logbook"
"history"
"ssdp"
"mqtt"
"stream"
"recorder"
];
extraPackages = ps: with ps;
[ xmodem
psycopg2
];
}).overridePythonAttrs (old:
{ doCheck = false;
});
};
};
});
};
} }