Commit graph

112 commits

Author SHA1 Message Date
arcnmx 92b464d57d lib/types: prioritise coercedType in coercedTo
This more intuitively matches `types.either` and allows paths to be
coerced to submodules again, which was inhibited by #76861
2020-01-14 09:30:53 -08:00
worldofpeace 265da70e58 lib/types: dont warn loaOf for home-manager namespace
This option namespace is not a part of NixOS
so we shouldn't provide this warning for it.
2020-01-12 15:14:08 -05:00
Jan Tojnar 61cf52bc17
Merge pull request #77501 from jtojnar/more-loaof-fxes
tree-wide: fix more warning related to loaOf deprecation
2020-01-12 18:47:34 +01:00
Robert Hensing 9884cb3ed0
Merge pull request #76861 from Infinisil/paths-as-submodules
lib/types: Allow paths as submodule values
2020-01-12 14:19:04 +01:00
Jan Tojnar 13633bd21a
lib/types: improve loaOf message even more
Now we suggest correct names for all options in Nixpkgs and also home-manager at the time of writing.
2020-01-11 15:02:57 +01:00
Jan Tojnar 6fc46fbb17
lib/types: only show ... in loaOf warning when necessary 2020-01-11 13:32:30 +01:00
Jan Tojnar b0c2c96cbe
lib/types: improve loaOf warning
Not all modules use name attribute as the name of the submodule, for example,
environment.etc uses target. We will need to maintain a list of exceptions.
2020-01-11 08:56:29 +01:00
Silvan Mosberger b48717d1eb
lib/types: Introduce lazyAttrsOf
The standard attrsOf is strict in its *values*, meaning it's impossible to
access only one attribute value without evaluating all others as well.
lazyAttrsOf is a version that doesn't have that problem, at the expense
of conditional definitions not properly working anymore.
2020-01-10 16:19:55 +01:00
Silvan Mosberger 4268b4f9cf
lib/types: Add emptyValue attribute to types
Co-Authored-By: Robert Hensing <roberth@users.noreply.github.com>
2020-01-10 16:19:54 +01:00
Silvan Mosberger 6525da6321
lib/types: Allow paths as submodule values 2020-01-08 23:54:45 +01:00
Silvan Mosberger 65872f407e
Merge pull request #77133 from Infinisil/fix-path-check
lib/types: Fix path type check
2020-01-07 16:43:50 +01:00
Silvan Mosberger d7a109b59f
lib/types: Fix path type check
Previously when this function was called without a value coercible to a
string it would throw an error instead of returning false. Now it does.

As a result this now allows the use of a type like `either path attrs`
without it erroring out when a definition is an attribute set.

The warning about there not being a isPath primop was removed because
this is not the case anymore, there is builtins.isPath. But also there
always was `builtins.typeOf x == "path"` that could've been used
instead. However the path type now stands for more than just path types,
but absolute paths in general.
2020-01-06 22:09:56 +01:00
rnhmjoj 03309899eb lib/types: warn loaOf is deprecated 2020-01-06 10:39:19 -05:00
Silvan Mosberger c7ade6844f
Revert "lib/types: Allow paths as submodule values"
This reverts commit eec83d41e3.

