dev.nix 參考資料

本頁面提供工作區環境設定檔的結構定義詳細資訊,該檔案應一律位於 .idx/dev.nix 中。

如要瞭解 Nix 語言,請參閱 官方 Nix 語言教學課程

packages

要在環境中安裝的套件。

您可以使用 pkgs 引數選取要安裝的套件,例如 pkgs.python3。請注意,pkgs 的內容取決於所選的 channel 管道選項。

範例:

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

您可以在此搜尋可用的套件:stable-23.11unstable

類型:套件清單

預設值: [ ]

頻道

要使用的 nixpkgs 管道。

這個管道會定義 pkgs 引數的內容。

類型:「stable-23.05」、「stable-23.11」、「stable-24.05」、「unstable」

預設值: "stable-23.11"

env

在開發人員環境中設定的環境變數。

這些會複製到所有殼層和預覽伺服器。如果應用程式需要特定的變數組合,環境變數就特別實用。

每個變數的值可以是字串或字串清單。後者會連接,並穿插冒號字元。

PATH 必須是清單,因為它一律會延伸,且永遠不會完全取代。

範例:

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

類型: ((字串清單) 或任何內容) 的屬性集

預設值: { }

idx.extensions

您要在 IDX 工作區中安裝的程式碼擴充功能。

這是完整的擴充功能 ID 清單,例如 ${publisherId}.${extensionId}

您可以在「Open VSX Registry」中找到可用的擴充功能清單,然後透過 ${publisherId}.${extensionId} 將這些擴充功能輸入 dev.nix 檔案。

類型: (非空字串或路徑) 清單

預設值: [ ]

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

要設定的環境變數。

類型:字串的屬性組合

預設值: { }

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

預設值: { }

IDX 服務

開啟工作區時要啟用的常用服務。

舉例來說,如要啟用 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 套件。

類型: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

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 之間 (含首尾)

預設值: 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

services.spanner.enable

是否要啟用 Google Cloud Spanner Emulator。

類型:布林值

預設值: false

範例:true

services.spanner.fault-injection

是否要在交易中啟用隨機錯誤注入功能。

類型:布林值

預設值: false

範例:true

services.spanner.grpc-port

模擬器應繫結的 TCP 通訊埠。

類型:16 位元不帶正負號整數,介於 0 和 65535 之間 (含首尾)

預設值: 9010

services.spanner.rest-port

提供 REST 要求的通訊埠

類型:16 位元不帶正負號整數,介於 0 和 65535 之間 (含首尾)

預設值: 9020