Web Analytics

nothing-but-nix

⭐ 126 stars English by wimpysworld

🌐 Language

Nothing but Nix

Transform your GitHub Actions runner into a Nix ❄️ powerhouse by ruthlessly slashing pre-installed bloat.

GitHub Actions runners come with meager disk space for Nix - a mere ~20GB. Nothing but Nix brutally purges unnecessary software, giving you 65GB to 130GB for your Nix store! 💪

Usage 🔧

Add this action before installing Nix in your 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...

Requirements ️✔️

The Problem: Making Room for Nix to Thrive 🌱

Standard GitHub Actions runners are stuffed with "bloatware" you'll never use in a Nix workflow:

This bloat leaves only ~20GB for your Nix store - barely enough for serious Nix builds! 😞

The Solution: Nothing but Nix ️❄️

Nothing but Nix takes a scorched-earth approach to GitHub Actions runners and mercilessly reclaims disk space using a two-phase attack:

The file system purge is powered by rmz (from the Fast Unix Commands (FUC) project) - a high-performance alternative to rm that makes space reclamation blazing fast! ⚡ The end result? A GitHub Actions runner with 65GB to 130GB of Nix-ready space! 😁

Dynamic Volume Growth

Unlike other solutions, Nothing but Nix grows your /nix volume dynamically:

The /nix volume automatically grows during workflow execution 🎩🪄

Choose Your Weapon: The Hatchet Protocol 🪓

Control the level of annihilation 💥 with the hatchet-protocol input:

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

| Protocol | /nix | Description | Purge apt | Purge docker | Purge snap | Purged file systems | |----------|--------|--------------------------------------------------|------------|--------------|------------|-------------------------| | Holster | ~65GB | Keep the hatchet sheathed, use space from /mnt | No | No | No | None | | Carve | ~85GB | Craft and combine free space from / and /mnt | No | No | No | None | | Cleave | ~115GB | Make powerful, decisive cuts to large packages | Minimal | Yes | Yes | /opt and /usr/local | | Rampage | ~130GB | Relentless, brutal elimination of all bloat | Aggressive | Yes | Yes | Muahahaha! 🔥🌎 |

Choose wisely:

Witness The Carnage 🩸

By default, the purging process executes silently in the background while your workflow continues. But if you want to watch the slaughter in real-time:

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

Customize Safe Havens 🛡️

Control how much space to spare from the Nix store land grab with custom safe haven sizes:

- 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
These safe havens define how much space (in MB) will be mercifully spared during space reclamation: Increase these values if you need more breathing room on your filesystems, or decrease them to show no mercy! 😈

Grant User Ownership of /nix (Nix Permission Edict) 🧑‍⚖️

Some Nix installers or configurations expect the /nix directory to be writable by the current user. By default, /nix is owned by root. If you need user ownership (e.g., for certain Nix installer scripts that don't use sudo for all operations within /nix), you can enable the nix-permission-edict:

- uses: wimpysworld/nothing-but-nix@main
  with:
    nix-permission-edict: true  # Default: false
When nix-permission-edict is set to true, the action will run sudo chown -R "$(id --user)":"$(id --group)" /nix after mounting /nix.

Now go and build something amazing with all that glorious Nix store space! ❄️

--- Tranlated By Open Ai Tx | Last indexed: 2025-07-24 ---