pkgs.nixos: Expose configuration directly

The pkgs.nixos used to only expose system.build, which kind of made
sense in theory, but asking everyone to write modules when to want
to pull something out of a NixOS configuration is just not realistic.
In fact it's very inconvenient when you're trying to debug something.

This adds the config, options and anything that eval-config.nix
produces. Although this introduces the potential for attributes
of eval-config.nix output to shadow system.build, I don't expect
naming collisions to be commonplace, or to remain undetected during
evaluation. Also such an error should be easy to resolve, by explicitly
querying (pkgs.nixos {}).config.system.build.X, or by renaming X
to something other than config, options, extraArgs.
This commit is contained in:
Robert Hensing 2019-05-25 13:18:19 +02:00
parent 953c81d1a4
commit b52d80b898

View File

@ -23286,6 +23286,8 @@ in
initialRamdisk. initialRamdisk.
The result can be extended in the modules by defining The result can be extended in the modules by defining
extra attributes in system.build. extra attributes in system.build.
Alternatively, you may use the result's config and
options attributes to query any option.
Example: Example:
@ -23323,10 +23325,13 @@ in
Note that you will need to have called Nixpkgs with the system Note that you will need to have called Nixpkgs with the system
parameter set to the right value for your deployment target. parameter set to the right value for your deployment target.
*/ */
nixos = configuration: nixos =
(import (pkgs.path + "/nixos/lib/eval-config.nix") { configuration:
let
c = import (pkgs.path + "/nixos/lib/eval-config.nix") {
inherit (pkgs.stdenv.hostPlatform) system; inherit (pkgs.stdenv.hostPlatform) system;
modules = [( modules =
[(
{ lib, ... }: { { lib, ... }: {
config.nixpkgs.pkgs = lib.mkDefault pkgs; config.nixpkgs.pkgs = lib.mkDefault pkgs;
} }
@ -23335,7 +23340,9 @@ in
then configuration then configuration
else [configuration] else [configuration]
); );
}).config.system.build; };
in
c.config.system.build // c;
/* /*