Compare commits
21
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f58da21d15 | ||
|
|
f398daacb5 | ||
|
|
0906700ad6 | ||
|
|
b9302e6192 | ||
|
|
5cb262857e | ||
|
|
47e536540f | ||
|
|
282a8f8287 | ||
|
|
a9254c424d | ||
|
|
5961254878 | ||
|
|
9403ddbf08 | ||
|
|
37ff958560 | ||
|
|
efa4b39782 | ||
|
|
e2341b7c79 | ||
|
|
dc1c94796a | ||
|
|
5b07b98f40 | ||
|
|
88ac5cbd83 | ||
|
|
969c006f97 | ||
|
|
1c7d0bb388 | ||
|
|
84c3bd92bb | ||
|
|
3340731c8d | ||
|
|
cd979fb771 |
Generated
+39
-37
@@ -135,11 +135,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781517972,
|
"lastModified": 1788346295,
|
||||||
"narHash": "sha256-G8bIXFqifs/y62GNPwg20Ksf71raYwzmyN99gf1tXak=",
|
"narHash": "sha256-k9Ol++FFhQuPya6ZNQwVhqZZkMvE1ytLtbdrbH5zkrI=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "7fc62d0c25c7a97d7027a9c248e21c97c9b3acc1",
|
"rev": "b15797faeca7494a7fe5fde2691d93affa3d3e37",
|
||||||
"revCount": 14604,
|
"revCount": 15239,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.clan.lol/clan/clan-core"
|
"url": "https://git.clan.lol/clan/clan-core"
|
||||||
},
|
},
|
||||||
@@ -164,11 +164,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1778718524,
|
"lastModified": 1788308203,
|
||||||
"narHash": "sha256-pXLoI6Ax0EnUK6r34UM1vibVC7CfTu6j72R2692ZzPs=",
|
"narHash": "sha256-dCOb9YIJv9I2udjqukvjlGiTyOvGnO7zVbot0PxjBGk=",
|
||||||
"rev": "12c552ad547d87254f33f33bddd1a2cdbeac754d",
|
"rev": "644c49bbf121b3e256bc83ce10b5d97813d9181d",
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
"url": "https://git.clan.lol/api/v1/repos/clan/data-mesher/archive/12c552ad547d87254f33f33bddd1a2cdbeac754d.tar.gz"
|
"url": "https://git.clan.lol/api/v1/repos/clan/data-mesher/archive/644c49bbf121b3e256bc83ce10b5d97813d9181d.tar.gz"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"type": "tarball",
|
"type": "tarball",
|
||||||
@@ -357,11 +357,11 @@
|
|||||||
"std": "std"
|
"std": "std"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1782964989,
|
"lastModified": 1787631179,
|
||||||
"narHash": "sha256-pU2Gye+1f+nvFleBTgXdeQfrQnKaJEuO2LT7PnsJ1p0=",
|
"narHash": "sha256-l+Zt5XNTD0f0ChkzDJURfQlFAgANIMrGYrk51SZEJKU=",
|
||||||
"owner": "kurogeek",
|
"owner": "kurogeek",
|
||||||
"repo": "frappix",
|
"repo": "frappix",
|
||||||
"rev": "ac5e2814fc1aca188080bf6b50504cd329790e56",
|
"rev": "fcb797886ae753b26a6e4415a7f2c19ba6adcf3b",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -416,11 +416,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781557312,
|
"lastModified": 1788355065,
|
||||||
"narHash": "sha256-QOIRYSUFSq7L5mY3dZymaVhcnne3tPgoR9riB0WocjA=",
|
"narHash": "sha256-gAz5oTI7ur34CfuakQduiQd/2ZhO62Bn2XXg08nZYYQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "c03e4752899e55705dfa63979abd885c582a5c48",
|
"rev": "d9d750e4fc11c10cab2da677bdd31e427f3a3a71",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -547,11 +547,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781242433,
|
"lastModified": 1786845137,
|
||||||
"narHash": "sha256-bchLZZ3sRn740zyvD2icZSnNoTaanN0nw7l6fjVXO+E=",
|
"narHash": "sha256-oQFip+v0luP8NIxJzmiW4Wu8bILsbFWom5l0zonl8hQ=",
|
||||||
"owner": "nix-darwin",
|
"owner": "nix-darwin",
|
||||||
"repo": "nix-darwin",
|
"repo": "nix-darwin",
|
||||||
"rev": "aabb2037edfc0f210723b72cd5f528aab5dd3f0b",
|
"rev": "4cff07de74b50e64bdd68cd4e722ab5b6b35ee48",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -667,23 +667,26 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixos-hardware": {
|
"nixos-images": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixos-stable": [
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"nixos-unstable": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1784723954,
|
"lastModified": 1784802994,
|
||||||
"narHash": "sha256-1CfD8ZUjCkTgjsneLZ/lxCHhgDfqxxE7/GX0MmsgiqA=",
|
"narHash": "sha256-4PcD0Ibzdkh85G+70w5dLlR9YgQ2bmNIjiPPMSzO57w=",
|
||||||
"owner": "NixOS",
|
"owner": "nix-community",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-images",
|
||||||
"rev": "a017f5b72210026af5b3ac5949f08d94380a6fbd",
|
"rev": "6ece16b0c97986fe085122e796044add4cc3ff64",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"owner": "nix-community",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-images",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -704,11 +707,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs_2": {
|
"nixpkgs_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1781359544,
|
"lastModified": 1788775869,
|
||||||
"narHash": "sha256-iUuzKQcyXvopYDDzFpMK5eQKP3WIJExYny2kJtbgUcE=",
|
"narHash": "sha256-JRf1lSypbvKj6AzUZHpUA6YC1DirVuitZWOnRwcm+Ww=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "9f11f828c213641c2369a9f1fa31fe31557e3156",
|
"rev": "58973d74f1893afe13f5902919803a0e99da0ca4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -749,16 +752,15 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1708640854,
|
"lastModified": 1787579760,
|
||||||
"narHash": "sha256-EpcAmvIS4ErqhXtVEfd2GPpU/E/s8CCRSfYzk6FZ/fY=",
|
"narHash": "sha256-WGhIEINOICx7bhV3WrSz0QTzv8uzaaa9AXvD1clIWpc=",
|
||||||
"owner": "paisano-nix",
|
"owner": "paisano-nix",
|
||||||
"repo": "core",
|
"repo": "core",
|
||||||
"rev": "adcf742bc9463c08764ca9e6955bd5e7dcf3a3fe",
|
"rev": "88739c84d308876714322eb9844ede6597c1a580",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "paisano-nix",
|
"owner": "paisano-nix",
|
||||||
"ref": "0.2.0",
|
|
||||||
"repo": "core",
|
"repo": "core",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
@@ -813,7 +815,7 @@
|
|||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"import-tree": "import-tree",
|
"import-tree": "import-tree",
|
||||||
"liminix": "liminix",
|
"liminix": "liminix",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-images": "nixos-images",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"plasma-manager": "plasma-manager",
|
"plasma-manager": "plasma-manager",
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix"
|
||||||
@@ -827,11 +829,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1780547341,
|
"lastModified": 1788337237,
|
||||||
"narHash": "sha256-Gq8KNx5A7hBB3uGJaj6eQfLDIz5YdLu92gqBcvHvoUo=",
|
"narHash": "sha256-gkSH8VUtCo6hnysNmb9DbTuDepH2t5pv+QWjP75xKAk=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "9ed65852b6257fbeae4355bc24ecfea307ca759a",
|
"rev": "fbf759290e0cb0a98dfc813a4eb7d53ad1dacb57",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -45,9 +45,11 @@
|
|||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.devshell.follows = "devshell";
|
inputs.devshell.follows = "devshell";
|
||||||
};
|
};
|
||||||
nixos-hardware = {
|
|
||||||
url = "github:NixOS/nixos-hardware";
|
nixos-images = {
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
url = "github:nix-community/nixos-images";
|
||||||
|
inputs.nixos-unstable.follows = "nixpkgs";
|
||||||
|
inputs.nixos-stable.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
outputs =
|
outputs =
|
||||||
@@ -87,6 +89,20 @@
|
|||||||
packages.think = pkgs.think-gtcm;
|
packages.think = pkgs.think-gtcm;
|
||||||
packages.think-be = pkgs.think-backend-gtcm;
|
packages.think-be = pkgs.think-backend-gtcm;
|
||||||
packages.file-uploader = pkgs.gtcm-file-uploader;
|
packages.file-uploader = pkgs.gtcm-file-uploader;
|
||||||
|
packages.installer =
|
||||||
|
(pkgs.nixos [
|
||||||
|
inputs.nixos-images.nixosModules.image-installer
|
||||||
|
{
|
||||||
|
users.users.root.openssh.authorizedKeys.keys = [
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAB/raxJR8gASmquP63weHelbi+da2WBJR1DgzHPNz/f"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDuhpzDHBPvn8nv8RH1MRomDOaXyP4GziQm7r3MZ1Syk"
|
||||||
|
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEcZ/p1Ofa9liwIzPWzNtONhJ7+FUWd2lCz33r81t8+w kurogeek@kurogeek"
|
||||||
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIOJDRQfb1+7VK5tOe8W40iryfBWYRO6Uf1r2viDjmsJtAAAABHNzaDo="
|
||||||
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIDgsWq+G/tcr6eUQYT7+sJeBtRmOMabgFiIgIV44XNc6AAAABHNzaDo="
|
||||||
|
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIJMi3TAuwDtIeO4MsORlBZ31HzaV5bji1fFBPcC9/tWuAAAABHNzaDo="
|
||||||
|
];
|
||||||
|
}
|
||||||
|
]).config.system.build.isoImage;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
+115
-13
@@ -36,6 +36,7 @@
|
|||||||
"cursa"
|
"cursa"
|
||||||
"rigel"
|
"rigel"
|
||||||
"vega"
|
"vega"
|
||||||
|
"buna"
|
||||||
];
|
];
|
||||||
|
|
||||||
dm-bootstrapper = [
|
dm-bootstrapper = [
|
||||||
@@ -45,10 +46,65 @@
|
|||||||
"bosona"
|
"bosona"
|
||||||
"canopus"
|
"canopus"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
dm-pull-deploy = [
|
||||||
|
"rana"
|
||||||
|
"rigel"
|
||||||
|
"vega"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
instances = {
|
instances = {
|
||||||
|
|
||||||
|
borgbackup = {
|
||||||
|
module = {
|
||||||
|
name = "borgbackup";
|
||||||
|
input = "clan-core";
|
||||||
|
};
|
||||||
|
roles.client.machines."cursa".settings.destinations = {
|
||||||
|
alex = {
|
||||||
|
repo = "ssh://borg@10.0.10.225:2222/backup/cursa/backup";
|
||||||
|
rsh = "ssh -i /run/secrets/vars/borgbackup/borgbackup.ssh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
roles.client.machines."hadar".settings.destinations = {
|
||||||
|
alex = {
|
||||||
|
repo = "ssh://borg@10.0.10.225:2222/backup/hadar/backup";
|
||||||
|
rsh = "ssh -i /run/secrets/vars/borgbackup/borgbackup.ssh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
roles.client.machines."procyon".settings.destinations = {
|
||||||
|
alex = {
|
||||||
|
repo = "ssh://borg@10.0.10.225:2222/backup/procyon/backup";
|
||||||
|
rsh = "ssh -i /run/secrets/vars/borgbackup/borgbackup.ssh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
roles.client.machines."bosona".settings.destinations = {
|
||||||
|
alex = {
|
||||||
|
repo = "ssh://borg@10.0.10.225:2222/backup/bosona/backup";
|
||||||
|
rsh = "ssh -i /run/secrets/vars/borgbackup/borgbackup.ssh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
roles.client.machines."canopus".settings.destinations = {
|
||||||
|
alex = {
|
||||||
|
repo = "ssh://borg@10.0.10.225:2222/backup/canopus/backup";
|
||||||
|
rsh = "ssh -i /run/secrets/vars/borgbackup/borgbackup.ssh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
roles.client.machines."deneb".settings.destinations = {
|
||||||
|
alex = {
|
||||||
|
repo = "ssh://borg@10.0.10.225:2222/backup/deneb/backup";
|
||||||
|
rsh = "ssh -i /run/secrets/vars/borgbackup/borgbackup.ssh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
roles.client.machines."alasia".settings.destinations = {
|
||||||
|
alex = {
|
||||||
|
repo = "ssh://borg@10.0.10.225:2222/backup/alasia/backup";
|
||||||
|
rsh = "ssh -i /run/secrets/vars/borgbackup/borgbackup.ssh";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
data-mesher = {
|
data-mesher = {
|
||||||
module = {
|
module = {
|
||||||
name = "data-mesher";
|
name = "data-mesher";
|
||||||
@@ -132,7 +188,7 @@
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
roles.default.tags = [ "all" ];
|
roles.default.tags = [ "dm-pull-deploy" ];
|
||||||
roles.default.settings.action = "switch";
|
roles.default.settings.action = "switch";
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -264,13 +320,28 @@
|
|||||||
};
|
};
|
||||||
roles.server.machines."alasia".settings = {
|
roles.server.machines."alasia".settings = {
|
||||||
public_url = "tailvpn.public.newedge.house";
|
public_url = "tailvpn.public.newedge.house";
|
||||||
base_domain = "tailnet.newedge.house";
|
|
||||||
advertise_routes = [ "10.0.10.0/24" ];
|
advertise_routes = [ "10.0.10.0/24" ];
|
||||||
nameservers = [
|
dns = {
|
||||||
"10.0.10.82"
|
magic_dns = true;
|
||||||
"1.1.1.1"
|
base_domain = "tailvpn.newedge.house";
|
||||||
"8.8.8.8"
|
nameservers = [
|
||||||
];
|
"10.0.10.82"
|
||||||
|
"1.1.1.1"
|
||||||
|
"8.8.8.8"
|
||||||
|
];
|
||||||
|
extra_records = [
|
||||||
|
{
|
||||||
|
name = "poyerp.newedge.house";
|
||||||
|
type = "A";
|
||||||
|
value = "10.0.10.1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "glomerp.newedge.house";
|
||||||
|
type = "A";
|
||||||
|
value = "10.0.10.1";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -440,16 +511,47 @@
|
|||||||
exporters.smartctl = { };
|
exporters.smartctl = { };
|
||||||
exporters.zfs = { };
|
exporters.zfs = { };
|
||||||
};
|
};
|
||||||
|
buna.settings = {
|
||||||
|
exporters.smartctl = { };
|
||||||
|
};
|
||||||
|
mirach.settings = {
|
||||||
|
exporters.smartctl = { };
|
||||||
|
};
|
||||||
|
almach.settings = {
|
||||||
|
exporters.smartctl = { };
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
wifi = {
|
wifi =
|
||||||
module = {
|
let
|
||||||
name = "wifi";
|
networks = {
|
||||||
input = "clan-community";
|
home = { };
|
||||||
|
glom = { };
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
module.name = "wifi";
|
||||||
|
module.input = "clan-community";
|
||||||
|
|
||||||
|
roles.default = {
|
||||||
|
machines."buna".settings = { inherit networks; };
|
||||||
|
|
||||||
|
extraModules = [
|
||||||
|
(
|
||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
# profile names match the network attr names above;
|
||||||
|
# 0 = retry forever for both (defaults: 4 autoconnect attempts, 3 auth attempts)
|
||||||
|
networking.networkmanager.ensureProfiles.profiles = lib.mapAttrs (_: _: {
|
||||||
|
connection.autoconnect-retries = 0;
|
||||||
|
connection.auth-retries = 0;
|
||||||
|
}) networks;
|
||||||
|
}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
roles.default.machines."anser".settings.networks.home = { };
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@
|
|||||||
"installedAt": 1765277591
|
"installedAt": 1765277591
|
||||||
},
|
},
|
||||||
"buna": {
|
"buna": {
|
||||||
"installedAt": 1765343708
|
"installedAt": 1787123510
|
||||||
},
|
},
|
||||||
"rana": {
|
"rana": {
|
||||||
"installedAt": 1773134236
|
"installedAt": 1773134236
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
nixpkgs.hostPlatform = {
|
|
||||||
system = "aarch64-linux";
|
|
||||||
};
|
|
||||||
clan.core.sops.defaultGroups = [ "admins" ];
|
|
||||||
|
|
||||||
clan.core.settings.name = "anser";
|
|
||||||
clan.core.settings.machine.description = "";
|
|
||||||
|
|
||||||
# imports = [ inputs.nixos-hardware ];
|
|
||||||
boot.loader.grub.enable = false;
|
|
||||||
boot.loader.generic-extlinux-compatible.enable = true;
|
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true;
|
|
||||||
|
|
||||||
boot.kernelParams = [
|
|
||||||
"console=ttyS2,1500000n8"
|
|
||||||
"loglevel=4"
|
|
||||||
];
|
|
||||||
|
|
||||||
image.modules.sd-card.sdImage.postBuildCommands = ''
|
|
||||||
dd if=${pkgs.ubootRadxaZero3W}/u-boot-rockchip.bin of=$img conv=fsync,notrunc bs=512 seek=64
|
|
||||||
'';
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
{ inputs, ... }: {
|
|
||||||
disko = {
|
|
||||||
imageBuilder = {
|
|
||||||
# Avoid double emulation to significantly speed up image building process.
|
|
||||||
# Update the system according to your host system.
|
|
||||||
# See https://github.com/nix-community/disko/issues/856
|
|
||||||
qemu =
|
|
||||||
inputs.nixpkgs.legacyPackages.x86_64-linux.qemu
|
|
||||||
+ "/bin/qemu-system-aarch64 -M virt -cpu cortex-a57";
|
|
||||||
};
|
|
||||||
# Default image size is 2G for a small basic CLI system.
|
|
||||||
# devices.disk.main.imageSize = "2G";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+728
-606
File diff suppressed because it is too large
Load Diff
@@ -9,7 +9,15 @@
|
|||||||
];
|
];
|
||||||
clan = {
|
clan = {
|
||||||
meta.name = "NewEdgeClan";
|
meta.name = "NewEdgeClan";
|
||||||
machines = { };
|
machines = {
|
||||||
|
cursa = { ... }: { clan.core.state."vars".folders = [ "/var/lib" ]; };
|
||||||
|
hadar = { ... }: { clan.core.state."vars".folders = [ "/var/lib" ]; };
|
||||||
|
procyon = { ... }: { clan.core.state."vars".folders = [ "/var/lib" ]; };
|
||||||
|
bosona = { ... }: { clan.core.state."vars".folders = [ "/var/lib" ]; };
|
||||||
|
canopus = { ... }: { clan.core.state."vars".folders = [ "/var/lib" ]; };
|
||||||
|
deneb = { ... }: { clan.core.state."vars".folders = [ "/var/lib" ]; };
|
||||||
|
alasia = { ... }: { clan.core.state."vars".folders = [ "/var/lib" ]; };
|
||||||
|
};
|
||||||
secrets.age.plugins = [
|
secrets.age.plugins = [
|
||||||
"age-plugin-yubikey"
|
"age-plugin-yubikey"
|
||||||
"age-plugin-fido2-hmac"
|
"age-plugin-fido2-hmac"
|
||||||
|
|||||||
@@ -25,8 +25,11 @@ in
|
|||||||
inputs.self.overlays.frappixLibsOverlay
|
inputs.self.overlays.frappixLibsOverlay
|
||||||
inputs.self.overlays.frappixPythonOverlay
|
inputs.self.overlays.frappixPythonOverlay
|
||||||
inputs.self.overlays.frappixToolsOverlay
|
inputs.self.overlays.frappixToolsOverlay
|
||||||
|
inputs.self.overlays.frappixAppsOverlay
|
||||||
];
|
];
|
||||||
|
|
||||||
|
fonts.packages = [ pkgs.tlwg ];
|
||||||
|
|
||||||
clan.core.vars.generators.frappix = {
|
clan.core.vars.generators.frappix = {
|
||||||
files = {
|
files = {
|
||||||
sslCertificate.secret = false;
|
sslCertificate.secret = false;
|
||||||
@@ -57,6 +60,7 @@ in
|
|||||||
pkgs.frappix.hrms
|
pkgs.frappix.hrms
|
||||||
pkgs.frappix.crm
|
pkgs.frappix.crm
|
||||||
pkgs.frappix.posprinter
|
pkgs.frappix.posprinter
|
||||||
|
pkgs.frappix.default_thai_company
|
||||||
];
|
];
|
||||||
sites = {
|
sites = {
|
||||||
"${sitename}" = {
|
"${sitename}" = {
|
||||||
@@ -67,6 +71,7 @@ in
|
|||||||
"hrms"
|
"hrms"
|
||||||
"crm"
|
"crm"
|
||||||
"posprinter"
|
"posprinter"
|
||||||
|
"default_thai_company"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,8 +5,6 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
self.nixosModules.common
|
|
||||||
|
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -23,15 +21,12 @@
|
|||||||
nixpkgs.hostPlatform = {
|
nixpkgs.hostPlatform = {
|
||||||
system = "aarch64-linux";
|
system = "aarch64-linux";
|
||||||
};
|
};
|
||||||
|
nixpkgs.buildPlatform = {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
};
|
||||||
|
|
||||||
system.stateVersion = "25.11";
|
system.stateVersion = "25.11";
|
||||||
|
|
||||||
services.journald.extraConfig = ''
|
|
||||||
Storage=volatile
|
|
||||||
RuntimeMaxUse=30M
|
|
||||||
RuntimeMaxFileSize=10M
|
|
||||||
'';
|
|
||||||
|
|
||||||
services.udisks2.enable = false;
|
services.udisks2.enable = false;
|
||||||
|
|
||||||
nix.settings.log-lines = 25;
|
nix.settings.log-lines = 25;
|
||||||
@@ -54,6 +49,25 @@
|
|||||||
"sd_mod"
|
"sd_mod"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
consoleLogLevel = 0;
|
||||||
|
kernel.sysctl = {
|
||||||
|
"fs.suid_dumpable" = 0;
|
||||||
|
"kernel.core_pattern" = "/dev/null";
|
||||||
|
};
|
||||||
|
tmp = {
|
||||||
|
useTmpfs = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.journald.extraConfig = ''
|
||||||
|
Storage=none
|
||||||
|
'';
|
||||||
|
|
||||||
|
systemd = {
|
||||||
|
coredump.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
fileSystems."/mnt/hdd" = {
|
fileSystems."/mnt/hdd" = {
|
||||||
device = "zdata/nas";
|
device = "zdata/nas";
|
||||||
fsType = "zfs";
|
fsType = "zfs";
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
# Apple Network
|
# Apple Network
|
||||||
|
|
||||||
This service allows atalkd instances to connect to each other over vxlan over Yggdrasil. We need to use vxlan due to the support of broadcasting it provides. The service will form a network of star-topology vxlan using the underlying Yggdrasil network. With this vxlan network, we can have a private Apple Talk network over the internet.
|
This service allows atalkd instances to connect to each other over vxlan over Yggdrasil. We need to use vxlan due to the support of broadcasting it provides. The service will form a network of star-topology vxlan using the underlying Yggdrasil network. With this vxlan network, we can have a private Apple Talk network over the internet.
|
||||||
|
|
||||||
|
|||||||
@@ -19,12 +19,6 @@
|
|||||||
description = "Public URL for accessing the instance";
|
description = "Public URL for accessing the instance";
|
||||||
};
|
};
|
||||||
|
|
||||||
base_domain = lib.mkOption {
|
|
||||||
type = with lib.types; str;
|
|
||||||
default = "";
|
|
||||||
description = "Defines the base domain to create the hostnames for MagicDNS in Headscale. `base_domain` must be a FQDN, without the trailing dot. The FQDN of the hosts will be `hostname.base_domain (e.g. myhost.tailnet.example.com)";
|
|
||||||
};
|
|
||||||
|
|
||||||
advertise_routes = lib.mkOption {
|
advertise_routes = lib.mkOption {
|
||||||
type = with lib.types; listOf str;
|
type = with lib.types; listOf str;
|
||||||
default = [ ];
|
default = [ ];
|
||||||
@@ -32,14 +26,57 @@
|
|||||||
example = [ "192.168.1.0/24" ];
|
example = [ "192.168.1.0/24" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
nameservers = lib.mkOption {
|
dns = {
|
||||||
type = with lib.types; listOf str;
|
base_domain = lib.mkOption {
|
||||||
default = [
|
type = with lib.types; str;
|
||||||
"1.1.1.1"
|
default = "";
|
||||||
"8.8.8.8"
|
description = "Defines the base domain to create the hostnames for MagicDNS in Headscale. `base_domain` must be a FQDN, without the trailing dot. The FQDN of the hosts will be `hostname.base_domain (e.g. myhost.tailnet.example.com)";
|
||||||
];
|
};
|
||||||
description = "List of nameservers to pass to Tailscale clients";
|
|
||||||
example = [ "10.0.10.1" ];
|
nameservers = lib.mkOption {
|
||||||
|
type = with lib.types; listOf str;
|
||||||
|
default = [
|
||||||
|
"1.1.1.1"
|
||||||
|
"8.8.8.8"
|
||||||
|
];
|
||||||
|
description = "List of nameservers to pass to Tailscale clients";
|
||||||
|
example = [ "10.0.10.1" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
magic_dns = lib.mkOption {
|
||||||
|
type = with lib.types; bool;
|
||||||
|
default = true;
|
||||||
|
description = "Whether to enable MagicDNS";
|
||||||
|
};
|
||||||
|
|
||||||
|
extra_records = lib.mkOption {
|
||||||
|
type =
|
||||||
|
with lib.types;
|
||||||
|
nullOr (
|
||||||
|
listOf (submodule {
|
||||||
|
options = {
|
||||||
|
name = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "DNS record name.";
|
||||||
|
example = "grafana.tailnet.example.com";
|
||||||
|
};
|
||||||
|
type = lib.mkOption {
|
||||||
|
type = lib.types.enum [
|
||||||
|
"A"
|
||||||
|
"AAAA"
|
||||||
|
];
|
||||||
|
description = "DNS record type.";
|
||||||
|
example = "A";
|
||||||
|
};
|
||||||
|
value = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "DNS record value (IP address).";
|
||||||
|
example = "100.64.0.3";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
);
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -170,10 +207,11 @@
|
|||||||
settings.server_url = "https://${settings.public_url}";
|
settings.server_url = "https://${settings.public_url}";
|
||||||
|
|
||||||
settings.dns = {
|
settings.dns = {
|
||||||
base_domain = settings.base_domain;
|
base_domain = settings.dns.base_domain;
|
||||||
override_local_dns = true;
|
override_local_dns = true;
|
||||||
nameservers.global = settings.nameservers;
|
nameservers.global = settings.dns.nameservers;
|
||||||
magic_dns = false;
|
magic_dns = settings.dns.magic_dns;
|
||||||
|
extra_records = settings.dns.extra_records;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -116,6 +116,11 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
programs.chromium.package = pkgs.brave;
|
programs.chromium.package = pkgs.brave;
|
||||||
|
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
programs.home-manager.enable = true;
|
||||||
services.syncthing.tray.enable = osConfig.services.syncthing.enable;
|
services.syncthing.tray.enable = osConfig.services.syncthing.enable;
|
||||||
programs.plasma.enable = true;
|
programs.plasma.enable = true;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
homeDirectory = lib.mkForce "/home/${username}";
|
homeDirectory = lib.mkForce "/home/${username}";
|
||||||
stateVersion = osConfig.system.stateVersion;
|
stateVersion = osConfig.system.stateVersion;
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
libreoffice-fresh
|
libreoffice-stable
|
||||||
element-desktop
|
element-desktop
|
||||||
signal-desktop
|
signal-desktop
|
||||||
brave
|
brave
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
boot.supportedFilesystems = {
|
||||||
|
ntfs = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
A peer to peer phone relay network built on top of yggdrasil.
|
||||||
|
|
||||||
|
Successor of the `phonebox` service with a global, decentralized number
|
||||||
|
directory. Every box is reachable from any yggdrasil node running this
|
||||||
|
service, not only from members of the same clan. A machine runs either
|
||||||
|
`phonebox` or `phonebox-global`, not both (they share the asterisk setup).
|
||||||
|
Regenerate vars with `clan vars generate --generator phonebox-global`.
|
||||||
|
|
||||||
|
## Numbers
|
||||||
|
|
||||||
|
Each box gets a random 6 digit number (100000-999999) when its vars are
|
||||||
|
generated. The number is signed with the box's yggdrasil private key, so a
|
||||||
|
number is cryptographically bound to the yggdrasil address it belongs to;
|
||||||
|
nobody can claim a number for an address they do not own. Regenerate the
|
||||||
|
`phonebox` vars to get a new number.
|
||||||
|
|
||||||
|
Dialing from a phone plugged into the ATA:
|
||||||
|
|
||||||
|
| dialed | reaches |
|
||||||
|
| ------------- | ------------------------------------------ |
|
||||||
|
| `NNNNNN` | the phone on box `NNNNNN` (line `00`) |
|
||||||
|
| `NNNNNNXX` | line `XX` on box `NNNNNN` |
|
||||||
|
| `00`, `01`... | local lines on this box |
|
||||||
|
| `888` | fax of the current number directory |
|
||||||
|
| `000` | fax echo test |
|
||||||
|
| `999` | hello world |
|
||||||
|
|
||||||
|
Caller ID on the callee is the caller's box number followed by its line, so
|
||||||
|
calling it back works.
|
||||||
|
|
||||||
|
## Directory
|
||||||
|
|
||||||
|
There is no central registry. Each box runs a serf agent on yggdrasil port
|
||||||
|
7946 that gossips its signed number record (`number`, `key`, `sig`, `owner`
|
||||||
|
tags) to every other box it knows about. On every membership change the
|
||||||
|
`phonebox-sync` handler verifies all records and writes the resulting
|
||||||
|
`number -> yggdrasil address` map to `/run/phonebox/numbers/`, which the
|
||||||
|
asterisk dialplan reads at call time.
|
||||||
|
|
||||||
|
Bootstrapping: boxes of the same clan join each other automatically. To
|
||||||
|
connect to boxes outside the clan add one of their yggdrasil addresses to
|
||||||
|
`extraPeers`; after the first successful join the agent remembers the whole
|
||||||
|
membership in `/var/lib/phonebox/serf.snapshot` and rejoins on its own.
|
||||||
|
|
||||||
|
`serf members -rpc-addr 127.0.0.1:7373` shows the live directory.
|
||||||
@@ -0,0 +1,583 @@
|
|||||||
|
{
|
||||||
|
clanLib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
_class = "clan.service";
|
||||||
|
manifest.name = "phonebox-global";
|
||||||
|
manifest.description = "A peer to peer phone relay network built on top of yggdrasil.";
|
||||||
|
manifest.readme = builtins.readFile ./README.md;
|
||||||
|
manifest.categories = [ "System" ];
|
||||||
|
|
||||||
|
roles.default = {
|
||||||
|
description = "a default server role";
|
||||||
|
interface =
|
||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
options.ata-ethernet-iface = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "An Ethernet interface that connect to ATA box.";
|
||||||
|
default = "enp2s0";
|
||||||
|
};
|
||||||
|
options.extraClientNumbers = lib.mkOption {
|
||||||
|
type = with lib.types; listOf str;
|
||||||
|
description = "List of client suffix number.";
|
||||||
|
default = [ ];
|
||||||
|
};
|
||||||
|
|
||||||
|
options.extraFixedIPClient = lib.mkOption {
|
||||||
|
type = lib.types.attrsOf (
|
||||||
|
lib.types.submodule {
|
||||||
|
options = {
|
||||||
|
ip = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "IP address for this client";
|
||||||
|
};
|
||||||
|
|
||||||
|
name = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
description = "Name of the client";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
description = "Extra client to be added to pjsip config as a fixed IP auth";
|
||||||
|
default = { };
|
||||||
|
example = {
|
||||||
|
"01" = {
|
||||||
|
ip = "192.168.1.3";
|
||||||
|
name = "bob";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
options.extraPeers = lib.mkOption {
|
||||||
|
type = with lib.types; listOf str;
|
||||||
|
description = ''
|
||||||
|
Yggdrasil addresses of phonebox nodes outside this clan to bootstrap
|
||||||
|
the number directory from. Any single reachable node is enough; the
|
||||||
|
directory is gossiped from there and remembered across restarts.
|
||||||
|
'';
|
||||||
|
default = [ ];
|
||||||
|
example = [ "200:1234:5678:9abc:def0:1234:5678:9abc" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
perInstance =
|
||||||
|
{
|
||||||
|
roles,
|
||||||
|
settings,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
|
||||||
|
nixosModule =
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
asterisk = pkgs.asterisk.overrideAttrs (old: {
|
||||||
|
propagatedNativeBuildInputs = [ pkgs.spandsp3 ];
|
||||||
|
});
|
||||||
|
|
||||||
|
machineName = config.clan.core.settings.machine.name;
|
||||||
|
machines = lib.attrNames roles.default.machines;
|
||||||
|
|
||||||
|
user = "asterisk";
|
||||||
|
faxDir = "/run/asterisk/fax";
|
||||||
|
rtpPortFrom = 10000;
|
||||||
|
rtpPortTo = 20000;
|
||||||
|
ata-interface = settings.ata-ethernet-iface;
|
||||||
|
|
||||||
|
# The ATA's own line. Remote callers reach it by dialing the 6
|
||||||
|
# digit box number alone or with this extension appended.
|
||||||
|
ataLine = "00";
|
||||||
|
sipPort = 5060;
|
||||||
|
|
||||||
|
# Well-known port of the phonebox directory gossip. Every phonebox
|
||||||
|
# node worldwide must agree on it, so it is not configurable.
|
||||||
|
directoryPort = 7946;
|
||||||
|
directoryRpc = "127.0.0.1:7373";
|
||||||
|
directoryUser = "phonebox";
|
||||||
|
directoryDir = "/run/phonebox";
|
||||||
|
|
||||||
|
phoneboxVars = config.clan.core.vars.generators.phonebox-global.files;
|
||||||
|
ownNumber = phoneboxVars.number.value;
|
||||||
|
ownerName = lib.trim phoneboxVars.owner-name.value;
|
||||||
|
|
||||||
|
getYggdrasilIP =
|
||||||
|
name:
|
||||||
|
lib.trim (
|
||||||
|
clanLib.getPublicValue {
|
||||||
|
flake = config.clan.core.settings.directory;
|
||||||
|
machine = name;
|
||||||
|
generator = "yggdrasil";
|
||||||
|
file = "address";
|
||||||
|
default = "";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
ownYggdrasilIP =
|
||||||
|
if config.clan.core.vars.generators.yggdrasil.files ? address then
|
||||||
|
config.clan.core.vars.generators.yggdrasil.files.address.value
|
||||||
|
else
|
||||||
|
throw "clanService/yggdrasil is required";
|
||||||
|
|
||||||
|
seedPeers = lib.unique (
|
||||||
|
lib.filter (ip: ip != "") (map getYggdrasilIP (lib.remove machineName machines))
|
||||||
|
++ settings.extraPeers
|
||||||
|
);
|
||||||
|
|
||||||
|
# Rebuilds the number -> yggdrasil address directory from the
|
||||||
|
# gossip membership. Every record is verified: the yggdrasil
|
||||||
|
# address is derived from the record's public key, so a node can
|
||||||
|
# only publish numbers for the address it actually owns, and the
|
||||||
|
# number is signed with the matching private key.
|
||||||
|
phoneboxSync = pkgs.writers.writePython3Bin "phonebox-sync" {
|
||||||
|
libraries = [ pkgs.python3Packages.cryptography ];
|
||||||
|
flakeIgnore = [ "E501" ];
|
||||||
|
} (builtins.readFile ./phonebox-sync.py);
|
||||||
|
|
||||||
|
phoneboxSyncWrapped = pkgs.writeShellApplication {
|
||||||
|
name = "phonebox-sync";
|
||||||
|
runtimeInputs = [ pkgs.serfdom ];
|
||||||
|
text = ''
|
||||||
|
exec ${lib.getExe phoneboxSync} ${directoryRpc} ${directoryDir}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
createContactListTiff = pkgs.writeShellApplication {
|
||||||
|
name = "create-contact-tiff";
|
||||||
|
text = ''
|
||||||
|
magick -background white -fill black -pointsize 20 -font DejaVu-Sans label:"$(cat ${directoryDir}/contacts.txt)" "$1"
|
||||||
|
magick "$1" -border 20x50 -bordercolor white "$1"
|
||||||
|
magick "$1" -resize 1728x -units PixelsPerInch -compress Group4 -density 204x196 -monochrome -depth 1 "$1"
|
||||||
|
'';
|
||||||
|
runtimeInputs = [ pkgs.imagemagick ];
|
||||||
|
};
|
||||||
|
|
||||||
|
genLocalSIPEndpoint =
|
||||||
|
{ localNumber }:
|
||||||
|
''
|
||||||
|
[${localNumber}](internal_endpoint)
|
||||||
|
aors=${localNumber}
|
||||||
|
auth=${localNumber}
|
||||||
|
|
||||||
|
[${localNumber}](userpass_auth)
|
||||||
|
username=${localNumber}
|
||||||
|
password=${localNumber}
|
||||||
|
|
||||||
|
[${localNumber}](dynamic_aor)
|
||||||
|
max_contacts=1
|
||||||
|
remove_existing=yes
|
||||||
|
'';
|
||||||
|
|
||||||
|
genLocalSIPEndpointV6 =
|
||||||
|
{ localNumber }:
|
||||||
|
''
|
||||||
|
[${localNumber}](internal_endpoint)
|
||||||
|
transport=transport-udp6
|
||||||
|
aors=${localNumber}
|
||||||
|
auth=${localNumber}
|
||||||
|
|
||||||
|
[${localNumber}](userpass_auth)
|
||||||
|
username=${localNumber}
|
||||||
|
password=${localNumber}
|
||||||
|
|
||||||
|
[${localNumber}](dynamic_aor)
|
||||||
|
max_contacts=1
|
||||||
|
'';
|
||||||
|
|
||||||
|
genLocalSIPIPEndpoint = number: ''
|
||||||
|
|
||||||
|
[${number}](internal_endpoint)
|
||||||
|
aors=${number}
|
||||||
|
auth=${number}
|
||||||
|
contact_deny=0.0.0.0/0
|
||||||
|
contact_deny=::/0
|
||||||
|
contact_permit=${settings.extraFixedIPClient.${number}.ip}/128
|
||||||
|
|
||||||
|
[${number}](dynamic_aor)
|
||||||
|
max_contacts=1
|
||||||
|
remove_existing=yes
|
||||||
|
|
||||||
|
[${number}](userpass_auth)
|
||||||
|
username=${number}
|
||||||
|
password=${number}
|
||||||
|
|
||||||
|
'';
|
||||||
|
|
||||||
|
genLocalExtenConf =
|
||||||
|
{ localNumber }:
|
||||||
|
''
|
||||||
|
exten => ${localNumber},1,Dial(PJSIP/${localNumber},20)
|
||||||
|
'';
|
||||||
|
|
||||||
|
localNumbers = [
|
||||||
|
ataLine
|
||||||
|
]
|
||||||
|
++ settings.extraClientNumbers
|
||||||
|
++ lib.attrNames settings.extraFixedIPClient;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
assertions = [
|
||||||
|
{
|
||||||
|
assertion = !config.networking.nftables.enable;
|
||||||
|
message = "phonebox-global: opening the yggdrasil interface to non-clan nodes is only implemented for the iptables firewall backend";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
clan.core.vars.generators.phonebox-global = {
|
||||||
|
files = {
|
||||||
|
number.secret = false;
|
||||||
|
public-key.secret = false;
|
||||||
|
signature.secret = false;
|
||||||
|
owner-name.secret = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
dependencies = [ "yggdrasil" ];
|
||||||
|
|
||||||
|
prompts.owner-name = {
|
||||||
|
persist = true;
|
||||||
|
type = "line";
|
||||||
|
description = "The owner's name for this unit";
|
||||||
|
};
|
||||||
|
|
||||||
|
runtimeInputs = with pkgs; [
|
||||||
|
coreutils
|
||||||
|
openssl
|
||||||
|
xxd
|
||||||
|
];
|
||||||
|
|
||||||
|
# A random 6 digit number (100000-999999), bound to this
|
||||||
|
# machine's yggdrasil identity by signing it with the yggdrasil
|
||||||
|
# private key. Other nodes accept the number only if the
|
||||||
|
# signature checks out and the key derives to the yggdrasil
|
||||||
|
# address the record is gossiped from. Regenerate to re-roll.
|
||||||
|
script = ''
|
||||||
|
cat $prompts/owner-name > $out/owner-name
|
||||||
|
shuf -i 100000-999999 -n 1 | tr -d '\n' > $out/number
|
||||||
|
openssl pkey -in $in/yggdrasil/privateKey -pubout -outform DER \
|
||||||
|
| tail -c 32 | xxd -p -c 64 | tr -d '\n' > $out/public-key
|
||||||
|
# openssl needs a regular file for one-shot ed25519 signing
|
||||||
|
printf 'phonebox:%s' "$(cat $out/number)" > $out/message
|
||||||
|
openssl pkeyutl -sign -rawin -inkey $in/yggdrasil/privateKey -in $out/message \
|
||||||
|
| base64 -w0 > $out/signature
|
||||||
|
rm $out/message
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.interfaces = {
|
||||||
|
${ata-interface} = {
|
||||||
|
useDHCP = false;
|
||||||
|
ipv4.addresses = [
|
||||||
|
{
|
||||||
|
address = "192.168.254.1";
|
||||||
|
prefixLength = 24;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.dnsmasq = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
bind-dynamic = true;
|
||||||
|
listen-address = "192.168.254.1";
|
||||||
|
# enable-ra = true;
|
||||||
|
domain-needed = true;
|
||||||
|
domain = "localhost";
|
||||||
|
dhcp-range = [
|
||||||
|
"192.168.254.100,192.168.254.100,255.255.255.0,3m"
|
||||||
|
];
|
||||||
|
dhcp-leasefile = "/dev/null";
|
||||||
|
dhcp-option = [
|
||||||
|
"3,192.168.254.1"
|
||||||
|
];
|
||||||
|
interface = [ ata-interface ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx = {
|
||||||
|
enable = true;
|
||||||
|
virtualHosts = {
|
||||||
|
"_" = {
|
||||||
|
locations."/" = {
|
||||||
|
proxyPass = "http://192.168.254.100";
|
||||||
|
extraConfig = ''
|
||||||
|
client_max_body_size 100M;
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedUDPPortRanges = [
|
||||||
|
{
|
||||||
|
from = rtpPortFrom;
|
||||||
|
to = rtpPortTo;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
networking.firewall.allowedUDPPorts = [
|
||||||
|
53
|
||||||
|
67
|
||||||
|
sipPort
|
||||||
|
];
|
||||||
|
networking.firewall.allowedTCPPorts = [
|
||||||
|
53
|
||||||
|
];
|
||||||
|
networking.firewall.interfaces = {
|
||||||
|
"zt+".allowedTCPPorts = [ 80 ];
|
||||||
|
ygg = {
|
||||||
|
allowedTCPPorts = [ directoryPort ];
|
||||||
|
allowedUDPPorts = [ directoryPort ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# clanService/yggdrasil drops everything on the ygg interface that
|
||||||
|
# does not come from a clan member. Phonebox is a global network,
|
||||||
|
# so let SIP, RTP and the directory gossip through from anyone.
|
||||||
|
networking.firewall.extraCommands = lib.mkAfter ''
|
||||||
|
if ip6tables -n -L ygg-input >/dev/null 2>&1; then
|
||||||
|
ip6tables -I ygg-input 1 -i ygg -p udp --dport ${toString sipPort} -j RETURN
|
||||||
|
ip6tables -I ygg-input 1 -i ygg -p udp --dport ${toString rtpPortFrom}:${toString rtpPortTo} -j RETURN
|
||||||
|
ip6tables -I ygg-input 1 -i ygg -p udp --dport ${toString directoryPort} -j RETURN
|
||||||
|
ip6tables -I ygg-input 1 -i ygg -p tcp --dport ${toString directoryPort} -j RETURN
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
users.users.${directoryUser} = {
|
||||||
|
isSystemUser = true;
|
||||||
|
group = directoryUser;
|
||||||
|
};
|
||||||
|
users.groups.${directoryUser} = { };
|
||||||
|
|
||||||
|
# Decentralized number directory: a serf gossip cluster over
|
||||||
|
# yggdrasil. Each node advertises its signed number record as
|
||||||
|
# tags; membership changes trigger phonebox-sync, which writes the
|
||||||
|
# verified number -> address map to ${directoryDir}/numbers/ for
|
||||||
|
# the dialplan. The snapshot lets a node rejoin from previously
|
||||||
|
# seen members, so seeds are only needed for the very first join.
|
||||||
|
systemd.services.phonebox-directory = {
|
||||||
|
description = "Phonebox number directory (serf gossip over yggdrasil)";
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
wants = [ "network-online.target" ];
|
||||||
|
after = [
|
||||||
|
"network-online.target"
|
||||||
|
"yggdrasil.service"
|
||||||
|
];
|
||||||
|
serviceConfig = {
|
||||||
|
User = directoryUser;
|
||||||
|
Group = directoryUser;
|
||||||
|
RuntimeDirectory = "phonebox";
|
||||||
|
RuntimeDirectoryMode = "0755";
|
||||||
|
RuntimeDirectoryPreserve = "yes";
|
||||||
|
StateDirectory = "phonebox";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 5;
|
||||||
|
ExecStart = lib.concatStringsSep " " (
|
||||||
|
[
|
||||||
|
(lib.getExe pkgs.serfdom)
|
||||||
|
"agent"
|
||||||
|
"-node=${machineName}-${ownNumber}"
|
||||||
|
"-bind=[::]:${toString directoryPort}"
|
||||||
|
"-advertise=[${ownYggdrasilIP}]:${toString directoryPort}"
|
||||||
|
"-rpc-addr=${directoryRpc}"
|
||||||
|
"-profile=wan"
|
||||||
|
"-snapshot=/var/lib/phonebox/serf.snapshot"
|
||||||
|
"-rejoin"
|
||||||
|
"-retry-max=0"
|
||||||
|
"-retry-interval=30s"
|
||||||
|
"-tag number=${ownNumber}"
|
||||||
|
"-tag key=${phoneboxVars.public-key.value}"
|
||||||
|
"-tag sig=${phoneboxVars.signature.value}"
|
||||||
|
"-tag ${lib.escapeShellArg "owner=${ownerName}"}"
|
||||||
|
"-event-handler=member-join,member-leave,member-failed,member-update,member-reap=${lib.getExe phoneboxSyncWrapped}"
|
||||||
|
]
|
||||||
|
++ map (ip: "-retry-join=[${ip}]:${toString directoryPort}") seedPeers
|
||||||
|
);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.asterisk = {
|
||||||
|
enable = lib.mkDefault true;
|
||||||
|
package = lib.mkDefault asterisk;
|
||||||
|
confFiles = {
|
||||||
|
"logger.conf" = ''
|
||||||
|
[general]
|
||||||
|
dateformat = %F %T.%3q ; ISO 8601 date format with milliseconds
|
||||||
|
use_callids = yes
|
||||||
|
appendhostname = no
|
||||||
|
queue_log = yes
|
||||||
|
queue_log_to_file = no
|
||||||
|
queue_log_name = queue_log
|
||||||
|
queue_log_realtime_use_gmt = no
|
||||||
|
rotatestrategy = rotate
|
||||||
|
exec_after_rotate=gzip -9 $\{filename\}.2
|
||||||
|
[logfiles]
|
||||||
|
console => notice,warning,error
|
||||||
|
security => security
|
||||||
|
messages => notice,warning,error
|
||||||
|
full => notice,warning,error,verbose,dtmf,fax
|
||||||
|
syslog.local0 => notice,warning,error
|
||||||
|
'';
|
||||||
|
|
||||||
|
"modules.conf" = ''
|
||||||
|
[modules]
|
||||||
|
autoload=yes
|
||||||
|
|
||||||
|
load => res_fax_spandsp.so
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Dial plan config
|
||||||
|
"extensions.conf" = ''
|
||||||
|
[from-internal]
|
||||||
|
exten => 999,1,Answer()
|
||||||
|
same => n,Playback(hello-world)
|
||||||
|
same => n,Hangup()
|
||||||
|
|
||||||
|
exten => 000,1,Answer()
|
||||||
|
same => n,ReceiveFAX(${faxDir}/echo-''${UNIQUEID}.tiff)
|
||||||
|
same => n,Set(FAXFILE=${faxDir}/echo-''${UNIQUEID}.tiff)
|
||||||
|
same => n,Set(FAXECHO=true)
|
||||||
|
|
||||||
|
exten => 888,1,Answer()
|
||||||
|
same => n,Set(FAXFILE=${faxDir}/contact.tiff)
|
||||||
|
same => n,System(${lib.getExe createContactListTiff} ''${FAXFILE})
|
||||||
|
same => n,Set(FAXECHO=true)
|
||||||
|
same => n,Playback(vm-goodbye)
|
||||||
|
same => n,Wait(3)
|
||||||
|
|
||||||
|
exten => h,1,GotoIf($[''${FAXECHO}]?sendfax)
|
||||||
|
same => n,Hangup()
|
||||||
|
same => n(sendfax),Originate(PJSIP/${ataLine},app,SendFAX,''${FAXFILE})
|
||||||
|
same => n,Set(FAXECHO=false)
|
||||||
|
|
||||||
|
; 6 digit box number, optionally followed by a 2 digit line
|
||||||
|
exten => _[1-9]XXXXX,1,Goto(to-yggdrasil,''${EXTEN},1)
|
||||||
|
exten => _[1-9]XXXXXXX,1,Goto(to-yggdrasil,''${EXTEN},1)
|
||||||
|
|
||||||
|
''
|
||||||
|
+ lib.concatMapStrings (number: genLocalExtenConf { localNumber = number; }) localNumbers
|
||||||
|
+ ''
|
||||||
|
|
||||||
|
; Outbound: resolve the box number through the directory and
|
||||||
|
; send the call to that node over yggdrasil.
|
||||||
|
[to-yggdrasil]
|
||||||
|
exten => _[1-9]X.,1,Set(PEER=''${FILE(${directoryDir}/numbers/''${EXTEN:0:6})})
|
||||||
|
same => n,GotoIf($["''${PEER}" = ""]?unknown)
|
||||||
|
same => n,Set(CALLERID(num)=${ownNumber}''${CALLERID(num)})
|
||||||
|
same => n,Set(CALLERID(name)=${ownerName})
|
||||||
|
same => n,Dial(PJSIP/yggdrasil/sip:''${EXTEN}@[''${PEER}]:${toString sipPort},30)
|
||||||
|
same => n,Hangup()
|
||||||
|
same => n(unknown),Playback(ss-noservice)
|
||||||
|
same => n,Hangup()
|
||||||
|
|
||||||
|
; Inbound from any yggdrasil node: only our own number is served.
|
||||||
|
[from-yggdrasil]
|
||||||
|
exten => ${ownNumber},1,Dial(PJSIP/${ataLine},20)
|
||||||
|
exten => _${ownNumber}XX,1,Dial(PJSIP/''${EXTEN:6},20)
|
||||||
|
'';
|
||||||
|
|
||||||
|
"rtp.conf" = ''
|
||||||
|
[general]
|
||||||
|
rtpstart=${toString rtpPortFrom}
|
||||||
|
rtpend=${toString rtpPortTo}
|
||||||
|
'';
|
||||||
|
|
||||||
|
"pjsip.conf" = ''
|
||||||
|
[global]
|
||||||
|
type=global
|
||||||
|
; Local lines authenticate by username; everything else from
|
||||||
|
; the yggdrasil range is a remote phonebox node.
|
||||||
|
endpoint_identifier_order=username,ip,anonymous
|
||||||
|
|
||||||
|
[transport-udp]
|
||||||
|
type=transport
|
||||||
|
protocol=udp
|
||||||
|
bind=0.0.0.0
|
||||||
|
[transport-udp6]
|
||||||
|
type=transport
|
||||||
|
protocol=udp
|
||||||
|
bind=::
|
||||||
|
|
||||||
|
[base_endpoint](!)
|
||||||
|
type=endpoint
|
||||||
|
disallow=all
|
||||||
|
allow=ulaw,alaw,g722,gsm
|
||||||
|
direct_media=no
|
||||||
|
|
||||||
|
[internal_endpoint](!,base_endpoint)
|
||||||
|
context=from-internal
|
||||||
|
|
||||||
|
[userpass_auth](!)
|
||||||
|
type=auth
|
||||||
|
auth_type=userpass
|
||||||
|
|
||||||
|
[dynamic_aor](!)
|
||||||
|
type=aor
|
||||||
|
|
||||||
|
[yggdrasil](base_endpoint)
|
||||||
|
transport=transport-udp6
|
||||||
|
context=from-yggdrasil
|
||||||
|
|
||||||
|
[yggdrasil]
|
||||||
|
type=identify
|
||||||
|
endpoint=yggdrasil
|
||||||
|
match=200::/7
|
||||||
|
|
||||||
|
''
|
||||||
|
+ (genLocalSIPEndpoint { localNumber = ataLine; })
|
||||||
|
+ lib.concatMapStrings (
|
||||||
|
number: genLocalSIPEndpointV6 { localNumber = number; }
|
||||||
|
) settings.extraClientNumbers
|
||||||
|
+ lib.concatMapStrings genLocalSIPIPEndpoint (lib.attrNames settings.extraFixedIPClient);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
createContactListTiff
|
||||||
|
phoneboxSyncWrapped
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.tmpfiles.rules = [
|
||||||
|
"d ${faxDir} 0755 ${user} ${user} - -"
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.services.asterisk-watcher = {
|
||||||
|
enable = true;
|
||||||
|
description = "Asterisk Configuration files watcher";
|
||||||
|
|
||||||
|
requires = [ "asterisk.service" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path = with pkgs; [
|
||||||
|
inotify-tools
|
||||||
|
asterisk
|
||||||
|
];
|
||||||
|
script = ''
|
||||||
|
inotifywait -m -e move /etc/asterisk |
|
||||||
|
while read path action file; do
|
||||||
|
case "$file" in
|
||||||
|
pjsip.conf)
|
||||||
|
echo "restarting pjsip"
|
||||||
|
asterisk -rx "pjsip reload"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
case "$file" in
|
||||||
|
extensions.conf)
|
||||||
|
echo "restarting core"
|
||||||
|
asterisk -rx "core restart now"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
self,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
module = ./default.nix;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
clan.modules = {
|
||||||
|
phonebox-global = module;
|
||||||
|
};
|
||||||
|
perSystem =
|
||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
clan.nixosTests.service-phonebox-global = {
|
||||||
|
imports = [ ./tests/vm/default.nix ];
|
||||||
|
_module.args = { inherit self inputs; };
|
||||||
|
|
||||||
|
clan.modules."@clan/phonebox-global" = module;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Unit tests for the directory sync logic (record verification,
|
||||||
|
# address derivation, collision handling, file output).
|
||||||
|
checks.phonebox-global-sync =
|
||||||
|
pkgs.runCommand "phonebox-global-sync-test"
|
||||||
|
{
|
||||||
|
nativeBuildInputs = [
|
||||||
|
(pkgs.python3.withPackages (ps: [ ps.cryptography ]))
|
||||||
|
pkgs.yggdrasil
|
||||||
|
];
|
||||||
|
PHONEBOX_SYNC = ./phonebox-sync.py;
|
||||||
|
}
|
||||||
|
''
|
||||||
|
python3 ${./tests/sync/test_sync.py} -v
|
||||||
|
touch $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
"""Rebuild the phonebox number directory from serf membership.
|
||||||
|
|
||||||
|
Usage: phonebox-sync <serf rpc addr> <state dir>
|
||||||
|
|
||||||
|
Runs as a serf event handler. Every alive member carries its number record
|
||||||
|
as tags (number, key, sig, owner). A record is accepted only when the
|
||||||
|
yggdrasil address it is gossiped from derives from `key` and `sig` is a
|
||||||
|
valid ed25519 signature of "phonebox:<number>" under that key, so a number
|
||||||
|
can only ever be bound to the address of the node that signed it.
|
||||||
|
|
||||||
|
Output, consumed by the asterisk dialplan:
|
||||||
|
<state dir>/numbers/<number> the yggdrasil address, no trailing newline
|
||||||
|
<state dir>/contacts.txt "<number> : <owner>" per line, for the fax
|
||||||
|
"""
|
||||||
|
|
||||||
|
import base64
|
||||||
|
import ipaddress
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import syslog
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
from cryptography.exceptions import InvalidSignature
|
||||||
|
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey
|
||||||
|
|
||||||
|
|
||||||
|
def yggdrasil_address(public_key: bytes) -> ipaddress.IPv6Address:
|
||||||
|
"""Port of yggdrasil-go address.AddrForKey.
|
||||||
|
|
||||||
|
Invert the key; the address is 0x02, the count of leading one bits,
|
||||||
|
then the bits following the first zero, truncated to 128 bits.
|
||||||
|
"""
|
||||||
|
bits = "".join(f"{b ^ 0xFF:08b}" for b in public_key)
|
||||||
|
ones = len(bits) - len(bits.lstrip("1"))
|
||||||
|
body = int(bits[ones + 1:ones + 113], 2).to_bytes(14, "big")
|
||||||
|
return ipaddress.IPv6Address(bytes([0x02, ones]) + body)
|
||||||
|
|
||||||
|
|
||||||
|
def verified_record(member: dict) -> tuple[str, str, str, str]:
|
||||||
|
"""Return (number, key hex, address, owner) or raise ValueError."""
|
||||||
|
tags = member.get("tags", {})
|
||||||
|
try:
|
||||||
|
number, key_hex, sig = tags["number"], tags["key"], tags["sig"]
|
||||||
|
key = bytes.fromhex(key_hex)
|
||||||
|
host, _ = member["addr"].rsplit(":", 1)
|
||||||
|
address = ipaddress.IPv6Address(host.strip("[]"))
|
||||||
|
signature = base64.b64decode(sig, validate=True)
|
||||||
|
except (KeyError, ValueError) as e:
|
||||||
|
raise ValueError(f"malformed record: {e}")
|
||||||
|
if not (len(number) == 6 and number.isdigit() and number[0] != "0"):
|
||||||
|
raise ValueError(f"invalid number {number!r}")
|
||||||
|
if yggdrasil_address(key) != address:
|
||||||
|
raise ValueError(f"key does not derive to address {address}")
|
||||||
|
try:
|
||||||
|
Ed25519PublicKey.from_public_bytes(key).verify(signature, b"phonebox:" + number.encode())
|
||||||
|
except (ValueError, InvalidSignature):
|
||||||
|
raise ValueError(f"bad signature for number {number}")
|
||||||
|
return number, key_hex, str(address), tags.get("owner", "")
|
||||||
|
|
||||||
|
|
||||||
|
def directory(members: list[dict]) -> dict[str, tuple[str, str, str]]:
|
||||||
|
"""number -> (key hex, address, owner); on a collision the lowest key wins."""
|
||||||
|
book = {}
|
||||||
|
for member in members:
|
||||||
|
try:
|
||||||
|
number, key, address, owner = verified_record(member)
|
||||||
|
except ValueError as e:
|
||||||
|
syslog.syslog(syslog.LOG_WARNING, f"ignoring {member.get('name')}: {e}")
|
||||||
|
continue
|
||||||
|
if number in book:
|
||||||
|
syslog.syslog(syslog.LOG_WARNING, f"number {number} claimed by keys {book[number][0]} and {key}")
|
||||||
|
if book[number][0] <= key:
|
||||||
|
continue
|
||||||
|
book[number] = (key, address, owner)
|
||||||
|
return book
|
||||||
|
|
||||||
|
|
||||||
|
def write_atomic(path: str, content: str) -> None:
|
||||||
|
fd, tmp = tempfile.mkstemp(dir=os.path.dirname(path))
|
||||||
|
with os.fdopen(fd, "w") as f:
|
||||||
|
f.write(content)
|
||||||
|
os.chmod(tmp, 0o644)
|
||||||
|
os.replace(tmp, path)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
rpc_addr, state_dir = sys.argv[1:]
|
||||||
|
syslog.openlog("phonebox-sync")
|
||||||
|
out = subprocess.run(
|
||||||
|
["serf", "members", "-format=json", "-status=alive", f"-rpc-addr={rpc_addr}"],
|
||||||
|
check=True, capture_output=True, text=True,
|
||||||
|
).stdout
|
||||||
|
book = directory(json.loads(out)["members"])
|
||||||
|
|
||||||
|
numbers_dir = os.path.join(state_dir, "numbers")
|
||||||
|
os.makedirs(numbers_dir, exist_ok=True)
|
||||||
|
for number, (_, address, _) in book.items():
|
||||||
|
write_atomic(os.path.join(numbers_dir, number), address)
|
||||||
|
for stale in set(os.listdir(numbers_dir)) - book.keys():
|
||||||
|
os.unlink(os.path.join(numbers_dir, stale))
|
||||||
|
write_atomic(
|
||||||
|
os.path.join(state_dir, "contacts.txt"),
|
||||||
|
"".join(f"{number}\t\t: \t\t{book[number][2]}\n" for number in sorted(book)),
|
||||||
|
)
|
||||||
|
syslog.syslog(syslog.LOG_INFO, f"directory has {len(book)} numbers")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -0,0 +1,164 @@
|
|||||||
|
"""Tests for phonebox-sync: record verification and directory output.
|
||||||
|
|
||||||
|
Run via the `phonebox-global-sync` flake check; needs the `cryptography`
|
||||||
|
python package and the `yggdrasil` binary on PATH.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import base64
|
||||||
|
import importlib.util
|
||||||
|
import ipaddress
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import tempfile
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
|
||||||
|
|
||||||
|
spec = importlib.util.spec_from_file_location("phonebox_sync", os.environ["PHONEBOX_SYNC"])
|
||||||
|
sync = importlib.util.module_from_spec(spec)
|
||||||
|
spec.loader.exec_module(sync)
|
||||||
|
|
||||||
|
PORT = 7946
|
||||||
|
|
||||||
|
|
||||||
|
class Node:
|
||||||
|
"""A phonebox node identity: yggdrasil key, address and signed number."""
|
||||||
|
|
||||||
|
def __init__(self, number: str, owner: str = ""):
|
||||||
|
self.key = Ed25519PrivateKey.generate()
|
||||||
|
self.public = self.key.public_key().public_bytes_raw()
|
||||||
|
self.address = str(sync.yggdrasil_address(self.public))
|
||||||
|
self.number = number
|
||||||
|
self.owner = owner
|
||||||
|
|
||||||
|
def member(self, name="node", **overrides) -> dict:
|
||||||
|
tags = {
|
||||||
|
"number": self.number,
|
||||||
|
"key": self.public.hex(),
|
||||||
|
"sig": base64.b64encode(self.key.sign(b"phonebox:" + self.number.encode())).decode(),
|
||||||
|
"owner": self.owner,
|
||||||
|
}
|
||||||
|
member = {"name": name, "addr": f"[{self.address}]:{PORT}", "port": PORT, "status": "alive", "tags": tags}
|
||||||
|
for k, v in overrides.items():
|
||||||
|
(tags if k in tags else member)[k] = v
|
||||||
|
return member
|
||||||
|
|
||||||
|
|
||||||
|
def yggdrasil_binary_address(key: Ed25519PrivateKey) -> str:
|
||||||
|
private = key.private_bytes_raw() + key.public_key().public_bytes_raw()
|
||||||
|
out = subprocess.run(
|
||||||
|
["yggdrasil", "-useconf", "-address"],
|
||||||
|
input=json.dumps({"PrivateKey": private.hex()}),
|
||||||
|
check=True, capture_output=True, text=True,
|
||||||
|
)
|
||||||
|
return out.stdout.strip()
|
||||||
|
|
||||||
|
|
||||||
|
class AddressDerivation(unittest.TestCase):
|
||||||
|
def test_known_vector(self):
|
||||||
|
# A real clan machine key and the address yggdrasil assigned to it.
|
||||||
|
key = bytes.fromhex("0ec53986a2bdca8a43f74063aeab6a958fc697c528c83e7281365072926886f0")
|
||||||
|
self.assertEqual(str(sync.yggdrasil_address(key)), "204:2758:cf2b:a846:aeb7:8117:f38a:2a92")
|
||||||
|
|
||||||
|
def test_matches_yggdrasil_binary(self):
|
||||||
|
for _ in range(16):
|
||||||
|
key = Ed25519PrivateKey.generate()
|
||||||
|
expected = ipaddress.IPv6Address(yggdrasil_binary_address(key))
|
||||||
|
self.assertEqual(sync.yggdrasil_address(key.public_key().public_bytes_raw()), expected)
|
||||||
|
|
||||||
|
|
||||||
|
class RecordVerification(unittest.TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.node = Node("482913", owner="alice")
|
||||||
|
|
||||||
|
def test_valid_record(self):
|
||||||
|
number, key, address, owner = sync.verified_record(self.node.member())
|
||||||
|
self.assertEqual((number, key, address, owner), ("482913", self.node.public.hex(), self.node.address, "alice"))
|
||||||
|
|
||||||
|
def test_record_from_foreign_address_is_rejected(self):
|
||||||
|
other = Node("111111")
|
||||||
|
with self.assertRaisesRegex(ValueError, "does not derive"):
|
||||||
|
sync.verified_record(self.node.member(addr=f"[{other.address}]:{PORT}"))
|
||||||
|
|
||||||
|
def test_signature_over_other_number_is_rejected(self):
|
||||||
|
with self.assertRaisesRegex(ValueError, "bad signature"):
|
||||||
|
sync.verified_record(self.node.member(number="999999"))
|
||||||
|
|
||||||
|
def test_garbage_signature_is_rejected(self):
|
||||||
|
with self.assertRaisesRegex(ValueError, "malformed"):
|
||||||
|
sync.verified_record(self.node.member(sig="not base64!"))
|
||||||
|
|
||||||
|
def test_missing_tags_are_rejected(self):
|
||||||
|
with self.assertRaisesRegex(ValueError, "malformed"):
|
||||||
|
sync.verified_record({"name": "foreign", "addr": f"[{self.node.address}]:{PORT}", "tags": {}})
|
||||||
|
|
||||||
|
def test_number_must_be_six_digits_without_leading_zero(self):
|
||||||
|
for bad in ["012345", "12345", "1234567", "12a456", ""]:
|
||||||
|
node = Node(bad)
|
||||||
|
with self.assertRaisesRegex(ValueError, "invalid number", msg=bad):
|
||||||
|
sync.verified_record(node.member())
|
||||||
|
|
||||||
|
def test_owner_defaults_to_empty(self):
|
||||||
|
member = self.node.member()
|
||||||
|
del member["tags"]["owner"]
|
||||||
|
self.assertEqual(sync.verified_record(member)[3], "")
|
||||||
|
|
||||||
|
|
||||||
|
class Directory(unittest.TestCase):
|
||||||
|
def test_invalid_records_are_skipped_not_fatal(self):
|
||||||
|
good = Node("482913", owner="alice")
|
||||||
|
bad = Node("555555")
|
||||||
|
members = [bad.member(sig="AAAA"), good.member(), {"name": "x", "addr": "[200::1]:7946", "tags": {}}]
|
||||||
|
self.assertEqual(sync.directory(members), {"482913": (good.public.hex(), good.address, "alice")})
|
||||||
|
|
||||||
|
def test_collision_lowest_key_wins_regardless_of_order(self):
|
||||||
|
a, b = Node("482913"), Node("482913")
|
||||||
|
winner = min((a, b), key=lambda n: n.public.hex())
|
||||||
|
for members in ([a.member("a"), b.member("b")], [b.member("b"), a.member("a")]):
|
||||||
|
self.assertEqual(sync.directory(members)["482913"][1], winner.address)
|
||||||
|
|
||||||
|
|
||||||
|
class Main(unittest.TestCase):
|
||||||
|
def run_sync(self, members: list[dict], state: str) -> None:
|
||||||
|
bindir = tempfile.mkdtemp()
|
||||||
|
with open(os.path.join(bindir, "serf"), "w") as f:
|
||||||
|
f.write("#!/bin/sh\ncat <<'EOF'\n" + json.dumps({"members": members}) + "\nEOF\n")
|
||||||
|
os.chmod(os.path.join(bindir, "serf"), 0o755)
|
||||||
|
env_path = os.environ["PATH"]
|
||||||
|
os.environ["PATH"] = bindir + os.pathsep + env_path
|
||||||
|
argv = sys.argv
|
||||||
|
sys.argv = ["phonebox-sync", "127.0.0.1:7373", state]
|
||||||
|
try:
|
||||||
|
sync.main()
|
||||||
|
finally:
|
||||||
|
sys.argv = argv
|
||||||
|
os.environ["PATH"] = env_path
|
||||||
|
|
||||||
|
def test_writes_numbers_and_contacts_and_removes_stale(self):
|
||||||
|
state = tempfile.mkdtemp()
|
||||||
|
os.makedirs(os.path.join(state, "numbers"))
|
||||||
|
with open(os.path.join(state, "numbers", "111111"), "w") as f:
|
||||||
|
f.write("200::dead")
|
||||||
|
a, b = Node("482913", owner="alice"), Node("555555", owner="bob")
|
||||||
|
self.run_sync([b.member("b"), a.member("a")], state)
|
||||||
|
|
||||||
|
numbers = os.path.join(state, "numbers")
|
||||||
|
self.assertEqual(sorted(os.listdir(numbers)), ["482913", "555555"])
|
||||||
|
with open(os.path.join(numbers, "482913")) as f:
|
||||||
|
self.assertEqual(f.read(), a.address) # no trailing newline: read by FILE() in the dialplan
|
||||||
|
with open(os.path.join(state, "contacts.txt")) as f:
|
||||||
|
self.assertEqual(f.read(), "482913\t\t: \t\talice\n555555\t\t: \t\tbob\n")
|
||||||
|
|
||||||
|
def test_empty_membership_clears_directory(self):
|
||||||
|
state = tempfile.mkdtemp()
|
||||||
|
self.run_sync([Node("482913").member()], state)
|
||||||
|
self.run_sync([], state)
|
||||||
|
self.assertEqual(os.listdir(os.path.join(state, "numbers")), [])
|
||||||
|
with open(os.path.join(state, "contacts.txt")) as f:
|
||||||
|
self.assertEqual(f.read(), "")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
unittest.main()
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
{
|
||||||
|
self,
|
||||||
|
hostPkgs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
name = "service-phonebox-global";
|
||||||
|
result.update-vars =
|
||||||
|
let
|
||||||
|
relativeDir = lib.removePrefix "${self}/" (toString config.clan.directory);
|
||||||
|
in
|
||||||
|
hostPkgs.writeShellScriptBin "update-vars" ''
|
||||||
|
set -x
|
||||||
|
export PRJ_ROOT=$(git rev-parse --show-toplevel)
|
||||||
|
${
|
||||||
|
self.inputs.clan-core.packages.${hostPkgs.system}.clan-cli
|
||||||
|
}/bin/clan-generate-test-vars $PRJ_ROOT/${relativeDir} ${config.name}
|
||||||
|
'';
|
||||||
|
|
||||||
|
clan = {
|
||||||
|
test.useContainers = false;
|
||||||
|
directory = ./.;
|
||||||
|
inventory = {
|
||||||
|
machines.server = { };
|
||||||
|
machines.nodeA = { };
|
||||||
|
|
||||||
|
instances = {
|
||||||
|
yggdrasil = {
|
||||||
|
module.name = "yggdrasil";
|
||||||
|
roles.default.machines.server = { };
|
||||||
|
roles.default.machines.nodeA = { };
|
||||||
|
};
|
||||||
|
phonebox-global-test = {
|
||||||
|
module.name = "@clan/phonebox-global";
|
||||||
|
module.input = "self";
|
||||||
|
roles.default.machines.server.settings.ata-ethernet-iface = "enp2s0";
|
||||||
|
roles.default.machines.nodeA.settings.ata-ethernet-iface = "enp2s0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
server = { };
|
||||||
|
nodeA = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript =
|
||||||
|
{ nodes, ... }:
|
||||||
|
let
|
||||||
|
number = node: nodes.${node}.clan.core.vars.generators.phonebox-global.files.number.value;
|
||||||
|
address = node: nodes.${node}.clan.core.vars.generators.yggdrasil.files.address.value;
|
||||||
|
in
|
||||||
|
''
|
||||||
|
start_all()
|
||||||
|
|
||||||
|
for node in [server, nodeA]:
|
||||||
|
node.wait_for_unit("asterisk.service")
|
||||||
|
node.wait_for_unit("phonebox-directory.service")
|
||||||
|
|
||||||
|
# Directory converges: each node learns the other's number and address.
|
||||||
|
server.wait_until_succeeds("test -f /run/phonebox/numbers/${number "nodeA"}", timeout=300)
|
||||||
|
nodeA.wait_until_succeeds("test -f /run/phonebox/numbers/${number "server"}", timeout=300)
|
||||||
|
assert server.succeed("cat /run/phonebox/numbers/${number "nodeA"}") == "${address "nodeA"}"
|
||||||
|
assert nodeA.succeed("cat /run/phonebox/numbers/${number "server"}") == "${address "server"}"
|
||||||
|
assert "${number "nodeA"}" in server.succeed("cat /run/phonebox/contacts.txt")
|
||||||
|
|
||||||
|
# A call from server to nodeA's number is routed over yggdrasil and
|
||||||
|
# accepted by nodeA's asterisk (no phone is registered, so it fails
|
||||||
|
# after being identified, which is enough to prove the path).
|
||||||
|
nodeA.succeed("asterisk -rx 'pjsip set logger on'")
|
||||||
|
server.succeed("asterisk -rx 'channel originate Local/${number "nodeA"}@from-internal application Wait 3'")
|
||||||
|
nodeA.wait_until_succeeds("grep -q 'INVITE sip:${number "nodeA"}@' /var/log/asterisk/full", timeout=60)
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"publickey": "age18yf7r0dalnue5vwzanxl046fxsskhu9lzvd488ajhz7rp62mu94scmw3w4",
|
||||||
|
"type": "age"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"publickey": "age1sy8xkmssttcchjj0nkapk4tu530lrzszdp4lka6nn4gzlxam6e2s3xzp2j",
|
||||||
|
"type": "age"
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"data": "ENC[AES256_GCM,data:NkOeX6FboG7NOkdgiTgAsS+XjRoDU+AEYfMhpZXIJTYEM2dQti+PMGyizKRvr1wRnSGMp56XaX0bHdToBuf1gYruqAsEkKwqsYw=,iv:RFyO5/JybroNAKe+F3vv51l4OEu5XXNs+biTTH8poEg=,tag:zfPm0ZAjT2CC734EU+36KQ==,type:str]",
|
||||||
|
"sops": {
|
||||||
|
"age": [
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA2RklrTFQxMll5VUxiaGVu\nNlRzeldTRnVrSG93TXYzc1YrRE9Nc1VqTHpNCjh4aHJMZmtpM2tDclNaT3d2SDhN\na1QxTXVFOHRuY3dpL1YxMTJKK3pUVmMKLS0tIHoyMGVyc01vak5EKzZONC9XUmFw\nMU5MRmx6UDROQzFiaTNuNXFiQTZoYmcK6wxypuP7vTnz//EcEt2pUNqUuKxjOaY3\nAmKToJQADJfzTsYGzpmWkkYaMHvG00v8Ja6TF6IxZr5SxUh4bdHr+w==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"lastmodified": "2026-09-18T02:02:10Z",
|
||||||
|
"mac": "ENC[AES256_GCM,data:kRpbcT5+I80iHPjPUnveQE9jpa65n0xPPQR/by4p1iM80ZKk9KH0cObB5hHhXO4BD1OqI79UJ3O9O7Jhmylgx5Uh8RNbK6wf26p4GO2Bvqh9r15NqbCZtXkoW30MTLLIs58Q7NeK9O2LgeckWrXLtyEytfhnTuoTSDFo8Sh8NQY=,iv:rcNow1Z4BN7bo1XERB6c+G6Gwl3tRU1VHvYmoDaLTl4=,tag:vy/5EB/1gw/KLLqXHSEV3g==,type:str]",
|
||||||
|
"version": "3.13.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
../../../users/admin
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"data": "ENC[AES256_GCM,data:Sy9T0zEgSGZ/qkz5kaRN2qlH2X+pFRibzb8FpWuknuSI/9lActSG2Loq4LhmhqPGC5MGVkQcz2pcVFI7afUjzDzejfJf4De1ka4=,iv:JNLXguWEwJXR2+WNl0v0nUvkESVAbccfeQSUijKbj2I=,tag:/AAFKncO+B/XmUZYTQnTTw==,type:str]",
|
||||||
|
"sops": {
|
||||||
|
"age": [
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqOXJoSXgvcEFXK2hWTlpi\nQWhCdnZPUCt5R2xEWFYxUnpWVlc1ei93TncwCjNKaVB0MFN1VUdheEwyUTBzcmFT\nb0RjTHp2MGE4cWIraCtZME9rQXAvVEkKLS0tIFpiZDhCN0NIY3FWTnlXaFhiMmtC\nTFJMUncvMnFRSEhNdHlhaWozcjlqYWsKLDH1VFG/QS3VIMn6Iwo2NmY5kdBiOPNR\nj4sOY6xBpWP5AiGUypGoX4Bm52gLgW5AdcBRIxxhFOekIv5G8wmRaw==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"lastmodified": "2026-09-18T02:02:23Z",
|
||||||
|
"mac": "ENC[AES256_GCM,data:DN97Dcpy29IZkBbwFVnMxnUnWYrgLKuvbANabkMCdpOJYgI1msYODltHJlR68Lk8Fmg25sXysvdbJOnc2cMH3pgcKxeyfhdAFwlIXdie1HRtTpZql15RF0fwPBGJjwL9YYubpZU7K4cNflGbjuOCEhp8bQOUYY8Ptd2deiDGGuw=,iv:bxTcKLUu6fcz7JKzStKiakgBeNx7aWCw6M7HolthfEo=,tag:/0nWBkdCPkpcWSpcfY/TfA==,type:str]",
|
||||||
|
"version": "3.13.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
../../../users/admin
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"publickey": "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg",
|
||||||
|
"type": "age"
|
||||||
|
}
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
392268
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake_line_value
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
cf28bbcd822efec197dfaa99fbe9004f78b4efa9724b4f453d05f12a61a0bb44
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
CrnzGbqfVORt00zeI99crpBRUMfGF+2uEfaHe1L3Y8k7CIojc+8TID40HPhwEgXNtC9/xr61mN5L0Vp4vpviBA==
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
200:61ae:8864:fba2:27c:d040:aacc:82d
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
../../../../../../sops/machines/nodeA
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"data": "ENC[AES256_GCM,data:hR33SvxgsU+hZnvF2hoQxE7n0IB6kLC9MgK0wS0NXpCht5NuPjTo5p51oUE8t95Dht2qlEdXAkGO39k/h42p54vhqcfuF7u/eqVMdX6pEJyOokFmsdDmdVZziyhZghrTI/nDlctxCPcqFkeCHU4SIBZs85NS8uk=,iv:Q8k8OXSS3lFw33UO8JiZYNkrH3s+Cvh0xnAbMiBmnNA=,tag:DtNYKgDYB2nSHIjvMdvu/w==,type:str]",
|
||||||
|
"sops": {
|
||||||
|
"age": [
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTSzk1RUhIekVJRStQd3Er\nbXlHUmtVb201dkRteVR1VFpoMTVFcTFPSG5NCmlPcVM5cWVJQ0g0VHNXaS9rTzh2\nWTIyQnRXakVCRWRQL0xuVUdDOEV0WEUKLS0tIE43RENWL1M2STF1VzdMcHJTNThh\ndHpqNE9MMnkrMlIxN2FEcjZ6anRIbDAK3rZ1lzO42bH37lb+zoeF6rKoVgI0TBST\n9EoVwom5xOKtmVAh5jobY/z4TGSD1BqQ6P2rQ/IM1Dtw3/18Yk7TXQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age18yf7r0dalnue5vwzanxl046fxsskhu9lzvd488ajhz7rp62mu94scmw3w4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkdDFsSTZHUG54ZWNtQVdj\nZno4enBaRVlaQU1wNTBEVDVscS9Jc1JaTXhjClA3YUNQa3B2L0JXY25SSHRGbS94\nNVVNdHZ5VzdXcWpXZG1ZS1U4T0NPUkEKLS0tIFJLVmZyazU4dWUyVnpvRDRWbHNn\nZFQ3dlhxN0lwc0loWEZIOE0yMElRV0EKeUVy2QpLHbJ8JUCl07f74V+ZnRkGfDdP\n5W28yiLuq+LYfKUaFYeRDvSVFCQo6FiYJcBPGmnPF5gg1BIUtUUBYw==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"lastmodified": "2026-09-18T02:02:10Z",
|
||||||
|
"mac": "ENC[AES256_GCM,data:Oq1UCi+VYuuAkMmVBife740m6fiXC+PfkaQAii+FORyv8Zpj938cPrZzE9z/LO5Ixye5cbUHGRhZr0vM1egnv9nhIFyfGinKyE/BLEOXHxOtHnAXSQOJU2bWiR6w/QzVCTy6vTTVnqD2AtEfbKndIK1PJ0ASLvxMGaRqRsA/juE=,iv:xCEQg6DHV6hbyfBk62bUKA1lnC3HgQtkn2o8i2CFjhs=,tag:Zvt9tomYGoDFDQGjLZC59A==,type:str]",
|
||||||
|
"version": "3.13.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
../../../../../../sops/users/admin
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
cf28bbcd822efec197dfaa99fbe9004f78b4efa9724b4f453d05f12a61a0bb44
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
981794
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
fake_line_value
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
7291692f9a94948724377fc22055edde8e2773a581153317bc20bd5779736647
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
IwAOYcmClqi8K8EStthYMqWCr6WsxM3nD0CLDRvvb7I3CUyihXBjdghXLutDD/bFsHKzOkDVV/gLnTuRj9IEAg==
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
26.11
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
201:35ba:5b41:95ad:ade3:6f22:f7:7ea8
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
../../../../../../sops/machines/server
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"data": "ENC[AES256_GCM,data:H1ngxnRS+cFNSxe9K7C/xNS5hzXyeTWBLZI18TPvEyT5l/MSBeRuK6FZ/G0xUGQAJw4Xo1nyX2PZEYH5wjhnG0UziKAZeM2Oe0G/ilpNbHeMS+HLVriDETlMQz2Hf4Y1J6jOZqSTgFuPMVG5armpZUYTcW+p2zo=,iv:u9sO6eiFzxtT7uImnHLXT3aYJJxgby8d5H2ckfZdNIw=,tag:ZLl7AHHRF+jmr0tnujrpIg==,type:str]",
|
||||||
|
"sops": {
|
||||||
|
"age": [
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzdy9HVVFoa0N5ZnBDVDhM\ncm1vQzR3MUpSbW9KSjE0YmZueUlsY1gvUVc4CmlqaTBxMTNvZzdmdkJSMmMwN01N\nVGsvUzJ5Q055Tmk2L2ZUNjRpSHp0bE0KLS0tIGJhUUNDbGh1a09aeXMzWkl4K0F0\nZ0dYY1FnNCtkVXRVTVkyeXZPbFlVbUUK3a/V6XP6m8MDYPKwlu8z0cr4inuKGGNc\nYJjQw00ou3BdM/HOPZrMjYHtjg5WdtzYiFCOl8IRkeiDaEmXcOBjiw==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSbW9lcXZweHZ6b0F1eVIy\nd2RWV2lkOHpoM2RkZWxSVEFwU1h5aXNMWldnCk5lS1E4b1BDMmRYUDNHK2NhTlVT\nWGpLWm4rUnpFVWNvMHNzclJuemNGZkEKLS0tIGZxcmowODUydm1kL24yVHd4YXl4\nWVd5eWZMZ0dyS2dpTDhuNXo4S25Ha0EKvc3hwrmlP5JcH7eQeRfoq40w/QdnQL8s\n+DAwsajzRp6H3/XVTm+nDQ+Qoc3aenewZkk6Pgn+x43hAh9zwuvGkA==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1sy8xkmssttcchjj0nkapk4tu530lrzszdp4lka6nn4gzlxam6e2s3xzp2j"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"lastmodified": "2026-09-18T02:02:24Z",
|
||||||
|
"mac": "ENC[AES256_GCM,data:xrshyxQAnlSORTzxxcpt0ABaNWSCCVnwHl6oPUQ59reumF7BoAy8HmdSyWeEpIKBNo2Ane1xxXBHa62+w58r0WjcneNzy8yIBBwXr1BIRZPX83HrSz3+bENPtj6TPWdHpFZ5aDFM2jVlUvwIkn/4g+1B9FnQtoH8kuYBGe2uGCM=,iv:slMt0ag3Kp3iD89jQa/YDta4mJccKiSqcTCt8C+1Dzs=,tag:o56eg/BSHOtBUeNQqRjQDg==,type:str]",
|
||||||
|
"version": "3.13.3"
|
||||||
|
}
|
||||||
|
}
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
../../../../../../sops/users/admin
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
7291692f9a94948724377fc22055edde8e2773a581153317bc20bd5779736647
|
||||||
@@ -14,11 +14,6 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
nixpkgs.overlays = [
|
|
||||||
(final: prev: {
|
|
||||||
libreoffice = prev.libreoffice-fresh;
|
|
||||||
})
|
|
||||||
];
|
|
||||||
|
|
||||||
services.stirling-pdf = {
|
services.stirling-pdf = {
|
||||||
enable = lib.mkDefault true;
|
enable = lib.mkDefault true;
|
||||||
|
|||||||
@@ -10,10 +10,10 @@ in
|
|||||||
perSystem =
|
perSystem =
|
||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
clan.nixosTests.service-stirling-pdf = {
|
# clan.nixosTests.service-stirling-pdf = {
|
||||||
imports = [ ./tests/vm/default.nix ];
|
# imports = [ ./tests/vm/default.nix ];
|
||||||
|
#
|
||||||
clan.modules."@clan/stirling-pdf" = module;
|
# clan.modules."@clan/stirling-pdf" = module;
|
||||||
};
|
# };
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,5 +7,6 @@
|
|||||||
frappixLibsOverlay = inputs.frappix.libsOverlay.x86_64-linux;
|
frappixLibsOverlay = inputs.frappix.libsOverlay.x86_64-linux;
|
||||||
frappixPythonOverlay = inputs.frappix.pythonOverlay.x86_64-linux;
|
frappixPythonOverlay = inputs.frappix.pythonOverlay.x86_64-linux;
|
||||||
frappixToolsOverlay = inputs.frappix.toolsOverlay.x86_64-linux;
|
frappixToolsOverlay = inputs.frappix.toolsOverlay.x86_64-linux;
|
||||||
|
frappixAppsOverlay = import ../pkgs/frappix/overlay.nix;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
buildPythonPackage,
|
||||||
|
pythonRelaxDepsHook,
|
||||||
|
flit-core,
|
||||||
|
mkAssets,
|
||||||
|
fetchFromGitea,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
version = "0.0.1";
|
||||||
|
src = fetchFromGitea {
|
||||||
|
domain = "git.b4l.co.th";
|
||||||
|
owner = "newedge";
|
||||||
|
repo = "default_thai_company";
|
||||||
|
rev = "caad6e77da35c9359b0dbd75ff0f39bb01891caf";
|
||||||
|
sha256 = "sha256-LH7E1EkecNPrhfQWSlWzPHHuJLM6SReCAifcFPDr61o=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
buildPythonPackage (finalAttrs: {
|
||||||
|
# pname doubles as the frappe app name (services.frappe reads app.pname)
|
||||||
|
pname = "default_thai_company";
|
||||||
|
inherit version;
|
||||||
|
|
||||||
|
pyproject = true;
|
||||||
|
|
||||||
|
src = mkAssets {
|
||||||
|
inherit (finalAttrs) pname version;
|
||||||
|
inherit src;
|
||||||
|
yarnHash = "sha256-oZgyP0hTU9bxszOVg3Bmiu6yos2d2Inc1Do8To4z8GQ=";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pythonRelaxDepsHook
|
||||||
|
flit-core
|
||||||
|
];
|
||||||
|
})
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Extends the frappix app scope with in-house frappe apps.
|
||||||
|
# Must be applied after frappixFrappeOverlay (needs prev.frappix).
|
||||||
|
final: prev: {
|
||||||
|
frappix = prev.frappix.overrideScope (
|
||||||
|
ffinal: _fprev: {
|
||||||
|
default_thai_company = ffinal.callPackage ./default-thai-company.nix { };
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"publickey": "age19hn633nzg6kga9xmnfjaw06h3lkdg0sfqmt2uefp7neefy3xhyws5mf5y5",
|
|
||||||
"type": "age"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../groups/admins
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
{
|
|
||||||
"data": "ENC[AES256_GCM,data:IvMl875ImDUJ3Xs3symK/4UCo80hO1pdG6mi8KWMxpP0UMX/nT5otxEeFq7AJzs4YYMXW0K4tRL/hvt6mRRxku9vGJVAu9Vs/A0=,iv:W9v37uSJ29UwnF0rFLs8R8Hlkx8/yhZDm2e2XXOfwkA=,tag:Q81/tcyAv9HmFczKZpFmXw==,type:str]",
|
|
||||||
"sops": {
|
|
||||||
"age": [
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNMm93WSs0N3YyeEtrczBZ\nbiszcDA3T2RNTWE0VHEreWhWVlB6ckQ0VjFFCi9teEJJNmhCSUtuZk5pVG42NEUx\nT0ZIbFZEYzBiMVV6bWFXVGZKL1NDUTgKLS0tIFhON2luYmozd1FKNTFqVVdMN1Vu\nV1UxeTJmV0J6c3N5QW9ISDhySHNJaVEK/JU/d7w+sbEz84OUnvTZSJVyC9QJ8ood\nXjkgJHsZgMsejbH7lYCzRC2TW3RT5Ua/V8UkMXdwS8xJPIwuH9c4gw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIER0OHEzRkZw\naXo3L1h0YjJqVnI2WWwvUGxUUk1DQVRDY0NOaTFDRE5KaEkgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpCMWdaNjE3cnhVbjRyd1N3aXBncDFa\ncWdNenRQbEVoWlowTG81K1ZCbzZ3Ci0tLSBYQmFqVXQ0ZVJtOGQ3d0VyQUpUL0Nq\ndDBzd2FTemRjRnpuTzJVek1UakRzCpykqaKGjEBAzyZfGjrQLLp+/Xq54eBgfXut\ndvOlzztraSD8zSjb0wlyoAz2FsblvR1fTSsMStiOIso49PzPDQE=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGpYdU9lZkJE\nNTNacUNDK3kzNHdvdEhDR3U5Q1FCUlVlM2gvVXlEN0g5aDAgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwo2NkVNWkN2RjBXUlQzSkhqV2kvMFYr\nS2tXbGR0bkR1RXlWSExUVmR6SlFVCi0tLSBWVDUrVTIvVE1mTms3RWlOL250NmIw\nSmdXelpqVUlTdk1LNzBobzZhME5NCvMuiIIOBmYEtKwKgaBLR2F7ggBKAeiKi5X3\n/vjRvd+dHuw7AscQGFhQFQAtQS61gmpKcbYEW6lgMlLEH/ClG7E=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIEtRWmZRVWpH\nd2hwVGRVQmQ1Y3JRMUp6eWVBRmZEbXRiYitpdllvNlhtRkUgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwo3VUtyRk9UNVJ3ai92UmtseXAwbzZN\nOGhlVm96L3pHV3c5d2kvaVpFU0l3Ci0tLSBsRTl3SUN0anU2OXZGVmNZVkd1ckFN\nRVVRT0pmTzR5VUpNR0lDZnd4cjZZCp6lMaOHy6xphC2YDON61ocx3yncwkqrRZGO\nQ/9bgQ5qmS1oIwJ39dZBKm7zFSL8DRDKUWV3fRAcPnZfJcZFn2w=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzQ2xoK01TTFg5QmNrK01J\nTk1IZkU5RStGYmc4SWtMYm1wMEpxbno1N2xrCmxZRyt5VlBXMTlkelpqbW9hTURQ\nVFo4VUhUQUhZcklqTDR6TW9ydmlxb0UKLS0tIGdzQ2Z1ZjRIL1o0Y1liZjdCb1FG\ndmp2dEQwaGlDaEJGeTFnUDV3dU5lYkEKWZlL1rH7BDdhkLXXBJS9gtrMRlyvZCQQ\nDHLG1ZjLo1lGCHcBwzQJ7q6qCQDLlMxXJVbms/1oIktQOJ0Z3t57VQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvRG50eGw4NDBEcnM5d3ov\nOVRlczQ2QTlkTHJGUnhRZkNNWXVOc29hU25jCkhyM3BjSHZCTVZjVy9uVmpkdXJv\nWlRETGFWSDJvRWU5R0lJRElveE1SZVkKLS0tIFV0RmRlNWJnQjVMWmlOMC9NdGxa\nZVlvRzJsR3lNNDV3YUxhOVJtN3FNZkkKf7nK9X9EM9bdSxZDrdFK4pNzoRogq1Hl\nuuAg0JVIrYQzxLnJoyQ71TYegbTdgdG2za4NTsDCBIQt7gXfC/bTvQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBqNXdjQnpRYjluaUdrVVhJ\ndk9pQzByS0ZSN0ZmdnQ2WktYQ2lSTktlZXhBCmROUmErbXlVSCszM1VldVViN3g5\nZUZySlhsUmxYdnZCcjJ1eWk0bDZ4NjgKLS0tIGxtdTdNNnFqUlJwOXluOEIzL25P\nL3VOeVl3djA3WGdKZlV1Wm56c3dCN1EK/r/FdrcgtKyWVnFHXNaRpVet1tOQvug2\n31/46/GTV5Ze6lN/GDcupu2a0n5ShWAy0OeC4IhKTQPZC/c7SdEqag==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjV3J2UkM2ZXNkUzVPZHlW\nNzExUnY3UEMvd0xib3YyRWxNcHRnRzRic1VZCmtNdERhNGVrRFJYTDZCUzBvTDl6\nWS84YzFPa0VualJyb2FPcVROVkdWQ1kKLS0tIElsNm44VzlIcFVhdWpjRHNTMVh0\nNEx1MFB6NTNYWGJYNkticW10T0xTcVkK84kDLpPXz7AFWiU85NQ6i2cz+6IJAAiz\nmIIRh8ZDV0xWEsRMYjgQ/nsASZ2f/CWNKXx69OQc8i1K69cpolE3Og==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"lastmodified": "2026-07-27T06:45:50Z",
|
|
||||||
"mac": "ENC[AES256_GCM,data:8QCATjju4hNMWABf14VEiikdSpo4HMX9cir/2IFJgw6UfEj+HQvusUidCCQqDkEInGbPgQtGEhZvjkuxw+wldHcNBpquIeWKa1VWuXAgudjAt77FH4WklhOel40FwsbjNYEj9gP9IJgir6Rq3bLyhFQAcUZWZH7/ho3e89H83Sw=,iv:Q6DxVST634mpw4ZO1bjhOTeZiBunNHS0Pz6X2up300k=,tag:7Mmxo6zSPRjiXLZSpEZxrA==,type:str]",
|
|
||||||
"version": "3.13.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../users/kurogeek
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
../../../../../../sops/machines/alasia
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"data": "ENC[AES256_GCM,data:pBZBU0CmwD+JbtReQj+o7uSjp0SNGclBXykJLkuZQ42HcytZrurdT52i7bImFhpiob+umVhs,iv:QTr8Qg2+l//8weQemX7rux0rXEwr3+4yNTBX7s8MC5o=,tag:dxXlypav4RJyE/0o9hn1hA==,type:str]",
|
||||||
|
"sops": {
|
||||||
|
"age": [
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNZDJQT2dzT3kzMFJUZG1r\neG1sbytjejBHaTgwbFo2ZXhENlkyVDFOOXdNCkVHaFRKa0xzdm5iVWNUZlR6SnUx\nbTR0MFc5KzRwYVlDNVVOU1dqRFJxT0UKLS0tIEUzYzVINEF6ODhkR3FGbWxDOENJ\nVytDMXJ0d3h4S2lDZWlGbTdrajJmZGcKQQGjy1XEgNu13f/Eqgr9bMMgM6BOWLCd\np+nbHOzsci5/rPs3CEmIvzSNcUQh90a2ct2VygZxBpJLi/3hQNh0Vg==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIHREcGFNVGNM\nQWpqZFk3ajIvRW02MUpWaURXNTh0TXlzYTI1eWppc0w5V3MgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQplQVNhSldIVmdrSjNWVUcwTzBTOHFL\nN1RocVN4RCtMdmZ6VHVSZktTUk8wCi0tLSA1b1c1UkJZSWUzVmhnT0pUcytzMEZU\nMFFpclVQM1FBY1VwcUhnZmtNU1NVCh1PIFWlRwCO3H1C8eBCOQYEKFEbng7ycB+J\niFHrMPMjgjc/upoU3FaQGS2I3EI8dPpXjQGP+GFyIWAjw/2r4cQ=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIFYvUHdqTUlD\ndGtVci90RXE4NWowSXMva3BOWHBwMkM3OEI1ZXg4YUF2bFUgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwpWbGc0UWhKU2lob3pqVVVMeTFYUTI0\nOUVPWjV3M0hHNmhZUnpWMGlMZFJzCi0tLSAycHAyYy9zRStLUllKYVcrck5XdHVr\nVFRKaGZXRzdPN3FhcXV5YjJGVU5BCgmam9x9dCW7pkpBZfMWrYewGq/F82fJcQmW\njGq2xPG/8GYe9aGc8rpg1kqGgmBSm/3f1VhVhb0cizB8RNyDyog=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIFdBTmNSdWh2\nbTE2dDRzZ1JrSHdnaGsrNk9nY3BVZHBjVG1nSm5zcDFHbFkgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpsS2l6RmxoL05IQ204RkFNVXZka2du\nSmFRWTBKOXFEcmxIYXZab3IxV2R3Ci0tLSBtbUdibTd6amo2ZFNxK2NGOUZxcGpJ\nbjVrK1o0MU9LWWhnMGtWQUpVVEp3Co9ruCG5da1bskRGNBb3I9Oz94PZGGlPBHr9\n8vEvKEx80rOzHEQXbPae6pRrpJvqlBvgIs7CkH5VRmZdv3J4Vdg=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxWG9DS21RNEhrbnlKRzkw\nWjBsRlovS1VaTHBnZkhYd3BuR1lzV1JzRUZZClJSQmQ3Z2p6VXlRY2w2OGlSdFgv\nNjlCdTFFTXlGZmpHYjJ4M3BvUGNCT00KLS0tIEs0TFZGMk82NW53QU1oWUNXTkZG\ncmE3Um9SbGx6ZlpZRU9ISUhkcTVuK3cKdipCQRAQGyCSfgGiPN0ANn+GGXfgv/ys\n6XZXM4Mn1klsfjEwgtJBUAvuHm7Nb1PovxzIVYm8cRt6ikqq/a+irQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNbGNVUENCbjM2bndBdmZp\nU1MveWp1MmRlcjdkVzdMY3RMT0IvRTFKR2hvCjg2RmlJYW15SHdJT29lTFI1amlP\nZkxnQjhlRGdhVjRESGpLQWdKWVFUWlEKLS0tIHdsek8vS2V5ZTZLK1pUUEtZdGJY\nMlBUMm1TYTEwMVBZOTBMRmwvMVZuUFEKJqgzzcdrKv9CJ0sJ8jmFJSnBNZfpsvSC\n3h4mjGtm/ZDOLu3mYSkyTvlnTqZnhAdtrMILhiym5Reo1c1o766DqQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKRWNLbVEyUFgyZnpGVldP\nWmg2OTNVSGFTTUV4SERmanNlRXFCZE54aHpvCjk0RSt3ZCtZUnQrOUFzdllEaXFi\nWGJGY3J0L2V0ZFpWeTJhY1ovZytWbmsKLS0tIDlBbWhjQWlyZzlwWkhnQ2tDTGVW\nR3BUaW9DQmRsSkc1cGZZSVk4bEZpVUUKbz/jvhcnQWV+WgNVvpihj9ZDU4/VCmLC\nZv1QTK62G7AZ5h2TseDDGQ4fqjdXZg9/Y+es7We5qMm4iKbWfeWJAg==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjWGlJQXhRb3ZUWEdZZHBp\naGhOU3RoUVBPdCs4YkZNUURhYUpucHlBYlhRCmdHUDBmRDVZcjE5bGxCWXNHSGIx\nN1FtcGhOOFB3TVFpVVZ5bnI4KzgrRW8KLS0tIDk5V3ZtcTJFY2xiSU5CY0tyYkRo\nbjBrVU8rVlRsUi9FbkVIRWs2aHlNWEEKZkw+AH0913qoh4Qs7dUJXaaQGCdngEPr\n5V9O6iC3w7vAcYTu7b3uxOuXnE9/ZmY48GuEcSsH0G7tPxJX6WNQnQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwMkViYWR4M0tUYWdqZmgr\nWjVUWGcvQ3ZBSytmdFMyMmN3dmxPWWR3bldBClJ4RTF3TDBnZFBSazhJSWVkaVRG\ndTlVSzlYcElqL0F4R0tkOGp0ekdVQ0kKLS0tIDZjenlSbUtBSWI2cUN0TVBmWEt3\nT3BiejBZZHB6TE55Z1g3Y3BBMFV1U3cK9VF9jgdRTe8YTyQdes/FKnYB0ZJbmfZT\n5jdXiNHh3UaiZQrDgUmiswW91YSeLAyCDiY4JQf4G/olSIuFBF+sfw==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1yrqpfs0wtaxg9p9058g2gyq7kffjnnqdw26wa4a4uvjqkzvmq5wqvdtgxl"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"lastmodified": "2026-07-29T05:25:23Z",
|
||||||
|
"mac": "ENC[AES256_GCM,data:yevebfScn3BinTZsD+7epCh/4CqUMPZBLYNv7Yd4+l71bBqTYMXjN53f1IvR9oAwZbkw9QV8/JXrxwUYchHWwFGAE8444AHR5AK5MYM+/vbce74Y4+ZT58owGmV2ftCSbp+SUqKtTtiopu1Bfv6rxDi33MLRSYiTcNnHhcSw+7E=,iv:ywc/R3kGO0Kbad1eUrXXHUPah5Y95mAyVA3cHmsTykM=,tag:LIRLXvicYgtCoqijUCeXtg==,type:str]",
|
||||||
|
"version": "3.13.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPPalEdSiBeGTiMVuSxzcW1DQnBmZTdiKP30T6Ubrr4Q
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
../../../../../../sops/machines/alasia
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"data": "ENC[AES256_GCM,data:otWbpm1vo3H9v9BKD1rQDxJxr4XSmdM/hC2UrPw/n1XjJ9q1hKj4yifNeWMCOVg23WtZl3kTZHa2LkWwuYzLS11ZfnwTNjgg2bl1RJ/JvPeiNB5HTnv7Cvx0vcS8Ffpm1s3QeOCVxrJqI/wA/COmHLO/44dId3sz/Z1D15dwkvlrcySEelK3ayD9kE6TgINh6j8JMMQ75/EP4Q6/bO4OghET0D+yAhrMjdFjbCr2ioqJ47/gWab+SkCBw2QsbhnTcpCZEIk4BrfhHBANOq2AQfw280PdPzuETJEuebO/r0E6ht6uhSqsZuUAESbhrhxkw8SWMzcqtHtu5GJEBQ6Nwv9tKDL+JiliZdNcwtcMeMMJYrrluglyqhg31DG/Zz5ZIGU5mOIlWIrUHzsY/s6aS53bb68WFWlTbmvrykwYcTpaEpqGYYXzGfmjDZBYWwJxp+6uUrOlSsoTEU6Iz7qEKuHGxVw0xSa5nA9p0rumSmNj6XXxQAT3hm1NWIf6AqTRB6AL,iv:LjGYbAHEPC8L/ZfRZCXElwlvHvC052i9aOn1T9CSn6E=,tag:uIuinhtzkfDigfXGiNFhJg==,type:str]",
|
||||||
|
"sops": {
|
||||||
|
"age": [
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrUjFZbmMzaC9pcEJuNWxt\nQkVpWDBZWHBlNnFNS3VsREowQ2xMMXdQL2x3CnQ0L0ZET3hQWGFPQllQLzJnWGVC\nL3VNcnRISG8raG1JdWJaTUV0TFA1bUUKLS0tIFRLL1phZW15MTVGUVMwaXdhci9h\nSzFHUmcvTkZMbTZDYmhmN2VWL3g3Y1UKXW2H6O4g1LtBFzIBICIGFscWyGowss2O\nv5/uusStrojLZMwdpi7qNNf4eadyefD+ZTZ/tjbAWKbctO5W5h9aTw==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIFpIQ25WQjNs\neFVOQmI5N3A1M1Y5Tk1QQTFKR1RuUDdsd2haNEd4dVl2Q28gQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpERE5veHl2aVBicnkxbTUrSnlIYUx0\nVEw3MHZ4ejlPUGVoYnRMYzBsWmpVCi0tLSBLTEUvcWxpaEpWWm5SMXJEL2psaXhK\nMVFiQmw4dzQ2YnJveElTMmFRSTBVCoIuiQ/pqV6RGEFhA72smvF1OEcmzaw1u798\nI3za4SCjxw0bDRJl0f1iHBkvtLWkSXVo5LgGjHgmDoRyczMyO0c=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIHpkVHJuQ2lM\nWk1GaFR5eGxzR2xLQ2ZDTmdsUzBpeEFZVVlzQi8yWG15UWcgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwo3M0R4Nlplb0ZGM3EyQXFnaTQxUTFE\nOTVzY2hiOFBITUMwOURVRUdzUEJZCi0tLSA4aWl0dDdOZUtiS0pXVWN3T2kydXFV\naWVjS2lvRitxUHI4TjQxekErZkY4CobqyEgS219S3f2LKf6AG5sqGFjBaTLDj6Yy\n9lHmyOLlYnNMcInGRTZFLK75a/+3VuobOlRyYX9p4euog5qpvYQ=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIEhaYWlxeGpV\nY0pBcko4NkgwaGczZjhXckVsZzlPTzJBSzlHRjlPM0tGVVEgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpkOTlzdkVrNHhsRG1xZDd1ci80U1Ir\nUTBHR0wyZDMxN1pkQ1RGQmFTT3FvCi0tLSBxeFBRdk4vVk9xaG9IWnUrNUNzMlJI\nMFQ4NHNnNStreUE3a0VGcEJBZnNjCpWyH0TyVUKhP5rFd5cX8gotEgM/weUv4V9g\niPigURlraeTdHuhWjLcHnbBX8cB3RwLbXS92HLQUXZPOoR3wmmA=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBNWjBiSTFRR2NDTHdlNzk5\nQnEySE1DZ2FiRjBYQkViVzcxWkVBUUVhZkEwClFsWTBVM0k4QkJiNkY1Sk43bVVq\nY0MyU2hROEE0UkRQaW54MkVaWG9GMzAKLS0tIDg2YmZPdFRSRTNCMWVUaEpvRXk5\nYW9Qa0E1bDZ5VUpkekg4RG0rWm9GMncKb0543PvWZ8TvIhrJ57TNKtwmbMGglUCa\nK3o2d+uqab0wgk75Ee7WvpaVh1s2bmIABysAj97SU0j+qBEDRSHbjQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBucGI2d2VsYnF3cVJJS3hB\nVzZkNjlmd1dHelhWOEQwSVRXbkt3VGhpaGtNCkd4c1RSajZma2E1bmEybmpVTUgv\nTUR4NlVXTXVZSlRJUEJiZTVDekJISmsKLS0tIDdvaDRsTXFaNlM4L3ZJZlVwNTN1\naEllSHpWbWEzVUZ3Y1dWVlE1OUJtaDgKoCjnnCvKAQyrGOOLtKL+y11hf+8kzox4\nEdDZenRf6Caov4J6XOlz48Ymp6o/2xGYBFSxmsOOr+JgHTlyv3CNfQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1T3BmUnB3dWZ0cFhuOW9h\nZHhBMGdxVjBRQ2JKNjFaVDQ4K2o2UmhvYzI4Ckt4K1RlZ0xjNk0yaFFCc1lsZ1hi\nQktzOWFGS2dHZG4yNytVS28zK1cyMDAKLS0tIEFUMFNhTHZNZHJQNDJQSVJ3ZkI1\nZ1M2RkdGd3pwSkdwVWRUeGdDN21oNXcKwdwT+wkVhCuHekeRhWWAF5jWJImtKVe6\ntyLQuuvcca9lUtMXc6+rd52Y90wSb/Ivweq+SFrlGTmLUTD4yBpyaw==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxc2RHa2xGTE1YbTFRK1J5\nS0toaGlTRjZhelRkNzRzejFJVXdpM3lXR1FzCkhPckFvZGdHTnlra0krYWxCeko4\nZjRlZG5jOGRMOGJWcTQyUnRrSlNRMGcKLS0tIFAwNFZtL3lHTStwL2pUN25FUGE5\nbVNGeFdxenhpNDBiblV5TG9mS1ZWK1EKeVDgm0RlZ1VgoHVhXMTq/juE9gV+2YMq\namsNumV5cfUqZyf522f3dczzBdG8c4gshLOxgEIy21dKzMX3m9qWuQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1bW5lamFDeUtLS0hYUWx2\nZkFtWG5FYnVMalJxUFVFalowY2dPdzRwTUcwCk0yUDJ4RmhadUNXdEpIS0o0N080\nTEZZWUJUOXFraWVSRzgzd2ZKaFc5bU0KLS0tIEtPTDJ4ZFliTERHM3V4TlZzdkxU\nNDI1OFNNaEJUc040Ylk1dDN0bFFVYXMKi3LEsLq7exYTlAlOiybAtIau762Gbdwf\n5v7i673N5ezxactBTXA3FFr4av1J+IYz/HISZwAYw9ShekNQ325oyw==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1yrqpfs0wtaxg9p9058g2gyq7kffjnnqdw26wa4a4uvjqkzvmq5wqvdtgxl"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"lastmodified": "2026-07-29T05:25:23Z",
|
||||||
|
"mac": "ENC[AES256_GCM,data:5DdMv2A7XC7g1xhAf7GLIctaTCeaJGxQX2O44u+e2LBLueC093velEjY9wE3XxJz7/2FnSbtvWapUBq4YHlvzbgmT1exDBYfeGm67WNnyxD8NeVTETaE43pJfjBsJjWwwQPFioTMYpbXfGX10vN8691CElsWtKXRUYTcgDlgIrM=,iv:1riUOQmQGb2cN7rp5KEsVIo79o85r5NLCphRjNuOx7Y=,tag:S/dlRhw2Z7InY2lxRzkgPQ==,type:str]",
|
||||||
|
"version": "3.13.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../../../../sops/machines/anser
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
"data": "ENC[AES256_GCM,data:tUZ5LYtqBRWOfYxY3yiLiX6hIzj+72MVC6yjj7mhf3i6Iuo2ImTiJCtv9LluBbae+wXA1VSapkziGq/+00iLNYlQZhD2IPKRvG5QkjoQmEQWSldZYlij3wX4T8tmDEcK6IWSJeWU4x2Avy54OSQUOxIwPrIN4pxZwgvipnyFuyoRSpBPdfbLwc9WSd/5R9gOu0mE2RHbdV4nRVDLZ7nN1YcNsLxIebY+lWdGuQyn0yfWSm7Q+d7zxIRlhvJ29viq7SqyM9JJeO9ZFujyKamPlWwWdoSzA9zCoqMDo4UereUEIFtoa8ENwuRZ+iMu,iv:EPwm6L/aLKMjC0n4WUNPtAvZDq9tAwLKNl8bvuynpPg=,tag:5yFbIEJ4rudQM+WZZs3+pQ==,type:str]",
|
|
||||||
"sops": {
|
|
||||||
"age": [
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0WHhncUs2dlJDVHpMeGdR\nb0s1M2wxSk9VMnhsN21oaU10RDZSSUJTbFd3CldpemxScHpOREhVS0FuN0NTWEZh\nS3FpQUU4Nkp3djZ4aE5vWm1Pd21SMWsKLS0tIHBYN0Evc2k1L3I2UnZUTXVra0ZI\nSnN3YnV4QnFjN0lPN0p6cnc5M0dEVDQKQBTISXgiM61kzoJKI97pLdsgHtD3SKQ+\nHgUbfrZoMGMHzi+6FTX+USy42rX5NzD+B2goLGUSOfHbANdfnONkGQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtZmJwYjY0UDNuQ0VnMjVI\nZzZVTnp2RytEM2NQU1VoU0F3QnVmc0dKYndRCkVpYktMcUY5L3U5bm1UY1pDRzlM\nMlNCZTVCeE4vS245UDdsRFViM1hZbjQKLS0tICtBdGorT0pTM2RWMzZuWUhpM3BH\nQUpXaGpiRGpDR1lEWjRMNUYyK1p6SDAK9p/xZ4H8bvIRoVBDRuJdqBVNFekRrCHw\nYJ60rTC+hTg+shVz4DYKSOsD/bi4U6pngNbOYYcXaosXApI/UZVR9A==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age19hn633nzg6kga9xmnfjaw06h3lkdg0sfqmt2uefp7neefy3xhyws5mf5y5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGQxai9YZy90\nNGpjMzhWNm1DdU9OOHRvVkkrTmh2M0J0b0lWOExSVTVMRXcgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpZOWVCc3oveXJNa2VkSjVJRkxVc1Mw\nNWQyazN2NXlHUjVQNWNTQ2NkKzQ4Ci0tLSAxZTI4TU0yYUxFS0xZaHYxRnh2Vkwx\ncThoTEhXSVZGVGZZWVAvVzlBYVE0CmEjqR1hUhtSqdwcBYfiXXAZaFdcbhZkTIgL\nl5m/X3KCPDW1DhE7V5L/jK4WGY/DEVubj5iJs+jgKfzf1b7Ut98=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJICswKzBRdXZP\nUXptS2Nkc3BIVDlrU1dmUzVEMEdjZmRXWmFTT3N2Q3ZObGsgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwpEcExtOStoci9xWVljbEtzamxBNUJV\nZXlCMU1FeThLODBUdGc4cDNMOTE4Ci0tLSBkMSs3dkdFSmppeDZSRWwzVXgzaThT\naW9pNjhCZ09XQ0gxSHA2Q3BqVWwwCh2/zLWar1lzR23FC3LZmnRLO3rkmxjYYBHw\n7UgCFw9UDzwrhYxgz8v+kybYJtSQBdcqSBDj+oHBdHVZ4g0rxwU=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIFRxK2FRdEhP\nOXorOTUvTGFyVi9vOXpuQWFJUDFkU2xBaENqdEJMZE1jV1UgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwo0aTlkNURkSEE5MUJjV29ueW9jeDVl\nbzZHSWg3NndrQ3ZndTVnaG5ueVpZCi0tLSBBbDlrSG03b2ZHWFVLdE9DaVY3bHNs\nMVNwS2w3N1pCT2MvcWtRcUtaeThBCh/+sNjdNGS4M5H1J1lXLnBREfFADgoTI8xG\ncG8c0POg3zTctbhiGj/Ilxkmqt7VXOTPc7j8f64QznJa8y/U7Vc=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvWU4yOUdaL2dCSTB5Tnhx\nNGdueVBIeFFkWU1oM0NKL3U1OTlMV0pwSVJjCldrcER0SjNvMCtNSXVja3VGVEhR\nYjA4Z3RLNUZUS2FBLzJGRHUzclJCTE0KLS0tIHh3bDJmSzExS3B4c0lBVnA0b2lG\nWkZDbjQxa2FJcG9SOUN3em9NNytGaEkK54p2+lei9pJtWIq8bYmPydsoWf3tb1NE\nK2SJVf/uO/GIHpL01kaePjdnvDANJJ9xmtC0UzdcAlFKPSu4bOeWBw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBnOU0xcEFwcmRSaTFMdUFY\nanFabEt0aHZjcjZsM2xvR29WVER1K1Z0Z3hNCjRoakM4QTdmcUlvRlNLVkdwR3lp\nWTE2RktEdDgrTlUvYnNNaE5UcjBGRUUKLS0tIHRyVVd5U0hSMkJvbVZJTllBVzdV\nMUxnVjFvTVhReXNIRm1MKzNNTXdLTlkK6uIT+q2LEreo2w86yQT/9BZTrEvCQrxH\nyd6Ky3QlDrF39GviD3tdPZvyhYV4ToB4gw89zE8PR40xAf2inhW8+A==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1Uk0wUXVnb3UxSWE3eGRH\neFFIRVJDRDkwemZ0eDU3QWo4ZmVhWGxrYWx3CmFRdnRGMEl4emJSL1JWZ2IwMmF1\nWkVFU3lMU2p1ZE1pMUpEVFZ2Zkx1ZDQKLS0tIDFSWXpjcldYQnBleU4zU0JpZmxN\nWGhuZmVXUjY1VGdVYTQzbmtLUnEyVUUKqTdqSUOvd+RweI6TIGfDJ8yB17sryOgK\nEQo+JqF4/B4HWn6yAVqDclU8u/7UqOoHOmO6hUve40NqDbmCBtE+3A==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxMnZTMGJpMzN5ZW5OdkRO\nWU8xcnhlQ1AzSHpoeitXc2V0MXFpZkc0ZFNzCmorakV0NE5WNGY1Z0Jzc3ZSL2tr\nWGtweCt6K1I4M09zL2hVRnlja1ZMOXMKLS0tIHBqUVBNMzYxU29hUXpFKzRyRGFx\ncys5UmROMTZTUTZ5UGVoQUtJb2t0VTAKIb/lergoqns5JtJCSc4dbxANj4M5/sap\nZkeb6wVOKxVu95IN2XEYv4xIVf5bQhBux3R9yZ9NYqL7f1HPHody7w==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"lastmodified": "2026-07-27T06:45:51Z",
|
|
||||||
"mac": "ENC[AES256_GCM,data:tz8Uv5ivlq/QXbHaEKuSTFF0aFLXzzeks/tHTMDnyZk74DmLXMH6uHq32zr0vKxCJE8Wj1idk+YuTCEAXZ0iiFrqSj41h/Sxy7/9zP8+/TyVorXd13h21qCus+n0MEKDRx0FH48UqJnFsighkUUmxLwTwoqxe2kbIJPMBFMHvNU=,iv:O2zTDDBSVpNDOajMfVQcCx9znMFR4HKUBq1eUEkODpE=,tag:9Qw7Wh3fPsCoJr+vr6nFEQ==,type:str]",
|
|
||||||
"version": "3.13.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../../../../sops/machines/anser
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
"data": "ENC[AES256_GCM,data:xTqEDXSAj6B01PEHWX4BcjrCDoIohHHKa9CdYUpFzwoXDN0aTf6kMu///cNMbopQPt7Zk75ms3ZI9rGgWZS8mcLEP2I8G3FZSEWpD8NFp3Rd/K/HnHcLH/kH9B+S0lOos8noqlDamADfUXsTB3dVXn5UL77Nai0=,iv:QwBWcf604NgxbuZzPy6c2FQd+02EtHIim8lZYqbtl00=,tag:hWggE0DiF41D3tFM8nW2ag==,type:str]",
|
|
||||||
"sops": {
|
|
||||||
"age": [
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTdjJRdXpHVVhyeGdTRkZa\ncDBsY1dPSlVPUEdUZFkrZmNocmlucGduUlVRCk1CbTdaaXdHK1R6ZUF5MkxRL3Vu\nMnVlamVYeEtOQXVjNjczOThHcStoWHcKLS0tIFI2Q0JSVkd1czdVb1hNQ0F6YzhQ\nbTBMclBLN3dLR0ZPMENCMFQrd2hPOXcKy8OhNHyNRz+Fnyh2gjiHBgSHuATqFTgC\nI+oTgxOhApy0OFvmUIMO5cDyvHQDZrk8xUgGbTd8d58MNRj5CV1HXw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPaDVNT3dEMTlNTHdYZHpQ\nb0hkQ0dBMmczRHF6dFUxUVJKTTVVNUNJOGdFCmFyVzhpTnZiY2lSbExJMUxReXU3\nZ20xSEl1L2s0ZEV2WHBnVlpPLzBad0UKLS0tIFhCdmZHNC9YOEpPZGdORDZ0M3JZ\nNXlKdWFicmxyUitjWHZnaWVmL1dvSE0KLI7B1JKoZeVXr0hkNywrSRbCG8QevGmf\ndkcF5o0KILcEG+9zHHjKdkYF2vZU1OwBxzGWyIyqPs4ZAtVucOR6OQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age19hn633nzg6kga9xmnfjaw06h3lkdg0sfqmt2uefp7neefy3xhyws5mf5y5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIEF3VSs2OEl3\nSExRbmp5Qng3NzRJUTVmNE01akNjQnVKK3dIUVRHTDVyRXcgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpKbG43NkM4Q29oSHpaRXVUckFONTdW\naEVuZFMzT2JOZzVEcWFxN09DMy9VCi0tLSBicDVIazJkYkFZYU12T1F2ZEtSVzhN\nL2dhUlJDa1BPQUFHbUgvcXg5ZDNVCiIh3MoR0FL4GoZ6JrdJlKnk/TPCeTLjJCra\nRruqeb0BKShSX9vz52mk83/9i7aawdEPsFzX7mM6gmKhHOSxEyA=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIFloeks1bit5\nWC9hZXdLMWZ5OW8vTU03M3dHek5BNDY3LzJqc2p6NGVSMXMgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwp0UHNZd2c5eVJSUmxrQ3gwK3lzUmVr\nSFJnbHJvYndvY2syWkprdG9aSWxBCi0tLSBlV3UrSDJZT2hjV0xoYVU0TUVSZ01a\nazc1Y253NHM4R2xVRlJ4SVdFWkpRCgAOxjQ5xv5Trz5YNRGEPSvr9lyNsBMZxEwM\nc4wPiliulHU6PjIhqOucilfI4qdlAv9GJlyDENEzQlyouWVqCKw=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGZWR1pTalJr\nRGowbmQraUNPcjBKVjZFRWhlWW9jN240NnBxWktRWks3MFUgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpNMHJTbnZTVFlxdHp5amlxTE41UDFP\nUHRTb1FoVkd6YTJjRGt1NDVEVGFzCi0tLSBjZ202UUplMjd6VnVWZS81Qk5uTndP\nZ3N6a21MUEhWS1ZqSERsaVdKdm5BCgDsnjbntpSpd4o0AXMc5TViUrRLL8jJyQ6w\n/f6hQjU4AM/en+OpME3ncX/4PhmqoeSKMGbw28Y+RnW3UQzfNSU=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRWXkrTzBpNVJ1bmwyWHUv\nbVJFdmZVSjRBVGc4RDVybWVHU3BvLzJrbVhJCkdObkxpUkFzN2NZR2F5OXlXY1lz\nY2puT01HU05xWjdtYk5QeDU3Q0hWV2cKLS0tIGx4WXI5dGplZXFKaGVyUllpVGh1\nWkhuVG43N0pHUmRSYS9wdkRzZm5WemsK7kYVFkpXQlUsysLR0cC1AAQkdYjZ7cn+\nY+Lo4CJPUEwybqE9dSNvOosmqPkyXWtaIT1YmD9HunU/qoQ2lyHsKQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4YTFHUlFlaWc3NUdQM2Jn\nZEVEYlU2QnZQNWJaVEtMTzFOamM5Wm16WG5JClE1dXlRNHNWbm5haTlpZzA5R1NX\ndk1Xa0p1TkFaYXpra0l1cC9QTmlaV0UKLS0tIDJHa0hIbXdqWUZLM1FiUUtTdFFJ\nZ0xyRGF6T2NNVXBwamdQNG1PdjlqaWMKmzYuTZEURU0S4tQc2lZhRVVy7DPZQseZ\nA9xCWKagbB90r3WWibYEXYVgN8091diLzLijQGOkVTFIkK1EtDLtFw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBIS2RyRllNUCtaNGZ2WGJ3\nMTkxSkI2TElsOFZGYjVQTkgvUjVNeTRPMEhJClVFNDBpL1NLL2g0S2RwNVRncHRt\nSUx3NXUwc01NOHNHVHc1NklWMHhVc0EKLS0tIGIzSG0ycVlFYnhDT1ZDdXJxWmE3\nZGZNSDJ3bnFmK1dSS2FRV0RtOGoxc1kKO9aYqhXMCK3T0f762sp0kUKXhF4RUb2u\nAVyKKinThT7/TsjYl4bzwAeAbrZ7oqU+Lecm9grcXtI8GkTEVV/f0g==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSM0xyRVZkUWJleHNNTUZP\nZmlMNlF6cUtnelFQcUp1MG1JOEdvUkFtbEF3Ckc2M2RzNGk4ZDhxQjRPNXRkeU56\nZVhUSEpON0RrRy81UzNPNmZmSFhZWW8KLS0tIGdyV0V3Nm16Wjl3bjFZWWFxT1Ex\nN0dQaWMxUytmOW5ka0FmUVMxTEg3N28KFr+19T8+mk0qHxZWD1hrl6S4IT4TPwlr\nydlMjMM3QT52HwaCszj6MaYxiBsRgNxAl8DMa+ZDVssS1QPU/uOOvQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"lastmodified": "2026-07-27T06:45:51Z",
|
|
||||||
"mac": "ENC[AES256_GCM,data:u2MSief2SeSIkXZQz7uEYxQxCdXLmJwbCWVHzhKZdGr91pU6OdowT0+S8au7NIB8xILbaLXfjEvv+D+Gn5EsuX6iXXWDnVMR1yNJ0Z5JTGLlPg9THv0b6yTxZQsDtSofziMpVm+rjnwp+JZWQpiwMNao0f2XbDU2rtQz+gtbub0=,iv:34r1Z4OvGprZQuTRI3B7prill2n/2h/bfqatJ9WfYY8=,tag:3Wa78sgoE90TSMQQZoNkmw==,type:str]",
|
|
||||||
"version": "3.13.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
-----BEGIN PUBLIC KEY-----
|
|
||||||
MCowBQYDK2VwAyEAsPajePQC3rQWVseVRLlQF5RhCRjV3LOjVNvu+Z2MRpw=
|
|
||||||
-----END PUBLIC KEY-----
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
12D3KooWMjA3yE1LYzMyHbgQzWj7Km4mMZMn6jAbMz4kLMVxtdmm
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../../../../sops/machines/anser
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
"data": "ENC[AES256_GCM,data:peOgqM0KlpbY8A9bufRdl1F/8XivMHUeOvvEvlEZnWN+ET32JDeQlR99Ik/xDm29SMrIqVeOu2yAZeyz4/b/8uqj12QeUKarLMW0oHcU+eHGFhxDpViTT5jq7NRaZItJV7LzjFZ262T21vpqLKg4+pawUDR+JYc=,iv:ukA9zzm4CWrXs6ERqfGIcsAXhinapOg6XzcvmyydbC0=,tag:Nz2+vQLaV+lZW6Os2bPRMQ==,type:str]",
|
|
||||||
"sops": {
|
|
||||||
"age": [
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtSktOUCtxMWMzSUVHSlE5\nQWxvcUF6YnBJemFCMUtjZHY3Yk95RUEvVkdzClM1MUJwMTRQTzUzbHkzNWttR1R4\nNGM0KzhHaWtNUHd0WmtpQkptdXdqRGMKLS0tIFprNTdDcnp2cXR0eCsrV3lyK0xZ\nQko0NDlvNzN2R1NSVTAwVWVITWg4YmcKD2S5iFx2eNBWcUf2x4g0ZQCyUJVHzI/e\ncvcD8KYOBeFkHBSMFyC5wp/5qEyRUjFUgaWHDMl/UC/f++C70t8y+A==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiZE1GbkVrOW52anRRZ1J4\nNCswdWpOeENoeXcrcndqRkorTWVLd05oa0FVCjdpUUNjQ0VOZ2Z6UVZiQUt0REsx\nSTlYaFZUcGJxQ3BjQ0FHMTZMSFpDQVkKLS0tIGxpVTJxd1dBeUl5NG1EYXFPVG1F\nT3lEYXgyTVpUMXJqUkxGTTl4cWFMbG8KxLLflg1q49vfgJXMPt9bIcaJ0qd5djNJ\nSzdc1XJtTt3oOk+wsomgasV2ogCHz6br+oqJqkI6ELeE3biquwttMw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age19hn633nzg6kga9xmnfjaw06h3lkdg0sfqmt2uefp7neefy3xhyws5mf5y5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGtDbHlXL1dM\nT1hrTEVpU2dscEF4MUtEbHdRSjBsV1FSOVJuT2JrSlZXanMgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpIckNkQ2pUVittWTNnSG93Y0dyUEQ5\nNzkyS2VLeSt1UkJudmErMXd2cTdFCi0tLSByYURQdS9KTURSemh1dzU4L3pUN3pn\nZVNJMFE0cyszRWxwTk9TQ3JnRG9ZCoRLWBl/lEZe6bctuswFvJJpWp/FSZgimM4E\n6V8CpCqCG41Vf+wGc0kBp2crGys0aOwFUSOh+sSuFLgw7kj44lw=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGxlcDdDRUxX\naWNZa0YwaVRsS2kwejQrdEcydFJDTU5qcmdRZUhXRlRqRVkgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwp4K2VjeCs2VjdtejN5V1IyYWhkVnNH\nb2NzbVk4OHpuN256V3F0UmNFelNJCi0tLSByaGh2VFQyWm5uZjdtenpHWDZqRTdJ\nOVdyOEZISXh1alFRTHdLaVZSNVp3Cnq/UiiK3HQQvC07KggLL0Ws+puFdx7Ksnuh\nL4poXEVnVjtd1YnaCzIsU2Ym/KJax9JPki5pRMQqG6bNUkXr6cc=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGorWnNod2xp\nMmk2YkttNTZwMHhNWlhvWGdRVWJUMFpNQ1JwNDh5dzNXR28gQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpIV3lYS3BSMWNEMTJ3dnBBcVRWUlBl\nMWJHbXZEVHNaenJBeW82QmFYMWxNCi0tLSB5YWV6S2pieCtYaU51MkQraWd5eENW\neUlqSVREN1dvdWM4cmRFZTh1ZEYwCknfj6BeXiM74riY6PP/2ulVnOSOR/smZiDI\n0YSAtO1QZUsqcbjrru5DdL+I2EWwKBx4nmN4GQpAbFxaT3cpJlU=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwcVV6T3dpZEErTFZMNXFT\nVTF4Q3oydUxFRW92TWJBOEoxRnRGQ0dRVHlVCjd3d0tpUFpFSy9SUWovYkVwT1hC\nQmJaQjVXd21qdkhwUnlLeGFtVkZZTzgKLS0tIGkrU2lhdlRqR1lQbDVnR1l0MnFG\nU3hTUDZ3NVlLQ0tJcW5wSDRUek16eHcKGSeTkMkjyHGJZ04FrNA50kTiNOEIOVzh\n0c7FCUe2RTP0JKqJcN3oPeGyl1brbDHmnPnFZVk/lbJ+gg0AjGNZrg==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRR2Vab2lZaGIxMUdoYmVi\na0pNU0szSTB5TnJqVnVVSUd2T3NQalNmN2g4CjVXaWx3U215M0l2MmtjL3FtUFBO\nblR1ekh2MjMzMEdFb0NqczE1U2ZpRXcKLS0tIGdwcWhSNFhBL2k1dk54TGREQVlr\nZExJNDZBYmorOWNFYW1ic1FYeFBZREEK6BHFqIkYP95E3fKuyucVPvLzOP89YZSw\nL5gdbAVMtJrnIbbKbX5kradEt7wSUjLc4j6fzf56W/J0sZ/uyM/XrQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwUGpMQ3ZCSkRJNTI4MHJG\nU3prdzRVRHFaMkFDQlN1Q0xOSXZpakJaUnlBCk43aTZ5R1pJN1BreGNwR01YR2dv\nQmNsbnVUbnRsU1pjMUJNNndhY2I4dDQKLS0tIHQvc3ZkVHZsVHUxNGRVMDQ0bjEw\nS2hlVlAvTmM4OENhellWcXFjTGVoV1EK1+mntP6ICCkxd0nKbA0tlGxMG/2wvT5O\nsUiqI3aRtyGZ5kYACvI8BvoUEn9llit1hWPTfgiBrAzz3+NdCbqHkA==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCSjQyZTNCMDMxMkpZSXNh\nQldUa3pDK2lWMjdMRnUxczVsK3J2Y1BBZlR3CkhaanJXQUU2V0Z2Nzl5N01TQWdS\nUHpyNlhQdXM3clEvbWxnVnljOWNIdmcKLS0tIE0wQWdVcDdPblVMZE9xM0xIamQ3\nd0ZQZUZ3MjgrL3NKaHBGWVpLSmFaYmcKUnZ+fHFMXSiYjwe5aZ0RFT2o+TKelug7\nj8FOYLsonHzswm0WZ4lnEfQeXqFWpT3fs6mFIM4aNeeD9lY+5yA3RQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"lastmodified": "2026-07-27T06:45:52Z",
|
|
||||||
"mac": "ENC[AES256_GCM,data:+rOq3y1/AFQtpuWvnI3jP7cTFVeBa7tTUMflZvvYkmD+/sy5TXPzmVbCNNdlr5QHiMcO83Ajh0MG17zE9mWPVYZQ1qWX+1qY50bmgsJA9O2e5AIHxzZqkT/S0eESta50n4+tsvZ0JwPtYBFN2kFv1uiQkwbIecNACbWcC8yYGS0=,iv:BHz3heo2zDbAVqMzz0HZA3l9qwlccKwRXWLj3I88tF4=,tag:ePCn1WzagQSPe/Gi/F/eNw==,type:str]",
|
|
||||||
"version": "3.13.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
-----BEGIN PUBLIC KEY-----
|
|
||||||
MCowBQYDK2VwAyEAdYtPnS/sqwX6zy7lKDDFXFEmNRKDuNuDCZA8WfIGrnY=
|
|
||||||
-----END PUBLIC KEY-----
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
7f42f9f088638a4bb9e64f4efa32c7c2100c4e5e17757cf17900136ef75b8564
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIKNOZ8RYgQz4fHKe42WClOdkDzuiik6htBkcDQ/oFGIkAAAAINk1lx2vq3TJeXWEj/LEwiFdcZsI0/8gk/v+uSwLCX8MAAAAAAAAAAAAAAACAAAABWFuc2VyAAAADgAAAAphbnNlci5jbGFuAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAADMAAAALc3NoLWVkMjU1MTkAAAAgJdtRPKmGj15w0IbOFAfMRO5WujLxefAHBlews3TeS+sAAABTAAAAC3NzaC1lZDI1NTE5AAAAQCRkHTk4YDtwTkKDzMH0OaPVeFLtbSpEJShUxnUu3VYZbn7+A1Sa3guKgWLa7QyRyyPQeMOHi8eTgkbjtr6rSAs= /tmp/vars-kwhezost/in/openssh/ssh.id_ed25519.pub
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINk1lx2vq3TJeXWEj/LEwiFdcZsI0/8gk/v+uSwLCX8M
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../../../../sops/machines/anser
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
"data": "ENC[AES256_GCM,data:pbNCacL+ooegPuvBvj6dkLk0t87nniwSD3fhW1hUj4zezpawqkP4nYbni0WufSBtGqFtcCKuSTqskuWf93U6v2JQL7FegazcqHLQHu9H0+MrqdsMGZyEzGL9LCKynRoTrc0ggGY+KFpqI6o/jm3e0rPH/AvnLKZMKO9KXchXGWbSK8iyeu0NWY3vH/dbudhg36oQYBAW9UsypyRIADZzPyVliPhsu6HWQttV4vkzGt7PaAeq6OAv+1swSajzNRGKdTVF6EIq5ZIAfq+RtWAmudz+7g433eh1K1uJ3yueYRgvS5HdqmxGprXXQUTzogK00P5QDgHlc8J23OFnmyoZe/ppq1dncVMePWK+MFfXHu1oAtvcaqZzcjigBZOlnaXFnchB2659Bp343cPMT7wCtvV9OruBOPX6twWQNEUJaWtLcUaJawzdR+mUvAGYuuSn8BFdjXKn1WrIUlHT1iuaIECZMe2/Nn53Ukk4ByCTr3s01+odtGQFkMTJrQPxO5VhpNLf,iv:uyJ43DSfnUyvTVbljGhWmGsMcOoAOcqywN46ohZtUAs=,tag:mqGGDtmuqJEZpgZqUc5uCQ==,type:str]",
|
|
||||||
"sops": {
|
|
||||||
"age": [
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvelNOanNoM0hDNVg1SlpI\ncEoybUh0N2lFKzBid3NuV0J3QlIzOVlsYlZvCjNnQmh4aFdDZkJndVpIaXdYaUNh\nVEYvcm1SSFlkYWhha3c0QlN3b3VFUU0KLS0tIHVXc0lXT01TQkFJUnBlanhZS2t0\nTEpuQ0dvWHZpVCt4SS80MlhxM0FUTmMKsLphibDgT2YsZfX3evygA7rfgBh5OxOK\nFRbq+EHQPdKnU9aroMcaCBkRunp6y/VxY7FJvUMslPbBe0iaRfpgqg==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0NnAzK2RGV0NZZWdUYzBD\nOXNpNi92QTF0SUFRcXNLa0loRTdVaDdKcDBvClcwVWcvdmlmTWpKQTBlVUtYR1Ju\na2F2dnlQTUJvL0N3TjUxU2ZYZXhyN2cKLS0tIGhnSG81Qm00V292TTdUWnV2NW1p\nWWg4L0NseUJtb3NPMVkxMDNFVkZqQkEKJR0FmZ6FAFq03+w+5+sqLCRCK+o4EIpM\nhVgttDFZo/qEQ5z1aLlWvfPtowzN4P93DrmIByG7CqeKn3qaHH4J+Q==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age19hn633nzg6kga9xmnfjaw06h3lkdg0sfqmt2uefp7neefy3xhyws5mf5y5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGdwSlFQTE1F\nK2xCR0xZT2FmSEpiekpSdW1tajkrS0NVdGJEdVdQYnFVbjggQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpjZUs3NitjREN1RkZsRHNGd1hGc1dC\nai9RVUcwMitXbUNiS3hUejFWa1pJCi0tLSBiczdrWENCVFlUcS9oT05QNXVsZ3F6\nUW1DcE5ONmNCWmlsQ1FDTnBTK3RjCj3XTO027m9xZiXW+F8gvTo2PTYN27WLptcB\nly42kmCpP0mgtXLGeIrFG2M+9LJf2NA2f7B1ZRjB5qNp4m4SDSU=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIHRqNnB4U0hq\nSzF2NTRSOHJmKzJmU29ZSEl5dlpqSDFINk9VTWJ3ZEJYQk0gQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwphSFBHR3g3bmZpeWl3YTNtdVkyQ2VY\nR2dMNVdmdHVhUG93YVM3SlZQbGFzCi0tLSB2OHhGMFIrUGhKSGI1RUJaQU1nTXlT\nQ2l3b3orOVRCM09Vcm5yMG5HSlRBCgacRDSGNF94N61P7e6IAjvWZi5LkR1kYLOy\nCGZnkJj1tkJmjZ7LYWNgMhMSGege4iJ5+WMJTK+7cTAPi5vb8Xc=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIG1mRlZuMmlh\nS3FTSXU3NmYycy9nWjFkbHI3ZzJ5K1o4ZW02c0RIY0JyUkEgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpUMWluTmNUMXdZT2lxT1BvQjQvbGFs\nREIyczcyTXhHbFZpWFY2aVA1eS9JCi0tLSA5MElJbkk4cWw0aEdhanlHc3pTZ3pu\nbWptQmhiRmQ3ZzUxS2FsRTNWT09FCgyiz+GcavNWod014NUk8EPWKyaSU8Z8hDpL\nA9sIRY1RkJE9sQfYDIW++thukLB87Bx4JqqBzgZd5yDEYQgL1ks=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxdTQxa0cvV0toTFd3U2Ni\nSklKTjV1ekhvVkZrTVdCNmhreGh5d1U5VEVRCnJweXloSUdVWXpQT2hFaUNZdTRi\nOUN1YmNmUnRoaytQbEhWdDBLUldlclEKLS0tIFNlemMwemZ2OTR1NitLaTlCcmo3\nSUxoR3FTQnQvUUxWYTdkYzMySEVoQ2sKE+KkAGJOp68X2QHOZkvUIWG4QCka7iV9\nq9Bww7AAsx96sTyEzzUlKchx/EMqzUwPyQ2MxItnCjSI8UQD3FhXBw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsamVnUmRQSm4zWjZYSjFK\nMm5nWVI2aFVUbVY1V1o4SW9CRmtYZDAycjJzCm9CY0ZBS0x2Z3RwbkNMMkZwbXRh\ncFN1c25GTUFDSkhHK2FMdDdqalp1bzQKLS0tIElMT09lTmh6aWJ1cnNPbEp2WWx0\nNUIwVjBSRGhUckQya0RDaURMZENtNncKVfbuGrCtCgbtQjM0hZrcnfZnrFTJT3vb\nlqJMNQzMed2mgtmbQ2Od99zvEz0oj1UsRX93eLpqolKssINwklpP0w==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3eUt2QmxITStuMFJWS1Y1\nSGlSaUhvVklRRzE4dTc1dFFxZkl5bW1majM0Ckp2bnFIVHV4VnRXQzc5Tmt6cTBx\naVVhSjlabmFlYzlkRnYySW43cGxFYjgKLS0tIGtUQkE1aUlYTFhDN2ZXVFgxdGti\nTllXZHI2YVp5THNDMDNoeVFpdk9yT28K/jTLzafJqEr2rphKhcNmWR0+RhIVRkvK\n1sW93ik/vTLwuZID+IbJw6rIG35/1q0v/XLJOdBfTgMRmgi6/ncQbw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2b3dHTmdNa0pVWjNMS1VP\nTkUvM3RPd2pGOVNBczFHZVdYSDRUaWtSL0ZNCjhXYjJXQjRNR1MxN1JFeWNLZjcz\nWXBBUEppR3g2RGlNMEVmeUYwaG5DNDQKLS0tIGlUU0hObWlNYWcyYTVwTGNWb00w\neGZ1ZFlnckFBZnA1OWNoL1lnbnNjQ2MKuJPp12f16DZpuVaI/lRvIaTPDpv1ctAs\n+yNPCfvPKJ4G/wdNRNEaxIvfFmrhZgShBPqdKxFVpDhXEuJjOJgJfg==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"lastmodified": "2026-07-27T06:45:52Z",
|
|
||||||
"mac": "ENC[AES256_GCM,data:uJQakKJF8BgFgCQ7xbsZMCRJ8Qr1A1OqWdZQFFWUpNltyJL22fOXKLFCD1O1WrBMKOQ0jxh9BPNOAcmE8T1zxWHiGnJCuBGTm2LPgyEHykidHXJ5Inj//LolfjJZBJDrMjNlAb7DtWalZoNfRocu8F6lQP8ACKlVgqin6Wl55Es=,iv:ay9gfnjfcxOuUHJj5uW8ShrmEAsQRYDsgUZKV6wNYCY=,tag:6lsCKysPmKa1gmTFw+Z7BQ==,type:str]",
|
|
||||||
"version": "3.13.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../../../../sops/machines/anser
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
"data": "ENC[AES256_GCM,data:3ZR7x6ob7up/xgojWJRAJTc6d70w04Lj1ZHwsysHqqa2kHcyxrJvwlO/5Jdus++DH63QCHp2KNUV4s/P0FL6,iv:DtzRLUQZWUMnh9EP/7QVLnmpIQxbTMyCxv0JcERdDns=,tag:kl0gBuaxZnEsQEyI551M1w==,type:str]",
|
|
||||||
"sops": {
|
|
||||||
"age": [
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkSU01U2xURkVxbi9pVVoy\nODc3WjdCQnhmbko0MWlhQlU1ZXNJVFY1em5RCjhHb0Nnd1NVZlNsNHFtY0FVdUZM\nNGY0UG1MUFFaNXc2alFtNXBMV3pIMW8KLS0tIGorWEZYeTFYcjMrY2x4UkordzFs\ncjJ0S3EzNnN6ZG5yUU5nZnF3R2h6blkK6A2un+LAuUhZ2OFIjE2bPuIi3svZ/TN5\nh+mkOxqptMgbKUvpLCmONTwfRCJjGAQTdtAYzwxb4ZJRqcXWJSiJOw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYSlBFMHpGR0dna2cyUTNz\nRWdhcjNqbVJHbkRFYkFJcEVVZDczYjQvTUhnCnR1ckUvVHVjWEhaVkY4TysyeUhT\ndW5iWkE5bEVCNW1wVHdoOEZrcDRqbEEKLS0tIHZONGR6MW0rd3ZtbXlTZldXdFB4\nMTFMQTZEU2NSMGFZR3ROOGZsMkpsOFUK8SpipGo8a3U++h94eoAeQFESQUSHLXaS\nH4gnnZYdlXB0onN9TYikkSB2SytijAb7f+vV8ZjQqpNKiXTbj+8iBg==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age19hn633nzg6kga9xmnfjaw06h3lkdg0sfqmt2uefp7neefy3xhyws5mf5y5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGlBbkVpQ21o\nQXBydEN4dnRhckRkcHRtd2FmR05heEE4bzgwUlpsOUpKVVUgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpQU0MydE1XV3lkWWJBa0o2NTV1cjFS\nVEROWGdac0g4Z1VMcnN0S2tZazA0Ci0tLSBjRlNWRDh2dm9kWWN3Q1BpNkxvK3cw\nRklZMXB6YlpaU2FiMTVGelhGUXRVCvMlC3O0mhLGgsqe+/qFHRtCjRDguk1T/baB\nQdB6d79XUsOM2qzlOQh1uOR1lBl16xjQmnubrmmQJ1uQDLBBQq0=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIEptMXBwbThq\nY2R4SFIwRElCTGZET1hNUnEwYzhXWmd4OW5QS1VFMU40VWcgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwpITWFwZnY4TFRrOXp5eE9HLzNMNGlq\ncUNtZ241ampOU3RtQUIyRmQ5QnJvCi0tLSBjRkkvVGNXeSt4QTYrU1gzWTQyeXpZ\nK2gwNk5HdHp4emg1Y1BSOHhSYm1ZCkiR2oNXtE+/9Px5XQZOE3wMmfg1vlzxkFBY\n4yRi8qIVq8o9fK7scF/MNd+j9zolp67fczBX84X+ytz3mmd2UZ4=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIEVDaVg4THdD\nbHVrS0xwZVpLR2N6TW82MVhKdGtEUVJlZHlINzdwalo3VncgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwppRWQ0ZmdCeGlLTHJEQU9NZ29EQldx\nSGV4QjVSRVdBSUJtOTdycFpiUEVRCi0tLSBVVWlKdE1HazY2SzM3dWRmRGZIWHNZ\na3ZPTkRWanJiVUd6dFNJTjgxSzRrCjIiG8oacjAhtnzaxx/dF+9s5GyKNQskHI0T\ny/qCBwQPXjfk0igSFgXGihe2v0tr0wAlSjPOAR5B6+nibv7Pni4=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlbjRWQzdjQXVMejlhRU1O\ncTJMU3AzWnB3K05LdUFCYUYyVUpQN1BXRTFJCmtwSDJMWkxqVjFtY3BoY1BKVzUv\nemJRbnNJajVTOTZlYVhBNytEUmgrZ0kKLS0tIC9kSkJGN2lLU3kyK2JxZ21xbHdv\nb0dKKy82Q3dyUlo5UXBnd1g0U3JxSEEKRFXKkxSaa4pzLRclCd0hebmlE1H6IV9l\nU4BHFGR++D+FjrkqK13eQLGNwc7HtaN1k9TmWMraLwFBBDBdImk46Q==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArcHRHMUJBQVM1d1RJL2FY\nN2JYOXBFOWdwclBKdENycm9JMUdid1pKbWtFClplU2FNM0p1MG1QbElwK3pxVjRV\nNUUyelh2aXJ0NG5JYVAwaVVwSmZodTQKLS0tIHRSN0xCVUZzY0F0OXRETkQ1WDgw\nSmtzMDlYVUw2akdDUTRLLzBVQXZvMWsKQmAjMJ4b00AGXDXhCgctjuOuEZE7GnDN\nESqGcYY5tXfIf3lXNpaIs1eI4Tp1EnOHRhOB2qf5rRssEl9/Qm81mw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDV2krU2pzcDMxUjRPc2Vp\nTG90cTIwQ2dvczlvVWhRRHJ5aGgyd3F6NlhJCmtuSGFNOFJqM3BjZ1R3Q0FsOSsx\nZDdGTFF5QnBta1ROYmVrSzVZc1V3ajgKLS0tIDh3ZXg2NFA2R2VNNjl2c1FPbE5M\nRU13ZUluUExiU211eVNGVEs5WkRLdUUKboZGrUaYNpeOpCmlz7pnmzS8tRF/Jn92\ndfqDgPtXMldo9gHk4i4bfBB6tSQzu9FXWV/t8nqOMcJ5bTYl2c1Hmw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB0VTRsbXhCWGF0T3R4OTVz\nUUdYaWtWN3lBZ2xaYW5wbi9EWVEyWmhvR2w4CmZrWThNVEV6S0hXa01YN204WW1k\na3gzVUUrblFoYVJwd0svNDBqRDAza3cKLS0tIHluUTJlcGhONU5QMTZkdUZvRHJj\ncWVoVk12czB3RTNjamlKYzNmaE9WTEUK+h+OKoQlATHhyC/ctzbRaKByniymWIIM\n3MYigAW5RfNcfykp7WRcRSTNeloKZb75geO5HTvJq+aVakqflTGLWA==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"lastmodified": "2026-07-27T06:45:54Z",
|
|
||||||
"mac": "ENC[AES256_GCM,data:+bSG7IPIyXs8Xiu41Oml9/HHnaLasgl5qId1TuQDcEVwaTQSRDE57Kud8+DKOqoajV3ys826zcdqxv2UUuwKKVTZz1u+hg8UmurkBZi4rV1wipFcnq7iDTK4Zp+vVcheAfwB/UrQRYu39fwXtioXzpKEwcvhPZJ0woTbB7o3iPs=,iv:K6MU1Styx7YkpIokRR5qEircWkjVAIIKpn9hWN4miog=,tag:08rnMh2bnQbwBU61wXGyeQ==,type:str]",
|
|
||||||
"version": "3.13.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../../../../sops/machines/anser
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
"data": "ENC[AES256_GCM,data:QqGnVvetsHQ7+JBTkdXuVLBnCIwF8gQ5x6PDqvxFYAI51lF+lmwHJmjafkReRYu3sN2U2M9jNkfRbOBptWAB1M+4doVS2p16+hQoje2rCwCZtR9p+tv/eho0HFrTJKWU,iv:+yiaTSzxSym56bZCFFII494k0FlhSgAZSUlQOtKtRnQ=,tag:VML0whJmFixzAdYKmTO6KQ==,type:str]",
|
|
||||||
"sops": {
|
|
||||||
"age": [
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCS1VkdFVlWGRGaDZScVVq\ncERtUkhUbzVoYjloZGRhQm9mWVA4SmpFZlZFCkFqVXpVbU9Pa0FJeVlpRjFXZU1i\nN2UyM0ZPelVMN1ZQQnBrcERhNWVZcVkKLS0tIFZsMTRJVWV4K0pXMlp3alBRWW5l\nZ0g4YkNnR2tNOXo2QXpzRUVnTWY3YWsKBnuxhRm09VKGwi7wLXP+Fm3Djz6pGYO3\nM9GuUBgO9mbCjXPEcaT9vd9W7zmkWiBrMQN4yufj95rahreFcoT57g==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrd1NCR0lVdlJ1MzRtdFkr\nRUloTE5rU1MwSFEzYTJJVDRhNS92VlRDYzIwClRlcDdDVkwvSjF3YkVLdzNSN1o0\nZ0Y0V2JKK1FnbVNaemJvTmh2dHpGYzQKLS0tIFAxeUp1S2ozcnBuY1JsSUlqMk9B\nWmlxL0tid0NzYmo1OTFRbmZwSmQ0ekEKoa+iB57N3GJN2l1d7XmmQolN/5UiGbI0\nQ5IgcPReeYOhhc/sBfmea/b5+hWv54+anHloJgWNHfVBCUK8btgTrg==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age19hn633nzg6kga9xmnfjaw06h3lkdg0sfqmt2uefp7neefy3xhyws5mf5y5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIDMyZFNJcWh2\nS2xvMGlRV0prV0pzZ0wxRXBlZi94d2hlRjNUWVVDcHh5MVEgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpFc0p2YTdWVDNEejB3dmJDNEt2OElR\nRDUwQnZTODJhdVEwV3hTSlp2VnNrCi0tLSBsbGwrY2RDSXpqd0NVbjEycUVmUmp3\nK3p6VGhrdEtGV3J1clBvMEtwTmVVCm/00VMmgGUAYgQ1M7G5mqLjG341umwcEP5R\njvr6dRLEF9Zhfo8M/SJK9C8fDWehz1dqwMxtBoIPLAaWRNu6CUk=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIHhqKy95dDI5\nQ3dYa3NYTktZZCttN1hBN1hUallVM0grSTdNQTRGS1N6QnMgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwoxMGdQb2p1UUx4T3hJUHFwSDBtNWFM\nVldUTTJUeEFvUGZvZU9mMlExSnBVCi0tLSB0L1VTSWxEZGIxRFRiNHI3UStmSzJW\nSTErOVYvWWhQbElMZENMK1U0M01vCldORZkxFZanGrP+OBDEA7nvAi8IkfBJnATG\nXpP80YgiX5uj6qvrjOniPul63GCGWMeGMTTcScOz4uDZqGVzKD0=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIFNxajFOZDRt\neDlGMElBMWJYUDRVVHlzSzhPY0MramhTbXVDdi9VZ1BXeFUgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpXZCtYVDhJWFRkY0VQUFdmUjJIYVpD\naCtzWnJwK2paRHhSVG1FMTVpdnhjCi0tLSBDRjdWNkRFWGs4R2JZMDJTMEJ6N0pF\nT1B6ektWV3pGRzBWajNXM095K1hvCgeCMRqX1wyzXcldr7jzyOrbScSzcZ/xuREk\nY5EuNsO3QVN3TjcwzZjSa5NUWA+i4+48xpSzfVkYBANl5oRCzSU=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTTHdjRU40VUYrdGxIVjVU\ncXFTUGtxK2srL1g4RGpZTWpDWTkxYmt1cUdRCmE1eXovbkFIaVpuT2VVb25BcHMz\nOVlqS1lPV1VHQWwxSDdSZDl1MFlVR2cKLS0tIGJCRXUraGVXQndGVFRyQktEOTVZ\nRjcwRTJjZHpid2dMakl5WktEc2Y2M1EKrgSGYnuM/O5pb/ALYShHiYJBnkSdCyMa\nAcX/V7GYw1ecp2HFf5amTB36X/wpyu/oybU5YxbtB5WZ2euCY01kwA==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyWTdpbUdIWnpVWGVoVkUx\nT055YTJ5Y1MzSk9jSnFTM1FwY25OVkR1NVdFClRSaUVOZ2twdVhLQ0lHNnYyd1Uw\ndjFzaGJBU0N3NE1WSWlmTHhFVXJFOVUKLS0tIHY5ZThrWVBhTXpRNndsNVN6bXpo\nMmVId2VBZzR6NU0wWjFmVmhqTDVzbk0KHx8aEvShI2ufaZN8UFBG85c4g5GwWxjl\n7OOR7xZXrqDUBag8cf6v2TP94tcVfPV+N6DeNeQzKxbIVBGbv5yRbw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYUDhyRU1GNFhLK1JDeUVN\nbFZUdzEvcEtsUjJhOGhBVThXUUdVdVlTT1VnCmtVL3ljejNBQmNaRTBiNndrZWt4\nS2xZa0RJU1AwcVhkVXM1b1B3Y1ExU2MKLS0tIGU2cGtBSHVVZWowYi9UclBQblNQ\nWERVZkl2Q0FIQ3BCemVjVmt1bUlBNUUKJWRbpFyBOoPzIni4pqpERPsdFx/Kch2U\nxLApZkj06EGuZjMLs1i1GfSzgOuFfOMxcuHiSV2ZtSWmxjhikGBisw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkbHRaTmxnditUQ2FpbjJ0\nMDVRcytzZXlQZnAxOGlSZFNRZlNWUDRocFhjCkQ1UVNRK3N3YzZKZXlXYXY1VVoz\nZHZ1L0t3R1BrRzVNMG4veFQwUElCb2cKLS0tIDlwN0FYL2ZLSDUycEI5ai8zMktZ\nQ1IyNXlhRnRoUk5hSjl0eEdjS1l2Z1kKSt9U5jta89D3aGZVMdpCigRkFwHHlbkE\nBxvHLF9OhmjtpUyFR2DIHrRScaMaMgNiz3bLGnpiv8WpOykWyUOfZw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"lastmodified": "2026-07-27T06:45:55Z",
|
|
||||||
"mac": "ENC[AES256_GCM,data:BdE8N187hPfHl39qQBrZ7KQR/knxStx8IHkQsEqdSVOSID8Wm02pIEUT/1NBWwbxI8nTO9xr0XCwj9p2izOey7UMqaHvPNyevlq5CF2lrWaYcqw8nE+lJXLyLYaEcHgMb1jkyFHnEkJpNBljE0HbMyczFfLS/6prThYcJ9JYPnA=,iv:ZxIIgRwAdyTwzlCQCotK+IY10E/nsSi6dTCvB71gSJc=,tag:y1BGu3AtkdiDsIm4sVuNSQ==,type:str]",
|
|
||||||
"version": "3.13.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../../../../sops/machines/anser
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
"data": "ENC[AES256_GCM,data:fXVg/YsThytb4Bk52PjbO0VFZHIYszo8rF3pX67puveBVMm6GHGSkeATxDjrAwJoFNjursmQ6T6+ABWMwnwtFMWqK+uh56VReA==,iv:U0Z8iDfu9+D4L8KMpayJS/EOpMha3UK7hZz4R3SKOz0=,tag:I2Y7TBdm/ZeBOBU0DYMKvg==,type:str]",
|
|
||||||
"sops": {
|
|
||||||
"age": [
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBIYkFHblZDVDBZcjFJcEJo\nT1QxYVIrdUpJN0tlUEh0YXBwTVEzVnR5Y3lVCkFRVnJWMXZ1WGNlUnlIQ21oditW\nc2gyRXR0bERDaHh6cHExTHNMUElRMmMKLS0tIFhySnBUR0NLZkdsTFBFKy9NSzlq\ndElkT2s5Z2ZMU1l3dytpbDUwdHFhQ0kKwu/ip3iQ3kl6LnDnQ7Gh8nut3HLx2wsT\nZOphkNgMpTipjLsUvEJxbB2l+klqnv71O5qeYPtkad1YrGtDuyGQ0w==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSArV3BlUzlsYzF4WEl0SnpV\nbTc2cTY1d29KZDZRVWJLTnc4LzIwNU9waWxBCjRpS3FUOFEyRGxFZVNEN3BIK1M4\nWXpNcmtqSTRPdlpESlVRM1c4SllvNkUKLS0tIEFKUUorT0NGaW9WenZ1VGJqQWpU\nak1FSEpLSEJ3VFF1cjNMR2JyM0JXM3MKek4UFVKH7BlWHx1jAQAdv2RgOobMS+b7\n/wtYgyXa6+9Hzz4YmSnt2UpTMC+UCwj44uytcO74HalElPg/j+nQlw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age19hn633nzg6kga9xmnfjaw06h3lkdg0sfqmt2uefp7neefy3xhyws5mf5y5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIDFkdnovNk1j\nS0p3YW5oTWJibDc4YU9yNkdDTmRVZmRwWnV1Y2YrU0NhUlEgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpJLzFYNWttUXlNZlZvalpGNHR4dVhD\nRkk0ZFgwNnFNQXlicGtVV2x1SFpJCi0tLSBCeEt6SGZRdW1GeCtUNWFkbzJiOWZU\nZEdCVG1PM3pwaVZoaVIrbm1PdVcwCh4efyboDYJVORdvsAYQfboctvNqxElYjFSK\niWKzrxO7YnDKpjhCk1jjpTanIvyXkj5/3YwvS4/q7iuavf/amO8=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIFpNSGJWNmFY\naXdBUTZCcFJTSlZrRklZK0xpWmF6MTJRMm5id1VFVUxTMWcgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwpIcHc1YUZOSUwvTEt3c3UvSSt5SlF4\nZHV5TmpLR3VyeFp0dVZGUy9GR2tZCi0tLSBmMEFCT1dFblFib3paWEZ1dWtLQWpz\nUjgyK1ArdVpFYmlaMDJDT0tJcXVVCiDmAdLgxUQQ5n4ESSKhITQtOXryWdZ80vm9\nl2pYFnmxhIFFRm+yQqgM9+pXSpn7msEg112b3hCZgOXEOaUqDHk=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIE1mTGgxYSt1\nd3BVaW5XTFErZDY4SjBrYVhiN1ZPaHVaNFZJQW51S0J4MkEgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpzTEM4YllrbnBwa3RIdUplcEFMeS9n\neFNRTjQyc25ONEpyVVQrdXZxTkI4Ci0tLSB3T0laWjRyYlhXTjdJK0xlSkc3R3ln\naWhqWVBGUHFZY0RiQmFPN3FLSzNJCk97lBANAjo690ZrXNF22z+qOwHBvWkWr8m8\nGCbnh8tqbXTGxPA/tw954BHtxj8GgI/3xJrNArliUqP8urwh0fg=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRRU9xVDhodk5nRlFRZDVa\nV3Y5aTlGaTUrTkhDOENQWVo0dmtaMGlLMHlzCjMwOFhEZzgzVVRnRmo5TmdPQUhM\nNCt3YWdIV283Sk9iZFRLa2lscFNDSk0KLS0tIGhSTW9NSFFhUVpPRk5xTnNDc1dG\nRk0yUXg1Sjg3SExiY09JWm5RZGI1YTAKA4x6ce8/BtnWgmvxZe5wfIcXwke13aNs\nuCyTn3iTlxb9kT8JQPlZYwnIDdTKc179YPIi7FjfbeNzb3CRwtNO5A==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4T2hGQ01rUnIwZU5WRGty\nRWNEN2todmU4d01tNGtpVXQwTDBtMEVsWENnCjdSK2dhcis4WGgvZ0xTS0FJU2NO\nYkp4aWh1Qk9YSU5VZThmWEVPY0sycjgKLS0tIHJKZnpxS3k4dFZmb2sxVEkxaDh4\nRXRIVmZYbzZKNUNYR0lpaWduSXRIUGcKW6lXD9Hz8l8WcFI2cqARfPoMn8ekKZGZ\nejstSAPq1QS3cqQ9EZ1BiG1duyHq6ChOpP63b8x2uS/+WSWQfzH0ZA==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkeHpkYlJ2a3ZOS09waFR0\nRTkyZjdSZGo2Kyt3Y0xleXFWemFRWUwwcldrCjdBTzRZOTczekcwRHJjT25VSXZP\nU3JFcUZpNm1BV3JVRW9pMGJzQ1llcDAKLS0tIHFJbHhXTEtUSUhFSVJvRWwxdDdB\nQVZ5elhybnpCaXdTK1BOWDN0NEREakUKqfN2jitR8viwG7Y7EJ/Xx7wZx/iMNn1G\nRQfmXKFHYNdKvtby2geTKZhoqHKq4AmLSI8I+jSGI8li3k+QoDRF0g==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaRWZWUjM1TU9rTmNyZFJa\nWkcwa1M4WExubFNsa3g3UVkvVVFZemxPZTBJCkJxSW0wYnp3ZUFROWhnVWRIdjUv\nS2ZjeXp3S1M1ZFZPUmx0SFpGVTgvQTgKLS0tIG9uMmsyUkZPcWsxTjBPS1U3QTVH\nanMyczBrNDBoZVowVVM5dVZTcDRBNVEKhBpmXhhx0CcnnYhIGu3CbouleqHGXmsm\n0E28qwUNh2ytJkM/Kctvzw2iwPYDDqYb61HFPbwPgO0MqBiX4dR6mw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"lastmodified": "2026-07-27T06:45:55Z",
|
|
||||||
"mac": "ENC[AES256_GCM,data:k0JeGn5YPYn5YEK1LRkVvi98mYumlVV1qa29h14zDh6O/1xpEpfiCPe065L26LQgHillL9dciaTCzWO9Ni13Ulc9JUY08rHio3tANDUTrVyLhXjMhj1H47XyYfJpJdQThK8M9U4DFBpEA1lCBd4gs3W9d5/kwtu9wtFIxjqChuU=,iv:9CA4Fr6jsZqrROB2emarZkOJkMWUNnCZj0H3L3lrXCg=,tag:J56ftd6NauzsPPulbrHYEA==,type:str]",
|
|
||||||
"version": "3.13.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
{
|
|
||||||
"data": "ENC[AES256_GCM,data:yEnBtw6nvEs4rtNGPtLJyOU4VBlWjBaqMKWdlRgxLEjexYcQ844VE7qUTkStQ/JWGi1m,iv:1hlJ4viRCm9HsyLZy3xJxCED7ZIhYR5hZqbudWH4sOk=,tag:hll1ctNwZZ687lOe2TCnSw==,type:str]",
|
|
||||||
"sops": {
|
|
||||||
"age": [
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB1OWpQM3NOakFqNldubmJS\nVlVSYytEcXNNbTQvRDh1T0lJZkNRMG5hUDJvCnVvd0lyYmkyWUdRRjNNVU5VVzdu\nMHl1UDN1QklxQVJwRGZoNTBiSG9jaU0KLS0tIGdFWFM2M1Nha3hneFIzbGhBS05k\nS0dEMXFUMUV1ZWFtVzlpM0FkOHlIM00Kynt2fue67O4vco8VsV41aKJDMgXChDGD\nbY1ctk/sDIf1lsHK0wIses+luX7dLvX/DXe01kjkIBFvHkbQWnWU+w==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIFlnM2pFRTBZ\nMXRHbXVuR2x2cjlwc0RBZStjb2wvUzM4ZEVIVWdnTE9ZVVkgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQoxQ3ZXdXlnMkpyNittdm11WmpHLzV4\nZXBHTGVzWFVCQXowbkF5OWFxZ09RCi0tLSBsNGVyR04wSWpBWXltd1hFREQ3UXRv\ncEJVMGJXbVo1NlFLS1BXb25RdGc4ChiIYJVw90k0QTonYD2g8Aa5RtdQOoYtFnpH\npuIjGkf6pQkYMTm9rKxm6y1qDQa087POUlw6qtYte7y0SRjRH+8=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIG8wS3ZwWXhh\nS0tQeWZKQTlGK0x5eE1vT3J1RUtTSFNmbm5TNGc1RjlMUUUgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwpnT3BzYk8rMzNRTjNWNlRvMmUxTmdF\nZHAzT084a0RoN2d4cmFEMGh1WmJjCi0tLSBwUWNJcitZb3BlNmlFQm8wRUk2UFln\nUU5IeEJEVEhzaE1jbUowZG1NeUwwClxW5WAFo/kVKeSEjrTefK8f/hLa6oNwAE5E\nk5Wil5xK53A8jaoniCAGxFIzzPepVGD2kxZ06WvlcBNfpFi1nV0=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIDUwSGRUYXFx\nVnBnRlhpUFU0eEdGYVB0SDVGZ3RFRXRaWXVRakVCQWJDaUkgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpFcForY2lQNHdtczdpTW1iY1pnbTNZ\nNHRWT251d2o3S3dHeUN0eHZKODdrCi0tLSAxM1hnKzB4c3ZRdlJTMmRnclBtQUVR\nVE5BU294RW80SGY2NU1kR2IrQlg0Cvp35pmMR35YDdbZXHUuFnkHdKfYoQZDEUj+\n9Udwb+dYeVgsXNdtXzkQBSiRfvrvbM84rwbk1W64xwjTbMP4E6g=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxeXYvLzBNN0xKckhPeVd6\nczhGN0dDT2Y1aU5HS1lHNGI4MXZqZzh0S1FVClBRNWVFVCtXMjlJVER4bzlXdzAy\nQm13VXVub056Y2N5R0pRZ0ZhcUZ4bkEKLS0tIGhZaEdoOW9TM3JBWHhEU3Zucm5F\nZnJMR3F5VG5WNGVpc1FteW95U0JvSFkKTdIwbrKj2avl1cYBu7OgLC5ghsuldymC\nEZ/fb2Dh48vQ/n7sJt7knmrhcExwj9YhrbnZdoebFqt+qHV4Oq+MAg==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBERkRHc3VLNFpkcEhsdzZr\nVWx5ZGVJK0dxNGsvZkN5QU9OdDZPYlhPOXdjClE4ZlRCeWt4UEZtNTZoRUc4NXUx\nSlZYaklrMkVBZkJUNlBIZFF3WXpJb1EKLS0tIEhUTWU5aTZUR291NkZoKytML2VN\nTjMxVVpRYWM2Y3A5cW91ZVRrMjZIelUKjuPWplXksEg/uAevISCPtjIYndN28s6Z\nmtE7y54B/LphEGCPncn9RXMKpuYx64tDho2l7ho745hS9a6OvqidUQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3THNqdExpa2MyMUdBbkl2\nUW81VmxacUtic1BTdit4T3VLZnpKRWliOFRJCkZuekJ4TlhZcmt3MFFGQU85bnk5\ndklJMnZ6UWt3enhzc1R4ZGJjcm05eHcKLS0tIFo0d3BSdnNtUnJpNHZNTmc3b21O\nQThYOUFGMkt4eFFnRkw2ZUorNXliUDgKg17nsdk7wxT8Yhr5mTw8tVj7SjQU5J/q\nM94+ZDCjB+yfe4vFBYl25C7LDtP9m7vmfRWafSRJ1/EMS7jiQBfRVg==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAycjJoZW8xSVQ5VTRJVTBz\nWnhSV0NNb3NmQ2xJL0puVE1TUlgyQmhVbGpZCm9JZkhzMWtnUFRVMHgvemk3SDZu\nYXVwWjkxN0tsSU43cW0wckl6QkN0N0UKLS0tIEh6VFhvK0VjNCtvek9OcW1sS0lx\nTU9pS3o1d3dRYTdPdG9vTEptSXZGWjgKSpwGVl7k9kR4gE292++EW60yr6t4F2ik\nciV25avyGJPR+bOrK1siAOixyn048jgunU5ubeduAUbh4ceAo2fQww==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"lastmodified": "2026-07-27T06:45:55Z",
|
|
||||||
"mac": "ENC[AES256_GCM,data:QnoWKT3OniM52QNhpciH+IEtZZ8haAgdfSoTSYBq8ZTcWaqi1WSZG21IO9iGccufuRS20QR6swp24fXhCdCZGQaBHrNixE/uNA6MUx+B0g1CCGf9nBMkzThg6RAgiu4L/QgvrpBn+0IxA9igMi63Acq3dtL7Iz5z+t2JGKW3Irw=,iv:68v4GAjaFU1T/X8QcOk0e40tjMcfVWYuAQwPGukUF8c=,tag:zWY7Hx1qGy3aPJ5V3wEZ2A==,type:str]",
|
|
||||||
"version": "3.13.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
200:d1fd:fc2e:e24f:b5fa:a56d:d5e3:f12b
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../../../../../../sops/machines/anser
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
{
|
|
||||||
"data": "ENC[AES256_GCM,data:oXhW9+FbFGjZJP9WSCPZHjhVt7+yDaoVQn74kqnov6mu/U1Px77Nhs7GxNDzz8vU4Jp2HzdmJ9qcu7M6YRDXVtsfU8VB++30Ff6IasoCKVZbuv8m427PwpifCWFeF+O/bqZ3AyG63znh+xaEtzqfr7NnTK3wXoU=,iv:UDWpWrSoXwTNMxIMY6u2nECNjaVuXvxMu3TiA8tNzLs=,tag:dTEXbhpnU0FvZemy5Opf9g==,type:str]",
|
|
||||||
"sops": {
|
|
||||||
"age": [
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPU3VtSnNHanJiSlpCM1pm\nVFpZRGlrNGE1NGdnWmdwaTcyajJQVlR1eFdBCnd4ekxLUnpGdDRvT010QjJzYTJl\ncVNjTUI3WlNpamk4a2E4Z2FDYTZkekUKLS0tIHNycGRpRnppaUw0UlpqYVl0R2FP\neHN3VnpwTVljTGtIQ0hXeE5iNEUyY2MKpn0iGbiP7HYtp1yvUFzordAtNWw002lV\nAe/fanCH2JQ0fFNHCpP7t8TInQGuWwavBc0x45H2mpM9grAszGD6Ew==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtMFQzdzVIUTlqNks4RVU5\nQ1kwNHEyZXJnWlBmbVZ4YUs3MlRvWVVEQWxrCktvRFI1akJta3NkSjdkZUUxdGdL\nQlozaE8yZTFJWjZFWGlYZk5udHF0QmMKLS0tIHUxSjQ4blZNYXZzUnhoQ25hYjRX\nR3c0STRVWDA5Z1JzMGxZK25pUkpTLzQKVo9E12m3C/6rAiMx6GAn8rkJrW8yq2gF\nCYdldd2stxQIK6OxYf6Z/2zvmo2Bo2rb1S6d3yrdlkk+4ybnlrBQwA==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age19hn633nzg6kga9xmnfjaw06h3lkdg0sfqmt2uefp7neefy3xhyws5mf5y5"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGVNRGF2dWQx\nVi9pM2swVitMcS9jVVd6d1B2dFZYZEtmbW9XdDRjMjlwRlUgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQo0a3BxWWgwdk5sWWRBU01WbElvSzJY\nN210dCszNTU0Z2FuNUtlTE5VSUxNCi0tLSBERHh6VmtEK2d6Y2tlMWY5azhnTjNv\nSmYxV2U3SlRrNjlaTmZrbHdQOFpvClsy5yc+lZUZKE6Im69+WQItsUqJXqxcj5K6\njCXh2WNSiIB53dqKcFUFuIonQfO8ClU66O+XCCHUslcrUwN4Gk8=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIHJxMnVuSFpD\nTm5FM1AzelJWbnVaUHhPcnJ5MzBNVEpBdnFqaTlsdUptVlkgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwovZm1YbFhVWkxUNUx0VnRub2hKeEJy\nMG5zT2ZhWnlCN1c4RTZvMUJPN29VCi0tLSBFZmMydk42UUx1b2d0YWFCdEVwRERl\ndFpRTVgzbGZoU08zTWxpNHR1RklBCgndxcnBpDAs6sK4p9+D8GaLx4aJwrTnTuOA\n3uNSCiXCB2CyRXsEjJOe1VU2B2iqVbzbDPsSYPenfFG4NFg5378=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGFQamhKZU1j\nZXVZK2lpQ3RLUEdrdEJXWlVyTjlIYUtCb0NoWmVicTh1U1UgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwpTeWI3dG5hdjF3OHM4UCtpbjNiYU5k\naGkrKy9KWkxGTlZ0amZNYWZOS1dnCi0tLSAyZSs5VUhiRitRZlJGSm5zc3JRRDYr\nNjdJUkcrYkt1S0hWZnFYRWp0cXE4Cg9L1D581HrKPWO+eo2J49p4H+PI3uqeHFr7\nL4ESFF8DNN1HHkCPAaPzEUm0SeKJehcyS2ful/q5rPh5kJCNgSE=\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAwS1FpOFJJV3BxK1phQlpi\ndWlRaVZuSXVCWnRSOVZKMnA0bG45WDhiTUJJCk9pOHBUUmZqVGRwRlhYYWdLVWZC\nbm5DWEVNZUYwcUp0Vk91T1BWZWx2c2MKLS0tIDR3cUFwMElDQUdiQm4xTnBDM0tI\nK01nQjl0RmVvUFAzUzVZc1F6Mm5IdVEKq9KH8Q7VsT5ZoB/I2nW0dJUWFUaRYmgl\n3+l1+UQG5DSgcJ+eWzN6vndygCg7ln3VhOokVJCQ3xc01tR7RVZnNw==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlQjBmeXl6ekRmY0NsYkV1\nTENWVWc4djAzZmpPWHlqZ01vQlgxbVgvM0ZjCkJIdWYxRytLSDlIdk1ad1VCNUVq\nUlNwS1FtOWt1aGdxT1lJNGNzNDNhN0UKLS0tIFpOMGQ3cTBENkdRb1h1OGVFaXlH\naUxVZDlvdTdtKzZkckJZRWp1cExFQ2sK9mXCzmyiRCGiJZnAe2k20EOxMfwrnvaM\ncNu+hiGr10YW6IZs5/4SID9JXV/lYZQqPIUZJh+3oWFBq2wDJ6X2WA==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBWMVBrUW5yQytpMGdZbjh3\nYysxNG42TlhSeHY3aEt4dllkWkZhSEdyeHdBCnYyZ1BiRnAyb2ZYb0Z5UG01dzBE\nU3hMbTVFUWs0MjJ3TENuOUU5YWlSbVEKLS0tIHlXcnB1cTM4d0pRWlI1S0dqa255\nZVIzYXZFY3E4REJGNC91VTM5dlFDb0kKQ+A9JpqUrhb2eM4tpXX/Sn8zHLJNG0IF\neSNds4s3YYvQQvYwmqQrICCYJFWHeEEPJs7L7bUmNNk38NLMNrhOpg==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4VXZ6dldDOG1CQk5IbXZS\ndUI1WjZTN3pBS2hGajNseFNqSWFrMG43akZZCkRkUFN5OUN0aXpoU2xVVjBlY2xV\nQ2VPdzA5Rk9PR3ptQ2t1YjhWZXFkVDAKLS0tIDNUaXNpV2JEQWZSMlkyODdoNFo3\nK01VLzBCSWdGaEw3bWowN2dKREVSYlkK39/nUqaB9f0UxK/ZLPoJh5i0L//4H7xK\nOMThqWDBhZWfWeR5HMmbl8THdtrcUCU3e/d7qK4pRlwjyI2Mdzy6MQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
|
||||||
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"lastmodified": "2026-07-27T06:45:56Z",
|
|
||||||
"mac": "ENC[AES256_GCM,data:zUv0iPTotaqMDpMA09gIH9qgswnkDq+hjfSvo/mA0YRP47fk05DI9RjwBQ1lwGxtkXLqcY/1aGY6Y/y+Hh1pm0mOKRV69AWxvnCVmOuVA1VsrfNGHgeZxhwTTieZc9yDr1tkQ07ogy+hnNqLkYvjRMwYJ8eoQ8G3AJGxWCtFykw=,iv:3vW/WI82Mae2JSrgJ9QFhHVLiP/ATFjd7kUHeD51qJA=,tag:47hyo688fimGZKf2sLa/yw==,type:str]",
|
|
||||||
"version": "3.13.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
970101e88ed82502ad49150e076a481aae2016f236ccf4438fd7d514353670df
|
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
../../../../../../sops/machines/bosona
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"data": "ENC[AES256_GCM,data:f0Ncqc9+fl2lLoVMAa798z6b3dFOSagKxdQDv4NI8bo6b+Co7Y+5qI0mxPkhy1wOiIU=,iv:vwjTCHEYAa1rTIp8P6OLI9cSFvXVta4T3xzaEmrF1to=,tag:Seu7La+48U+eZd3kd0R+MQ==,type:str]",
|
||||||
|
"sops": {
|
||||||
|
"age": [
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSByWElmYWtpOFRpcFFYWllS\nTTRvQ2U4YStDUEhicktlVHhkRWVCVU9KRmlJCmJjT1pLbURqNE1UT3R5VFNhMUNo\naFZLZUpWM0g2S0NPaHNYVnVHYzhlMlkKLS0tIDZPanlTRUFNY243TERVWHA0VlRD\nU0pmWlY0ZUpvTHdpNHRtY3FReDNjYWcKclF1+GoP4axlpo+Z0rjwEMrh9fn8Eqdm\nQ+65xfo/uKgv5t1b9t6U/RHs1NFQrC5CZ2L8gl6gheHe2ABNI3AQkA==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIFNZVlBTOVFV\ndExTWGVmSXBHMFRYbFI0WFJPOVVKb0ZMZHBqZzBBTGE2bEkgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpNeWs1RVZzbG1NcW9hdDhzSnhvckJB\nbEgyZmhoMHJiY3FIUFNXNU5tTklzCi0tLSB2S1BUa0U0L1RwR1hmNFZmcVd3SXlz\nOXBteTh1Z2Y5b1dYbWo2LzNKSXBzCj2VZylJ29kQsf2v9iSY1Rbo6eg60kl02VHT\nVlc+UyfG5Fu1dIooonNdZ2nK0TnX86LruprjwnDKRaOwYIXCIrk=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIDZqODJUZ3Ev\nZmZPNkladCtwQXlFVmVSNFNzZFJzaDh6Z3dBYjd3Y0RQRUkgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwo0djY2b0l2S3o1ZTN0N21nWEZ1bVlQ\neHhiUHRvaTFNY2RjVC9CeVVSdXdJCi0tLSAzblFwNUFZVVl2ZlUzVWZkSS9ZQi9J\nUmcrZi9FNDJJZHJGemdSZ1ZYOUZJCjpTtDXdCZ4AscWWVtrfF2cQSn/pWfECKtci\niXtW2NB0fxSvixqIe/KC4qdjNhvuHjXahqAW1qxLjxxIYoagcsk=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIC9oQjkyQnB2\nTTFuM0xER04raEhGUWhDWmFhdHJ5Wld1UWRoRndGeEIyU0UgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZwoxZzZKUUtTSFFGOW5jdGhCNlIvOVZm\nVUdTQlVCNWk0VW1iMDMyeVZ3eEF3Ci0tLSBhKzh1Mi9YcXZ2M0V6djhvZjNQS0xK\nWWlUSUV4cXpLWGQ3aWd1THZlZVJjCj+iaUD+AF+GFUvuKIZDJzahCp9I4xS8cLj0\n4yndzBlqAKsdMi93kjl5O30+seGABG/He19lMpUQ90J26YHGTCc=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRQWNUdUJVUHBZQ2JsR21T\nazRzaFRhOVJYcGFReDliTjIxRE5xZzVkN2xZCjhKSkdTc2tTS1pXVDFaMFRmQWlq\nd0xPWVZmVGF4VHhFRUIzQ1J1aWdYWjgKLS0tIGR5dUxka0VuQW9EakhCaXU5dXUr\nWGkwSjdibEh2a3RjcnZkRU5RUllwdUEKhjkfHyp7rpq2mKvxbLNjQYQx8ZWiGyUd\nxVCcboSHo/7OvfAwW1gDMIdZ+kIj/seZTJbH5lFF2+99EUvZKrIf0Q==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBlb1l2Y3J6dFdReUc4SElj\nSXpFcndWMWdNZlJld1BnOGlUMHpUU01TdUhZCmhoWFVmSDFvUkNCQk5DN0t4Q2dF\nQlVRR2c1dVFNRDhVd0E2bytRT0hyU1kKLS0tIGVZMDMzbWNlUnQ3VnZHb1FRdUZU\ndGUrWDQyZjlMN3l4elVtVXFlU1JkRUkK0lwm+yfOBLlYRz10Bq5xEZlr6ceEq1sP\n7Xcd/x30cIhS6PrNYzxN3Grh049pDZm8jLQ375TacpDb78F8Ykt9+g==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBEOXJ0ZEhZNENxQlNJVEd5\nRXNxRjdjNldnWEF2V0h1c3RzbnZhbVZmTUFNCkFiNnVSYy96cExKYTc3V0JOYStO\ncEkzQkhUMHVJeHlBRFRlQ0UyazJtdDQKLS0tIHc5OEtMWHJQalhTN0pKbzl4K08w\nUXkvajdsTkVSQ1ZneElZZVNna0l0QUUKxBrhS42c0cmHCaq6dckMr1zmItaO74W5\nexxvQVQRL8XXcdkgP5EkFqPOwmrLwJMzsj24WpMaK6kluJKLyzVRjQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZanVKdThvV281Yml4TzBh\nSXJwRGpIeENCQnhhMU9ZV0ZDclRPbmJ0VlNzCi9xZSszRlVvNHhEdEpqUi9rU20y\ncU5yWWF6enUxQnJlKytiYmdVVTkzZzAKLS0tIC92cnM5cWptcGFSRTJieEhSUVhw\namRaSWNmQy8xYkdReXZITDM2UzZFS3MKhDejk9/+IrwQ1B/6vHJfFObus5XJ2UNF\nJwVvCM/ajXaWmu+GlU0PCed28wr62pzAsuTS6gSoH6acd95AACs8yQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTZ2lpa2NicWRnVUpuVndN\nMTM5eHBZRGlUM0JPeG50M1NCemFEQ3ZlZkdVCkY5R1dTYjg5S0hzdVNpR3A5VC94\nUU1NY3JKaER6L2lXU1k5SFc0VVQyTU0KLS0tIHgyL1ZlcnFWS0VXRTBwaFZlZ1lx\nZ29HQlJ1SCtWdldiQTFHMFV0bTRYcmMKQPIwOooExpKQOvGNNMRQg3n9dg1odWX8\np3DHRHlYk5i9b0LZG8e+BSQ7+6TrHYTOTSfP8iTwV1QV0X8orcVGyg==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1xzasw9ggd9gf39nx90jpe4qu8p4nzke98e70t7e8sl9mutkgrd4s0elqcl"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"lastmodified": "2026-07-29T05:25:24Z",
|
||||||
|
"mac": "ENC[AES256_GCM,data:NknwJV1G3lKHRlQE3O3vaVTHmSLjO1gxCFhI0u+kEZL2xr8zgTp5pyW0rGPS9WCoR3vIJVKpkkfO4jID2q0yVPghbQumI3mc596fSX26lUn0BLvsdTT0tFLyqGd+l4aCIwf0yHB21PPG7NRJU35I2SwV4HO2/6FEuDgZWLsITJo=,iv:krpfWDl4WGWYrxSQ4s1o+Es9NyDYdlo2n3oxSwAoY9Y=,tag:S3NspDd87LMM0Wh0X1dxlw==,type:str]",
|
||||||
|
"version": "3.13.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICZuoZG8r6PzBg08s04t47K+Vy11j8l0anBdQ3P+dmXO
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
../../../../../../sops/machines/bosona
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"data": "ENC[AES256_GCM,data:jPPiYgDeNHu0AIz60384NSez+fZ1KHIH7o2syrxTbutKNRp4akqs/3clGk6p47C9nYRZxJFgMLZsS28h3QtIdG3AvYGK8uiI2tyl1CAeQF0iljDoD+ARZG5P4Q5OdEHtBz+LlNC3iBtgcqd1Hu39LS7bDcLiQRW5DVRhbY/4fhO8bb4Lb3d9jv252JwlBeF3rcyRKj5mWRt7IXxwB/a89GFe1xx2Dqo0zT5Plwf6xR1uEjLjFLdhY6zpXXeWVJUuARJsSsGUffRt4UKRpdTUe71d8Ixm/ke/+RVeGJbZ5Q/J69wcUnoF/iQgHvw/GgpRHLki+TxSCfOMQiQGcT2fy9na1Rb3QcbJWrqm3o3gnVAfMRUD86xLwct0rGhfl+YlG9RLHtgQ2QrRR5ktUWZ+IaidTlF9Sgall7DFdt8m3lbfUMp3JYiwkVTyPputKJYY31sASMblxlyg5o5d+7oZND8lGQU5d7BS61ZCN8lV5bmbLb/A20Ewd+MnjtOBFh4tsnjM,iv:0x088NcO7tcKWoZQWHlGBIkeTHelQ3QKoEEKiazdTB4=,tag:CA0SweAyaqZd/LAg8fDTRw==,type:str]",
|
||||||
|
"sops": {
|
||||||
|
"age": [
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHeC91VVhEOXUxRUlmZXFC\nNXBnRklwVERBQkt5dkN2ZGpueEh1RjcxY1RFCiszTVZaNU5WdlhwRldlb2p2dVhJ\nTkxOMnRtbXhQbTNqSjJLKzhSNUo3QXMKLS0tIFhkd3FxRkxFWS9BR3RldS95TmFZ\nMzFKQ2FZYnVHWC9vNWltcm9ROGRpVlUKMJzGbiDELIlSRVc8fldXqdLxoFV3aAsl\nKi+aIRVta/b7ba0Hca8TN7heJ+xR7wZp1X9MskM/zsTGgriaaohFXQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age17d4qt0n9edq57tgcqyk8eu5mrendl59yt6z2y3a4vkq7el8krqtq6lq28g"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIGlGNFN4MlNG\nZVordC90RGdVQklvNnd0VEtWS2d6cU1WdFJ3T3hCbmJ4QUEgQVEgd0l6SlBCVW1v\neDl5N0lHYmVrajZzVzVTYjd4WVdNVjZoZVlkUEtmVXlMdyBIdmtoczF0dmhxL1py\nS1hsc0ErckdoVVB0bE02RGdCNW5raERXT1ZJMTkzNjRGNHd2T3ZSTVYrKzZlbEll\nVTZKc2JVN1B2SzRuNkpaekhwSWJQaFZVQQpkU3FkWGFoSkhmMzFxYzRQaTFWUzAy\nU1BzTW92RG5YdXhRek5TUCtIK3lJCi0tLSBkaG5iQmR1SFFGOHMyU3V0TWMzajQ0\nMDIxS1BXbHEvSHg0QTE1blhPem53Cqlzx70BLFJuK8rsoSSdouBfzpL+Lc1iHxSg\nDCB9OSm8bSD+XyDNizbWtaA7bs5ilJTiCDuNU+/U+WJcXS9a2xk=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqpf43tgcfjm048lsqskvq34w2t4uvrm5qy6m2eg6zjj82ctca8wctgpczxvj0q4y6337uhvsxdh5j86k9h9ymautpvv2759ucwnef75ez7pa7fpkddklp40mxk2tedsp74359g0kefn5rsq0x0yss6cu4yd0h06up0rp08t6yc4l0hfa9y8jn5fkx6nk0hjhz06ykwv0fyxe7z42q683jy0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIEdWUnVBT2xu\ndTc5M2RIaGplM1IxdU9tTzNXNGdRWWxYN0o4QnIvcUlYVGsgQVEgZlFBRFNyWkNS\nRDJQaUJ3WWowTEcwaTk0Z0tiRHpQNmhkMTJZUlZHbHlEMCBtMzE5bzVQb1JmZkpy\nY0orbEs2RzBSVXA3UmZYZkRRanNnc2pHSnJjK1pLVmZOWGR4d0IwZjh1YXlkakRx\nTm5EMXR3ZjNHWGl0Ty8rcHpQbkcxRTZmZwpJR3dFVGVOaTA5dHdDRXdKWGcwaERi\nbStxUXZxUXcwV0hHSVZ6QVRuRWxBCi0tLSBFK0l4aW1uN2E2Y2tyenp3dEN6N0ds\nVjFqZjdVekc4ZjVRK3ZlaEZBRTVrCrjSSRyEUa/vob1COEskqE3RLmLqF/tg0OAJ\nRIwB5jMUizFCV6P+9Zcmrwvq/HcchqlwluCC0LFWS1YdSOkPcbs=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqprw0vfpc8wzsu78quc777kmee54ln6nnsjrnrhl7nr33eh4kvkksqp05qqxj4kgfzrmrugrsvg7skx6ghh3q9xc0x0agthtkvy25d9eq7eklta5wf7s30hexkuyl5546rdz9ffa5tawlp5yweqkgccntw0ny540n2am3cqw3luhxkfmrp63kwr6mwplhr9u26wll48x0n3k5f60c7hg9a3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IGZpZG8yLWhtYWMgQUFJIEJaeDEyRVhH\nbEVsU29DZ3RLdlptdlUxR0kydE5oanlLNi9jeitFSzFkMTQgQVEgZUh4S2o1R2RE\nV0svbnErTmxodXE2bUxJK3lla2lvajB3OXVwZHJtcHU5dyBKU3I4WFJnK3BOQXl0\nZDh5NTB5ZFlteFJIM2FVTVp5cmNyRXZqL1V0c0l6L0tSb0c5ZU9jbmRXMTIwb2c1\nQjZsREgzWUxaOXBUd2pQK2NncDZuUmZkZworSFFtZVlaK2UxaWp6OXQxMG9iMzBQ\nMGNkR3Zta3AwOVROU2lwYk9QbXNBCi0tLSBYaTdOWll4cWpvQ2trOFpzNTVhdUE1\na09aUytkM3U0MlBzN2tUQm9hdFYwCi9YXHm52onakxF+f//5ZAC3uUqWQnew5tn3\nbitnkpNlKr8DtEs3DnP9jIgXQXoWDXnzMHqJ8oV76U3PFZChmqI=\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1fido2-hmac1qqpyewum3q8dfcumfgec8nn958aec9f4q9aqy0k06kw5kq27d6fdqdgp0p7y4ru3n5xk90u747xevxa2af3v37e85j9g3axrmw5hdwdfh0wz22hut5vrafxsx26a7vh8fjwkymz3ramfgvvu4detztu075kmpr8l9ydqda0rnjwatdwmfgswg849p37astvld98s3nleeq575azlwc2hhpuh"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMR2ZVLzNjazNnQ3ZXVGR5\nYkZTMzU0ZmhUZDBZOEdFNVRrSFhGMjd5TVFjCmozVzIwS1F1UkVxeHhDTnF1VEFG\nVjhNMmxRcmFEeE1TNWtaTmVjcnJYS2MKLS0tIE13SWhRbi84TUZaSWwva1lTVlhH\nb1hPSEZuUmlPNFRCM0FKSmlnOU9QZDgKh2bWnHtB92HjvOTdtRcg/lbove3BQZpC\nr+qveYtbA9K2o9GR5+L2oCQ2oiB+I65+wX8PSaWtNF9m/JKtZ7YMjA==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1hlzrpqqgndcthq5m5yj9egfgyet2fzrxwa6ynjzwx2r22uy6m3hqr3rd06"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBnR1ZpOWZVejdpd3l3akpa\na0ttM0VLWHBsMDNJRVI1VlMrSXgxZzE3VkFrCkZaajZseE95dThaMUo3ZGg3ZHkw\nWVZMclpDOVhCYkQvUnQ4WHlSRXBXSWsKLS0tIGtzMjdMT3AzRytHQ0hqeXFTVDRu\nRDRYYWpSdjhTK0N2RU5GL1ZtOUdydEUKFpVtAaF3rD0mpdp6VRxbAfOB+2Srf2yd\n4bi57URih8XgqY/1kaGg1k8w8JrVo+zkI5SDfCV9bykZWkYM+rirMA==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1sg0rvgyetdcqw7j2x983fh69kdkvqsngpe5x36e5920qa7fze3cqhj4wgx"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQdzJSK3lMRHJpQlVVK21o\nSnFIdmZRU2hoWVY4NFVkajlvUEk3WDZGK0NVCmpvS3JZbWRCak5VS01yQmhoQlhw\nVmFUM3g0NkdNNUU5VytrczJDU25WdTQKLS0tIEtYMndFY3YxRndxTnFKQ0w2amhZ\ncnliRzdCYml2WWJNV1hSTVd5NzJQd2sKs0taIArtNPXmGEBje9IKh4Mha1BaUtjU\nW4+4Z+CFBbleysrxS/MD5uTV/WRlGasVU6RXvKGYo5Th98Xc7anwNQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1swlyyk2rzvevqawyeekv75nx2dz34zpe3xqhkqme26gcgeavy4dqrfpcd8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5NFNtbHNYemtEaG1ac05o\nNEliNDFYWEU0Y2ExSGh4U1IrYWM1Y2NsRDA0CmJDQTVNNlBEZWF5eXJWM3oxS0hV\nblZ4bzA4c2c3QzdVbmZheC9Zb3Q2QUEKLS0tIEl0UFFmQUxIUGtxTjZjSFJGM3dQ\ndGRsMEhmTzVtZ08rSS9iWTVqNU1PVTgKuyzAakX+kW4qd0AZ7yRrX6bm3FuNxRd/\nsBfp1UGAfJ/GOoFOFxzCm6yByZsm7QDlZjKyFzQVEok/bMeG5LUQNw==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1vphy2sr6uw4ptsua3gh9khrm2cqyt65t46tusmt44z98qa7q6ymq6prrdl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOU2gvclovUkFFUXFiOElJ\ndXhPYVR4UEU4bkpLbzlZcm1SdStkZVplUDNvCjhod1M2UjQ3NWJOSjR6SjFzbEsy\nS2ovUEV1bTRjL3dMWm92Ny9uNUdmWW8KLS0tIEM2UXBlQlVuY2l6aG1JVmRlREE4\nV1plMVdPUlE2VjQvVTFRS1hmZFFyaVUKZXvjUdj40AwuA8bh5/GR6jhgaIwr01kl\nHjbPLN6im9L9U1Yh+0Jbcyx2R1xseQIkjsd6Ucgfiwfu2Vq94SzlRQ==\n-----END AGE ENCRYPTED FILE-----\n",
|
||||||
|
"recipient": "age1xzasw9ggd9gf39nx90jpe4qu8p4nzke98e70t7e8sl9mutkgrd4s0elqcl"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"lastmodified": "2026-07-29T05:25:24Z",
|
||||||
|
"mac": "ENC[AES256_GCM,data:ZIaVyo83oDVJklLwpj/BPXRC329DSTBd0rXjIDKD3lpamPB4f2gxQqZVKJjstJxfELks/CmNaOOyOedhvgqJp2hvXSoxuQNC3+9HXf1mt4xlTWiKraQaz8sxqGmuaJeSfoMYGBS2DDmPB2r2ryoG2ddweV0dDd8hm0oln5Dm20U=,iv:IHGravVp5xeSAD9afiOdf1Tv1Ky1uJ8pedon5oHlmaU=,tag:G5Hh8defafXAjc6KDG8Zvw==,type:str]",
|
||||||
|
"version": "3.13.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user