mirror of
https://github.com/zoriya/flake.git
synced 2026-06-01 18:26:18 +00:00
88 lines
2.1 KiB
Nix
88 lines
2.1 KiB
Nix
{
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}: {
|
|
packPlugins = plugins: let
|
|
# Set option value with default priority so that values are appended by default
|
|
pathsToLink = [
|
|
# :h rtp
|
|
"/autoload"
|
|
"/colors"
|
|
"/compiler"
|
|
"/doc"
|
|
"/ftplugin"
|
|
"/indent"
|
|
"/keymap"
|
|
"/lang"
|
|
"/lua"
|
|
"/lsp"
|
|
"/pack"
|
|
"/parser"
|
|
"/plugin"
|
|
"/queries"
|
|
"/rplugin"
|
|
"/spell"
|
|
"/syntax"
|
|
"/tutor"
|
|
"/after"
|
|
"/ftdetect"
|
|
# plenary.nvim
|
|
"/data/plenary/filetypes"
|
|
# telescope fzf
|
|
"/build"
|
|
# blink
|
|
"/target"
|
|
];
|
|
|
|
# Every plugin has its own generated help tags (doc/tags)
|
|
# Remove them to avoid collisions, new help tags
|
|
# will be generate for the entire pack later on
|
|
overriddenPlugins =
|
|
map (
|
|
plugin:
|
|
plugin.plugin.overrideAttrs (prev: {
|
|
nativeBuildInputs = lib.remove pkgs.vimUtils.vimGenDocHook prev.nativeBuildInputs or [];
|
|
configurePhase = ''
|
|
${prev.configurePhase or ""}
|
|
rm -vf doc/tags'';
|
|
})
|
|
)
|
|
plugins;
|
|
|
|
# Python3 dependencies
|
|
python3Dependencies = let
|
|
deps = map (p: p.plugin.python3Dependencies or (_: [])) plugins;
|
|
in
|
|
ps: builtins.concatMap (f: f ps) deps;
|
|
|
|
# Combined plugin
|
|
combinedPlugin = (pkgs.vimUtils.toVimPlugin (
|
|
pkgs.buildEnv {
|
|
name = "plugin-pack";
|
|
paths = overriddenPlugins;
|
|
inherit pathsToLink;
|
|
# Remove empty directories and activate vimGenDocHook
|
|
postBuild = ''
|
|
find $out -type d -empty -delete
|
|
runHook preFixup
|
|
'';
|
|
passthru = {
|
|
inherit python3Dependencies;
|
|
};
|
|
}
|
|
)).overrideAttrs (prev: {
|
|
pname = prev.pname or "vimplugin-plugin-pack";
|
|
});
|
|
|
|
# Combined plugin configs
|
|
combinedConfig = builtins.concatStringsSep "\n" (
|
|
builtins.concatMap (x: lib.optional (x.config != null && x.config != "") x.config) plugins
|
|
);
|
|
in {
|
|
plugin = combinedPlugin;
|
|
config = combinedConfig;
|
|
optional = false;
|
|
};
|
|
}
|