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"; }
"<?xml version='1.0' encoding='utf-8'?>\n<expr>\n <derivation>
<repeated />\n </derivation>\n</expr>\n"
nix-repl> builtins.toXML { type = "somethingelse"; foo = "bar"; }
"<?xml version='1.0' encoding='utf-8'?>\n<expr>\n <attrs>
<attr name=\"foo\">\n <string value=\"bar\" />\n </attr>
<attr name=\"type\">\n <string value=\"somethingelse\" />
</attr>\n </attrs>\n</expr>\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 <aszlig@redmoonstudios.org>
Reported-by: Profpatsch <mail@profpatsch.de>
This commit adds the firmware for the Intel 2200BG wireless cards for
the ipw2200 kernel module. Also it changes the
networking.enableIntel2200BGFirmware option to set it as
hardware.firmware since firmware-linux-nonfree does not contain the
appropiate firmware anymore. Also hardware.enableAllFirmware does enable
the intel2200BGFirmware now.
vcunat only fixed whitespace and changed the authorship e-mail
from dummy address you@example.com to the one recorded in maintainers.nix.
(Now github should recognize the commit as yours.)
The manuals are now evaluated with each derivation in `pkgs` (recursively)
replaced by a fake with path "\${pkgs.path.to.the.attribute}".
It isn't perfect, but it seems to cover a vast majority of use cases.
Caveat: even if the package is reached by a different means,
the path above will be shown and not e.g. `${config.services.foo.package}`.
As before, defaults created by `mkDefault` aren't displayed,
but documentation shouldn't (mostly) be a reason to use that anymore.
Note: t wouldn't be enough to just use `lib.mapAttrsRecursive`,
because derivations are also (special) attribute sets.