frigate: Move machine-specific module to machine config
This commit is contained in:
parent
09efae9138
commit
5cf877e9ba
4 changed files with 163 additions and 165 deletions
|
@ -7,6 +7,8 @@
|
|||
|
||||
../../users/root
|
||||
../../users/erwin
|
||||
|
||||
./frigate
|
||||
];
|
||||
|
||||
eboskma = {
|
||||
|
@ -14,9 +16,6 @@
|
|||
enable = true;
|
||||
server = true;
|
||||
};
|
||||
services = {
|
||||
frigate.enable = true;
|
||||
};
|
||||
nix-common = {
|
||||
enable = true;
|
||||
remote-builders = true;
|
||||
|
@ -43,6 +42,8 @@
|
|||
systemd.network = {
|
||||
enable = true;
|
||||
|
||||
wait-online.anyInterface = true;
|
||||
|
||||
networks = {
|
||||
"40-eth0" = {
|
||||
matchConfig = {
|
||||
|
|
|
@ -36,7 +36,7 @@ objects:
|
|||
track:
|
||||
- person
|
||||
- cat
|
||||
# - car
|
||||
- car
|
||||
|
||||
birdseye:
|
||||
enabled: True
|
||||
|
@ -79,14 +79,17 @@ cameras:
|
|||
record:
|
||||
events:
|
||||
required_zones:
|
||||
- oprit
|
||||
- erf
|
||||
snapshots:
|
||||
required_zones:
|
||||
- oprit
|
||||
- erf
|
||||
zones:
|
||||
oprit:
|
||||
coordinates: 0,480,640,480,640,480,640,259,513,255,323,254,211,254,144,353,79,325,33,286,0,289
|
||||
erf:
|
||||
coordinates: 0,480,640,480,640,480,640,259,513,255,323,254,211,254,144,353,79,325,0,325
|
||||
objects:
|
||||
- person
|
||||
# - car
|
||||
- cat
|
||||
oprit:
|
||||
coordinates: 28,279,0,282,0,325,91,324
|
||||
objects:
|
||||
- car
|
150
machines/frigate/frigate/default.nix
Normal file
150
machines/frigate/frigate/default.nix
Normal file
|
@ -0,0 +1,150 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
with lib;
|
||||
{
|
||||
virtualisation.oci-containers.containers = {
|
||||
frigate = {
|
||||
autoStart = true;
|
||||
image = "ghcr.io/blakeblackshear/frigate:0.12.1";
|
||||
ports = [
|
||||
"1984:1984" # go2rtc
|
||||
"5000:5000" # Frigate
|
||||
"8554:8554" # RTSP feeds
|
||||
"8555:8555/tcp" # WebRTC over tcp
|
||||
"8555:8555/udp" # WebRTC over udp
|
||||
];
|
||||
volumes = [
|
||||
"/etc/localtime:/etc/localtime:ro"
|
||||
"${./config.yml}:/config/config.yml:ro"
|
||||
"${pkgs.go2rtc}/bin/go2rtc:/config/go2rtc"
|
||||
"/data/frigate:/media/frigate"
|
||||
];
|
||||
extraOptions = [
|
||||
"--device"
|
||||
"/dev/dri/renderD128"
|
||||
"--device"
|
||||
"/dev/apex_0"
|
||||
"--shm-size=128m"
|
||||
"--mount"
|
||||
"type=tmpfs,target=/tmp/cache,tmpfs-size=1G"
|
||||
"--cap-add"
|
||||
"CAP_PERFMON"
|
||||
];
|
||||
environment = {
|
||||
LIBVA_DRIVER_NAME = "iHD";
|
||||
};
|
||||
environmentFiles = [
|
||||
config.sops.secrets.frigate.path
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
# services.frigate = {
|
||||
# enable = true;
|
||||
|
||||
# hostname = "frigate.datarift.nl";
|
||||
|
||||
# settings = {
|
||||
# mqtt = {
|
||||
# enabled = true;
|
||||
# host = "mqtt.datarift.nl";
|
||||
# port = 1883;
|
||||
# user = "frigate";
|
||||
# password = "{FRIGATE_MQTT_PASSWORD}";
|
||||
# };
|
||||
|
||||
# detectors = {
|
||||
# coral = {
|
||||
# type = "edgetpu";
|
||||
# device = "pci";
|
||||
# };
|
||||
# };
|
||||
|
||||
# birdseye = {
|
||||
# enabled = false;
|
||||
# };
|
||||
|
||||
# ffmpeg = {
|
||||
# hwaccel_args = "preset-vaapi";
|
||||
# output_args = {
|
||||
# record = "preset-record-generic-audio-aac";
|
||||
# };
|
||||
# };
|
||||
|
||||
# detect = {
|
||||
# width = 640;
|
||||
# height = 480;
|
||||
# };
|
||||
|
||||
# objects = {
|
||||
# track = [ "person" "cat" ];
|
||||
# };
|
||||
|
||||
# record = {
|
||||
# enabled = true;
|
||||
# retain = {
|
||||
# days = 4;
|
||||
# };
|
||||
# events = {
|
||||
# retain = {
|
||||
# default = 14;
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
|
||||
# snapshots = { };
|
||||
|
||||
# go2rtc = {
|
||||
# streams = {
|
||||
# deurbel = [
|
||||
# "rtsp://hass:{FRIGATE_DOORBELL_PASSWORD}@10.0.0.31/h264Preview_01_main"
|
||||
# "ffmpeg:deurbel#audio=opus"
|
||||
# ];
|
||||
# deurbel_sub = [
|
||||
# "rtsp://hass:{FRIGATE_DOORBELL_PASSWORD}@10.0.0.31/h264Preview_01_sub"
|
||||
# ];
|
||||
# };
|
||||
# webrtc = {
|
||||
# candidates = [
|
||||
# "10.0.0.205:8555"
|
||||
# "stun:8555"
|
||||
# ];
|
||||
# };
|
||||
# };
|
||||
|
||||
# cameras = {
|
||||
# deurbel = {
|
||||
# ffmpeg = {
|
||||
# inputs = [
|
||||
# {
|
||||
# path = "rtsp://127.0.0.1:8554/deurbel?video=copy&audio=aac";
|
||||
# input_args = "preset-rtsp-restream";
|
||||
# roles = [ "record" ];
|
||||
# }
|
||||
# {
|
||||
# path = "rtsp://127.0.0.1:8554/deurbel_sub?video=copy";
|
||||
# input_args = "preset-rtsp-restream";
|
||||
# roles = [ "detect" ];
|
||||
# }
|
||||
# ];
|
||||
# };
|
||||
# record = {
|
||||
# events = {
|
||||
# required_zones = [ "oprit" ];
|
||||
# };
|
||||
# };
|
||||
# snapshots = {
|
||||
# required_zones = [ "oprit" ];
|
||||
# };
|
||||
# zones = {
|
||||
# oprit = {
|
||||
# coordinates = "0,480,640,480,640,480,640,259,513,255,323,254,211,254,144,353,79,325,33,286,0,289";
|
||||
# objects = [ "person" "cat" ];
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
|
||||
# systemd.services.frigate.serviceConfig.EnvironmentFile = config.sops.secrets.frigate.path;
|
||||
}
|
|
@ -1,156 +0,0 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.eboskma.services.frigate;
|
||||
in
|
||||
{
|
||||
options.eboskma.services.frigate = { enable = mkEnableOption "frigate"; };
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
virtualisation.oci-containers.containers = {
|
||||
frigate = {
|
||||
autoStart = true;
|
||||
image = "ghcr.io/blakeblackshear/frigate:0.12.1";
|
||||
ports = [
|
||||
"1984:1984" # go2rtc
|
||||
"5000:5000" # Frigate
|
||||
"8554:8554" # RTSP feeds
|
||||
"8555:8555/tcp" # WebRTC over tcp
|
||||
"8555:8555/udp" # WebRTC over udp
|
||||
];
|
||||
volumes = [
|
||||
"/etc/localtime:/etc/localtime:ro"
|
||||
"${./config.yml}:/config/config.yml:ro"
|
||||
"${pkgs.go2rtc}/bin/go2rtc:/config/go2rtc"
|
||||
"/data/frigate:/media/frigate"
|
||||
];
|
||||
extraOptions = [
|
||||
"--device"
|
||||
"/dev/dri/renderD128"
|
||||
"--device"
|
||||
"/dev/apex_0"
|
||||
"--shm-size=128m"
|
||||
"--mount"
|
||||
"type=tmpfs,target=/tmp/cache,tmpfs-size=1G"
|
||||
"--cap-add"
|
||||
"CAP_PERFMON"
|
||||
];
|
||||
environment = {
|
||||
LIBVA_DRIVER_NAME = "iHD";
|
||||
};
|
||||
environmentFiles = [
|
||||
config.sops.secrets.frigate.path
|
||||
];
|
||||
};
|
||||
};
|
||||
# services.frigate = {
|
||||
# enable = true;
|
||||
|
||||
# hostname = "frigate.datarift.nl";
|
||||
|
||||
# settings = {
|
||||
# mqtt = {
|
||||
# enabled = true;
|
||||
# host = "mqtt.datarift.nl";
|
||||
# port = 1883;
|
||||
# user = "frigate";
|
||||
# password = "{FRIGATE_MQTT_PASSWORD}";
|
||||
# };
|
||||
|
||||
# detectors = {
|
||||
# coral = {
|
||||
# type = "edgetpu";
|
||||
# device = "pci";
|
||||
# };
|
||||
# };
|
||||
|
||||
# birdseye = {
|
||||
# enabled = false;
|
||||
# };
|
||||
|
||||
# ffmpeg = {
|
||||
# hwaccel_args = "preset-vaapi";
|
||||
# output_args = {
|
||||
# record = "preset-record-generic-audio-aac";
|
||||
# };
|
||||
# };
|
||||
|
||||
# detect = {
|
||||
# width = 640;
|
||||
# height = 480;
|
||||
# };
|
||||
|
||||
# objects = {
|
||||
# track = [ "person" "cat" ];
|
||||
# };
|
||||
|
||||
# record = {
|
||||
# enabled = true;
|
||||
# retain = {
|
||||
# days = 4;
|
||||
# };
|
||||
# events = {
|
||||
# retain = {
|
||||
# default = 14;
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
|
||||
# snapshots = { };
|
||||
|
||||
# go2rtc = {
|
||||
# streams = {
|
||||
# deurbel = [
|
||||
# "rtsp://hass:{FRIGATE_DOORBELL_PASSWORD}@10.0.0.31/h264Preview_01_main"
|
||||
# "ffmpeg:deurbel#audio=opus"
|
||||
# ];
|
||||
# deurbel_sub = [
|
||||
# "rtsp://hass:{FRIGATE_DOORBELL_PASSWORD}@10.0.0.31/h264Preview_01_sub"
|
||||
# ];
|
||||
# };
|
||||
# webrtc = {
|
||||
# candidates = [
|
||||
# "10.0.0.205:8555"
|
||||
# "stun:8555"
|
||||
# ];
|
||||
# };
|
||||
# };
|
||||
|
||||
# cameras = {
|
||||
# deurbel = {
|
||||
# ffmpeg = {
|
||||
# inputs = [
|
||||
# {
|
||||
# path = "rtsp://127.0.0.1:8554/deurbel?video=copy&audio=aac";
|
||||
# input_args = "preset-rtsp-restream";
|
||||
# roles = [ "record" ];
|
||||
# }
|
||||
# {
|
||||
# path = "rtsp://127.0.0.1:8554/deurbel_sub?video=copy";
|
||||
# input_args = "preset-rtsp-restream";
|
||||
# roles = [ "detect" ];
|
||||
# }
|
||||
# ];
|
||||
# };
|
||||
# record = {
|
||||
# events = {
|
||||
# required_zones = [ "oprit" ];
|
||||
# };
|
||||
# };
|
||||
# snapshots = {
|
||||
# required_zones = [ "oprit" ];
|
||||
# };
|
||||
# zones = {
|
||||
# oprit = {
|
||||
# coordinates = "0,480,640,480,640,480,640,259,513,255,323,254,211,254,144,353,79,325,33,286,0,289";
|
||||
# objects = [ "person" "cat" ];
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
# };
|
||||
|
||||
# systemd.services.frigate.serviceConfig.EnvironmentFile = config.sops.secrets.frigate.path;
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue