165 lines
4.8 KiB
Nix
165 lines
4.8 KiB
Nix
{ config, ... }: {
|
|
age.secrets."camera-ulfried-url".file = ../../secrets/camera-ulfried-url.age;
|
|
age.secrets."camera-ulfried-sub-url".file = ../../secrets/camera-ulfried-sub-url.age;
|
|
age.secrets."camera-gnisbert-url".file = ../../secrets/camera-gnisbert-url.age;
|
|
age.secrets."camera-gnisbert-sub-url".file = ../../secrets/camera-gnisbert-sub-url.age;
|
|
age.secrets."camera-taubis-url".file = ../../secrets/camera-taubis-url.age;
|
|
age.secrets."camera-taubis-sub-url".file = ../../secrets/camera-taubis-sub-url.age;
|
|
age.secrets."camera-foeff-url".file = ../../secrets/camera-foeff-url.age;
|
|
age.secrets."camera-foeff-sub-url".file = ../../secrets/camera-foeff-sub-url.age;
|
|
|
|
systemd.services.go2rtc.serviceConfig.LoadCredential = [
|
|
"ULFRIED_URL:${config.age.secrets."camera-ulfried-url".path}"
|
|
"ULFRIED_SUB_URL:${config.age.secrets."camera-ulfried-sub-url".path}"
|
|
"GNISBERT_URL:${config.age.secrets."camera-gnisbert-url".path}"
|
|
"GNISBERT_SUB_URL:${config.age.secrets."camera-gnisbert-sub-url".path}"
|
|
"TAUBIS_URL:${config.age.secrets."camera-taubis-url".path}"
|
|
"TAUBIS_SUB_URL:${config.age.secrets."camera-taubis-sub-url".path}"
|
|
"FOEFF_URL:${config.age.secrets."camera-foeff-url".path}"
|
|
"FOEFF_SUB_URL:${config.age.secrets."camera-foeff-sub-url".path}"
|
|
];
|
|
|
|
services.go2rtc.enable = true;
|
|
services.go2rtc.settings = {
|
|
rtsp.listen = ":8554";
|
|
webrtc.listen = ":8555";
|
|
};
|
|
services.go2rtc.settings.streams = {
|
|
"ulfried" = [
|
|
"\${ULFRIED_URL}"
|
|
"ffmpeg:ulfried#audio=opus#audio=aac"
|
|
];
|
|
"ulfried_sub" = [
|
|
"\${ULFRIED_SUB_URL}"
|
|
"ffmpeg:ulfried_sub#audio=opus#audio=aac"
|
|
];
|
|
"gnisbert" = [
|
|
"\${GNISBERT_URL}"
|
|
"ffmpeg:gnisbert#audio=opus#audio=aac"
|
|
];
|
|
"gnisbert_sub" = [
|
|
"\${GNISBERT_SUB_URL}"
|
|
"ffmpeg:gnisbert_sub#audio=opus#audio=aac"
|
|
];
|
|
"taubis" = [
|
|
"\${TAUBIS_URL}"
|
|
"ffmpeg:taubis#audio=opus#audio=aac"
|
|
];
|
|
"taubis_sub" = [
|
|
"\${TAUBIS_SUB_URL}"
|
|
"ffmpeg:taubis_sub#audio=opus#audio=aac"
|
|
];
|
|
"foeff" = [
|
|
"\${FOEFF_URL}"
|
|
"ffmpeg:foeff#audio=opus#audio=aac#video=copy"
|
|
];
|
|
"foeff_sub" = [
|
|
"\${FOEFF_SUB_URL}"
|
|
"ffmpeg:foeff_sub#audio=opus#audio=aac#video=copy"
|
|
];
|
|
};
|
|
|
|
services.frigate.enable = true;
|
|
services.frigate.hostname = "kameramann.lan.baubs.net";
|
|
services.frigate.settings.go2rtc = { streams = {
|
|
"ulfried" = [];
|
|
"ulfried_sub" = [];
|
|
"taubis" = [];
|
|
"taubis_sub" = [];
|
|
"foeff" = [];
|
|
"foeff_sub" = [];
|
|
"gnisbert" = [];
|
|
"gnisbert_sub" = [];
|
|
};};
|
|
services.frigate.settings.detect = {
|
|
enabled = true;
|
|
};
|
|
services.frigate.settings.objects = {
|
|
track = ["person" "bird" "car"];
|
|
};
|
|
services.frigate.settings.classification.bird.enabled = true;
|
|
|
|
|
|
services.frigate.settings.cameras = {
|
|
"ulfried" = {
|
|
record = {
|
|
enabled = true;
|
|
continuous.days = 0;
|
|
alerts.retain = {
|
|
days = 30;
|
|
mode = "motion";
|
|
};
|
|
};
|
|
ffmpeg.inputs = [{
|
|
path = "rtsp://127.0.0.1:8554/ulfried?timeout=30";
|
|
input_args = "preset-rtsp-generic";
|
|
roles = [
|
|
"record"
|
|
];
|
|
}
|
|
{
|
|
path = "rtsp://127.0.0.1:8554/ulfried_sub?timeout=30";
|
|
input_args = "preset-rtsp-generic";
|
|
roles = [
|
|
"detect"
|
|
"audio"
|
|
];
|
|
}];
|
|
};
|
|
"foeff" = {
|
|
record = {
|
|
enabled = true;
|
|
continuous.days = 0;
|
|
alerts.retain = {
|
|
days = 30;
|
|
mode = "motion";
|
|
};
|
|
};
|
|
ffmpeg.inputs = [
|
|
{
|
|
path = "rtsp://127.0.0.1:8554/foeff?timeout=30";
|
|
input_args = "preset-rtsp-generic";
|
|
roles = [
|
|
"record"
|
|
];
|
|
}
|
|
{
|
|
path = "rtsp://127.0.0.1:8554/foeff_sub?timeout=30";
|
|
input_args = "preset-rtsp-generic";
|
|
roles = [
|
|
"detect"
|
|
"audio"
|
|
];
|
|
}
|
|
];
|
|
};
|
|
"taubis" = {
|
|
detect.enabled = true;
|
|
record = {
|
|
enabled = true;
|
|
continuous.days = 1;
|
|
detections.retain.days = 7;
|
|
};
|
|
ffmpeg.inputs = [
|
|
{
|
|
path = "rtsp://127.0.0.1:8554/taubis?timeout=30";
|
|
input_args = "preset-rtsp-generic";
|
|
roles = [
|
|
"record"
|
|
];
|
|
}
|
|
{
|
|
path = "rtsp://127.0.0.1:8554/taubis_sub?timeout=30";
|
|
input_args = "preset-rtsp-generic";
|
|
roles = [
|
|
"detect"
|
|
"audio"
|
|
];
|
|
}
|
|
];
|
|
};
|
|
};
|
|
|
|
networking.firewall.allowedTCPPorts = [ 5000 1984 80 8555 ];
|
|
networking.firewall.allowedUDPPorts = [ 8555 ];
|
|
}
|