Commit 6eae1897 authored by teto's avatar teto
Browse files

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.
parent 533335db
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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;
    };
}
+1 −0
Original line number Diff line number Diff line
@@ -112,6 +112,7 @@ let
        runtimeDeps
        pluginAdvisedLua
        pluginPython3Packages
        luaDependencies
        ;

      # A Vim "package", see ':h packages'
+1 −1
Original line number Diff line number Diff line
@@ -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