Web Analytics

nothing-but-nix

⭐ 213 stars Thai by wimpysworld

🌐 ภาษา

Nothing but Nix

เปลี่ยน GitHub Actions runner ของคุณให้กลายเป็นศูนย์พลังงาน Nix ❄️ ด้วยการกำจัดซอฟต์แวร์ที่ติดตั้งมาเกินความจำเป็นอย่างเด็ดขาด

GitHub Actions runner มีพื้นที่ดิสก์สำหรับ Nix เพียงเล็กน้อย ประมาณ ~20GB เท่านั้น Nothing but Nix กำจัดซอฟต์แวร์ที่ไม่จำเป็นอย่างโหดเหี้ยม ให้คุณมีพื้นที่สำหรับ Nix store 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 runners มาตรฐานเต็มไปด้วย "bloatware" ที่คุณจะไม่ได้ใช้ในการทำงานกับ Nix:

สิ่งเหล่านี้ทำให้เหลือพื้นที่ ~20GB สำหรับ Nix store เท่านั้น - แทบจะไม่เพียงพอสำหรับการ build Nix อย่างจริงจัง! 😞

ทางออก: มีแค่ Nix เท่านั้น ️❄️

Nothing but Nix ใช้วิธี "เผาไร่" กับ GitHub Actions runners และทวงคืนพื้นที่ดิสก์อย่างโหดเหี้ยมด้วยการโจมตีสองระยะ:

การล้างระบบไฟล์นี้ขับเคลื่อนด้วย rmz (จากโครงการ Fast Unix Commands (FUC)) - ทางเลือกที่มีประสิทธิภาพสูงแทน rm ที่ทำให้การทวงคืนพื้นที่เร็วสุดๆ! ⚡ ผลลัพธ์สุดท้าย? GitHub Actions runner ที่มีพื้นที่พร้อมใช้กับ Nix 65GB ถึง 130GB! 😁

การเติบโตของ volume แบบไดนามิก

แตกต่างจากโซลูชันอื่น ๆ Nothing but Nix จะขยายปริมาณ /nix ของคุณแบบไดนามิก:

ปริมาณ /nix จะ ขยายโดยอัตโนมัติขณะทำงาน 🎩🪄

เลือกอาวุธของคุณ: Hatchet Protocol 🪓

ควบคุมระดับการทำลายล้าง 💥 ด้วย input 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 | กำจัดขยะทุกอย่างอย่างโหดเหี้ยม | รุนแรง | ใช่ | ใช่ | มูอาฮาฮาฮา! 🔥🌎 |

เลือกให้ดี:

เห็นกับตา เลือดสาด 🩸

โดยปกติ กระบวนการ purge จะทำงานเงียบ ๆ เบื้องหลังขณะ workflow ของคุณดำเนินต่อ แต่ถ้าคุณอยากดูการล้างบางแบบ real-time:

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

ปรับแต่ง Safe Havens 🛡️

ควบคุมพื้นที่ที่ต้องกันไว้จากการจับจองของ Nix store ด้วยขนาด Safe Haven ที่กำหนดเอง:

- 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 การดำเนินการจะรันคำสั่ง sudo chown -R "$(id --user)":"$(id --group)" /nix หลังจากเมานต์ /nix

กำหนดค่า Nix ให้ใช้ /nix/build

การดำเนินการนี้จะสร้าง /nix/build สำหรับการสร้าง Nix derivation เพื่อใช้พื้นที่ที่ถูกเรียกคืน เพิ่ม 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 ทำการ build บน volume BTRFS ขนาดใหญ่แทนที่จะเป็นไดเรกทอรีชั่วคราวเริ่มต้นของระบบ

การแก้ไขปัญหา 🔍

"ไม่มีพื้นที่ว่างบนอุปกรณ์" ระหว่างการ build ขนาดใหญ่

หากการ build ของคุณพื้นที่เต็มทั้งที่ใช้แต่ Nix น่าจะเป็นเพราะการลบข้อมูลเบื้องหลังยังไม่เสร็จสิ้นก่อนที่ build ของคุณจะใช้พื้นที่ว่างหมด ปัญหานี้มักเกิดกับ:

วิธีแก้: ใช้ witness-carnage: true เพื่อบังคับให้มีการลบข้อมูลแบบ synchronous วิธีนี้จะรับประกันว่าพื้นที่ทั้งหมดจะถูกเคลียร์ ก่อน ที่ build ของคุณจะเริ่ม:

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

สิ่งนี้จะเพิ่มเวลา 30-180 วินาทีในการตั้งค่าการทำงานของคุณ แต่รับประกันว่าพื้นที่สูงสุดจะพร้อมใช้งานเมื่อการสร้างของคุณเริ่มต้น

ตอนนี้ไปสร้างสิ่งที่ยอดเยี่ยมด้วยพื้นที่ Nix store อันรุ่งเรืองทั้งหมดนั้น! ❄️ --- Tranlated By Open Ai Tx | Last indexed: 2026-03-18 ---