From ee05c0dad49bc80ddafd9880729fc255e594f771 Mon Sep 17 00:00:00 2001 From: kurogeek Date: Mon, 1 Dec 2025 14:44:10 +0700 Subject: [PATCH] mob next [ci-skip] [ci skip] [skip ci] lastFile:flake.nix --- flake.nix | 1 + lib/default.nix | 11 +++++++++++ lib/zerotier-interface.nix | 29 +++++++++++++++++++++++++++++ modules/clan/phonebox/default.nix | 5 ++++- overlays/default.nix | 6 ++++++ 5 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 lib/default.nix create mode 100644 lib/zerotier-interface.nix create mode 100644 overlays/default.nix diff --git a/flake.nix b/flake.nix index 4afb27a..8c86668 100644 --- a/flake.nix +++ b/flake.nix @@ -44,6 +44,7 @@ ./machines ./routers ./inventories + ./overlays ./modules/clan/flake-module.nix ./modules/nixos/flake-module.nix ]; diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..d370082 --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,11 @@ +final: prev: +let + callLibs = file: import file { lib = prev; }; +in +{ + lib = prev.lib.extend ( + finalLib: prevLib: { + getInterface = callLibs ./zerotier-interface.nix { }; + } + ); +} diff --git a/lib/zerotier-interface.nix b/lib/zerotier-interface.nix new file mode 100644 index 0000000..687cca3 --- /dev/null +++ b/lib/zerotier-interface.nix @@ -0,0 +1,29 @@ +nwid: +{ pkgs, ... }: +let + ztInterfaceScript = pkgs.writeShellScript "zt-interface" '' + #!/usr/bin/env bash + + network="$1" + index=${"2:-0"} + + network="0x$network" + + # zerotier hash function + network=$(( (($network ^ ($network >> (3*8))) + $index ) % (1<<(5*8)) )) + + # encode the result in base32 + while [ $network -gt 0 ]; do + index=$(( $network % (1<<5) + 24 )) + [ $index -lt 50 ] && index=$(( $index + 73 )) + result="$(printf "\\%03o" $index)$result" + network=$(( $network >> 5 )) + done + + echo "zt$(printf %b "$result")" + ''; + result = pkgs.runCommand "zt-interface-output" { } '' + ${ztInterfaceScript} > $out + ''; +in +builtins.readFile result diff --git a/modules/clan/phonebox/default.nix b/modules/clan/phonebox/default.nix index ab252b7..815a854 100644 --- a/modules/clan/phonebox/default.nix +++ b/modules/clan/phonebox/default.nix @@ -180,8 +180,11 @@ ]; networking.firewall.allowedTCPPorts = [ 53 - 80 ]; + networking.firewall.interfaces = + let + in + { }; services.asterisk = { enable = lib.mkDefault true; diff --git a/overlays/default.nix b/overlays/default.nix new file mode 100644 index 0000000..d0d24c1 --- /dev/null +++ b/overlays/default.nix @@ -0,0 +1,6 @@ +{ ... }: +{ + flake.overlays = { + libsOverlay = import ../lib/default.nix; + }; +}