21 lines
502 B
Nix
21 lines
502 B
Nix
{
|
|
pkgs,
|
|
inputs,
|
|
predicate ? pkgs.lib.strings.hasPrefix "plugin-",
|
|
nameMap ? builtins.substring 7 (-1),
|
|
buildVimPlugin ? pkgs.vimUtils.buildVimPlugin,
|
|
}: let
|
|
inherit (builtins) attrNames filter foldl' mapAttrs;
|
|
names = filter predicate (attrNames inputs);
|
|
mkPlugin = m: k: let
|
|
name = nameMap k;
|
|
pluginDef = {
|
|
inherit name;
|
|
src = inputs.${k};
|
|
};
|
|
in
|
|
m // {${name} = pluginDef;};
|
|
plugins = foldl' mkPlugin {} names;
|
|
in
|
|
mapAttrs (_: buildVimPlugin) plugins
|