summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--default.nix23
-rw-r--r--lib/eval-config.nix18
-rw-r--r--lib/from-env.nix3
3 files changed, 24 insertions, 20 deletions
diff --git a/default.nix b/default.nix
index 17a417306b22..8950f08707a8 100644
--- a/default.nix
+++ b/default.nix
@@ -1,27 +1,16 @@
-let
+{ configuration ? import (import ./lib/from-env.nix "NIXOS_CONFIG" /etc/nixos/configuration.nix)
+}:
 
-  fromEnv = name: default:
-    let env = builtins.getEnv name; in
-    if env == "" then default else env;
-    
-  configuration = import (fromEnv "NIXOS_CONFIG" /etc/nixos/configuration.nix);
+let
   
-  nixpkgs = fromEnv "NIXPKGS" /etc/nixos/nixpkgs;
-
-  pkgs = import nixpkgs {system = builtins.currentSystem;};
-
   inherit
-    (import ./lib/eval-config.nix {inherit configuration pkgs;})
-    config optionDeclarations;
+    (import ./lib/eval-config.nix {inherit configuration;})
+    config optionDeclarations pkgs;
 
 in
 
 {
-  # Optionally check wether all config values have corresponding
-  # option declarations.
-  system = pkgs.checker config.system.build.system
-    config.environment.checkConfigurationOptions
-    optionDeclarations config;
+  system = config.system.build.system;
 
   # The following are used by nixos-rebuild.
   nixFallback = pkgs.nixUnstable;
diff --git a/lib/eval-config.nix b/lib/eval-config.nix
index 872118754567..51cae554097a 100644
--- a/lib/eval-config.nix
+++ b/lib/eval-config.nix
@@ -2,9 +2,15 @@
 # configuration object (`config') from which we can retrieve option
 # values.
 
-{configuration, pkgs}:
+{ configuration
+, system ? builtins.currentSystem
+, nixpkgs ? import ./from-env.nix "NIXPKGS" /etc/nixos/nixpkgs
+, pkgs ? import nixpkgs {inherit system;}
+}:
 
 rec {
+  inherit nixpkgs pkgs;
+
   configComponents = [
     configuration
     {
@@ -19,7 +25,7 @@ rec {
     }
   ];
 
-  config =
+  config_ =
     pkgs.lib.fixOptionSets
       pkgs.lib.mergeOptionSets
       pkgs configComponents;
@@ -28,5 +34,11 @@ rec {
     pkgs.lib.fixOptionSetsFun
       pkgs.lib.filterOptionSets
       pkgs configComponents
-      config;
+      config_;
+      
+  # Optionally check wether all config values have corresponding
+  # option declarations.
+  config = pkgs.checker config_
+    config_.environment.checkConfigurationOptions
+    optionDeclarations config_;
 }
diff --git a/lib/from-env.nix b/lib/from-env.nix
new file mode 100644
index 000000000000..a7a339b5f2ec
--- /dev/null
+++ b/lib/from-env.nix
@@ -0,0 +1,3 @@
+name: default:
+let value = builtins.getEnv name; in
+if value == "" then default else value