Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Profiles

A profile is a Nixvim module that sets the default state of all options. zenvim ships two of them.

ProfileModulePackageContents
fullnixvimModules.fullpackages.<system>.fullAll languages with LSP, formatter, linter, DAP and test adapters, claudecode, bufferline and all extras.
minimalnixvimModules.minimalpackages.<system>.minimalCore editing only: snacks, neo-tree, lualine, gitsigns, blink.cmp, treesitter, which-key – no languages, no AI.

full is also exported as default, both for the module and for the package.

How the profiles work

nixvimModules.full is the actual configuration: it imports every module from nixvim/ and all options default to true.

nixvimModules.minimal contains no configuration of its own. It only sets every language and every optional feature to false – with lib.mkDefault:

{lib, ...}: let
  disabled = {enable = lib.mkDefault false;};
in {
  zenvim = {
    languages = lib.genAttrs (lib.attrNames (import ../nixvim/languages/features.nix)) (_: disabled);
    ai.claudecode = disabled;
    bufferline = disabled;
    # …
  };
}

Because of mkDefault, a plain assignment in your own module wins without mkForce. The minimal profile is therefore always used together with the full module (nixvimModules.default + nixvimModules.minimal).

Starting from a profile

Start from minimal and switch single features on:

programs.zenvim = {
  enable = true;
  profile = "minimal";
  settings = {
    zenvim.languages.nix.enable = true;
    zenvim.persistence.enable = true;
  };
};

Or start from full and switch single features off:

programs.zenvim.settings = {
  zenvim.ai.claudecode.enable = false;
  zenvim.pentatonic.enable = false;
  zenvim.languages.rust.dap.enable = false;
};

What is always enabled

Independent of the profile, the following is always part of the configuration: snacks, neo-tree, lualine with navic, gitsigns, blink.cmp with ripgrep source, treesitter with all grammars, which-key, nvim-surround, autoclose, nvim-cursorline, tiny-inline-diagnostic, todo-comments, vim-sleuth, direnv, web-devicons and the rose-pine colorscheme. See Plugins for details.