diff --git a/zones/reverse-ipv6.nix b/zones/reverse-ipv6.nix index e2b556b..19e6900 100644 --- a/zones/reverse-ipv6.nix +++ b/zones/reverse-ipv6.nix @@ -5,14 +5,6 @@ let pvvv6Prefix = builtins.substring 0 14 (normalizev6 "2001:700:300:1900::"); domainSuffix = ".pvv.ntnu.no."; - # Pad a number or string with zeroes to length 4 (32 -> "0032") - padTo4 = - n: - let - padded = "0000${toString n}"; - in - builtins.substring (builtins.stringLength padded - 4) 4 padded; - # Takes an IPv6 address on the format nnnnXXXXnnnn (literal XXXX) and replaces XXXX with enough zeroes to make a full 128 bit address padDoubleColon = addr: @@ -20,8 +12,9 @@ let parts = lib.splitString "XXXX" addr; nibbleCount = builtins.foldl' builtins.add 0 (map builtins.stringLength parts); zeros = lib.concatStrings (builtins.genList (i: "0") (32 - nibbleCount)); + padding = lib.fixedWidthString (32 - nibbleCount) "0" ""; in - lib.replaceString "XXXX" zeros addr; + lib.replaceString "XXXX" padding addr; # Translate an IPv6 address (e.g. 2001:700:300:1900::1) into the fully expanded 20010700030019000000000000000001 normalizev6 = @@ -29,7 +22,7 @@ let (lib.pipe addr [ (lib.replaceString "::" ":XXXX:") (lib.splitString ":") - (map padTo4) + (map (lib.fixedWidthString 4 "0")) (map (lib.splitString "")) (lib.flatten) (lib.concatStrings)