Context
I work on a headless Mac mini that I reach over SSH and tmux, and Neovim is my editor. My dotfiles are versioned and deployed with GNU Stow.
Rather than starting from a prepackaged distribution, I built my own config from the ground up to own every line. It isolates itself through NVIM_APPNAME, so it can run alongside any other Neovim install.
Technical approach
Plugins are managed by lazy.nvim with versions pinned through a lockfile. Code structure relies on nvim-treesitter (the main rewrite), its textobjects and context, with structural folding. The LSP uses Neovim 0.11+'s native vim.lsp.config API together with Mason (lua_ls, rust_analyzer, basedpyright), completion runs on blink.cmp, and conform.nvim handles format-on-save (stylua, rustfmt, ruff). Rounding it out are telescope + fzf-native, neo-tree, gitsigns, mini.surround, mini.pairs, flash.nvim, undotree, and a kanagawa-dragon UI with lualine and which-key.
AI assistance is wired in via sidekick.nvim (the Claude Code and Codex CLIs), with a per-project kill-switch: a .noai marker file or blocked paths turn the AI off. That keeps my school projects entirely AI-free.
What I took away
Building this config without a distro forced me to understand every layer, from the native LSP to the plugin engine. The lockfile and GNU Stow give me a reproducible, redeployable environment.
The AI kill-switch is a deliberate call: keeping my academic work free of automated assistance while still using AI tooling elsewhere.