neovimUtils.makeVimPackageInfo: add lua dependencies
Neovim currently resolves its lua dependencies at buildtime in the wrapper, which causes some trouble as it's difficult to debug or replicate the result outside the nixpkgs wrapper. This change makes lua dependencies available at runtime. We can thus build a luaEnv to avoid building a long LUA_PATH which can help with runtime perf. The drawback is that we now need to engrave in nix the default LUA_PATH for the various lua interpreters. This is what I tried to avoid at first but this proves annoying. As far as neovim is concerned, we only care about the lua 5.1 and luajit interpreters whose defaults only slightly differ for cpath IIRC. So it should mostly transparent except for one or two plugins in which case we can adapt the lua code.
This commit is contained in:
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -112,6 +112,7 @@ let
|
||||
runtimeDeps
|
||||
pluginAdvisedLua
|
||||
pluginPython3Packages
|
||||
luaDependencies
|
||||
;
|
||||
|
||||
# A Vim "package", see ':h packages'
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user