mirror of
https://github.com/daylinmorgan/oizys.git
synced 2024-12-27 14:10:45 -06:00
53 lines
1.1 KiB
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;
|
|
};
|
|
}
|