3 poin oleh GN⁺ 2024-03-14 | 1 komentar | Bagikan ke WhatsApp
  • 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
    • macOS: brew install flox atau file instalasi .pkg
    • Linux: .deb untuk Debian/Ubuntu, .rpm untuk Fedora/RHEL
    • Windows: menggunakan paket Linux di WSL2
  • Alur penggunaan dasar adalah membuat lingkungan di dalam proyek, memasang paket yang diperlukan, lalu mengaktifkan lingkungan
    • flox init: membuat lingkungan di proyek
    • flox install python3 nodejs: memasang paket ke lingkungan
    • flox activate: masuk ke lingkungan
  • Contoh README menunjukkan bahwa di dalam lingkungan yang aktif, python3 --version berjalan sebagai Python 3.13.13 dan node --version sebagai v24.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 init dan 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 containerize membuat 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
  • Pertanyaan terkait keamanan diterima di security@flox.dev
  • Lisensi Flox CLI adalah GPLv2

1 komentar

 
GN⁺ 2024-03-14
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

    • Terima kasih atas masukannya. Bentuk gratis dan open source yang kami umumkan hari ini adalah salah satu alasan besar kami memulai Flox, dan ke depannya kami berencana memasukkan lebih banyak hal
      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
    • Mengejutkan kalian mendapat 24 juta dolar. Saya belum terlalu melihat jalan menuju exit 2,4 miliar dolar dari sini, tapi semoga sukses
  • 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”

    • Kalau yang dimaksud adalah kalimat “Flox dimulai saat D. E. Shaw Group mengadopsi Nix, dan dengan membuat Nix lebih mudah bagi pengguna baru, nilainya cepat terbukti”, itu terdengar berlawanan dengan interpretasi awal Anda
    • Kalimat itu tidak berarti Nix mudah bagi pengguna baru, melainkan terbaca sebagai Flox membuat Nix menjadi mudah
    • Pengalaman saya persis sama. Saya sudah cukup lama mencoba NixOS, tetapi tidak pernah terbiasa dengan .nix atau flakes
      Konsep 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
    • Saya menyukai Nix dan juga cukup banyak berkontribusi paket ke repositori nix, tetapi saya tidak akan pernah menyebutnya mudah
      Karena punya latar belakang Haskell, rasanya memang lebih familier, tetapi sintaksnya sendiri pun tidak intuitif bagi pengguna baru
    • Sangat setuju. Keunggulannya terlihat, tetapi kurva belajar awalnya luar biasa curam
      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 otomatis
    Saat 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/store dan bagaimana mengelolanya
    Saya penasaran bagaimana rencananya menangani kompleksitas lapisan bawah seperti ini

    • Jika mendukung rollback dan riwayat, disk memang pasti bisa penuh. Di Nix, biasanya banyak GC root menunjuk ke profil dan paket sehingga tidak bisa dibersihkan
      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 agresif
      Strateginya 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
    • Saya jadi bertanya-tanya bagaimana jika dibandingkan dengan Docker atau Bazel
      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
    • Nix mendukung garbage collection
      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
    • Di kantor pun kami mengalami masalah yang sama dengan Bazel. Setelah beberapa bulan, ruang disk di mesin development mulai kurang
    • Cukup atur agar garbage collection Nix berjalan setiap 30 menit
  • 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 shellHook panjang ke dalam sebuah flake agar Rust-Analyzer berjalan dengan benar; saya penasaran bagaimana pengaturan semacam ini bisa dilakukan di Flox
    Apakah 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

    • Bagian untuk turun ke “Nix sungguhan” saat diperlukan sudah kami bahas, dan rencananya adalah memungkinkan penggunaan Nix itu sendiri ketika dibutuhkan kemampuan tambahan
      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-shell biasa atau nix develop

    • Saya karyawan Flox. Kalau mulai dari hubungannya dengan tooling Nix, tujuannya adalah menjadi lebih ramah pengguna
      Kami 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, dengan nix develop, Anda harus mengedit ekspresi Nix
      nix develop masuk ke shell bash, sedangkan flox activate bisa masuk ke shell bash atau zsh, dan kami juga berencana menambahkan dukungan fish
      Mengelola 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 -r
      Jika 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/default lalu menggunakannya dengan flox activate -r mkenigs/default
      Menurut saya ini jauh lebih mudah dicerna daripada memberikan tautan flake.nix kepada orang yang tidak tahu bahasa ekspresi Nix
    • Dengan kata lain, menurut saya masing-masing engineer lebih baik mempelajari teknologi dasar dan tooling yang menyertainya
      Ada 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 develop akan tetap ada selama Nix Flakes bertahan, dan ada insentif untuk menyediakan jalur migrasi ke cara berikutnya
      Yang 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
    • Atau ada juga https://devenv.sh
  • 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?

    • Saya hanya ingin environment yang bersih dan dapat diulang untuk tiap proyek. Saya beberapa kali mencoba mulai memakai Nix, tetapi selalu kewalahan karena Nix melakukan terlalu banyak hal
      Ini terlihat 100 kali lebih sederhana bagi saya
    • Kami memahami bahwa Nix menyelesaikan banyak masalah, dan sebenarnya kami bertaruh pada kemampuannya. Karena itu kami juga mencurahkan banyak upaya pada Nix itu sendiri
      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
    • Jauh lebih mudah meyakinkan rekan kerja untuk memakai flox atau devenv daripada meyakinkan mereka memakai 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?

    • Terima kasih atas pertanyaannya. Ini topik yang cocok dibahas mendalam sambil minum bir kalau Anda datang ke Bay Area
      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 sudah membaik. Hampir semua, atau bahkan semua solusi yang tercantum di sini sepertinya memakai flakes secara internal: https://news.ycombinator.com/item?id=39696038
      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
    • Saya tidak tahu ada orang yang sekarang menyarankan untuk tidak memakai flakes
      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
    • Referensi: rencana untuk menstabilkan CLI baru dan Flakes secara bertahap https://github.com/NixOS/rfcs/pull/136
  • 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/bin
    Tidak 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 activate berada di source atau konfigurasi Flox
    Sambil 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

    • Sepertinya Anda melewatkan tab Nix/Generic dan Nix/NixOS di https://flox.dev/docs/install-flox/. Saya penasaran apakah itu memenuhi kasus penggunaan berdampingan yang Anda maksud
      Menurut saya cara terbaik memakai fish saat ini adalah FLOX_SHELL=zsh flox activate -- fish. Alias tidak didukung, tetapi sebagian besar seharusnya berfungsi
      Saya 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