A soft and sweet colorscheme
With lazy.nvim:
{
'b0o/lavi.nvim',
lazy = false,
priority = 1000,
config = function()
vim.cmd.colorscheme 'lavi'
end,
},With Nix flakes (see Nix section for more options):
programs.neovim.plugins = [
inputs.lavi.packages.${pkgs.system}.lavi-nvim
];- Copy
contrib/alacritty/lavi.tomlto~/.config/alacritty/lavi.toml - Import into your Alacritty config:
general.import = [ "~/.config/alacritty/lavi.toml", ]
- Copy the contents of
contrib/bottom/lavi.tomlinto your~/.config/bottom/bottom.toml
- Copy
contrib/btop/lavi.themeto~/.config/btop/themes/lavi.theme - Set
color_theme = "lavi"in your~/.config/btop/btop.confor select it from the options menu
- Copy the contents of
contrib/foot/lavi.iniinto your~/.config/foot/foot.ini
- Copy
contrib/ghostty/lavi.confto~/.config/ghostty/themes/lavi.conf - Set
theme = lavi.confin your~/.config/ghostty/config
- Copy the contents of
contrib/kitty/lavi.confinto your~/.config/kitty/themes/lavi.conf - Run
kitty +kitten themes --reload-in=all lavito set the theme
- Copy
contrib/opencode/lavi.jsonto~/.config/opencode/themes/lavi.json - Set
{ "theme": "lavi" }in your~/.config/opencode/opencode.jsoncor select it from the UI theme picker
- Copy
contrib/wezterm/lavi.tomlto~/.config/wezterm/colors/lavi.toml - Set
config.color_scheme = "lavi"in your Wezterm config
- Open the Windows Terminal settings (
ctrl+,) - Select Open JSON file at the bottom left corner (
ctrl+shift+,) - Copy the contents of
contrib/windows_terminal/lavi.jsoninside of theschemesarray - Save and exit
- In the Settings panel under Profiles, select the profile you want to use the theme in, then select Appearance and choose lavi from the Color scheme dropdown
- Copy
contrib/zellij/lavi.kdlto~/.config/zellij/themes/lavi.kdl - Set
theme "lavi"in your~/.config/zellij/config.kdl
Lavi provides a Nix flake with multiple outputs for flexible integration.
| Output | Description |
|---|---|
packages.<system>.lavi-nvim |
Minimal Neovim plugin (runtime only, no lush dependency) |
packages.<system>.lavi-nvim-dev |
Full Neovim plugin with lush sources for customization |
packages.<system>.lavi-themes |
All theme files from contrib/ |
lib.themes.<app> |
Raw theme content as strings (e.g., lib.themes.ghostty) |
lib.base16 |
Base16 color scheme for Stylix integration |
homeManagerModules.lavi |
Home-manager module with per-app options |
Add to your flake inputs:
inputs.lavi.url = "github:b0o/lavi.nvim";Import and configure:
{ inputs, pkgs, ... }:
{
imports = [ inputs.lavi.homeManagerModules.lavi ];
lavi = {
neovim.enable = true; # Adds lavi-nvim to programs.neovim.plugins
ghostty.enable = true; # Configures programs.ghostty.themes.lavi
alacritty.enable = true; # Merges colors into programs.alacritty.settings
kitty.enable = true; # Appends to programs.kitty.extraConfig
foot.enable = true; # Merges into programs.foot.settings
btop.enable = true; # Writes theme file and sets color_theme
bottom.enable = true; # Merges styles into programs.bottom.settings
opencode.enable = true; # Configures programs.opencode.themes.lavi
wezterm.enable = true; # Writes theme to wezterm/colors/
zellij.enable = true; # Configures programs.zellij.themes.lavi
};
}Lavi provides a base16 color scheme for Stylix:
{ inputs, ... }:
{
stylix.base16Scheme = inputs.lavi.lib.base16;
}This applies the Lavi color palette across all Stylix-supported programs automatically.
For users who manage their own config files:
# Symlink theme files
home.file.".config/ghostty/themes/lavi.conf".source =
"${inputs.lavi.packages.${pkgs.system}.lavi-themes}/ghostty/lavi.conf";
# Or use raw content
xdg.configFile."ghostty/themes/lavi.conf".text = inputs.lavi.lib.themes.ghostty;For contributing or modifying themes:
nix develop github:b0o/lavi.nvim
lavi-generate-themes # Regenerate all theme files
lavi-format # Format with stylua and dprintTo verify committed theme files match what would be generated:
nix flake checkThis runs automatically in CI. On pushes to main, themes are auto-regenerated and committed if needed. PRs will fail if themes are out of date.
This colorscheme is built with Lush.nvim, ensure you have it installed.
Themes are generated from the palette and highlight definitions in lua/lush_theme/lavi/.
The files in contrib/, nix/themes/, colors/, and lua/lavi/ are automatically generated - don't edit them directly.
Re-generate themes with:
just build(requires just), ornix develop -c lavi-generate-themes
Format with just fmt - requires StyLua and dprint.
MIT License

{ "schemes": [ // paste the contents of lavi.json here ], }