anchor.diff:      else if builtins.isList val then (concatMapStringsSep "," serialize val)
       else "";
   
  -  configFile = pkgs.writeText "recursor.conf"
  +  configDir = pkgs.writeTextDir "recursor.conf"
       (concatStringsSep "\n"
         (flip mapAttrsToList cfg.settings
           (name: val: "${name}=${serialize val}")));
  
positive.code: with lib;
  
  let
    dataDir  = "/var/lib/pdns-recursor";
    username = "pdns-recursor";
  
    cfg = config.services.pdns-recursor;
  
    oneOrMore  = type: with types; either type (listOf type);
  
negative.code:       serve-rfc1918    = cfg.serveRFC1918;
        lua-config-file  = pkgs.writeText "recursor.lua" cfg.luaConfig;
  
        daemon         = false;
        write-pid      = false;
        log-timestamp  = false;
        disable-syslog = true;
      };
  
      systemd.packages = [ pkgs.pdns-recursor ];
  
      systemd.services.pdns-recursor = {
        wantedBy = [ "multi-user.target" ];
  
        serviceConfig = {
          ExecStart = [ "" "${pkgs.pdns-recursor}/bin/pdns_recursor --config-dir=${configDir}" ];
        };
      };
  
      users.users.pdns-recursor = {
        isSystemUser = true;
        group = "pdns-recursor";
        uid = config.ids.uids.pdns-recursor;
        description = "PowerDNS Recursor daemon user";
      };
  
      users.groups.pdns-recursor = {};
  
    };
  
    imports = [
  