summaryrefslogtreecommitdiffstats
path: root/nixos/lib/eval-config.nix
diff options
context:
space:
mode:
authorThomas Strobel <ts468@cam.ac.uk>2016-02-20 01:47:01 +0100
committerThomas Strobel <ts468@cam.ac.uk>2016-02-29 01:09:00 +0100
commitcad8957eabcbf73062226d28366fd446c15c8737 (patch)
tree0299e96391c14f612e7bd1cf3b2274198425fd61 /nixos/lib/eval-config.nix
parentc483224c82c8e94324c03576e64c5dfbf16bd2f8 (diff)
Add the tool "nixos-typecheck" that can check an option declaration to:
- Enforce that an option declaration has a "defaultText" if and only if the type of the option derives from "package", "packageSet" or "nixpkgsConfig" and if a "default" attribute is defined. - Enforce that the value of the "example" attribute is wrapped with "literalExample" if the type of the option derives from "package", "packageSet" or "nixpkgsConfig". - Warn if a "defaultText" is defined in an option declaration if the type of the option does not derive from "package", "packageSet" or "nixpkgsConfig". - Warn if no "type" is defined in an option declaration.
Diffstat (limited to 'nixos/lib/eval-config.nix')
-rw-r--r--nixos/lib/eval-config.nix15
1 files changed, 12 insertions, 3 deletions
diff --git a/nixos/lib/eval-config.nix b/nixos/lib/eval-config.nix
index a87b285c5b7b..79890e0add7d 100644
--- a/nixos/lib/eval-config.nix
+++ b/nixos/lib/eval-config.nix
@@ -20,8 +20,13 @@
, # !!! See comment about args in lib/modules.nix
specialArgs ? {}
, modules
+, # Pass through a configuration of the internal modules declared
+ # in lib/modules.nix.
+ _module ? {}
+, # !!! See comment about typeInference in lib/modules.nix
+ typeInference ? null
, # !!! See comment about check in lib/modules.nix
- check ? true
+ check ? null
, prefix ? []
, lib ? import ../../lib
}:
@@ -41,13 +46,17 @@ let
};
};
+ internalModule = { _module = (_module
+ // (if isNull check then {} else { inherit check; })
+ // (if isNull typeInference then {} else { inherit typeInference; })); };
+
in rec {
# Merge the option definitions in all modules, forming the full
# system configuration.
inherit (lib.evalModules {
- inherit prefix check;
- modules = modules ++ extraModules ++ baseModules ++ [ pkgsModule ];
+ inherit prefix;
+ modules = modules ++ extraModules ++ baseModules ++ [ pkgsModule ] ++ [ internalModule ];
args = extraArgs;
specialArgs = { modulesPath = ../modules; } // specialArgs;
}) config options;