Skip to content

Palette Providers

alsi-lawr edited this page Jul 22, 2026 · 3 revisions

Palette providers

Palette providers add themes without placing them in Neotheme's core repository. Providers are optional and load only when listed in palette_packs.

Install the curated pack

With lazy.nvim:

{
	"alsi-lawr/neotheme.nvim",
	dependencies = {
		"alsi-lawr/neotheme-packs.nvim",
	},
	config = function()
		require("neotheme").setup({
			theme = "tokyonight-moon",
			palette_packs = {
				{ provider = "neotheme_packs", include = "*" },
			},
		})
		vim.cmd.colorscheme("neotheme")
	end,
}

Installing neotheme-packs.nvim without adding palette_packs does not change the theme list.

Select families

Use an explicit list to load only selected families:

palette_packs = {
	{
		provider = "neotheme_packs",
		include = { "kanagawa", "solarized" },
	},
}

Use include = "*" to load every family returned by that provider. Provider entries and family names must be unique.

Theme behaviour

Provider themes work with the browser, :NeothemeSwitch, :NeothemeList, completion, preview, reset, reload, and require("neotheme").current().

Their source is reported as pack:<provider>. They cannot be edited, saved, or deleted in place. Use the palette workspace's clone action to create an editable local copy.

Provider families use the normal visibility setting. A disabled family is removed from public lists and completion, but an exact theme name remains available.

Removing a provider from setup removes its themes from memory and does not change local palette files. If the new setup still selects a removed theme, setup fails and retains the previous working configuration and provider inventory.

Provider module format

provider names a Lua module. Requiring it must return:

{
	version = 1,
	provider = "provider-id",
	packs = {
		["family-id"] = {
			family = "family-id",
			themes = {
				["theme-id"] = {
					background = "dark",
					mode = "simplified",
					palette = {},
				},
			},
		},
	},
}

Runtime records accept no extra keys. Each palette must satisfy the complete selected Theme Authoring. Neotheme copies provider data before validation and does not expose the returned tables directly.

Clone this wiki locally