Web Analytics

nothing-but-nix

⭐ 213 stars Portuguese by wimpysworld

🌐 Idioma

Nada além de Nix

Transforme seu runner do GitHub Actions em uma potência Nix ❄️ ao eliminar impiedosamente o excesso pré-instalado.

Os runners do GitHub Actions vêm com um espaço em disco escasso para o Nix – apenas ~20GB. Nada além de Nix elimina brutalmente softwares desnecessários, oferecendo 65GB a 130GB para sua loja Nix! 💪

Uso 🔧

Adicione esta ação antes de instalar o Nix em seu fluxo de trabalho:

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

Requisitos ️✔️

O Problema: Criando Espaço para o Nix Prosperar 🌱

Os runners padrão do GitHub Actions estão cheios de "bloatware" que você nunca usará em um fluxo de trabalho Nix:

Esse excesso deixa apenas ~20GB para seu repositório Nix - mal o suficiente para builds Nix sérios! 😞

A Solução: Só o Nix ️❄️

Só o Nix adota uma abordagem radical nos runners do GitHub Actions e recupera espaço no disco de forma impiedosa usando um ataque em duas fases:

A limpeza do sistema de arquivos é feita pelo rmz (do projeto Fast Unix Commands (FUC)) - uma alternativa de alta performance ao rm que torna a liberação de espaço incrivelmente rápida! ⚡ O resultado final? Um runner do GitHub Actions com 65GB a 130GB de espaço pronto para o Nix! 😁

Crescimento Dinâmico do Volume

Ao contrário de outras soluções, o Nothing but Nix expande seu volume /nix dinamicamente:

O volume /nix cresce automaticamente durante a execução do fluxo de trabalho 🎩🪄

Escolha Sua Arma: O Protocolo Hatchet 🪓

Controle o nível de aniquilação 💥 com o parâmetro hatchet-protocol:

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

#### Comparação de Protocolos ⚖️

| Protocolo | /nix | Descrição | Purge apt | Purge docker | Purge snap | Sistemas de arquivos eliminados | |-----------|--------|---------------------------------------------------|------------|--------------|------------|-------------------------------------| | Holster | ~65GB | Mantenha o machado embainhado, use espaço do /mnt | Não | Não | Não | Nenhum | | Carve | ~85GB | Crie e combine espaço livre de / e /mnt | Não | Não | Não | Nenhum | | Cleave | ~115GB | Faça cortes poderosos e decisivos em pacotes grandes | Mínimo | Sim | Sim | /opt e /usr/local | | Rampage | ~130GB | Eliminação implacável e brutal de todo o excesso | Agressivo | Sim | Sim | Muahahaha! 🔥🌎 |

Escolha com sabedoria:

Testemunhe a Carnificina 🩸

Por padrão, o processo de limpeza é executado silenciosamente em segundo plano enquanto seu fluxo de trabalho continua. Mas se quiser assistir ao massacre em tempo real:

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

Personalize Refúgios Seguros 🛡️

Controle quanto espaço reservar do avanço do Nix store com tamanhos personalizados de refúgio seguro:

- 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

Esses refúgios seguros definem quanto espaço (em MB) será misericordiosamente poupado durante a liberação de espaço:

Aumente esses valores se precisar de mais espaço livre em seus sistemas de arquivos ou diminua-os para não mostrar misericórdia! 😈

Conceder Propriedade de Usuário ao /nix (Édito de Permissão do Nix) 🧑‍⚖️

Alguns instaladores ou configurações do Nix esperam que o diretório /nix seja gravável pelo usuário atual. Por padrão, o /nix pertence ao root. Se você precisar de propriedade de usuário (por exemplo, para certos scripts de instalação do Nix que não usam sudo para todas as operações dentro de /nix), você pode ativar o nix-permission-edict:

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

Quando nix-permission-edict está definido como true, a ação executará sudo chown -R "$(id --user)":"$(id --group)" /nix após montar /nix.

Configurar o Nix para usar /nix/build

Esta ação cria /nix/build para que as compilações de derivações do Nix utilizem o espaço recuperado. Adicione build-dir à sua configuração do Nix:

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

Ou com DeterminateSystems:

- uses: DeterminateSystems/nix-installer-action@main
  with:
    extra-conf: |
      build-dir = /nix/build
Isso instrui o Nix a realizar compilações no grande volume BTRFS ao invés do diretório temporário padrão do sistema.

Solução de Problemas 🔍

"No space left on device" durante grandes compilações

Se sua compilação ficar sem espaço mesmo usando apenas Nix, provavelmente é porque a purga em segundo plano não foi concluída antes que sua compilação consumisse o espaço disponível. Isso afeta comumente:

Solução: Use witness-carnage: true para forçar a purga síncrona. Isso garante que todo o espaço seja recuperado antes do início da sua compilação:

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

Isso adiciona de 30 a 180 segundos à configuração do seu fluxo de trabalho, mas garante que o máximo de espaço esteja disponível quando sua construção começar.

Agora vá construir algo incrível com todo esse espaço glorioso do Nix store! ❄️ --- Tranlated By Open Ai Tx | Last indexed: 2026-03-18 ---