sloth-flake.nvim/lib/modules/sloth.nix

43 lines
1.0 KiB
Nix

{
pkgs,
sloth,
callModule,
...
}: let
inherit (pkgs) vimUtils;
inherit (pkgs.lib) fix listToAttrs nameValuePair;
fs = pkgs.lib.fileset;
lua = callModule ../lua.nix {};
versionLua = version: with lua; renderLua {} (return (lambda [] (return version)));
luaDefsToLua = luaDefs: with lua; renderLua {} (return luaDefs);
in
fix (self: {
mkSlothPlugin = luaDefs:
vimUtils.buildVimPlugin {
inherit (sloth) version;
pname = "sloth-flake";
src = fs.toSource {
root = ../..;
fileset = ../../lua/sloth-flake;
};
nvimRequireCheck = "sloth-flake";
buildPhase = ''
dir=lua/sloth-flake
cat <<'LUA' > $dir/dependencies.lua
${luaDefsToLua luaDefs}
LUA
cat <<'LUA' > $dir/version.lua
${versionLua sloth.version}
LUA
'';
};
mkPluginLuaDefinitions = plugins: let
extractDef = plugin: nameValuePair plugin.pluginName plugin.luaDefinition;
in
listToAttrs (map extractDef plugins);
})