3 Commits

Author SHA1 Message Date
7115a93a0b clanService asterisk 2025-10-22 16:40:59 +07:00
b5f3adacd8 clanService yggdrasil add vars yggdrasil/yggdrasil-subnet 2025-10-21 15:55:18 +07:00
2eb52251cc clanService yggdrasil 2025-10-17 16:58:43 +07:00
10 changed files with 174 additions and 35 deletions

View File

@@ -5,7 +5,6 @@
tags = { tags = {
glom = [ "vega" ]; glom = [ "vega" ];
b4l = [ "rigel" ]; b4l = [ "rigel" ];
fax-bridge = [ ]; fax-bridge = [ ];
}; };
@@ -56,7 +55,13 @@
input = "self"; input = "self";
}; };
roles.default.tags."fax-bridge" = { }; roles.default.tags."fax-bridge" = { };
roles.default.machines."b4l" = { }; };
asterisk = {
module = {
name = "asterisk";
input = "self";
};
}; };
pocket-id = { pocket-id = {
@@ -64,55 +69,63 @@
name = "pocket-id"; name = "pocket-id";
input = "self"; input = "self";
}; };
roles.default.machines."b4l" = { }; roles.default.machines.b4l = { };
}; };
nextcloud = { nextcloud = {
module = { module = {
name = "nextcloud"; name = "nextcloud";
input = "self"; input = "self";
}; };
roles.default.machines.b4l = { };
}; };
stirling-pdf = { stirling-pdf = {
module = { module = {
name = "stirling-pdf"; name = "stirling-pdf";
input = "self"; input = "self";
}; };
roles.default.machines.b4l = { };
}; };
actual-budget = { actual-budget = {
module = { module = {
name = "actual-budget"; name = "actual-budget";
input = "self"; input = "self";
}; };
roles.default.machines.b4l = { };
}; };
victoriametrics = { victoriametrics = {
module = { module = {
name = "victoriametrics"; name = "victoriametrics";
input = "self"; input = "self";
}; };
roles.default.machines.b4l = { };
}; };
vikunja = { vikunja = {
module = { module = {
name = "vikunja"; name = "vikunja";
input = "self"; input = "self";
}; };
roles.default.machines.b4l = { };
}; };
grafana = { grafana = {
module = { module = {
name = "grafana"; name = "grafana";
input = "self"; input = "self";
}; };
roles.default.machines.b4l = { };
}; };
pingvin = { pingvin = {
module = { module = {
name = "pingvin"; name = "pingvin";
input = "self"; input = "self";
}; };
roles.default.machines.b4l = { };
}; };
paperless = { paperless = {
module = { module = {
name = "paperless"; name = "paperless";
input = "self"; input = "self";
}; };
roles.default.machines.b4l = { };
}; };
}; };
}; };

View File

