diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-10-28 00:56:22 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-10-28 22:45:55 +0100 |
commit | 0e333688cea468a28516bf6935648c03ed62a7bb (patch) | |
tree | 06657556c1e80363a51010d546cac68b98fde90a /lib/lists.nix | |
parent | f4dadc5df8561405df9aabf4fa2c2dcd13234b22 (diff) | |
download | nixpkgs-0e333688cea468a28516bf6935648c03ed62a7bb.tar nixpkgs-0e333688cea468a28516bf6935648c03ed62a7bb.tar.gz nixpkgs-0e333688cea468a28516bf6935648c03ed62a7bb.tar.bz2 nixpkgs-0e333688cea468a28516bf6935648c03ed62a7bb.tar.lz nixpkgs-0e333688cea468a28516bf6935648c03ed62a7bb.tar.xz nixpkgs-0e333688cea468a28516bf6935648c03ed62a7bb.tar.zst nixpkgs-0e333688cea468a28516bf6935648c03ed62a7bb.zip |
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/lists.nix')
-rw-r--r-- | lib/lists.nix | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/lists.nix b/lib/lists.nix index 262a529b2b6..eb7e6baf5ed 100644 --- a/lib/lists.nix +++ b/lib/lists.nix @@ -165,10 +165,11 @@ in rec { zipLists = zipListsWith (fst: snd: { inherit fst snd; }); - - # Reverse the order of the elements of a list. + + # Reverse the order of the elements of a list. FIXME: O(n^2)! reverseList = fold (e: acc: acc ++ [ e ]) []; + # Sort a list based on a comparator function which compares two # elements and returns true if the first argument is strictly below # the second argument. The returned list is sorted in an increasing |