Web Analytics

nothing-but-nix

⭐ 126 stars Simplified Chinese by wimpysworld

🌐 语言

Nothing but Nix

通过无情清除预装臃肿,将你的 GitHub Actions runner 变成 Nix ❄️ 强力引擎。

GitHub Actions runner 为 Nix 提供的磁盘空间非常有限——只有大约 20GB。 Nothing but Nix 会残酷地清理不必要的软件,让你的 Nix 存储空间提升到 65GB 到 130GB!💪

用法 🔧

在工作流中安装 Nix 之前,添加此 Action:

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 替代品,使空间回收速度快如闪电!⚡ 最终结果?一个拥有 65GB 到 130GB Nix 准备空间的 GitHub Actions 运行器!😁

动态卷增长

与其他方案不同,唯有 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 | ~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-edict 设置为 true 时,操作将在挂载 /nix 后运行 sudo chown -R "$(id --user)":"$(id --group)" /nix

现在,利用所有那辉煌的 Nix 存储空间去构建一些惊人的东西吧!❄️

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