Skip to content
/ lavi.nvim Public

🪻 A soft and sweet colorscheme for Neovim & more

License

Notifications You must be signed in to change notification settings

b0o/lavi.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lavi 🪻

A soft and sweet colorscheme

Screenshot

Installation

Neovim

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
];

Alacritty

  1. Copy contrib/alacritty/lavi.toml to ~/.config/alacritty/lavi.toml
  2. Import into your Alacritty config:
    general.import = [
      "~/.config/alacritty/lavi.toml",
    ]

Bottom

  1. Copy the contents of contrib/bottom/lavi.toml into your ~/.config/bottom/bottom.toml

Btop

  1. Copy contrib/btop/lavi.theme to ~/.config/btop/themes/lavi.theme
  2. Set color_theme = "lavi" in your ~/.config/btop/btop.conf or select it from the options menu

Foot

  1. Copy the contents of contrib/foot/lavi.ini into your ~/.config/foot/foot.ini

Ghostty

  1. Copy contrib/ghostty/lavi.conf to ~/.config/ghostty/themes/lavi.conf
  2. Set theme = lavi.conf in your ~/.config/ghostty/config

Kitty

  1. Copy the contents of contrib/kitty/lavi.conf into your ~/.config/kitty/themes/lavi.conf
  2. Run kitty +kitten themes --reload-in=all lavi to set the theme

Opencode

  1. Copy contrib/opencode/lavi.json to ~/.config/opencode/themes/lavi.json
  2. Set { "theme": "lavi" } in your ~/.config/opencode/opencode.jsonc or select it from the UI theme picker

Wezterm

  1. Copy contrib/wezterm/lavi.toml to ~/.config/wezterm/colors/lavi.toml
  2. Set config.color_scheme = "lavi" in your Wezterm config

Windows Terminal

  1. Open the Windows Terminal settings (ctrl+,)
  2. Select Open JSON file at the bottom left corner (ctrl+shift+,)
  3. Copy the contents of contrib/windows_terminal/lavi.json inside of the schemes array
    {
      "schemes": [
        // paste the contents of lavi.json here
      ],
    }
  4. Save and exit
  5. 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

Zellij

  1. Copy contrib/zellij/lavi.kdl to ~/.config/zellij/themes/lavi.kdl
  2. Set theme "lavi" in your ~/.config/zellij/config.kdl

Nix

Lavi provides a Nix flake with multiple outputs for flexible integration.

Flake Outputs

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

Home-Manager Module

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
  };
}

Stylix Integration

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.

Manual Installation

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;

Development Shell

For contributing or modifying themes:

nix develop github:b0o/lavi.nvim
lavi-generate-themes  # Regenerate all theme files
lavi-format           # Format with stylua and dprint

Verifying Themes

To verify committed theme files match what would be generated:

nix flake check

This 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.

Contributing

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), or
  • nix develop -c lavi-generate-themes

Format with just fmt - requires StyLua and dprint.

License

MIT License

About

🪻 A soft and sweet colorscheme for Neovim & more

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Contributors 2

  •  
  •