Web Analytics

nothing-but-nix

⭐ 213 stars French by wimpysworld

🌐 Langue

Rien que Nix

Transformez votre runner GitHub Actions en une centrale Nix ❄️ en éliminant impitoyablement les logiciels préinstallés inutiles.

Les runners GitHub Actions offrent peu d’espace disque pour Nix - à peine ~20GB. Rien que Nix purge sans pitié les logiciels superflus, vous offrant 65GB à 130GB pour votre magasin Nix ! 💪

Utilisation 🔧

Ajoutez cette action avant d’installer Nix dans votre 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...

Exigences ️✔️

Le problème : Faire de la place pour que Nix s’épanouisse 🌱

Les runners GitHub Actions standards sont remplis de "bloatware" que vous n’utiliserez jamais dans un workflow Nix :

Cette surcharge ne laisse qu’environ 20 Go pour votre store Nix — à peine assez pour des builds Nix sérieux ! 😞

La solution : Que Nix et rien d’autre ️❄️

Que Nix et rien d’autre adopte une approche radicale sur les runners GitHub Actions et récupère sans pitié l’espace disque avec une attaque en deux phases :

La purge du système de fichiers est alimentée par rmz (du projet Fast Unix Commands (FUC)) — une alternative haute performance à rm qui accélère la récupération d’espace ! ⚡ Le résultat final ? Un runner GitHub Actions avec 65 Go à 130 Go d’espace prêt pour Nix ! 😁

Extension dynamique du volume

Contrairement aux autres solutions, Nothing but Nix fait évoluer dynamiquement votre volume /nix :

Le volume /nix grandit automatiquement pendant l’exécution du flux de travail 🎩🪄

Choisissez votre arme : le protocole Hatchet 🪓

Contrôlez le niveau d’anéantissement 💥 avec l’entrée hatchet-protocol :

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

#### Comparaison des Protocoles ⚖️

| Protocole | /nix | Description | Purger apt | Purger docker | Purger snap | Systèmes de fichiers purgés | |-----------|--------|----------------------------------------------------|-------------|---------------|-------------|-------------------------------| | Holster | ~65Go | Garder la hache dans son fourreau, utiliser /mnt | Non | Non | Non | Aucun | | Carve | ~85Go | Fusionner l’espace libre de / et /mnt | Non | Non | Non | Aucun | | Cleave | ~115Go | Couper puissamment les gros paquets | Minimal | Oui | Oui | /opt et /usr/local | | Rampage | ~130Go | Élimination brutale et implacable de tout surplus | Agressif | Oui | Oui | Mouahahaha ! 🔥🌎 |

Choisissez judicieusement :

Soyez témoin du carnage 🩸

Par défaut, le processus de purge s’exécute silencieusement en arrière-plan pendant que votre workflow continue. Mais si vous souhaitez assister au massacre en temps réel :

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

Personnalisez les zones sûres 🛡️

Contrôlez l’espace à préserver de l’appropriation du Nix store grâce à des tailles de zones sûres personnalisées :

- 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

Ces refuges sûrs définissent combien d’espace (en Mo) sera gracieusement épargné lors de la récupération d’espace :

Augmentez ces valeurs si vous avez besoin de plus d’espace libre sur vos systèmes de fichiers, ou diminuez-les pour ne faire preuve d’aucune pitié ! 😈

Accorder la propriété utilisateur de /nix (Édit de permission Nix) 🧑‍⚖️

Certains installateurs ou configurations Nix attendent que le répertoire /nix soit accessible en écriture par l’utilisateur courant. Par défaut, /nix appartient à root. Si vous avez besoin de la propriété utilisateur (par exemple, pour certains scripts d’installation Nix qui n’utilisent pas sudo pour toutes les opérations dans /nix), vous pouvez activer le nix-permission-edict :

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

Lorsque nix-permission-edict est défini sur true, l’action exécutera sudo chown -R "$(id --user)":"$(id --group)" /nix après le montage de /nix.

Configurer Nix pour utiliser /nix/build

Cette action crée /nix/build pour que les constructions de dérivations Nix utilisent l’espace récupéré. Ajoutez build-dir à votre configuration Nix :

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

Ou avec DeterminateSystems :

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

Cela indique à Nix d'effectuer les compilations sur le grand volume BTRFS plutôt que sur le répertoire temporaire par défaut du système.

Dépannage 🔍

"Plus d'espace disponible sur le périphérique" lors de grandes compilations

Si votre compilation manque d'espace malgré l'utilisation exclusive de Nix, c'est probablement parce que la purge en arrière-plan n'a pas terminé avant que votre compilation consomme l'espace disponible. Cela affecte souvent :

Solution : Utilisez witness-carnage: true pour forcer une purge synchrone. Cela garantit que tout l'espace est récupéré avant le démarrage de votre compilation :

- uses: wimpysworld/nothing-but-nix@main
  with:
    hatchet-protocol: 'rampage'
    witness-carnage: true
Cela ajoute 30 à 180 secondes à la configuration de votre workflow, mais garantit que l'espace maximal est disponible lorsque votre build commence.

Allez maintenant créer quelque chose d'incroyable avec tout cet espace glorieux du Nix store ! ❄️

--- Tranlated By Open Ai Tx | Last indexed: 2026-03-18 ---