summary refs log tree commit diff
path: root/nixos/default.nix
diff options
context:
space:
mode:
authorNicolas B. Pierron <nicolas.b.pierron@gmail.com>2015-11-18 00:26:00 +0000
committerNicolas B. Pierron <nicolas.b.pierron@gmail.com>2015-11-19 20:58:45 +0000
commita5992ad61b314104aff7e28a41ce101a1b0e7c35 (patch)
tree7fbf4a4ffb401b4a6d1a0c97357625d77cc4dc6b /nixos/default.nix
parentbd33a4149364ee5123070fe6e706876fa2ebf984 (diff)
downloadnixpkgs-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.nix16
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;