mkPackageOptionMD
lib.options.mkPackageOptionMD
Docs pulled from | This Revision | 10 minutes ago
Deprecated alias of mkPackageOption, to be removed in 25.05.
Previously used to create options with markdown documentation, which is no longer required.
Noogle detected
Implementation
The following is the current implementation of this function.
mkPackageOption =
pkgs: name:
{
nullable ? false,
default ? name,
example ? null,
extraDescription ? "",
pkgsText ? "pkgs",
}:
let
name' = if isList name then last name else name;
default' = toList default;
defaultText = showAttrPath default';
defaultValue = attrByPath default' (throw "${defaultText} cannot be found in ${pkgsText}") pkgs;
defaults =
if default != null then
{
default = defaultValue;
defaultText = literalExpression "${pkgsText}.${defaultText}";
}
else
optionalAttrs nullable {
default = null;
};
in
mkOption (
defaults
// {
description =
"The ${name'} package to use." + (if extraDescription == "" then "" else " ") + extraDescription;
type = with lib.types; (if nullable then nullOr else lib.id) package;
}
// optionalAttrs (example != null) {
example = literalExpression (
if isList example then "${pkgsText}.${showAttrPath example}" else example
);
}
);