mirror of
https://git.sr.ht/~magic_rb/cluster
synced 2024-11-21 15:54:21 +01:00
Switch home-assistant to PostgreSQL
Signed-off-by: main <magic_rb@redalder.org>
This commit is contained in:
parent
ecdcf01e77
commit
b6dc065c5d
|
@ -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;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue