dev.nix 参考

本页面包含有关工作区环境架构的详细信息 配置文件,该文件应始终位于 .idx/dev.nix

要了解 Nix 语言,请参阅 Nix 官方语言 教程

包裹

要在环境中安装的软件包。

举例来说,您可以使用 pkgs 参数选择要安装的软件包 pkgs.python3。请注意,pkgs 的内容取决于所选 “channel”频道选项。

示例:

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

您可以在此处搜索可用的软件包: stable-23.11不稳定

类型:软件包列表

默认值[ ]

频道

nixpkgs 渠道。

此渠道定义了 pkgs 参数的内容。

类型:“stable-23.05”“stable-23.11”“stable-24.05”“unstable”之一

默认值"stable-23.11"

env

在开发者环境中设置的环境变量。

这些信息会传播到您的所有 shell 和预览服务器。环境 会特别有用。 各种变量。

每个变量的值可以是字符串,也可以是字符串列表。通过 后者串联起来,中间穿插着英文冒号字符。

PATH 必须是一个列表,因为它会始终进行扩展,而不会完全替换。

示例:

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

Type:属性集((字符串列表)或任何值)

默认值{ }

idx.extensions

您要在 IDX 工作区中安装的代码扩展程序。

这是完全限定的扩展程序 ID 的列表,例如 ${publisherId}.${extensionId}

您可在以下位置找到可用扩展程序的列表: 打开 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";
        };
      };
    };
  };
}

Type:(子模块)的属性集

默认值{ }

idx.previews.previews.<name>.activity

Android 发布活动

类型:字符串

默认值""

idx.previews.previews.<name>.command

要执行的命令

类型:字符串列表

默认值[ ]

idx.previews.previews.<name>.cwd

工作目录

类型:字符串

默认值""

idx.previews.previews.<name>.env

要设置的环境变量。

Type:字符串属性集

默认值{ }

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

Type:属性集(路径、字符串或 ({ openFiles = [ string ];}))

默认值{ }

idx.workspace.onStart

每次打开工作区时要执行的命令。

这对于开始构建 Watcher 很有用。例如,在这里我们指定 要运行的 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" ];
  };
}

Type:属性集(路径、字符串或 ({ openFiles = [ string ];}))

默认值{ }

services.docker.enable

是否启用无根 Docker。

类型:布尔值

默认值false

示例true

services.mongodb.enable

是否启用 MongoDB 服务器。

类型:布尔值

默认值false

示例true

services.mongodb.package

要使用的 MongoDB 软件包。

类型:package

默认值<derivation mongodb-6.0.11>

services.mongodb.port

配置 Mongod 将监听的端口。

默认情况下,tcp 处于停用状态,并且 Mongod 仅在 /tmp/mongodb/mongodb.sock 上监听。 如需连接,请使用连接字符串 “mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock”

类型:16 位无符号整数;介于 0 到 65535 之间(含 0 和 65535)

默认值0

services.mysql.enable

是否启用 MySQL 服务器。

该服务器使用无密码用户根目录进行初始化。因此要创建额外的 用户使用 mysql -u root 并创建数据库。.

类型:布尔值

默认值false

示例true

services.mysql.package

要使用的 MySQL 软件包。

类型:package

默认值pkgs.mysql

示例pkgs.mysql80

services.postgres.enable

是否启用 PostgreSQL 服务器。

类型:布尔值

默认值false

示例true

services.postgres.enableTcp

是否启用 Postgres 监听 TCP。

类型:布尔值

默认值true

示例true

services.postgres.package

要使用的 PostgreSQL 软件包。

类型:package

默认值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 之间(含 0 和 65535)

默认值8085

services.pubsub.project-id

用于运行 Pub/Sub 模拟器的项目 ID。此项目仅用于测试 它不一定存在,仅在本地使用。

类型:与模式 [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 之间(含 0 和 65535)

默认值0

services.spanner.enable

是否启用 Google Cloud Spanner 模拟器。

类型:布尔值

默认值false

示例true

services.spanner.fault-injection

是否启用随机故障注入到事务中。

类型:布尔值

默认值false

示例true

services.spanner.grpc-port

模拟器应绑定的 TCP 端口。

类型:16 位无符号整数;介于 0 到 65535 之间(含 0 和 65535)

默认值9010

services.spanner.rest-port

处理 REST 请求的端口

类型:16 位无符号整数;介于 0 到 65535 之间(含 0 和 65535)

默认值9020