47 lines
1.2 KiB
Nix
47 lines
1.2 KiB
Nix
{ lib }:
|
|
{
|
|
# Like mkEnableOption but defaults to true
|
|
mkDisableOption =
|
|
option:
|
|
(lib.mkEnableOption option)
|
|
// {
|
|
default = true;
|
|
example = false;
|
|
};
|
|
# A option that accepts an image (and shows it in the docs)
|
|
mkImageOption =
|
|
{
|
|
description,
|
|
url,
|
|
sha256 ? "",
|
|
}:
|
|
lib.mkOption {
|
|
inherit description;
|
|
type = lib.types.path;
|
|
default = builtins.fetchurl { inherit url sha256; };
|
|
defaultText = lib.literalMD "";
|
|
};
|
|
# Like `lib.mkEnableOption` but default to disabled
|
|
mkDisableOption =
|
|
desc:
|
|
lib.mkEnableOption desc
|
|
// {
|
|
default = true;
|
|
example = false;
|
|
};
|
|
# Like `lib.mkPackageOption` but for a list of packages.
|
|
mkExtraPackagesOption =
|
|
name: defaultPkgsPath:
|
|
let
|
|
text = lib.strings.concatMapStringsSep " " (
|
|
pkgPath: "pkgs." + (lib.strings.concatStringsSep "." pkgPath)
|
|
) defaultPkgsPath;
|
|
in
|
|
lib.mkOption {
|
|
description = "Extra ${name} Packages.";
|
|
type = lib.types.listOf lib.types.package;
|
|
default = builtins.map (pkgPath: lib.attrsets.getAttrFromPath pkgPath pkgs) defaultPkgsPath;
|
|
defaultText = lib.literalExpression "[ ${text} ]";
|
|
example = [ ];
|
|
};
|
|
}
|