44 lines
1.2 KiB
Nix
44 lines
1.2 KiB
Nix
{
|
|
lib,
|
|
config,
|
|
...
|
|
}: let
|
|
inherit (lib.modules) mkMerge;
|
|
inherit (lib.lists) forEach filter;
|
|
inherit (builtins) hasAttr;
|
|
|
|
wireguard_data = import ../../data/chaos_wireguard_internal.nix {};
|
|
wireguard_hosts = wireguard_data.hosts;
|
|
|
|
currentHostName = config.networking.hostName;
|
|
currentHostConfig = wireguard_hosts.${currentHostName};
|
|
in {
|
|
services.secrets = {
|
|
enable = true;
|
|
|
|
requiredVaultPaths = [
|
|
"private-public-keys/data/wireguard/chaos-internal/${currentHostName}"
|
|
];
|
|
|
|
secrets = mkMerge ([
|
|
{
|
|
wg_priv = {
|
|
fetchScript = ''
|
|
simple_get "/private-public-keys/wireguard/chaos-internal/${currentHostName}" .private > "$secretFile"
|
|
'';
|
|
};
|
|
}
|
|
]
|
|
++ (forEach (filter (hostName: (hostName != currentHostName && hasAttr "endpoint" wireguard_hosts.${hostName})) (builtins.attrNames wireguard_hosts)) (
|
|
hostName: let
|
|
in {
|
|
"wg_preshared_${hostName}" = {
|
|
fetchScript = ''
|
|
simple_get "/private-public-keys/wireguard/chaos-internal/${currentHostName}" ".preshared_keys.\"${hostName}\"" > "$secretFile"
|
|
'';
|
|
};
|
|
}
|
|
)));
|
|
};
|
|
}
|