このページでは、ワークスペース環境構成ファイルのスキーマについて説明します。このファイルは常に .idx/dev.nix
に配置する必要があります。
Nix 言語の詳細については、公式の Nix 言語チュートリアルをご覧ください。
パッケージ
環境にインストールするパッケージ。
pkgs
引数を使用して、インストールするパッケージを選択できます(例: pkgs.python3
)。pkgs
の内容は、選択した channel
チャンネル オプションによって異なります。
例:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
利用可能なパッケージは、stable-23.11 または unstable で検索できます。
タイプ: パッケージのリスト
デフォルト: [ ]
チャンネル
使用する 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 ワークスペースにインストールする Code 拡張機能。
これは、完全修飾された拡張機能 ID のリストです(${publisherId}.${extensionId}
など)。
使用可能な拡張機能の一覧については、Open VSX Registry をご覧ください。拡張機能は、${publisherId}.${extensionId}
で dev.nix
ファイルに入力します。
タイプ: リスト(空でない文字列またはパス)
デフォルト: [ ]
idx.previews.enable
IDX プレビューを有効にするには、このプロパティを true
に設定します。
この機能を使用すると、アプリの開発中にアプリを自動的に実行して再読み込みできます。
型: boolean
デフォルト: 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 起動アクティビティ
型: string
デフォルト: ""
idx.previews.previews.<name>.command
実行するコマンド
型: 文字列のリスト
デフォルト: [ ]
idx.previews.previews.<name>.cwd
作業ディレクトリ
型: string
デフォルト: ""
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
];
# ...
}
dev.nix
にカスタム .nix
ファイルをインポートする理由は複数あります。
dev.nix
ファイルが大きすぎて、メンテナンス性を向上させるためにモジュラー化したい。{ pkgs, ... }: { channel = "stable-24.11"; # ... imports = [ ./env-cfg.nix ./preview-config.nix ]; }
ローカル環境に固有のオプションを構成し、ファイルを
.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
Rootless Docker を有効にするかどうか。
型: boolean
デフォルト: false
例: true
services.mongodb.enable
MongoDB サーバーを有効にするかどうか。
型: boolean
デフォルト: 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 サーバーを有効にするかどうか。
サーバーは、パスワードなしのユーザー root で初期化されます。そのため、追加のユーザーを作成してデータベースを作成するには、mysql -u root
を使用します。
型: boolean
デフォルト: false
例: true
services.mysql.package
使用する MySQL パッケージ。
タイプ: パッケージ
デフォルト: pkgs.mysql
例: pkgs.mysql80
services.postgres.enable
PostgreSQL サーバーを有効にするかどうか。
型: boolean
デフォルト: false
例: true
services.postgres.enableTcp
Postgres が TCP でリッスンするかどうか。
型: boolean
デフォルト: 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 をご覧ください。
型: boolean
デフォルト: 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 サーバーを有効にするかどうか。
型: boolean
デフォルト: false
例: true
services.redis.port
Redis がリッスンするポートを構成します。
デフォルトでは、TCP は無効になっており、Redis は /tmp/redis/redis.sock でのみリッスンします。
タイプ: 16 ビットの符号なし整数(0 ~ 65535 の範囲内)
デフォルト: 0
services.spanner.enable
Google Cloud Spanner エミュレータを有効にするかどうか。
型: boolean
デフォルト: false
例: true
services.spanner.fault-injection
トランザクションへのランダムなフォールト インジェクションを有効にするかどうか。
型: boolean
デフォルト: false
例: true
services.spanner.grpc-port
エミュレータをバインドする TCP ポート。
タイプ: 16 ビットの符号なし整数(0 ~ 65535 の範囲内)
デフォルト: 9010
services.spanner.rest-port
REST リクエストが処理されるポート
タイプ: 16 ビットの符号なし整数(0 ~ 65535 の範囲内)
デフォルト: 9020