Compare commits

..

6 commits

23 changed files with 206 additions and 214 deletions

View file

@ -1,13 +1,8 @@
{ ... }: {
imports = [
./hardware.nix
./disko.nix
./nvr.nix
];
networking.hostName = "kameramann";
networking.interfaces.ens18.useDHCP = true;
swapDevices = [{ device = "/swapfile"; size = 4096; }];
}

View file

@ -1,35 +0,0 @@
{ ... }: {
disko.devices = {
disk = {
main = {
type = "disk";
# Proxmox VirtIO SCSI (scsi0) → /dev/sda
# Proxmox VirtIO Block (virtio0) → /dev/vda
device = "/dev/sda";
content = {
type = "gpt";
partitions = {
ESP = {
size = "512M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
root = {
size = "100%";
content = {
type = "filesystem";
format = "ext4";
mountpoint = "/";
};
};
};
};
};
};
};
}

View file

@ -1,16 +1,21 @@
{ pkgs, ... }: {
services.qemuGuest.enable = true;
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
{ lib, modulesPath, pkgs, ... }:
{
imports = [ (modulesPath + "/virtualisation/proxmox-lxc.nix") ];
nix.settings.sandbox = false;
proxmoxLXC = {
manageNetwork = false;
privileged = true;
};
services.fstrim.enable = false;
services.openssh.settings = {
PermitRootLogin = lib.mkForce "yes";
PasswordAuthentication = true;
PermitEmptyPasswords = "yes";
};
boot.initrd.availableKernelModules = [
"virtio_pci"
"virtio_scsi" # use "virtio_blk" instead if disk is /dev/vda
"ahci"
"sd_mod"
"i915"
];
environment.systemPackages = [ pkgs.intel-gpu-tools pkgs.libva-utils ];
@ -19,4 +24,5 @@
enable = true;
extraPackages = [ pkgs.intel-media-driver pkgs.intel-compute-runtime ];
};
}

View file

@ -1,4 +1,4 @@
{ config, lib, ... }:
{ config, lib, pkgs, ... }:
let
cameras = {
"ulfried" = {
@ -14,7 +14,7 @@ let
"gnisbert" = { };
"taubis" = {
frigate = {
detect.enabled = true;
detect.enabled = false;
record = {
enabled = true;
continuous.days = 1;
@ -35,8 +35,7 @@ let
};
};
# Uppercase camera name for use as systemd credential / env var name
varName = name: lib.toUpper (lib.replaceStrings [ "-" ] [ "_" ] name);
varName = name: "FRIGATE_" + lib.toUpper (lib.replaceStrings [ "-" ] [ "_" ] name);
go2rtcCameraStreams =
name: cam:
@ -45,11 +44,11 @@ let
in
{
"${name}" = [
"\${${varName name}_URL}"
"{${varName name}_URL}"
"ffmpeg:${name}#audio=opus#audio=aac${video}"
];
"${name}_sub" = [
"\${${varName name}_SUB_URL}"
"{${varName name}_SUB_URL}"
"ffmpeg:${name}_sub#audio=opus#audio=aac${video}"
];
};
@ -62,91 +61,121 @@ let
}
{
path = "rtsp://127.0.0.1:8554/${name}_sub?timeout=30";
input_args = "preset-rtsp-generic";
roles = [
"detect"
"audio"
];
input_args = "preset-rtsp-restream";
roles = [ "detect" "audio" ];
}
];
# Only cameras with a frigate key get a frigate camera entry
frigCameras = lib.filterAttrs (_: cam: cam ? frigate) cameras;
in
{
age.secrets = lib.mkMerge (
lib.mapAttrsToList (name: _: {
"camera-${name}-url".file = ../../secrets/camera-${name}-url.age;
"camera-${name}-sub-url".file = ../../secrets/camera-${name}-sub-url.age;
}) cameras
);
systemd.services.go2rtc.serviceConfig.LoadCredential = lib.concatMap (name: [
"${varName name}_URL:${config.age.secrets."camera-${name}-url".path}"
"${varName name}_SUB_URL:${config.age.secrets."camera-${name}-sub-url".path}"
]) (lib.attrNames cameras);
services.go2rtc = {
enable = true;
settings = {
frigateConfig = {
auth.enabled = false;
proxy.default_role = "admin";
go2rtc = {
rtsp.listen = ":8554";
webrtc.listen = ":8555";
streams = lib.foldl' lib.mergeAttrs { } (lib.mapAttrsToList go2rtcCameraStreams cameras);
};
mqtt = {
enabled = true;
host = "192.168.178.33";
user = "frigate";
password = "frigate";
};
ffmpeg.hwaccel_args = "preset-vaapi";
detectors.ov_0 = {
type = "openvino";
device = "GPU";
};
model = {
model_type = "yolo-generic";
width = 320;
height = 320;
input_tensor = "nchw";
input_dtype = "float";
path = "/config/model_cache/yolov9-t-320.onnx";
labelmap_path = "/labelmap/coco-80.txt";
};
detect.enabled = true;
snapshots.enabled = true;
semantic_search = { enabled = false; model_size = "small"; };
face_recognition = { enabled = true; model_size = "large"; };
lpr.enabled = false;
objects.track = [ "person" "bird" "car" ];
telemetry.stats.intel_gpu_device = "sys:/sys/devices/pci0000:00/0000:00:02.0";
classification.bird.enabled = true;
cameras = lib.mapAttrs (
name: cam: cam.frigate // { ffmpeg.inputs = frigateInputs name; }
) frigCameras;
};
services.frigate = {
enable = true;
vaapiDriver = "iHD";
hostname = "kameramann.lan.baubs.net";
settings = {
auth.enabled = false;
go2rtc.streams = lib.foldl' lib.mergeAttrs { } (
lib.mapAttrsToList (name: _: {
"${name}" = [ ];
"${name}_sub" = [ ];
}) cameras
);
mqtt = {
enabled = true;
host = "192.168.178.33";
user = "frigate";
password = "frigate";
};
ffmpeg.hwaccel_args = "preset-vaapi";
detectors.ov_0 = {
type = "openvino";
device = "GPU";
};
model = {
model_type = "yolo-generic";
width = 320;
height = 320;
input_tensor = "nchw";
input_dtype = "float";
path = "${./models/yolov9-t-320.onnx}";
labelmap_path = "${./models/coco-80.txt}";
};
detect.enabled = true;
objects.track = [
"person"
"bird"
"car"
configFile = (pkgs.formats.yaml { }).generate "frigate-config.yml" frigateConfig;
in
{
age.secrets = lib.mkMerge (
lib.mapAttrsToList (name: _: {
"camera-${name}-url".file = ../../secrets/camera-${name}-url.age;
"camera-${name}-sub-url".file = ../../secrets/camera-${name}-sub-url.age;
}) cameras
);
# Assemble env file from individual agenix secrets for the container
systemd.services.frigate-env = {
description = "Generate Frigate environment file from secrets";
before = [ "podman-frigate.service" ];
requiredBy = [ "podman-frigate.service" ];
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
};
script = ''
umask 077
{
${lib.concatMapStringsSep "\n" (name: ''
printf '%s=%s\n' "${varName name}_URL" "$(cat ${config.age.secrets."camera-${name}-url".path})"
printf '%s=%s\n' "${varName name}_SUB_URL" "$(cat ${config.age.secrets."camera-${name}-sub-url".path})"
'') (lib.attrNames cameras)}
} > /run/frigate-env
'';
};
systemd.tmpfiles.rules = [
"d /var/lib/frigate 0755 root root -"
"d /var/lib/frigate-media 0755 root root -"
];
virtualisation.podman.enable = true;
virtualisation.oci-containers = {
backend = "podman";
containers.frigate = {
image = "ghcr.io/blakeblackshear/frigate:stable";
autoStart = true;
volumes = [
"/var/lib/frigate:/config"
"${configFile}:/config/config.yml:ro"
"${./models/yolov9-t-320.onnx}:/config/model_cache/yolov9-t-320.onnx:ro"
"${./models/coco-80.txt}:/labelmap/coco-80.txt:ro"
"/var/lib/frigate-media:/media/frigate"
];
environment.LIBVA_DRIVER_NAME = "iHD";
environmentFiles = [ /run/frigate-env ];
ports = [
"5000:5000"
#"8971:8971"
"1984:1984"
"8554:8554"
"8555:8555/tcp"
"8555:8555/udp"
];
extraOptions = [
"--shm-size=512m"
"--mount=type=tmpfs,target=/tmp/cache,tmpfs-size=1000000000"
"--device=/dev/dri/renderD128:/dev/dri/renderD128"
"--cap-add=CAP_PERFMON"
];
telemetry.stats.intel_gpu_device = "sys:/sys/devices/pci0000:00/0000:00:02.0";
classification.bird.enabled = true;
cameras = lib.mapAttrs (
name: cam: cam.frigate // { ffmpeg.inputs = frigateInputs name; }
) frigCameras;
};
};
networking.firewall.allowedTCPPorts = [
5000
1984
80
8555
8554
];
networking.firewall.allowedTCPPorts = [ 5000 1984 8554 8555 ];
networking.firewall.allowedUDPPorts = [ 8555 8554 ];
}

View file

@ -1,7 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg K23laRBk9Jvf6Uo9ofAk2gCPp7EppKPVnomDWE+mJ2s
Z6r7vtDMPx0hSXxqOwQHwHeQzE/97hhy+KPBRUmkloQ
-> ssh-ed25519 psfYGg 5jNbtluxAGBo2H2k2zoRUjbtAxvDvtm8i9UNNTNAuB8
d2z/qob65J5AVhxDt35fn05+pkeNHDrIEfzCV8uGvwA
--- EOpZwlsfsISDz9J/4735DF21LMMiLmIc4sE7F3wAlHI
^Æ{e€NÂüÞ¨šŒ§Ï,ö´§3áe)¼ý:]@Ù×"´<>ÔÀ€ß7¢»O 3©ôjÂØ#Yq£i £ÝY„ÜâQç) k^;Ï<}èƒ6ñdÚC$×ÍfqPy_V…»:3þ©
-> ssh-ed25519 hC2TMg 4we8pxrWxgojBXIk1RQvhRZxUI3Upsn0ZlcFr811HEk
U31oa9jVcRrTDEIF5hTTfv2XI6MJKG6gr3cB+eZ7x+c
-> ssh-ed25519 9AVdVQ eOcDDEQiH5AkOMwyWMRED1EkxnohA6EwP08W5nGL32Y
iztcFRHNRJctdDHVFKPPXQQBfujHVao7pOi/DQQAurY
--- G2s01Plk3CY5Mg4lhvcePN38IsGV9pdmxsjZ3xjJFIo
õ6%Ô{—TIfQ½¯g´µ•) n”]ß á¹_NŸ] ‰V…´õØ?±CÜxÅú©•½„èÈ„cV¤û˜Û° [SÍ4 ÒÌÛ£O/Ñ=÷ù¸l@*{ù« YÅóËy~¿

Binary file not shown.

Binary file not shown.

View file

@ -1,8 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg h329e0tkuyIHY1qDoj+bL6Bb1rXQ/xfIzIdMZ1QwSlI
twGdpKH4ZbOtvBSE6VmhYgBd77ALBoaubHQFPq2/MIQ
-> ssh-ed25519 psfYGg +U9wzhqrx7eoIrYU3gdQE4Cj+cjwmgiI+SyoDnB6ZVc
Y03vO9kY8tBT/ijFL1R7xICkF2a0OwYnrQu5R8xpPMw
--- b+Ans7uEkZZoigbu3h9tW+lH9qpLAfrtnjUHq/GfeiI
¬“ÄšõÊuê«ÓçéNcB:<3A>ÙŒg\²§y£zªsÃXjònC<6E>úR«H¦VýÌ5 ­ícv„Ôrê]ØŸ³No· <45>ÁvñÆ^uLä8È•G(Älo
Ü
-> ssh-ed25519 hC2TMg gfYjuxvb3pgh8BFaPuugCTC4X+jH4iuaTn/tlySHFgY
Gk8VkjCKdKzlODmrCHqFodNQ8jVsGzZbtru5maH0ZwA
-> ssh-ed25519 9AVdVQ 5hgDLYchlEFlxmyHoNuW65sMzJudRR9Z+u00NWKA93Q
lhWMffnVKfCkbl0Tnx4vhI4CF1B1FygWr+9ThyAHoGI
--- l1LP2r07DQckiBHRkfoPiOienDa/rC0PlORm+fZt++U
“cͬóÍÆÇá<àšUKÿäøPB²Óuž—:ËâæîIЪ‹ÿvÿ¬lÈsh<19>¯<EFBFBD>©ƒÜ<C692>Hn¯Ô0JÖw™ÌPšðw9ªƒbÊUôH'dÐtéLEÝÉtHû›€

Binary file not shown.

Binary file not shown.

View file

@ -1,9 +1,8 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg hQ9We+2gIJfdmnP5iTiQVt0Lz5tXJpjgQnyI5eEnHGY
rffB6DKI01Rwc4WchxN8uSYofaiWufAy6OLXwaeAdCk
-> ssh-ed25519 psfYGg 6TJ5VeXmU/W7LuIS+6ud/V0LpiUm+xwQJppQSHX+NnM
8p+BkvGGIcXe8jytEcr8+rfE1r9I/gg9Kur8yRYssRk
--- m1eFeYo8bI107h4muwA4TgHaLrdNiuw2YpKOuyU8wNs
öÜC4™Ñv8aµªÍß«Íà[ë¼ö@5\\öi!†ÉÁÚGÕ²
º-Iý;uB¡ ti€ âd0¨>ެ­æàÂòuôýlù,óŽ<C3B3>Æü¡w:J¶Ž
èD~ÎÈÕB~<7E>Á
-> ssh-ed25519 hC2TMg tOGEXhEGm6d+oLDrey7d/9MBz95xXZopqA/pL05wKy0
S4Zk53Zwg2XYrA/zqX0lmK5ABtKNp/IiVKZjStxisWQ
-> ssh-ed25519 9AVdVQ Z07v6yFGdfiKhiUgbAZVscKcfGajzQAWt10QeqJAI1g
pGFJYdj0CUIn/wmvhVpgvaC5hyKOBiLwrZKrdnJJlog
--- 1QAqRe6ae2KhtqRBA8dBU2Ig9GgUDAMUHJoYylGLWBc
ïªæšÐÖ
E|4 ,|¡ÐZ¥S—âcüDªÎ[ rEÅl*DÜ÷ ¹5·æ}“Ú{쨜ZëF_ZÓ^° ®ʆÁ ÝlÆb¯8DëŸ9˜5ïã(Ü?Ø

View file

@ -1,8 +1,8 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg kiwLTnSCnEbIWlw2j1SZ7aAQsqFipJDqJCBCyHT5p1g
eI3p6oADMssBAIndqjmSXbeJROtBHETfF8W3IvFRg/c
-> ssh-ed25519 psfYGg B7cdkEzmyrkeM7cTnoC8SjTaV1pWuAXOXiGYSJH9gxI
kFeERXxWDyOjhN+jNGOXWy3m6WY+S5+s20hzgrF5qkI
--- FPWKykTSfx4XH7tsnhREG0HC9NcgCXJjt77TQ3Sdxk0
Qď÷ţ-®ľľ´č ňyŕ6«M]”Ő|±ÓIpľ2˛_“w†îBŁ|Ň©yi/áuzwWđËýfŃDkY»8602ş:ĐBµľý7e…A”FAď
ě˝đ)9ĘőŹôöô
-> ssh-ed25519 hC2TMg DRZaz0y4F+Ot/JZGksYvvqkJZGXhfe4dqQA6OZkiPCc
lrZuE4SCJ9eKV+HgApUJvbxrfwL0jnzVnzMWzbOIg8I
-> ssh-ed25519 9AVdVQ maHML3K/9CulRq+K0DITSzhLt/eBbPs2rfxqOaefx1w
Cubrab4WCDp/MgyKjKEdLAGEqi507wDI450GxWN0KBw
--- 45uDj8rqOmpyduRV2GKL/stOf9teh604Mo9ZS/rcqI8
‡# ÃìOFÔ¯f=åóOUÚºÎeõ†mÒÑZeìà ‡ ~J´£ݳEt×às;„a'£zœ¹¢
ÕÒÁ‡uy¨N­1ægøª;(Ö7ÍÎcôK‰Ÿߨ;bã

View file

@ -3,7 +3,7 @@ let
users = [ jbruhn ];
telefonmann = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEwgqWVjNOgBygI1uaG8P6wQlfr91A+FJS/EHYZbYWlX";
kameramann = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMkXAM24G3s7EO6eQbwC85Rkb3OhrGZtLZRQMqut9IB5";
kameramann = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEfgDpNz95SbbBHYM8zSGCh1pyb/2quR6Oy8xyWFkl0n";
systems = [ telefonmann kameramann ];
in
{

View file

@ -1,7 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg aTDzgRT6xEL9BaIhqfpEgQKjGPfahKSHh3uYOm7n32g
rrTgEzAxcyWeC9Qwrw/Tp1GsE902mmGcs8/rKbflobs
-> ssh-ed25519 Gfi4hQ 5qBnv/8OonFL8JgrgfIsi254IKX5q6oVV8/4epFlNEI
nNe7V6St3VLUJ1xdK8iJBROia7CAQfMaGgGUiv++fns
--- qo99nBZJS8fqU+vfdxg5CME+HZdTrWlga0hgEQqqUTM
\­j€ÃÜSÁBÚhòºù[²\áH#DbbÕhšŽ-¢ìï] ŠS~^°Eb{;º'‘æ.´ …€
-> ssh-ed25519 hC2TMg yATZJHK5AEN6h8IbCEv0z/cRvLWTtsE32NCK2qVSLSg
X+nfSXveDvPA6t90kkw0pz4vCrbAy713TdgwkWlk2Rw
-> ssh-ed25519 Gfi4hQ Dphc5VIi5O6DF2Ct3FxRSxz+Si1ikZFzALAkfAXaYR0
yeIVhpfyCSWWkBCaev5oCy/iqpx21Jr7rLDbx6d6hPc
--- bvtu/BU18oJ2/KnHJEtLDIv92hI9TEjSa/wEVm06xo8
ó WhåÂcI(‰7ïšx¿7wuÄž½$ë (I·/¾Ø]bRÙƒ÷9ÓÒ²Ågú)åÚv

View file

@ -1,7 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg cV6nDhAKb7tWgyx4nKFT2tYnlQJzLszqnQVoHiye7lw
oGMbfNIBSFVmts2IeCTBgDVlHDjqgIpNmmwjFXP/XNo
-> ssh-ed25519 Gfi4hQ iEwAaUJd1gnYhsbi6LutKk/KHr3YripvY5CUfV6StRA
GffKWdz87M1XRYIsImXsx0Rpxz0O6113rClVpNZFmqs
--- li/YIWk6iDAtMYCNf1kFq46i0jpy5bgI80t98bRqGFQ
ÛOÚDø(Ò¢Ãñ».¦ÊšÔ݉iµu.÷#>Çès6$dbJ€"ä߆ÎOçv
-> ssh-ed25519 hC2TMg o7MYtPe6/giPT/Czs0IRmLh3sBXMsNqsTcwgABgKeUA
KVXT1NVCRiCPEwnDk79D0+oqjJ2DzJoH5dcbhS4X8ig
-> ssh-ed25519 Gfi4hQ qRTjNZWOjIczygkBrpAHxh7fQmf+VwVfY+OuYyqe+js
Ido9gOE4x2+oasGwtXZR1E6mlqXuto3gQEJpXbZeD+Y
--- rmKNWi4be93IKtwEt8mW3PPg4Sk55iHKGaMFdo2hJrw
¹¯ôá=põê5B ü:öÀz²1Á_ÎÃP·m<C2B7>ÏŒ#êœVNMûÉ

View file

@ -1,7 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg CSy6l/EdpaJZhQKFBV/P1OEy7OfewLrcV+xxBFVoPHQ
ZceDzPQH8Z5mu3xuCcOdM6hiP+yD9LtWyqVRBzT08oU
-> ssh-ed25519 Gfi4hQ co95lRFjdU3uakIPvS8Mj7aGhYamlouyj/2cGZJ8o3Y
SvHzNxzHJbHMUmJENu934Wuy27s8yotCa+yqZngTr6s
--- FIIm6l+HiK2Eh4Tkmr08rZhhFtE+x5hUHM9TWgP0BPQ
*Où>þ<18>E‰Þ €TÇ'£×¿©˜½²=‡ø8¡—Tâ
-> ssh-ed25519 hC2TMg iGQpGRxYWXuWJQeUV3bhBvpO2nZSeop9IQ8CgdW8ynM
YFjTrTRGds64AChKTyVI4XSRU0KaND6YtSyORkhh+PI
-> ssh-ed25519 Gfi4hQ wE8MQjCqGjvFQ6+XJyVzpu41v5xS6pfOpIXrzPw3qnE
0r/7BKqJclJRe4EQN3JZvw8FH2WNXRE06Dn9NRBmAhg
--- 73Gk0CoWJXK2AuiXOwKvt/c8GgGw+DafNksdE6cBa44
X{üøÊÂ(äþW•ÀópHk{QjEŠÅvÕ²Ž<C2B2>ß!ò©…”âè²ç"

View file

@ -1,8 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg ZXCCEKHvyj3V/dGDNgMZNxrcu3Kpqk6T/KcE9KvI60g
X8EoTT5COPZUjJ6VvQLZDzZs63K/RyIZanFQx5USFrw
-> ssh-ed25519 Gfi4hQ riBFzxyTj4ph6tpL6mC+2OoCnJFTxxnsPUbX6BrF8lU
BuhSoMAroN+YkPxziSMUQtmJrcOfUlfqn9bgfkpbJxo
--- IQA291DTeWEMPkmDXjHzSZ6gg7mUu19laesubfmG1to
ÜÄCùàdcW<63>òô>/e÷€Qå•M|)D…I>×€9¢Vå
ÑMNj¨¿E{
-> ssh-ed25519 hC2TMg JIc2Y0jvzXdztzCirPS1AUVYxBxRYwSeCEf3CQmrRns
Phs/xoioYruXoWWOxPDjEwQidIWnIOsmijWgAJbk624
-> ssh-ed25519 Gfi4hQ mOGEHxgdWmeqghBHbvj5r+ENMTFewu6GdlbjeryEURw
XP/3vVltwSqgJBF4MnyjDzICsB1ajkCQ+4FmjYId9S8
--- /5KN6s4iBJtMZFY5DTmvCExoXX6BDN8YMXqPIb0BkiU
ª£¹<µ4T|gÊ´öšÈZa"¤mUTÑyõ/U—ÕTù£ùï'Ö²—‚=<3D>

View file

@ -1,7 +1,8 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg bbVG5NDvMUfqP5bAjKakl3XtsAyv4Mo1xqsshyqgsyU
Y06IQn9fX37uPanqUSr8h9GZhlkFNhX5XQCdSJZtAJE
-> ssh-ed25519 Gfi4hQ 8JvFmMpFX5RK+sn29l3vwC852h7CwPjpaN/XrjIq/3I
LVHOqggZFi562Rd3Fr2ePbTyFDsIuROShUq3T6LVnBo
--- WXzMczGriwzzcUkJhMOdVzMRfSCLwfUwzOwRU5z7Tr4
ÚV&Mn\IÔÓ~HeíKWø×PS2GCiÜÍóM%öyvs-ºo1õ5ã
-> ssh-ed25519 hC2TMg DFbs+kB52Tsz3OqgIDcKrvViDw2rv4/R9FnfUi9p/04
C8qgdSvuIRMnF0FqDX7uvjAv6/9Wc4Z2soyG/nMgKNo
-> ssh-ed25519 Gfi4hQ 1vKc3JcAu6jmKhvNNxyBUTOkKup1qVzVf3yZWiYiHAQ
tlOROgfmumAeo7u6X/PXw49UGIDWM7r1NGSo2Cs0BhM
--- IULV3hNZSfBngJRDRcRijfLzn7Oj1iPoioyo1vqUaGE
(i€UþÐ@ ï$U©
eçJÅQÖ[ÐFVîsìÐ3`v©<ùƒUSMNÏý/

Binary file not shown.

View file

@ -1,7 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg R8XRdHbLzVSEYlz2P4d0+imtxZnOZmtG2Hrhs+OkY1Y
b6IUJ890xJEceyCGrrp0xlGmVgtfhn0qvAg19yWnMwY
-> ssh-ed25519 Gfi4hQ YPoImdtxqMO2GjFVeXDzqmtH3JcHxP6CjfeYZD1diHc
mj7b8FSrXiFvcCc2yVHV9GgtZDQvV2Lq/T1V+I4NsH4
--- g+6x7BOXv3hlti1rlXsKoEK17fRSd9ReukGG43t2jrg
 åI;N™;FùãxãuBVˆ: ÉT‡)÷½‰è*…ñn<C3B1> æ:æçcÖ+w¤Oé¨
-> ssh-ed25519 hC2TMg VKKRBUo+B3BoCoUAdVObdbEYjc2jgRgaOMNzGaWl4m8
mAl+2oQQU0I2xeateEyJzBr4wi2ErB0JMNyQdE+OPm8
-> ssh-ed25519 Gfi4hQ oubD5PsQMTXjcGZztiCUkzSU2fP3rPhVCQ2sZY3fKTY
C4hv2aQGNOJDMU2zSgGc+CQ1TLy/tF4zBJRVgWeiGoc
--- hACW1LprkJJZHPwyCfQzYbsHvD4BYD6SwWzZO2DiznI
å$€\!»‡¯þ<>S˜OëÄ 7b"š‰øØoR²L³¥Úéua5õ

View file

@ -1,8 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg nDn8cdsSuRv/XO5u/h1T8VGpZbkrsdte+ueF1ZUobhw
KSK4TB5HrMHwdHngNM4VGBKfYhWBbKJKY18YCGYjyHw
-> ssh-ed25519 Gfi4hQ M74IR8bxK3/KzzCN00azEFaU9eRhdEB+V+V7GH2Bf3Y
mzKKwWX7su8FpVb48RSM3d3iZZy3SLfOL6/Hzo2yfa0
--- /aLAt2joNYE6oeVrJRK+EumSTnHEb+E5caPS0HLNWy4
<15>7•k
—c,<2C>©¹[dŒK©UÍ àí§`ž¾>LŽ¥ãIÐE¬_Ë“¨
-> ssh-ed25519 hC2TMg FGPfMQ837cCsa57PtNGdoL5iuJU6yBqBLOi38gTWa24
+p1ov9CK680rvyt1wotbNOdc5A8DJo//LE9na01T7d4
-> ssh-ed25519 Gfi4hQ lSZQLcW9jJmTFuIsF5aHiPJcMqsCouXa0TC8XSBMG3E
sBDhduQ19U2pbrDziofbd9kwBHbhPO9FKOEJm/HXxCc
--- EuEFQk9H4WPRWJF5qt9exFvy8IVea0YHIUgUkF9TSvA
±Ű áî± /żCí+Aô}ÄÓB¸ş§ńt(„.żśĎC—ű|Śś ΀

View file

@ -1,7 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg +rLrjqElf41gDx5/V0uZeX42jgKq2OdoGIUiZZWcOVo
5Yy9j+zoGrM79TF8N1YdOqtgq7VRW9NbimSs+2tirkE
-> ssh-ed25519 Gfi4hQ v1UuYgI53qKi4+ZxmcOrgTcLBtAcmeyPYJMCLtF6CzQ
bnkNvL9NPbcvautilYVNqxdhdt2xsbjbJh32kQCTJjk
--- s/IQDcSq5lcxgZmz9XIEFNR197RewsdksMTM9MBGOCI
½âꔞQpEQUÊu†¼ÝÞŠÎ9><3E>î‘“.ZÇ<>W•Óý
-> ssh-ed25519 hC2TMg 4FcYMlKpTQNeeUj7EkDFRVzlZ1ch1Qjd26mJLsSQNGA
6fOpllptK9TGgXr3mFb/0bUvjhBjhXY7m8F0XR+e/pE
-> ssh-ed25519 Gfi4hQ pGvIqYZxMsmynhWJiHMCD3YX0spQbmuqdel7o262bnc
h7zmqOB0aJSY7pvD5EUEpDH0N2v7VkJPtssLnQK0wps
--- kkhfrutrCG6qgnamNrVzgdPdU5DXro1soFbslTp64To
Öú…9Nø`/¤¡Ï.¼£€<§È?84R!äU)èls[òÇE

View file

@ -1,7 +1,7 @@
age-encryption.org/v1
-> ssh-ed25519 hC2TMg rKE6zb0itefbnwHKXzxZEE3Rt18q+qg9h4/jOJVabDE
sAnTslcN+zxaBT8ZR53IjX9pUP4bAS9kmZfIM7iOpjA
-> ssh-ed25519 Gfi4hQ wT4Jd7ctLUaQtB9oKiV6Ot7pIABvmRfaK/9duUJ0PR4
uaVZZZEpbsceLsMjoLt7lUkM7T5bEJvsw80VHuFIVQA
--- TZv1bkbXqioF48w3n1ayh/oRSAewdvhq5DYk9SABU+g
Ì?uL{wEµ5qÿüÒ·^§3ž­62“³Ì*Ø$¢<>ÃI¾GpÝ€þ
-> ssh-ed25519 hC2TMg MArpjBV+1UwxZYXhAc8N3rGrtjNie2gHxbauF7+Ho3w
WIXIGJkgBzpx7on5KLEi8lW/iKcF0u0r4GVfLn2cLkA
-> ssh-ed25519 Gfi4hQ qduy/LiAA/os2iU7oivTIfoTfWbBO/CQp8ZoXMkHr18
kS/HOP4zP4/Q6FosIJ+3Uf6qeX/7ivSDhvCXl2a0MYg
--- /dCQQyR+Y/57D6dBMEt8qGWj07yExjRWr4f50ZxEeuw
zöä)4\ĺö<C4BA>ťÚ˘ô#“â,]Ní —pNúď˙m /pÖôÖ(˘=Ô7Ý