diff --git a/nixos/modules/services/networking/zerotierone.nix b/nixos/modules/services/networking/zerotierone.nix index 994e01d4980e..e4e17cb1ded8 100644 --- a/nixos/modules/services/networking/zerotierone.nix +++ b/nixos/modules/services/networking/zerotierone.nix @@ -28,7 +28,20 @@ in }; options.services.zerotierone.package = mkPackageOption pkgs "zerotierone" { }; - + + options.services.zerotierone.localConf = mkOption { + default = { }; + description = mdDoc '' + Configuration to be written to the zerotier JSON-based local.conf. + The configuration will be symlinked to /var/lib/zerotier-one/local.conf at build time. + To understand the configuration format, refer to https://docs.zerotier.com/config/#local-configuration-options. + ''; + example = { + settings.allowTcpFallbackRelay = false; + }; + type = types.attrs; + }; + config = mkIf cfg.enable { systemd.services.zerotierone = { description = "ZeroTierOne"; @@ -45,7 +58,9 @@ in chown -R root:root /var/lib/zerotier-one '' + (concatMapStrings (netId: '' touch "/var/lib/zerotier-one/networks.d/${netId}.conf" - '') cfg.joinNetworks); + '') cfg.joinNetworks) + '' + ln -s ${conf} /var/lib/zerotier-one/local.conf + ''; serviceConfig = { ExecStart = "${cfg.package}/bin/zerotier-one -p${toString cfg.port}"; Restart = "always";