One of the most frequently asked Neovim user questions: build your own config from scratch or use a distro like LazyVim, NvChad, and AstroNvim? This episode dissects the tradeoffs of both, when to choose each, and how to make Neovim a true daily driver.

After discussing dotfiles management in episode 24 — how to store config in Git and bootstrap new machines automatically — in this episode we face the question most frequently asked in the Neovim community: "Why bother building a config from scratch? Can't I just install LazyVim and be done?"
That question is valid, and the answer is not as simple as "yes" or "no". Many productive engineers use distros like LazyVim, NvChad, or AstroNvim as their daily drivers — and just as many build custom configs from scratch. Both can produce a great editing experience; the difference lies in the tradeoff between setup speed and control.
In real work, this decision is like choosing between a managed service and self-hosting: LazyVim is like using a managed platform someone else has already set up (quick to run, free updates), while a custom config is full self-hosting (total control, but full responsibility). This episode will help you decide which is right for your situation, and more importantly — how to make Neovim a true daily driver, whatever you choose.
A Neovim distro is a community-maintained, ready-to-use config — a set of choices already made for you: which plugins are installed, what keymaps are used, what colorscheme, even the directory structure. All of it is built on a modern plugin manager (lazy.nvim for all three), so you can still add your own plugins through the provided override mechanism.
The analogy is like Linux distributions: a distro is Ubuntu (everything is already there, just use it), while a custom config is Linux From Scratch (you assemble it yourself). Both are Linux underneath — both are Neovim underneath — but the experience and degree of control are very different.
LazyVim was created by Folke Lemaitre — the author of lazy.nvim, which-key.nvim, and flash.nvim — so its quality is beyond doubt. It is the most "opinionated": it uses LazyVim as a core plugin providing very complete defaults (keymaps, autocmds, formatter mappings, and more). Customization is done by writing plugin specs and adding opts = {} or config = function() ... end to override its defaults. Because it is built on lazy.nvim, every plugin in LazyVim is already optimally lazy-loaded.
NvChad comes with the philosophy of "beauty and performance" — its look is very clean with nvim-web-devicons and its own theme. Customization goes through the chadrc.lua file and the lua/custom/ directory, which makes it feel like a neatly structured regular config. NvChad is the lightest of the three distros and is widely used as a base for starting to build your own config.
AstroNvim (by C.T. Lin, author of toggleterm.nvim) takes a modular approach: configuration is broken into modules like astrocore, astroui, astrolsp, astrogit. It gives the best balance between rich defaults and override flexibility. AstroNvim has the astrocommunity ecosystem — a collection of ready-to-use plugins that just need importing.
| Aspect | Custom Config | LazyVim | NvChad | AstroNvim |
|---|---|---|---|---|
| Plugin manager | Free (usually lazy.nvim) | lazy.nvim | lazy.nvim | lazy.nvim |
| Learning curve | High (must understand everything) | Low-medium | Medium | Medium |
| Control & flexibility | Total | Structured | Structured | Structured (modular) |
| Out-of-the-box features | Minimal (whatever you build) | Very complete | Complete | Very complete |
| Time to productive | Weeks | Minutes | A few hours | A few hours |
| Maintenance | 100% manual | Community + manual override | Community + manual | Community + manual |
| Upgrade risk | None (your own) | Possible breaking changes | Possible breaking changes | Possible breaking changes |
| Config size | Small-medium | Large (many plugins) | Medium | Large (modular) |
| Best for | Learning & full control | Fast productivity, community standard | Light & aesthetic | Power users who like modular |
Pros:
Cons:
Pros:
Cons:
Important
Ironically, both paths end up in the same place: both require understanding how Neovim works. Distro users who never learn the config structure will struggle when they want to customize, just as custom users who never learn will struggle when a plugin breaks. The difference is only where you start.
There is no universal answer — there is context. Use the following questions as a guide:
| Situation | Recommendation | Reason |
|---|---|---|
| Want to be productive writing code today | Distro (LazyVim/NvChad/AstroNvim) | 5-minute setup, all features already working |
| Currently learning Neovim (this series for you) | Custom | Foundational understanding cannot be gained from a distro |
| Work needs a consistent environment across many machines | Distro | Reproducibility is easier, upgrades come from the community |
| Want full control over every aspect of editing | Custom | No default layer limiting you |
| Limited resources (VPS, old laptop) | Custom / NvChad | Can be as minimal as needed |
| Already have a comfortable custom config | Stay custom | Do not change what works — the "if it ain't broke" principle |
The honest answer often given by veterans: start with a distro if you want to be fast, but still learn its structure; or start with custom if your goal is to understand Neovim. In this series, you have gone through 24 episodes building a foundation — so the natural direction is choosing custom with the knowledge you have.
So your decision is based on understanding (not just trends), let's look at how customization works on each path. All modern distros are built on lazy.nvim — the only difference is how they wrap the override mechanism. Notice the following comparison:
-- ~/.config/nvim/lua/plugins/colorscheme.lua
return {
{ "catppuccin/nvim", lazy = false, priority = 1000, name = "catppuccin" },
{
"LazyVim/LazyVim",
opts = {
colorscheme = "catppuccin",
},
},
-- Override keymap bawaan LazyVim
{
"folke/which-key.nvim",
opts = {
spec = {
{ "<leader>ff", "<cmd>Telescope find_files<CR>", desc = "Cari File" },
},
},
},
}The most important pattern to notice: all three distros still use lazy.nvim specs underneath. Once you understand how lazy.nvim specs work from episodes 9 and 23, using a distro is just a matter of learning where the overrides go — not learning a new concept. This is why the foundation built throughout this series is never wasted, whatever you choose.
Many distro users eventually "graduate" and switch to a custom config. The process does not have to be black and white. There is a natural gradual path:
:checkhealth, take apart the installed plugins one by one. Goal: understand why each part exists.This path shows something important: a distro is not the enemy of custom, but a teacher. Most people who seriously use a distro end up understanding Neovim more deeply precisely because they started from something complete and functional, then took it apart slowly.
Tip
If you choose a distro, never hesitate to go into that distro's config directory and read it. nvim ~/.config/nvim/lua/plugins/ will show you how the maintainers organize their plugins — that is a free master class on good config architecture.
All the technical discussion above boils down to one goal: Neovim you use every day, all day long. Some principles that distinguish a config that is "used" from a config that is "just made":
Distro lock-in. Thinking the config "belongs to LazyVim" so never daring to change its structure. But whatever the distro, that config is ultimately run by the same Neovim — you always have full control through overrides.
Config bloat. Whether from a distro or from the habit of endlessly adding plugins, a config containing 100 plugins but only 20 used is a burden. Do periodic audits: throw away what has not been used for at least a month.
Mixing customization methods. Changing the distro config through three different mechanisms (editing the distro's core files, adding overrides, and a second plugin for the same function) makes the config hard to maintain. Choose one path — preferably the provided override.
Upgrading without reading the changelog. Big distros sometimes release breaking changes. Read the release notes before a mass update, or you will spend the night figuring out why a keymap is gone.
Switching distros every month. "This week LazyVim, next week NvChad" is the main enemy of muscle memory. Choose one, master it, then switch with a clear reason.
In episode 25 we dissected the comparison between building your own config from scratch and using Neovim distros like LazyVim, NvChad, or AstroNvim. We saw that they are not opponents, but two points on the same spectrum: distros give speed and tested standards, custom gives control and understanding. The best decision depends on your context — available time, learning goals, and work environment needs — and most importantly, both equally demand an understanding of how Neovim works.
A final message for this episode: whatever you choose, make Neovim a daily driver with consistency, not with plugin count. An editor you master well is far more valuable than the most sophisticated editor that keeps you experimenting endlessly.
In episode 26, we will fill one of the biggest gaps of an IDE that we have not yet fully discussed: testing. We will integrate neotest so you can run and navigate tests — a single test, a file, or an entire suite — without ever leaving the editor. See you in the next episode!