Web Analytics

nothing-but-nix

⭐ 213 stars Indonesian by wimpysworld

🌐 Bahasa

Nothing but Nix

Ubah runner GitHub Actions Anda menjadi mesin Nix ❄️ yang tangguh dengan memangkas habis bloatware yang sudah terpasang.

Runner GitHub Actions hadir dengan ruang disk yang sangat terbatas untuk Nix - hanya sekitar ~20GB. Nothing but Nix secara brutal membersihkan perangkat lunak yang tidak perlu, memberi Anda 65GB hingga 130GB untuk Nix store Anda! 💪

Penggunaan 🔧

Tambahkan aksi ini sebelum menginstal Nix dalam alur kerja Anda:

jobs:
  build:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    steps:
      
  • uses: actions/checkout@v4
  • uses: wimpysworld/nothing-but-nix@main
  • name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
  • name: Run Nix
run: | nix --version # Your Nix-powered steps here...

Persyaratan ️✔️

Masalah: Membuat Ruang untuk Nix Berkembang 🌱

Runner standar GitHub Actions dipenuhi dengan "bloatware" yang tidak akan pernah Anda gunakan dalam workflow Nix:

Bloat ini hanya menyisakan ~20GB untuk Nix store Anda - nyaris tidak cukup untuk build Nix yang serius! 😞

Solusi: Hanya Nix ️❄️

Hanya Nix mengambil pendekatan "scorched-earth" pada runner GitHub Actions dan tanpa ampun merebut kembali ruang disk menggunakan serangan dua fase:

Pembersihan sistem file didukung oleh rmz (dari proyek Fast Unix Commands (FUC)) - alternatif berkinerja tinggi untuk rm yang membuat perebutan ruang sangat cepat! ⚡ Hasil akhirnya? Runner GitHub Actions dengan 65GB hingga 130GB ruang siap Nix! 😁

Pertumbuhan Volume Dinamis

Tidak seperti solusi lain, Nothing but Nix memperbesar volume /nix Anda secara dinamis:

Volume /nix secara otomatis bertambah selama eksekusi workflow 🎩🪄

Pilih Senjatamu: Protokol Hatchet 🪓

Kendalikan tingkat penghancuran 💥 dengan input hatchet-protocol:

- uses: wimpysworld/nothing-but-nix@main
  with:
    hatchet-protocol: 'cleave'  # Options: holster, carve, cleave (default), rampage

#### Perbandingan Protokol ⚖️

| Protokol | /nix | Deskripsi | Hapus apt | Hapus docker | Hapus snap | Sistem file yang dihapus | |----------|--------|-----------------------------------------------------|------------|--------------|------------|-----------------------------| | Holster | ~65GB | Simpan kapak, gunakan ruang dari /mnt | Tidak | Tidak | Tidak | Tidak ada | | Carve | ~85GB | Gabungkan dan ramu ruang bebas dari / dan /mnt | Tidak | Tidak | Tidak | Tidak ada | | Cleave | ~115GB | Potong paket besar secara kuat dan tegas | Minimal | Ya | Ya | /opt dan /usr/local | | Rampage | ~130GB | Penghapusan brutal dan tanpa ampun terhadap bloat | Agresif | Ya | Ya | Muahahaha! 🔥🌎 |

Pilih dengan bijak:

Saksikan Kebengisan 🩸

Secara default, proses penghapusan berjalan diam-diam di latar belakang saat workflow Anda berlanjut. Namun jika Anda ingin menonton prosesnya secara real-time:

- uses: wimpysworld/nothing-but-nix@main
  with:
    ️hatchet-protocol: 'cleave'
    witness-carnage: true  # Default: false

Kustomisasi Safe Havens 🛡️

Kendalikan berapa banyak ruang yang ingin disisakan dari pengambilan ruang Nix store dengan ukuran safe haven yang dapat dikustomisasi:

- uses: wimpysworld/nothing-but-nix@main
  with:
    ️hatchet-protocol: 'cleave'
    root-safe-haven: '3072'   # Reserve 3GB on the / filesystem
    mnt-safe-haven: '2048'    # Reserve 2GB on the /mnt filesystem

Tempat aman ini menentukan berapa banyak ruang (dalam MB) yang akan disisakan dengan murah hati selama proses reclaiming ruang:

Tingkatkan nilai-nilai ini jika Anda membutuhkan lebih banyak ruang lega di sistem file Anda, atau turunkan untuk tidak memberi ampun! 😈

Berikan Kepemilikan Pengguna pada /nix (Nix Permission Edict) 🧑‍⚖️

Beberapa installer atau konfigurasi Nix mengharapkan direktori /nix dapat ditulis oleh pengguna saat ini. Secara default, /nix dimiliki oleh root. Jika Anda membutuhkan kepemilikan pengguna (misalnya, untuk beberapa skrip installer Nix tertentu yang tidak menggunakan sudo untuk semua operasi di dalam /nix), Anda dapat mengaktifkan nix-permission-edict:

- uses: wimpysworld/nothing-but-nix@main
  with:
    nix-permission-edict: true  # Default: false

Ketika nix-permission-edict disetel ke true, aksi akan menjalankan sudo chown -R "$(id --user)":"$(id --group)" /nix setelah melakukan mount pada /nix.

Konfigurasikan Nix untuk menggunakan /nix/build

Aksi ini membuat /nix/build agar build derivasi Nix dapat menggunakan ruang yang sudah direklamasi. Tambahkan build-dir ke konfigurasi Nix Anda:

- uses: cachix/install-nix-action@v31
  with:
    extra_nix_config: |
      build-dir = /nix/build

Atau dengan DeterminateSystems:

- uses: DeterminateSystems/nix-installer-action@main
  with:
    extra-conf: |
      build-dir = /nix/build

Ini mengarahkan Nix untuk melakukan build pada volume BTRFS besar daripada direktori sementara default sistem.

Pemecahan Masalah 🔍

"Tidak ada ruang tersisa pada perangkat" selama build besar

Jika build Anda kehabisan ruang meskipun hanya menggunakan Nix, kemungkinan besar karena proses pembersihan latar belakang belum selesai sebelum build Anda menggunakan ruang yang tersedia. Ini biasanya mempengaruhi:

Solusi: Gunakan witness-carnage: true untuk memaksa pembersihan sinkron. Ini memastikan semua ruang dibersihkan sebelum build Anda dimulai:

- uses: wimpysworld/nothing-but-nix@main
  with:
    hatchet-protocol: 'rampage'
    witness-carnage: true

Ini menambah 30-180 detik pada penyiapan alur kerja Anda, tetapi menjamin ruang maksimum tersedia saat build Anda dimulai.

Sekarang pergi dan buat sesuatu yang menakjubkan dengan semua ruang Nix store yang luar biasa itu! ❄️ --- Tranlated By Open Ai Tx | Last indexed: 2026-03-18 ---