From 97dbf4b4fa0c3a91e9d6239c2df27568ba888f06 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 21 Mar 2026 11:54:50 +0000 Subject: [PATCH 01/24] [automated] update stats --- stats/count.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stats/count.txt b/stats/count.txt index e85087a..64bb6b7 100644 --- a/stats/count.txt +++ b/stats/count.txt @@ -1 +1 @@ -31 +30 From 0015313795a473d13743d90bce35d5c2892ef4ac Mon Sep 17 00:00:00 2001 From: satr14washere <90962949+satr14washere@users.noreply.github.com> Date: Sat, 21 Mar 2026 19:13:53 +0700 Subject: [PATCH 02/24] base flake.nix and example --- .gitignore | 3 +- docs/example.nix | 78 ++++++++++++++++++++++++++++++++++++++++++++++ domains/satr14.nix | 5 +++ flake.nix | 26 ++++++++++++---- 4 files changed, 105 insertions(+), 7 deletions(-) create mode 100644 docs/example.nix create mode 100644 domains/satr14.nix diff --git a/.gitignore b/.gitignore index 6d32cd8..0ff973d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ creds.json -types-dnscontrol.d.ts \ No newline at end of file +types-dnscontrol.d.ts +result \ No newline at end of file diff --git a/docs/example.nix b/docs/example.nix new file mode 100644 index 0000000..5a58fe9 --- /dev/null +++ b/docs/example.nix @@ -0,0 +1,78 @@ +{ dns, ... }: let + owner = { + username = "satr14washere"; + email = "admin@satr14.my.id"; + }; + proxy = false; +in with dns.lib.combinators; { + A = [ + { address = "203.0.113.1"; ttl = 60 * 60; } + "203.0.113.2" + (ttl (60 * 60) (a "203.0.113.3")) + ]; + + AAAA = [ + "4321:0:1:2:3:4:567:89ab" + ]; + + MX = mx.google; + + TXT = [ + (with spf; strict [ "a:mail.example.com" google ]) + ]; + + DMARC = [ (dmarc.postmarkapp "mailto:re+abcdefghijk@dmarc.postmarkapp.com") ]; + + CAA = letsEncrypt "admin@example.com"; + + SRV = [ + { + service = "sip"; + proto = "tcp"; + port = 5060; + target = "sip.example.com"; + } + ]; + + SSHFP = [ + { + algorithm = "ed25519"; + fingerprintType = "sha256"; + fingerprint = "899EB4AC9285578AFDA3CCBE152EE78D8618B8F3862FEF2703E1FC7011E9B8AA"; + } + ]; + OPENPGPKEY = [ + "very long base64 text" + ]; + HTTPS = [ + { + svcPriority = 1; + targetName = "."; + alpn = [ "http/1.1" "h2" "h3" ]; + ipv4hint = [ "203.0.113.1" "203.0.113.2" "203.0.113.3" ]; + ipv6hint = [ "4321:0:1:2:3:4:567:89ab" ]; + } + ]; + TLSA = [ + { + certUsage = "dane-ee"; + selector = "spki"; + matchingType = "sha256"; + certificate = "899EB4AC9285578AFDA3CCBE152EE78D8618B8F3862FEF2703E1FC7011E9B8AA"; + } + ]; + + subdomains = rec { + www.A = [ "203.0.113.4" ]; + www2 = host "203.0.113.5" "4321:0:1:2:3:4:567:89bb"; + www3 = host "203.0.113.6" null; + www4 = www3; + + staging = delegateTo [ + "ns1.another.com." + "ns2.another.com." + ]; + + foo.subdomains.www.CNAME = [ "foo.test.com." ]; + }; +} diff --git a/domains/satr14.nix b/domains/satr14.nix new file mode 100644 index 0000000..e9b421c --- /dev/null +++ b/domains/satr14.nix @@ -0,0 +1,5 @@ +{ ... }: let + owner.username = "satr14washere"; +in { + CNAME = "5th-site.pages.dev"; +} \ No newline at end of file diff --git a/flake.nix b/flake.nix index b35d8b3..5bbc857 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,5 @@ { - description = "Zone File Generator For part-of.my.id"; + description = "Zone File Generator"; inputs.dns.url = "github:nix-community/dns.nix"; outputs = { dns, ... }: let @@ -11,6 +11,20 @@ "fattouche.ns.cloudflare.com" ]; }; + + domainFiles = let + dir = ./domains; + entries = builtins.readDir ./domains; + nixFiles = builtins.filter (name: builtins.match ".*\\.nix$" name != null) (builtins.attrNames entries); + in map (name: { + subdomain = builtins.replaceStrings [ ".nix" ] [ "" ] name; + config = import (dir + "/${name}") { inherit dns; }; + }) nixFiles; + + subdomainsFromFiles = builtins.listToAttrs (map (entry: { + name = entry.subdomain; + value = entry.config; + }) domainFiles); in { packages.x86_64-linux = builtins.mapAttrs (_: domain: dns.util.x86_64-linux.writeZone domain.domain ( @@ -21,12 +35,12 @@ serial = builtins.currentTime; }; NS = domain.nameservers; - - # note: Cloudflare ignores SOA and NS records uploaded via Zone File, they are just so that dns.nix builds a valid zone file. - - A = [ "1.1.1.1" ]; + + # note: Cloudflare ignores SOA and NS records uploaded via Zone File, they are included just so that dns.nix builds a valid zone file. + + subdomains = subdomainsFromFiles; } ) ) domains; }; -} +} \ No newline at end of file From e7d62df069ed9ae7d3d595e6bab6b92b05a1fd5e Mon Sep 17 00:00:00 2001 From: satr14washere <90962949+satr14washere@users.noreply.github.com> Date: Sat, 21 Mar 2026 19:15:20 +0700 Subject: [PATCH 03/24] todo implementation --- flake.nix | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/flake.nix b/flake.nix index 5bbc857..9dd8906 100644 --- a/flake.nix +++ b/flake.nix @@ -11,20 +11,6 @@ "fattouche.ns.cloudflare.com" ]; }; - - domainFiles = let - dir = ./domains; - entries = builtins.readDir ./domains; - nixFiles = builtins.filter (name: builtins.match ".*\\.nix$" name != null) (builtins.attrNames entries); - in map (name: { - subdomain = builtins.replaceStrings [ ".nix" ] [ "" ] name; - config = import (dir + "/${name}") { inherit dns; }; - }) nixFiles; - - subdomainsFromFiles = builtins.listToAttrs (map (entry: { - name = entry.subdomain; - value = entry.config; - }) domainFiles); in { packages.x86_64-linux = builtins.mapAttrs (_: domain: dns.util.x86_64-linux.writeZone domain.domain ( @@ -38,7 +24,8 @@ # note: Cloudflare ignores SOA and NS records uploaded via Zone File, they are included just so that dns.nix builds a valid zone file. - subdomains = subdomainsFromFiles; + #subdomains = ; + # ^^ todo: implement file imports from ./domains } ) ) domains; From 71102fabc8c16e13be5762fae46aad2ec7e4b555 Mon Sep 17 00:00:00 2001 From: satr14washere <90962949+satr14washere@users.noreply.github.com> Date: Sat, 21 Mar 2026 19:33:49 +0700 Subject: [PATCH 04/24] remove apex, managed seperately --- domains/@.json | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 domains/@.json diff --git a/domains/@.json b/domains/@.json deleted file mode 100644 index 9c9947c..0000000 --- a/domains/@.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "description": "dashboard and main website", - "owner": { - "username": "partofmyid" - }, - "record": { - "ALIAS": "website-e7n.pages.dev" - } -} From a97ad1b804202c2d60bd0dcb18e737282273cb09 Mon Sep 17 00:00:00 2001 From: satr14washere <90962949+satr14washere@users.noreply.github.com> Date: Sat, 21 Mar 2026 20:13:05 +0700 Subject: [PATCH 05/24] migrated nix files --- domains/_discord.colin.nix | 9 + domains/_discord.cutedog5695.nix | 10 ++ domains/_discord.justdeveloper.nix | 10 ++ domains/_discord.nix | 8 + domains/_discord.roki.nix | 8 + domains/batman.nix | 8 + domains/c.nix | 9 + domains/colin.nix | 9 + domains/cutedog5695.nix | 10 ++ domains/elkaff.nix | 7 + domains/j.nix | 10 ++ domains/jacob.nix | 8 + domains/jd.nix | 10 ++ domains/job.nix | 8 + domains/joel.nix | 16 ++ domains/js.nix | 10 ++ domains/just.nix | 10 ++ domains/justdev.nix | 10 ++ domains/justdeveloper.nix | 10 ++ domains/juststudio.nix | 10 ++ domains/katz.nix | 8 + domains/no-one-is.nix | 9 + domains/pxl.nix | 8 + domains/rchessauth.nix | 8 + domains/roki.nix | 9 + domains/satr14.nix | 12 +- domains/stef.nix | 9 + domains/ukriu.nix | 10 ++ domains/you-are.nix | 9 + scripts/migrate-json-to-nix.py | 279 +++++++++++++++++++++++++++++ 30 files changed, 546 insertions(+), 5 deletions(-) create mode 100644 domains/_discord.colin.nix create mode 100644 domains/_discord.cutedog5695.nix create mode 100644 domains/_discord.justdeveloper.nix create mode 100644 domains/_discord.nix create mode 100644 domains/_discord.roki.nix create mode 100644 domains/batman.nix create mode 100644 domains/c.nix create mode 100644 domains/colin.nix create mode 100644 domains/cutedog5695.nix create mode 100644 domains/elkaff.nix create mode 100644 domains/j.nix create mode 100644 domains/jacob.nix create mode 100644 domains/jd.nix create mode 100644 domains/job.nix create mode 100644 domains/joel.nix create mode 100644 domains/js.nix create mode 100644 domains/just.nix create mode 100644 domains/justdev.nix create mode 100644 domains/justdeveloper.nix create mode 100644 domains/juststudio.nix create mode 100644 domains/katz.nix create mode 100644 domains/no-one-is.nix create mode 100644 domains/pxl.nix create mode 100644 domains/rchessauth.nix create mode 100644 domains/roki.nix create mode 100644 domains/stef.nix create mode 100644 domains/ukriu.nix create mode 100644 domains/you-are.nix create mode 100755 scripts/migrate-json-to-nix.py diff --git a/domains/_discord.colin.nix b/domains/_discord.colin.nix new file mode 100644 index 0000000..e107e70 --- /dev/null +++ b/domains/_discord.colin.nix @@ -0,0 +1,9 @@ +{ dns, ... }: let + owner = { + username = "ColinLeDev"; + }; + description = "Discord verification"; + proxy = false; +in with dns.lib.combinators; { + TXT = [ "dh=279643a6f8677dedb1c5c63d007fc4516149679c" ]; +} diff --git a/domains/_discord.cutedog5695.nix b/domains/_discord.cutedog5695.nix new file mode 100644 index 0000000..8b6e78e --- /dev/null +++ b/domains/_discord.cutedog5695.nix @@ -0,0 +1,10 @@ +{ dns, ... }: let + owner = { + username = "CuteDog5695"; + email = "cutedog5695@gmail.com"; + repo = "https://github.com/CuteDog5695/cutedog5695.github.io"; + }; + proxy = false; +in with dns.lib.combinators; { + TXT = [ "dh=a7c19efb0f6bc38b97a33760f6c1ee84df4151b1" ]; +} diff --git a/domains/_discord.justdeveloper.nix b/domains/_discord.justdeveloper.nix new file mode 100644 index 0000000..c1025bb --- /dev/null +++ b/domains/_discord.justdeveloper.nix @@ -0,0 +1,10 @@ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "justdeveloper@juststudio.is-a.dev"; + repo = "https://github.com/JustDeveloper1/Website"; + }; + proxy = false; +in with dns.lib.combinators; { + TXT = [ "dh=6024027bc233825451e290ac37a4b4a1f838ee70" ]; +} diff --git a/domains/_discord.nix b/domains/_discord.nix new file mode 100644 index 0000000..ee3009d --- /dev/null +++ b/domains/_discord.nix @@ -0,0 +1,8 @@ +{ dns, ... }: let + owner = { + username = "satr14washere"; + }; + proxy = false; +in with dns.lib.combinators; { + TXT = [ "dh=d509fc9014e196311ed887c2e410cdefa833436e" ]; +} diff --git a/domains/_discord.roki.nix b/domains/_discord.roki.nix new file mode 100644 index 0000000..5b1d452 --- /dev/null +++ b/domains/_discord.roki.nix @@ -0,0 +1,8 @@ +{ dns, ... }: let + owner = { + username = "Roki100"; + discord = "289479495444987904"; + }; +in with dns.lib.combinators; { + TXT = [ "dh=5633078cd5bfd347a896ddb0f0de017c5423aa06" ]; +} diff --git a/domains/batman.nix b/domains/batman.nix new file mode 100644 index 0000000..0ad04bd --- /dev/null +++ b/domains/batman.nix @@ -0,0 +1,8 @@ +{ dns, ... }: let + owner = { + username = "shadowe1ite"; + }; + proxy = true; +in with dns.lib.combinators; { + CNAME = [ "shadowe1ite.github.io." ]; +} diff --git a/domains/c.nix b/domains/c.nix new file mode 100644 index 0000000..bed0b01 --- /dev/null +++ b/domains/c.nix @@ -0,0 +1,9 @@ +{ dns, ... }: let + owner = { + username = "orangci"; + email = "c@orangc.xyz"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "edge.redirect.pizza." ]; +} diff --git a/domains/colin.nix b/domains/colin.nix new file mode 100644 index 0000000..277aba7 --- /dev/null +++ b/domains/colin.nix @@ -0,0 +1,9 @@ +{ dns, ... }: let + owner = { + username = "ColinLeDev"; + }; + description = "My personal portfolio hosted on my server"; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "proxy.col1n.fr." ]; +} diff --git a/domains/cutedog5695.nix b/domains/cutedog5695.nix new file mode 100644 index 0000000..f20329f --- /dev/null +++ b/domains/cutedog5695.nix @@ -0,0 +1,10 @@ +{ dns, ... }: let + owner = { + username = "CuteDog5695"; + email = "cutedog5695@gmail.com"; + repo = "https://github.com/CuteDog5695/cutedog5695.github.io"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "edge.redirect.pizza." ]; +} diff --git a/domains/elkaff.nix b/domains/elkaff.nix new file mode 100644 index 0000000..9ead547 --- /dev/null +++ b/domains/elkaff.nix @@ -0,0 +1,7 @@ +{ dns, ... }: let + owner = { + username = "elkhaff"; + }; +in with dns.lib.combinators; { + CNAME = [ "portofolio-pixel.pages.dev." ]; +} diff --git a/domains/j.nix b/domains/j.nix new file mode 100644 index 0000000..8cd38c6 --- /dev/null +++ b/domains/j.nix @@ -0,0 +1,10 @@ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "support@juststudio.is-a.dev"; + repo = "https://github.com/JustStudio7/Website"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "edge.redirect.pizza." ]; +} diff --git a/domains/jacob.nix b/domains/jacob.nix new file mode 100644 index 0000000..46839f9 --- /dev/null +++ b/domains/jacob.nix @@ -0,0 +1,8 @@ +{ dns, ... }: let + owner = { + username = "jacobrdale"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "hexon404.onrender.com." ]; +} diff --git a/domains/jd.nix b/domains/jd.nix new file mode 100644 index 0000000..4555867 --- /dev/null +++ b/domains/jd.nix @@ -0,0 +1,10 @@ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "justdeveloper@juststudio.is-a.dev"; + repo = "https://github.com/JustDeveloper1/Website"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "edge.redirect.pizza." ]; +} diff --git a/domains/job.nix b/domains/job.nix new file mode 100644 index 0000000..c2623ab --- /dev/null +++ b/domains/job.nix @@ -0,0 +1,8 @@ +{ dns, ... }: let + owner = { + username = "FWEEaaaa1"; + }; + proxy = false; +in with dns.lib.combinators; { + A = [ "128.204.223.115" ]; +} diff --git a/domains/joel.nix b/domains/joel.nix new file mode 100644 index 0000000..f1ad335 --- /dev/null +++ b/domains/joel.nix @@ -0,0 +1,16 @@ +{ dns, ... }: let + owner = { + username = "joestr"; + email = "strasser999@gmail.com"; + }; + proxy = false; +in with dns.lib.combinators; { + A = [ "142.132.173.34" ]; + AAAA = [ "2a01:4f8:1c0c:6cc0::1" ]; + MX = [ + { + exchange = "achlys.infra.joestr.at."; + preference = 10; + } + ]; +} diff --git a/domains/js.nix b/domains/js.nix new file mode 100644 index 0000000..8cd38c6 --- /dev/null +++ b/domains/js.nix @@ -0,0 +1,10 @@ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "support@juststudio.is-a.dev"; + repo = "https://github.com/JustStudio7/Website"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "edge.redirect.pizza." ]; +} diff --git a/domains/just.nix b/domains/just.nix new file mode 100644 index 0000000..4555867 --- /dev/null +++ b/domains/just.nix @@ -0,0 +1,10 @@ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "justdeveloper@juststudio.is-a.dev"; + repo = "https://github.com/JustDeveloper1/Website"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "edge.redirect.pizza." ]; +} diff --git a/domains/justdev.nix b/domains/justdev.nix new file mode 100644 index 0000000..4555867 --- /dev/null +++ b/domains/justdev.nix @@ -0,0 +1,10 @@ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "justdeveloper@juststudio.is-a.dev"; + repo = "https://github.com/JustDeveloper1/Website"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "edge.redirect.pizza." ]; +} diff --git a/domains/justdeveloper.nix b/domains/justdeveloper.nix new file mode 100644 index 0000000..4555867 --- /dev/null +++ b/domains/justdeveloper.nix @@ -0,0 +1,10 @@ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "justdeveloper@juststudio.is-a.dev"; + repo = "https://github.com/JustDeveloper1/Website"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "edge.redirect.pizza." ]; +} diff --git a/domains/juststudio.nix b/domains/juststudio.nix new file mode 100644 index 0000000..8cd38c6 --- /dev/null +++ b/domains/juststudio.nix @@ -0,0 +1,10 @@ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "support@juststudio.is-a.dev"; + repo = "https://github.com/JustStudio7/Website"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "edge.redirect.pizza." ]; +} diff --git a/domains/katz.nix b/domains/katz.nix new file mode 100644 index 0000000..c369c96 --- /dev/null +++ b/domains/katz.nix @@ -0,0 +1,8 @@ +{ dns, ... }: let + owner = { + username = "Bananalolok"; + }; + proxy = false; +in with dns.lib.combinators; { + A = [ "69.197.135.205" ]; +} diff --git a/domains/no-one-is.nix b/domains/no-one-is.nix new file mode 100644 index 0000000..8fcb680 --- /dev/null +++ b/domains/no-one-is.nix @@ -0,0 +1,9 @@ +{ dns, ... }: let + owner = { + username = "EducatedSuddenBucket"; + email = "me@esb.is-a.dev"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "educatedsuddenbucket-github-io.onrender.com." ]; +} diff --git a/domains/pxl.nix b/domains/pxl.nix new file mode 100644 index 0000000..2b3bce0 --- /dev/null +++ b/domains/pxl.nix @@ -0,0 +1,8 @@ +{ dns, ... }: let + owner = { + username = "heypxl"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "heypxl.github.io." ]; +} diff --git a/domains/rchessauth.nix b/domains/rchessauth.nix new file mode 100644 index 0000000..6ddd4c4 --- /dev/null +++ b/domains/rchessauth.nix @@ -0,0 +1,8 @@ +{ dns, ... }: let + owner = { + username = "vortexprime24"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "fire.hackclub.app." ]; +} diff --git a/domains/roki.nix b/domains/roki.nix new file mode 100644 index 0000000..43d30e6 --- /dev/null +++ b/domains/roki.nix @@ -0,0 +1,9 @@ +{ dns, ... }: let + owner = { + username = "Roki100"; + discord = "289479495444987904"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "edge.redirect.pizza." ]; +} diff --git a/domains/satr14.nix b/domains/satr14.nix index e9b421c..fa6e690 100644 --- a/domains/satr14.nix +++ b/domains/satr14.nix @@ -1,5 +1,7 @@ -{ ... }: let - owner.username = "satr14washere"; -in { - CNAME = "5th-site.pages.dev"; -} \ No newline at end of file +{ dns, ... }: let + owner = { + username = "satr14washere"; + }; +in with dns.lib.combinators; { + CNAME = [ "5th-site.pages.dev." ]; +} diff --git a/domains/stef.nix b/domains/stef.nix new file mode 100644 index 0000000..88e3870 --- /dev/null +++ b/domains/stef.nix @@ -0,0 +1,9 @@ +{ dns, ... }: let + owner = { + username = "Stef-00012"; + email = "admin@stefdp.lol"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "proxy.stefdp.lol." ]; +} diff --git a/domains/ukriu.nix b/domains/ukriu.nix new file mode 100644 index 0000000..bab016a --- /dev/null +++ b/domains/ukriu.nix @@ -0,0 +1,10 @@ +{ dns, ... }: let + owner = { + username = "ukriu"; + email = "partofmyid@ukriu.com"; + }; + description = "my website"; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "ukriu.pages.dev." ]; +} diff --git a/domains/you-are.nix b/domains/you-are.nix new file mode 100644 index 0000000..3cad0e8 --- /dev/null +++ b/domains/you-are.nix @@ -0,0 +1,9 @@ +{ dns, ... }: let + owner = { + username = "Stef-00012"; + email = "admin@stefdp.com"; + }; + proxy = false; +in with dns.lib.combinators; { + CNAME = [ "proxy.stefdp.com." ]; +} diff --git a/scripts/migrate-json-to-nix.py b/scripts/migrate-json-to-nix.py new file mode 100755 index 0000000..b85649f --- /dev/null +++ b/scripts/migrate-json-to-nix.py @@ -0,0 +1,279 @@ +#!/usr/bin/env python3 +""" +Migration script to convert domains/*.json to domains/*.nix + +Reads each JSON domain config and generates a corresponding .nix file +following the format from docs/example.nix. + +Usage: + python3 scripts/migrate-json-to-nix.py [--dry-run] [--delete-json] + +Options: + --dry-run Print generated .nix content to stdout without writing files + --delete-json Delete the original .json files after successful conversion +""" + +import json +import sys +import os +from pathlib import Path + +DOMAINS_DIR = Path(__file__).resolve().parent.parent / "domains" + + +def json_to_nix(data: dict) -> str: + """Convert a single domain JSON config to a .nix file string.""" + owner = data.get("owner", {}) + description = data.get("description") + record = data.get("record", {}) + # Some files use "proxy", others use "proxied" + proxy = data.get("proxied", data.get("proxy")) + + lines = [] + + # Header + lines.append("{ dns, ... }: let") + + # Owner block + owner_lines = [] + if owner.get("username"): + owner_lines.append(f' username = "{owner["username"]}";') + if owner.get("email"): + owner_lines.append(f' email = "{owner["email"]}";') + if owner.get("discord"): + owner_lines.append(f' discord = "{owner["discord"]}";') + if owner.get("repo"): + owner_lines.append(f' repo = "{owner["repo"]}";') + + lines.append(" owner = {") + for ol in owner_lines: + lines.append(ol) + lines.append(" };") + + if description is not None: + lines.append(f' description = "{escape_nix_string(description)}";') + + if proxy is not None: + lines.append(f" proxy = {'true' if proxy else 'false'};") + + lines.append("in with dns.lib.combinators; {") + + # Records + record_lines = build_record_lines(record) + for rl in record_lines: + lines.append(rl) + + lines.append("}") + lines.append("") + + return "\n".join(lines) + + +def escape_nix_string(s: str) -> str: + """Escape special characters for a Nix double-quoted string.""" + s = s.replace("\\", "\\\\") + s = s.replace('"', '\\"') + s = s.replace("${", "\\${") + return s + + +def build_record_lines(record: dict) -> list[str]: + """Build the Nix record lines from the JSON record dict.""" + lines = [] + + if "A" in record: + values = record["A"] + if isinstance(values, list): + if len(values) == 1: + lines.append(f' A = [ "{values[0]}" ];') + else: + lines.append(" A = [") + for v in values: + lines.append(f' "{v}"') + lines.append(" ];") + else: + lines.append(f' A = [ "{values}" ];') + + if "AAAA" in record: + values = record["AAAA"] + if isinstance(values, list): + if len(values) == 1: + lines.append(f' AAAA = [ "{values[0]}" ];') + else: + lines.append(" AAAA = [") + for v in values: + lines.append(f' "{v}"') + lines.append(" ];") + else: + lines.append(f' AAAA = [ "{values}" ];') + + if "CNAME" in record: + value = record["CNAME"] + if isinstance(value, list): + value = value[0] + lines.append(f' CNAME = [ "{value}." ];') + + if "ALIAS" in record: + value = record["ALIAS"] + if isinstance(value, list): + value = value[0] + # ALIAS is typically handled as CNAME in dns.nix + lines.append(f' CNAME = [ "{value}." ];') + + if "MX" in record: + values = record["MX"] + if isinstance(values, list): + lines.append(" MX = [") + for i, v in enumerate(values): + # MX records need priority; default to (i+1)*10 + priority = (i + 1) * 10 + lines.append(" {") + lines.append(f' exchange = "{ensure_fqdn(v)}";') + lines.append(f" preference = {priority};") + lines.append(" }") + lines.append(" ];") + else: + lines.append(" MX = [") + lines.append(" {") + lines.append(f' exchange = "{ensure_fqdn(values)}";') + lines.append(" preference = 10;") + lines.append(" }") + lines.append(" ];") + + if "TXT" in record: + values = record["TXT"] + if isinstance(values, list): + if len(values) == 1: + lines.append(f' TXT = [ "{escape_nix_string(values[0])}" ];') + else: + lines.append(" TXT = [") + for v in values: + lines.append(f' "{escape_nix_string(v)}"') + lines.append(" ];") + else: + lines.append(f' TXT = [ "{escape_nix_string(values)}" ];') + + if "NS" in record: + values = record["NS"] + if isinstance(values, list): + if len(values) == 1: + lines.append(f' NS = [ "{ensure_fqdn(values[0])}" ];') + else: + lines.append(" NS = [") + for v in values: + lines.append(f' "{ensure_fqdn(v)}"') + lines.append(" ];") + else: + lines.append(f' NS = [ "{ensure_fqdn(values)}" ];') + + if "SRV" in record: + values = record["SRV"] + if isinstance(values, list): + lines.append(" SRV = [") + for srv in values: + lines.append(" {") + if "service" in srv: + lines.append(f' service = "{srv["service"]}";') + if "proto" in srv: + lines.append(f' proto = "{srv["proto"]}";') + if "port" in srv: + lines.append(f" port = {srv['port']};") + if "priority" in srv: + lines.append(f" priority = {srv['priority']};") + if "weight" in srv: + lines.append(f" weight = {srv['weight']};") + if "target" in srv: + lines.append(f' target = "{ensure_fqdn(srv["target"])}";') + lines.append(" }") + lines.append(" ];") + + if "CAA" in record: + values = record["CAA"] + if isinstance(values, list): + lines.append(" CAA = [") + for caa in values: + lines.append(" {") + if "flags" in caa: + lines.append(f" flags = {caa['flags']};") + if "tag" in caa: + lines.append(f' tag = "{caa["tag"]}";') + if "value" in caa: + lines.append(f' value = "{escape_nix_string(caa["value"])}";') + lines.append(" }") + lines.append(" ];") + + return lines + + +def ensure_fqdn(domain: str) -> str: + """Ensure a domain name ends with a dot (FQDN).""" + if not domain.endswith("."): + return domain + "." + return domain + + +def migrate_file(json_path: Path, dry_run: bool = False, delete_json: bool = False) -> bool: + """Migrate a single JSON file to .nix. Returns True on success.""" + try: + with open(json_path, "r") as f: + data = json.load(f) + except json.JSONDecodeError as e: + print(f" ERROR: Failed to parse {json_path.name}: {e}", file=sys.stderr) + return False + + nix_content = json_to_nix(data) + nix_filename = json_path.stem + ".nix" + nix_path = json_path.parent / nix_filename + + if dry_run: + print(f"--- {nix_filename} ---") + print(nix_content) + return True + + with open(nix_path, "w") as f: + f.write(nix_content) + + print(f" Created {nix_path.name}") + + if delete_json: + json_path.unlink() + print(f" Deleted {json_path.name}") + + return True + + +def main(): + dry_run = "--dry-run" in sys.argv + delete_json = "--delete-json" in sys.argv + + if not DOMAINS_DIR.exists(): + print(f"Error: domains directory not found at {DOMAINS_DIR}", file=sys.stderr) + sys.exit(1) + + json_files = sorted(DOMAINS_DIR.glob("*.json")) + + if not json_files: + print("No JSON files found in domains/") + sys.exit(0) + + print(f"Found {len(json_files)} JSON file(s) to migrate") + if dry_run: + print("(dry run — no files will be written)\n") + + success = 0 + failed = 0 + + for json_path in json_files: + print(f"Migrating {json_path.name}...") + if migrate_file(json_path, dry_run=dry_run, delete_json=delete_json): + success += 1 + else: + failed += 1 + + print(f"\nDone: {success} succeeded, {failed} failed") + if failed > 0: + sys.exit(1) + + +if __name__ == "__main__": + main() \ No newline at end of file From 08350def49fdaed61148fd40c83aafb6e1df6372 Mon Sep 17 00:00:00 2001 From: orangc Date: Sat, 21 Mar 2026 16:32:42 +0300 Subject: [PATCH 06/24] style: formatting with nixfmt --- docs/example.nix | 35 +++++++++++------ domains/_discord.colin.nix | 10 ++--- domains/_discord.cutedog5695.nix | 11 ++---- domains/_discord.justdeveloper.nix | 11 ++---- domains/_discord.nix | 9 ++--- domains/_discord.roki.nix | 9 ++--- domains/batman.nix | 9 ++--- domains/c.nix | 10 ++--- domains/colin.nix | 10 ++--- domains/cutedog5695.nix | 11 ++---- domains/elkaff.nix | 8 ++-- domains/j.nix | 11 ++---- domains/jacob.nix | 9 ++--- domains/jd.nix | 11 ++---- domains/job.nix | 9 ++--- domains/joel.nix | 10 ++--- domains/js.nix | 11 ++---- domains/just.nix | 11 ++---- domains/justdev.nix | 11 ++---- domains/justdeveloper.nix | 11 ++---- domains/juststudio.nix | 11 ++---- domains/katz.nix | 9 ++--- domains/no-one-is.nix | 10 ++--- domains/pxl.nix | 9 ++--- domains/rchessauth.nix | 9 ++--- domains/roki.nix | 10 ++--- domains/satr14.nix | 8 ++-- domains/stef.nix | 10 ++--- domains/ukriu.nix | 11 ++---- domains/you-are.nix | 10 ++--- flake.nix | 61 ++++++++++++++++-------------- 31 files changed, 144 insertions(+), 241 deletions(-) diff --git a/docs/example.nix b/docs/example.nix index 5a58fe9..bd700f3 100644 --- a/docs/example.nix +++ b/docs/example.nix @@ -1,12 +1,11 @@ -{ dns, ... }: let - owner = { - username = "satr14washere"; - email = "admin@satr14.my.id"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ A = [ - { address = "203.0.113.1"; ttl = 60 * 60; } + { + address = "203.0.113.1"; + ttl = 60 * 60; + } "203.0.113.2" (ttl (60 * 60) (a "203.0.113.3")) ]; @@ -18,7 +17,13 @@ in with dns.lib.combinators; { MX = mx.google; TXT = [ - (with spf; strict [ "a:mail.example.com" google ]) + ( + with spf; + strict [ + "a:mail.example.com" + google + ] + ) ]; DMARC = [ (dmarc.postmarkapp "mailto:re+abcdefghijk@dmarc.postmarkapp.com") ]; @@ -48,8 +53,16 @@ in with dns.lib.combinators; { { svcPriority = 1; targetName = "."; - alpn = [ "http/1.1" "h2" "h3" ]; - ipv4hint = [ "203.0.113.1" "203.0.113.2" "203.0.113.3" ]; + alpn = [ + "http/1.1" + "h2" + "h3" + ]; + ipv4hint = [ + "203.0.113.1" + "203.0.113.2" + "203.0.113.3" + ]; ipv6hint = [ "4321:0:1:2:3:4:567:89ab" ]; } ]; diff --git a/domains/_discord.colin.nix b/domains/_discord.colin.nix index e107e70..aff9a5d 100644 --- a/domains/_discord.colin.nix +++ b/domains/_discord.colin.nix @@ -1,9 +1,5 @@ -{ dns, ... }: let - owner = { - username = "ColinLeDev"; - }; - description = "Discord verification"; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ TXT = [ "dh=279643a6f8677dedb1c5c63d007fc4516149679c" ]; } diff --git a/domains/_discord.cutedog5695.nix b/domains/_discord.cutedog5695.nix index 8b6e78e..597ab61 100644 --- a/domains/_discord.cutedog5695.nix +++ b/domains/_discord.cutedog5695.nix @@ -1,10 +1,5 @@ -{ dns, ... }: let - owner = { - username = "CuteDog5695"; - email = "cutedog5695@gmail.com"; - repo = "https://github.com/CuteDog5695/cutedog5695.github.io"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ TXT = [ "dh=a7c19efb0f6bc38b97a33760f6c1ee84df4151b1" ]; } diff --git a/domains/_discord.justdeveloper.nix b/domains/_discord.justdeveloper.nix index c1025bb..a7ac99e 100644 --- a/domains/_discord.justdeveloper.nix +++ b/domains/_discord.justdeveloper.nix @@ -1,10 +1,5 @@ -{ dns, ... }: let - owner = { - username = "JustDeveloper1"; - email = "justdeveloper@juststudio.is-a.dev"; - repo = "https://github.com/JustDeveloper1/Website"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ TXT = [ "dh=6024027bc233825451e290ac37a4b4a1f838ee70" ]; } diff --git a/domains/_discord.nix b/domains/_discord.nix index ee3009d..95090d8 100644 --- a/domains/_discord.nix +++ b/domains/_discord.nix @@ -1,8 +1,5 @@ -{ dns, ... }: let - owner = { - username = "satr14washere"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ TXT = [ "dh=d509fc9014e196311ed887c2e410cdefa833436e" ]; } diff --git a/domains/_discord.roki.nix b/domains/_discord.roki.nix index 5b1d452..48e6a52 100644 --- a/domains/_discord.roki.nix +++ b/domains/_discord.roki.nix @@ -1,8 +1,5 @@ -{ dns, ... }: let - owner = { - username = "Roki100"; - discord = "289479495444987904"; - }; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ TXT = [ "dh=5633078cd5bfd347a896ddb0f0de017c5423aa06" ]; } diff --git a/domains/batman.nix b/domains/batman.nix index 0ad04bd..3b6202d 100644 --- a/domains/batman.nix +++ b/domains/batman.nix @@ -1,8 +1,5 @@ -{ dns, ... }: let - owner = { - username = "shadowe1ite"; - }; - proxy = true; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "shadowe1ite.github.io." ]; } diff --git a/domains/c.nix b/domains/c.nix index bed0b01..9ecb30a 100644 --- a/domains/c.nix +++ b/domains/c.nix @@ -1,9 +1,5 @@ -{ dns, ... }: let - owner = { - username = "orangci"; - email = "c@orangc.xyz"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/colin.nix b/domains/colin.nix index 277aba7..4fe7a4a 100644 --- a/domains/colin.nix +++ b/domains/colin.nix @@ -1,9 +1,5 @@ -{ dns, ... }: let - owner = { - username = "ColinLeDev"; - }; - description = "My personal portfolio hosted on my server"; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "proxy.col1n.fr." ]; } diff --git a/domains/cutedog5695.nix b/domains/cutedog5695.nix index f20329f..9ecb30a 100644 --- a/domains/cutedog5695.nix +++ b/domains/cutedog5695.nix @@ -1,10 +1,5 @@ -{ dns, ... }: let - owner = { - username = "CuteDog5695"; - email = "cutedog5695@gmail.com"; - repo = "https://github.com/CuteDog5695/cutedog5695.github.io"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/elkaff.nix b/domains/elkaff.nix index 9ead547..109e65c 100644 --- a/domains/elkaff.nix +++ b/domains/elkaff.nix @@ -1,7 +1,5 @@ -{ dns, ... }: let - owner = { - username = "elkhaff"; - }; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "portofolio-pixel.pages.dev." ]; } diff --git a/domains/j.nix b/domains/j.nix index 8cd38c6..9ecb30a 100644 --- a/domains/j.nix +++ b/domains/j.nix @@ -1,10 +1,5 @@ -{ dns, ... }: let - owner = { - username = "JustDeveloper1"; - email = "support@juststudio.is-a.dev"; - repo = "https://github.com/JustStudio7/Website"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/jacob.nix b/domains/jacob.nix index 46839f9..34c1508 100644 --- a/domains/jacob.nix +++ b/domains/jacob.nix @@ -1,8 +1,5 @@ -{ dns, ... }: let - owner = { - username = "jacobrdale"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "hexon404.onrender.com." ]; } diff --git a/domains/jd.nix b/domains/jd.nix index 4555867..9ecb30a 100644 --- a/domains/jd.nix +++ b/domains/jd.nix @@ -1,10 +1,5 @@ -{ dns, ... }: let - owner = { - username = "JustDeveloper1"; - email = "justdeveloper@juststudio.is-a.dev"; - repo = "https://github.com/JustDeveloper1/Website"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/job.nix b/domains/job.nix index c2623ab..df2d227 100644 --- a/domains/job.nix +++ b/domains/job.nix @@ -1,8 +1,5 @@ -{ dns, ... }: let - owner = { - username = "FWEEaaaa1"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ A = [ "128.204.223.115" ]; } diff --git a/domains/joel.nix b/domains/joel.nix index f1ad335..c5af765 100644 --- a/domains/joel.nix +++ b/domains/joel.nix @@ -1,10 +1,6 @@ -{ dns, ... }: let - owner = { - username = "joestr"; - email = "strasser999@gmail.com"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ A = [ "142.132.173.34" ]; AAAA = [ "2a01:4f8:1c0c:6cc0::1" ]; MX = [ diff --git a/domains/js.nix b/domains/js.nix index 8cd38c6..9ecb30a 100644 --- a/domains/js.nix +++ b/domains/js.nix @@ -1,10 +1,5 @@ -{ dns, ... }: let - owner = { - username = "JustDeveloper1"; - email = "support@juststudio.is-a.dev"; - repo = "https://github.com/JustStudio7/Website"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/just.nix b/domains/just.nix index 4555867..9ecb30a 100644 --- a/domains/just.nix +++ b/domains/just.nix @@ -1,10 +1,5 @@ -{ dns, ... }: let - owner = { - username = "JustDeveloper1"; - email = "justdeveloper@juststudio.is-a.dev"; - repo = "https://github.com/JustDeveloper1/Website"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/justdev.nix b/domains/justdev.nix index 4555867..9ecb30a 100644 --- a/domains/justdev.nix +++ b/domains/justdev.nix @@ -1,10 +1,5 @@ -{ dns, ... }: let - owner = { - username = "JustDeveloper1"; - email = "justdeveloper@juststudio.is-a.dev"; - repo = "https://github.com/JustDeveloper1/Website"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/justdeveloper.nix b/domains/justdeveloper.nix index 4555867..9ecb30a 100644 --- a/domains/justdeveloper.nix +++ b/domains/justdeveloper.nix @@ -1,10 +1,5 @@ -{ dns, ... }: let - owner = { - username = "JustDeveloper1"; - email = "justdeveloper@juststudio.is-a.dev"; - repo = "https://github.com/JustDeveloper1/Website"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/juststudio.nix b/domains/juststudio.nix index 8cd38c6..9ecb30a 100644 --- a/domains/juststudio.nix +++ b/domains/juststudio.nix @@ -1,10 +1,5 @@ -{ dns, ... }: let - owner = { - username = "JustDeveloper1"; - email = "support@juststudio.is-a.dev"; - repo = "https://github.com/JustStudio7/Website"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/katz.nix b/domains/katz.nix index c369c96..0751913 100644 --- a/domains/katz.nix +++ b/domains/katz.nix @@ -1,8 +1,5 @@ -{ dns, ... }: let - owner = { - username = "Bananalolok"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ A = [ "69.197.135.205" ]; } diff --git a/domains/no-one-is.nix b/domains/no-one-is.nix index 8fcb680..391d7e6 100644 --- a/domains/no-one-is.nix +++ b/domains/no-one-is.nix @@ -1,9 +1,5 @@ -{ dns, ... }: let - owner = { - username = "EducatedSuddenBucket"; - email = "me@esb.is-a.dev"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "educatedsuddenbucket-github-io.onrender.com." ]; } diff --git a/domains/pxl.nix b/domains/pxl.nix index 2b3bce0..0076d71 100644 --- a/domains/pxl.nix +++ b/domains/pxl.nix @@ -1,8 +1,5 @@ -{ dns, ... }: let - owner = { - username = "heypxl"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "heypxl.github.io." ]; } diff --git a/domains/rchessauth.nix b/domains/rchessauth.nix index 6ddd4c4..9b7f17f 100644 --- a/domains/rchessauth.nix +++ b/domains/rchessauth.nix @@ -1,8 +1,5 @@ -{ dns, ... }: let - owner = { - username = "vortexprime24"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "fire.hackclub.app." ]; } diff --git a/domains/roki.nix b/domains/roki.nix index 43d30e6..9ecb30a 100644 --- a/domains/roki.nix +++ b/domains/roki.nix @@ -1,9 +1,5 @@ -{ dns, ... }: let - owner = { - username = "Roki100"; - discord = "289479495444987904"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/satr14.nix b/domains/satr14.nix index fa6e690..cfc5b01 100644 --- a/domains/satr14.nix +++ b/domains/satr14.nix @@ -1,7 +1,5 @@ -{ dns, ... }: let - owner = { - username = "satr14washere"; - }; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "5th-site.pages.dev." ]; } diff --git a/domains/stef.nix b/domains/stef.nix index 88e3870..47f7470 100644 --- a/domains/stef.nix +++ b/domains/stef.nix @@ -1,9 +1,5 @@ -{ dns, ... }: let - owner = { - username = "Stef-00012"; - email = "admin@stefdp.lol"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "proxy.stefdp.lol." ]; } diff --git a/domains/ukriu.nix b/domains/ukriu.nix index bab016a..48bb496 100644 --- a/domains/ukriu.nix +++ b/domains/ukriu.nix @@ -1,10 +1,5 @@ -{ dns, ... }: let - owner = { - username = "ukriu"; - email = "partofmyid@ukriu.com"; - }; - description = "my website"; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "ukriu.pages.dev." ]; } diff --git a/domains/you-are.nix b/domains/you-are.nix index 3cad0e8..914193f 100644 --- a/domains/you-are.nix +++ b/domains/you-are.nix @@ -1,9 +1,5 @@ -{ dns, ... }: let - owner = { - username = "Stef-00012"; - email = "admin@stefdp.com"; - }; - proxy = false; -in with dns.lib.combinators; { +{ dns, ... }: +with dns.lib.combinators; +{ CNAME = [ "proxy.stefdp.com." ]; } diff --git a/flake.nix b/flake.nix index 9dd8906..e5b61ba 100644 --- a/flake.nix +++ b/flake.nix @@ -2,32 +2,37 @@ description = "Zone File Generator"; inputs.dns.url = "github:nix-community/dns.nix"; - outputs = { dns, ... }: let - email = "admin@satr14.my.id"; - domains."0" = { - domain = "part-of.my.id"; - nameservers = [ - "adele.ns.cloudflare.com" - "fattouche.ns.cloudflare.com" - ]; + outputs = + { dns, ... }: + let + email = "admin@satr14.my.id"; + domains."0" = { + domain = "part-of.my.id"; + nameservers = [ + "adele.ns.cloudflare.com" + "fattouche.ns.cloudflare.com" + ]; + }; + in + { + packages.x86_64-linux = builtins.mapAttrs ( + _: domain: + dns.util.x86_64-linux.writeZone domain.domain ( + with dns.lib.combinators; + { + SOA = { + adminEmail = email; + nameServer = builtins.head domain.nameservers; + serial = builtins.currentTime; + }; + NS = domain.nameservers; + + # note: Cloudflare ignores SOA and NS records uploaded via Zone File, they are included just so that dns.nix builds a valid zone file. + + #subdomains = ; + # ^^ todo: implement file imports from ./domains + } + ) + ) domains; }; - in { - packages.x86_64-linux = builtins.mapAttrs (_: domain: - dns.util.x86_64-linux.writeZone domain.domain ( - with dns.lib.combinators; { - SOA = { - adminEmail = email; - nameServer = builtins.head domain.nameservers; - serial = builtins.currentTime; - }; - NS = domain.nameservers; - - # note: Cloudflare ignores SOA and NS records uploaded via Zone File, they are included just so that dns.nix builds a valid zone file. - - #subdomains = ; - # ^^ todo: implement file imports from ./domains - } - ) - ) domains; - }; -} \ No newline at end of file +} From 291bc39a7affb0782a309c2b78a40880381d141f Mon Sep 17 00:00:00 2001 From: orangc Date: Sat, 21 Mar 2026 16:52:05 +0300 Subject: [PATCH 07/24] feat(nix): recursively import domain files via mapping --- flake.nix | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index e5b61ba..c35e986 100644 --- a/flake.nix +++ b/flake.nix @@ -13,6 +13,21 @@ "fattouche.ns.cloudflare.com" ]; }; + + domains = builtins.readDir ./domains; + domainFiles = builtins.filterAttrs ( + name: type: type == "regular" && builtins.match ".*\\.nix" name != null + ) domains; + subdomains = builtins.mapAttrs' ( + name: _: + let + key = builtins.replaceStrings [ ".nix" ] [ "" ] name; + in + { + name = key; + value = import (./domains + "/${name}") { inherit dns; }; + } + ) domainFiles; in { packages.x86_64-linux = builtins.mapAttrs ( @@ -29,8 +44,7 @@ # note: Cloudflare ignores SOA and NS records uploaded via Zone File, they are included just so that dns.nix builds a valid zone file. - #subdomains = ; - # ^^ todo: implement file imports from ./domains + inherit subdomains; } ) ) domains; From 20ebb7da08220d167425d4d3e91f33d3ba70efaa Mon Sep 17 00:00:00 2001 From: orangc Date: Sat, 21 Mar 2026 17:05:14 +0300 Subject: [PATCH 08/24] fix(nix): importing thing was brokeb --- flake.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/flake.nix b/flake.nix index c35e986..b442857 100644 --- a/flake.nix +++ b/flake.nix @@ -14,11 +14,13 @@ ]; }; - domains = builtins.readDir ./domains; - domainFiles = builtins.filterAttrs ( + inherit (import { }) lib; + + domainsFolder = builtins.readDir ./domains; + domainFiles = lib.filterAttrs ( name: type: type == "regular" && builtins.match ".*\\.nix" name != null - ) domains; - subdomains = builtins.mapAttrs' ( + ) domainsFolder; + subdomains = lib.mapAttrs' ( name: _: let key = builtins.replaceStrings [ ".nix" ] [ "" ] name; From 3fac80dcfc7d30e00f992a317b9afa5e3df11914 Mon Sep 17 00:00:00 2001 From: orangci Date: Sat, 21 Mar 2026 17:09:29 +0300 Subject: [PATCH 09/24] Revert "Nix" --- docs/example.nix | 35 +++++--------- domains/_discord.colin.nix | 10 ++-- domains/_discord.cutedog5695.nix | 11 +++-- domains/_discord.justdeveloper.nix | 11 +++-- domains/_discord.nix | 9 ++-- domains/_discord.roki.nix | 9 ++-- domains/batman.nix | 9 ++-- domains/c.nix | 10 ++-- domains/colin.nix | 10 ++-- domains/cutedog5695.nix | 11 +++-- domains/elkaff.nix | 8 ++-- domains/j.nix | 11 +++-- domains/jacob.nix | 9 ++-- domains/jd.nix | 11 +++-- domains/job.nix | 9 ++-- domains/joel.nix | 10 ++-- domains/js.nix | 11 +++-- domains/just.nix | 11 +++-- domains/justdev.nix | 11 +++-- domains/justdeveloper.nix | 11 +++-- domains/juststudio.nix | 11 +++-- domains/katz.nix | 9 ++-- domains/no-one-is.nix | 10 ++-- domains/pxl.nix | 9 ++-- domains/rchessauth.nix | 9 ++-- domains/roki.nix | 10 ++-- domains/satr14.nix | 8 ++-- domains/stef.nix | 10 ++-- domains/ukriu.nix | 11 +++-- domains/you-are.nix | 10 ++-- flake.nix | 77 +++++++++++------------------- 31 files changed, 241 insertions(+), 160 deletions(-) diff --git a/docs/example.nix b/docs/example.nix index bd700f3..5a58fe9 100644 --- a/docs/example.nix +++ b/docs/example.nix @@ -1,11 +1,12 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "satr14washere"; + email = "admin@satr14.my.id"; + }; + proxy = false; +in with dns.lib.combinators; { A = [ - { - address = "203.0.113.1"; - ttl = 60 * 60; - } + { address = "203.0.113.1"; ttl = 60 * 60; } "203.0.113.2" (ttl (60 * 60) (a "203.0.113.3")) ]; @@ -17,13 +18,7 @@ with dns.lib.combinators; MX = mx.google; TXT = [ - ( - with spf; - strict [ - "a:mail.example.com" - google - ] - ) + (with spf; strict [ "a:mail.example.com" google ]) ]; DMARC = [ (dmarc.postmarkapp "mailto:re+abcdefghijk@dmarc.postmarkapp.com") ]; @@ -53,16 +48,8 @@ with dns.lib.combinators; { svcPriority = 1; targetName = "."; - alpn = [ - "http/1.1" - "h2" - "h3" - ]; - ipv4hint = [ - "203.0.113.1" - "203.0.113.2" - "203.0.113.3" - ]; + alpn = [ "http/1.1" "h2" "h3" ]; + ipv4hint = [ "203.0.113.1" "203.0.113.2" "203.0.113.3" ]; ipv6hint = [ "4321:0:1:2:3:4:567:89ab" ]; } ]; diff --git a/domains/_discord.colin.nix b/domains/_discord.colin.nix index aff9a5d..e107e70 100644 --- a/domains/_discord.colin.nix +++ b/domains/_discord.colin.nix @@ -1,5 +1,9 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "ColinLeDev"; + }; + description = "Discord verification"; + proxy = false; +in with dns.lib.combinators; { TXT = [ "dh=279643a6f8677dedb1c5c63d007fc4516149679c" ]; } diff --git a/domains/_discord.cutedog5695.nix b/domains/_discord.cutedog5695.nix index 597ab61..8b6e78e 100644 --- a/domains/_discord.cutedog5695.nix +++ b/domains/_discord.cutedog5695.nix @@ -1,5 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "CuteDog5695"; + email = "cutedog5695@gmail.com"; + repo = "https://github.com/CuteDog5695/cutedog5695.github.io"; + }; + proxy = false; +in with dns.lib.combinators; { TXT = [ "dh=a7c19efb0f6bc38b97a33760f6c1ee84df4151b1" ]; } diff --git a/domains/_discord.justdeveloper.nix b/domains/_discord.justdeveloper.nix index a7ac99e..c1025bb 100644 --- a/domains/_discord.justdeveloper.nix +++ b/domains/_discord.justdeveloper.nix @@ -1,5 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "justdeveloper@juststudio.is-a.dev"; + repo = "https://github.com/JustDeveloper1/Website"; + }; + proxy = false; +in with dns.lib.combinators; { TXT = [ "dh=6024027bc233825451e290ac37a4b4a1f838ee70" ]; } diff --git a/domains/_discord.nix b/domains/_discord.nix index 95090d8..ee3009d 100644 --- a/domains/_discord.nix +++ b/domains/_discord.nix @@ -1,5 +1,8 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "satr14washere"; + }; + proxy = false; +in with dns.lib.combinators; { TXT = [ "dh=d509fc9014e196311ed887c2e410cdefa833436e" ]; } diff --git a/domains/_discord.roki.nix b/domains/_discord.roki.nix index 48e6a52..5b1d452 100644 --- a/domains/_discord.roki.nix +++ b/domains/_discord.roki.nix @@ -1,5 +1,8 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "Roki100"; + discord = "289479495444987904"; + }; +in with dns.lib.combinators; { TXT = [ "dh=5633078cd5bfd347a896ddb0f0de017c5423aa06" ]; } diff --git a/domains/batman.nix b/domains/batman.nix index 3b6202d..0ad04bd 100644 --- a/domains/batman.nix +++ b/domains/batman.nix @@ -1,5 +1,8 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "shadowe1ite"; + }; + proxy = true; +in with dns.lib.combinators; { CNAME = [ "shadowe1ite.github.io." ]; } diff --git a/domains/c.nix b/domains/c.nix index 9ecb30a..bed0b01 100644 --- a/domains/c.nix +++ b/domains/c.nix @@ -1,5 +1,9 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "orangci"; + email = "c@orangc.xyz"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/colin.nix b/domains/colin.nix index 4fe7a4a..277aba7 100644 --- a/domains/colin.nix +++ b/domains/colin.nix @@ -1,5 +1,9 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "ColinLeDev"; + }; + description = "My personal portfolio hosted on my server"; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "proxy.col1n.fr." ]; } diff --git a/domains/cutedog5695.nix b/domains/cutedog5695.nix index 9ecb30a..f20329f 100644 --- a/domains/cutedog5695.nix +++ b/domains/cutedog5695.nix @@ -1,5 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "CuteDog5695"; + email = "cutedog5695@gmail.com"; + repo = "https://github.com/CuteDog5695/cutedog5695.github.io"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/elkaff.nix b/domains/elkaff.nix index 109e65c..9ead547 100644 --- a/domains/elkaff.nix +++ b/domains/elkaff.nix @@ -1,5 +1,7 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "elkhaff"; + }; +in with dns.lib.combinators; { CNAME = [ "portofolio-pixel.pages.dev." ]; } diff --git a/domains/j.nix b/domains/j.nix index 9ecb30a..8cd38c6 100644 --- a/domains/j.nix +++ b/domains/j.nix @@ -1,5 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "support@juststudio.is-a.dev"; + repo = "https://github.com/JustStudio7/Website"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/jacob.nix b/domains/jacob.nix index 34c1508..46839f9 100644 --- a/domains/jacob.nix +++ b/domains/jacob.nix @@ -1,5 +1,8 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "jacobrdale"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "hexon404.onrender.com." ]; } diff --git a/domains/jd.nix b/domains/jd.nix index 9ecb30a..4555867 100644 --- a/domains/jd.nix +++ b/domains/jd.nix @@ -1,5 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "justdeveloper@juststudio.is-a.dev"; + repo = "https://github.com/JustDeveloper1/Website"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/job.nix b/domains/job.nix index df2d227..c2623ab 100644 --- a/domains/job.nix +++ b/domains/job.nix @@ -1,5 +1,8 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "FWEEaaaa1"; + }; + proxy = false; +in with dns.lib.combinators; { A = [ "128.204.223.115" ]; } diff --git a/domains/joel.nix b/domains/joel.nix index c5af765..f1ad335 100644 --- a/domains/joel.nix +++ b/domains/joel.nix @@ -1,6 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "joestr"; + email = "strasser999@gmail.com"; + }; + proxy = false; +in with dns.lib.combinators; { A = [ "142.132.173.34" ]; AAAA = [ "2a01:4f8:1c0c:6cc0::1" ]; MX = [ diff --git a/domains/js.nix b/domains/js.nix index 9ecb30a..8cd38c6 100644 --- a/domains/js.nix +++ b/domains/js.nix @@ -1,5 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "support@juststudio.is-a.dev"; + repo = "https://github.com/JustStudio7/Website"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/just.nix b/domains/just.nix index 9ecb30a..4555867 100644 --- a/domains/just.nix +++ b/domains/just.nix @@ -1,5 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "justdeveloper@juststudio.is-a.dev"; + repo = "https://github.com/JustDeveloper1/Website"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/justdev.nix b/domains/justdev.nix index 9ecb30a..4555867 100644 --- a/domains/justdev.nix +++ b/domains/justdev.nix @@ -1,5 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "justdeveloper@juststudio.is-a.dev"; + repo = "https://github.com/JustDeveloper1/Website"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/justdeveloper.nix b/domains/justdeveloper.nix index 9ecb30a..4555867 100644 --- a/domains/justdeveloper.nix +++ b/domains/justdeveloper.nix @@ -1,5 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "justdeveloper@juststudio.is-a.dev"; + repo = "https://github.com/JustDeveloper1/Website"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/juststudio.nix b/domains/juststudio.nix index 9ecb30a..8cd38c6 100644 --- a/domains/juststudio.nix +++ b/domains/juststudio.nix @@ -1,5 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "JustDeveloper1"; + email = "support@juststudio.is-a.dev"; + repo = "https://github.com/JustStudio7/Website"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/katz.nix b/domains/katz.nix index 0751913..c369c96 100644 --- a/domains/katz.nix +++ b/domains/katz.nix @@ -1,5 +1,8 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "Bananalolok"; + }; + proxy = false; +in with dns.lib.combinators; { A = [ "69.197.135.205" ]; } diff --git a/domains/no-one-is.nix b/domains/no-one-is.nix index 391d7e6..8fcb680 100644 --- a/domains/no-one-is.nix +++ b/domains/no-one-is.nix @@ -1,5 +1,9 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "EducatedSuddenBucket"; + email = "me@esb.is-a.dev"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "educatedsuddenbucket-github-io.onrender.com." ]; } diff --git a/domains/pxl.nix b/domains/pxl.nix index 0076d71..2b3bce0 100644 --- a/domains/pxl.nix +++ b/domains/pxl.nix @@ -1,5 +1,8 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "heypxl"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "heypxl.github.io." ]; } diff --git a/domains/rchessauth.nix b/domains/rchessauth.nix index 9b7f17f..6ddd4c4 100644 --- a/domains/rchessauth.nix +++ b/domains/rchessauth.nix @@ -1,5 +1,8 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "vortexprime24"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "fire.hackclub.app." ]; } diff --git a/domains/roki.nix b/domains/roki.nix index 9ecb30a..43d30e6 100644 --- a/domains/roki.nix +++ b/domains/roki.nix @@ -1,5 +1,9 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "Roki100"; + discord = "289479495444987904"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/satr14.nix b/domains/satr14.nix index cfc5b01..fa6e690 100644 --- a/domains/satr14.nix +++ b/domains/satr14.nix @@ -1,5 +1,7 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "satr14washere"; + }; +in with dns.lib.combinators; { CNAME = [ "5th-site.pages.dev." ]; } diff --git a/domains/stef.nix b/domains/stef.nix index 47f7470..88e3870 100644 --- a/domains/stef.nix +++ b/domains/stef.nix @@ -1,5 +1,9 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "Stef-00012"; + email = "admin@stefdp.lol"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "proxy.stefdp.lol." ]; } diff --git a/domains/ukriu.nix b/domains/ukriu.nix index 48bb496..bab016a 100644 --- a/domains/ukriu.nix +++ b/domains/ukriu.nix @@ -1,5 +1,10 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "ukriu"; + email = "partofmyid@ukriu.com"; + }; + description = "my website"; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "ukriu.pages.dev." ]; } diff --git a/domains/you-are.nix b/domains/you-are.nix index 914193f..3cad0e8 100644 --- a/domains/you-are.nix +++ b/domains/you-are.nix @@ -1,5 +1,9 @@ -{ dns, ... }: -with dns.lib.combinators; -{ +{ dns, ... }: let + owner = { + username = "Stef-00012"; + email = "admin@stefdp.com"; + }; + proxy = false; +in with dns.lib.combinators; { CNAME = [ "proxy.stefdp.com." ]; } diff --git a/flake.nix b/flake.nix index b442857..9dd8906 100644 --- a/flake.nix +++ b/flake.nix @@ -2,53 +2,32 @@ description = "Zone File Generator"; inputs.dns.url = "github:nix-community/dns.nix"; - outputs = - { dns, ... }: - let - email = "admin@satr14.my.id"; - domains."0" = { - domain = "part-of.my.id"; - nameservers = [ - "adele.ns.cloudflare.com" - "fattouche.ns.cloudflare.com" - ]; - }; - - inherit (import { }) lib; - - domainsFolder = builtins.readDir ./domains; - domainFiles = lib.filterAttrs ( - name: type: type == "regular" && builtins.match ".*\\.nix" name != null - ) domainsFolder; - subdomains = lib.mapAttrs' ( - name: _: - let - key = builtins.replaceStrings [ ".nix" ] [ "" ] name; - in - { - name = key; - value = import (./domains + "/${name}") { inherit dns; }; - } - ) domainFiles; - in - { - packages.x86_64-linux = builtins.mapAttrs ( - _: domain: - dns.util.x86_64-linux.writeZone domain.domain ( - with dns.lib.combinators; - { - SOA = { - adminEmail = email; - nameServer = builtins.head domain.nameservers; - serial = builtins.currentTime; - }; - NS = domain.nameservers; - - # note: Cloudflare ignores SOA and NS records uploaded via Zone File, they are included just so that dns.nix builds a valid zone file. - - inherit subdomains; - } - ) - ) domains; + outputs = { dns, ... }: let + email = "admin@satr14.my.id"; + domains."0" = { + domain = "part-of.my.id"; + nameservers = [ + "adele.ns.cloudflare.com" + "fattouche.ns.cloudflare.com" + ]; }; -} + in { + packages.x86_64-linux = builtins.mapAttrs (_: domain: + dns.util.x86_64-linux.writeZone domain.domain ( + with dns.lib.combinators; { + SOA = { + adminEmail = email; + nameServer = builtins.head domain.nameservers; + serial = builtins.currentTime; + }; + NS = domain.nameservers; + + # note: Cloudflare ignores SOA and NS records uploaded via Zone File, they are included just so that dns.nix builds a valid zone file. + + #subdomains = ; + # ^^ todo: implement file imports from ./domains + } + ) + ) domains; + }; +} \ No newline at end of file From 21c96dcc5571c675ed9f4eaf52f6c24842438cfa Mon Sep 17 00:00:00 2001 From: satr14 Date: Mon, 23 Mar 2026 15:40:13 +0700 Subject: [PATCH 10/24] rewrite is taking too long --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 78bb9c6..d209214 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ > [!IMPORTANT] -> We are currently rewriting our registration process, CI/CD pipeline, documentation, and website. Pull requests are temporarily paused until the new system is ready. We will document the new registration process in this repository once it's ready. In the meantime, you can join our [discord server](https://discord.gg/rFyRF3MMhc) to get updates and support. +> We are currently rewriting our registration process, CI/CD pipeline, documentation, and website. **Pull requests are still welcome** and will be migrated to the new syntax after the rewrite. We will document the new registration process in this repository once it's ready. In the meantime, you can join our [discord server](https://discord.gg/rFyRF3MMhc) to get updates and support. > [!CAUTION] > We currently **DO NOT** support Vercel, Netlify, and other services that requires us to be on the [PSL](https://github.com/publicsuffix/list). _We will apply to be on the list [only if theres high demand](https://publicsuffix.org/submit/#:~:text=We%20will%20generally%20decline%20small%20projects)_, so be patient and invite some of your friends! From fb98c8021a5b2e018326f80291a27eb2a2873d18 Mon Sep 17 00:00:00 2001 From: satr14 Date: Mon, 23 Mar 2026 15:51:55 +0700 Subject: [PATCH 11/24] time notice --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d209214..34139ae 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ > [!IMPORTANT] -> We are currently rewriting our registration process, CI/CD pipeline, documentation, and website. **Pull requests are still welcome** and will be migrated to the new syntax after the rewrite. We will document the new registration process in this repository once it's ready. In the meantime, you can join our [discord server](https://discord.gg/rFyRF3MMhc) to get updates and support. +> We are currently rewriting our registration process, CI/CD pipeline, documentation, and website. Due to time constraints, **pull requests are still welcome** and will be migrated to the new syntax after the rewrite. We will document the new registration process in this repository once it's ready. In the meantime, you can join our [discord server](https://discord.gg/rFyRF3MMhc) to get updates and support. > [!CAUTION] > We currently **DO NOT** support Vercel, Netlify, and other services that requires us to be on the [PSL](https://github.com/publicsuffix/list). _We will apply to be on the list [only if theres high demand](https://publicsuffix.org/submit/#:~:text=We%20will%20generally%20decline%20small%20projects)_, so be patient and invite some of your friends! From be2d6b450cccd9745c07ca3d90edb2b8fe222755 Mon Sep 17 00:00:00 2001 From: LunarisX Date: Sun, 3 May 2026 22:27:07 +0700 Subject: [PATCH 12/24] Create reallunarisx.json --- domains/reallunarisx.json | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 domains/reallunarisx.json diff --git a/domains/reallunarisx.json b/domains/reallunarisx.json new file mode 100644 index 0000000..2d72a35 --- /dev/null +++ b/domains/reallunarisx.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "LunarisXOffical" + }, + "record": { + "CNAME": "lunarisxoffical.github.io" + }, + "proxy": false +} From 23d995e04c8f542f9211c1581b45a4aca7b49c0c Mon Sep 17 00:00:00 2001 From: satr14 Date: Sun, 3 May 2026 16:15:12 +0000 Subject: [PATCH 13/24] link previews are now required --- .github/PULL_REQUEST_TEMPLATE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 377d553..b8b3bc3 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -8,7 +8,7 @@ - Github Pull Requests - How DNS Works 4. When in doubt, read the docs before asking in PR - 5. **PREVIEWS ARE REQUIRED FOR WEBSITES.** Can be a screenshot/link. If it's not a website then please state the use of the subdomain. + 5. **PREVIEWS ARE REQUIRED FOR WEBSITES.** Must be a link. If it's not a website then please state the use of the subdomain. --> ## Requirements @@ -38,5 +38,5 @@ _None provided..._ From 82a1cdd8927c67cbf8e6f4a739543d1adb76dd7e Mon Sep 17 00:00:00 2001 From: LunarisX Date: Mon, 4 May 2026 09:23:25 +0700 Subject: [PATCH 14/24] Update DNS records in reallunarisx.json Added TXT records for GitHub Pages challenge. --- domains/reallunarisx.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/domains/reallunarisx.json b/domains/reallunarisx.json index 2d72a35..eaae38f 100644 --- a/domains/reallunarisx.json +++ b/domains/reallunarisx.json @@ -3,7 +3,8 @@ "username": "LunarisXOffical" }, "record": { - "CNAME": "lunarisxoffical.github.io" + "TXT": "_github-pages-challenge-LunarisXOffical.reallunarisx", + "TXT": "e61f92ffaf0fb52928acd51ea7cf4e" }, "proxy": false } From ea1ffd63e5998f411134f45911183838836941df Mon Sep 17 00:00:00 2001 From: LunarisX Date: Mon, 4 May 2026 09:25:58 +0700 Subject: [PATCH 15/24] Update TXT record in reallunarisx.json --- domains/reallunarisx.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/domains/reallunarisx.json b/domains/reallunarisx.json index eaae38f..9f4e462 100644 --- a/domains/reallunarisx.json +++ b/domains/reallunarisx.json @@ -3,8 +3,7 @@ "username": "LunarisXOffical" }, "record": { - "TXT": "_github-pages-challenge-LunarisXOffical.reallunarisx", - "TXT": "e61f92ffaf0fb52928acd51ea7cf4e" + "TXT": "3bdbf404a94a1470.vercel-dns-017.com.", }, "proxy": false } From 3947beaf68727962627dd7c968bdac8dcba1bed8 Mon Sep 17 00:00:00 2001 From: LunarisX Date: Mon, 4 May 2026 09:26:42 +0700 Subject: [PATCH 16/24] Add Vercel configuration for reallunarisx domain --- domains/_vercel.reallunarisx.json | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 domains/_vercel.reallunarisx.json diff --git a/domains/_vercel.reallunarisx.json b/domains/_vercel.reallunarisx.json new file mode 100644 index 0000000..d378d5f --- /dev/null +++ b/domains/_vercel.reallunarisx.json @@ -0,0 +1,9 @@ +{ + "owner": { + "username": "LunarisXOffical" + }, + "record": { + "TXT": "vc-domain-verify=reallunarisx.part-of.my.id,eb89acab3adcd3ee3acd", + }, + "proxy": false +} From db9a6e23c0665b8d0a49fcf9d444fc81f54396b9 Mon Sep 17 00:00:00 2001 From: LunarisX Date: Mon, 4 May 2026 09:31:02 +0700 Subject: [PATCH 17/24] Update reallunarisx.json --- domains/reallunarisx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domains/reallunarisx.json b/domains/reallunarisx.json index 9f4e462..f5b6401 100644 --- a/domains/reallunarisx.json +++ b/domains/reallunarisx.json @@ -3,7 +3,7 @@ "username": "LunarisXOffical" }, "record": { - "TXT": "3bdbf404a94a1470.vercel-dns-017.com.", + "CNAME": "3bdbf404a94a1470.vercel-dns-017.com.", }, "proxy": false } From 47a0e18cdbe6ccf60209c9a81f39dc63bbe6f526 Mon Sep 17 00:00:00 2001 From: satr14 Date: Mon, 4 May 2026 11:22:33 +0700 Subject: [PATCH 18/24] remove dot (added by ci) --- domains/reallunarisx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domains/reallunarisx.json b/domains/reallunarisx.json index f5b6401..bad7e4b 100644 --- a/domains/reallunarisx.json +++ b/domains/reallunarisx.json @@ -3,7 +3,7 @@ "username": "LunarisXOffical" }, "record": { - "CNAME": "3bdbf404a94a1470.vercel-dns-017.com.", + "CNAME": "3bdbf404a94a1470.vercel-dns-017.com", }, "proxy": false } From 96f2285d483fcba2e0f3677e7d2e7a8a540b3c90 Mon Sep 17 00:00:00 2001 From: satr14 Date: Mon, 4 May 2026 11:25:10 +0700 Subject: [PATCH 19/24] Fix formatting in reallunarisx.json --- domains/reallunarisx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domains/reallunarisx.json b/domains/reallunarisx.json index bad7e4b..ed58b6a 100644 --- a/domains/reallunarisx.json +++ b/domains/reallunarisx.json @@ -3,7 +3,7 @@ "username": "LunarisXOffical" }, "record": { - "CNAME": "3bdbf404a94a1470.vercel-dns-017.com", + "CNAME": "3bdbf404a94a1470.vercel-dns-017.com" }, "proxy": false } From 011fd671862919c857b165c10ae0bb736ed57a52 Mon Sep 17 00:00:00 2001 From: satr14 Date: Mon, 4 May 2026 11:25:41 +0700 Subject: [PATCH 20/24] Fix formatting in _vercel.reallunarisx.json --- domains/_vercel.reallunarisx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domains/_vercel.reallunarisx.json b/domains/_vercel.reallunarisx.json index d378d5f..6d97196 100644 --- a/domains/_vercel.reallunarisx.json +++ b/domains/_vercel.reallunarisx.json @@ -3,7 +3,7 @@ "username": "LunarisXOffical" }, "record": { - "TXT": "vc-domain-verify=reallunarisx.part-of.my.id,eb89acab3adcd3ee3acd", + "TXT": "vc-domain-verify=reallunarisx.part-of.my.id,eb89acab3adcd3ee3acd" }, "proxy": false } From f1638606f61c2203801cd7b23aff3416f1bff4be Mon Sep 17 00:00:00 2001 From: satr14 Date: Mon, 4 May 2026 11:31:27 +0700 Subject: [PATCH 21/24] Change TXT record format to array --- domains/_vercel.reallunarisx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domains/_vercel.reallunarisx.json b/domains/_vercel.reallunarisx.json index 6d97196..132bee7 100644 --- a/domains/_vercel.reallunarisx.json +++ b/domains/_vercel.reallunarisx.json @@ -3,7 +3,7 @@ "username": "LunarisXOffical" }, "record": { - "TXT": "vc-domain-verify=reallunarisx.part-of.my.id,eb89acab3adcd3ee3acd" + "TXT": [ "vc-domain-verify=reallunarisx.part-of.my.id,eb89acab3adcd3ee3acd" ] }, "proxy": false } From f0af7456cbbb1faa0320b10c6afd5a5b64661820 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 May 2026 04:35:45 +0000 Subject: [PATCH 22/24] [automated] update stats --- stats/count.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stats/count.txt b/stats/count.txt index 64bb6b7..f5c8955 100644 --- a/stats/count.txt +++ b/stats/count.txt @@ -1 +1 @@ -30 +32 From c601b07fa4124b25b03064784a72740b13c68061 Mon Sep 17 00:00:00 2001 From: Stefano Del Prete Date: Mon, 11 May 2026 05:32:56 +0200 Subject: [PATCH 23/24] forgot to update --- domains/you-are.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/domains/you-are.json b/domains/you-are.json index 151b83d..7598880 100644 --- a/domains/you-are.json +++ b/domains/you-are.json @@ -1,6 +1,6 @@ { "owner": { - "email": "admin@stefdp.com", + "email": "me@stefdp.com", "username": "Stef-00012" }, "record": { From d1c61e475c01a45f4a77da79b6eaf189bf5f635d Mon Sep 17 00:00:00 2001 From: Stefano Del Prete Date: Mon, 11 May 2026 05:33:28 +0200 Subject: [PATCH 24/24] forgot to update that too --- domains/stef.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/domains/stef.json b/domains/stef.json index 7046320..7598880 100644 --- a/domains/stef.json +++ b/domains/stef.json @@ -1,10 +1,10 @@ { "owner": { - "email": "admin@stefdp.lol", + "email": "me@stefdp.com", "username": "Stef-00012" }, "record": { - "CNAME": "proxy.stefdp.lol" + "CNAME": "proxy.stefdp.com" }, "proxied": false }