Merge pull request #32422 from roberth/nixos-evaluate
Add pkgs.nixos function
This commit is contained in:
commit
45c463d6f4
|
@ -178,9 +178,26 @@ $ nix-instantiate -E '(import <nixpkgsunstable> {}).gitFull'
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<literal>lib.traceValIfNot</literal> has been deprecated. Use
|
The <literal>pkgs</literal> argument to NixOS modules can now be set directly using <literal>nixpkgs.pkgs</literal>. Previously, only the <literal>system</literal>, <literal>config</literal> and <literal>overlays</literal> arguments could be used to influence <literal>pkgs</literal>.
|
||||||
<literal>if/then/else</literal> and <literal>lib.traceValSeq</literal>
|
</para>
|
||||||
instead.
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
A NixOS system can now be constructed more easily based on a preexisting invocation of Nixpkgs. For example:
|
||||||
|
<programlisting>
|
||||||
|
inherit (pkgs.nixos {
|
||||||
|
boot.loader.grub.enable = false;
|
||||||
|
fileSystems."/".device = "/dev/xvda1";
|
||||||
|
}) toplevel kernel initialRamdisk manual;
|
||||||
|
</programlisting>
|
||||||
|
|
||||||
|
This benefits evaluation performance, lets you write Nixpkgs packages that depend on NixOS images and is consistent with a deployment architecture that would be centered around Nixpkgs overlays.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<literal>lib.traceValIfNot</literal> has been deprecated. Use
|
||||||
|
<literal>if/then/else</literal> and <literal>lib.traceValSeq</literal> instead.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
|
|
|
@ -20935,6 +20935,52 @@ with pkgs;
|
||||||
|
|
||||||
nixops-dns = callPackage ../tools/package-management/nixops/nixops-dns.nix { };
|
nixops-dns = callPackage ../tools/package-management/nixops/nixops-dns.nix { };
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Evaluate a NixOS configuration using this evaluation of Nixpkgs.
|
||||||
|
*
|
||||||
|
* With this function you can write, for example, a package that
|
||||||
|
* depends on a custom virtual machine image.
|
||||||
|
*
|
||||||
|
* Parameter: A module, path or list of those that represent the
|
||||||
|
* configuration of the NixOS system to be constructed.
|
||||||
|
*
|
||||||
|
* Result: An attribute set containing packages produced by this
|
||||||
|
* evaluation of NixOS, such as toplevel, kernel and
|
||||||
|
* initialRamdisk.
|
||||||
|
* The result can be extended in the modules by defining
|
||||||
|
* extra options in system.build.
|
||||||
|
*
|
||||||
|
* Unlike in plain NixOS, the nixpkgs.config, nixpkgs.overlays and
|
||||||
|
* nixpkgs.system options will be ignored by default. Instead,
|
||||||
|
* nixpkgs.pkgs will have the default value of pkgs as it was
|
||||||
|
* constructed right after invoking the nixpkgs function (e.g. the
|
||||||
|
* value of import <nixpkgs> { overlays = [./my-overlay.nix]; }
|
||||||
|
* but not the value of (import <nixpkgs> {} // { extra = ...; }).
|
||||||
|
*
|
||||||
|
* If you do want to use the config.nixpkgs options, you are
|
||||||
|
* probably better off by calling nixos/lib/eval-config.nix
|
||||||
|
* directly, even though it is possible to set config.nixpkgs.pkgs.
|
||||||
|
*
|
||||||
|
* For more information about writing NixOS modules, see
|
||||||
|
* https://nixos.org/nixos/manual/index.html#sec-writing-modules
|
||||||
|
*
|
||||||
|
* Note that you will need to have called Nixpkgs with the system
|
||||||
|
* parameter set to the right value for your deployment target.
|
||||||
|
*/
|
||||||
|
nixos = configuration:
|
||||||
|
(import (self.path + "/nixos/lib/eval-config.nix") {
|
||||||
|
inherit (pkgs) system;
|
||||||
|
modules = [(
|
||||||
|
{ lib, ... }: {
|
||||||
|
config.nixpkgs.pkgs = lib.mkDefault pkgs;
|
||||||
|
}
|
||||||
|
)] ++ (
|
||||||
|
if builtins.isList configuration
|
||||||
|
then configuration
|
||||||
|
else [configuration]
|
||||||
|
);
|
||||||
|
}).config.system.build;
|
||||||
|
|
||||||
nixui = callPackage ../tools/package-management/nixui { node_webkit = nwjs_0_12; };
|
nixui = callPackage ../tools/package-management/nixui { node_webkit = nwjs_0_12; };
|
||||||
|
|
||||||
nix-bundle = callPackage ../tools/package-management/nix-bundle { };
|
nix-bundle = callPackage ../tools/package-management/nix-bundle { };
|
||||||
|
|
Loading…
Reference in New Issue