anchor.diff:  
   let
     inherit (pkgs.lib) mkOption;
  +  inherit (builtins) head tail;
  +
  +  # temporary modifications.
  +  # backward here means that expression could either be a value or a
  +  # function which expects to have a pkgs argument.  Old merges are
  +  # currently used while removing pkgs arguments.
  +  optionalPkgs = x:
  +    if __isFunction x then x pkgs else x;
  +
  +  backwardPkgsFunListOldMerge = name: list: ignorePkgs:
  +    backwardPkgsFunListNewMerge name list;
  +
  +  backwardPkgsFunListNewMerge = name: list:
  +    pkgs.lib.concatMap optionalPkgs list;
  +
  +  backwardPkgsFunOldMerge = name: list: ignorePkgs:
  +    backwardPkgsFunNewMerge name list;
  +
  +  backwardPkgsFunNewMerge = name: list:
  +    if list != [] && tail list == []
  +    then optionalPkgs (head list)
  +    else abort "${name}: Defined at least twice.";
   in
   
   {
  
positive.code:     kernelPackages = mkOption {
        default = pkgs: pkgs.kernelPackages;
        example = pkgs: pkgs.kernelPackages_2_6_25;
        description = "
          This option allows you to override the Linux kernel used by
          NixOS.  Since things like external kernel module packages are
  
negative.code: 
      extraFonts = mkOption {
        default = pkgs: [];
        merge = backwardPkgsFunListOldMerge;
        description = "
            Function, returning list of additional fonts.
        ";
  