summaryrefslogtreecommitdiffstats
path: root/lib/default.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-28 00:56:22 +0100
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-28 22:45:55 +0100
commit0e333688cea468a28516bf6935648c03ed62a7bb (patch)
tree06657556c1e80363a51010d546cac68b98fde90a /lib/default.nix
parentf4dadc5df8561405df9aabf4fa2c2dcd13234b22 (diff)
Big cleanup of the NixOS module system
The major changes are: * The evaluation is now driven by the declared options. In particular, this fixes the long-standing problem with lack of laziness of disabled option definitions. Thus, a configuration like config = mkIf false { environment.systemPackages = throw "bla"; }; will now evaluate without throwing an error. This also improves performance since we're not evaluating unused option definitions. * The implementation of properties is greatly simplified. * There is a new type constructor "submodule" that replaces "optionSet". Unlike "optionSet", "submodule" gets its option declarations as an argument, making it more like "listOf" and other type constructors. A typical use is: foo = mkOption { type = type.attrsOf (type.submodule ( { config, ... }: { bar = mkOption { ... }; xyzzy = mkOption { ... }; })); }; Existing uses of "optionSet" are automatically mapped to "submodule". * Modules are now checked for unsupported attributes: you get an error if a module contains an attribute other than "config", "options" or "imports". * The new implementation is faster and uses much less memory.
Diffstat (limited to 'lib/default.nix')
-rw-r--r--lib/default.nix5
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/default.nix b/lib/default.nix
index 033269e6b609..fc92e04503b2 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -8,7 +8,6 @@ let
sources = import ./sources.nix;
modules = import ./modules.nix;
options = import ./options.nix;
- properties = import ./properties.nix;
types = import ./types.nix;
meta = import ./meta.nix;
debug = import ./debug.nix;
@@ -21,13 +20,13 @@ let
in
{ inherit trivial lists strings stringsWithDeps attrsets sources options
- properties modules types meta debug maintainers licenses platforms systems;
+ modules types meta debug maintainers licenses platforms systems;
# Pull in some builtins not included elsewhere.
inherit (builtins) pathExists readFile;
}
# !!! don't include everything at top-level; perhaps only the most
# commonly used functions.
// trivial // lists // strings // stringsWithDeps // attrsets // sources
- // properties // options // types // meta // debug // misc // modules
+ // options // types // meta // debug // misc // modules
// systems
// customisation