mirror of
https://github.com/itme-brain/nixos.git
synced 2026-03-24 00:29:43 -04:00
integrated frigate
This commit is contained in:
parent
f1de6cf3ee
commit
0bcd891c7c
6 changed files with 25 additions and 109 deletions
12
.sops.yaml
12
.sops.yaml
|
|
@ -1,12 +0,0 @@
|
||||||
keys:
|
|
||||||
- &users:
|
|
||||||
- &bryan F1F3466458452B2DF351F1E864D12BA95ACE1F2D
|
|
||||||
- &hosts:
|
|
||||||
- &server age1jvqcc984v5xr8yhwm72arsy2hx6rm9gvsr7zeeasvcl0k2l9efmsgys3eg
|
|
||||||
creation_rules:
|
|
||||||
- path_regex: src/system/modules/frigate/secrets.ya?ml$
|
|
||||||
key_groups:
|
|
||||||
- age:
|
|
||||||
- *server
|
|
||||||
- pgp:
|
|
||||||
- *bryan
|
|
||||||
23
flake.lock
generated
23
flake.lock
generated
|
|
@ -137,28 +137,7 @@
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nixos-wsl": "nixos-wsl",
|
"nixos-wsl": "nixos-wsl",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
"nur": "nur",
|
"nur": "nur"
|
||||||
"sops-nix": "sops-nix"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sops-nix": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1752544651,
|
|
||||||
"narHash": "sha256-GllP7cmQu7zLZTs9z0J2gIL42IZHa9CBEXwBY9szT0U=",
|
|
||||||
"owner": "mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"rev": "2c8def626f54708a9c38a5861866660395bb3461",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "mic92",
|
|
||||||
"repo": "sops-nix",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
|
|
|
||||||
|
|
@ -15,13 +15,9 @@
|
||||||
url = "github:nix-community/NixOS-WSL/2411.6.0";
|
url = "github:nix-community/NixOS-WSL/2411.6.0";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
sops-nix = {
|
|
||||||
url = "github:mic92/sops-nix";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { self, nixpkgs, nur, home-manager, nixos-wsl, sops-nix }:
|
outputs = { self, nixpkgs, nur, home-manager, nixos-wsl }:
|
||||||
let
|
let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
pkgs = import nixpkgs {
|
pkgs = import nixpkgs {
|
||||||
|
|
@ -60,7 +56,6 @@
|
||||||
inherit system pkgs;
|
inherit system pkgs;
|
||||||
modules = [
|
modules = [
|
||||||
./src/system/machines/server
|
./src/system/machines/server
|
||||||
sops-nix.nixosModules.sops
|
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
(import ./src/system/machines/server/modules/home-manager)
|
(import ./src/system/machines/server/modules/home-manager)
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
camera_user: ENC[AES256_GCM,data:wEsLmNE=,iv:v+iPUD9pTMroUfCi6Q/fr38WUIV6nQkSKRwTlaWAE8g=,tag:YpHjExxYBN9h96rilf9oQg==,type:str]
|
|
||||||
camera_pass: ENC[AES256_GCM,data:n2r7rGMoEZmWnsc=,iv:7pZvNvanU2XqSgKcPqKD+beqXbdkDP8e2bdO+xCACLA=,tag:zA426rjuUp6v6WfvSbiGJQ==,type:str]
|
|
||||||
sops:
|
|
||||||
shamir_threshold: 2
|
|
||||||
key_groups:
|
|
||||||
- hc_vault: []
|
|
||||||
age:
|
|
||||||
- recipient: age1jvqcc984v5xr8yhwm72arsy2hx6rm9gvsr7zeeasvcl0k2l9efmsgys3eg
|
|
||||||
enc: |
|
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJc3hwWEY1YlRCckM5cTRJ
|
|
||||||
em1kMUtGZFdwMzkzek9MdlB1TGwyOHorb2l3ClpMYmtPQkNHcGphcnIrVVdQc1R3
|
|
||||||
a3p4c1NvK2gvTEZRWEQ4VTR4OFpFZWMKLS0tIFpSdTRxcVl3WHgrVlk4N1VXOGUv
|
|
||||||
YUYydFpLeUxENW1HeGlua1VMYnRlN2sKLq7rx6l5bkSdiAACJFlozCBjVJP2wiJQ
|
|
||||||
jQAzLUzkOJVSc3Qnnbsn8FuQjCRp25HKMYKd2pxOfAbT0CCh+yFKU8s=
|
|
||||||
-----END AGE ENCRYPTED FILE-----
|
|
||||||
- pgp:
|
|
||||||
- created_at: "2025-07-15T05:20:56Z"
|
|
||||||
enc: |-
|
|
||||||
-----BEGIN PGP MESSAGE-----
|
|
||||||
|
|
||||||
hQIMAwTOId9Kyu/jAQ//bJERY8tWurpRZ8CScN6Wj/Q7fR1jUJzn2ZDwJll+/ooM
|
|
||||||
fV1U6UJoD76hyrhNi8Nx1IGqVKooZ51PWaUy3EXuSlkECQ04ApxM37uiEFmgU2mH
|
|
||||||
HYIveY1i7ebkaAsjD6a+BuK0Dj04KwQpzAZE+CphUTVgbzS8Z1F/ToYQY9taPcuz
|
|
||||||
aYVbuETl1CRyEeJjuJbRnPdndINFgIhSOM/27cgZBSo/dzS6CQZbZXz4nBmSCXpM
|
|
||||||
j/b6STe2dw/fr9wx8Xwqs520w2bmEBYTAaYP6pkQ2xrUiaGAGyHvqSIr97Dm/a5L
|
|
||||||
i3PrXWmdfDLco+dKXtE0FnXa2lcANarIR9xd1QEzI8iby3VIvJx49ScrnETrOupW
|
|
||||||
eekho9t0LwZFHP6PrWtKtB3WxKkvyXqu8f0BrUkEZ2aUFhZW15ax1k/kNiyZJFy6
|
|
||||||
vevAjmYtLtHBTUomm9cKxZcxWbwKwDWn7sN5qWSyjz+rgiLE1Wi98K7pKwKzWTVs
|
|
||||||
E8sb5MUf49KXEISBkQgfdAEV92Ia47aopg+S2RaNNBGbjfZahQhkrBsi5ap8VLMN
|
|
||||||
skgbysaG+WY6sYYP4zoFrQFMXKvf146oAqNEs5/QoAi33oj0SZyaV+VgreDYGfrI
|
|
||||||
VnpgUJM2OLSgcIej8eveT5Gu8MrPBqlKa8+n9gRdaVz7d0g4hdT1EpfJN8YXRaTS
|
|
||||||
XQGTAxb9OoYD/KcTZAxhD0hYJKUHixFyOL96w+k06TXpkqdRveThthT0n6x8ynlO
|
|
||||||
mxF9u6aLvfLpjZxgaDWYO/I3ypy5Fx0N/3JtC1wt8AGrEbHW4Y6iciFu2bPDig==
|
|
||||||
=OBwx
|
|
||||||
-----END PGP MESSAGE-----
|
|
||||||
fp: F1F3466458452B2DF351F1E864D12BA95ACE1F2D
|
|
||||||
hc_vault: []
|
|
||||||
age: []
|
|
||||||
lastmodified: "2025-07-15T05:21:09Z"
|
|
||||||
mac: ENC[AES256_GCM,data:JDlohVG3MM6KwrnWhBXAiM5dCNtmDyyO03vrbAG32JbWjXbdnzqgG95cTe+X17pbilc3p3F/IQRjNxt1EziIDeLmrTszLPxpdBUEUuNUOJ2RBZ6IlBdBo4gitTOwlOAxh/Uo7qr+gvJCsyiyHvr4Zti27ZDcExe2oVxcLf3M988=,iv:ntCT1a+FSpOKCtmCXyXIdQJ08qrONaMu/+qMUiz0DRQ=,tag:d6T9BpVdy1cnYVHb7PczBw==,type:str]
|
|
||||||
unencrypted_suffix: _unencrypted
|
|
||||||
version: 3.10.2
|
|
||||||
|
|
@ -109,6 +109,13 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
virtualisation.vmVariant = {
|
||||||
|
virtualisation.forwardPorts = [
|
||||||
|
{ from = "host"; host.port = 5000; guest.port = 5000; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
startWhenNeeded = true;
|
startWhenNeeded = true;
|
||||||
|
|
@ -117,13 +124,4 @@
|
||||||
PasswordAuthentication = false;
|
PasswordAuthentication = false;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sops = {
|
|
||||||
defaultSopsFile = ./secrets.yaml;
|
|
||||||
defaultSopsFormat = "yaml";
|
|
||||||
age = {
|
|
||||||
keyFile = "/var/lib/sops-nix/key.txt";
|
|
||||||
generateKey = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,17 +8,14 @@ let
|
||||||
in
|
in
|
||||||
{ options.modules.system.frigate = { enable = mkEnableOption "Enable Frigate NVR"; };
|
{ options.modules.system.frigate = { enable = mkEnableOption "Enable Frigate NVR"; };
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
sops = {
|
|
||||||
secrets = {
|
|
||||||
camera_user = {};
|
|
||||||
camera_pass = {};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.frigate = {
|
services.frigate = {
|
||||||
enable = true;
|
enable = true;
|
||||||
hostname = "frigate";
|
hostname = "frigate";
|
||||||
settings = {
|
settings = {
|
||||||
|
web = {
|
||||||
|
bind_address = "0.0.0.0";
|
||||||
|
port = "5000";
|
||||||
|
};
|
||||||
mqtt = {
|
mqtt = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
host = "localhost";
|
host = "localhost";
|
||||||
|
|
@ -28,11 +25,11 @@ in
|
||||||
ffmpeg = {
|
ffmpeg = {
|
||||||
inputs = [
|
inputs = [
|
||||||
{
|
{
|
||||||
path = "rtsp://user:password@192.168.0.108/cam/realmonitor?channel=1&subtype=0";
|
path = "rtsp://admin:ocu?u3Su@192.168.0.134/cam/realmonitor?channel=1&subtype=0";
|
||||||
roles = [ "record" ];
|
roles = [ "record" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
path = "rtsp://user:password@192.168.0.108/cam/realmonitor?channel=1&subtype=1";
|
path = "rtsp://admin:ocu?u3Su@192.168.0.134/cam/realmonitor?channel=1&subtype=1";
|
||||||
roles = [ "detect" ];
|
roles = [ "detect" ];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
@ -42,11 +39,11 @@ in
|
||||||
ffmpeg = {
|
ffmpeg = {
|
||||||
inputs = [
|
inputs = [
|
||||||
{
|
{
|
||||||
path = "rtsp://user:password@192.168.0.181/cam/realmonitor?channel=1&subtype=0";
|
path = "rtsp://admin:ocu?u3Su@192.168.0.181/cam/realmonitor?channel=1&subtype=0";
|
||||||
roles = [ "record" ];
|
roles = [ "record" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
path = "rtsp://user:password@192.168.0.181/cam/realmonitor?channel=1&subtype=1";
|
path = "rtsp://admin:ocu?u3Su@192.168.0.181/cam/realmonitor?channel=1&subtype=1";
|
||||||
roles = [ "detect" ];
|
roles = [ "detect" ];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
@ -56,11 +53,11 @@ in
|
||||||
ffmpeg = {
|
ffmpeg = {
|
||||||
inputs = [
|
inputs = [
|
||||||
{
|
{
|
||||||
path = "rtsp://user:password@192.168.0.181/cam/realmonitor?channel=2&subtype=0";
|
path = "rtsp://admin:ocu?u3Su@192.168.0.181/cam/realmonitor?channel=2&subtype=0";
|
||||||
roles = [ "record" ];
|
roles = [ "record" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
path = "rtsp://user:password@192.168.0.181/cam/realmonitor?channel=2&subtype=1";
|
path = "rtsp://admin:ocu?u3Su@192.168.0.181/cam/realmonitor?channel=2&subtype=1";
|
||||||
roles = [ "detect" ];
|
roles = [ "detect" ];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
@ -70,11 +67,11 @@ in
|
||||||
ffmpeg = {
|
ffmpeg = {
|
||||||
inputs = [
|
inputs = [
|
||||||
{
|
{
|
||||||
path = "rtsp://user:password@192.168.0.59/cam/realmonitor?channel=1&subtype=0";
|
path = "rtsp://admin:ocu?u3Su@192.168.0.60/cam/realmonitor?channel=1&subtype=0";
|
||||||
roles = [ "record" ];
|
roles = [ "record" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
path = "rtsp://user:password@192.168.0.59/cam/realmonitor?channel=1&subtype=1";
|
path = "rtsp://admin:ocu?u3Su@192.168.0.60/cam/realmonitor?channel=1&subtype=1";
|
||||||
roles = [ "detect" ];
|
roles = [ "detect" ];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
@ -84,11 +81,11 @@ in
|
||||||
ffmpeg = {
|
ffmpeg = {
|
||||||
inputs = [
|
inputs = [
|
||||||
{
|
{
|
||||||
path = "rtsp://user:password@192.168.0.108/cam/realmonitor?channel=1&subtype=0";
|
path = "rtsp://admin:ocu?u3Su@192.168.0.108/cam/realmonitor?channel=1&subtype=0";
|
||||||
roles = [ "record" ];
|
roles = [ "record" ];
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
path = "rtsp://user:password@192.168.0.108/cam/realmonitor?channel=1&subtype=1";
|
path = "rtsp://admin:ocu?u3Su@192.168.0.108/cam/realmonitor?channel=1&subtype=1";
|
||||||
roles = [ "detect" ];
|
roles = [ "detect" ];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
@ -97,5 +94,7 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 5000 ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue