104 lines
No EOL
2.7 KiB
Nix
104 lines
No EOL
2.7 KiB
Nix
{ inputs, ... }:
|
|
{
|
|
flake.modules.nixos.hass =
|
|
{ lib, config, pkgs, ... }:
|
|
{
|
|
|
|
imports = with inputs.self.modules.nixos; [
|
|
podman
|
|
];
|
|
|
|
age.secrets.hass.file = ../../../secrets/hass.age;
|
|
|
|
virtualisation.oci-containers.containers =
|
|
{
|
|
"zwavejs2mqtt" = {
|
|
image = "zwavejs/zwavejs2mqtt:latest";
|
|
volumes = [
|
|
"/DockerData/configs/zwave-js:/usr/src/app/store"
|
|
];
|
|
environment = {
|
|
"ZWAVEJS_EXTERNAL_CONFIG"="/usr/src/app/store/.config-db";
|
|
"TZ"="America/New_York";
|
|
};
|
|
devices = [
|
|
"/dev/serial/by-id/usb-Zooz_800_Z-Wave_Stick_533D004242-if00:/dev/zwave"
|
|
];
|
|
environmentFiles = [
|
|
"${config.age.secrets.hass.path}"
|
|
];
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--pod=hass"
|
|
];
|
|
};
|
|
|
|
"hass" = {
|
|
image = "ghcr.io/home-assistant/home-assistant:stable";
|
|
privileged = true;
|
|
volumes = [
|
|
"/DockerData/configs/home-assistant:/config"
|
|
"/etc/localtime:/etc/localtime:ro"
|
|
"/run/dbus:/run/dbus:ro"
|
|
];
|
|
environment = {
|
|
"TZ"="America/New_York";
|
|
};
|
|
dependsOn = [
|
|
"zwavejs2mqtt"
|
|
];
|
|
log-driver = "journald";
|
|
extraOptions = [
|
|
"--pod=hass"
|
|
];
|
|
};
|
|
};
|
|
|
|
|
|
systemd = {
|
|
services = {
|
|
"podman-zwavejs2mqtt" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-hass-root.target" ];
|
|
wantedBy = [ "podman-compose-hass-root.target" ];
|
|
after = [ "podman-pod-hass.service" ];
|
|
wants = [ "podman-pod-hass.service" ];
|
|
};
|
|
|
|
"podman-hass" = {
|
|
serviceConfig = {
|
|
Restart = lib.mkOverride 90 "always";
|
|
};
|
|
partOf = [ "podman-compose-hass-root.target" ];
|
|
wantedBy = [ "podman-compose-hass-root.target" ];
|
|
after = [ "podman-pod-hass.service" ];
|
|
wants = [ "podman-pod-hass.service" ];
|
|
};
|
|
|
|
"podman-pod-hass" = {
|
|
path = [ pkgs.podman ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
RemainAfterExit = true;
|
|
ExecStop = "podman pod rm -f hass";
|
|
};
|
|
#Hass pod with port 8123=hass, 8091=zwave
|
|
script = ''
|
|
podman pod inspect hass || podman pod create --name hass -p 8123:8123 -p 8091:8091
|
|
'';
|
|
partOf = [ "podman-compose-hass-root.target" ];
|
|
wantedBy = [ "podman-compose-hass-root.target" ];
|
|
};
|
|
};
|
|
|
|
targets = {
|
|
"podman-compose-hass-root" = {
|
|
wantedBy = [ "multi-user.target" ];
|
|
};
|
|
};
|
|
};
|
|
|
|
};
|
|
} |