diff --git a/docs/example.nix b/docs/example.nix index 5a58fe9..3229e8c 100644 --- a/docs/example.nix +++ b/docs/example.nix @@ -1,12 +1,18 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "satr14washere"; email = "admin@satr14.my.id"; }; proxy = false; -in with dns.lib.combinators; { +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")) ]; @@ -18,7 +24,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 +60,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..1fa5051 100644 --- a/domains/_discord.colin.nix +++ b/domains/_discord.colin.nix @@ -1,9 +1,12 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "ColinLeDev"; }; description = "Discord verification"; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ TXT = [ "dh=279643a6f8677dedb1c5c63d007fc4516149679c" ]; } diff --git a/domains/_discord.cutedog5695.nix b/domains/_discord.cutedog5695.nix index 8b6e78e..e3219d2 100644 --- a/domains/_discord.cutedog5695.nix +++ b/domains/_discord.cutedog5695.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "CuteDog5695"; email = "cutedog5695@gmail.com"; repo = "https://github.com/CuteDog5695/cutedog5695.github.io"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ TXT = [ "dh=a7c19efb0f6bc38b97a33760f6c1ee84df4151b1" ]; } diff --git a/domains/_discord.justdeveloper.nix b/domains/_discord.justdeveloper.nix index c1025bb..c2e7bcf 100644 --- a/domains/_discord.justdeveloper.nix +++ b/domains/_discord.justdeveloper.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "JustDeveloper1"; email = "justdeveloper@juststudio.is-a.dev"; repo = "https://github.com/JustDeveloper1/Website"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ TXT = [ "dh=6024027bc233825451e290ac37a4b4a1f838ee70" ]; } diff --git a/domains/_discord.nix b/domains/_discord.nix index ee3009d..26b28cb 100644 --- a/domains/_discord.nix +++ b/domains/_discord.nix @@ -1,8 +1,11 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "satr14washere"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ TXT = [ "dh=d509fc9014e196311ed887c2e410cdefa833436e" ]; } diff --git a/domains/_discord.roki.nix b/domains/_discord.roki.nix index 5b1d452..cc172c9 100644 --- a/domains/_discord.roki.nix +++ b/domains/_discord.roki.nix @@ -1,8 +1,11 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "Roki100"; discord = "289479495444987904"; }; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ TXT = [ "dh=5633078cd5bfd347a896ddb0f0de017c5423aa06" ]; } diff --git a/domains/batman.nix b/domains/batman.nix index 0ad04bd..3233a79 100644 --- a/domains/batman.nix +++ b/domains/batman.nix @@ -1,8 +1,11 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "shadowe1ite"; }; proxy = true; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "shadowe1ite.github.io." ]; } diff --git a/domains/c.nix b/domains/c.nix index bed0b01..f5bbed6 100644 --- a/domains/c.nix +++ b/domains/c.nix @@ -1,9 +1,12 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "orangci"; email = "c@orangc.xyz"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/colin.nix b/domains/colin.nix index 277aba7..ed5f80e 100644 --- a/domains/colin.nix +++ b/domains/colin.nix @@ -1,9 +1,12 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "ColinLeDev"; }; description = "My personal portfolio hosted on my server"; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "proxy.col1n.fr." ]; } diff --git a/domains/cutedog5695.nix b/domains/cutedog5695.nix index f20329f..f25e458 100644 --- a/domains/cutedog5695.nix +++ b/domains/cutedog5695.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "CuteDog5695"; email = "cutedog5695@gmail.com"; repo = "https://github.com/CuteDog5695/cutedog5695.github.io"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/elkaff.nix b/domains/elkaff.nix index 9ead547..8009f98 100644 --- a/domains/elkaff.nix +++ b/domains/elkaff.nix @@ -1,7 +1,10 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "elkhaff"; }; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "portofolio-pixel.pages.dev." ]; } diff --git a/domains/j.nix b/domains/j.nix index 8cd38c6..f219b3f 100644 --- a/domains/j.nix +++ b/domains/j.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "JustDeveloper1"; email = "support@juststudio.is-a.dev"; repo = "https://github.com/JustStudio7/Website"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/jacob.nix b/domains/jacob.nix index 46839f9..3d8199c 100644 --- a/domains/jacob.nix +++ b/domains/jacob.nix @@ -1,8 +1,11 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "jacobrdale"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "hexon404.onrender.com." ]; } diff --git a/domains/jd.nix b/domains/jd.nix index 4555867..86d1c92 100644 --- a/domains/jd.nix +++ b/domains/jd.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "JustDeveloper1"; email = "justdeveloper@juststudio.is-a.dev"; repo = "https://github.com/JustDeveloper1/Website"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/job.nix b/domains/job.nix index c2623ab..7926c81 100644 --- a/domains/job.nix +++ b/domains/job.nix @@ -1,8 +1,11 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "FWEEaaaa1"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ A = [ "128.204.223.115" ]; } diff --git a/domains/joel.nix b/domains/joel.nix index f1ad335..bb689c3 100644 --- a/domains/joel.nix +++ b/domains/joel.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "joestr"; email = "strasser999@gmail.com"; }; proxy = false; -in with dns.lib.combinators; { +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 8cd38c6..f219b3f 100644 --- a/domains/js.nix +++ b/domains/js.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "JustDeveloper1"; email = "support@juststudio.is-a.dev"; repo = "https://github.com/JustStudio7/Website"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/just.nix b/domains/just.nix index 4555867..86d1c92 100644 --- a/domains/just.nix +++ b/domains/just.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "JustDeveloper1"; email = "justdeveloper@juststudio.is-a.dev"; repo = "https://github.com/JustDeveloper1/Website"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/justdev.nix b/domains/justdev.nix index 4555867..86d1c92 100644 --- a/domains/justdev.nix +++ b/domains/justdev.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "JustDeveloper1"; email = "justdeveloper@juststudio.is-a.dev"; repo = "https://github.com/JustDeveloper1/Website"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/justdeveloper.nix b/domains/justdeveloper.nix index 4555867..86d1c92 100644 --- a/domains/justdeveloper.nix +++ b/domains/justdeveloper.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "JustDeveloper1"; email = "justdeveloper@juststudio.is-a.dev"; repo = "https://github.com/JustDeveloper1/Website"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/juststudio.nix b/domains/juststudio.nix index 8cd38c6..f219b3f 100644 --- a/domains/juststudio.nix +++ b/domains/juststudio.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "JustDeveloper1"; email = "support@juststudio.is-a.dev"; repo = "https://github.com/JustStudio7/Website"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/katz.nix b/domains/katz.nix index c369c96..1e444a9 100644 --- a/domains/katz.nix +++ b/domains/katz.nix @@ -1,8 +1,11 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "Bananalolok"; }; proxy = false; -in with dns.lib.combinators; { +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 8fcb680..68576d5 100644 --- a/domains/no-one-is.nix +++ b/domains/no-one-is.nix @@ -1,9 +1,12 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "EducatedSuddenBucket"; email = "me@esb.is-a.dev"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "educatedsuddenbucket-github-io.onrender.com." ]; } diff --git a/domains/pxl.nix b/domains/pxl.nix index 2b3bce0..5dcfa41 100644 --- a/domains/pxl.nix +++ b/domains/pxl.nix @@ -1,8 +1,11 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "heypxl"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "heypxl.github.io." ]; } diff --git a/domains/rchessauth.nix b/domains/rchessauth.nix index 6ddd4c4..1e3ac4b 100644 --- a/domains/rchessauth.nix +++ b/domains/rchessauth.nix @@ -1,8 +1,11 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "vortexprime24"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "fire.hackclub.app." ]; } diff --git a/domains/roki.nix b/domains/roki.nix index 43d30e6..de83107 100644 --- a/domains/roki.nix +++ b/domains/roki.nix @@ -1,9 +1,12 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "Roki100"; discord = "289479495444987904"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "edge.redirect.pizza." ]; } diff --git a/domains/satr14.nix b/domains/satr14.nix index fa6e690..67fdb5c 100644 --- a/domains/satr14.nix +++ b/domains/satr14.nix @@ -1,7 +1,10 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "satr14washere"; }; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "5th-site.pages.dev." ]; } diff --git a/domains/stef.nix b/domains/stef.nix index 88e3870..926ab58 100644 --- a/domains/stef.nix +++ b/domains/stef.nix @@ -1,9 +1,12 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "Stef-00012"; email = "admin@stefdp.lol"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "proxy.stefdp.lol." ]; } diff --git a/domains/ukriu.nix b/domains/ukriu.nix index bab016a..25a6db6 100644 --- a/domains/ukriu.nix +++ b/domains/ukriu.nix @@ -1,10 +1,13 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "ukriu"; email = "partofmyid@ukriu.com"; }; description = "my website"; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "ukriu.pages.dev." ]; } diff --git a/domains/you-are.nix b/domains/you-are.nix index 3cad0e8..22b50e6 100644 --- a/domains/you-are.nix +++ b/domains/you-are.nix @@ -1,9 +1,12 @@ -{ dns, ... }: let +{ dns, ... }: +let owner = { username = "Stef-00012"; email = "admin@stefdp.com"; }; proxy = false; -in with dns.lib.combinators; { +in +with dns.lib.combinators; +{ CNAME = [ "proxy.stefdp.com." ]; } diff --git a/flake.nix b/flake.nix index 9dd8906..b046670 100644 --- a/flake.nix +++ b/flake.nix @@ -1,33 +1,49 @@ { 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" - ]; - }; - 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 + 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; }; } - ) - ) domains; - }; -} \ No newline at end of file + ) 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; + }; +}