From 312101337646c68c837fc9222ac273386cd4108c Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Wed, 6 Aug 2025 14:23:00 -0600 Subject: [PATCH] doctrine/lib: support module dependencies --- doctrine/lib/mk-module.nix | 22 +++++++++++++++++----- 1 file 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}