Web Analytics

nothing-but-nix

⭐ 213 stars Korean by wimpysworld

🌐 언어

Nothing but Nix

GitHub Actions 러너에서 불필요한 사전 설치 소프트웨어를 대폭 제거하여 Nix ❄️ 전용 파워하우스로 변신시키세요.

GitHub Actions 러너는 Nix를 위한 디스크 공간이 매우 적습니다. 겨우 ~20GB에 불과합니다. Nothing but Nix불필요한 소프트웨어를 과감하게 정리하여 Nix 스토어에 65GB에서 130GB의 공간을 제공합니다! 💪

사용법 🔧

이 작업을 워크플로우에서 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 워크플로우에서는 절대 쓰지 않을 "불필요한 소프트웨어"가 가득합니다:

이런 불필요한 요소들 때문에 Nix 저장소에는 약 20GB 정도만 남아, 본격적인 Nix 빌드에는 턱없이 부족합니다! 😞

해결책: 오직 Nix만을 위해 ️❄️

Nothing but Nix는 GitHub Actions 러너의 디스크 공간을 두 단계로 과감하게 되찾아오는 전략을 사용합니다:

파일 시스템 정리는 Fast Unix Commands (FUC) 프로젝트의 고성능 rm 대체 도구인 rmz로 이뤄집니다! ⚡ 최종 결과? 65GB에서 130GB까지 Nix 전용 공간을 가진 GitHub Actions 러너가 완성됩니다! 😁

동적 볼륨 확장

다른 솔루션과 달리 Nothing but Nix/nix 볼륨을 동적으로 확장합니다:

/nix 볼륨은 워크플로우 실행 중에 자동으로 확장됩니다 🎩🪄

무기 선택: Hatchet Protocol 🪓

hatchet-protocol 입력으로 파괴 수준 💥을 제어하세요:

- uses: wimpysworld/nothing-but-nix@main
  with:
    hatchet-protocol: 'cleave'  # Options: holster, carve, cleave (default), rampage
#### 프로토콜 비교 ⚖️

| 프로토콜 | /nix | 설명 | apt 정리 | 도커 정리 | 스냅 정리 | 정리된 파일 시스템 | |----------|--------|--------------------------------------------------|------------|--------------|------------|-------------------------| | Holster | ~65GB | 도끼를 칼집에 넣고 /mnt의 공간 사용 | 아니요 | 아니요 | 아니요 | 없음 | | Carve | ~85GB | //mnt의 빈 공간을 조합하여 사용 | 아니요 | 아니요 | 아니요 | 없음 | | Cleave | ~115GB | 대용량 패키지를 강력하고 결정적으로 잘라내기 | 최소 | 예 | 예 | /opt/usr/local | | Rampage | ~130GB | 모든 불필요한 요소를 가차 없이 제거 | 적극적 | 예 | 예 | 무하하하! 🔥🌎 |

신중히 선택하세요:

참혹한 현장을 목격하라 🩸

기본적으로 정리 과정은 백그라운드에서 조용히 실행되며 작업 흐름은 계속됩니다. 하지만 실시간으로 처참한 광경을 보고 싶다면:

- 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

이러한 안전 구역은 공간 회수 시 얼마나 많은 공간(MB 단위)을 관대하게 남길지 정의합니다:

파일시스템에 더 많은 여유 공간이 필요하면 이 값을 늘리고, 관대함 없이 공간을 확보하려면 줄이세요! 😈

/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-edicttrue로 설정되면, 액션은 /nix를 마운트한 후 sudo chown -R "$(id --user)":"$(id --group)" /nix를 실행합니다.

Nix가 /nix/build를 사용하도록 설정하기

이 액션은 Nix 파생 빌드에서 회수된 공간을 사용하기 위해 /nix/build를 생성합니다. Nix 설정에 build-dir를 추가하세요:

- 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 볼륨에서 빌드를 수행하도록 지시합니다.

문제 해결 🔍

대규모 빌드 중 "장치에 공간이 없습니다"

Nothing but 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 ---