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」、「stable-24.11」或「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」中找到可用擴充功能的清單,然後在 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 ];}))

預設值: { }

imports

您可以透過匯入的檔案擴充 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
    

類型:路徑清單

預設值: [ ]

services

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

舉例來說,如要啟用 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 之間 (含首尾)

預設值: 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 之間 (含首尾)

預設值: 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 模擬器。

類型:布林值

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