anchor.diff:      merge = lib.mergeOneOption;
     };
   
  -  _pkgs = import ../../.. config.nixpkgs;
  +  pkgsType = mkOptionType {
  +    name = "nixpkgs";
  +    description = "An evaluation of Nixpkgs; the top level attribute set of packages";
  +    check = builtins.isAttrs;
  +  };
   
   in
   
   {
     options.nixpkgs = {
  +
  +    pkgs = mkOption {
  +      defaultText = literalExample
  +        ''import "''${nixos}/.." {
  +            inherit (config.nixpkgs) config overlays system;
  +          }
  +        '';
  +      default = import ../../.. { inherit (cfg) config overlays system; };
  +      type = pkgsType;
  +      example = literalExample ''import <nixpkgs> {}'';
  +      description = ''
  +        This is the evaluation of Nixpkgs that will be provided to
  +        all NixOS modules. Defining this option has the effect of
  +        ignoring the other options that would otherwise be used to
  +        evaluate Nixpkgs, because those are arguments to the default
  +        value. The default value imports the Nixpkgs source files
  +        relative to the location of this NixOS module, because
  +        NixOS and Nixpkgs are distributed together for consistency,
  +        so the <code>nixos</code> in the default value is in fact a
  +        relative path. The <code>config</code>, <code>overlays</code>
  +        and <code>system</code> come from this option's siblings.
  +
  +        This option can be used by applications like NixOps to increase
  +        the performance of evaluation, or to create packages that depend
  +        on a container that should be built with the exact same evaluation
  +        of Nixpkgs, for example. Applications like this should set
  +        their default value using <code>lib.mkDefault</code>, so
  +        user-provided configuration can override it without using
  +        <code>lib</code>.
  +
  +        Note that using a distinct version of Nixpkgs with NixOS may
  +        be an unexpected source of problems. Use this option with care.
  +      '';
  +    };
  +
       config = mkOption {
         default = {};
         example = literalExample
  
positive.code:         If unset, it defaults to the platform type of your host system.
          Specifying this option is useful when doing distributed
          multi-platform deployment, or when building virtual machines.
        '';
      };
    };
  
    config = {
      _module.args = {
        pkgs = _pkgs;
        pkgs_i686 = _pkgs.pkgsi686Linux;
      };
    };
  }
  
negative.code: with lib;
  
  let
    cfg = config.nixpkgs;
  
    isConfig = x:
      builtins.isAttrs x || builtins.isFunction x;
  
  