مرجع dev.nix

این صفحه شامل جزئیاتی در مورد طرحواره فایل پیکربندی محیط فضای کاری شما است که همیشه باید در .idx/dev.nix قرار داشته باشد.

برای آشنایی با زبان Nix، به آموزش رسمی زبان Nix مراجعه کنید.

بسته‌ها

بسته‌هایی برای نصب در محیط.

شما می‌توانید از آرگومان pkgs برای انتخاب بسته‌ها جهت نصب، مثلاً pkgs.python3 ، استفاده کنید. توجه داشته باشید که محتوای pkgs به گزینه channel انتخاب شده بستگی دارد.

مثال:

{pkgs, ...}: {
  channel = "stable-23.11";
  packages = [pkgs.vim];
}

می‌توانید بسته‌های موجود را اینجا جستجو کنید: stable-23.11 یا instability .

نوع: فهرست بسته

پیش‌فرض: [ ]

کانال

کانال nixpkgs برای استفاده.

این کانال محتویات آرگومان pkgs را تعریف می‌کند.

نوع: یکی از «stable-23.05»، «stable-23.11»، «stable-24.05»، «stable-24.11»، «unstable»

پیش‌فرض: "stable-23.11"

پاکت

متغیرهای محیطی که در محیط توسعه‌دهنده تنظیم می‌شوند.

این‌ها به تمام پوسته‌های شما و سرور پیش‌نمایش منتشر می‌شوند. متغیرهای محیطی می‌توانند به ویژه در صورتی مفید باشند که برنامه شما به مجموعه‌ای خاص از متغیرها نیاز داشته باشد.

مقدار هر متغیر می‌تواند یک رشته یا لیستی از رشته‌ها باشد. مورد دوم به صورت زنجیره‌ای و با استفاده از کاراکترهای دونقطه (:) در میان آنها قرار می‌گیرد.

PATH باید یک لیست باشد، زیرا همیشه گسترش می‌یابد و هرگز به طور کامل جایگزین نمی‌شود.

مثال:

{pkgs, ...}: {
  env = {
    HELLO = "world";
    # append an entry to PATH
    PATH = ["/some/path/bin"];
  };
}

نوع: مجموعه ویژگی از ((لیستی از رشته) یا هر چیز دیگری)

پیش‌فرض: { }

افزونه‌های idx

افزونه‌های کدی که می‌خواهید در فضای کاری IDX خود نصب کنید.

این لیستی از شناسه‌های افزونه‌های کاملاً واجد شرایط است، برای مثال ${publisherId}.${extensionId} .

می‌توانید فهرستی از افزونه‌های موجود را در Open VSX Registry پیدا کنید و آن‌ها را با استفاده از ${publisherId}.${extensionId} ‎ در فایل dev.nix خود وارد کنید.

نوع: لیستی از (رشته یا مسیر غیر خالی)

پیش‌فرض: [ ]

پیش‌نمایش‌های idx.enable

برای فعال کردن پیش‌نمایش‌های IDX، این گزینه را روی true تنظیم کنید.

این ویژگی راهی برای اجرا و بارگذاری مجدد خودکار برنامه‌های شما هنگام توسعه آنها فراهم می‌کند.

نوع: بولی

پیش‌فرض: true

مثال: true

پیش‌نمایش‌های idx

پیش‌نمایش پیکربندی‌ها

دستوراتی را که IDX در محیط توسعه‌دهنده شما اجرا می‌کند، تعریف کنید.

مثال:

{pkgs, ...}: {
  idx.previews = {
    enable = true;
    previews = {
      web = {
        command = ["yes"];
        cwd = "subfolder";
        manager = "web";
        env = {
          HELLO = "world";
        };
      };
    };
  };
}

نوع: مجموعه ویژگی (زیرماژول)

پیش‌فرض: { }

پیش‌نمایش‌ها. پیش‌نمایش‌ها.<name>فعالیت idx

فعالیت راه‌اندازی اندروید

نوع: رشته

پیش‌فرض: ""

دستور idx.previews.previews<name>

دستور برای اجرا

نوع: لیست رشته‌ها

پیش‌فرض: [ ]

پیش‌نمایش‌ها. پیش‌نمایش‌ها.<name>.cwd

دایرکتوری کاری

نوع: رشته

پیش‌فرض: ""

idx.previews.previews.<name>.env

متغیرهای محیطی برای تنظیم.

نوع: مجموعه ویژگی از رشته

پیش‌فرض: { }

idx.previews.previews.<name>.manager

مدیر

