oizys/lib/extended.nix

53 lines
1.1 KiB
Nix

final: prev:
let
inherit (final)
hasSuffix
mkEnableOption
mkIf
mkOption
types
;
in
rec {
enabled = {
enable = true;
};
disabled = {
enable = false;
};
# ["a" "b"] -> {a.enable = true; b.enable = true;}
enableAttrs =
attrs:
builtins.listToAttrs (
map (attr: {
name = attr;
value = enabled;
}) attrs
);
# ["a" "b"] -> {a.enable = false; b.enable = false;}
disableAttrs =
attrs:
builtins.listToAttrs (
map (attr: {
name = attr;
value = disabled;
}) attrs
);
isNixFile = path: hasSuffix ".nix" path;
mkIfIn = name: list: prev.mkIf (builtins.elem name list);
mkOizysModule = config: attr: content: {
options.oizys.${attr}.enable = mkEnableOption "enable ${attr} support";
config = mkIf config.oizys.${attr}.enable content;
};
mkDefaultOizysModule = config: attr: content: {
options.oizys.${attr}.enable = mkOption {
default = true;
description = "enable ${attr} support";
type = types.bool;
};
config = mkIf config.oizys.${attr}.enable content;
};
}