modules/performance: handle python3 dependencies when combining plugins

This commit is contained in:
Stanislav Asunkin 2024-07-14 11:38:41 +03:00 committed by traxys
parent fdb3950c59
commit f900dcd6aa
2 changed files with 37 additions and 0 deletions

View file

@ -95,6 +95,13 @@ in
}) })
) allPlugins; ) allPlugins;
# Python3 dependencies from all plugins
python3Dependencies =
let
deps = map (p: p.python3Dependencies or (_: [ ])) allPluginsOverrided;
in
ps: builtins.concatMap (f: f ps) deps;
# Combine all plugins into a single pack # Combine all plugins into a single pack
pluginPack = pkgs.vimUtils.toVimPlugin ( pluginPack = pkgs.vimUtils.toVimPlugin (
pkgs.buildEnv { pkgs.buildEnv {
@ -106,6 +113,9 @@ in
find $out -type d -empty -delete find $out -type d -empty -delete
runHook preFixup runHook preFixup
''; '';
passthru = {
inherit python3Dependencies;
};
} }
); );

View file

@ -102,4 +102,31 @@
} }
]; ];
}; };
# Test that plugin python3 dependencies are handled
python-dependencies.module =
{ config, ... }:
{
performance.combinePlugins.enable = true;
extraPlugins = with pkgs.vimPlugins; [
# No python3 dependencies
plenary-nvim
# Duplicate python3 dependencies
(nvim-lspconfig.overrideAttrs { passthru.python3Dependencies = ps: [ ps.pyyaml ]; })
(nvim-treesitter.overrideAttrs { passthru.python3Dependencies = ps: [ ps.pyyaml ]; })
# Another python3 dependency
(nvim-cmp.overrideAttrs { passthru.python3Dependencies = ps: [ ps.requests ]; })
];
extraConfigLuaPost = ''
-- Python modules are importable
vim.cmd.py3("import yaml")
vim.cmd.py3("import requests")
'';
assertions = [
{
assertion = builtins.length config.finalPackage.packpathDirs.myNeovimPackages.start == 1;
message = "More than one plugin is defined in packpathDirs.";
}
];
};
} }