نوع: یکی از «وب»، «فلاتر»، «اندروید»، «گرادل»

idx.workspace.onCreate

دستوراتی که هنگام ایجاد و باز شدن فضای کاری برای اولین بار اجرا می‌شوند.

این می‌تواند برای راه‌اندازی محیط توسعه مفید باشد. برای مثال، در اینجا ما npm install برای اجرا مشخص می‌کنیم:

{pkgs, ...}: {
  idx.workspace.onCreate = {
    npm-install = "npm install";
    # files to open when the workspace is first opened.
    default.openFiles = [ "src/index.ts" ];
  };
}

نوع: مجموعه ویژگی (مسیر یا رشته یا ({ openFiles = [ string ];}))

پیش‌فرض: { }

idx.workspace.onStart

دستوراتی که هر زمان فضای کاری باز شود، اجرا می‌شوند.

این می‌تواند برای شروع نظارت بر ساخت مفید باشد. برای مثال، در اینجا ما دو دستور را برای اجرا مشخص می‌کنیم:

{pkgs, ...}: {
  idx.workspace.onStart = {
    npm-watch-fe = "npm run watch:frontend";
    npm-watch-be = "npm run watch:backend";
    # files to open when the workspace is (re)opened.
    default.openFiles = [ "src/index.ts" ];
  };
}

نوع: مجموعه ویژگی (مسیر یا رشته یا ({ openFiles = [ string ];}))

پیش‌فرض: { }

واردات

شما می‌توانید فایل dev.nix خود را با یک فایل ایمپورت شده گسترش دهید.

# dev.nix
{ pkgs, ... }: {
  imports = [
    ./some-file.nix
  ];
  # ...
}
# some-file.nix
{ pkgs, ... }: {
  packages = [
    pkgs.python3
  ];
  # ...
}

دلایل مختلفی وجود دارد که ممکن است بخواهید یک فایل .nix سفارشی را در dev.nix وارد کنید:

  1. فایل dev.nix شما بزرگ است و می‌خواهید آن را ماژولار کنید تا قابلیت نگهداری آن بهبود یابد.

    { pkgs, ... }: {
      channel = "stable-24.11";
      # ...
      imports = [
        ./env-cfg.nix
        ./preview-config.nix
      ];
    }
    
  2. شما می‌خواهید گزینه‌های مختص محیط محلی خود را پیکربندی کنید و فایل را به لیست .gitignore خود اضافه کنید.

    # dev.nix
    { pkgs, lib, ... }: {
      # ...
    
      imports = lib.optionals (builtins.pathExists ./dev.local.nix ) [ ./dev.local.nix ];
    }
    
    #.gitignore
    .idx/dev.local.nix
    

نوع: فهرست مسیر

پیش‌فرض: [ ]

خدمات

سرویس‌های رایجی که هنگام باز شدن فضای کاری فعال می‌شوند.

برای مثال، برای فعال کردن Postgres و استفاده از افزونه pgvector ، کد زیر را به dev.nix اضافه کنید:

    services.postgres = {
      extensions = ["pgvector"];
      enable = true;
    };

بخش‌های زیر فهرستی از تمام سرویس‌های پشتیبانی‌شده و گزینه‌های قابل تنظیم آنها را ارائه می‌دهند.

فعال کردن سرویس‌ها

آیا داکر بدون ریشه فعال شود یا خیر.

نوع: بولی

پیش‌فرض: false

مثال: true

فعال کردن سرویس‌ها

آیا سرور MongoDB فعال شود یا خیر.

نوع: بولی

پیش‌فرض: false

مثال: true

بسته‌ی سرویس‌ها در مونگودی‌بی

بسته MongoDB برای استفاده.

نوع: بسته

پیش‌فرض: <derivation mongodb-6.0.11>

خدمات.mongodb.port

پورتی را که Mongod به آن گوش خواهد داد، پیکربندی می‌کند.

به طور پیش‌فرض tcp غیرفعال است و Mongod فقط به /tmp/mongodb/mongodb.sock گوش می‌دهد.

برای اتصال، از رشته‌ی اتصال mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock استفاده کنید.

نوع: عدد صحیح بدون علامت ۱۶ بیتی؛ بین ۰ تا ۶۵۵۳۵ (شامل هر دو)

پیش‌فرض: 0

فعال کردن سرویس‌ها

آیا سرور MySQL فعال شود یا خیر.

سرور با یک کاربر root بدون رمز عبور راه‌اندازی شده است. بنابراین برای ایجاد کاربران اضافی و ایجاد پایگاه‌های داده از mysql -u root استفاده کنید.

