Allow options with type "package" to be store paths

For example, this allows writing

  nix.package = /nix/store/786mlvhd17xvcp2r4jmmay6jj4wj6b7f-nix-1.10pre4206_896428c;

Also, document types.package in the manual.
This commit is contained in:
Eelco Dolstra
2015-08-07 03:09:57 +02:00
parent fa7a0f24a4
commit 214d4fb73c
4 changed files with 30 additions and 4 deletions
+5 -3
View File
@@ -94,14 +94,16 @@ rec {
# derivation is a reserved keyword.
package = mkOptionType {
name = "derivation";
check = isDerivation;
merge = mergeOneOption;
check = x: isDerivation x || isStorePath x;
merge = loc: defs:
let res = mergeOneOption loc defs;
in if isDerivation res then res else toDerivation res;
};
path = mkOptionType {
name = "path";
# Hacky: there is no isPath primop.
check = x: builtins.unsafeDiscardStringContext (builtins.substring 0 1 (toString x)) == "/";
check = x: builtins.substring 0 1 (toString x) == "/";
merge = mergeOneOption;
};