diff --git a/clanModules/zerotier.nix b/clanModules/zerotier.nix new file mode 100644 index 0000000..180b64d --- /dev/null +++ b/clanModules/zerotier.nix @@ -0,0 +1,29 @@ +{ config, lib, ... }: +{ + options.clan.networking.zerotier = { + networkId = lib.mkOption { + type = lib.types.str; + description = '' + zerotier networking id + ''; + }; + }; + config = { + systemd.network.networks.zerotier = { + matchConfig.Name = "zt*"; + networkConfig = { + LLMNR = true; + LLDP = true; + MulticastDNS = true; + KeepConfiguration = "static"; + }; + }; + networking.firewall.allowedUDPPorts = [ 9993 ]; + networking.firewall.interfaces."zt+".allowedTCPPorts = [ 5353 ]; + networking.firewall.interfaces."zt+".allowedUDPPorts = [ 5353 ]; + services.zerotierone = { + enable = true; + joinNetworks = [ config.clan.networking.zerotier.networkId ]; + }; + }; +} diff --git a/flake-parts/modules.nix b/flake-parts/modules.nix index 098af10..da9e465 100644 --- a/flake-parts/modules.nix +++ b/flake-parts/modules.nix @@ -1,7 +1,11 @@ # export some of our flake moduels for re-use in other projects -{ ... +{ lib +, self +, ... }: { flake.modules.flake-parts = { writers = ./writers; }; + flake.nixosModules = lib.mapAttrs (_: nix: { imports = [ nix ]; }) (self.lib.findNixFiles ../nixosModules); + flake.clanModules = lib.mapAttrs (_: nix: { imports = [ nix ]; }) (self.lib.findNixFiles ../clanModules); } diff --git a/flake-parts/packages.nix b/flake-parts/packages.nix index c379078..dc776dd 100644 --- a/flake-parts/packages.nix +++ b/flake-parts/packages.nix @@ -5,6 +5,7 @@ system = "x86_64-linux"; modules = [ self.nixosModules.installer + self.nixosModules.hidden-ssh-announce self.inputs.nixos-generators.nixosModules.all-formats self.inputs.disko.nixosModules.disko ]; diff --git a/flake.nix b/flake.nix index a3d66e7..9d5696a 100644 --- a/flake.nix +++ b/flake.nix @@ -31,21 +31,7 @@ ./templates/flake-module.nix ./templates/python-project/flake-module.nix ./pkgs/clan-cli/flake-module.nix + ./lib/flake-module.nix ]; - flake = { - nixosModules = { - installer = { - imports = [ - ./modules/installer.nix - ./modules/hidden-ssh-announce.nix - ]; - }; - hidden-announce = { - imports = [ - ./modules/hidden-ssh-announce.nix - ]; - }; - }; - }; }); } diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..b0c2432 --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,17 @@ +{ lib, ... }: +let + clanLib = { + findNixFiles = folder: + lib.mapAttrs' + (name: type: + if + type == "directory" + then + lib.nameValuePair name "${folder}/${name}" + else + lib.nameValuePair (lib.removeSuffix ".nix" name) "${folder}/${name}" + ) + (builtins.readDir folder); + }; +in +clanLib diff --git a/lib/flake-module.nix b/lib/flake-module.nix new file mode 100644 index 0000000..38d84a8 --- /dev/null +++ b/lib/flake-module.nix @@ -0,0 +1,5 @@ +{ lib +, ... +}: { + flake.lib = import ./default.nix { inherit lib; }; +} diff --git a/modules/hidden-ssh-announce.nix b/nixosModules/hidden-ssh-announce.nix similarity index 100% rename from modules/hidden-ssh-announce.nix rename to nixosModules/hidden-ssh-announce.nix diff --git a/modules/installer.nix b/nixosModules/installer/default.nix similarity index 100% rename from modules/installer.nix rename to nixosModules/installer/default.nix