A template repository for building Neovim plugins with Lua, featuring a complete development environment powered by Nix.
- Plugin scaffold with
setup()and a sample user command (:SampleHello) - Testing with Plenary + Busted
- Reproducible development environment via Nix flakes
- Code formatting with treefmt (stylua, oxfmt, nixfmt)
- Linting with selene
- Automated git hooks (formatting, linting, secret detection, GitHub Actions security checks)
- Demo recording with VHS
- Click Use this template on GitHub to create your repository
- Rename
sampleto your plugin name throughout the codebase:lua/sample/→lua/<your-plugin>/tests/sample/→tests/<your-plugin>/pname = "sample"inflake.nix
- Enable the development environment:
direnv allow
# Enter the development shell
nix develop
# Run tests
nix flake check
# Format all files
nix fmt
# Launch Neovim with the plugin loaded
nix run .#nvim
# Record a demo
nix run .#vhs