grace/dots
dotfiles/nix configs
git clone https://git.gae.moe/grace/dots
01e3245
main
1{ pkgs , ...} : 2 3let 4serial = "2026101503" ; 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 }} " ) ( 15builtins . attrNames tailnet 16) 17); 18 19mafiaSecondaries = [ 20"45.8.201.122" 21"45.8.201.114" 22"158.101.112.125" 23]; 24 25publicNameservers = '' 26@ IN NS ns1.gae.moe. 27@ IN NS ns1.inx.moe. 28@ IN NS denise.charbroil.me. 29@ IN NS ns1.shad.moe. 30'' ; 31 32mkPrimaryZone = 33{ 34domain , 35address , 36extraRecords ? "" , 37} : 38pkgs . writeText "zone- ${ domain } " '' 39$ORIGIN ${ domain } . 40$TTL 300 41 42@ IN SOA ns1.gae.moe. hostmaster.gae.moe. ( 43${ serial } 441h 4515m 461w 475m 48) 49 50${ publicNameservers } 51 52@ IN A ${ address } 53* IN A ${ address } 54 55${ extraRecords } 56'' ; 57 58mkSecondary = 59master: zones: 60builtins . listToAttrs ( 61map ( zone: { 62name = zone ; 63value = { 64master = false ; 65masters = [ master ]; 66file = zone ; 67}; 68}) zones 69); 70 71mafiaZones = 72mkSecondary "45.8.201.122" [ 73"inx.moe" 74"doge-inc.net" 75"foxy.software" 76"swedish.fish" 77"unreliable.email" 78"funmafia.industries" 79"vulcan.moe" 80] 81// mkSecondary "45.8.201.114" [ 82"charbroil.me" 83"puppy.observer" 84"bdsm.equipment" 85"ilovehewlettpackard.com" 86] 87// mkSecondary "158.101.112.125" [ 88"shad.moe" 89"konpeki.solutions" 90"konpekisolutions.com" 91]; 92 93in 94{ 95services . bind = { 96enable = true ; 97 98cacheNetworks = [ 99"127.0.0.0/8" 100"::1/128" 101"100.64.0.0/10" 102]; 103 104zones = { 105"gae.moe" = { 106master = true ; 107slaves = mafiaSecondaries ; 108 109# Potentially could use DNAME forwarding while defining a Quad100 forwarder? 110# https://github.com/tailscale/tailscale/issues/1543#issuecomment-4703759447 111file = mkPrimaryZone { 112domain = "gae.moe" ; 113address = public . knuth ; 114extraRecords = '' 115ns1 IN A ${ public . knuth } 116_hi 3600 IN TXT "hi :3" 117 118${ tailnetRecords } 119'' ; 120}; 121}; 122 123"grace.pink" = { 124master = true ; 125slaves = mafiaSecondaries ; 126 127file = mkPrimaryZone { 128domain = "grace.pink" ; 129address = public . knuth ; 130extraRecords = '' 131_atproto 3600 IN TXT "did=did:plc:rtokeh2dsmapicefqxkefbfn" 132 133@ IN TXT "purelymail_ownership_proof=c083dcd542b6a981ce2cda4010f07a6cc6789b717458229dddebb6cb482cbc5231efdca56f447af364d124031ce81bf5398a97cbb0d3412dfb5c90b89101fca9" 134@ IN MX 50 mailserver.purelymail.com. 135@ IN TXT "v=spf1 include:_spf.purelymail.com ~all" 136 137purelymail1._domainkey IN CNAME key1.dkimroot.purelymail.com. 138purelymail2._domainkey IN CNAME key2.dkimroot.purelymail.com. 139purelymail3._domainkey IN CNAME key3.dkimroot.purelymail.com. 140_dmarc IN CNAME dmarcroot.purelymail.com. 141autoconfig IN CNAME autoconfig.purelymail.com. 142_autodiscover._tcp IN SRV 0 0 443 autodiscover.purelymail.com. 143'' ; 144}; 145}; 146 147"words.gay" = { 148master = true ; 149slaves = mafiaSecondaries ; 150 151file = mkPrimaryZone { 152domain = "words.gay" ; 153address = public . knuth ; 154}; 155}; 156} 157// mafiaZones ; 158}; 159 160networking . firewall = { 161allowedTCPPorts = [ 53 ]; 162allowedUDPPorts = [ 53 ]; 163}; 164}