clanServices/zerotier: use clanLib.getPublicValue

This commit is contained in:
pinpox
2025-10-22 23:18:00 +02:00
parent 0dd6c08e33
commit a5cd36e845
2 changed files with 35 additions and 21 deletions

View File

@@ -1,4 +1,7 @@
{ ... }:
{
clanLib,
...
}:
{
_class = "clan.service";
manifest.name = "clan-core/zerotier";
@@ -39,6 +42,7 @@
imports = [
(import ./shared.nix {
inherit
clanLib
instanceName
roles
config
@@ -90,6 +94,7 @@
imports = [
(import ./shared.nix {
inherit
clanLib
instanceName
roles
config
@@ -142,6 +147,7 @@
imports = [
(import ./shared.nix {
inherit
clanLib
instanceName
roles
config
@@ -160,15 +166,16 @@
);
networkIps = builtins.foldl' (
ips: name:
if
builtins.pathExists "${config.clan.core.settings.directory}/vars/per-machine/${name}/zerotier/zerotier-ip/value"
then
ips
++ [
(builtins.readFile "${config.clan.core.settings.directory}/vars/per-machine/${name}/zerotier/zerotier-ip/value")
]
else
ips
let
ztIp = clanLib.vars.getPublicValue {
flake = config.clan.core.settings.directory;
machine = name;
generator = "zerotier";
file = "zerotier-ip";
default = null;
};
in
if ztIp != null then ips ++ [ ztIp ] else ips
) [ ] machines;
allHostIPs = settings.allowedIps ++ networkIps;
in

View File

@@ -1,4 +1,5 @@
{
clanLib,
lib,
config,
pkgs,
@@ -8,20 +9,26 @@
}:
let
controllerMachine = builtins.head (lib.attrNames roles.controller.machines or { });
networkIdPath = "${config.clan.core.settings.directory}/vars/per-machine/${controllerMachine}/zerotier/zerotier-network-id/value";
networkId = if builtins.pathExists networkIdPath then builtins.readFile networkIdPath else null;
networkId = clanLib.vars.getPublicValue {
flake = config.clan.core.settings.directory;
machine = controllerMachine;
generator = "zerotier";
file = "zerotier-network-id";
default = null;
};
moons = lib.attrNames (roles.moon.machines or { });
moonIps = builtins.foldl' (
ips: name:
if
builtins.pathExists "${config.clan.core.settings.directory}/vars/per-machine/${name}/zerotier/zerotier-ip/value"
then
ips
++ [
(builtins.readFile "${config.clan.core.settings.directory}/vars/per-machine/${name}/zerotier/zerotier-ip/value")
]
else
ips
let
moonIp = clanLib.vars.getPublicValue {
flake = config.clan.core.settings.directory;
machine = name;
generator = "zerotier";
file = "zerotier-ip";
default = null;
};
in
if moonIp != null then ips ++ [ moonIp ] else ips
) [ ] moons;
in
{