diff options
author | Nicolas B. Pierron <nicolas.b.pierron@gmail.com> | 2015-11-18 00:26:00 +0000 |
---|---|---|
committer | Nicolas B. Pierron <nicolas.b.pierron@gmail.com> | 2015-11-19 20:58:45 +0000 |
commit | a5992ad61b314104aff7e28a41ce101a1b0e7c35 (patch) | |
tree | 7fbf4a4ffb401b4a6d1a0c97357625d77cc4dc6b /nixos/default.nix | |
parent | bd33a4149364ee5123070fe6e706876fa2ebf984 (diff) | |
download | nixpkgs-a5992ad61b314104aff7e28a41ce101a1b0e7c35.tar nixpkgs-a5992ad61b314104aff7e28a41ce101a1b0e7c35.tar.gz nixpkgs-a5992ad61b314104aff7e28a41ce101a1b0e7c35.tar.bz2 nixpkgs-a5992ad61b314104aff7e28a41ce101a1b0e7c35.tar.lz nixpkgs-a5992ad61b314104aff7e28a41ce101a1b0e7c35.tar.xz nixpkgs-a5992ad61b314104aff7e28a41ce101a1b0e7c35.tar.zst nixpkgs-a5992ad61b314104aff7e28a41ce101a1b0e7c35.zip |
Add a way to pin a NixOS version within the module system.
This modification add a way to re-evaluate the module system with a different version of NixOS, or with a different set of arguments.
Diffstat (limited to 'nixos/default.nix')
-rw-r--r-- | nixos/default.nix | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/nixos/default.nix b/nixos/default.nix index 5d69b79e13a..6359d10c880 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -1,12 +1,20 @@ { configuration ? import ./lib/from-env.nix "NIXOS_CONFIG" <nixos-config> , system ? builtins.currentSystem +, extraModules ? [] + # This attribute is used to specify a different nixos version, a different + # system or additional modules which might be set conditionally. +, reEnter ? false }: let + reEnterModule = { + config.nixos.path = with (import ../lib); mkIf reEnter (mkForce null); + config.nixos.configuration = configuration; + }; eval = import ./lib/eval-config.nix { inherit system; - modules = [ configuration ]; + modules = [ configuration reEnterModule ] ++ extraModules; }; inherit (eval) pkgs; @@ -14,14 +22,14 @@ let # This is for `nixos-rebuild build-vm'. vmConfig = (import ./lib/eval-config.nix { inherit system; - modules = [ configuration ./modules/virtualisation/qemu-vm.nix ]; + modules = [ configuration reEnterModule ./modules/virtualisation/qemu-vm.nix ] ++ extraModules; }).config; # This is for `nixos-rebuild build-vm-with-bootloader'. vmWithBootLoaderConfig = (import ./lib/eval-config.nix { inherit system; modules = - [ configuration + [ configuration reEnterModule ./modules/virtualisation/qemu-vm.nix { virtualisation.useBootLoader = true; } ]; @@ -30,7 +38,7 @@ let in { - inherit (eval) config options; + inherit (eval.config.nixos.reflect) config options; system = eval.config.system.build.toplevel; |