dev.nix का रेफ़रंस

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

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

पैकेज

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

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

उदाहरण:

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

उपलब्ध पैकेज यहां खोजे जा सकते हैं: स्टेबल या अनस्टेबल.

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

डिफ़ॉल्ट: [ ]

चैनल

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

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

टाइप: स्ट्रिंग (उदाहरण के लिए, "stable-24.11", "stable-25.05", "unstable")

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

env

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

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

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

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

उदाहरण:

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

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

डिफ़ॉल्ट: { }

idx.extensions

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

यह पूरी तरह से क्वालिफ़ाइड एक्सटेंशन आईडी की सूची है. उदाहरण के लिए, ${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

Android लॉन्च ऐक्टिविटी

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

डिफ़ॉल्ट: ""

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

Workspace बनाने और पहली बार खोलने पर एक्ज़ीक्यूट किए जाने वाले कमांड.

यह डेवलपमेंट एनवायरमेंट सेट अप करने में काम आ सकता है. उदाहरण के लिए, यहां हम 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

Workspace खोलने पर एक्ज़ीक्यूट किए जाने वाले कमांड.

यह बिल्ड वॉचर शुरू करने में काम आ सकता है. उदाहरण के लिए, यहां हम दो कमांड को चलाने के लिए बता रहे हैं:

{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
    

टाइप: पाथ की सूची

डिफ़ॉल्ट: [ ]

सेवाएं

Workspace खुलने पर चालू की जाने वाली सामान्य सेवाएं.

उदाहरण के लिए, Postgres को चालू करने और pgvector एक्सटेंशन का इस्तेमाल करने के लिए, dev.nix में यह जोड़ें:

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

यहां दिए गए सेक्शन में, इस्तेमाल की जा सकने वाली सभी सेवाओं और उनके कॉन्फ़िगर किए जा सकने वाले विकल्पों की सूची दी गई है.

services.docker.enable

रूटलेस 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