Problem
A good editor setup is worth little if it only installs on one machine. Getting a recent-enough Neovim onto Arch, Debian/Kali and Fedora means fighting outdated distro packages and one-off PPAs or COPRs — and NvChad's newer features need Neovim 0.12+, which currently only exists on the nightly channel. I wanted a config that installs itself the same way on any of those systems.
Approach
- Packaged LazyChad for real distribution — an AUR package plus
.deband.rpmartifacts, built and published by CI (a push syncs the AUR; a version tag builds the packages with nfpm). - Bundled
lazychad-nvim, which installs Neovim nightly from the official GitHub release tarball into/usr/local, detects the CPU architecture, and verifies the result is actually 0.12+ before reporting success — falling back to the system package manager (chosen by which binary exists) when the download is unavailable. - Made
lazychad-depsbest-effort: it auto-detects the distro family (including derivatives like Mint and Rocky), installs each dependency with per-package retry so one renamed package can't abort the run, prints a summary of anything that still needs attention, and sets up the Node, Python and Rust providers so:checkhealthcomes back green. - Kept the editor itself intelligent — a toolchain layer live-scans the Mason registry to recommend an LSP, formatter and linter per filetype instead of hardcoding long tool lists, with blacklisting so a failed install isn't retried forever.
Impact
- One command takes a fresh Arch, Kali or Fedora box to an identical, working editor — no manual Neovim build, no PPA or COPR hunting.
- Installs survive the messy reality of distro packaging — renamed or missing packages, and externally-managed Python (PEP 668) — instead of failing outright.
- An install-method-aware uninstaller removes exactly what was installed, the way it was installed.
Result
A Neovim configuration that ships like a product: installable from the AUR or a .deb/.rpm, version-verified, and reproducible across the distros I actually use.
What I Learned
- Distribution is a feature — the install experience matters as much as the config it delivers.
- Resilient automation beats clever automation: surfacing what failed and continuing is more useful than aborting on the first error.
- Pinning to a fast-moving target like Neovim nightly means verifying versions explicitly — never trusting that "installed" means "recent enough".
Next Steps
- Add CI smoke tests that install the package inside clean distro containers.
- Promote the fallback package managers (openSUSE, Alpine, Void) to first-class, tested install paths.
- Surface the toolchain recommendations as a one-screen status report on first launch.