summaryrefslogtreecommitdiffstats
path: root/nixos/lib
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-01 20:47:08 +0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-01 20:52:06 +0100
commitf3d94cfc23a2787772a369e2ca9e0cd94e72b8b3 (patch)
tree2501bf5c09108c836925aefc4674ebec0b508193 /nixos/lib
parentbf4cafd1ddbd7c396a9df6a5d0fb02f2b7d21896 (diff)
Revert "Add the tool "nixos-typecheck" that can check an option declaration to:"
This reverts commit cad8957eabcbf73062226d28366fd446c15c8737. It breaks NixOps, but more importantly, such major changes to the module system really need to be reviewed.
Diffstat (limited to 'nixos/lib')
-rw-r--r--nixos/lib/eval-config.nix15
-rw-r--r--nixos/lib/typechecker.nix91
2 files changed, 3 insertions, 103 deletions
diff --git a/nixos/lib/eval-config.nix b/nixos/lib/eval-config.nix
index 79890e0add7d..a87b285c5b7b 100644
--- a/nixos/lib/eval-config.nix
+++ b/nixos/lib/eval-config.nix
@@ -20,13 +20,8 @@
, # !!! 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 ? null
+ check ? true
, prefix ? []
, lib ? import ../../lib
}:
@@ -46,17 +41,13 @@ 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;
- modules = modules ++ extraModules ++ baseModules ++ [ pkgsModule ] ++ [ internalModule ];
+ inherit prefix check;
+ modules = modules ++ extraModules ++ baseModules ++ [ pkgsModule ];
args = extraArgs;
specialArgs = { modulesPath = ../modules; } // specialArgs;
}) config options;
diff --git a/nixos/lib/typechecker.nix b/nixos/lib/typechecker.nix
deleted file mode 100644
index b4d8277f8fe9..000000000000
--- a/nixos/lib/typechecker.nix
+++ /dev/null
@@ -1,91 +0,0 @@
-{ config, lib, pkgs, baseModules, ... }:
-
-with pkgs;
-with pkgs.lib;
-
-let
-
- optionsSpecs = inferenceMode:
- let
- versionModule =
- { system.nixosVersionSuffix = config.system.nixosVersionSuffix;
- system.nixosRevision = config.system.nixosRevision;
- nixpkgs.system = config.nixpkgs.system;
- };
-
- internalModule = { _module = config._module; } // (if isNull inferenceMode then {} else { _module.typeInference = mkForce inferenceMode; });
-
- eval = evalModules {
- modules = [ versionModule ] ++ baseModules ++ [ internalModule ];
- args = (config._module.args) // { modules = [ ]; };
- };
-
- # Remove invisible and internal options.
- optionsSpecs' = filter (opt: opt.visible && !opt.internal) (optionAttrSetToParseableSpecifications config._module eval.options);
-
- # INFO: Please add 'defaultText' or 'literalExample' to the option
- # definition to avoid this exception!
- substFunction = key: decls: x:
- if builtins.isAttrs x then mapAttrs (name: substFunction key decls) x
- else if builtins.isList x then map (substFunction key decls) x
- else if builtins.isFunction x then throw "Found an unexpected <function> in ${key} declared in ${concatStringsSep " and " decls}."
- else x;
-
- prefix = toString ../..;
-
- stripPrefix = fn:
- if substring 0 (stringLength prefix) fn == prefix then
- substring (stringLength prefix + 1) 1000 fn
- else
- fn;
-
- # Clean up declaration sites to not refer to the NixOS source tree.
- cleanupOptions = x: flip map x (opt:
- let substFunction' = y: substFunction opt.name opt.declarations y;
- in opt
- // { declarations = map (fn: stripPrefix fn) opt.declarations; }
- // optionalAttrs (opt ? example) { example = substFunction' opt.example; }
- // optionalAttrs (opt ? default) { default = substFunction' opt.default; }
- // optionalAttrs (opt ? type) { type = substFunction' opt.type; });
-
- in
- cleanupOptions optionsSpecs';
-
-in
-
-{
-
- system.build.typechecker = {
-
- # The NixOS options as machine readable specifications in JSON format.
- specifications = stdenv.mkDerivation {
- name = "options-specs-json";
-
- buildCommand = ''
- # Export list of options in different format.
- dst=$out/share/doc/nixos
- mkdir -p $dst
-
- cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON
- (listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) (optionsSpecs null)))))
- } $dst/options-specs.json
-
- mkdir -p $out/nix-support
- echo "file json $dst/options-specs.json" >> $out/nix-support/hydra-build-products
- ''; # */
-
- meta.description = "List of NixOS options specifications in JSON format";
- };
-
- silent = listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) (optionsSpecs "silent"));
- printAll = listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) (optionsSpecs "printAll"));
- printUnspecified = listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) (optionsSpecs "printUnspecified"));
-
- };
-
-}
-
-
-
-
-