feat: somehow make frigate work
This commit is contained in:
@@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user