{ config, lib, pkgs, ... }: with lib; let hostname = config.instance.hostname; hostSecrets = config.fudo.secrets.host-secrets."${hostname}"; frigateExternalHost = "sea-cam.fudo.link"; frigateHost = "zbox"; frigateDirectory = frigateCfg.state-directory; frigateMqttPassword = pkgs.lib.passwd.stablerandom-passwd-file "frigate-mqtt-passwd" config.instance.build-seed; in { config = { fudo.zones."sea.fudo.org".aliases."frigate" = "zbox"; fudo = { services.mqtt.private.users.frigate = { password-file = frigateMqttPassword; acl = [ "frigate/#" ]; }; }; services = { frigateContainer = { enable = config.instance.hostname == frigateHost; log-level = "info"; images.frigate = "ghcr.io/blakeblackshear/frigate:0.13.0-beta5"; cameras = genAttrs [ "cam-steps" "cam-patio" "cam-entrance" "cam-driveway" ] (cam: { default = cam == "cam-driveway"; streams = { low = "rtsp://frigate:{FRIGATE_RTSP_PASSWORD}@${cam}.sea.fudo.org:554/cam/realmonitor?channel=1&subtype=0"; high = "rtsp://frigate:{FRIGATE_RTSP_PASSWORD}@${cam}.sea.fudo.org:554/cam/realmonitor?channel=1&subtype=0"; }; }); camera-password-file = config.fudo.secrets.files.domain-secrets."sea.fudo.org".seattle-camera-password; mqtt = { host = config.fudo.services.mqtt.mqtt-hostname; port = config.fudo.services.mqtt.private.port; user = "frigate"; password-file = frigateMqttPassword; }; }; }; }; }