1{
2 config,
3 lib,
4 flakelight,
5 moduleArgs,
6 ...
7}: let
8 inherit (lib) mkOption mkIf mkMerge;
9 inherit (lib.types) lazyAttrsOf;
10 inherit (flakelight.types) module nullable optCallWith;
11in {
12 options = {
13 devenvModule = mkOption {
14 type = nullable module;
15 default = null;
16 description = "Default devenv module to export";
17 };
18
19 devenvModules = mkOption {
20 type = optCallWith moduleArgs (lazyAttrsOf module);
21 default = {};
22 description = "Devenv modules to export";
23 };
24 };
25
26 config = mkMerge [
27 (mkIf (config.devenvModule != null) {
28 devenvModules.default = config.devenvModule;
29 })
30
31 (mkIf (config.devenvModules != {}) {
32 outputs = {inherit (config) devenvModules;};
33 })
34
35 {nixDirPathAttrs = ["devenvModules"];}
36 ];
37}