Web Analytics

nothing-but-nix

⭐ 213 stars Traditional Chinese by wimpysworld

🌐 語言

Nothing but Nix

將你的 GitHub Actions 執行器轉變為 Nix ❄️ 的強大平台,徹底清除預裝的冗餘軟體。

GitHub Actions 執行器對 Nix 可用的磁碟空間非常有限——僅有約 20GB。 Nothing but Nix 強力清除不必要的軟體,讓你獲得 65GB 到 130GB 的 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 工作流程中永遠用不到的 "臃腫軟體"

這些臃腫只剩下約 ~20GB 給你的 Nix 儲存空間——對嚴肅的 Nix 建置來說根本不夠!😞

解決方案:只剩 Nix ️❄️

只剩 Nix 對 GitHub Actions 運行器採取焦土策略,無情地回收磁碟空間,分兩階段攻擊:

檔案系統清除由 rmz(來自 Fast Unix Commands (FUC) 專案)驅動——是 rm 的高效替代方案,讓空間回收速度飛快!⚡ 最終成果?GitHub Actions 運行器擁有 65GB 到 130GB 的 Nix 專用空間!😁

動態卷增長

與其他解決方案不同,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 | 清除 docker | 清除 snap | 被清除的檔案系統 | |-----------|--------|----------------------------------------------------|-----------|--------------|------------|--------------------------| | 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 store 佔用空間中保留多少空間:

- 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 安裝腳本並未對 /nix 內的所有操作都使用 sudo),你可以啟用 nix-permission-edict

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

nix-permission-edict 設為 true 時,該動作會在掛載 /nix 後執行 sudo chown -R "$(id --user)":"$(id --group)" /nix

設定 Nix 使用 /nix/build

此動作會建立 /nix/build,讓 Nix 衍生構建使用回收的空間。請在 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 卷上執行建置,而不是系統預設的暫存目錄。

疑難排解 🔍

在大型建置期間出現「No space left on device」

如果你的建置在只使用 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 ---