0e333688ce
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.
32 lines
1.1 KiB
Nix
32 lines
1.1 KiB
Nix
let
|
|
|
|
trivial = import ./trivial.nix;
|
|
lists = import ./lists.nix;
|
|
strings = import ./strings.nix;
|
|
stringsWithDeps = import ./strings-with-deps.nix;
|
|
attrsets = import ./attrsets.nix;
|
|
sources = import ./sources.nix;
|
|
modules = import ./modules.nix;
|
|
options = import ./options.nix;
|
|
types = import ./types.nix;
|
|
meta = import ./meta.nix;
|
|
debug = import ./debug.nix;
|
|
misc = import ./misc.nix;
|
|
maintainers = import ./maintainers.nix;
|
|
platforms = import ./platforms.nix;
|
|
systems = import ./systems.nix;
|
|
customisation = import ./customisation.nix;
|
|
licenses = import ./licenses.nix;
|
|
|
|
in
|
|
{ inherit trivial lists strings stringsWithDeps attrsets sources options
|
|
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
|
|
// options // types // meta // debug // misc // modules
|
|
// systems
|
|
// customisation
|