Web Analytics

nothing-but-nix

⭐ 213 stars Russian by wimpysworld

🌐 Язык

Только Nix

Преобразуйте ваш GitHub Actions runner в мощную Nix ❄️ машину, безжалостно избавившись от предустановленного мусора.

GitHub Actions runner-ы предоставляют очень мало места на диске для Nix — всего около ~20ГБ. Только Nix жестко очищает ненужное ПО, давая вам 65ГБ до 130ГБ для вашего Nix store! 💪

Использование 🔧

Добавьте это действие до установки Nix в вашем рабочем процессе:

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

Требования ️✔️

Проблема: Освободить место для процветания Nix 🌱

Стандартные раннеры GitHub Actions переполнены "мусорным ПО", которое никогда не понадобится в процессе работы с Nix:

Всё это оставляет лишь ~20ГБ для вашего Nix store — едва ли достаточно для серьёзных Nix-сборок! 😞

Решение: Только Nix ️❄️

Nothing but Nix применяет радикальный подход к раннерам GitHub Actions и безжалостно возвращает дисковое пространство с помощью двухэтапной атаки:

Очистка файловой системы выполняется с помощью rmz (из проекта Fast Unix Commands (FUC)) — высокопроизводительной альтернативы rm, ускоряющей возврат пространства! ⚡ Результат? Раннер GitHub Actions с 65ГБ до 130ГБ пространства, готового для Nix! 😁

Динамический рост тома

В отличие от других решений, Nothing but Nix динамически увеличивает ваш том /nix:

Том /nix автоматически увеличивается в процессе выполнения рабочих задач 🎩🪄

Выберите своё оружие: Протокол Hatchet 🪓

Управляйте уровнем уничтожения 💥 с помощью входного параметра hatchet-protocol:

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

#### Сравнение протоколов ⚖️

| Протокол | /nix | Описание | Очистка apt | Очистка docker | Очистка snap | Очищенные файловые системы | |----------|--------|--------------------------------------------------|-------------|----------------|--------------|----------------------------| | Holster | ~65ГБ | Топор в ножнах, используем место с /mnt | Нет | Нет | Нет | Нет | | Carve | ~85ГБ | Объединяем свободное место с / и /mnt | Нет | Нет | Нет | Нет | | Cleave | ~115ГБ | Решительно удаляем крупные пакеты | Минимально | Да | Да | /opt и /usr/local | | Rampage | ~130ГБ | Безжалостно уничтожаем весь мусор | Агрессивно | Да | Да | Мухахаха! 🔥🌎 |

Выбирайте с умом:

Свидетельствуйте резню 🩸

По умолчанию процесс очистки выполняется тихо в фоновом режиме, пока ваш workflow продолжается. Но если хотите наблюдать за процессом в реальном времени:

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

Настройте безопасные зоны 🛡️

Управляйте тем, сколько пространства выделять для защиты от захвата хранилища Nix, с помощью настраиваемых размеров безопасных зон:

- 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

Эти безопасные пороги определяют, сколько пространства (в МБ) будет милостиво сохранено при очистке пространства:

Увеличьте эти значения, если вам нужно больше свободного места на файловых системах, или уменьшите их, чтобы не оставлять пощады! 😈

Передача прав владения пользователю для /nix (Указ о правах Nix) 🧑‍⚖️

Некоторые установщики или конфигурации Nix ожидают, что каталог /nix будет доступен для записи текущему пользователю. По умолчанию /nix принадлежит root. Если вам нужно передать владение пользователю (например, для некоторых скриптов установки Nix, которые не используют sudo для всех операций в /nix), вы можете включить nix-permission-edict:

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

Когда nix-permission-edict установлен в значение true, действие выполнит sudo chown -R "$(id --user)":"$(id --group)" /nix после монтирования /nix.

Настройте Nix для использования /nix/build

Это действие создаёт /nix/build для сборок derivation в Nix, чтобы использовать освобождённое пространство. Добавьте build-dir в вашу конфигурацию Nix:

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

Или с DeterminateSystems:

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

Это указывает Nix выполнять сборки на большом разделе BTRFS, а не во временной директории по умолчанию системы.

Устранение неполадок 🔍

"На устройстве не осталось места" при больших сборках

Если у вас заканчивается место при сборке, несмотря на использование только Nix, вероятно, фоновое удаление не завершилось до того, как сборка заняла все доступное пространство. Обычно это затрагивает:

Решение: Используйте witness-carnage: true, чтобы принудительно выполнить синхронное удаление. Это гарантирует, что всё пространство будет освобождено до начала сборки:

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

Это добавляет 30-180 секунд к настройке вашего рабочего процесса, но гарантирует максимальное доступное пространство, когда начинается ваша сборка.

Теперь идите и создайте что-нибудь потрясающее с этим великолепным пространством хранилища Nix! ❄️ --- Tranlated By Open Ai Tx | Last indexed: 2026-03-18 ---