Web Analytics

nothing-but-nix

⭐ 213 stars Persian by wimpysworld

🌐 زبان

فقط نیکس

رانر GitHub Actions خود را با تبدیل به یک Nix ❄️ قدرتمند کنید و نرم‌افزارهای از پیش نصب شده و اضافی را بی‌رحمانه حذف کنید.

رانرهای GitHub Actions فضای دیسک بسیار کمی برای Nix دارند - فقط حدود ~۲۰ گیگابایت. فقط نیکس نرم‌افزارهای غیرضروری را به طور بی‌رحمانه حذف می‌کند و به شما ۶۵ تا ۱۳۰ گیگابایت برای فروشگاه Nix می‌دهد! 💪

نحوه استفاده 🔧

این اقدام را قبل از نصب 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 باقی می‌گذارند – که برای ساخت‌های جدی Nix کافی نیست! 😞

راه‌حل: فقط Nix ️❄️

فقط Nix رویکردی سوزاننده برای رانرهای GitHub Actions اتخاذ می‌کند و بی‌رحمانه فضای دیسک را با حمله‌ای دو مرحله‌ای پس می‌گیرد:

پاکسازی فایل سیستم توسط rmz (از پروژه Fast Unix Commands (FUC)) انجام می‌شود – جایگزین قدرتمند و سریع برای rm که بازپس‌گیری فضا را بسیار سریع می‌کند! ⚡ نتیجه نهایی؟ رانر GitHub Actions با ۶۵ تا ۱۳۰ گیگابایت فضای آماده برای Nix! 😁

رشد پویا حجم

برخلاف سایر راه‌حل‌ها، فقط نیکس حجم /nix شما را به صورت پویا افزایش می‌دهد:

حجم /nix به صورت خودکار در حین اجرای جریان کاری افزایش می‌یابد 🎩🪄

سلاح خود را انتخاب کنید: پروتکل هچت 🪓

سطح نابودی 💥 را با ورودی hatchet-protocol کنترل کنید:

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

#### مقایسه پروتکل ⚖️

| پروتکل | /nix | توضیحات | پاکسازی apt | پاکسازی docker | پاکسازی snap | فایل سیستم‌های پاک شده | |----------|--------|-----------------------------------------------------|-------------|----------------|--------------|-----------------------------| | Holster | ~۶۵GB | تبر را در غلاف نگه دارید، از فضای /mnt استفاده کنید | خیر | خیر | خیر | هیچ‌کدام | | Carve | ~۸۵GB | فضای آزاد / و /mnt را ترکیب و مهیا کنید | خیر | خیر | خیر | هیچ‌کدام | | Cleave | ~۱۱۵GB | برش‌های قدرتمند و قاطع بر بسته‌های بزرگ | حداقلی | بله | بله | /opt و /usr/local | | Rampage | ~۱۳۰GB | حذف بی‌رحمانه و بی‌وقفه همه اضافات | تهاجمی | بله | بله | موهاهاها! 🔥🌎 |

عاقلانه انتخاب کنید:

شاهد کشتار باشید 🩸

به طور پیش‌فرض، فرایند پاکسازی به صورت بی‌صدا در پس‌زمینه و در حین ادامه گردش کار شما انجام می‌شود. اما اگر می‌خواهید این کشتار را به صورت زنده تماشا کنید:

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

سفارشی‌سازی مناطق امن 🛡️

کنترل کنید که چقدر فضا باید از تصرف فروشگاه نیکس با اندازه‌های سفارشی مناطق امن کنار گذاشته شود:

- 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
این پناهگاه‌های امن مشخص می‌کنند که چه مقدار فضا (بر حسب مگابایت) در هنگام بازپس‌گیری فضا با بخشش حفظ می‌شود: اگر به فضای تنفس بیشتری در فایل‌سیستم‌های خود نیاز دارید، این مقادیر را افزایش دهید، یا اگر می‌خواهید بی‌رحم باشید، آن‌ها را کاهش دهید! 😈

اعطای مالکیت کاربر بر /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 از فضای بازیابی‌شده ایجاد می‌کند. گزینه 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
این باعث می‌شود نیکس ساخت‌ها را روی حجم بزرگ BTRFS انجام دهد، نه روی دایرکتوری موقت پیش‌فرض سیستم.

رفع اشکال 🔍

"فضا روی دستگاه باقی نمانده است" هنگام ساخت‌های بزرگ

اگر با وجود استفاده از تنها نیکس، ساخت شما با کمبود فضا مواجه شود، احتمالاً به این دلیل است که پاکسازی پس‌زمینه قبل از مصرف فضای موجود توسط ساخت شما تکمیل نشده است. این مشکل معمولاً شامل موارد زیر می‌شود:

راه حل: از witness-carnage: true استفاده کنید تا پاکسازی همزمان را اجبار کنید. این کار تضمین می‌کند که تمام فضا قبل از شروع ساخت شما بازیابی شود:

- uses: wimpysworld/nothing-but-nix@main
  with:
    hatchet-protocol: 'rampage'
    witness-carnage: true
این کار ۳۰ تا ۱۸۰ ثانیه به راه‌اندازی جریان کاری شما اضافه می‌کند، اما تضمین می‌کند که بیشترین فضای ممکن هنگام شروع ساخت شما در دسترس باشد.

حالا بروید و با تمام آن فضای باشکوه فروشگاه Nix چیزی شگفت‌انگیز بسازید! ❄️

--- Tranlated By Open Ai Tx | Last indexed: 2026-03-18 ---