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

42 lines
1.0 KiB
Nix

{
pkgs,
sloth,
...
}: let
inherit (pkgs) vimUtils;
inherit (pkgs.lib) fix listToAttrs nameValuePair;
fs = pkgs.lib.fileset;
lua = import ../lua.nix {};
versionLua = version: with lua; nix2lua (return (lambda (return version)));
luaDefsToLua = luaDefs: with lua; nix2lua (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);
})