การอ้างอิง dev.nix

หน้านี้มีรายละเอียดเกี่ยวกับสคีมาสำหรับไฟล์การกำหนดค่าสภาพแวดล้อมของพื้นที่ทำงาน ซึ่งควรอยู่ที่ .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

ตัวแปรสภาพแวดล้อมที่ตั้งค่าไว้ในสภาพแวดล้อมของนักพัฒนาซอฟต์แวร์

ตัวแปรเหล่านี้จะเผยแพร่ไปยัง Shell ทั้งหมดและเซิร์ฟเวอร์สำหรับดูตัวอย่าง ตัวแปรสภาพแวดล้อมมีประโยชน์อย่างยิ่งหากแอปพลิเคชันของคุณต้องใช้ตัวแปรชุดหนึ่งที่เฉพาะเจาะจง

ค่าของตัวแปรแต่ละรายการอาจเป็นสตริงหรือรายการสตริง โดยระบบจะเชื่อมสตริงเข้าด้วยกันและคั่นด้วยอักขระโคลอน

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

ตั้งค่าเป็น true เพื่อเปิดใช้การแสดงตัวอย่าง IDX

ฟีเจอร์นี้ช่วยให้คุณเรียกใช้และโหลดแอปอีกครั้งโดยอัตโนมัติขณะที่คุณกำลังพัฒนาแอป

ประเภท: บูลีน

ค่าเริ่มต้น: 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

คำสั่งที่จะดำเนินการเมื่อสร้างและเปิดพื้นที่ทำงานเป็นครั้งแรก

คำสั่งนี้มีประโยชน์ในการตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์ ตัวอย่างเช่น เราจะระบุ 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

คำสั่งที่จะดำเนินการทุกครั้งที่เปิดพื้นที่ทำงาน

คำสั่งนี้มีประโยชน์ในการเริ่มตัวตรวจสอบบิลด์ ตัวอย่างเช่น เราจะระบุคำสั่ง 2 รายการที่จะเรียกใช้

{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;
    };

ส่วนต่อไปนี้แสดงรายการบริการทั้งหมดที่รองรับและตัวเลือกที่กำหนดค่าได้

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 จะรอการติดต่อสื่อสารอยู่

โดยค่าเริ่มต้น ระบบจะปิดใช้ TCP และ Mongod จะรอการติดต่อสื่อสารที่ /tmp/mongodb/mongodb.sock เท่านั้น

หากต้องการเชื่อมต่อ ให้ใช้สตริงการเชื่อมต่อ mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock

ประเภท: จำนวนเต็มไม่มีเครื่องหมาย 16 บิต ระหว่าง 0 ถึง 65535 (รวมทั้ง 2 ค่า)

ค่าเริ่มต้น: 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 เพื่อรอการติดต่อสื่อสารบน TCP หรือไม่

ประเภท: บูลีน

ค่าเริ่มต้น: 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 (รวมทั้ง 2 ค่า)

ค่าเริ่มต้น: 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 จะรอการติดต่อสื่อสารอยู่

โดยค่าเริ่มต้น ระบบจะปิดใช้ TCP และ Redis จะรอการติดต่อสื่อสารที่ /tmp/redis/redis.sock เท่านั้น

ประเภท: จำนวนเต็มไม่มีเครื่องหมาย 16 บิต ระหว่าง 0 ถึง 65535 (รวมทั้ง 2 ค่า)

ค่าเริ่มต้น: 0

services.spanner.enable

จะเปิดใช้โปรแกรมจำลอง Google Cloud Spanner หรือไม่

ประเภท: บูลีน

ค่าเริ่มต้น: false

ตัวอย่าง: true

services.spanner.fault-injection

จะเปิดใช้การแทรกข้อผิดพลาดแบบสุ่มลงในธุรกรรมหรือไม่

ประเภท: บูลีน

ค่าเริ่มต้น: false

ตัวอย่าง: true

services.spanner.grpc-port

พอร์ต TCP ที่ควรผูกกับโปรแกรมจำลอง

ประเภท: จำนวนเต็มไม่มีเครื่องหมาย 16 บิต ระหว่าง 0 ถึง 65535 (รวมทั้ง 2 ค่า)

ค่าเริ่มต้น: 9010

services.spanner.rest-port

พอร์ตที่ใช้รับคำขอ REST

ประเภท: จำนวนเต็มไม่มีเครื่องหมาย 16 บิต ระหว่าง 0 ถึง 65535 (รวมทั้ง 2 ค่า)

ค่าเริ่มต้น: 9020