نوع: بولی

پیش‌فرض: false

مثال: true

بسته‌ی سرویس‌ها (services.mysql)

بسته MySQL برای استفاده.

نوع: بسته

پیش‌فرض: pkgs.mysql

مثال: pkgs.mysql80

فعال کردن سرویس‌ها

آیا سرور PostgreSQL فعال شود یا خیر.

نوع: بولی

پیش‌فرض: false

مثال: true

services.postgres.enableTcp

آیا Postgres را برای گوش دادن به TCP فعال کنیم یا خیر.

نوع: بولی

پیش‌فرض: true

مثال: true

بسته‌ی سرویس‌ها

بسته PostgreSQL برای استفاده.

نوع: بسته

پیش‌فرض: pkgs.postgresql

مثال: pkgs.postgresql_15

سرویس‌های postgres.extensions

افزونه‌های Postgres برای نصب.

نوع: لیستی از (یکی از "age"، "apache_datasketches"، "cstore_fdw"، "hypopg"، "jsonb_deep_sum"، "periods"، "pg_auto_failover"، "pg_bigm"، "pg_cron"، "pg_ed25519"، "pg_embedding"، "pg_hint_plan"، "pg_hll"، "pg_ivm"، "pg_net"، "pg_partman"، "pg_rational"، "pg_relusage"، "pg_repack"، "pg_safeupdate"، "pg_similarity"، "pg_topn"، "pg_uuidv7"، "pgaudit"، "pgjwt"، "pgroonga"، "pgrouting"، "pgsql-http"، "pgtap"، "pgvector"، "plpgsql_check"، "plr"، "plv8"، «postgis»، «promscale_extension»، «repmgr»، «rum»، «smlar»، «tds_fdw»، «temporal_tables»، «timescaledb»، «timescaledb-apache»، «timescaledb_toolkit»، «tsearch_extras»، «tsja»، «wal2json»)

پیش‌فرض: [ ]

مثال: [ "pgvector" "postgis" ];

services.pubsub.enable

فعال کردن یا نکردن شبیه‌ساز Google Pub/Sub.

مستندات بیشتر در مورد استفاده از شبیه‌ساز را می‌توانید در اینجا بیابید: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator.

نوع: بولی

پیش‌فرض: false

مثال: true

services.pubsub.port

پورتی را که Pub/Sub به آن گوش خواهد داد، پیکربندی می‌کند.

نوع: عدد صحیح بدون علامت ۱۶ بیتی؛ بین ۰ تا ۶۵۵۳۵ (شامل هر دو)

پیش‌فرض: 8085

services.pubsub.project-id

شناسه پروژه برای اجرای شبیه‌ساز Pub/Sub. این پروژه فقط برای آزمایش است، لازم نیست وجود داشته باشد و فقط به صورت محلی استفاده می‌شود.

نوع: رشته مطابق با الگوی [az][a-z0-9-]{5,29}

پیش‌فرض: "idx-pubsub-emulator"

فعال کردن سرویس‌ها

آیا سرور Redis فعال شود یا خیر.

نوع: بولی

پیش‌فرض: false

مثال: true

خدمات.redis.port

پورتی را که Redis به آن گوش خواهد داد، پیکربندی می‌کند.

به طور پیش‌فرض tcp غیرفعال است و redis فقط به /tmp/redis/redis.sock گوش می‌دهد.

نوع: عدد صحیح بدون علامت ۱۶ بیتی؛ بین ۰ تا ۶۵۵۳۵ (شامل هر دو)

پیش‌فرض: 0

فعال کردن سرویس‌ها

آیا شبیه‌ساز Google Cloud Spanner فعال شود یا خیر.

نوع: بولی

پیش‌فرض: false

مثال: true

تزریق خطا در سرویس‌ها

آیا تزریق خطای تصادفی در تراکنش‌ها فعال شود یا خیر.

نوع: بولی

پیش‌فرض: false

مثال: true

services.spanner.grpc-port

پورت TCP که شبیه‌ساز باید به آن متصل شود.

نوع: عدد صحیح بدون علامت ۱۶ بیتی؛ بین ۰ تا ۶۵۵۳۵ (شامل هر دو)

پیش‌فرض: 9010

services.spanner.rest-port

پورتی که درخواست‌های REST در آن ارائه می‌شوند

نوع: عدد صحیح بدون علامت ۱۶ بیتی؛ بین ۰ تا ۶۵۵۳۵ (شامل هر دو)

پیش‌فرض: 9020