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"];
  };
}

टाइप: ((स्ट्रिंग की सूची) या किसी भी चीज़) का एट्रिब्यूट सेट

डिफ़ॉल्ट: { }

idx.extensions

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

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

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

टाइप: (खाली नहीं होने वाली स्ट्रिंग या पाथ) की सूची

डिफ़ॉल्ट: [ ]

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

Android Launch Activity

टाइप: स्ट्रिंग

डिफ़ॉल्ट: ""

idx.previews.previews.<name>.command

एक्ज़ीक्यूट करने के लिए निर्देश

टाइप: स्ट्रिंग की सूची

डिफ़ॉल्ट: [ ]

idx.previews.previews.<name>.cwd

वर्किंग डायरेक्ट्री

टाइप: स्ट्रिंग

डिफ़ॉल्ट: ""

idx.previews.previews.<name>.env

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

टाइप: स्ट्रिंग का एट्रिब्यूट सेट

डिफ़ॉल्ट: { }

idx.previews.previews.<name>.manager

मैनेजर

टाइप: "वेब", "फ़्लटर", "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

Rootless docker को चालू करना है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.mongodb.enable

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

टाइप: बूलियन

डिफ़ॉल्ट: false

उदाहरण: true

services.mongodb.package

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

टाइप: पैकेज

डिफ़ॉल्ट: <derivation mongodb-6.0.11>

services.mongodb.port

Mongod के लिए पोर्ट को कॉन्फ़िगर करता है.

डिफ़ॉल्ट रूप से, टीसीपी बंद रहता है और 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 एमुलेटर को चालू करना है या नहीं.

टाइप: बूलियन

डिफ़ॉल्ट: 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