{ lib, config, clanLib, ... }: with lib; with types; let machines = clanLib.allMachineNames; publicKey = clanLib.readFact "ssh.id_ed25519.pub"; tld = config.clan.static-hosts.topLevelDomain; knownHosts = lib.genAttrs machines (machine: { hostNames = [ "[${machine}]:2222" "[${machine}.${tld}]:2222" "[${machine}.private]:2222" "${machine}" "${machine}.${tld}" "${machine}.private" ]; publicKey = publicKey machine; } ); in { options.components.network.zerotier = { enable = mkOption { type = bool; default = false; # todo : properly set this }; }; config = mkIf config.components.network.zerotier.enable { services.openssh.knownHosts = knownHosts; }; }