From 98faa0c8f3d22ad168b979edb7f92212ab710369 Mon Sep 17 00:00:00 2001 From: aszlig Date: Wed, 17 Feb 2016 20:24:22 +0100 Subject: [PATCH] lib/types: Set name of types.package to "package" Nobody seems to have noticed this (except @Profpatsch) that options with a "package" type do not get included in the manual. So debugging this was a bit more involving because while generating the manual there is an optionList' attribute built from the collected attributes of all the option declarations. Up to that point everything is fine except if it comes to builtins.toXML, where attributes with { type = "derivation" } won't get included, for example see here: nix-repl> builtins.toXML { type = "derivation"; foo = "bar"; } "\n\n \n \n\n" nix-repl> builtins.toXML { type = "somethingelse"; foo = "bar"; } "\n\n \n \n \n \n \n\n" The following function in libexpr/eval.cc (Nix) is responsible for toXML dropping the attributes: bool EvalState::isDerivation(Value & v) { if (v.type != tAttrs) return false; Bindings::iterator i = v.attrs->find(sType); if (i == v.attrs->end()) return false; forceValue(*i->value); if (i->value->type != tString) return false; return strcmp(i->value->string.s, "derivation") == 0; } So I've renamed this now to "package" which is not only more consistent with the option type but also shouldn't cause similar issues anymore. Tested this on base of b60ceea, because building the dependencies on recent libc/staging changes on master took too long. Signed-off-by: aszlig Reported-by: Profpatsch --- lib/types.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/types.nix b/lib/types.nix index b833417e73d..b4d29ac84d2 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -93,7 +93,7 @@ rec { # derivation is a reserved keyword. package = mkOptionType { - name = "derivation"; + name = "package"; check = x: isDerivation x || isStorePath x; merge = loc: defs: let res = mergeOneOption loc defs;