This broke hydra evaluation because with this commit submodule values
are allowed to be paths, however the certmgr module uses `either
(submodule ...) path` in its type, meaning it already used paths for
something else which would now be interpreted as a submodule.
2020-01-03 05:21:01 +01:00
Silvan Mosberger eec83d41e3
lib/types: Allow paths as submodule values 2020-01-02 09:59:35 +01:00
Silvan Mosberger 5002e6afbc
lib/types: Add types.submoduleWith for more flexibility than types.submodule 2020-01-01 01:13:01 +01:00
Vladimír Čunát f21211ebfe
Merge branch 'master' into staging 2019-09-02 23:25:24 +02:00
Silvan Mosberger 03391cd336
lib/types: Make usage of types.string emit a warning 2019-08-31 18:19:15 +02:00
volth 08f68313a4 treewide: remove redundant rec 2019-08-28 11:07:32 +00:00
volth 35d68ef143 treewide: remove redundant quotes 2019-08-26 21:40:19 +00:00
Aaron Andersen 6f6468bef3
Merge pull request #65728 from Infinisil/types-eithers
lib/types: Add oneOf, extension of either to a list of types
2019-08-13 11:48:42 -04:00
Silvan Mosberger 9a44f44d4c
lib/types: Add oneOf, extension of either to a list of types 2019-08-06 14:08:42 +02:00
danbst 795383204e lib/types: change merge strategy for str, int, float and enum
Change to `mergeEqualOption`.
2019-07-25 18:12:15 +03:00
Danylo Hlynskyi 60e8fcf0e5
module system: revert "remove types.optionSet", just deprecate (#56857)
The explicit remove helped to uncover some hidden uses of `optionSet`
in NixOps. However it makes life harder for end-users of NixOps - it will
be impossible to deploy 19.03 systems with old NixOps, but there is no
new release of NixOps with `optionSet` fixes.

Also, "deprecation" process isn't well defined. Even that `optionSet` was
declared "deprecated" for many years, it was never announced. Hence, I
leave "deprecation" announce. Then, 3 releases after announce,
we can announce removal of this feature.

This type has to be removed, not `throw`-ed in runtime, because it makes
some perfectly fine code to fail. For example:
```
$ nix-instantiate --eval -E '(import <nixpkgs/lib>).types' --strict
trace: `types.list` is deprecated; use `types.listOf` instead
error: types.optionSet is deprecated; use types.submodule instead
(use '--show-trace' to show detailed location information)
```
2019-03-07 21:28:09 +02:00
danbst 27982b408e types.optionSet: deprecate and remove last usages 2019-01-31 00:41:10 +02:00
danbst f32987d451 lib/types.nix: small eval optimization (listToAttrs + mapAttrsToList -> mapAttrs) 2019-01-30 15:26:44 +02:00
Daniel Rutz 161c0765ad Add type port as an alias to u16 2018-10-18 23:39:13 +02:00
Samuel Dionne-Riel 0808c7cd31 lib/types: enhances separatedString's description
The previous description "string" is misleading in the full options
manual pages; they are actually concatenated strings, with a specific
character.

The empty string version ("types.string") has been special-cased to
provide a better message.
2018-10-12 19:11:16 -04:00
Profpatsch efdf618330 lib: move assertMsg and assertOneOf to their own library file
Since the `assertOneOf` uses `lib.generators`, they are not really trivial
anymore and should go into their own library file.
2018-09-06 18:14:27 +02:00
Profpatsch 3e45b61a99 lib/trivial: add a few examples of usage of assertMsg/assertOneOf 2018-09-06 18:14:27 +02:00
volth 6d2857a311 [bot] treewide: remove unused 'inherit' in let blocks 2018-07-20 19:38:19 +00:00
volth 87f5930c3f [bot]: remove unreferenced code 2018-07-20 18:48:37 +00:00
Richard Marko 4a310a0404 lib: add float option type 2018-07-03 00:11:11 +02:00
Samuel Dionne-Riel 136f1c4706 doc: Fixes documented default option for <name> for submodules. (#40464)
Fixes #40463

This is related to change 1d56d0c8a7
2018-05-16 18:11:36 +02:00
Robert Helgesson 08e8701673
lib.types: fix loaOf behavior for long lists
Assigning a list of 10 or more elements to an option having the type
`loaOf a` produces a configuration value that is not honoring the
order of the original list. This commit fixes this and a related issue
arising when 10 or more lists are merged into this type of option.
2018-05-07 20:23:52 +02:00
Silvan Mosberger facd51575e lib/types: remove unnecessary coerceFunc assertion 2018-05-06 23:58:36 +02:00
Silvan Mosberger cd5736116c lib/types: clear up coercedTo description 2018-05-06 23:58:36 +02:00
Silvan Mosberger ef8996f15e lib/types: Fix coercedTo check
Without this change

  (coercedTo str toInt int).check "foo"

would evaluate to true, even though

  (coercedTo str toInt int).merge {} [{ value = "foo"; }]

will throw an error because "foo" can't be coerced to an int.
2018-05-06 23:58:36 +02:00
Robert Schütz c65e36c9ca lib/types: add types.nonEmptyListOf 2018-02-08 10:01:49 +01:00
Ryan Trinkle 83048c4fe0 nixpkgs.lib: Add types.strMatching 2017-12-02 13:28:00 -05:00
Tuomas Tynkkynen 8c190c3f7d lib/types.nix: Disable 32-bit integer types for now
This file doesn't evaluate in 32-bit versions of Nix because the integer
type is a signed 32-bit integer there, so 4294967296 causes an 'invalid
integer' error.  I see no other way around than commenting this out :(

(s32 could be made to work by tweaking the expressions a bit, but didn't
do that for now since it'd be asymmetric to have s32 but no u32).
2017-11-05 22:47:09 +02:00
Profpatsch 213bd2847b lib/types: fix up documentation formatting a bit 2017-11-05 15:56:32 +01:00
Profpatsch 462c048c77 lib/types: add ints.positive.
For values that are positive, but cannot be 0.
2017-11-05 15:56:32 +01:00
Profpatsch 1158910676 lib/types: match lowercase descriptions of other types 2017-11-05 15:56:32 +01:00
Profpatsch 77648da233 lib/types: signed -> s, unsigned -> u, remove signed alias
Mirrors the way it’s done in modern low-level languages like Rust (by input of
@nbp).
Removes the signed alias for int.
2017-11-05 15:56:32 +01:00
Profpatsch 7fcd3892a9 lib/types: remove port type again
Will be introduced as a taggedUnion, once that type is in nixpkgs.
2017-11-05 15:56:32 +01:00
Profpatsch c776489cac lib/types: add port type 2017-11-05 15:56:32 +01:00
Profpatsch 281d071b6a lib/types: add various signed/unsigned int types
It is sometimes necessary to restrict the domain of integers for configurations,
as well as restricting them to unsigned/positive values.
2017-11-05 15:56:32 +01:00
Profpatsch c53d874277 lib/types: add intBetween
An int type that checks the value range.
2017-11-05 15:56:32 +01:00
Nicolas B. Pierron 1d56d0c8a7 types.submodule: Fix the NixOS Manual, by escaping the <> symbols. 2017-10-30 17:52:00 +00:00