تخطَّ إلى المحتوى

devenv - بيئات مطور Nix الإعلانية

devenv - بيئات مطور Nix الإعلانية

ينشئ devenv (من قبل Cachix) بيئات تطوير سريعة وإعلانية وقابلة للتكرار وقابلة للتكوين باستخدام Nix مباشرة. على عكس الأدوات التي تخفي Nix وراء JSON، فإن devenv يعتنق لغة Nix للحصول على تكوينه مما يعطيك قوة ومرونة أكثر: اللغات والحزم والخدمات (قواعس البيانات والمخابئ) والعمليات طويلة الأجل والسيناريوهات ومتغيرات البيئة والخطافات السابقة للالتزام/git — كلها محددة في واحد devenv.nix. إنه الاختيار عندما تريد القدرة والمرونة الكاملة في Nix مع طبقة جاهزة للاستخدام وودية للمطورين.

التثبيت

الطريقةالأمر
المتطلبNix مع فعّل flakes
تثبيتnix profile install nixpkgs#devenv (أو عبر تعليمات Cachix)
Cachixموصى به للتخزين المؤقت الثنائي السريع
التحققdevenv version

الشروع في العمل

الأمرالوصف
devenv initScaffold devenv.nix + devenv.yaml
devenv shellأدخل البيئة
devenv upبدء العمليات/الخدمات المحددة
devenv testتشغيل الاختبارات/الفحوصات المكونة
devenv updateتحديث المدخلات (إصدارات أحدث دبوس)
devenv gcجمع القمامة البيئات القديمة

التكوين (devenv.nix)

{ pkgs, ... }:
{
  # الحزم المتاحة في الصدفة
  packages = [ pkgs.git pkgs.jq ];

  # اللغات (سلاسل أدوات مدارة)
  languages.javascript.enable = true;
  languages.python = {
    enable = true;
    version = "3.12";
  };

  # الخدمات
  services.postgres.enable = true;
  services.redis.enable = true;

  # متغيرات Env
  env.APP_ENV = "development";

  # السيناريوهات
  scripts.hello.exec = "echo مرحبا من devenv";

  # العمليات طويلة الأجل
  processes.web.exec = "npm run dev";

  # خطافات Git (قبل الالتزام)
  pre-commit.hooks = {
    prettier.enable = true;
    ruff.enable = true;
  };
}

كتل البناء الرئيسية

كتلةالغرض
packagesحزم Nix التعسفية في الصدفة
languages.*دعم لغة من الدرجة الأولى (node, python, go, rust, …)
services.*قواعد البيانات/المخابئ (postgres, redis, mysql, mongodb, …)
processes.*أوامر طويلة المدى تدار بـ devenv up
scripts.*أوامر مسماة قابلة للتشغيل في الصدفة
env.*متغيرات البيئة
pre-commit.hooks.*تكاملات خطافات قبل الالتزام بـ Git

الخدمات والعمليات

الأمرالوصف
devenv upبدء جميع processes و services
devenv up -dابدأ في الخلفية
devenv processes downعمليات التوقف
services.postgres.enable = true;إضافة Postgres مدارة
services.postgres.initialDatabasesبذر قواعد البيانات عند البداية

خطافات Git (قبل الالتزام)

يدمج devenv خطافات قبل الالتزام بشكل إعلاني — تمكين خطاف وتشغيله على الالتزام.

مثال خطافالتشغيل
prettier.enableتنسيق JS/TS/إلخ.
ruff.enableLint Python
nixpkgs-fmt.enableتنسيق Nix
shellcheck.enableفحص نصوص shell

CI والحاويات

الاستخدامالطريقة
CIdevenv test / devenv shell -- <cmd> للبيئات المطابقة
الحاوياتdevenv container build ينتج صور OCI
direnv.envrc مع use devenv دخول تلقائي على cd
Flakesقابلة للتكوين مع نظام Nix flake الأوسع

سير العمل العام

# بيئة كاملة قابلة للتكرار: لغة + قاعدة بيانات + عملية
devenv init
# edit devenv.nix: تمكين python, services.postgres, processes.web
devenv shell        # الأدوات المتاحة
devenv up           # postgres + عملية الويب تعمل

# بناء حاوية من نفس التعريف
devenv container build web

devenv مقابل Devbox مقابل Nix الخام

الجانبdevenvDevboxNix (خام)
التكوينلغة NixJSONلغة Nix
القوةعالية (Nix الكاملة)متوسطالأعلى
الخدمات/العملياتمدمج غنيخدمات أساسيةDIY
منحنى التعلممعتدل (Nix)لطيفشديد
الأفضل لـبيئات إعلانية قويةبيئات قابلة للتكرار سهلةتحكم كامل

إذا كانت بناء جملة Nix حاجزاً، فإن Devbox تقدم بديلاً قائماً على JSON على نفس الأساس؛ انظر Nix للقاعدة.

الموارد