@@ -118,14 +118,12 @@ let
118118 serverIPv4Address =
119119 # bash
120120 ''
121- export ipv4Add=`${ pkgs . nettools } /bin/ifconfig | ${ pkgs . ripgrep } /bin/rg 'inet ' | ${ pkgs . ripgrep } /bin/rg -v '127.0.0.1' | ${ pkgs . gawk } /bin/awk '{ print $2}'`
122- echo "${ cfg . domainName } A $ipv4Add"
121+ ${ pkgs . nettools } /bin/ifconfig | ${ pkgs . ripgrep } /bin/rg 'inet ' | ${ pkgs . ripgrep } /bin/rg -v '127.0.0.1' | ${ pkgs . gawk } /bin/awk '{ print $2}'
123122 '' ;
124123 serverIPv6Address =
125124 # bash
126125 ''
127- export ipv6Add=`${ pkgs . nettools } /bin/ifconfig | ${ pkgs . ripgrep } /bin/rg 'inet6 .*global' | ${ pkgs . gawk } /bin/awk '{ print $2}'`
128- echo "${ cfg . domainName } AAAA $ipv6Add"
126+ ${ pkgs . nettools } /bin/ifconfig | ${ pkgs . ripgrep } /bin/rg 'inet6 .*global' | ${ pkgs . gawk } /bin/awk '{ print $2}'
129127 '' ;
130128in
131129{
446444 }
447445 ] ;
448446
447+ # packages required to deploy and run alaveteli
448+ # tools required to build ruby gems and such do NOT go here
449449 environment . systemPackages = [
450450 pkgs . curl
451+ pkgs . dig
451452 pkgs . gnused
452453 pkgs . ripgrep
453454 pkgs . urlencode
558559 Group = cfg . group ;
559560 PrivateTmp = true ;
560561 StateDirectory = "alaveteli" ;
562+
561563 WorkingDirectory = cfg . package ;
562564 TimeoutStartSec = 1200 ;
563565 RestartSec = 1 ;
606608 # TODO: improve this to help with DNS config just before activating
607609 # the new system
608610 system . activationScripts . showDNSrecords = {
609- text = ''
610- #!/bin/sh
611- echo "############################"
612- echo "DNS records to set for Alaveteli"
613- ${ serverIPv4Address }
614- echo "--------------------------------"
615- ${ serverIPv6Address }
616- echo "--------------------------------"
617- echo "${ cfg . domainName } IN MX 10 ${ cfg . domainName } ."
618- echo "--------------------------------"
619- echo 'SPF: @ 300 IN TXT "v=spf1 mx ~all"'
620- echo "--------------------------------"
621- echo "TLSA record:"
622- ${ generateTlsaRecord }
623- echo
624- echo "--------------------------------"
625- echo "CAA 0 issue \"letsencrypt.org\""
626- echo "--------------------------------"
627- cat /var/lib/opendkim/keys/${ config . services . opendkim . selector } .txt
628- echo "--------------------------------"
629- echo '_dmarc.${ cfg . domainName } TXT "v=DMARC1; p=quarantine;"'
630- echo "--------------------------------"
631- echo "############################"
632- '' ;
611+ text =
612+ # bash
613+ ''
614+ #!/bin/sh
615+ echo "########################################################"
616+ echo "DNS records to set for Alaveteli"
617+ echo "${ cfg . domainName } A `${ serverIPv4Address } `"
618+ echo "--------------------------------------------------------"
619+ echo "${ cfg . domainName } AAAA `${ serverIPv6Address } `"
620+ echo "--------------------------------------------------------"
621+ echo "${ cfg . domainName } IN MX 10 ${ cfg . domainName } ."
622+ echo "--------------------------------------------------------"
623+ echo 'SPF: @ 300 IN TXT "v=spf1 mx ~all"'
624+ echo "--------------------------------------------------------"
625+ echo "TLSA record:"
626+ ${ generateTlsaRecord }
627+ echo
628+ echo "--------------------------------------------------------"
629+ echo "CAA 0 issue \"letsencrypt.org\""
630+ echo "--------------------------------------------------------"
631+ echo "DKIM record:"
632+ cat /var/lib/opendkim/keys/${ config . services . opendkim . selector } .txt
633+ echo "--------------------------------------------------------"
634+ echo "DMARC record:"
635+ echo '_dmarc.${ cfg . domainName } TXT "v=DMARC1; p=quarantine;"'
636+ echo "--------------------------------------------------------"
637+ echo "Do not forget to set the reverse DNS to ${ cfg . domainName } "
638+ echo "########################################################"
639+ '' ;
640+ } ;
641+ system . preSwitchChecks = {
642+ # return false/non-0 in any check to prevent the new config from being activated
643+ verifyDNSConfig =
644+ # bash
645+ ''
646+ echo "#####################################"
647+ echo "Verifying DNS config (A/AAAA records)"
648+ IPV4ADD=$(${ serverIPv4Address } )
649+ IPV6ADD=$(${ serverIPv6Address } )
650+ ${ pkgs . dig } /bin/dig A ${ cfg . domainName } | ${ pkgs . ripgrep } /bin/rg "$IPV4ADD"
651+ ${ pkgs . dig } /bin/dig AAAA ${ cfg . domainName } | ${ pkgs . ripgrep } /bin/rg "$IPV6ADD"
652+ echo "#####################################"
653+ '' ;
633654 } ;
634- system . preSwitchChecks . verifyDNSConfig = ''
635- echo "############################"
636- echo "Verifying DNS config"
637- echo "############################"
638- # false <- to prevent the config from being activated
639- '' ;
640655
641656 } ;
642657
0 commit comments