diff --git a/pkgs/applications/editors/neovim/module.nix b/pkgs/applications/editors/neovim/module.nix index 258352c4e41b..5a9ca56afb56 100644 --- a/pkgs/applications/editors/neovim/module.nix +++ b/pkgs/applications/editors/neovim/module.nix @@ -93,6 +93,14 @@ in ''; }; + luaDependencies = lib.mkOption { + readOnly = true; + type = lib.types.listOf (lib.types.nullOr lib.types.package); + example = lib.literalExpression "[ (lp: [ lp.mpack ]) ]"; + description = '' + Lua dependencies required by the plugins. + ''; + }; }; config = @@ -122,5 +130,11 @@ in ) [ ] pluginsNormalized; pluginPython3Packages = map (plugin: plugin.python3Dependencies or (_: [ ])) pluginsNormalized; + + luaDependencies = + let + op = acc: p: acc ++ (p.plugin.requiredLuaModules or [ ]); + in + lib.foldl' op [ ] pluginsNormalized; }; } diff --git a/pkgs/applications/editors/neovim/utils.nix b/pkgs/applications/editors/neovim/utils.nix index 57ab04f98308..9e95bae2ca76 100644 --- a/pkgs/applications/editors/neovim/utils.nix +++ b/pkgs/applications/editors/neovim/utils.nix @@ -112,6 +112,7 @@ let runtimeDeps pluginAdvisedLua pluginPython3Packages + luaDependencies ; # A Vim "package", see ':h packages' diff --git a/pkgs/applications/editors/neovim/wrapper.nix b/pkgs/applications/editors/neovim/wrapper.nix index fe461dd08977..440c3be53654 100644 --- a/pkgs/applications/editors/neovim/wrapper.nix +++ b/pkgs/applications/editors/neovim/wrapper.nix @@ -109,7 +109,7 @@ let luaPathLuaRc = let - luaEnv = lua.withPackages extraLuaPackages; + luaEnv = lua.withPackages (lp: extraLuaPackages lp ++ vimPackageInfo.luaDependencies); # getLuaPath / getLuaCPath are not interpreter dependant at the moment and might thus cause # errors between luajit/Puc lua