- Flox adalah platform lingkungan perangkat lunak untuk tim engineering, yang mengelola lingkungan yang dapat direproduksi secara sama dari laptop developer hingga CI dan produksi melalui satu manifest
- Fondasinya adalah Nix, tetapi pengetahuan tentang Nix bersifat opsional; strukturnya mengurangi environment drift dengan manifest deklaratif dan input hash konten yang dikunci secara kriptografis
- Berjalan di macOS, Linux, dan Windows WSL2; dapat mencari dan memasang lebih dari 120.000 paket dari Nixpkgs serta membangun dan memublikasikan perangkat lunak sendiri sebagai paket yang dapat direproduksi
- Membuat lingkungan terisolasi per proyek melalui alur
flox init,flox install,flox activate; saat diaktifkan, tool muncul, dan saat keluar, tool menghilang sehingga sistem tetap bersih - Berfokus pada manajemen siklus hidup lingkungan di tingkat organisasi, mencakup berbagi melalui FloxHub, pembuatan image OCI, menjalankan service, SBOM·patch CVE·SCA, hingga lingkungan eksekusi deterministik untuk agen coding AI
Masalah yang ingin dipecahkan Flox
- Flox adalah platform yang mendefinisikan lingkungan pengembangan dalam satu file dan membuat lingkungan yang sama berjalan di laptop developer, CI, dan produksi
- Jika package manager tradisional berfokus pada pemasangan paket di satu mesin, Flox mengelola siklus hidup paket dan lingkungan di seluruh organisasi
- Ada tiga sifat inti
- Deklaratif: menjelaskan tool, variabel lingkungan, dan service yang dibutuhkan proyek dalam satu file
- Dapat direproduksi: definisi yang sama menghasilkan lingkungan yang sama di sistem mana pun yang didukung
- Dapat dikomposisi: lingkungan per proyek, tim, dan pipeline dapat dilapiskan
Pengguna sasaran dan lingkungan penggunaan
- Tim Platform·DevX dapat menstandardisasi toolchain di seluruh organisasi dan memperluas lingkungan acuan tanpa memaksa pembelajaran Nix
- Tim Security·AppSec dapat menangani SBOM, respons cepat terhadap CVE, asal-usul dependensi, dan build yang dapat direproduksi
- Developer dapat menggunakan lingkungan yang dapat direproduksi per proyek di macOS, Linux, dan Windows WSL2; cara kerjanya lebih mirip virtual environment daripada container atau VM
- Agen coding AI memperoleh lingkungan deterministik yang dapat membangun dan menjalankan kode hasil generasi dengan cara yang sama setiap kali
- Contoh sasarannya adalah Claude Code, Cursor, Copilot, dan Codex
Reproducibility dan keamanan supply chain
- Lingkungan Flox didefinisikan dengan manifest deklaratif dan dikunci ke input hash konten yang dipatok secara kriptografis
- Lockfile yang sama diterjemahkan menjadi paket yang sama pada setiap sistem yang didukung, sehingga lingkungan tetap identik antar-mesin
- Satu definisi lingkungan dapat digunakan di laptop developer, sandbox agen AI, CI, dan produksi
- Dapat menggunakan lebih dari 120.000 paket dari Nixpkgs
- Perangkat lunak sendiri dapat dibangun dari source menjadi paket yang dapat direproduksi dan dipublikasikan untuk digunakan seluruh tim
- Dengan reproducibility sebagai dasar, Flox mempermudah pembuatan SBOM, software composition analysis (SCA), patch kerentanan·CVE otomatis, verifikasi asal-usul dependensi, dan build yang dapat diaudit
Instalasi dan workflow dasar
- Flox CLI dipasang secara native di macOS, Linux, dan Windows WSL2
- Alur penggunaan dasar adalah membuat lingkungan di dalam proyek, memasang paket yang diperlukan, lalu mengaktifkan lingkungan
flox init: membuat lingkungan di proyekflox install python3 nodejs: memasang paket ke lingkunganflox activate: masuk ke lingkungan
- Contoh README menunjukkan bahwa di dalam lingkungan yang aktif,
python3 --versionberjalan sebagaiPython 3.13.13dannode --versionsebagaiv24.15.0 - Saat keluar dari lingkungan, tool yang terpasang menghilang, sehingga mencegah konflik antarproyek dan menjaga sistem tetap bersih
Fitur utama
- Create: membuat lingkungan deklaratif di samping kode dengan
flox initdan dapat mengaktifkannya otomatis - Search: menemukan lebih dari 120.000 paket Nixpkgs dengan
flox search - Share: melalui
flox push/flox pull, anggota tim dapat mengambil lingkungan acuan tunggal yang sama dari FloxHub - Containerize: membuat lingkungan Flox menjadi image OCI tanpa Dockerfile dengan
flox containerize - Build & publish: membangun perangkat lunak sendiri sebagai paket yang dapat direproduksi dan memublikasikannya ke tim dengan
flox build/flox publish - Services: menjalankan database, queue, dan proses background sebagai bagian dari lingkungan dengan
flox services start; service dimulai saat aktivasi dan berhenti saat keluar - Configure: mendefinisikan variabel lingkungan, shell hook, dan skrip aktivasi secara deklaratif di
manifest.toml - AI-ready: melalui flox-agentic, mendukung agen coding AI agar membangun dan menjalankan dengan dependensi yang sama di setiap eksekusi
Posisi bagi pengguna Docker dan Nix
- Flox bukan teknologi container dan bukan pengganti Docker
- Di Docker, packaging dan isolasi container sering bercampur, tetapi posisi Flox adalah bahwa packaging perangkat lunak dan metode isolasi yang dipilih harus dipisahkan
- Lingkungan Flox bekerja dengan cara yang sama di bare metal, VM, dan container
flox containerizemembuat image OCI yang berisi lingkungan perangkat lunak, dan dapat digunakan bersama Docker, Kubernetes, serta runtime container lain- Bagi pengguna Nix, Flox bukan pengganti, melainkan tool tambahan
- Menyediakan layanan terpusat FloxHub untuk lingkungan kolaboratif dan berbagi paket
- Menggabungkan activation hook, service, dan shell profile ke dalam satu file TOML deklaratif
Asal-usul dan sumber dukungan
- Flox berawal dari deployment Nix enterprise berskala besar di D.E. Shaw group, dan digunakan untuk membuat Nix lebih mudah diakses oleh organisasi engineering berskala besar
- Sumber terkait
- Documentation: tutorial, referensi, panduan
- FloxHub: eksplorasi dan berbagi lingkungan
- Discourse: pertanyaan, diskusi, pengumuman
- Blog: artikel mendalam dan workflow
- VS Code extension: mengelola lingkungan Flox dari editor
- Pertanyaan terkait keamanan diterima di
security@flox.dev - Lisensi Flox CLI adalah GPLv2
1 komentar
Komentar di Hacker News
Ron, selamat atas peluncurannya. Yang ingin saya tahu adalah seperti apa model pendapatannya
Ada CEO, perusahaan, dan karyawan, dan kalau melihat Crunchbase sepertinya kalian mendapat pendanaan 24 juta dolar, tetapi saya tidak bisa menemukan informasi harga di landing page maupun dokumentasi
Saat login ke FloxHub dengan profil GitHub pun saya tidak melihat opsi pembayaran, jadi saya penasaran dengan rencananya
Klien open source dan layanan FloxHub untuk berbagi environment yang kami umumkan hari ini akan tersedia gratis selamanya
Setelah itu, kami ingin menyediakan katalog software privat yang lebih kuat di atas Flox Catalog dasar
Jika Anda ingin mendistribusikan artefak sendiri atau membutuhkan versi paket open source yang dimodifikasi di dalam Flox, rencananya kami akan memudahkan Anda membuat katalog sendiri yang melengkapi Flox Catalog yang selalu gratis
Dalam jangka panjang, kami ingin menjual solusi enterprise dalam bentuk langganan dan layanan agar perusahaan dapat mengelola rantai pasok software mereka yang luas dan terfragmentasi dengan lebih baik, dan kami rasa masuk akal jika perusahaan ikut menanggung biaya pengembangan tool yang disesuaikan untuk enterprise
Setiap kali melihat frasa di README seperti “membuat Nix lebih mudah bagi pengguna baru” atau ungkapan serupa, saya selalu tersandung
Saya menganggap diri saya cukup kompeten, tetapi selama memakai Nix saya tidak pernah sekali pun merasa “ini mudah”
Saya sangat menyukai konsep Nix, tetapi pengalaman penggunanya buruk sekali. Mungkin tool ini yang menyelesaikan itu, tetapi untuk sampai ke titik tersebut, dokumentasinya hampir tidak ada dan kita harus berkutat dengan cara-cara yang sudah usang serta terus-menerus mengutak-atik konfigurasi, sehingga sangat membuat frustrasi
Bagaimanapun, setiap kali melihat sesuatu terkait Nix, saya jadi berpikir “saya menantikan hari ketika ini menjadi mudah”
.nixatau flakesKonsep dasarnya terus hilang dari kepala saya, jadi setiap kali menyiapkan sesuatu yang baru saya harus mencarinya lagi, dan akhirnya mengikuti panduan
Debugging masalah juga sulit, dan untuk mengetahui apa yang salah kita harus menggali command yang sangat spesifik serta filesystem yang seperti neraka
Konsepnya saya suka, tetapi dalam praktiknya terasa terlalu banyak menghalangi
Karena punya latar belakang Haskell, rasanya memang lebih familier, tetapi sintaksnya sendiri pun tidak intuitif bagi pengguna baru
Mirip saat belajar Rust, jadi sekaligus menarik juga
Masalah inti produk semacam “memberikan kekuatan Nix tanpa kurva belajar” adalah bahwa di belakangnya tetap ada Nix dan
/nix/store, dan Nix sengaja tidak membersihkannya secara otomatisSaat pengguna mencoba tool yang menyembunyikan Nix, pada akhirnya disk akan penuh, tetapi mereka tidak tahu cara mengurangi penggunaan storage, jadi sulit menyebutnya ramah pengguna
Berbeda jika pengguna tahu bahwa mereka memasang Nix dan melalui proses belajar, karena mereka bisa membangun model mental tentang apa itu
/nix/storedan bagaimana mengelolanyaSaya penasaran bagaimana rencananya menangani kompleksitas lapisan bawah seperti ini
Environment Flox bukan sekadar symbolic link, tetapi punya format deklaratif, secara internal berupa flakes, sehingga bisa dihapus dan bila perlu direproduksi kembali
Karena itu, garbage collection lebih tidak destruktif dibanding saat memakai
nix-env/nix profile, dan generasi lama bisa dibersihkan lebih agresifStrateginya adalah selalu menjamin cara deklaratif dan reproducible untuk memulihkan apa yang dibersihkan, lalu menghindari disk penuh dengan heuristik seperti ruang kosong, umur, lama tidak digunakan, dan frekuensi penggunaan rendah
Sebaliknya, di Nix saya belum pernah mengalami masalah ini. Cara membersihkan sampahnya dijelaskan dengan jelas, dan mudah juga menyelidiki apa yang tersisa serta mengapa masih tersisa
Alasan tidak diaktifkan secara default adalah karena seperti garbage collector lain, itu bisa mengganggu, dan tidak ada kebijakan yang cocok untuk semua orang
Pada akhirnya, jika GC root terlalu banyak, kita harus mengambil keputusan
Setiap kali memakai komputer, di belakang layar terjadi ribuan hal yang luar biasa kompleks, jadi saya kurang paham kenapa hanya abstraksi atas Nix yang diperlakukan istimewa
Selamat atas peluncurannya. Saya sangat menyukai Nix, tetapi saya juga mengakui bahwa pengalaman onboarding-nya, kalau dinilai baik-baik pun buruk, dan dalam kondisi terburuk bisa mengerikan
Jadi saya menyambut baik upaya untuk membuatnya lebih mudah diakses. CLI imperatif jauh lebih dekat dengan cara yang diharapkan dan terasa nyaman bagi banyak orang, jadi menurut saya ini arah yang bagus
Saya juga sangat sepakat dengan penyederhanaan proses menggunakan environment dari tempat lain
Namun, hal yang tampaknya penting tetapi belum terlihat adalah integrasi IDE. Memulai IDE dari command line di dalam environment tidak intuitif bagi banyak rekan saya, dan beberapa kali saya pernah mendiagnosisnya sebagai akar masalah sebenarnya
Saya penasaran bagaimana ceritanya ketika perlu turun ke “Nix sungguhan”. Misalnya, untuk environment yang sedikit lebih kompleks seperti menyiapkan toolchain cross-compile Rust, saya khawatir pengguna akan jatuh dari tebing
Sebagai contoh pengembangan Rust, saya pernah harus memasukkan
shellHookpanjang ke dalam sebuah flake agar Rust-Analyzer berjalan dengan benar; saya penasaran bagaimana pengaturan semacam ini bisa dilakukan di FloxApakah bagian seperti ini memang ingin diabstraksikan, atau jika tidak, bagaimana pengguna yang tidak mengenal Nix bisa menemukannya
Saya sama sekali bukan bermaksud mengatakan ini mustahil, dan saya benar-benar berharap ini berhasil, tetapi saya belum melihat jelas caranya
Saat ini pemikirannya adalah mengizinkan referensi flake pada field tertentu atau menyediakan entry point bergaya Nix
Ini belum dirilis atau didokumentasikan, jadi mohon ditunggu
Saya sepenuhnya setuju bahwa ada garis yang sangat halus antara menyembunyikan kompleksitas dan mengekspos kemampuan
Saya penasaran apa keuntungan memakai Flox dibanding
nix-shellbiasa ataunix developKami ingin orang bisa berhasil tanpa perlu mempelajari bahasa ekspresi Nix atau memahami struktur internal Nix
Kami juga menambahkan sejumlah arahan dan pemolesan. Misalnya, ada antarmuka campuran imperatif/deklaratif sehingga jika menjalankan
flox install && flox list, perubahan akan tercermin di TOML. Sebaliknya, dengannix develop, Anda harus mengedit ekspresi Nixnix developmasuk ke shell bash, sedangkanflox activatebisa masuk ke shell bash atau zsh, dan kami juga berencana menambahkan dukungan fishMengelola environment dengan Git didukung seperti pada tooling Nix, tetapi kami juga menambahkan berbagi environment dengan cara yang tidak bisa dilakukan tool tersebut, seperti
flox push/flox pull/flox activate -rJika membuat akun, Anda bisa melihat paket di environment saya di https://hub.flox.dev/mkenigs/default, dan jika punya CLI, Anda bisa mengeceknya dengan
flox list -r mkenigs/defaultlalu menggunakannya denganflox activate -r mkenigs/defaultMenurut saya ini jauh lebih mudah dicerna daripada memberikan tautan
flake.nixkepada orang yang tidak tahu bahasa ekspresi NixAda kemungkinan cukup besar tool seperti Flox atau devenv mencapai akhir masa pakai, tidak bisa mengikuti nixpkgs dengan baik, atau mengalami salah satu dari banyak bentuk software rot
Sebaliknya,
nix developakan tetap ada selama Nix Flakes bertahan, dan ada insentif untuk menyediakan jalur migrasi ke cara berikutnyaYang lebih penting, semua abstraksi pasti bocor. CLI Flox mungkin terlihat lebih rapi, tetapi pada akhirnya untuk memakainya secara efektif Anda tetap harus belajar Nix
Saya tidak melihat alasan untuk belajar dua kali lebih banyak dari yang sebenarnya diperlukan
Saya penasaran bagaimana perbandingannya dengan proyek Devbox yang sudah ada (https://www.jetpack.io/devbox)
Saya juga ingin tahu apakah Flox memiliki solusi cloud opsional, apakah bisa memasang paket Nix versi tertentu, dan bagaimana dependensi per sistem operasi ditangani
Saya sudah memakai tool semacam ini selama 5 tahun, jadi saya penasaran apa hal baru yang dibawa Flox dibanding yang sudah ada
Saya benar-benar tidak mengerti mengapa harus memakai ini alih-alih Nix biasa; bisa jelaskan?
Ini terlihat 100 kali lebih sederhana bagi saya
Namun karena Nix dibangun dari prinsip pertama agar sangat serbaguna, learning curve-nya cukup curam
Flox adalah tool yang mempersempit ruang masalah dan menyediakan abstraksi serta antarmuka yang terspesialisasi, sehingga orang bisa memanfaatkan kemampuan Nix sejak hari pertama tanpa harus menjadi pakar Nix
Saya sangat tertarik pada development environment yang dapat direproduksi, dan di tempat kerja saya juga sudah memakai dev container dengan baik selama beberapa tahun
Sekitar setahun lalu saya mendengar tentang Nix dan awalnya sangat antusias karena janjinya luar biasa, tetapi proses onboarding-nya terasa mengerikan bagi saya
Development environment yang ingin saya buat sudah jelas, tetapi dalam pendekatannya saya selalu merasa ada sesuatu yang terlewat
Senang melihat ada tool baru yang berusaha memperbaiki keseluruhan pengalaman ini, dan saya berharap jika terus mencoba, suatu hari saya akan mendapatkan feel-nya
Saya penasaran, pada momen apa Nix “klik” bagi Anda?
Apakah Anda pernah menonton video Microservices ini? https://www.youtube.com/watch?v=y8OnoxKotPQ
Saat itu saya memimpin tim produk developer di Facebook, dan memulai proyek untuk menyuntikkan kapabilitas remote ke pengembangan lokal
Ribuan developer menunggu 45 menit untuk cold build
Salah satu tahap awalnya adalah memetakan seluruh siklus hidup pengembangan perangkat lunak, dengan tujuan memahami bagian toolchain mana yang perlu kami bangun ulang
Kalau melihat papan tulis di bagian akhir video itu, seperti yang mungkin terbayang, pada momen ketika kami memvisualisasikan betapa rumitnya sistem yang telah kami buat, saya masuk ke pola pikir “tidak mungkin begini cara kita seharusnya bekerja”
Terakhir kali saya mencoba Nix, ada banyak kebingungan soal flakes
Ada tutorial yang menyuruh memakainya, sementara tempat lain bilang masih dalam pengembangan, jadi penasaran apakah situasinya sudah membaik
Menurut saya masalah flakes berasal dari dua hal
Pertama, hampir selama 5 tahun masih diberi label experimental, sehingga membingungkan pengguna baru, padahal dalam praktiknya sudah dipakai secara luas hampir di mana-mana
Kedua, tampaknya ada sentimen kurang baik antara https://determinate.systems/ dan pengguna serta pengembang lama Nix. Sepertinya Determinate Systems dikritik karena memanfaatkan Nix untuk kepentingannya sendiri tanpa mengembalikan kontribusi
Sejauh yang saya pahami, Determinate Systems yang memperkenalkan flakes, dan karena itu sebagian pihak tampaknya menolaknya
Kesimpulannya, hampir semua orang sudah mengadopsi flakes, dan panduan yang tidak memakainya kemungkinan besar sudah usang
Tautan terkait: https://discourse.nixos.org/t/introducing-flakehub/32044
Label “experimental” lebih berkaitan dengan stabilitas API daripada tingkat kematangan atau bug
Dalam situasi tertentu bisa ada masalah performa, tetapi ada workaround dan solusi permanen juga sedang dikerjakan
Meski begitu, saya banyak memakai flakes di rumah dan di kantor
Tadi malam saya mencoba Flox di macOS, dan melihat bahwa ia menginstal Nix ke profil default secara terpisah dari Nix yang dikelola Nix-Darwin di
/run/current-system/sw/bin, lalu membuat symbolic link salinan itu ke/usr/local/binTidak ada panduan untuk pengguna Nix yang sudah ada, yaitu pengguna NixOS atau pengguna distro lain yang sudah memasang Nix tetapi tidak punya format paket distro yang didukung Flox
Saya penasaran apakah ini karena Flox adalah pengelola profil pihak ketiga untuk Nix sehingga bergantung pada hal-hal seperti format manifest Nix profile yang tidak stabil, atau sebenarnya bisa dipakai bersama berbagai versi Nix tetapi belum dites saja
Saya juga ingin tahu apakah instalasi Flox berbasis Nix dianggap sebagai fitur yang akan didukung nanti
Selain itu, disebutkan bahwa dukungan fish akan datang; bisakah Anda memberi tahu di mana sebenarnya integrasi shell untuk subperintah
activateberada di source atau konfigurasi FloxSambil menunggu dukungan resmi fish, saya mencoba merangkainya sementara dengan sesuatu seperti fenv, tetapi setelah menelusuri instalasi dan source, saya tidak menemukan tempat yang jelas untuk memasangnya
Menurut saya cara terbaik memakai fish saat ini adalah
FLOX_SHELL=zsh flox activate -- fish. Alias tidak didukung, tetapi sebagian besar seharusnya berfungsiSaya juga penasaran apakah Anda benar-benar ingin mengutak-atik source, atau hanya ingin memahami strukturnya untuk membuat workaround
Pada shell selain bash atau zsh, error muncul di sekitar sini: https://github.com/flox/flox/blob/9e18a3ceaa185006bae95a4827...
Kalau Anda ingin mencoba memperbaikinya sendiri, saya dengan senang hati akan memberikan lebih banyak penjelasan latar belakang