dev.nix রেফারেন্স

এই পৃষ্ঠায় আপনার ওয়ার্কস্পেস এনভায়রনমেন্ট কনফিগারেশন ফাইলের স্কিমা সম্পর্কিত বিস্তারিত তথ্য রয়েছে, যা সর্বদা .idx/dev.nix এ অবস্থিত থাকা উচিত।

নিক্স ভাষা সম্পর্কে জানতে, অফিসিয়াল নিক্স ল্যাঙ্গুয়েজ টিউটোরিয়ালটি দেখুন।

প্যাকেজগুলি

পরিবেশে ইনস্টল করার জন্য প্যাকেজসমূহ।

আপনি ইনস্টল করার জন্য প্যাকেজ নির্বাচন করতে pkgs আর্গুমেন্টটি ব্যবহার করতে পারেন, যেমন pkgs.python3 । মনে রাখবেন যে pkgs এর বিষয়বস্তু নির্বাচিত channel অপশনের উপর নির্ভর করে।

উদাহরণ:

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

আপনি এখানে উপলব্ধ প্যাকেজগুলি অনুসন্ধান করতে পারেন: স্থিতিশীল (stable ) অথবা অস্থিতিশীল (unstable )।

ধরণ: প্যাকেজের তালিকা

ডিফল্ট: [ ]

চ্যানেল

ব্যবহারের জন্য nixpkgs চ্যানেল।

এই চ্যানেলটি pkgs আর্গুমেন্টের বিষয়বস্তু নির্ধারণ করে।

ধরণ: স্ট্রিং (উদাহরণস্বরূপ, "stable-24.11", "stable-25.05", "unstable")

ডিফল্ট: "stable-24.11"

পরিবেশ

ডেভেলপার এনভায়রনমেন্টের অভ্যন্তরে সেট করা এনভায়রনমেন্ট ভেরিয়েবলগুলো।

এগুলো আপনার সমস্ত শেল এবং প্রিভিউ সার্ভারে ছড়িয়ে দেওয়া হয়। আপনার অ্যাপ্লিকেশনের জন্য যদি একটি নির্দিষ্ট সেট ভেরিয়েবলের প্রয়োজন হয়, তবে এনভায়রনমেন্ট ভেরিয়েবল বিশেষভাবে কার্যকর হতে পারে।

প্রতিটি ভেরিয়েবলের মান একটি স্ট্রিং অথবা একাধিক স্ট্রিং-এর একটি তালিকা হতে পারে। শেষোক্তটি কোলন চিহ্ন দ্বারা বিভক্ত করে সংযুক্ত করা হয়।

PATH অবশ্যই একটি তালিকা হতে হবে, কারণ এটি সর্বদা সম্প্রসারিত হয় এবং কখনও সম্পূর্ণরূপে প্রতিস্থাপিত হয় না।

উদাহরণ:

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

ধরণ: অ্যাট্রিবিউট সেট ((স্ট্রিং-এর তালিকা) বা যেকোনো কিছু)

ডিফল্ট: { }

idx.extensions

আপনার IDX ওয়ার্কস্পেসে যে কোড এক্সটেনশনগুলো ইনস্টল করতে চান।

এটি পূর্ণাঙ্গ এক্সটেনশন আইডিগুলোর একটি তালিকা, যেমন ${publisherId}.${extensionId}

আপনি Open VSX Registry- তে উপলব্ধ এক্সটেনশনগুলির একটি তালিকা খুঁজে নিতে পারেন এবং সেগুলিকে আপনার dev.nix ফাইলে ${publisherId}.${extensionId} ব্যবহার করে যুক্ত করতে পারেন।

ধরণ: তালিকা (অ-খালি স্ট্রিং বা পাথ)

ডিফল্ট: [ ]

idx.previews.enable

IDX প্রিভিউ সক্রিয় করতে এটিকে ' true তে সেট করুন।

