Web Analytics

nothing-but-nix

⭐ 213 stars Arabic by wimpysworld

🌐 اللغة

لا شيء سوى نكس

حوّل مشغّل GitHub Actions الخاص بك إلى قوة Nix ❄️ حقيقية من خلال إزالة البرامج المثبتة مسبقًا بلا رحمة.

يأتي مشغّل GitHub Actions بمساحة قرص ضئيلة لـ Nix — حوالي ~20 جيجابايت فقط. لا شيء سوى نكس يقوم بحذف البرامج غير الضرورية بقسوة، ليمنحك 65 جيجابايت إلى 130 جيجابايت لمخزن نكس الخاص بك! 💪

الاستخدام 🔧

أضف هذا الإجراء قبل تثبيت 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:

هذا التضخم يترك فقط ~20 جيجابايت لمخزن Nix الخاص بك - بالكاد يكفي لبناءات Nix الجادة! 😞

الحل: لا شيء سوى Nix ️❄️

لا شيء سوى Nix يتبع نهجاً حاسماً مع مشغلات GitHub Actions ويستعيد مساحة القرص بلا رحمة باستخدام هجوم من مرحلتين:

تتم عملية تطهير نظام الملفات بواسطة rmz (من مشروع Fast Unix Commands (FUC)) - بديل عالي الأداء لـ rm يجعل استعادة المساحة سريعاً جداً! ⚡ النتيجة النهائية؟ مشغل GitHub Actions مع 65 جيجابايت إلى 130 جيجابايت من المساحة الجاهزة لـ Nix! 😁

نمو الحجم الديناميكي

على عكس الحلول الأخرى، يقوم Nothing but 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

تحدد هذه المناطق الآمنة مقدار المساحة (بالميجابايت) التي سيتم استثناؤها من عملية استعادة المساحة برحمة:

قم بزيادة هذه القيم إذا كنت بحاجة إلى مساحة أكبر على أنظمة الملفات لديك، أو قللها إذا أردت عدم الرحمة! 😈

منح ملكية المستخدم لمجلد /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 من استخدام المساحة المستعادة. أضف 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 لتنفيذ عمليات البناء على وحدة تخزين BTRFS الكبيرة بدلاً من دليل الملفات المؤقت الافتراضي للنظام.

استكشاف الأخطاء وإصلاحها 🔍

"لا توجد مساحة متبقية على الجهاز" أثناء عمليات البناء الكبيرة

إذا نفدت المساحة أثناء عملية البناء على الرغم من استخدامك Nothing but 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 ---