Add vPlug option to modules.

This commit is contained in:
Kevin Baensch 2024-11-28 22:53:41 +01:00
parent bd20996cf1
commit ca7310c274
Signed by: derped
GPG key ID: C0F1D326C7626543
5 changed files with 47 additions and 15 deletions

View file

@ -75,6 +75,9 @@ let
- plugin (set)
Type:
pluginWrapper :: (Lambda -> String) -> Set
pluginWrapper :: (Lambda -> Derivation) -> Set
pluginWrapper :: (Lambda -> Set) -> Set
pluginWrapper :: String -> Set
pluginWrapper :: Derivation -> Set
pluginWrapper :: Set -> Set
@ -84,10 +87,12 @@ let
if (builtins.isString pluginOrPackage) then
{ short = pluginOrPackage; }
else if
assert (lib.isDerivation pluginOrPackage || builtins.isAttrs pluginOrPackage);
(lib.isDerivation pluginOrPackage)
assert (builtins.isAttrs pluginOrPackage || builtins.isFunction pluginOrPackage);
(lib.isDerivation pluginOrPackage || builtins.isFunction pluginOrPackage)
then
{ dir = pluginOrPackage; }
{
dir = pluginOrPackage;
}
else
pluginOrPackage;
@ -112,20 +117,29 @@ let
if (builtins.isNull val) then val else fn val;
# Wrap function arguments in function so they are inserted as is when parsed.
stringLiteral = value: if (builtins.isString value) then (_: value) else value;
resolvePlugin = value: if (builtins.isFunction value) then value vPlug else value;
in
lib.pipe plugin [
# Resolve dir and dependencies first so getName can resolve names
(
plugin:
plugin
// {
dir = runIfSet resolvePlugin "dir";
dependencies = runIfSet (
pluginListFn:
(map (pluginOrPackage: getName (pluginWrapper pluginOrPackage))) (resolvePlugin pluginListFn)
) "dependencies";
}
)
(
plugin:
plugin
// {
__posArgs = runIfSet lib.flatten "short";
#if (builtins.isNull short) then short else [ short ];
name = getName plugin;
enabled = runIfSet stringLiteral "enabled";
cond = runIfSet stringLiteral "cond";
dependencies = runIfSet (map (
pluginOrPackage: getName (pluginWrapper pluginOrPackage)
)) "dependencies";
init = runIfSet stringLiteral "init";
opts = runIfSet stringLiteral "opts";
config = runIfSet stringLiteral "config";

View file

@ -10,6 +10,7 @@
callPackage,
neovimUtils,
vimUtils,
vimPlugins,
perl,
lndir,
lazyUtils,
@ -40,6 +41,7 @@ let
luaRcContent ? "",
lazyPlugins ? [ ],
lazyConfig ? { },
vPlug ? vimPlugins,
...
}:
assert
@ -49,11 +51,12 @@ let
stdenv.mkDerivation (
finalAttrs:
let
lazyUtilsOverride = lazyUtils.override { inherit vPlug; };
rcContent = # lua
''
${luaRcContent}
vim.opt.rtp:prepend("${lazyUtils.lazyPluginsJoin { inherit lazyConfig lazyPlugins; }}")
vim.opt.rtp:prepend("${lazyUtilsOverride.lazyPluginsJoin { inherit lazyConfig lazyPlugins; }}")
require("lazyWrapper")
''
+ lib.optionalString (!isNull neovimRcContent) ''
@ -118,7 +121,7 @@ let
withPython3
withPerl
;
inherit providerLuaRc lazyPlugins lazyConfig;
inherit providerLuaRc lazyConfig;
inherit python3Env rubyEnv;
withRuby = rubyEnv != null;
inherit wrapperArgs generatedWrapperArgs;
@ -210,7 +213,7 @@ let
lndir
];
passthru = {
inherit providerLuaRc lazyPlugins lazyConfig;
inherit providerLuaRc lazyConfig;
unwrapped = neovim-unwrapped;
initRc = neovimRcContent;