Development environment
Aquavium.nvim is developed in the following environment (as of 2026/03/11):| Tool | Version |
|---|---|
| Windows | 11 (Build 26200) |
| Microsoft Visual Studio Community | 2026 |
| Neovim | 0.11.6 |
| WezTerm | Nightly |
If you use the maintainer’s dotfiles, clone the repository to
~\source\repos\Aquavium.nvim so the paths resolve correctly.Project structure
Key files
colors/Aquavium.lua — entry point
colors/Aquavium.lua — entry point
This is the file Neovim loads when you run
colorscheme Aquavium. It simply calls require("Aquavium").setup() to delegate all work to the main module.lua/Aquavium/init.lua — main module
lua/Aquavium/init.lua — main module
Defines
M.setup(user_options), which merges user options with defaults, clears existing highlights, loads the color palette, applies highlight groups, and triggers integrations. The default options are:lua/Aquavium/colors.lua — color palette
lua/Aquavium/colors.lua — color palette
Defines the full color palette as a Lua table. When
transparent = true is set, bg1 is replaced with "NONE" so the terminal background shows through.lua/Aquavium/highlights.lua — highlight groups
lua/Aquavium/highlights.lua — highlight groups
Defines all core Neovim highlight groups using the color palette. Calls
utils.apply_hl(hl) to apply them. This is where you add or modify highlight groups for built-in Neovim syntax.lua/Aquavium/utils.lua — utilities
lua/Aquavium/utils.lua — utilities
Exports
apply_hl(groups), a helper that iterates over a table of highlight group definitions and calls vim.api.nvim_set_hl for each one.lua/Aquavium/integrations/ — plugin integrations
lua/Aquavium/integrations/ — plugin integrations
Each file handles highlight groups for a specific plugin.
integrations/init.lua iterates over the registered module names and calls mod.apply(colors, opts) on each one automatically.Testing changes locally
Clone the repository
Clone Aquavium.nvim into your Neovim configuration’s plugin directory, or point your plugin manager at your local clone.
Load via lazy.nvim in development mode
In your lazy.nvim plugin spec, use the
dir key to point at your local clone instead of fetching from GitHub:Adding or modifying highlight groups
To change how a built-in syntax element looks, editlua/Aquavium/highlights.lua. Add your group to the hl table inside M.apply:
colors.lua (for example, c.cyan, c.purple, c.rose) to keep the palette consistent.
Adding a new integration
Create a new file in lua/Aquavium/integrations/
Name the file after the plugin, for example
my-plugin.lua.Implement the M.apply function
Your file must export a
M.apply(colors, opts) function. Use utils.apply_hl to apply the highlight table: