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.