summary refs log tree commit diff
path: root/lib/types.nix
Commit message (Collapse)AuthorAge
* Revert "Add nixosSubmodule option type"Shea Levy2014-02-13
| | | | | | Moving recent types work to a separate branch for now This reverts commit ca1c5cfa8fff055c74786dbe0d2ca889ae462365.
* Revert "Add option type for a submodule with extra arguments"Shea Levy2014-02-13
| | | | | | Moving recent types work to a separate branch for now This reverts commit 8764758044b0425de54228d87cc68a4ed6d4d414.
* Revert "Add heterogeneousAttrsOf option type"Shea Levy2014-02-13
| | | | | | Moving recent types work to a separate branch for now This reverts commit 3f70dabad320b115d586a59db8cca05c7f3b7c75.
* Add heterogeneousAttrsOf option typeShea Levy2014-02-11
| | | | | | It is parameterized by a function that takes a name and evaluates to the option type for the attribute of that name. Together with submoduleWithExtraArgs, this subsumes nixosSubmodule.
* Add option type for a submodule with extra argumentsShea Levy2014-02-11
|
* Add nixosSubmodule option typeShea Levy2014-02-11
| | | | Since NixOS modules expect special arguments, use a hack to provide them
* Try to improve naming of list elements in loaOf typesShea Levy2014-02-08
| | | | Signed-off-by: Shea Levy <shea@shealevy.com>
* Add some primops to libEelco Dolstra2013-11-12
|
* Fix backward compatibility with Nix < 1.6Eelco Dolstra2013-10-30
| | | | | "with" used to be less lazy, so don't rely on that. Also don't use the "<" operator.
* Strictly check the arguments to mkOptionEelco Dolstra2013-10-30
| | | | And fix various instances of bad arguments.
* Show correct position info for errors in submodulesEelco Dolstra2013-10-30
| | | | | | | | E.g. The unique option `fileSystems./.device' is defined multiple times, in `/etc/nixos/configuration.nix' and `/etc/nixos/foo.nix'. This requires passing file/value tuples to the merge functions.
* Add option type "str" for unique stringsEelco Dolstra2013-10-29
| | | | | | | | | | | | | | | An annoying and dangerous property of "types.string" is that it merges multiple definitions by concatenating them, which almost never produces a sensible result. (Those options for which it does make sense typically should use "types.lines" instead, and things only work because the option definitions already end in a newline.) Of course, you can use "types.uniq types.string", but that's rather verbose, and inconsistent with other basic types like "types.int". Changing the behaviour of "types.string" to be unique by default is not an option, given the large number of options that use it. So instead, we now have "types.str", which is equivalent to "types.uniq types.string".
* Show precise error messages in option merge failuresEelco Dolstra2013-10-28
| | | | | | | | | | | | | | For instance, if time.timeZone is defined multiple times, you now get the error message: error: user-thrown exception: The unique option `time.timeZone' is defined multiple times, in `/etc/nixos/configurations/misc/eelco/x11vnc.nix' and `/etc/nixos/configuration.nix'. while previously you got: error: user-thrown exception: Multiple definitions of string. Only one is allowed for this option. and only an inspection of the stack trace gave a clue as to what option caused the problem.
* Remove uses of the "merge" option attributeEelco Dolstra2013-10-28
| | | | | It's redundant because you can (and should) specify an option type, or an apply function.
* Check for undeclared optionsEelco Dolstra2013-10-28
|
* Show error locations in submodulesEelco Dolstra2013-10-28
|
* Fix manual generationEelco Dolstra2013-10-28
|
* Inline some functions on the critical pathEelco Dolstra2013-10-28
|
* Use isType instead of typeOfEelco Dolstra2013-10-28
|
* Big cleanup of the NixOS module systemEelco Dolstra2013-10-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Move pkgs/lib/ to lib/Eelco Dolstra2013-10-10