Dev.nix रेफ़रंस

इस पेज पर, आपके वर्कस्पेस एनवायरमेंट कॉन्फ़िगरेशन फ़ाइल के स्कीमा के बारे में जानकारी दी गई है. यह फ़ाइल हमेशा .idx/dev.nix पर होनी चाहिए.

Nix भाषा के बारे में जानने के लिए, Nix भाषा का आधिकारिक ट्यूटोरियल देखें.

पैकेज

एनवायरमेंट में इंस्टॉल किए जाने वाले पैकेज.

इंस्टॉल करने के लिए पैकेज चुनने के लिए, pkgs आर्ग्युमेंट का इस्तेमाल किया जा सकता है. उदाहरण के लिए, pkgs.python3. ध्यान दें कि pkgs का कॉन्टेंट, चुने गए channel चैनल के विकल्प पर निर्भर करता है.

उदाहरण:

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

यहाँ उपलब्ध पैकेज खोजे जा सकते हैं: stable-23.11 या unstable.

टाइप: पैकेज की सूची

डिफ़ॉल्ट: [ ]

चैनल

इस्तेमाल करने के लिए nixpkgs चैनल.

यह चैनल, pkgs आर्ग्युमेंट के कॉन्टेंट के बारे में बताता है.

टाइप: इनमें से कोई एक: "stable-23.05", "stable-23.11", "stable-24.05", "stable-24.11", "unstable"

डिफ़ॉल्ट: "stable-23.11"

env

डेवलपर एनवायरमेंट में सेट किए गए एनवायरमेंट वैरिएबल.

इन्हें आपके सभी शेल और प्रीव्यू सर्वर पर भेजा जाता है. अगर आपके ऐप्लिकेशन को वैरिएबल के किसी खास सेट की ज़रूरत है, तो एनवायरमेंट वैरिएबल खास तौर पर मददगार हो सकते हैं.

हर वैरिएबल की वैल्यू, स्ट्रिंग या स्ट्रिंग की सूची हो सकती है. बाद वाले को कोलन वर्णों के साथ जोड़ दिया जाता है.

PATH एक सूची होनी चाहिए, क्योंकि इसे हमेशा बढ़ाया जाता है और कभी भी पूरी तरह से बदला नहीं जाता.

उदाहरण:

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

टाइप: एट्रिब्यूट सेट ऑफ़ ((list of string) or anything)

डिफ़ॉल्ट: { }

idx.extensions

कोड एक्सटेंशन, जिन्हें आपको अपने IDX वर्कस्पेस में इंस्टॉल करना है.

यह पूरी तरह क्वालिफ़ाइड एक्सटेंशन आईडी की सूची है. उदाहरण के लिए, ${publisherId}.${extensionId}.

Open VSX Registry पर जाकर, उपलब्ध एक्सटेंशन की सूची देखी जा सकती है. इसके बाद, ${publisherId}.${extensionId} का इस्तेमाल करके, उन्हें अपनी dev.nix फ़ाइल में डाला जा सकता है.

टाइप: (non-empty string or path) की सूची

डिफ़ॉल्ट: [ ]

idx.previews.enable

आईडीएक्स की झलक दिखाने की सुविधा चालू करने के लिए, इसे 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

Android Launch 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 = [ 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
  ];
  # ...
}

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 का इस्तेमाल करें.

टाइप: 16 बिट का बिना हस्ताक्षर वाला पूर्णांक; 0 से 65535 के बीच (दोनों शामिल)

डिफ़ॉल्ट: 0

services.mysql.enable

MySQL सर्वर को चालू करना है या नहीं.

सर्वर को बिना पासवर्ड वाले उपयोगकर्ता रूट के साथ शुरू किया गया है. इसलिए, अतिरिक्त उपयोगकर्ता बनाने और डेटाबेस बनाने के लिए mysql -u root का इस्तेमाल करें.

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.mysql.package

इस्तेमाल किया जाने वाला MySQL पैकेज.

टाइप: पैकेज

डिफ़ॉल्ट: pkgs.mysql

उदाहरण: pkgs.mysql80

services.postgres.enable

PostgreSQL सर्वर को चालू करना है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.postgres.enableTcp

यह तय करता है कि टीसीपी पर सुनने के लिए Postgres को चालू करना है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: true

उदाहरण: true

services.postgres.package

इस्तेमाल करने के लिए PostgreSQL पैकेज.

टाइप: पैकेज

डिफ़ॉल्ट: pkgs.postgresql

उदाहरण: pkgs.postgresql_15

services.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 सुनेगा.

टाइप: 16 बिट का बिना हस्ताक्षर वाला पूर्णांक; 0 से 65535 के बीच (दोनों शामिल)

डिफ़ॉल्ट: 8085

services.pubsub.project-id

Pub/Sub एम्युलेटर को चलाने के लिए इस्तेमाल किया जाने वाला प्रोजेक्ट आईडी. यह प्रोजेक्ट सिर्फ़ टेस्टिंग के लिए है. इसका मौजूद होना ज़रूरी नहीं है और इसका इस्तेमाल सिर्फ़ स्थानीय तौर पर किया जाता है.

टाइप: स्ट्रिंग, जो [a-z][a-z0-9-]{5,29} पैटर्न से मेल खाती हो

डिफ़ॉल्ट: "idx-pubsub-emulator"

services.redis.enable

Redis सर्वर को चालू करना है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.redis.port

इस विकल्प से, Redis के उस पोर्ट को कॉन्फ़िगर किया जाता है जिस पर वह सुनेगा.

डिफ़ॉल्ट रूप से, टीसीपी बंद होता है और Redis सिर्फ़ /tmp/redis/redis.sock पर सुनता है.

टाइप: 16 बिट का बिना हस्ताक्षर वाला पूर्णांक; 0 से 65535 के बीच (दोनों शामिल)

डिफ़ॉल्ट: 0

services.spanner.enable

Google Cloud Spanner Emulator को चालू करना है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.spanner.fault-injection

लेन-देन में रैंडम फ़ॉल्ट इंजेक्शन की सुविधा चालू करनी है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.spanner.grpc-port

वह टीसीपी पोर्ट जिससे एम्युलेटर को बाइंड किया जाना चाहिए.

टाइप: 16 बिट का बिना हस्ताक्षर वाला पूर्णांक; 0 से 65535 के बीच (दोनों शामिल)

डिफ़ॉल्ट: 9010

services.spanner.rest-port

वह पोर्ट जिस पर REST अनुरोध पूरे किए जाते हैं

टाइप: 16 बिट का बिना हस्ताक्षर वाला पूर्णांक; 0 से 65535 के बीच (दोनों शामिल)

डिफ़ॉल्ट: 9020