diff options
author | Benno Fünfstück <benno.fuenfstueck@gmail.com> | 2015-02-09 21:49:01 +0100 |
---|---|---|
committer | Benno Fünfstück <benno.fuenfstueck@gmail.com> | 2015-08-15 13:05:57 +0200 |
commit | 691f683c8c3e5423bfe39e3c12f5a325130ec014 (patch) | |
tree | 9b5d98f809c2a17f573201d25b162cf313137afe /lib/types.nix | |
parent | fd53387bbaffcab7b6a8db083a92220238a1ef38 (diff) |
types.nix: better error message for non-paths
This improves error messages when a set or a list is used where a path
was expected. For an example, if you used a package set (as opposed to a
single package) in systemPackages before this commit, the error was:
```
cannot coerce a list to a string, at "/home/nixpkgs/lib/types.nix":103:37
```
Now, the error message reads:
```
The option value `environment.systemPackages' in `/etc/nixos/configuration.nix' is not a list of paths.
```
Diffstat (limited to 'lib/types.nix')
-rw-r--r-- | lib/types.nix | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/types.nix b/lib/types.nix index a7f9bf1946e6..27b653ebb6c7 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -103,7 +103,8 @@ rec { path = mkOptionType { name = "path"; # Hacky: there is no ‘isPath’ primop. - check = x: builtins.substring 0 1 (toString x) == "/"; + # need to check isString first because otherwise toString throws an error. + check = x: builtins.isString x && builtins.substring 0 1 (toString x) == "/"; merge = mergeOneOption; }; |