@@ -1,7 +1,7 @@
{ inputs, config, ... }: { inputs, config, ... }:
{ {
imports = [ imports = [
# (inputs.import-tree ./services) (inputs.import-tree ./services)
]; ];
nixpkgs.hostPlatform = { nixpkgs.hostPlatform = {
system = "x86_64-linux"; system = "x86_64-linux";

View File

@@ -0,0 +1,69 @@
{ ... }:
{
_class = "clan.service";
manifest.name = "asterisk";
manifest.description = "Asterisk PBX server";
manifest.categories = [ "System" ];
roles.default = {
perInstance.nixosModule =
{
lib,
...
}:
{
services.asterisk = {
enable = lib.mkDefault true;
confFiles = {
# Dial plan config
"extensions.conf" = ''
exten => 1001,1,Dial(PJSIP/user1,20)
exten => 1002,1,Dial(PJSIP/user2,20)
exten => 100,1,Answer()
same => n,Wait(1)
same => n,Playback(hello-world)
same => n,Hangup()
'';
"pjsip.conf" = ''
[transport-udp]
type=transport
protocol=udp
bind=0.0.0.0,[::]
[endpoint_internal](!)
type=endpoint
context=from-internal
disallow=all
allow=ulaw
[auth_userpass](!)
type=auth
auth_type=userpass
[aor_dynamic](!)
type=aor
max_contacts=1
[user1](endpoint_internal)
auth=user1
aors=user1
[user1](auth_userpass)
password=user1
username=user1
[user1](aor_dynamic)
[user2](endpoint_internal)
auth=user2
aors=user2
[user2](auth_userpass)
password=user2
username=user2
[user2](aor_dynamic)
'';
};
};
};
};
}

View File

@@ -0,0 +1,18 @@
{ lib, ... }:
let
module = lib.modules.importApply ./default.nix { };
in
{
clan.modules = {
asterisk = module;
};
perSystem =
{ ... }:
{
clan.nixosTests.asterisk = {
imports = [ ./tests/vm/default.nix ];
clan.modules."@clan/asterisk" = module;
};
};
}

View File

@@ -0,0 +1,39 @@
{
pkgs,
...
}:
{
name = "service-asterisk";
clan = {
directory = ./.;
inventory = {
machines.server = { };
instances = {
asterisk-test = {
module.name = "@clan/asterisk";
module.input = "self";
roles.default.machines."server".settings = { };
};
};
};
};
nodes = {
server = {
services.asterisk = {
};
};
};
testScript = ''
start_all()
server.wait_for_unit("asterisk")
# Check that garage is running
server.succeed("systemctl status asterisk")
'';
}

View File

@@ -13,18 +13,16 @@
pkgs, pkgs,
... ...
}: }:
let
user = "yggdrasil";
in
{ {
clan.core.vars.generators.yggdrasil = { clan.core.vars.generators.yggdrasil = {
files = { files = {
yggdrasil-secret = { yggdrasil-secret = {
secret = true; secret = true;
owner = user;
group = user;
}; };
yggdrasil-ip.secret = false; yggdrasil-ip = {
secret = false;
};
yggdrasil-subnet.secret = false;
}; };
runtimeInputs = with pkgs; [ runtimeInputs = with pkgs; [
yggdrasil yggdrasil
@@ -32,13 +30,14 @@
]; ];
script = '' script = ''
yggdrasil -genconf -json | jq {PrivateKey} > $out/yggdrasil-secret yggdrasil -genconf -json | jq {PrivateKey} > $out/yggdrasil-secret
cat $out/yggdrasil-secret | yggdrasil -useconf -address > $out/yggdrasil-ip cat $out/yggdrasil-secret | yggdrasil -useconf -address | tr -d "\n" > $out/yggdrasil-ip
yggdrasil -useconffile $out/yggdrasil-secret -subnet | tr -d "\n" > $out/yggdrasil-subnet
''; '';
}; };
services.yggdrasil = { services.yggdrasil = {
enable = lib.mkDefault true; enable = lib.mkDefault true;
# configFile = config.clan.core.vars.generators.yggdrasil.files.yggdrasil-secret.path; configFile = config.clan.core.vars.generators.yggdrasil.files.yggdrasil-secret.path;
settings = { settings = {
Peers = [ Peers = [
# US Peers # US Peers

View File

@@ -1,4 +1,9 @@
{ lib, ... }: {
lib,
inputs,
self,
...
}:
let let
module = lib.modules.importApply ./default.nix { }; module = lib.modules.importApply ./default.nix { };
in in
@@ -9,10 +14,10 @@ in
perSystem = perSystem =
{ ... }: { ... }:
{ {
clan.nixosTests.yggdrasil = { # clan.nixosTests.yggdrasil = {
imports = [ ./tests/vm/default.nix ]; # imports = [ ./tests/vm/default.nix ];
#
clan.modules."@clan/yggdrasil" = module; # clan.modules."@clan/yggdrasil" = module;
}; # };
}; };
} }

View File

@@ -1,5 +1,4 @@
{ {
pkgs,
... ...
}: }:
{ {
@@ -34,8 +33,5 @@
# Check that garage is running # Check that garage is running
server.succeed("systemctl status yggdrasil") server.succeed("systemctl status yggdrasil")
''; '';
} }

View File

@@ -1 +1 @@
203:fd53:b905:ea17:519c:e415:709f:9ad8 200:ada9:8363:202b:faf:be:92ab:e46d

View File

@@ -1,46 +1,46 @@
{ {
"data": "ENC[AES256_GCM,data:MeSmw+LrbtuxGVQ33hgEwG3wUVa/AahAfPb/E2Qh3xxEkeSy5nUwgGLE2MxqiR37zViuin/CUqEH5fO5j7d7wOidn5k+mtKChAWIO65BUjcAWzhy9LyC9p90NT11xStkJQl+DJghl/f0hLuxPX5XQMvQzj3BjzKz03IKqMnZak25pWdKw+uoiuEItl5pz3srIPmofQr5VA==,iv:FNoJl/oIsBgbieB+B0ChmHszoj893B9fVypoJoWSEsk=,tag:CnhWE25rxT9qJIv6EtD0lQ==,type:str]", "data": "ENC[AES256_GCM,data:NSyWVWXMxoTR07uaLUYX6rHB17wsIB53FZHSsPxgDKJQ2wHBPFNaHSYh+BiSo+IrX+YcdUUqJFhEkjWDyG+vXaNZHrMbg/pzZ/cwTK/lPbYISkwtOhgr3zCA0H6DmQcHVmvR6fsdRDkFwl7pHtn1RMjEORQdbBINtscZfzZFcAF2L1t+WPFxgRKQDNT/9l3f4SoBcuakyg==,iv:/5JbEZ/vj/4I+eEElOY0cnhiYzqqPw2ZKLv2M/xkstw=,tag:23exDL72g56bP7ZbMsK4mA==,type:str]",
"sops": { "sops": {
"age": [ "age": [
{ {
"recipient": "age134vt63pjqpd0m7702fyn8vhdlzyj2deqc2q78sp9uw9052kxsgwq6d25ez", "recipient": "age134vt63pjqpd0m7702fyn8vhdlzyj2deqc2q78sp9uw9052kxsgwq6d25ez",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4UlJNcU5ueklqaXEwQmFJ\nNU5SQ1J3M1ViZWF2VWU0OFFNekN1UDF4T2xrCmtsR05uNzZUMmZZVUhNa2grZC9J\nWTZrZnJmdG5GQytTR0RxQktuVERwK28KLS0tIHM3YXV6SVhhbnYvM3YvbDl2WjVh\nRVp2VVFPbmllWWdNYkwvdWlyVE5FancKYNu7sW02LXN3QSb1QiJy54TNgG1ePGzl\nXxvo3fEkXN+NtfK+m5dBVza1ZeGeqa2y4nfv4+UeYhUF2tW0YVP2pg==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTYUFSZGpmd2tmdzB6bkp5\naytPd1RhVWFqeXF3SDZia3QzUmRNNGpzcjBFCnl3VElLdXFvV0tFSEFlV3hRMzFH\nbnBnWVZ2QkRHZ1BoTEZxdFg4QWE4ckkKLS0tIHhSMlBKakxmM0xyeUphKytLTmpk\nVW90V05hTUEyTVNMQzZHN2xhYTBZRGcK/nJOIM4m56TE7KKmn/QH89g053mmuKKG\nQYs/86SWdLPqwL35FstQg2xDIHSxkDcoMSGc+C+/xdOjWV3qLil/DQ==\n-----END AGE ENCRYPTED FILE-----\n"
}, },
{ {
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g", "recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBuZi95WFV4NXhxakZwT1Zw\nU2x3N0Y4VU9EK1NzYkkzQmhqZmYvaFVtT3dRCjdjN0FNV1p0bkdmWUY0WVY0VjN3\nYisyT095Z09RWW1GUkJuUEpFUFNSSkkKLS0tIDFKc1pTY2FacXQydnlKWENBTFJ1\nYWh3c1Z4c3Rha1l1Znh6Y0J2cmhvckkK6JtSrCRKEZozbeyyIIgvRfOo83eaQZSk\nXUmaiy3GxHD9hGOnxm5uIYK+Jdugl+OtQsvW+Kn0HXWSFIRK49IlFg==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYaU9idi9RZzhNeXhTb0pp\nUkZ3UVpsZlBka2kvZDBqcVhiRVdMNVFZbEJNCkhvdmFaVTBGcVAvalJPSlFuZHhi\nTE9qeTBMMjk2djhFUEdJbWZmTnN3WnMKLS0tIDludThMRDFDUHhCZVV3bUtVdVBZ\neGg4TzdqVjJPeUxYbnBWNURRSWRrMkEKBCACDZgHG5eVKcSdjHDITJZqgR7cHdHq\n9y8qS3YjaFZ37Ui6Lmb9vJEzDCEy3wEupBy4sbAX4okVapGPJ4fmwg==\n-----END AGE ENCRYPTED FILE-----\n"
}, },
{ {
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0", "recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGNncFVvQmQ0\nVWlSdjRPTjlvdU12WElPdG8zU3BnaEovQ0JpQXYralpaQ1UgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQp6Y21FdXdGV0dFR2d1WXBkdmxQaDZ6\nVm12bnQwUUlOYmlhOFJnaEk3Y2NVCi0tLSBWVlJiQ1lJcFlWR2tvemRQQUdwNlhM\nWlZEekhVdnVkSklIc1JYT1FUWlljCjku0ljp7akJdfVmY3t9KQ8VRnG4H4AINPKf\nN3C2NB7Y1gVuhaD8BRZX9chTVOlntpYcQxf0apDEvEG+CWfTa3o=\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIHJtSTZrY29X\nVTZNQm9XS3JsbEZCNDFUR1gxZXpObDdKRmQzUnRZMytOaFEgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpYN2xlOFVDZFlEOHhTMGZTVDNjdjdU\ndWlqd2ROamdmelp4UjAyVitnYVQwCi0tLSBZWmVWc2J4YVhLN3VyMTQwamtYRW5K\nWVovUEp3YlN5WjA1VE10MElWMllvCiLrLLekRkmSL5ekLIcFMoqgeEPXSrn15JDd\neKT9sbYtwhB7vt2L57fDRfaF/+7wNb9y6cv2oi+EdDoDXp/EyB4=\n-----END AGE ENCRYPTED FILE-----\n"
}, },
{ {
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3", "recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIEw4d1Z2T0Fn\nOWlDOE45b1pURTJHK1hiOHU4djlYdlQxbUpQR3BYbXFEWGcgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwpJcnN0UlRnVUphYmIwNjB0WU1XM09Z\nWHJLSWM5TGpJK2swMW5xcGMvRjRzCi0tLSB5eVZudDlOSGZabW1SZm1HRk9aUXV1\nYXJWVCtwWUVmN2JLRXRLd1I2OWs4Cp8xVbJ7VFbXbWyRzt3Lhw/gZ6pAbN2lpwlX\nfbE0BTYYTYD+w9LZfJsTLdUv2DP+9zugcePyJGxL0FJu40UkcPA=\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGxiRWYyUmwv\nVjlEdS9LOVV2K1NwdDFhYWM5RS9LcTZFNkNaMWViMkl5bmMgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwpUQkk4NGZPVWRTbG5MNk9CTStSUXFi\nbXlGemlJR2o2dTB6QUE2Q2JKSnE4Ci0tLSBzZjRva2NtNHlRamNvQWpoZW1UWFMr\nQVdNYXBpOFVhaEVxWm1KNFM4UHJvCnebMj6d/+e0vp00Gb02qJtUp2+mEpF/jUpD\n25cxeoSAWPAhfnBgE+oLzQqnQSq5dCxsWteE/1eOXC68koeT9FY=\n-----END AGE ENCRYPTED FILE-----\n"
}, },
{ {
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh", "recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIElMZWhxa3o4\nR20yR0RaQTlxTzE1d3ZMOXgvUjhXbEYzS0JiYUV2RDJ2aEEgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpUVVB4YnNRT1RpOWVMMGZmQkt6TnpR\nc1ZQRWFNTDVVN01xUlVTWUllVHRJCi0tLSBBVWNZa3NEbFRwVnhvbEdsbEVYRGRI\nd1RlTm9UbkJnODlkVGdhYmVPREc4CjI3dqGOKfw7Fr/f0dup0ZyJ4+IGKI2BUmIe\n4jj9+nGbzgRh+2KYlZh/UlOTbrEWrWsrXjZsLcFeYRadJc3Qmbg=\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIC9udm9sRDBJ\nNFM4dFA2ZDdJMlBXeXYvakM5RHVzNlcrRitzUHF6dnBvMVkgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpKZnBka3YzK0tUQ1hXTHVheE45Mzkw\ncE04aVVPQWM1eURmb1JaNlBwVlFFCi0tLSBHTlY4UW5FQXExK2cvMUJDZE9NaURy\nOFUxN0dvczJtWlVRc29QWlZ1bGg0CvUoAmTgDVSF7SPpqnkFhkCUn3N/Yr4Tzodw\nyCiD7U/KYFavEIxGIeg+ClhLF9o4fYq9kk8ld0vU8qUADXBdRDE=\n-----END AGE ENCRYPTED FILE-----\n"
}, },
{ {
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06", "recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCcFozN1ZpaXh3Q05UWnR6\ndk9NMDhyd0M5YS9OeE1KSTNRa0JOOHBWaDMwCmlieENKcFBCelJjR0lNWnpycHpu\ndy9lT3dmRzIyR1gvVDN2VThVQk1TNDgKLS0tIENtWnVVUHJ4K01tVHpVZWcrWFpP\nS0NXdVFLeVI1dTVTTk5kS21aMno1bHMKinIeyyUs9QL92/Egx5VUlXq0w3cEDCJk\nFh09GKnj3kNlFOKCP3grVBAX36TKAHLLKGHr+sz30G/VPkGUMNHKeg==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvTUEyUndkSk1iQTB3eUpp\nb0ljaXpwdi9QYmdNV1J3L0NhWElRVzlnNTFVCnZ6Q01ESWRNMHRxdWZKM0lYTXBX\ncko5VitPdWk0UHpwWDhGNzFVZk4yYzgKLS0tIGVRdG5rWkYwOFlCQWNIWFBRalVE\nMmFtOHBvbUw5YXAvMG93MjBrRjdmMGMKlopySr6HS6vfFHiRcwlJz/qy7jzyS1Nf\nw4lw7QnOrvOkoutiK3HiIia5N6V0jd0TV7nJqIu7tz/zYksbzps7QQ==\n-----END AGE ENCRYPTED FILE-----\n"
}, },
{ {
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx", "recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMMnJZTFFYUEtvWjRkVFg2\nVW1RWVlOa01xbnhGVlFJSmVyKzhWYjF3THc0CmpXK0NuZ21BR0p5OWt0TVBrREc3\nckRqdmVxU1JLMUlqaFViTnNBSEwwcFEKLS0tIFVJSlNFK1Ayd2dTTlZncEViR2JC\nNm0yM0JZMWpKYXc2RS9QMGtKWXJXOG8K1UrprHHWw4SsWG9/8sD5aDKGmAIrorPL\nZPzhlV3WLDw2YvZPVahPDgNEsWVitL3QVzEnxbQDQeLe9Dp0lTFc6Q==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzVTZNTUM5UXowWTlPRDFW\nVUJTbStFcldHbTVDUVRJYjNiaklWRmowTHdnCkJNbUtmdk1jS3kyaVNWVFlOTytX\nKzBwTmxoZi9NdmJuRFNMNTUyRThNUDQKLS0tIENSMHZ5TGwxQ0xuZkZFQ3RJdGEv\nSXIvYW9WY243cTdzZEtra292K0JFVlEKMWhG/7R00uqLb5l5lU3p9Vt4pre6J85r\nIFWtg1G/54KaFt8aiWcD5RUSSARGZ3r4qVtO+9eWP+gA4DUpSNkWNw==\n-----END AGE ENCRYPTED FILE-----\n"
}, },
{ {
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8", "recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKRWJjdytWNkYwNUh2UlZN\nTnVod0N2SXBZbGZKa2pwejZneW9FdFliOTJ3ClNoa05JMTdOSXBNWjc4OUsvWUlM\nbCswa3RkWmZ1MU0xRVpjQy9sNkpqNmsKLS0tIFNhTjRDV3B3S2d3ZmhhNnNmZkdJ\nMGw3TzBaMzc2ekpuaTFzZGQzaTRlc3cKWfPSUoBVO4+stvpHPuXOcbg5mY+JWycc\npbxEAnDep9KiI5aqWao7fQ74SHzVQrMFUPITo9ARgbIhUqKrdrA+yA==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5WVlWMHJNbERKUGx0elgx\nUEF1Sms4VCtNRVRraWdvUkFEaTRzYTJ0TTFZCnl0aTIxR1QyQ1VsU0RFNnN1NzBr\neTVQbHJHQjAvYklFVkZkUDRXRGxvSkEKLS0tIHdINHFyQVE2V1V1R1ZxWEFuMm5x\nUVRjSVp6NStGSkQyQ05JVHlXejBEbWsKBlMvtw9MCReN1eSHKMwwsWaEF8kq1Pns\nLNSYEeWABZ5bbPB1xBvmIIlVFThJqgy5mBVJLzQMUwqb0IvixAgFxQ==\n-----END AGE ENCRYPTED FILE-----\n"
}, },
{ {
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl", "recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl",
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUMVkwak1tenhnRmZzd3pD\nMmxzdytMMmhnZzdZQko4Z3JVTVhqVVhpY1RBCjVzam9RM0U1TXNzZlhVcXovQ3My\nM2lDRm1CMmxxOGtvUWQ5M0dVVERsK3MKLS0tIDFUYndidDM4WS9DNXJhZVdtOGRw\nQ2R4TERROE01TUhRb2ZkUnRUV0lrdGsKP/BVd0OoB6zU/Pcyk3eI9877EmlPaqPJ\nd5LK9zbu9TX8QJP78ZrC90y1SZW3p4YqgHaLYBDq6oXPnqjk9DnLNQ==\n-----END AGE ENCRYPTED FILE-----\n" "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaSmNiVWlRSy91Mm5qSWJ5\nd2Z4WnEydE9ncWwzUVVCMDVoek1wRTFyOFJjCkZjOVZrVHY5d3FKRmMvaXJQWUtU\neGpSZkZITkJaOERkdWZpelA5dTJQOEkKLS0tIEtZOUNJSytYTFpSTWNuY3JjcnJv\nbFZpTXQxc29Pd1FIN0xrcEJYc3ZlV0kKyO/PLn2WNdVtTqM8cG1XFqV/5YdSqPAY\nvroStGVsLliV7W4T2MAmACeyjoMde9/gVosKfGc6awE+Bi2BUxrqpw==\n-----END AGE ENCRYPTED FILE-----\n"
} }
], ],
"lastmodified": "2025-10-17T04:29:35Z", "lastmodified": "2025-10-17T07:22:09Z",
"mac": "ENC[AES256_GCM,data:c8+A/HjyGgxm6wGQXCKG3LDY4ELs44Ct7TEm69YHXgloU3D2hz2PTBXHguLqr0NHW5o0HhrFodH5+3+W0WWssIrsMp8w3IW9r2u1+c3Xn2tGkkZ/TS93KNT1wPfiBlF5MVREm1MsZC2kKGR4QHqxcH+1hcRto6dHTAcEz9uSNWQ=,iv:sq6BLJ4eXTbtprhet+XwbZwohRcRMRUe14IiyR+2+tw=,tag:NxkOC9CT7zWtWJDbheldSg==,type:str]", "mac": "ENC[AES256_GCM,data:OxeLto6aeiTOX8OffRsQzxyluSdva7y3j4j67c+MI1ost+QCZyGAW/5pr2mMaoU2XrwYqUjZTKBhJ9p1FY6C29/EhyzrNhGUTjC5iTcXO1lbLUTgoSDN8KPmVea97sTa+easVHoSgnPLxisG2yCALv95k9/eQ7vF9FRjBBNTaIU=,iv:FQeojhtnKOlqWuQNJo1TmI/PhjYbgwtvK24gZMjbbpM=,tag:Vwum5bSSZRNNDQ3Yudw4hQ==,type:str]",
"unencrypted_suffix": "_unencrypted", "unencrypted_suffix": "_unencrypted",
"version": "3.10.2" "version": "3.10.2"
} }