summaryrefslogtreecommitdiff
path: root/doctrine/lib/mk-module.nix
blob: c8b810d4ecffba9f29c1b359cc5fa3a428d98ea2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
{
  name,
  hm ? null,
  sys ? null,
  options ? null,
  lib,
  config,
  pkgs,
  doctrine,
}: let
  optionsSet = import options {
    inherit config lib pkgs cfg name doctrine;
  };

  configSet = import configFiles.${doctrine.namespace} {
    inherit config lib pkgs doctrine cfg;
  };

  configFiles = lib.filterAttrs (k: v: v != null) {
    inherit sys hm;
  };

  cfg = config.${doctrine.prefix}.${name};
in {
  config =
    lib.optionalAttrs (configFiles ? ${doctrine.namespace})
    (lib.mkIf cfg.enable configSet);

  options.${doctrine.prefix}.${name} =
    lib.optionalAttrs (options != null && optionsSet ? ${doctrine.namespace}) optionsSet.${doctrine.namespace}
    // {
      enable = lib.mkEnableOption name;
    };
}