anchor.diff:          type        = types.attrsOf zoneOptions;
           default     = {};
           example     = {
  -            "serverGroup1" = {
  -                provideXFR = [ "10.1.2.3 NOKEY" ];
  -                children = {
  -                    "example.com." = {
  -                        data = ''
  -                          $ORIGIN example.com.
  -                          $TTL    86400
  -                          @ IN SOA a.ns.example.com. admin.example.com. (
  -                          ...
  -                        '';
  -                    };
  -                    "example.org." = {
  -                        data = ''
  -                          $ORIGIN example.org.
  -                          $TTL    86400
  -                          @ IN SOA a.ns.example.com. admin.example.com. (
  -                          ...
  -                        '';
  -                    };
  -                };
  +          "serverGroup1" = {
  +            provideXFR = [ "10.1.2.3 NOKEY" ];
  +            children = {
  +              "example.com." = {
  +                data = ''
  +                  $ORIGIN example.com.
  +                  $TTL    86400
  +                  @ IN SOA a.ns.example.com. admin.example.com. (
  +                  ...
  +                '';
  +              };
  +              "example.org." = {
  +                data = ''
  +                  $ORIGIN example.org.
  +                  $TTL    86400
  +                  @ IN SOA a.ns.example.com. admin.example.com. (
  +                  ...
  +                '';
  +              };
               };
  -
  -            "example.net." = {
  -                provideXFR = [ "10.3.2.1 NOKEY" ];
  -                data = ''...'';
  -            };
  +          };
  +
  +          "example.net." = {
  +            provideXFR = [ "10.3.2.1 NOKEY" ];
  +            data = ''...'';
  +          };
           };
           description = ''
             Define your zones here. Zones can cascade other zones and therefore
  
positive.code: 
        # fork -> pattern
        else zipAttrsWith (name: head) (
            mapAttrsToList (name: child: zoneConfigs' (parent // zone // { children = {}; }) name child)
                           zone.children
        );
  
    # fighting infinite recursion
  
negative.code: 
  
    zoneConfigFile = name: zone: ''
      zone:
        name:         "${name}"
        zonefile:     "${stateDir}/zones/${name}"
        ${maybeString "outgoing-interface: " zone.outgoingInterface}
      ${forEach     "  rrl-whitelist: "      zone.rrlWhitelist}
  
      ${forEach     "  allow-notify: "       zone.allowNotify}
      ${forEach     "  request-xfr: "        zone.requestXFR}
        allow-axfr-fallback: ${yesOrNo       zone.allowAXFRFallback}
  
      ${forEach     "  notify: "             zone.notify}
        notify-retry:                        ${toString zone.notifyRetry}
      ${forEach     "  provide-xfr: "        zone.provideXFR}
    '';
  
    zoneConfigs = zoneConfigs' {} "" { children = cfg.zones; };
  
  