aboutsummaryrefslogtreecommitdiffstats
path: root/zones/default.nix
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-09-28 22:04:45 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-09-28 22:04:45 +0200
commit3e54e64ec074f4bec4051c4e448ba08196dbd3f9 (patch)
tree29331e250cea2a9ff9d1628681b88af4d5584354 /zones/default.nix
parentmodules/mail: Add `soispha@b-peetz.de` as a separate user (diff)
downloadnixos-server-3e54e64ec074f4bec4051c4e448ba08196dbd3f9.zip
zones/*: Deduplicate `mkSerial` functionHEADmain
Diffstat (limited to 'zones/default.nix')
-rw-r--r--zones/default.nix44
1 files changed, 39 insertions, 5 deletions
diff --git a/zones/default.nix b/zones/default.nix
index de03a0d..dc3eb9f 100644
--- a/zones/default.nix
+++ b/zones/default.nix
@@ -1,6 +1,40 @@
-{lib, ...}: {
- "vhack.eu" = import ./vhack.eu/zone.nix {inherit lib;};
- "j-schoeffel.de" = import ./j-schoeffel.de/zone.nix {inherit lib;};
- "jaki-schoeffel.de" = import ./jaki-schoeffel.de/zone.nix {inherit lib;};
- "jaki.li" = import ./jaki.li/zone.nix {inherit lib;};
+{lib, ...}: let
+ /*
+ Computes a reasonable value for the DNS serial number from the date of last change
+ and the iteration of that day.
+
+ # Type
+
+ mkSerial :: Number -> Number -> Number -> Number -> Number
+
+ # Arguments
+
+ year
+ : The year of the last change in the format YYYY.
+
+ month
+ : The month of the last change in the format MM.
+
+ day
+ : The day of the last change in the format DD.
+
+ iteration
+ : The number of change on that day. The format should be CC (assuming there are less
+ than 100 changes happening on a day) .
+
+ # Examples
+
+ mkSerial 2025 04 01 01
+ => 2025040101
+ */
+ mkSerial = year: month: day: iteration: let
+ n2 = lib.strings.fixedWidthNumber 2;
+ n4 = lib.strings.fixedWidthNumber 4;
+ in
+ lib.strings.toIntBase10 "${n4 year}${n2 month}${n2 day}${n2 iteration}";
+in {
+ "vhack.eu" = import ./vhack.eu/zone.nix {inherit mkSerial;};
+ "j-schoeffel.de" = import ./j-schoeffel.de/zone.nix {inherit mkSerial;};
+ "jaki-schoeffel.de" = import ./jaki-schoeffel.de/zone.nix {inherit mkSerial;};
+ "jaki.li" = import ./jaki.li/zone.nix {inherit mkSerial;};
}