120 lines
2.6 KiB
Nix
120 lines
2.6 KiB
Nix
{ config, tools, ... }:
|
|
let
|
|
hostname = tools.build_hostname "frigate";
|
|
mask_cidr = tools.mask_cidr;
|
|
camera = tools.build_ip "camera-entree-4";
|
|
user = "admin"; # use yours
|
|
pass = "admin"; # use yours
|
|
in
|
|
{
|
|
services.frigate = {
|
|
enable = true;
|
|
hostname = hostname;
|
|
checkConfig = false;
|
|
settings = {
|
|
auth = {
|
|
enabled = false;
|
|
trusted_proxies = [
|
|
mask_cidr
|
|
];
|
|
};
|
|
proxy = {
|
|
header_map = {
|
|
user = "X-authentik-name";
|
|
role = "X-authentik-groups";
|
|
};
|
|
separator = "|";
|
|
default_role = "admin";
|
|
};
|
|
# database.path => postgres ??
|
|
mqtt = {
|
|
enabled = true;
|
|
host = tools.build_hostname "mqtt";
|
|
user = "frigate";
|
|
password = "pouet";
|
|
# Auth ???
|
|
};
|
|
detect = {
|
|
enabled = true;
|
|
fps = 5;
|
|
};
|
|
detectors.cpu.type = "cpu";
|
|
objects.track = [
|
|
"person"
|
|
"car"
|
|
"bird"
|
|
"cat"
|
|
"dog"
|
|
];
|
|
motion.enabled = true;
|
|
# genai => ollama
|
|
semantic_search = {
|
|
enabled = true;
|
|
model_size = "small";
|
|
};
|
|
review.detections = {
|
|
enabled = true;
|
|
labels = [
|
|
"car"
|
|
"person"
|
|
"cat"
|
|
"dog"
|
|
];
|
|
};
|
|
record = {
|
|
enabled = true;
|
|
retain.days = 2;
|
|
preview.quality = "medium";
|
|
};
|
|
snapshots = {
|
|
enabled = true;
|
|
retain.default = 7;
|
|
};
|
|
# face_recognition = {
|
|
# enabled = true;
|
|
# model_size = "small";
|
|
# };
|
|
# lpr.enabled = true;
|
|
# classification.bird.enabled = true;
|
|
cameras = {
|
|
front = {
|
|
enabled = true;
|
|
ffmpeg.inputs = [
|
|
{
|
|
# TODO: Move this elsewhere
|
|
path = "rtsp://${user}:${pass}@${camera}:554/?streamtype=0&subtype=1";
|
|
roles = [
|
|
"audio"
|
|
"detect"
|
|
"record"
|
|
];
|
|
}
|
|
];
|
|
onvif = {
|
|
host = camera;
|
|
port = 8899;
|
|
user = user;
|
|
password = pass;
|
|
};
|
|
zones = {
|
|
ZoneA = {
|
|
coordinates = "0,0.036,0.985,0.041,0.985,0.494,0.01,0.496";
|
|
loitering_time = 0;
|
|
};
|
|
ZoneB = {
|
|
coordinates = "0,0.502,0,1,1,1,1,0.501";
|
|
inertia = 3;
|
|
loitering_time = 0;
|
|
};
|
|
};
|
|
# review.alerts.required_zones = [
|
|
# "ZoneA"
|
|
# "ZoneB"
|
|
# ];
|
|
};
|
|
};
|
|
};
|
|
# vaapiDriver ...
|
|
};
|
|
}
|