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

View File

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