configuration.nix/modules/lib.nix
Jalil David Salamé Messina f9eb730fe7
Some checks failed
/ check (push) Failing after 4s
/ check-renovaterc (push) Successful in 2s
/ build-packages (push) Has been skipped
/ build-vm (push) Has been skipped
/ report-size (push) Has been skipped
refactor(modules/lib): move more options to it
This should keep all my custom options in the same place.
2025-04-21 23:10:57 +02:00

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 "![${description}](${url})";
};
# 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 = [ ];
};
}