Web Analytics

nothing-but-nix

⭐ 213 stars German by wimpysworld

🌐 Sprache

Nothing but Nix

Verwandle deinen GitHub Actions Runner in eine Nix ❄️ Power-Maschine, indem du vorinstallierten Ballast kompromisslos entfernst.

GitHub Actions Runner bieten nur wenig Speicherplatz für Nix – lediglich ~20GB. Nothing but Nix säubert brutal unnötige Software und verschafft dir 65GB bis 130GB für deinen Nix-Store! 💪

Verwendung 🔧

Fügen Sie diese Aktion vor der Installation von Nix in Ihrem Workflow hinzu:

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

Anforderungen ️✔️

Das Problem: Platz schaffen, damit Nix gedeiht 🌱

Standard GitHub Actions Runner sind vollgestopft mit "Bloatware", die du in einem Nix-Workflow niemals nutzen wirst:

Dieser Ballast lässt nur ~20GB für deinen Nix Store übrig – kaum genug für ernsthafte Nix Builds! 😞

Die Lösung: Nur Nix ️❄️

Nur Nix verfolgt einen kompromisslosen Ansatz für GitHub Actions Runner und holt erbarmungslos Speicherplatz zurück – mit einer zweistufigen Attacke:

Die Dateisystembereinigung wird von rmz (aus dem Fast Unix Commands (FUC) Projekt) angetrieben – eine leistungsstarke Alternative zu rm, die die Speicherfreigabe blitzschnell macht! ⚡ Das Endergebnis? Ein GitHub Actions Runner mit 65GB bis 130GB Nix-fertigem Speicherplatz! 😁

Dynamisches Volumenwachstum

Im Gegensatz zu anderen Lösungen wächst Nothing but Nix Ihr /nix-Volume dynamisch:

Das /nix-Volume wächst automatisch während der Workflow-Ausführung 🎩🪄

Wähle Deine Waffe: Das Hatchet Protocol 🪓

Steuere das Ausmaß der Vernichtung 💥 mit dem hatchet-protocol-Parameter:

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

#### Protokollvergleich ⚖️

| Protokoll | /nix | Beschreibung | Apt bereinigen | Docker bereinigen | Snap bereinigen | Bereinigte Dateisysteme | |-----------|--------|---------------------------------------------------|----------------|-------------------|-----------------|-----------------------------| | Holster | ~65GB | Die Axt bleibt in der Scheide, nutzt Platz von /mnt | Nein | Nein | Nein | Keine | | Carve | ~85GB | Kombiniert und gewinnt freien Speicher von / und /mnt | Nein | Nein | Nein | Keine | | Cleave | ~115GB | Mächtige, entschlossene Schnitte bei großen Paketen | Minimal | Ja | Ja | /opt und /usr/local | | Rampage | ~130GB | Unerbittliche, brutale Eliminierung allen Ballasts | Aggressiv | Ja | Ja | Muahahaha! 🔥🌎 |

Wähle mit Bedacht:

Sieh das Gemetzel 🩸

Standardmäßig läuft der Bereinigungsprozess im Hintergrund still ab, während dein Workflow weiterläuft. Aber wenn du das Gemetzel in Echtzeit sehen möchtest:

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

Sichere Zufluchtsorte anpassen 🛡️

Bestimmen Sie, wie viel Platz Sie für die Nix-Store-Landnahme freihalten möchten, mit benutzerdefinierten Größen für sichere Zufluchtsorte:

- 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

Diese Schutzbereiche legen fest, wie viel Speicherplatz (in MB) bei der Speicherbereinigung gnädig verschont bleibt:

Erhöhen Sie diese Werte, wenn Sie mehr Luft auf Ihren Dateisystemen benötigen, oder verringern Sie sie, um keine Gnade zu zeigen! 😈

Benutzerbesitz für /nix gewähren (Nix-Berechtigungsedikt) 🧑‍⚖️

Einige Nix-Installer oder -Konfigurationen erwarten, dass das Verzeichnis /nix vom aktuellen Benutzer beschreibbar ist. Standardmäßig gehört /nix root. Wenn Sie den Benutzerbesitz benötigen (z. B. für bestimmte Nix-Installer-Skripte, die nicht für alle Operationen innerhalb von /nix sudo verwenden), können Sie das nix-permission-edict aktivieren:

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

Wenn nix-permission-edict auf true gesetzt ist, führt die Aktion nach dem Einbinden von /nix den Befehl sudo chown -R "$(id --user)":"$(id --group)" /nix aus.

Konfiguriere Nix zur Nutzung von /nix/build

Diese Aktion erstellt /nix/build, damit Nix-Derivate für Builds den zurückgewonnenen Speicherplatz nutzen können. Fügen Sie build-dir zu Ihrer Nix-Konfiguration hinzu:

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

Oder mit DeterminateSystems:

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

Dies weist Nix an, Builds auf dem großen BTRFS-Volume auszuführen, anstatt im standardmäßigen temporären Verzeichnis des Systems.

Fehlerbehebung 🔍

"Kein Speicherplatz mehr auf dem Gerät" bei großen Builds

Wenn Ihr Build trotz der ausschließlichen Nutzung von Nix keinen Speicherplatz mehr hat, liegt das wahrscheinlich daran, dass das Hintergrundbereinigen nicht abgeschlossen wurde, bevor Ihr Build den verfügbaren Speicherplatz belegt hat. Dies betrifft häufig:

Lösung: Verwenden Sie witness-carnage: true, um eine synchrone Bereinigung zu erzwingen. So wird sichergestellt, dass der gesamte Speicher vor Beginn Ihres Builds freigegeben wird:

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

Dies fügt Ihrem Workflow-Setup 30-180 Sekunden hinzu, garantiert jedoch, dass beim Start Ihres Builds maximaler Speicherplatz verfügbar ist.

Jetzt bauen Sie etwas Großartiges mit all dem herrlichen Nix-Store-Speicher! ❄️ --- Tranlated By Open Ai Tx | Last indexed: 2026-03-18 ---