Web Analytics

nothing-but-nix

⭐ 213 stars Polish by wimpysworld

🌐 Język

Nothing but Nix

Zmień swojego runnera GitHub Actions w potęgę Nix ❄️ poprzez bezwzględne usunięcie zbędnych preinstalowanych pakietów.

Runnery GitHub Actions mają niewiele miejsca na dysku dla Nix – zaledwie około ~20GB. Nothing but Nix brutalnie czyści niepotrzebne oprogramowanie, dając Ci 65GB do 130GB na Twój Nix store! 💪

Użycie 🔧

Dodaj tę akcję przed instalacją Nix w swoim przepływie pracy:

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

Wymagania ️✔️

Problem: Zrobienie miejsca, by Nix mógł rozkwitnąć 🌱

Standardowe runner'y GitHub Actions są zapchane "bloatware", którego nigdy nie użyjesz w workflow Nix:

Ten bloat zostawia tylko ~20GB dla twojego sklepu Nix - ledwo wystarczająco na poważne budowy Nix! 😞

Rozwiązanie: Tylko Nix ️❄️

Nothing but Nix stosuje taktykę "spalonej ziemi" na runner'ach GitHub Actions i bezlitośnie odzyskuje miejsce na dysku za pomocą dwufazowego ataku:

Czyszczenie systemu plików obsługiwane jest przez rmz (z projektu Fast Unix Commands (FUC)) - wydajną alternatywę dla rm, która błyskawicznie odzyskuje miejsce! ⚡ Efekt końcowy? Runner GitHub Actions z 65GB do 130GB miejsca gotowego na Nix! 😁

Dynamiczny przyrost woluminu

W przeciwieństwie do innych rozwiązań, Nothing but Nix dynamicznie powiększa wolumen /nix:

Wolumen /nix automatycznie powiększa się podczas wykonywania workflow 🎩🪄

Wybierz swoją broń: Protokół Hatchet 🪓

Kontroluj poziom anihilacji 💥 za pomocą parametru hatchet-protocol:

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

#### Porównanie protokołów ⚖️

| Protokół | /nix | Opis | Usuń apt | Usuń docker | Usuń snap | Usunięte systemy plików | |----------|--------|--------------------------------------------------|------------|--------------|------------|-----------------------------| | Holster | ~65GB | Trzymaj topór w pochwie, użyj miejsca z /mnt | Nie | Nie | Nie | Brak | | Carve | ~85GB | Zgromadź i połącz wolne miejsce z / i /mnt | Nie | Nie | Nie | Brak | | Cleave | ~115GB | Wykonaj potężne, zdecydowane cięcia dużych pakietów | Minimalnie | Tak | Tak | /opt i /usr/local | | Rampage | ~130GB | Bezlitosna, brutalna eliminacja wszelkich śmieci | Agresywne | Tak | Tak | Muahahaha! 🔥🌎 |

Wybieraj mądrze:

Obejrzyj rzeź 🩸

Domyślnie proces czyszczenia wykonuje się po cichu w tle, podczas gdy Twój workflow trwa dalej. Ale jeśli chcesz oglądać rzeźnię na żywo:

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

Dostosuj Bezpieczne Przestrzenie 🛡️

Kontroluj, ile miejsca chcesz zarezerwować przed przejęciem przez Nix store, ustalając własne rozmiary bezpiecznych przestrzeni:

- 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

Te bezpieczne strefy określają, ile miejsca (w MB) zostanie łaskawie oszczędzone podczas odzyskiwania przestrzeni:

Zwiększ te wartości, jeśli potrzebujesz więcej wolnej przestrzeni na swoich systemach plików, lub zmniejsz je, aby nie okazywać litości! 😈

Przyznanie użytkownikowi własności /nix (Dekret uprawnień Nix) 🧑‍⚖️

Niektóre instalatory lub konfiguracje Nix oczekują, że katalog /nix będzie zapisywalny przez bieżącego użytkownika. Domyślnie /nix jest własnością roota. Jeśli potrzebujesz własności użytkownika (np. dla niektórych skryptów instalacyjnych Nix, które nie używają sudo do wszystkich operacji w /nix), możesz włączyć nix-permission-edict:

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

Gdy nix-permission-edict jest ustawione na true, akcja wykona sudo chown -R "$(id --user)":"$(id --group)" /nix po zamontowaniu /nix.

Skonfiguruj Nix do używania /nix/build

Ta akcja tworzy /nix/build, aby budowy derivacji Nix mogły wykorzystać odzyskaną przestrzeń. Dodaj build-dir do swojej konfiguracji Nix:

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

Lub z DeterminateSystems:

- uses: DeterminateSystems/nix-installer-action@main
  with:
    extra-conf: |
      build-dir = /nix/build
To nakazuje Nixowi wykonywanie kompilacji na dużym wolumenie BTRFS zamiast w domyślnym katalogu tymczasowym systemu.

Rozwiązywanie problemów 🔍

"Brak miejsca na urządzeniu" podczas dużych kompilacji

Jeśli podczas kompilacji zabraknie miejsca, mimo że używasz wyłącznie Nix, prawdopodobnie czyszczenie w tle nie zostało zakończone zanim kompilacja wykorzystała dostępne miejsce. Najczęściej dotyczy to:

Rozwiązanie: Użyj witness-carnage: true, aby wymusić synchroniczne czyszczenie. Zapewnia to zwolnienie całej przestrzeni przed rozpoczęciem kompilacji:

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

To dodaje 30-180 sekund do konfiguracji przepływu pracy, ale gwarantuje maksymalną dostępną przestrzeń, gdy rozpocznie się Twoja kompilacja.

Teraz idź i zbuduj coś niesamowitego, korzystając z całej tej wspaniałej przestrzeni w magazynie Nix! ❄️ --- Tranlated By Open Ai Tx | Last indexed: 2026-03-18 ---