summaryrefslogtreecommitdiff
path: root/doctrine
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--doctrine/lib/mk-module.nix22
1 files changed, 17 insertions, 5 deletions
diff --git a/doctrine/lib/mk-module.nix b/doctrine/lib/mk-module.nix
index c8b810d..fa1cd37 100644
--- a/doctrine/lib/mk-module.nix
+++ b/doctrine/lib/mk-module.nix
@@ -1,12 +1,14 @@
{
+ # The first few arguments are implicitly passed by the 'close' helper
+ lib,
+ pkgs,
+ doctrine,
name,
+ config,
hm ? null,
sys ? null,
options ? null,
- lib,
- config,
- pkgs,
- doctrine,
+ requires ? [],
}: let
optionsSet = import options {
inherit config lib pkgs cfg name doctrine;
@@ -24,7 +26,17 @@
in {
config =
lib.optionalAttrs (configFiles ? ${doctrine.namespace})
- (lib.mkIf cfg.enable configSet);
+ (lib.mkIf cfg.enable (lib.mkMerge [
+ configSet
+ {
+ assertions =
+ map (dependency: {
+ assertion = cfg.enable -> config.${doctrine.prefix}.${dependency}.enable;
+ message = "${doctrine.prefix}.${name}.enable requires ${doctrine.prefix}.${dependency}.enable";
+ })
+ requires;
+ }
+ ]));
options.${doctrine.prefix}.${name} =
lib.optionalAttrs (options != null && optionsSet ? ${doctrine.namespace}) optionsSet.${doctrine.namespace}