Web Analytics

nothing-but-nix

⭐ 213 stars Italian by wimpysworld

🌐 Lingua

Nothing but Nix

Trasforma il tuo runner di GitHub Actions in una potenza Nix ❄️ eliminando senza pietà il software preinstallato superfluo.

I runner di GitHub Actions hanno uno spazio su disco limitato per Nix - appena ~20GB. Nothing but Nix elimina brutalmente i software non necessari, offrendoti 65GB fino a 130GB per il tuo Nix store! 💪

Utilizzo 🔧

Aggiungi questa azione prima di installare Nix nel tuo workflow:

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

Requisiti ️✔️

Il Problema: Fare Spazio a Nix per Prosperare 🌱

I runner standard di GitHub Actions sono pieni di "bloatware" che non userai mai in un workflow Nix:

Questo bloat lascia solo ~20GB per il tuo Nix store - appena sufficienti per build Nix serie! 😞

La Soluzione: Solo Nix ️❄️

Solo Nix adotta un approccio radicale ai runner GitHub Actions e recupera spazio disco senza pietà con un attacco in due fasi:

La pulizia del file system è alimentata da rmz (dal progetto Fast Unix Commands (FUC)) - un'alternativa ad alte prestazioni a rm che rende il recupero dello spazio rapidissimo! ⚡ Il risultato finale? Un runner GitHub Actions con 65GB fino a 130GB di spazio pronto per Nix! 😁

Crescita Dinamica del Volume

A differenza di altre soluzioni, Nothing but Nix espande dinamicamente il volume /nix:

Il volume /nix si espande automaticamente durante l’esecuzione del workflow 🎩🪄

Scegli la tua arma: il Protocollo Hatchet 🪓

Controlla il livello di annientamento 💥 tramite l’input hatchet-protocol:

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

#### Confronto tra Protocolli ⚖️

| Protocollo | /nix | Descrizione | Purga apt | Purga docker | Purga snap | File system eliminati | |------------|--------|--------------------------------------------------|------------|--------------|------------|--------------------------| | Holster | ~65GB | Tieni la scure nel fodero, usa spazio da /mnt | No | No | No | Nessuno | | Carve | ~85GB | Combina e crea spazio libero da / e /mnt | No | No | No | Nessuno | | Cleave | ~115GB | Tagli potenti e decisi ai pacchetti più grandi | Minima | Sì | Sì | /opt e /usr/local | | Rampage | ~130GB | Eliminazione implacabile e brutale di ogni bloat | Aggressiva | Sì | Sì | Muahahaha! 🔥🌎 |

Scegli con saggezza:

Assisti al Massacro 🩸

Per impostazione predefinita, il processo di pulizia viene eseguito silenziosamente in background mentre il tuo workflow continua. Ma se vuoi guardare lo sterminio in tempo reale:

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

Personalizza le Zone Sicure 🛡️

Controlla quanto spazio riservare dal recupero di spazio del Nix store con dimensioni personalizzate delle zone sicure:

- 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

Questi rifugi sicuri definiscono quanto spazio (in MB) verrà misericordiosamente risparmiato durante il recupero dello spazio:

Aumenta questi valori se hai bisogno di più margine sui tuoi filesystem, oppure diminuiscili per non mostrare alcuna pietà! 😈

Concedi la proprietà utente di /nix (Editto sui permessi Nix) 🧑‍⚖️

Alcuni installer o configurazioni di Nix si aspettano che la directory /nix sia scrivibile dall’utente corrente. Di default, /nix è di proprietà di root. Se hai bisogno della proprietà utente (ad es. per alcuni script di installazione Nix che non usano sudo per tutte le operazioni all’interno di /nix), puoi abilitare nix-permission-edict:

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

Quando nix-permission-edict è impostato su true, l'azione eseguirà sudo chown -R "$(id --user)":"$(id --group)" /nix dopo aver montato /nix.

Configurare Nix per usare /nix/build

Questa azione crea /nix/build affinché le build delle derivazioni Nix utilizzino lo spazio recuperato. Aggiungi build-dir alla tua configurazione di Nix:

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

Oppure con DeterminateSystems:

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

Questo indica a Nix di eseguire le build sul grande volume BTRFS invece che sulla directory temporanea predefinita del sistema.

Risoluzione dei problemi 🔍

"Spazio esaurito sul dispositivo" durante build di grandi dimensioni

Se la tua build esaurisce lo spazio nonostante l'uso esclusivo di Nix, è probabile che la pulizia in background non sia stata completata prima che la build consumi lo spazio disponibile. Questo problema interessa comunemente:

Soluzione: Usa witness-carnage: true per forzare la pulizia sincrona. Questo garantisce che tutto lo spazio venga recuperato prima che inizi la build:

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

Questo aggiunge 30-180 secondi alla configurazione del tuo workflow, ma garantisce che sia disponibile il massimo spazio quando il build inizia.

Ora vai e costruisci qualcosa di straordinario con tutto quello splendido spazio nello store Nix! ❄️ --- Tranlated By Open Ai Tx | Last indexed: 2026-03-18 ---