grace/dots
dotfiles/nix configs
git clone https://git.gae.moe/grace/dots
4db52e6
idk
1{ pkgs , ...} : 2 3let 4serial = "2026100601" ; 5 6public = { 7lee = "152.44.40.91" ; 8knuth = "209.50.50.6" ; 9}; 10 11tailnet = import ../tailnet.nix ; 12 13tailnetRecords = builtins . concatStringsSep "\n" ( 14builtins . map ( name :" ${ name } .i IN A ${ tailnet .${ name }} \n*. ${ name } .i IN A ${ tailnet .${ name }} " ) ( builtins . attrNames tailnet ) 15); 16 17mafiaSecondaries = [ 18"45.8.201.122" 19"45.8.201.114" 20"158.101.112.125" 21]; 22 23publicNameservers = '' 24@ IN NS ns1.gae.moe. 25@ IN NS ns1.inx.moe. 26@ IN NS denise.charbroil.me. 27@ IN NS ns1.shad.moe. 28'' ; 29 30mkPrimaryZone = 31{ 32domain , 33address , 34extraRecords ? "" , 35} : 36pkgs . writeText "zone- ${ domain } " '' 37$ORIGIN ${ domain } . 38$TTL 300 39 40@ IN SOA ns1.gae.moe. hostmaster.gae.moe. ( 41${ serial } 421h 4315m 441w 455m 46) 47 48${ publicNameservers } 49 50@ IN A ${ address } 51* IN A ${ address } 52 53${ extraRecords } 54'' ; 55 56mkSecondary = 57master: zones: 58builtins . listToAttrs ( 59map ( zone: { 60name = zone ; 61value = { 62master = false ; 63masters = [ master ]; 64file = zone ; 65}; 66}) zones 67); 68 69mafiaZones = 70mkSecondary "45.8.201.122" [ 71"inx.moe" 72"doge-inc.net" 73"foxy.software" 74"swedish.fish" 75"unreliable.email" 76"funmafia.industries" 77"vulcan.moe" 78] 79// mkSecondary "45.8.201.114" [ 80"charbroil.me" 81"puppy.observer" 82"bdsm.equipment" 83"ilovehewlettpackard.com" 84] 85// mkSecondary "158.101.112.125" [ 86"shad.moe" 87"konpeki.solutions" 88"konpekisolutions.com" 89]; 90 91in 92{ 93services . bind = { 94enable = true ; 95 96cacheNetworks = [ 97"127.0.0.0/8" 98"::1/128" 99"100.64.0.0/10" 100]; 101 102zones = { 103"gae.moe" = { 104master = true ; 105slaves = mafiaSecondaries ; 106 107# Potentially could use DNAME forwarding while defining a Quad100 forwarder? 108# https://github.com/tailscale/tailscale/issues/1543#issuecomment-4703759447 109file = mkPrimaryZone { 110domain = "gae.moe" ; 111address = public . knuth ; 112extraRecords = '' 113ns1 IN A ${ public . knuth } 114_hi 3600 IN TXT "hi :3" 115 116${ tailnetRecords } 117'' ; 118}; 119}; 120 121"grace.pink" = { 122master = true ; 123slaves = mafiaSecondaries ; 124 125file = mkPrimaryZone { 126domain = "grace.pink" ; 127address = public . lee ; 128extraRecords = '' 129_atproto 3600 IN TXT "did=did:plc:rtokeh2dsmapicefqxkefbfn" 130'' ; 131}; 132}; 133 134"words.gay" = { 135master = true ; 136slaves = mafiaSecondaries ; 137 138file = mkPrimaryZone { 139domain = "words.gay" ; 140address = public . lee ; 141}; 142}; 143} 144// mafiaZones ; 145}; 146 147networking . firewall = { 148allowedTCPPorts = [ 53 ]; 149allowedUDPPorts = [ 53 ]; 150}; 151}