The NURR hosts and automatically packages Neovim Luarocks releases for many plugins and tree-sitter parsers whose developers do not want to maintain a Luarocks CI workflow.
This repository contains a CI which runs periodically, enumerating a set of curated Neovim plugins
and publishing them to luarocks.org
.
Plugins are published using the luarocks-tag-release action.
The plugin metadata are stored in a plugins.json file, which is currently updated manually. A chunk workflow reads the plugins.json file and chunks the plugins into sets of 256 (the max number of outputs per job). Each chunk is dispatched to an update workflow, which uses the chunk it receives as the input for a matrix build.
Note
Neovim plugins are published every 4 hours.
Important
When adding a plugin that claims it depends on nvim-treesitter, check if it actually does. Many plugins only depend on the parsers. If it does, we recommend:
- Adding
nvim-treesitter-legacy-api
to the dependencies (this does not clash with the luarocks tree-sitter parsers' queries). - Opening a PR or an issue to use Neovim's core API instead.
name
: owner/repo (GitHub)shorthand
: The name of the plugin (will be the lua rock name)dependencies
: Plugin dependencies, a list of luarocks pluginssummary
: Short description of the pluginlicense
: The license SPDXextra_directories
: (optional) Extra directories to copy, separated by\n
, in addition to the standard Neovim runtime directories, which are auto-detected.
- One workflow periodically generates the tree-sitter-parsers.json file, using nvim-treesitter as a source.
- Another workflow uses that file as a matrix input, to generate
rockspecs (that use
luarocks-build-tree-sitter-parser
) and publishes them to luarocks.org.
Note
Tree-sitter parsers are published every 7 hours.
Important
Any tree-sitter parser rockspecs that cannot be built and installed by the workflow
are not uploaded to luarocks.org.