nix-community.nixvim/modules/top-level/plugins/mk-plugin-pack.nix

61 lines
1.6 KiB
Nix
Raw Normal View History

{ lib, pkgs }:
let
inherit (import ./utils.nix lib) normalizePlugin;
in
{ pluginsToCombine, pathsToLink }:
let
overridePlugin =
plugin:
plugin.plugin.overrideAttrs (prev: {
nativeBuildInputs = lib.remove pkgs.vimUtils.vimGenDocHook prev.nativeBuildInputs or [ ];
configurePhase = ''
${prev.configurePhase or ""}
rm -vf doc/tags'';
});
# 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 overridePlugin pluginsToCombine;
# Gather python 3 dependencies from every plugins
python3Dependencies =
ps:
lib.pipe pluginsToCombine [
(builtins.catAttrs "plugin")
(builtins.catAttrs "python3Dependencies")
(builtins.concatMap (f: f ps))
];
# Combined plugin
combinedPlugin = pkgs.vimUtils.toVimPlugin (
pkgs.buildEnv {
name = "plugin-pack";
paths = overriddenPlugins;
inherit pathsToLink;
# Remove empty directories and activate vimGenDocHook
# TODO: figure out why we are running the `preFixup` hook in `postBuild`
postBuild = ''
find $out -type d -empty -delete
runHook preFixup
'';
passthru = {
inherit python3Dependencies;
};
}
);
# Combined plugin configs
combinedConfig = lib.pipe pluginsToCombine [
(builtins.catAttrs "config")
(builtins.filter (config: config != null && config != ""))
(builtins.concatStringsSep "\n")
];
in
normalizePlugin {
plugin = combinedPlugin;
config = combinedConfig;
}