From 214d4fb73cd5c2aab6718a38b35c8b5217f0f200 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 6 Aug 2015 19:55:42 +0200 Subject: 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. --- lib/types.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'lib/types.nix') diff --git a/lib/types.nix b/lib/types.nix index 49f24b022de..a7f9bf1946e 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -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; }; -- cgit 1.4.1