1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-11-27 05:29:46 +01:00

neovim: add extraLuaPackages to neovim, fixes #1964. (#2617)

Similarly to extraPytonPackages, we add extraLuaPackages that make
lua libraries available at runtime.
This commit is contained in:
Artem Shinkarov 2022-02-16 15:38:10 +00:00 committed by GitHub
parent 50204cea94
commit a3c18a60d5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 1 deletions

View file

@ -16,6 +16,17 @@ let
merge = mergeOneOption; merge = mergeOneOption;
}; };
# Currently, upstream Neovim is pinned on Lua 5.1 for LuaJIT support.
# This will need to be updated if Neovim ever migrates to a newer
# version of Lua.
extraLua51PackageType = mkOptionType {
name = "extra-lua51-packages";
description = "lua5.1 packages in lua5_1.withPackages format";
check = with types;
(x: if isFunction x then isList (x pkgs.lua51Packages) else false);
merge = mergeOneOption;
};
pluginWithConfigType = types.submodule { pluginWithConfigType = types.submodule {
options = { options = {
config = mkOption { config = mkOption {
@ -67,6 +78,16 @@ let
extraMakeWrapperArgs = lib.optionalString (cfg.extraPackages != [ ]) extraMakeWrapperArgs = lib.optionalString (cfg.extraPackages != [ ])
''--suffix PATH : "${lib.makeBinPath cfg.extraPackages}"''; ''--suffix PATH : "${lib.makeBinPath cfg.extraPackages}"'';
extraMakeWrapperLuaCArgs = lib.optionalString (cfg.extraLuaPackages != [ ]) ''
--suffix LUA_CPATH ";" "${
lib.concatMapStringsSep ";" pkgs.lua51Packages.getLuaCPath
cfg.extraLuaPackages
}"'';
extraMakeWrapperLuaArgs = lib.optionalString (cfg.extraLuaPackages != [ ]) ''
--suffix LUA_PATH ";" "${
lib.concatMapStringsSep ";" pkgs.lua51Packages.getLuaPath
cfg.extraLuaPackages
}"'';
in { in {
imports = [ imports = [
@ -141,6 +162,17 @@ in {
''; '';
}; };
extraLuaPackages = mkOption {
type = with types; either extraLua51PackageType (listOf package);
default = [ ];
defaultText = "[]";
example = literalExpression "(ps: with ps; [ luautf8 ])";
description = ''
A function in lua5_1.withPackages format, which returns a
list of Lua packages required for your plugins to work.
'';
};
generatedConfigViml = mkOption { generatedConfigViml = mkOption {
type = types.lines; type = types.lines;
visible = true; visible = true;
@ -353,7 +385,8 @@ in {
programs.neovim.finalPackage = pkgs.wrapNeovimUnstable cfg.package programs.neovim.finalPackage = pkgs.wrapNeovimUnstable cfg.package
(neovimConfig // { (neovimConfig // {
wrapperArgs = (lib.escapeShellArgs neovimConfig.wrapperArgs) + " " wrapperArgs = (lib.escapeShellArgs neovimConfig.wrapperArgs) + " "
+ extraMakeWrapperArgs; + extraMakeWrapperArgs + " " + extraMakeWrapperLuaCArgs + " "
+ extraMakeWrapperLuaArgs;
wrapRc = false; wrapRc = false;
}); });

View file

@ -20,6 +20,7 @@ with lib;
''; '';
} }
]; ];
extraLuaPackages = [ pkgs.lua51Packages.luautf8 ];
}; };
nmt.script = '' nmt.script = ''