summary refs log tree commit diff
path: root/nixos/default.nix
diff options
context:
space:
mode:
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 5d69b79e13a6..6359d10c8805 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;