{ modules, ... }: { _module.args = { modules = pkgs: let nixpkgsMaintainersList = pkgs.path + "/nixos/modules/misc/meta.nix"; nixvimExtraArgsModule = rec { _file = ./flake.nix; key = _file; config = { _module.args = { pkgs = pkgs.lib.mkForce pkgs; inherit (pkgs) lib; }; }; }; in [ ../modules nixpkgsMaintainersList nixvimExtraArgsModule ( { lib, ... }: with lib; { # Attribute may contain the following fields: # - name: Name of the module # - kind: Either colorschemes or plugins # - description: A short description of the plugin # - url: Url for the plugin # # [kind name] will identify the plugin # # We need to use an attrs instead of a submodule to handle the merge. options.meta.nixvimInfo = mkOption { type = (types.nullOr types.attrs) // { # This will create an attrset of the form: # { # "path"."to"."plugin" = { "" = ; }; # } # # Where is an attrset of the form: # { # file = "path"; # description = null or ""; # url = null or ""; # } merge = _: defs: lib.foldl' ( acc: def: lib.recursiveUpdate acc { "${def.value.kind}"."${def.value.name}" = { inherit (def.value) url description; inherit (def) file; }; } ) { plugins = { }; colorschemes = { }; } defs; }; internal = true; default = null; description = '' Nixvim related information on the module ''; }; } ) ]; }; perSystem = { pkgs, config, ... }: { _module.args = { modules = modules pkgs; rawModules = modules; }; }; }