Self-host your own digital island
1{ config, lib, ... }:
2
3let cfg = config.eilean; in
4{
5 options.eilean.dns.enable = lib.mkEnableOption "dns";
6
7 config.dns = lib.mkIf cfg.dns.enable {
8 enable = true;
9 soa.serial = lib.mkDefault 0;
10 records = builtins.concatMap (ns: [
11 {
12 name = "@";
13 type = "NS";
14 data = ns;
15 }
16 {
17 name = ns;
18 type = "A";
19 data = cfg.serverIpv4;
20 }
21 ]) [ "ns1" "ns2" ] ++
22 [
23 {
24 name = "www";
25 type = "CNAME";
26 data = "@";
27 }
28
29 {
30 name = "@";
31 type = "A";
32 data = cfg.serverIpv4;
33 }
34 {
35 name = "@";
36 type = "AAAA";
37 data = cfg.serverIpv6;
38 }
39
40 {
41 name = "vps";
42 type = "A";
43 data = cfg.serverIpv4;
44 }
45 {
46 name = "vps";
47 type = "AAAA";
48 data = cfg.serverIpv6;
49 }
50
51 {
52 name = "@";
53 type = "LOC";
54 data = "52 12 40.4 N 0 5 31.9 E 22m 10m 10m 10m";
55 }
56 ];
57 };
58}