Web Analytics

nothing-but-nix

⭐ 213 stars Vietnamese by wimpysworld

🌐 Ngôn ngữ

Nothing but Nix

Biến runner GitHub Actions của bạn thành một cỗ máy Nix ❄️ mạnh mẽ bằng cách loại bỏ triệt để phần mềm dư thừa được cài sẵn.

Các runner GitHub Actions chỉ cung cấp dung lượng đĩa rất hạn chế cho Nix - chỉ khoảng ~20GB. Nothing but Nix loại bỏ hoàn toàn phần mềm không cần thiết, giúp bạn có 65GB đến 130GB dành cho kho lưu trữ Nix của mình! 💪

Sử dụng 🔧

Thêm hành động này trước khi cài đặt Nix trong quy trình làm việc của bạn:

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

Yêu cầu ️✔️

Vấn đề: Tạo Không Gian Cho Nix Phát Triển 🌱

Runner tiêu chuẩn của GitHub Actions chứa đầy "bloatware" mà bạn sẽ không bao giờ sử dụng trong quy trình Nix:

Việc này chỉ để lại ~20GB cho kho Nix của bạn - không đủ cho các bản dựng Nix nghiêm túc! 😞

Giải pháp: Chỉ Có Nix ️❄️

Chỉ Có Nix sử dụng phương pháp dọn dẹp triệt để runner của GitHub Actions và thu hồi không gian ổ đĩa bằng một cuộc tấn công hai giai đoạn:

Việc dọn dẹp hệ thống tập tin được thực hiện bởi rmz (từ dự án Fast Unix Commands (FUC)) - một lựa chọn thay thế hiệu suất cao cho rm giúp thu hồi không gian siêu nhanh! ⚡ Kết quả cuối cùng? Một runner GitHub Actions với 65GB đến 130GB không gian sẵn sàng cho Nix! 😁

Tăng trưởng động của phân vùng

Không giống như các giải pháp khác, Nothing but Nix mở rộng phân vùng /nix của bạn một cách động:

Phân vùng /nix sẽ tự động mở rộng trong quá trình thực thi workflow 🎩🪄

Chọn Vũ Khí Của Bạn: Giao Thức Hatchet 🪓

Kiểm soát mức độ hủy diệt 💥 với tham số đầu vào hatchet-protocol:

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

#### So sánh các giao thức ⚖️

| Giao thức | /nix | Mô tả | Xóa apt | Xóa docker | Xóa snap | Hệ thống tập tin bị xóa | |-----------|--------|--------------------------------------------------|------------|--------------|------------|------------------------------| | Holster | ~65GB | Giữ lưỡi rìu trong bao, dùng dung lượng từ /mnt| Không | Không | Không | Không có | | Carve | ~85GB | Kết hợp và tận dụng không gian trống từ //mnt | Không | Không | Không | Không có | | Cleave | ~115GB | Cắt mạnh và dứt khoát các gói lớn | Tối thiểu | Có | Có | /opt/usr/local | | Rampage | ~130GB | Loại bỏ toàn bộ rác một cách tàn bạo, không khoan nhượng | Mạnh tay | Có | Có | Muahahaha! 🔥🌎 |

Hãy lựa chọn cẩn thận:

Chứng kiến sự tàn sát 🩸

Theo mặc định, quá trình xóa diễn ra âm thầm trong nền khi workflow của bạn tiếp tục. Nhưng nếu bạn muốn xem cảnh tàn sát trực tiếp:

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

Tùy chỉnh Khu vực An toàn 🛡️

Kiểm soát lượng không gian cần dành ra khỏi việc chiếm dụng của kho Nix bằng kích thước khu vực an toàn tùy chỉnh:

- 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
Những vùng an toàn này xác định dung lượng không gian (tính bằng MB) sẽ được khoan dung giữ lại trong quá trình thu hồi không gian: Tăng các giá trị này nếu bạn cần thêm không gian an toàn trên hệ thống tệp của mình, hoặc giảm chúng để không khoan nhượng! 😈

Cấp quyền sở hữu thư mục /nix cho người dùng (Sắc lệnh quyền hạn Nix) 🧑‍⚖️

Một số trình cài đặt hoặc cấu hình Nix mong muốn thư mục /nix có thể ghi bởi người dùng hiện tại. Theo mặc định, /nix thuộc sở hữu của root. Nếu bạn cần quyền sở hữu của người dùng (ví dụ, cho một số script cài đặt Nix không sử dụng sudo cho tất cả thao tác trong /nix), bạn có thể kích hoạt nix-permission-edict:

- uses: wimpysworld/nothing-but-nix@main
  with:
    nix-permission-edict: true  # Default: false
Khi nix-permission-edict được đặt thành true, hành động này sẽ chạy lệnh sudo chown -R "$(id --user)":"$(id --group)" /nix sau khi gắn kết /nix.

Cấu hình Nix để sử dụng /nix/build

Hành động này tạo /nix/build để các bản dựng Nix derivation sử dụng không gian đã thu hồi. Thêm build-dir vào cấu hình Nix của bạn:

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

Hoặc với DeterminateSystems:

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

Điều này hướng dẫn Nix thực hiện các bản dựng trên phân vùng BTRFS lớn thay vì thư mục tạm thời mặc định của hệ thống.

Khắc phục sự cố 🔍

"No space left on device" trong quá trình build lớn

Nếu bản dựng của bạn hết dung lượng dù chỉ sử dụng Nothing but Nix, có thể là do quá trình dọn dẹp nền chưa hoàn thành trước khi bản dựng của bạn sử dụng hết không gian còn lại. Điều này thường ảnh hưởng đến:

Giải pháp: Sử dụng witness-carnage: true để buộc dọn dẹp đồng bộ. Điều này đảm bảo toàn bộ dung lượng được thu hồi trước khi bản dựng của bạn bắt đầu:

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

Điều này thêm 30-180 giây vào quá trình thiết lập workflow của bạn, nhưng đảm bảo có tối đa không gian khi quá trình build bắt đầu.

Bây giờ hãy tạo ra điều tuyệt vời với toàn bộ không gian Nix store tuyệt vời đó! ❄️ --- Tranlated By Open Ai Tx | Last indexed: 2026-03-18 ---