12 poin oleh GN⁺ 29 hari lalu | 7 komentar | Bagikan ke WhatsApp
  • 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

 
dongho42 28 hari lalu

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...

 
dongho42 28 hari lalu

Dan saya tidak terlalu ingat, apakah itu flake atau 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.

 
pmc7777 29 hari lalu

Firebase Studio juga menggunakan Nix

 
laeyoung 29 hari lalu

Oh... begitu ya!

Ngomong-ngomong, R.I.P. Firebase Studio :(

 
ztaka 29 hari lalu

Yang tahu, diam-diam sudah memakainya juga wkwkwk
Setup yang dapat direproduksi, diimplementasikan dengan bahasa deklaratif fungsional

 
ytuniverse 29 hari lalu

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.

 
GN⁺ 29 hari lalu
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”

    • Saya sudah memakai NixOS selama 3 tahun dan Claude lebih dari 1 tahun. Kombinasi keduanya benar-benar ideal
      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
    • Sejujurnya, ini terlihat seperti solusi teknis berlebihan untuk masalah yang sebenarnya tidak ada
      Perlukah memakai LLM hanya untuk memasang Hyprland? Cukup sudo dnf install hyprland
      Rasanya bukan karena Nix itu ‘ramah AI’, melainkan karena terlalu merepotkan jika ditangani langsung oleh manusia sehingga orang jadi memakai LLM
    • Saya juga punya pengalaman serupa. Dulu saya pernah memposting di HN dengan nama “ClaudeOS”, padahal sebenarnya itu kombinasi NixOS + Flakes + Claude Code
      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
    • Saya juga pernah menyuruh Claude menyelesaikan masalah konfigurasi NixOS, dan hasilnya benar-benar bagus
      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
    • Dulu Nix terlihat terlalu rumit sehingga saya menunggu sampai AI berkembang dulu
      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 penasaran apakah ada proyek yang bisa dengan mudah membuat container terisolasi berdasarkan konfigurasi NixOS saya
      Saya ingin tiap aplikasi berjalan di environment terpisah tanpa memengaruhi keseluruhan sistem
      Menurut saya NixOS adalah salah satu jalan menuju masa depan seperti itu
    • Saya sempat ingin kembali ke Fedora Bazzite, tetapi tetap di NixOS karena bisa mengimplementasikan HDR di Sway dengan lebih stabil
      GPU Nvidia juga berjalan baik, dan jauh lebih stabil dibanding Gamescope
    • Saya ingin melihat contoh bagaimana memanfaatkan nix-shell untuk menjalankan skrip Python dengan cepat. Saya masih belajar interaksi antara Python dan NixOS
  • Saya ingin lebih menyukai NixOS, tetapi masalah terbesarnya adalah kurangnya dokumentasi
    Informasi tersebar di berbagai forum, blog lama, dan issue

    • Selain itu ada dua wiki resmi (nixos.wiki, wiki.nixos.org), jadi membingungkan
      Keduanya sama-sama diperbarui, tetapi saat mencari selalu berbeda mana yang paling mutakhir
    • Dulu saya juga mengeluh soal kurangnya dokumentasi, tetapi sekarang saya menganggap kode sumber itu sendiri adalah dokumentasi
      Meng-clone nixpkgs lalu membacanya langsung adalah cara tercepat
    • ChatGPT cukup berguna untuk mengumpulkan berbagai referensi dan membuat contoh kode yang benar-benar berjalan
    • Faktanya banyak pengguna bahkan tidak membaca dokumentasi, dan menyerahkan penulisan kode Nix ke Claude Code
  • 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

    • Awalnya Flake juga terasa sulit buat saya, tetapi sebenarnya ini cara yang paling intuitif
      Installer Determinate Systems mengaktifkan Flake secara default
      Konfigurasi /etc/nixos bisa dipindahkan ke repositori Git, dan dengan perintah nixos-install --flake <repo> kita bisa menerapkan konfigurasi lengkap
      Jika dipakai bersama Home-manager, bahkan direktori pengguna juga bisa dikelola secara deklaratif
      File /etc bisa dikelola dengan environment.etc, dan file .config dengan opsi home-manager
      Tautan terkait: opsi environment.etc, opsi home-manager
    • Saya tertawa ketika mencari dokumentasi tentang mkOutOfStoreSymlink lalu 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
    • Flake punya dua peran:
      1. mendeklarasikan input dan output codebase
      2. mengunci versi (pinning) sumber input
        Dengan kata lain, di level Nix ia menjalankan peran package.json dan lock file
    • Saya heran kenapa belum ada yang memakai LLM untuk memperbaiki dokumentasinya
  • 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

    • NixOS itu 95% luar biasa, tetapi 5% sisanya sangat menyakitkan
      Untuk menyelesaikan masalah, kita perlu pemahaman yang lebih dalam dibanding Linux biasa
      Sebagai gantinya, kompleksitasnya dibayar di awal sekaligus
    • Saya sudah memakai berbagai distro Linux selama 20 tahun, tetapi NixOS adalah yang pertama memberi rasa “inilah jawaban yang benar”
      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 switch terasa merepotkan
    Pada 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

    • Memakai Nix di CI benar-benar kombinasi yang sangat pas
      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

    • Hanya saja cara pinning versi-nya tidak jelas
      Sayang sekali tidak ada cara sederhana untuk menyamakan versi seperti .tool-versions milik asdf
      Di kalangan Nix orang bilang “itu pendekatan yang salah”, tetapi saya tetap ingin mengunci versi per komponen
    • Saya penasaran apa bedanya dengan home-manager
    • Dengan pkgs.mkShell yang sederhana pun lingkungan serupa bisa dibuat, jadi saya penasaran kenapa harus memakai devenv
  • Saya juga suka NixOS, tetapi lebih memilih Guix
    Bahasa Guile terasa lebih familiar, dan dokumentasinya juga lebih baik. Saya menganggap kedua sistem ini seperti saudara

    • Menurut saya Guix layak mendapat lebih banyak perhatian
      Keunggulan besarnya adalah memakai bahasa pemrograman sungguhan (Scheme)
      Fondasinya jauh lebih kuat dibanding sekadar bahasa konfigurasi