anchor.diff:  
     listenToString = l: "${l.ip}:${toString l.port}";
   
  -  extraModules = attrByPath ["extraModules"] [] mainCfg;
  -  extraForeignModules = filter isAttrs extraModules;
  -  extraApacheModules = filter isString extraModules;
  -
     allHosts = [mainCfg] ++ mainCfg.virtualHosts;
   
     enableSSL = any (vhost: vhost.enableSSL) allHosts;
   
  -
  -  # Names of modules from ${httpd}/modules that we want to load.
  -  apacheModules =
  -    [ # HTTP authentication mechanisms: basic and digest.
  -      "auth_basic" "auth_digest"
  -
  -      # Authentication: is the user who he claims to be?
  -      "authn_file" "authn_dbm" "authn_anon" "authn_core"
  -
  -      # Authorization: is the user allowed access?
  -      "authz_user" "authz_groupfile" "authz_host" "authz_core"
  -
  -      # Other modules.
  -      "ext_filter" "include" "log_config" "env" "mime_magic"
  -      "cern_meta" "expires" "headers" "usertrack" /* "unique_id" */ "setenvif"
  -      "mime" "dav" "status" "autoindex" "asis" "info" "dav_fs"
  -      "vhost_alias" "negotiation" "dir" "imagemap" "actions" "speling"
  -      "userdir" "alias" "rewrite" "proxy" "proxy_http"
  -      "unixd" "cache" "cache_disk" "slotmem_shm" "socache_shmcb"
  +  # NOTE: generally speaking order of modules is very important
  +  modules =
  +    [ # required apache modules our httpd service cannot run without
  +      "authn_core" "authz_core"
  +      "log_config"
  +      "mime" "autoindex" "negotiation" "dir"
  +      "alias" "rewrite"
  +      "unixd" "slotmem_shm" "socache_shmcb"
         "mpm_${mainCfg.multiProcessingModule}"
  -
  -      # For compatibility with old configurations, the new module mod_access_compat is provided.
  -      "access_compat"
       ]
       ++ (if mainCfg.multiProcessingModule == "prefork" then [ "cgi" ] else [ "cgid" ])
       ++ optional enableSSL "ssl"
  -    ++ extraApacheModules;
  +    ++ optional mainCfg.enableMellon { name = "auth_mellon"; path = "${pkgs.apacheHttpdPackages.mod_auth_mellon}/modules/mod_auth_mellon.so"; }
  +    ++ optional mainCfg.enablePHP { name = "php${phpMajorVersion}"; path = "${php}/modules/libphp${phpMajorVersion}.so"; }
  +    ++ optional mainCfg.enablePerl { name = "perl"; path = "${mod_perl}/modules/mod_perl.so"; }
  +    ++ mainCfg.extraModules;
   
   
     allDenied = "Require all denied";
  
positive.code: 
  
    browserHacks = ''
      BrowserMatch "Mozilla/2" nokeepalive
      BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
      BrowserMatch "RealPlayer 4\.0" force-response-1.0
      BrowserMatch "Java/1\.0" force-response-1.0
      BrowserMatch "JDK/1\.0" force-response-1.0
      BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
      BrowserMatch "^WebDrive" redirect-carefully
      BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
      BrowserMatch "^gnome-vfs" redirect-carefully
    '';
  
  
  
negative.code:     Group ${mainCfg.group}
  
      ${let
          mkModule = module:
            if isString module then { name = module; path = "${httpd}/modules/mod_${module}.so"; }
            else if isAttrs module then { inherit (module) name path; }
            else throw "Expecting either a string or attribute set including a name and path.";
        in
          concatMapStringsSep "\n" (module: "LoadModule ${module.name}_module ${module.path}") (unique (map mkModule modules))
      }
  
      AddHandler type-map var
  