- NixOS yang berbasis manajer paket Nix memiliki struktur yang memungkinkan seluruh sistem didefinisikan sebagai kode dan dipulihkan ke keadaan yang deterministik dan dapat direproduksi kapan saja
- Semua konfigurasi dan paket dikelola dalam satu berkas konfigurasi deklaratif, sehingga lingkungan yang sama dapat dibangun ulang dari satu sumber bahkan di perangkat baru
- Mendukung rilis stabil setiap 6 bulan dan pembaruan otomatis, serta eksperimen dengan perangkat lunak terbaru melalui channel unstable bila diperlukan
- Menyediakan lingkungan pengembangan terisolasi sehingga berbagai bahasa dan alat dapat diuji tanpa mencemari sistem, sambil menjaga pengalaman pengembangan yang konsisten antara macOS dan Linux
- Tetap cocok untuk era coding berbasis LLM, yang sering membutuhkan pergantian alat dengan cepat, dan menjaga konsistensi hingga deployment dengan model build yang lebih deterministik dan berlapis dibanding Docker
Filosofi dan Daya Tarik NixOS
- Inti NixOS bukan distro Linux, melainkan manajer paket Nix
- NixOS adalah hasil dari manajer paket fungsional yang deterministik dan dapat direproduksi, yang memungkinkan seluruh sistem operasi disusun berdasarkan input Nix DSL
- Menyediakan struktur untuk membangun ulang sistem, mengubah sebagian saja, lalu rollback jika hasilnya tidak memuaskan
- Sementara kebanyakan sistem operasi menjadi tidak stabil seiring waktu, NixOS memungkinkan Anda mendefinisikan dan membangun status sistem
- Mencegah akumulasi status yang tidak jelas akibat instalasi paket, perubahan konfigurasi, serta penambahan atau penghapusan alat
- Karena sistem didefinisikan sebagai kode, hasil yang sama dapat direproduksi kapan saja
Konfigurasi Deklaratif dan Pengelolaan Satu Sumber
- Di NixOS, paket, konfigurasi, key mapping, dan seluruh sistem dapat didefinisikan dalam satu konfigurasi deklaratif
- Detail perilaku hingga tingkat pengaturan GNOME extension dan key mapping dapat ditulis dengan Nix DSL
- Bahkan di komputer baru, seluruh sistem dapat dibangun ulang dari satu sumber
- Memungkinkan status sistem yang konsisten tanpa konfigurasi manual atau pengelolaan skrip yang terpencar
Stabilitas dan Pengelolaan Pembaruan
- NixOS mempertahankan rilis yang dapat diprediksi setiap 6 bulan dan mendukung pembaruan otomatis
- Meminimalkan ketidakstabilan, notifikasi, atau masalah system drift yang umum terjadi saat upgrade OS biasa
- Bila perlu, channel unstable dapat diaktifkan untuk mencoba perangkat lunak terbaru secara eksperimental
- Bahkan pada laptop HP, kompatibilitas hardware dan stabilitasnya tinggi sehingga dapat langsung digunakan tanpa konfigurasi tambahan
Eksperimen dan Isolasi Lingkungan Pengembangan
- NixOS menyediakan lingkungan eksperimen yang aman dan berbiaya rendah
- Paket tidak harus dipasang langsung ke sistem, tetapi bisa dijalankan dalam lingkungan shell terisolasi
- Dengan Nix DSL, dependensi, tahap build, dan hasil akhir dapat didefinisikan secara deklaratif untuk menjaga lingkungan pengembangan yang bersih tanpa kontaminasi
- Manajer paket Nix yang sama dapat digunakan di macOS maupun Linux, sehingga konsistensi alat pengembangan dan pengelolaan dependensi tetap terjaga
- Ada juga dukungan komunitas untuk FreeBSD
Kesesuaian dengan Era Coding LLM
- Alat coding berbasis LLM sering mengharuskan pergantian versi tertentu dari utilitas, compiler, dan runtime
- Nix menangani kebutuhan ini dengan memperlakukan alat sebagai input deklaratif dan menjalankannya dalam lingkungan terisolasi
- Misalnya, saat membangun agen voice-to-text berbasis Rust, Nix secara otomatis memanggil toolchain Rust dan menyusun lingkungan build terisolasi
- Tidak mengubah lingkungan sistem seperti
~/.cargo, ~/.rustup, atau PATH
- Melalui
flake.nix dan nix flake check, lingkungan eksperimen agen dapat dikunci sebagai artefak yang dapat direproduksi
- Mengubah sesi sementara menjadi unit build yang dapat diverifikasi
Deployment dan Model Pengembangan yang Konsisten
- Nix menawarkan metode build image yang lebih deterministik dan berlapis dibanding Docker
- Dengan
dockerTools.buildLayeredImage, Anda dapat membuat image Docker yang kecil dan dapat direproduksi
- Dengan konfigurasi yang sama, hasil yang identik dapat dibangun di arsitektur yang berbeda
- Model yang sama diterapkan secara konsisten pada laptop, shell, dependensi proyek, pipeline CI, dan artefak deployment
- Alih-alih menggabungkan banyak alat, Anda dapat mengelola seluruh sistem perangkat lunak dengan satu pola pikir
Kesimpulan
- NixOS adalah implementasi dari sistem yang deklaratif, dapat direproduksi, dapat dikembalikan, dan stabil
- Eksperimen dan upgrade dapat dilakukan tanpa rasa takut, sambil mencegah sistem tercemar bahkan di lingkungan alat yang berubah cepat
- Bahkan dalam alur pengembangan modern seperti agen coding LLM, NixOS memberikan stabilitas dan fleksibilitas secara bersamaan
- NixOS adalah bentuk yang paling lengkap dalam mewujudkan filosofi ini dalam penggunaan sehari-hari
7 komentar
Saya juga dulu pernah memakai NixOS sekitar setengah tahun, lalu ada pekerjaan yang sangat sederhana dan di OS lain bahkan tidak perlu dicari-cari terpisah, tetapi meskipun sudah googling habis-habisan saya tetap tidak bisa menyelesaikannya. Di forum NixOS atau tempat semacam itu, saya melihat solusi yang ditulis oleh seseorang yang mungkin ahli NixOS? dan ketika melihat solusi hacky sepanjang puluhan baris itu menjadi yang paling banyak dapat jempol, saya merasa kehidupan saya dengan NixOS ke depannya akan suram, jadi saya kembali ke Arch...
Dan saya tidak terlalu ingat, apakah itu
flakeatau fitur apa, tapi ada yang bilang itu best practice, ada yang bilang experimental, ada juga yang bilang keduanya, dan melihat hal seperti itu terus berlangsung selama bertahun-tahun, rasanya jalan terjalnya sudah kelihatan jelas..Tentu saja, pengalaman bisa dengan mudah mengodekan seluruh lingkungan desktop tetap terasa menyenangkan.
Firebase Studio juga menggunakan Nix
Oh... begitu ya!
Ngomong-ngomong, R.I.P. Firebase Studio :(
Yang tahu, diam-diam sudah memakainya juga wkwkwk
Setup yang dapat direproduksi, diimplementasikan dengan bahasa deklaratif fungsional
Learning curve-nya tidak masuk akal. Karena menjamin reproducibility, tingkat yang dituntut juga tinggi.
Bahkan kalau memakai
flake, tetap rumit.Selain itu, sepertinya secara internal menggunakan sqlite, dan performanya juga naik-turun, jadi ada sedikit fluktuasi pada waktu yang dibutuhkan untuk mereproduksi ulang lingkungan sekali.
Opini Hacker News
Menurut saya, NixOS tak tertandingi dalam hal kecocokan dengan alat AI
Di OS lain sulit mempercayakan konfigurasi sistem ke AI, tetapi NixOS bisa diandalkan berkat sifatnya yang deklaratif dan bisa di-rollback
Saya mungkin tidak akan menyerahkan migrasi dari Pulseaudio ke Pipewire atau pemasangan Hyprland kepada Claude atau Codex, tetapi dengan NixOS saya bahkan cukup percaya diri untuk menyerahkannya ke Grok
Kuncinya adalah stabilitas karena perubahan bisa ditinjau lebih dulu dan dibatalkan kapan saja
Jika Anda seorang developer, saya sarankan mencoba NixOS sambil membayangkan “desktop Linux yang dikelola AI”. Mulailah dengan mengatakan ke Claude, “tolong buatkan konfigurasi Gnome berbasis Flake yang bisa didemokan di VM”
Melihat Claude menyesuaikan pengaturan dconf GNOME secara deklaratif itu mengagumkan
Namun, AI kadang menghasilkan hal yang aneh karena tidak memahami konteks kompleks ekosistem Nix
Saya merasa struktur lambda Nix yang tidak teratur dan scope implisit antar-modul itu sulit bukan hanya bagi manusia, tetapi juga bagi AI
Karena itu penting untuk mendefinisikan struktur dan pola proyek dengan jelas. Meski begitu, proses membuat template berbasis Nix tetap menyenangkan dan produktif
Perlukah memakai LLM hanya untuk memasang Hyprland? Cukup
sudo dnf install hyprlandRasanya bukan karena Nix itu ‘ramah AI’, melainkan karena terlalu merepotkan jika ditangani langsung oleh manusia sehingga orang jadi memakai LLM
Saya mengelola konfigurasi banyak mesin sebagai ‘profil bisnis’, lalu otomatis mendistribusikan repo dan konfigurasi yang dibutuhkan ke tiap mesin
Rekan kerja saya awalnya pengguna Windows, tetapi sekarang sudah memakai NixOS sehari-hari
Semua konfigurasi hardware juga dikelola secara deklaratif, dan konfigurasi saya ada di repositori publik GitHub. Masukan sangat diterima
Saat memindahkan konfigurasi ke struktur baru atau membuat beberapa lingkungan uji WM/DE, Claude menangani sebagian besar pekerjaan berulang
Sekarang sistem saya sudah benar-benar stabil, jadi hampir tidak ada lagi yang perlu dilakukan secara manual
Sulit punya tingkat kepercayaan seperti ini di OS lain
Sebagai gantinya saya mengelola environment development dengan skrip Docker, tetapi sekarang saya merasa kombinasi Nix dan AI itu sempurna
Ke depan sepertinya akan muncul banyak software yang lebih mudah ditangani AI
Setelah 30 tahun memakai Windows, 1 tahun lalu saya sepenuhnya pindah ke Nix
Sekarang saya sama sekali tidak berniat kembali ke Windows
Saya sangat suka karena seluruh konfigurasi OS tersimpan dalam repositori Git
Mengembangkan software tanpa Nix terasa tidak efisien seperti menulis kode tanpa Git
Begitu sekali dikonfigurasi, menyiapkan sistem baru setelahnya jadi sangat mudah
Saya ingin tiap aplikasi berjalan di environment terpisah tanpa memengaruhi keseluruhan sistem
Menurut saya NixOS adalah salah satu jalan menuju masa depan seperti itu
GPU Nvidia juga berjalan baik, dan jauh lebih stabil dibanding Gamescope
Saya ingin lebih menyukai NixOS, tetapi masalah terbesarnya adalah kurangnya dokumentasi
Informasi tersebar di berbagai forum, blog lama, dan issue
Keduanya sama-sama diperbarui, tetapi saat mencari selalu berbeda mana yang paling mutakhir
Meng-clone nixpkgs lalu membacanya langsung adalah cara tercepat
Saya pernah memakai NixOS sebagai OS laptop, dan kelebihan serta kekurangannya sangat jelas
Konfigurasi deklaratif dan fitur snapshot terasa revolusioner, tetapi konsep pemisahan package/service dan Flake membingungkan
Saat memasang KDE, yang terpasang hanya konfigurasi minimal sehingga perlu pengaturan tambahan, dan dokumentasinya juga berbeda-beda tiap versi sehingga sulit diikuti
Pada akhirnya saya menyerah karena butuh mesin yang stabil, tetapi untuk administrator sistem sepertinya ini pilihan yang sangat bagus
Installer Determinate Systems mengaktifkan Flake secara default
Konfigurasi
/etc/nixosbisa dipindahkan ke repositori Git, dan dengan perintahnixos-install --flake <repo>kita bisa menerapkan konfigurasi lengkapJika dipakai bersama Home-manager, bahkan direktori pengguna juga bisa dikelola secara deklaratif
File
/etcbisa dikelola denganenvironment.etc, dan file.configdengan opsi home-managerTautan terkait: opsi environment.etc, opsi home-manager
mkOutOfStoreSymlinklalu mendapat jawaban “ini sederhana jadi tidak butuh dokumentasi”Meski begitu, kelebihan NixOS begitu besar sehingga saya sedang bermigrasi penuh secara bertahap dari homelab → laptop → desktop
Namun situasi dokumentasinya tetap terasa putus asa
Dengan kata lain, di level Nix ia menjalankan peran package.json dan lock file
Saya sudah lama menyukai NixOS, dan setelah era LLM saya makin menyukainya
Kalau saya bilang ke Codex, “ubah konfigurasi server ini supaya wildcard certificate berfungsi”, dalam 5 menit masalahnya selesai
Manajemen server yang reproducible belum pernah semudah ini
Setelah pindah ke NixOS, masa ketika saya mengandalkan apt atau brew terasa seperti teknologi zaman batu
Kecocokannya dengan alat AI seperti Copilot juga sangat bagus
Untuk menyelesaikan masalah, kita perlu pemahaman yang lebih dalam dibanding Linux biasa
Sebagai gantinya, kompleksitasnya dibayar di awal sekaligus
Yang terbaik adalah bisa melakukan instalasi sementara dengan nix-shell, atau melihat semua package yang terpasang dari satu file konfigurasi
Berkat snapshot otomatis, bereksperimen jadi tidak menakutkan. Kalau salah, cukup boot ke generasi sebelumnya
Dulu saya takut mengubah parameter kernel, tetapi sekarang saya bisa mencoba sesuka hati
Saya suka Lisp jadi sempat mempertimbangkan Guix System, tetapi dari sisi kepraktisan pemakaian, NixOS lebih baik
Saya harap NixOS tidak punya struktur filesystem yang aneh itu
Memang itu pendekatan untuk menyelesaikan masalah memakai beberapa versi Python sekaligus, tetapi bagi saya itu tidak perlu
Saya hanya ingin menjaga konfigurasi yang sama di semua mesin
Saat ini saya sedang bereksperimen dengan image Fedora bootc dan Podman, tetapi tidak adanya fitur penerapan langsung seperti
nixos-rebuild switchterasa merepotkanPada akhirnya ini adalah trade-off antara Nix yang mudah untuk eksperimen dan Fedora dengan filesystem standar
Kelebihan terbesar NixOS adalah reproducibility deterministik untuk cache CI
Tidak perlu membangun ulang package setiap saat, dan menyiapkan environment development juga sederhana
Misalnya, Tangled membangun seluruh sistem CI mereka dengan Nix, dan itu sepenuhnya menyelesaikan masalah caching di GitHub Actions
Saya tidak memakainya untuk seluruh sistem, tetapi sering memakai devenv.sh
Dengan itu saya bisa menyiapkan environment development jauh lebih sederhana daripada container lokal
Sayang sekali tidak ada cara sederhana untuk menyamakan versi seperti
.tool-versionsmilik asdfDi kalangan Nix orang bilang “itu pendekatan yang salah”, tetapi saya tetap ingin mengunci versi per komponen
pkgs.mkShellyang sederhana pun lingkungan serupa bisa dibuat, jadi saya penasaran kenapa harus memakai devenvSaya juga suka NixOS, tetapi lebih memilih Guix
Bahasa Guile terasa lebih familiar, dan dokumentasinya juga lebih baik. Saya menganggap kedua sistem ini seperti saudara
Keunggulan besarnya adalah memakai bahasa pemrograman sungguhan (Scheme)
Fondasinya jauh lebih kuat dibanding sekadar bahasa konfigurasi