এই ফিচারটি আপনার অ্যাপগুলো তৈরি করার সময়েই স্বয়ংক্রিয়ভাবে চালানো এবং রিলোড করার একটি উপায় প্রদান করে।

ধরণ: বুলিয়ান

ডিফল্ট: true

উদাহরণ: true

idx.previews.previews

কনফিগারেশনগুলির পূর্বরূপ।

আপনার ডেভেলপার পরিবেশে IDX যে কমান্ডগুলো সম্পাদন করে, তা নির্ধারণ করুন।

উদাহরণ:

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

ধরণ: (সাবমডিউল)-এর অ্যাট্রিবিউট সেট

ডিফল্ট: { }

idx.previews.previews.<name>.activity

অ্যান্ড্রয়েড লঞ্চ অ্যাক্টিভিটি

টাইপ: স্ট্রিং

ডিফল্ট: ""

idx.previews.previews.<name>.command

কার্যকর করার কমান্ড

ধরণ: স্ট্রিং এর তালিকা

ডিফল্ট: [ ]

idx.previews.previews.<name>.cwd

কার্যকরী ডিরেক্টরি

টাইপ: স্ট্রিং

ডিফল্ট: ""

idx.previews.previews.<name>.env

সেট করার জন্য এনভায়রনমেন্ট ভেরিয়েবল।

ধরণ: স্ট্রিং এর অ্যাট্রিবিউট সেট

ডিফল্ট: { }

idx.previews.previews.<name>.manager

ব্যবস্থাপক

ধরণ: 'web', 'flutter', 'android', 'gradle' এর মধ্যে যেকোনো একটি

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 = [ স্ট্রিং ];}))

ডিফল্ট: { }

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 = [ স্ট্রিং ];}))

ডিফল্ট: { }

আমদানি

আপনি একটি ইম্পোর্টেড ফাইল দিয়ে আপনার dev.nix ফাইলটি সম্প্রসারিত করতে পারেন।

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

dev.nix এ একটি কাস্টম .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;
    };

নিম্নলিখিত বিভাগগুলিতে সমস্ত সমর্থিত পরিষেবা এবং তাদের কনফিগারযোগ্য বিকল্পগুলির তালিকা দেওয়া হয়েছে।

services.docker.enable

রুটলেস ডকার সক্রিয় করা হবে কিনা।

ধরণ: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.mongodb.enable

MongoDB সার্ভার সক্রিয় করা হবে কিনা।

ধরণ: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.mongodb.package

ব্যবহার করার জন্য MongoDB প্যাকেজ।

ধরণ: প্যাকেজ

ডিফল্ট: <derivation mongodb-6.0.11>

services.mongodb.port

Mongod যে পোর্টে শুনবে, তা কনফিগার করে।

ডিফল্টরূপে tcp নিষ্ক্রিয় থাকে এবং Mongod শুধুমাত্র /tmp/mongodb/mongodb.sock-এ শোনে।

সংযোগ করতে, mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock সংযোগ স্ট্রিংটি ব্যবহার করুন।

ধরণ: ১৬ বিটের অচিহ্নিত পূর্ণসংখ্যা; ০ থেকে ৬৫৫৩৫-এর মধ্যে (উভয়ই অন্তর্ভুক্ত)

ডিফল্ট: 0

services.mysql.enable

MySQL সার্ভার সক্রিয় করা হবে কিনা।

সার্ভারটি 'root' নামক একটি পাসওয়ার্ডবিহীন ব্যবহারকারী দিয়ে চালু করা হয়। তাই অতিরিক্ত ব্যবহারকারী এবং ডাটাবেস তৈরি করতে mysql -u root ব্যবহার করুন।

ধরণ: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.mysql.package

ব্যবহার করার জন্য MySQL প্যাকেজ।

ধরণ: প্যাকেজ

ডিফল্ট: pkgs.mysql

উদাহরণ: pkgs.mysql80

