Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
{ lib, config, pkgs, ... }:
with lib;
let
configFile = pkgs.writeText "frigate-config.yml" ''
mqtt:
host: 10.0.2.1
cameras:
pinecube:
ffmpeg:
input_args: -avoid_negative_ts make_zero -fflags nobuffer -flags low_delay -strict experimental -fflags +genpts+discardcorrupt -use_wallclock_as_timestamps 1
output_args:
rtmp: -c:v libx264 -f flv
inputs:
- path: http://192.168.178.67:8080/?action=stream
roles:
- detect
- rtmp
detect:
width: 1280
height: 720
'';
in {
virtualisation.oci-containers.containers.frigate = {
image = "blakeblackshear/frigate:0.9.2-amd64";
imageFile = pkgs.dockerTools.pullImage {
imageName = "blakeblackshear/frigate";
finalImageTag = "0.9.2-amd64";
imageDigest = "sha256:975104371efe6c4878b25fd14b4bb46f0f9de0543e9413fa968998838eae10ef";
sha256 = "sha256-JjdumF1g6upzgurWAYWdo22qfPEhXNBb9xwr1wiCI/Y=";
};
volumes = [
"frigate:/media/frigate"
"${configFile}:/config/config.yml:ro"
"/etc/localtime:/etc/localtime:ro"
];
environment = {
FRIGATE_RTSP_PASSWORD = "foobar";
};
ports = [
"5000:5000"
"1935:1935"
];
extraOptions = [
"--mount=type=tmpfs,target=/tmp/cache,tmpfs-size=1000000000"
"--device=/dev/dri/renderD128"
"--shm-size=64m"
];
};
}