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:
teto
2026-03-16 15:47:37 +01:00
parent 533335db4d
commit 6eae189791
3 changed files with 16 additions and 1 deletions
@@ -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'
+1 -1
View File
@@ -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