feat: somehow make frigate work

This commit is contained in:
Xavier Morel
2026-04-16 15:03:45 +02:00
parent 42caa0ea92
commit e4e58183f8
3 changed files with 169 additions and 53 deletions
+78 -53
View File
@@ -5,7 +5,9 @@
nixpkgs,
...
}:
let
lib = pkgs.lib;
in
{
imports = [
./hardware-configuration.nix
@@ -63,6 +65,10 @@
networking.hostName = "arcueid"; # Define your hostname.
networking.networkmanager.enable = true;
networking.firewall.allowedTCPPorts = [
80
5000
];
nix = {
settings = {
auto-optimise-store = true;
@@ -142,6 +148,9 @@
systemd.tmpfiles.rules = [
"L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}"
];
systemd.services.frigate.path = lib.mkBefore [ pkgs.ffmpeg-full ];
services = {
udev.packages = with pkgs; [
vial
@@ -159,7 +168,9 @@
layout = "us";
variant = "altgr-intl";
};
xserver.videoDrivers = [ "amdgpu" ];
xserver.videoDrivers = [
"amdgpu"
];
blueman.enable = true;
printing.enable = true;
avahi = {
@@ -174,21 +185,64 @@
pulse.enable = true;
};
ollama = {
enable = true;
host = "0.0.0.0";
openFirewall = true;
package = pkgs.ollama-rocm;
syncModels = true;
loadModels = [
"gemma3:4b"
"mistral"
];
};
frigate = {
enable = true;
hostname = "arcueid.int.m0rel.eu";
vaapiDriver = "radeonsi";
settings = {
genai = {
provider = "ollama";
base_url = "http://localhost:11434";
model = "gemma3:4b";
};
mqtt = {
enabled = true;
host = "mqtt.int.m0rel.eu";
user = "frigate";
password = "pouet";
};
ffmpeg.hwaccel_args = "preset-vaapi";
ffmpeg = {
hwaccel_args = "preset-vaapi";
input_args = "preset-rtsp-restream-low-latency";
path = pkgs.ffmpeg-full;
};
# ui.live_mode = "webrtc";
auth.enabled = false;
proxy.default_role = "admin";
# detectors = {
# ov_0 = {
# type = "openvino";
# device = "GPU";
# };
# ov_1 = {
# type = "openvino";
# device = "NPU";
# };
# # onnx.type = "onnx";
# };
# model = {
# model_type = "yolo-generic";
# width = 640;
# height = 640;
# input_tensor = "nchw";
# input_dtype = "float";
# path = ../../yolox_m.onnx;
# labelmap_path = ../../coco-80.txt;
# };
detect.enabled = true;
detect.fps = 5;
detect.fps = 2;
objects.track = [
"person"
"car"
@@ -197,7 +251,7 @@
"dog"
];
audio = {
enabled = true;
enabled = false;
max_not_heard = 10;
min_volume = 500;
listen = [
@@ -207,36 +261,26 @@
"speech"
"yell"
];
# filters.speech.threshold = 0.8;
filters.speech.threshold = 0.8;
};
motion = {
enabled = true;
# mask = [
# "0.316"
# "0.037"
# "0.317"
# "0.012"
# "0.035"
# "0.01"
# "0.033"
# "0.035"
# ];
};
semantic_search.enabled = true;
semantic_search.model_size = "small";
review.detections.enabled = true;
record.enabled = true;
record.retain.days = 2;
# record.retain.days = 2;
record.preview.quality = "medium";
face_recognition.enabled = true;
face_recognition.model_size = "small";
lpr.enabled = true;
# audio_transcription = {
# enabled = true;
# device = "CPU";
# model_size = "small";
# language = "fr";
# };
audio_transcription = {
enabled = false;
device = "CPU";
model_size = "small";
language = "fr";
};
classification = {
bird.enabled = true;
custom = {
@@ -286,36 +330,17 @@
user = "admin";
password = "admin";
};
# zones = {
# cour = {
# coordinates = [
# "0.001"
# "0.492"
# "0.001"
# "0.043"
# "0.893"
# "0.054"
# "0.888"
# "0.5"
# ];
# loitering_time = 0;
# friendly_name = "Cour";
# };
# entree = {
# coordinates = [
# "0.001"
# "0.5"
# "0.001"
# "0.997"
# "0.996"
# "0.991"
# "0.997"
# "0.513"
# ];
# loitering_time = 0;
# friendly_name = "Entrée";
# };
# };
motion.mask = [
"0.316,0.037,0.317,0.012,0.035,0.01,0.033,0.035"
];
zones = {
cour = {
coordinates = "0.001,0.492,0.001,0.043,0.893,0.054,0.888,0.5";
};
entree = {
coordinates = "0.001,0.5,0.001,0.997,0.996,0.991,0.997,0.513";
};
};
};
};
};