mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
60 lines
1.6 KiB
Nix
60 lines
1.6 KiB
Nix
{ 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;
|
|
}
|