Neovim Program Leaf

cells/programs/neovim.nix is a representative program leaf because it shows package selection, editor defaults, tooling packages, and an out-of-store configuration link.

Up: program leaves

Down: Git leaf | cells overlays

What this leaf does

It enables Neovim, marks it as the default editor, installs language and build tooling, and points ~/.config/nvim at a separate local configuration checkout.

programs.neovim = {
  enable = true;
  defaultEditor = true;
  package = pkgs.neovim-unwrapped;
  viAlias = true;
  vimAlias = true;
  extraPackages = with pkgs; [
    nil
    nixd
    nixfmt
    ripgrep
    tree-sitter
  ];
};

Out-of-store config

The real leaf uses mkOutOfStoreSymlink so the Neovim config can live in a separate project and be edited without rebuilding the whole flake for every config file change.

xdg.configFile."nvim".source =
  config.lib.file.mkOutOfStoreSymlink "/home/user/projects/nvim";

Use a placeholder in public docs if the real path reveals local project layout.

Why it belongs to desktop

This setup treats Neovim as a user application with Home Manager state, not as a minimal system package. That makes desktop.hmModules the right attachment point.