anchor.diff:            if typeOf defValue == "option"
             then
               # `defValue' is an option.
  -            if builtins.hasAttr defName opts
  +            if hasAttr defName opts
               then builtins.getAttr defName opts
               else defValue.default
             else
               # `defValue' is an attribute set containing options.
               # So recurse.
  -            if builtins.hasAttr defName opts && builtins.isAttrs optValue 
  +            if hasAttr defName opts && isAttrs optValue 
               then addDefaultOptionValues defValue optValue
               else addDefaultOptionValues defValue {};
         }
  -    ) (builtins.attrNames defs));
  +    ) (attrNames defs));
   
     mergeDefaultOption = list:
       if list != [] && tail list == [] then head list
  -    else if all __isFunction list then x: mergeDefaultOption (map (f: f x) list)
  -    else if all __isList list then concatLists list
  -    else if all __isAttrs list then fold lib.mergeAttrs {} list
  +    else if all builtins.isFunction list then x: mergeDefaultOption (map (f: f x) list)
  +    else if all isList list then concatLists list
  +    else if all isAttrs list then fold lib.mergeAttrs {} list
       else if all (x: true == x || false == x) list then fold lib.or false list
       else if all (x: x == toString x) list then lib.concatStrings list
       else throw "Cannot merge values.";
  
positive.code:   mergeEnableOption = mergeTypedOption "boolean"
      (x: true == x || false == x) (fold lib.or false);
  
    mergeListOption = mergeTypedOption "list"
      __isList concatLists;
  
    mergeStringOption = mergeTypedOption "string"
      (x: if builtins ? isString then builtins.isString x else x + "")
      lib.concatStrings;
  
    mergeOneOption = list:
      if list == [] then abort "This case should never happens."
      else if tail list != [] then throw "Multiple definitions. Only one is allowed for this option."
      else head list;
  
  
negative.code:           # pkgs: config: {..}
            cfg2 = cfg {} {};
          in
          if builtins.isFunction cfg0 then
            if isAttrs cfg1 then cfg1
            else builtins.trace "Use '{pkgs, config, ...}:'." cfg2
          else cfg0;
  
  