services.postgres.enable

PostgreSQL সার্ভার সক্রিয় করা হবে কিনা।

ধরণ: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.postgres.enableTcp

Postgres-কে TCP-তে শোনার জন্য সক্ষম করা হবে কিনা।

ধরণ: বুলিয়ান

ডিফল্ট: true

উদাহরণ: true

services.postgres.package

ব্যবহার করার জন্য PostgreSQL প্যাকেজ।

ধরণ: প্যাকেজ

ডিফল্ট: pkgs.postgresql

উদাহরণ: pkgs.postgresql_15

services.postgres.extensions

ইনস্টল করার জন্য পোস্টগ্রেস এক্সটেনশনসমূহ।

ধরণ: তালিকা (এর মধ্যে যেকোনো একটি "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

গুগল পাব/সাব এমুলেটর চালু করা হবে কিনা।

এমুলেটর ব্যবহারের বিষয়ে আরও তথ্য এখানে পাওয়া যাবে: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator ।

ধরণ: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

পরিষেবা.পাবসাব.পোর্ট

পাব/সাব যে পোর্টে শুনবে, তা কনফিগার করে।

ধরণ: ১৬ বিটের অচিহ্নিত পূর্ণসংখ্যা; ০ থেকে ৬৫৫৩৫-এর মধ্যে (উভয়ই অন্তর্ভুক্ত)

ডিফল্ট: 8085

পরিষেবা.পাবসাব.প্রকল্প-আইডি

পাব/সাব এমুলেটর চালানোর জন্য ব্যবহৃত প্রজেক্ট আইডি। এই প্রজেক্টটি শুধুমাত্র পরীক্ষার জন্য, এটির অস্তিত্ব থাকা আবশ্যক নয় এবং এটি কেবল স্থানীয়ভাবে ব্যবহৃত হয়।

ধরণ: [az][a-z0-9-]{5,29} প্যাটার্নের সাথে মেলে এমন স্ট্রিং

ডিফল্ট: "idx-pubsub-emulator"

services.redis.enable

রেডিস সার্ভার সক্রিয় করা হবে কিনা।

ধরণ: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.redis.port

রেডিস কোন পোর্টে শুনবে তা কনফিগার করে।

ডিফল্টরূপে টিসিপি নিষ্ক্রিয় থাকে এবং রেডিস শুধুমাত্র /tmp/redis/redis.sock-এ শোনে।

ধরণ: ১৬ বিটের অচিহ্নিত পূর্ণসংখ্যা; ০ থেকে ৬৫৫৩৫-এর মধ্যে (উভয়ই অন্তর্ভুক্ত)

ডিফল্ট: 0

services.spanner.enable

গুগল ক্লাউড স্প্যানার এমুলেটর সক্রিয় করা হবে কিনা।

ধরণ: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

পরিষেবা.স্প্যানার.ফল্ট-ইনজেকশন

ট্রানজ্যাকশনে র‍্যান্ডম ফল্ট ইনজেকশন সক্ষম করা হবে কিনা।

ধরণ: বুলিয়ান

ডিফল্ট: false

উদাহরণ: true

services.spanner.grpc-port

যে TCP পোর্টের সাথে এমুলেটরটি সংযুক্ত করা উচিত।

ধরণ: ১৬ বিটের অচিহ্নিত পূর্ণসংখ্যা; ০ থেকে ৬৫৫৩৫-এর মধ্যে (উভয়ই অন্তর্ভুক্ত)

ডিফল্ট: 9010

পরিষেবা.স্প্যানার.রেস্ট-পোর্ট

যে পোর্টে REST অনুরোধগুলি পরিবেশন করা হয়

ধরণ: ১৬ বিটের অচিহ্নিত পূর্ণসংখ্যা; ০ থেকে ৬৫৫৩৫-এর মধ্যে (উভয়ই অন্তর্ভুক্ত)

ডিফল্ট: 9020