Satu pertanyaan yang paling sering ditanyakan pengguna Neovim: bangun config sendiri dari nol atau pakai distro seperti LazyVim, NvChad, dan AstroNvim? Episode ini membedah tradeoff keduanya, kapan harus memilih masing-masing, dan bagaimana menjadikan Neovim sebagai daily driver sejati.

Setelah di episode 24 sebelumnya kita membahas pengelolaan dotfiles — bagaimana menyimpan config ke Git dan mem-bootstrap mesin baru secara otomatis — pada episode kali ini kita akan menghadapi pertanyaan yang paling sering muncul di komunitas Neovim: "Kenapa repot-repot membangun config dari nol? Bukannya tinggal install LazyVim saja, sudah jadi?"
Pertanyaan itu valid, dan jawabannya tidak sesederhana "ya" atau "tidak". Banyak engineer yang produktif menggunakan distro seperti LazyVim, NvChad, atau AstroNvim sebagai daily driver mereka — dan sama banyaknya yang membangun config kustom dari nol. Keduanya bisa menghasilkan pengalaman editing yang hebat; perbedaannya ada di tradeoff antara kecepatan setup dan kontrol.
Di dunia kerja nyata, keputusan ini mirip dengan memilih antara managed service dan self-hosted: LazyVim adalah seperti menggunakan platform terkelola yang sudah diatur orang lain (cepat jalan, update gratis), sedangkan config kustom adalah self-hosting penuh (kontrol total, tapi tanggung jawab penuh). Episode ini akan membantu kalian memutuskan mana yang tepat untuk situasi kalian, dan yang lebih penting — bagaimana menjadikan Neovim sebagai daily driver yang sesungguhnya, apapun pilihan kalian.
Distro Neovim adalah config siap pakai yang dikelola komunitas — seperangkat pilihan yang sudah dibuatkan: plugin mana yang dipasang, keymap apa yang dipakai, colorscheme apa, hingga struktur direktori. Semuanya dibangun di atas plugin manager modern (lazy.nvim untuk ketiganya), sehingga kalian tetap bisa menambahkan plugin sendiri melalui mekanisme override yang disediakan.
Analoginya seperti distribusi Linux: distro adalah Ubuntu (sudah ada semua, tinggal pakai), sedangkan config kustom adalah Linux From Scratch (kalian merakit sendiri). Keduanya sama-sama Linux di bawahnya — sama-sama Neovim di bawahnya — tapi pengalaman dan derajat kontrolnya sangat berbeda.
LazyVim dibuat oleh Folke Lemaitre — penulis lazy.nvim, which-key.nvim, dan flash.nvim — sehingga kualitasnya tidak diragukan. Ia yang paling "opinionated": memakai LazyVim sebagai plugin inti yang menyediakan default yang sangat lengkap (keymaps, autocmds, formatter mapping, dan lain-lain). Customization dilakukan dengan cara menulis spec plugin dan menambahkan opts = {} atau config = function() ... end untuk meng-override default-nya. Karena dibuat di atas lazy.nvim, setiap plugin di LazyVim sudah di-lazy-load dengan optimal.
NvChad hadir dengan filosofi "beauty and performance" — tampilannya sangat bersih dengan nvim-web-devicons dan tema sendiri. Customization-nya melalui file chadrc.lua dan direktori lua/custom/, yang membuatnya terasa seperti config biasa yang terstruktur rapi. NvChad adalah distro yang paling ringan di antara ketiganya dan banyak dipakai sebagai basis untuk mulai membangun config sendiri.
AstroNvim (buatan C.T. Lin, penulis toggleterm.nvim) mengambil pendekatan modular: konfigurasi dipecah ke dalam modul-modul seperti astrocore, astroui, astrolsp, astrogit. Ia memberi keseimbangan terbaik antara default yang kaya dan fleksibilitas override. AstroNvim punya ekosistem komunitas astrocommunity — kumpulan plugin siap-pakai yang tinggal di-import.
| Aspek | Custom Config | LazyVim | NvChad | AstroNvim |
|---|---|---|---|---|
| Plugin manager | Bebas (biasanya lazy.nvim) | lazy.nvim | lazy.nvim | lazy.nvim |
| Learning curve | Tinggi (harus paham semuanya) | Rendah-sedang | Sedang | Sedang |
| Kontrol & fleksibilitas | Total | Terstruktur | Terstruktur | Terstruktur (modular) |
| Fitur out-of-the-box | Minimal (sesuai yang kalian buat) | Sangat lengkap | Lengkap | Sangat lengkap |
| Waktu sampai produktif | Berminggu-minggu | Menit | Beberapa jam | Beberapa jam |
| Maintenance | Manual 100% | Komunitas + manual override | Komunitas + manual | Komunitas + manual |
| Risiko upgrade | Tidak ada (milik sendiri) | Bisa ada breaking change | Bisa ada breaking change | Bisa ada breaking change |
| Ukuran config | Kecil-sedang | Besar (banyak plugin) | Sedang | Besar (modular) |
| Cocok untuk | Pembelajaran & kontrol penuh | Produktif cepat, standar komunitas | Ringan & estetis | Power user yang suka modular |
Kelebihan:
Kekurangan:
Kelebihan:
Kekurangan:
Important
Ironisnya, kedua jalan sama-sama berakhir di tempat yang sama: keduanya butuh memahami cara kerja Neovim. Pengguna distro yang tidak pernah belajar struktur config akan kesulitan saat ingin menyesuaikan, sama seperti pengguna custom yang tidak pernah belajar akan kesulitan saat plugin rusak. Bedanya hanya di mana kalian memulai.
Tidak ada jawaban universal — ada konteks. Gunakan pertanyaan-pertanyaan berikut sebagai panduan:
| Situasi | Rekomendasi | Alasan |
|---|---|---|
| Mau produktif menulis kode hari ini juga | Distro (LazyVim/NvChad/AstroNvim) | Setup 5 menit, semua fitur sudah jalan |
| Sedang belajar Neovim (ini seri kalian) | Custom | Pemahaman fondasi tidak bisa didapat dari distro |
| Pekerjaan butuh lingkungan yang konsisten di banyak mesin | Distro | Reproducibility lebih mudah, upgrade datang dari komunitas |
| Ingin kontrol penuh atas setiap aspek editing | Custom | Tidak ada lapisan default yang membatasi |
| Terbatas resource (VPS, laptop jadul) | Custom / NvChad | Bisa seminimal mungkin sesuai kebutuhan |
| Sudah punya config custom yang nyaman | Tetap custom | Jangan ganti yang bekerja — prinsip "if it ain't broke" |
Jawaban jujur yang sering diberikan para veteran: mulailah dengan distro jika ingin cepat, tapi tetaplah pelajari strukturnya; atau mulailah dengan custom jika tujuanmu adalah memahami Neovim. Di seri ini, kalian sudah menempuh 24 episode membangun fondasi — jadi arah naturalnya adalah memilih custom dengan pengetahuan yang kalian miliki.
Supaya keputusan kalian berdasarkan pemahaman (bukan sekadar tren), mari kita lihat bagaimana kustomisasi bekerja di masing-masing jalur. Semua distro modern dibangun di atas lazy.nvim — yang membedakan hanyalah bagaimana mereka membungkus mekanisme override-nya. Perhatikan perbandingan berikut:
-- ~/.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" },
},
},
},
}Pola yang paling penting untuk disadari: ketiga distro tetap memakai spec lazy.nvim di bawahnya. Setelah kalian paham cara kerja spec lazy.nvim dari episode 9 dan 23, memakai distro hanyalah soal belajar di mana override-nya ditaruh — bukan belajar konsep baru. Inilah mengapa fondasi yang dibangun sepanjang seri ini tidak pernah terbuang, apapun pilihan kalian.
Banyak pengguna distro yang akhirnya "lulus" dan beralih ke config custom. Prosesnya tidak harus hitam-putih. Ada jalur bertahap yang wajar:
:checkhealth, bongkar satu per satu plugin yang terpasang. Tujuan: paham mengapa setiap bagian ada.Jalur ini menunjukkan sesuatu yang penting: distro bukan musuh custom, melainkan guru. Kebanyakan orang yang memakai distro serius akhirnya mengerti Neovim lebih dalam justru karena mereka berangkat dari sesuatu yang lengkap dan berfungsi, lalu membongkarnya pelan-pelan.
Tip
Jika kalian memilih distro, jangan pernah ragu untuk masuk ke direktori config distro tersebut dan membacanya. nvim ~/.config/nvim/lua/plugins/ akan memperlihatkan bagaimana para maintainer menata plugin mereka — itu adalah kelas master gratis tentang arsitektur config yang baik.
Semua pembahasan teknis di atas bermuara pada satu tujuan: Neovim yang kalian pakai setiap hari, sepanjang hari. Beberapa prinsip yang membedakan config yang "dipakai" dari config yang "hanya dibuat":
Distro lock-in. Menganggap config "milik LazyVim" sehingga tidak pernah berani mengubah struktur. Padahal apapun distronya, config tersebut akhirnya dijalankan oleh Neovim yang sama — kalian selalu punya kendali penuh lewat override.
Config yang bloat. Baik dari distro maupun dari kebiasaan menambah plugin tanpa henti, config yang berisi 100 plugin tapi hanya 20 yang dipakai adalah beban. Lakukan audit berkala: buang yang tidak dipakai minimal sebulan sekali.
Mencampur cara customisasi. Mengubah config distro lewat tiga mekanisme berbeda (mengedit file inti distro, menambah override, dan plugin kedua untuk fungsi sama) membuat config sulit di-maintain. Pilih satu jalur — sebaiknya override yang disediakan.
Meng-upgrade tanpa membaca changelog. Distro besar kadang merilis breaking change. Baca release notes sebelum update massal, atau kalian akan menghabiskan malam untuk mencari tahu mengapa keymap hilang.
Berganti distro setiap bulan. "Minggu ini LazyVim, minggu depan NvChad" adalah musuh utama otot memori. Pilih satu, kuasai, baru pindah dengan alasan yang jelas.
Pada episode 25 ini kita telah membedah perbandingan antara membangun config sendiri dari nol dan memakai distro Neovim seperti LazyVim, NvChad, atau AstroNvim. Kita melihat bahwa keduanya bukanlah lawan, melainkan dua titik di spektrum yang sama: distro memberi kecepatan dan standar teruji, custom memberi kontrol dan pemahaman. Keputusan terbaik bergantung pada konteks kalian — waktu yang tersedia, tujuan pembelajaran, dan kebutuhan lingkungan kerja — dan yang terpenting, keduanya sama-sama menuntut pemahaman tentang cara kerja Neovim.
Pesan terakhir untuk episode ini: apapun yang kalian pilih, jadikan Neovim sebagai daily driver dengan konsistensi, bukan dengan jumlah plugin. Editor yang kalian kuasai dengan baik jauh lebih berharga daripada editor yang paling canggih tapi membuat kalian terus bereksperimen tanpa henti.
Di episode 26 selanjutnya, kita akan mengisi salah satu celah terbesar dari sebuah IDE yang masih belum kita bahas tuntas: testing. Kita akan mengintegrasikan neotest agar kalian bisa menjalankan dan menavigasi test — test tunggal, file, atau seluruh suite — tanpa pernah meninggalkan editor. Sampai jumpa di episode berikutnya!