diff --git a/nixos/boxes/home/palace/vms/sfh/containers/hass.nix b/nixos/boxes/home/palace/vms/sfh/containers/hass.nix index 15e56cd..105a06a 100644 --- a/nixos/boxes/home/palace/vms/sfh/containers/hass.nix +++ b/nixos/boxes/home/palace/vms/sfh/containers/hass.nix @@ -13,6 +13,7 @@ in assignments = { hi = { name = "hass-ctr"; + altNames = [ "frigate" ]; inherit domain; mtu = hiMTU; ipv4 = { @@ -68,7 +69,7 @@ in }; firewall = { - tcp.allowed = [ ]; + tcp.allowed = [ "http" 1883 ]; }; }; @@ -87,6 +88,61 @@ in }; services = { + mosquitto = { + enable = true; + listeners = [ + { + omitPasswordAuth = true; + settings = { + allow_anonymous = true; + }; + } + ]; + }; + + go2rtc = { + enable = true; + settings = { + streams = { + reolink_living_room = [ + # "http://reolink-living-room.${domain}/flv?port=1935&app=bcs&stream=channel0_main.bcs&user=admin#video=copy#audio=copy#audio=opus" + "rtsp://admin:@reolink-living-room:554/h264Preview_01_main" + ]; + }; + }; + }; + + frigate = { + enable = true; + hostname = "frigate.${domain}"; + settings = { + mqtt = { + enabled = true; + host = "localhost"; + topic_prefix = "frigate"; + }; + + cameras = { + reolink_living_room = { + ffmpeg.inputs = [ + { + path = "rtsp://127.0.0.1:8554/reolink_living_room"; + input_args = "preset-rtsp-restream"; + roles = [ "record" "detect" ]; + } + ]; + detect = { + enabled = false; + }; + record = { + enabled = true; + retain.days = 1; + }; + }; + }; + }; + }; + home-assistant = let cfg = config.services.home-assistant; @@ -120,6 +176,7 @@ in "webostv" "androidtv_remote" "heos" + "mqtt" ]; extraPackages = python3Packages: with python3Packages; [ zlib-ng @@ -130,6 +187,7 @@ in ]; customComponents = with pkgs.home-assistant-custom-components; [ alarmo + frigate ]; configWritable = false; diff --git a/nixos/boxes/home/routing-common/dns.nix b/nixos/boxes/home/routing-common/dns.nix index 67453f5..5b44ff1 100644 --- a/nixos/boxes/home/routing-common/dns.nix +++ b/nixos/boxes/home/routing-common/dns.nix @@ -225,6 +225,8 @@ in ups IN A ${net.cidr.host 20 prefixes.lo.v4} palace-kvm IN A ${net.cidr.host 21 prefixes.lo.v4} + reolink-living-room IN A ${net.cidr.host 45 prefixes.lo.v4} + ${lib.my.dns.fwdRecords { inherit allAssignments names; domain = config.networking.domain; diff --git a/nixos/boxes/home/routing-common/kea.nix b/nixos/boxes/home/routing-common/kea.nix index 39dd8e9..2f0115d 100644 --- a/nixos/boxes/home/routing-common/kea.nix +++ b/nixos/boxes/home/routing-common/kea.nix @@ -153,6 +153,11 @@ in hw-address = "80:30:49:cd:d7:51"; ip-address = net.cidr.host 44 prefixes.lo.v4; } + { + # reolink-living-room + hw-address = "ec:71:db:30:69:a4"; + ip-address = net.cidr.host 45 prefixes.lo.v4; + } ]; } ]; diff --git a/nixos/modules/tmproot.nix b/nixos/modules/tmproot.nix index 97924a2..6d29857 100644 --- a/nixos/modules/tmproot.nix +++ b/nixos/modules/tmproot.nix @@ -571,6 +571,22 @@ in } ]; }) + (mkIf config.services.frigate.enable { + my.tmproot.persistence.config.directories = [ + { + directory = "/var/lib/frigate"; + mode = "0755"; + user = "frigate"; + group = "frigate"; + } + { + directory = "/var/cache/frigate"; + mode = "0755"; + user = "frigate"; + group = "frigate"; + } + ]; + }) ])) ]);