{ 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); })