Trang này cung cấp thông tin chi tiết về giản đồ cho tệp cấu hình môi trường không gian làm việc. Tệp này phải luôn nằm trong .idx/dev.nix.
Để tìm hiểu về ngôn ngữ Nix, hãy xem hướng dẫn chính thức về ngôn ngữ Nix.
gói
Các gói cần cài đặt trong môi trường.
Bạn có thể dùng đối số pkgs để chọn các gói cần cài đặt, chẳng hạn như
pkgs.python3. Xin lưu ý rằng nội dung của pkgs phụ thuộc vào tuỳ chọn kênh channel đã chọn.
Ví dụ:
{pkgs, ...}: {
channel = "stable-24.11";
packages = [pkgs.vim];
}
Bạn có thể tìm kiếm các gói hiện có tại đây: stable hoặc unstable.
Loại: danh sách gói
Mặc định: [ ]
kênh
Kênh nixpkgs cần sử dụng.
Kênh này xác định nội dung của đối số pkgs.
Loại: chuỗi (ví dụ: "stable-24.11", "stable-25.05", "unstable")
Mặc định: "stable-24.11"
môi trường
Các biến môi trường được thiết lập bên trong môi trường nhà phát triển.
Các biến này được truyền đến tất cả shell và máy chủ xem trước. Biến môi trường có thể đặc biệt hữu ích nếu ứng dụng của bạn yêu cầu một tập hợp biến cụ thể.
Giá trị của mỗi biến có thể là một chuỗi hoặc một danh sách chuỗi. Giá trị sau được nối, xen kẽ với các ký tự dấu hai chấm.
PATH phải là một danh sách, vì danh sách này luôn được mở rộng và không bao giờ được thay thế hoàn toàn.
Ví dụ:
{pkgs, ...}: {
env = {
HELLO = "world";
# append an entry to PATH
PATH = ["/some/path/bin"];
};
}
Loại: tập hợp thuộc tính của ((danh sách chuỗi) hoặc bất kỳ đối tượng nào)
Mặc định: { }
idx.extensions
Các tiện ích mã mà bạn muốn cài đặt trong không gian làm việc IDX.
Đây là danh sách các mã tiện ích đủ điều kiện, chẳng hạn như ${publisherId}.${extensionId}.
Bạn có thể tìm danh sách các tiện ích hiện có trên
Sổ đăng ký Open VSX và nhập các tiện ích đó vào tệp dev.nix
bằng ${publisherId}.${extensionId}.
Loại: danh sách (chuỗi hoặc đường dẫn không trống)
Mặc định: [ ]
idx.previews.enable
Đặt giá trị này thành true để bật Bản xem trước IDX.
Tính năng này giúp bạn chạy và tải lại ứng dụng một cách tự động khi bạn đang phát triển ứng dụng.
Loại: boolean
Mặc định: true
Ví dụ: true
idx.previews.previews
Cấu hình bản xem trước.
Xác định các lệnh mà IDX thực thi trong môi trường nhà phát triển.
Ví dụ:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
Loại: tập hợp thuộc tính của (mô-đun con)
Mặc định: { }
idx.previews.previews.<name>.activity
Hoạt động khởi chạy Android
Loại: chuỗi
Mặc định: ""
idx.previews.previews.<name>.command
Lệnh cần thực thi
Loại: danh sách chuỗi
Mặc định: [ ]
idx.previews.previews.<name>.cwd
Thư mục làm việc
Loại: chuỗi
Mặc định: ""
idx.previews.previews.<name>.env
Các biến môi trường cần thiết lập.
Loại: tập hợp thuộc tính của chuỗi
Mặc định: { }
idx.previews.previews.<name>.manager
Người quản lý
Loại: một trong các loại "web", "flutter", "android", "gradle"
idx.workspace.onCreate
Các lệnh cần thực thi khi không gian làm việc được tạo và mở lần đầu tiên.
Điều này có thể hữu ích khi thiết lập môi trường phát triển. Ví dụ: ở đây, chúng tôi chỉ định npm install để chạy:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
# files to open when the workspace is first opened.
default.openFiles = [ "src/index.ts" ];
};
}
Loại: tập hợp thuộc tính của (đường dẫn hoặc chuỗi hoặc ({ openFiles = [ string ];}))
Mặc định: { }
idx.workspace.onStart
Các lệnh cần thực thi mỗi khi không gian làm việc được mở.
Điều này có thể hữu ích khi bắt đầu trình theo dõi bản dựng. Ví dụ: ở đây, chúng tôi chỉ định 2 lệnh cần chạy:
{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" ];
};
}
Loại: tập hợp thuộc tính của (đường dẫn hoặc chuỗi hoặc ({ openFiles = [ string ];}))
Mặc định: { }
nhập
Bạn có thể mở rộng tệp dev.nix bằng một tệp đã nhập.
# dev.nix
{ pkgs, ... }: {
imports = [
./some-file.nix
];
# ...
}
# some-file.nix
{ pkgs, ... }: {
packages = [
pkgs.python3
];
# ...
}
Có nhiều lý do khiến bạn có thể muốn nhập tệp tuỳ chỉnh .nix trong
dev.nix:
Tệp
dev.nixcủa bạn có kích thước lớn và bạn muốn mô-đun hoá tệp này để cải thiện khả năng duy trì.{ pkgs, ... }: { channel = "stable-24.11"; # ... imports = [ ./env-cfg.nix ./preview-config.nix ]; }Bạn muốn định cấu hình các tuỳ chọn dành riêng cho môi trường cục bộ và thêm tệp vào danh sách
.gitignore.# dev.nix { pkgs, lib, ... }: { # ... imports = lib.optionals (builtins.pathExists ./dev.local.nix ) [ ./dev.local.nix ]; }#.gitignore .idx/dev.local.nix
Loại: danh sách đường dẫn
Mặc định: [ ]
các dịch vụ
Các dịch vụ phổ biến cần bật khi không gian làm việc mở.
Ví dụ: để bật Postgres và sử dụng tiện ích pgvector, hãy thêm nội dung sau vào dev.nix:
services.postgres = {
extensions = ["pgvector"];
enable = true;
};
Các phần sau đây liệt kê tất cả các dịch vụ được hỗ trợ và các tuỳ chọn có thể định cấu hình.
services.docker.enable
Có bật Docker không cần root hay không.
Loại: boolean
Mặc định: false
Ví dụ: true
services.mongodb.enable
Có bật máy chủ MongoDB hay không.
Loại: boolean
Mặc định: false
Ví dụ: true
services.mongodb.package
Gói MongoDB cần sử dụng.
Loại: gói
Mặc định: <derivation mongodb-6.0.11>
services.mongodb.port
Định cấu hình cổng mà Mongod sẽ theo dõi.
Theo mặc định, tcp bị tắt và Mongod chỉ theo dõi /tmp/mongodb/mongodb.sock.
Để kết nối, hãy sử dụng chuỗi kết nối mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock.
Loại: số nguyên không dấu 16 bit; từ 0 đến 65535 (cả hai giá trị này)
Mặc định: 0
services.mysql.enable
Có bật máy chủ MySQL hay không.
Máy chủ được khởi chạy bằng một root người dùng không có mật khẩu. Vì vậy, để tạo thêm người dùng và tạo cơ sở dữ liệu, hãy sử dụng mysql -u root.
Loại: boolean
Mặc định: false
Ví dụ: true
services.mysql.package
Gói MySQL cần sử dụng.
Loại: gói
Mặc định: pkgs.mysql
Ví dụ: pkgs.mysql80
services.postgres.enable
Có bật máy chủ PostgreSQL hay không.
Loại: boolean
Mặc định: false
Ví dụ: true
services.postgres.enableTcp
Có bật Postgres để theo dõi trên TCP hay không.
Loại: boolean
Mặc định: true
Ví dụ: true
services.postgres.package
Gói PostgreSQL cần sử dụng.
Loại: gói
Mặc định: pkgs.postgresql
Ví dụ: pkgs.postgresql_15
services.postgres.extensions
Các tiện ích Postgres cần cài đặt.
Loại: danh sách (một trong các loại "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")
Mặc định: [ ]
Ví dụ: [ "pgvector" "postgis" ];
services.pubsub.enable
Có bật trình mô phỏng Google Pub/Sub hay không.
Bạn có thể xem thêm tài liệu về cách sử dụng trình mô phỏng tại đây: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator .
Loại: boolean
Mặc định: false
Ví dụ: true
services.pubsub.port
Định cấu hình cổng mà Pub/Sub sẽ theo dõi.
Loại: số nguyên không dấu 16 bit; từ 0 đến 65535 (cả hai giá trị này)
Mặc định: 8085
services.pubsub.project-id
Mã dự án cần sử dụng để chạy trình mô phỏng Pub/Sub. Dự án này chỉ dành cho mục đích kiểm thử, không cần phải tồn tại và chỉ được sử dụng cục bộ.
Loại: chuỗi khớp với mẫu [a-z][a-z0-9-]{5,29}
Mặc định: "idx-pubsub-emulator"
services.redis.enable
Có bật máy chủ Redis hay không.
Loại: boolean
Mặc định: false
Ví dụ: true
services.redis.port
Định cấu hình cổng mà Redis sẽ theo dõi.
Theo mặc định, tcp bị tắt và redis chỉ theo dõi /tmp/redis/redis.sock.
Loại: số nguyên không dấu 16 bit; từ 0 đến 65535 (cả hai giá trị này)
Mặc định: 0
services.spanner.enable
Có bật Trình mô phỏng Google Cloud Spanner hay không.
Loại: boolean
Mặc định: false
Ví dụ: true
services.spanner.fault-injection
Có bật tính năng chèn lỗi ngẫu nhiên vào các giao dịch hay không.
Loại: boolean
Mặc định: false
Ví dụ: true
services.spanner.grpc-port
Cổng TCP mà trình mô phỏng sẽ được liên kết.
Loại: số nguyên không dấu 16 bit; từ 0 đến 65535 (cả hai giá trị này)
Mặc định: 9010
services.spanner.rest-port
Cổng mà các yêu cầu REST được phân phát
Loại: số nguyên không dấu 16 bit; từ 0 đến 65535 (cả hai giá trị này)
Mặc định: 9020