На этой странице представлена подробная информация о схеме файла конфигурации среды вашей рабочей области, который всегда должен находиться по адресу .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"
окружающая среда
Переменные среды, которые задаются внутри среды разработки.
Эти изменения распространяются на все ваши оболочки и сервер предварительного просмотра. Переменные окружения могут быть особенно полезны, если вашему приложению требуется определенный набор переменных.
Значение каждой переменной может быть либо строкой, либо списком строк. Последний представляет собой конкатенацию, в которой чередуются символы двоеточия.
PATH должен быть списком, поскольку он всегда расширяется и никогда не заменяется полностью.
Пример:
{pkgs, ...}: {
env = {
HELLO = "world";
# append an entry to PATH
PATH = ["/some/path/bin"];
};
}
Тип: набор атрибутов (список строк или что угодно)
По умолчанию: { }
idx.extensions
Расширения кода, которые вы хотите установить в свою рабочую область IDX.
Это список полных идентификаторов расширений, например, ${publisherId}.${extensionId} .
Список доступных расширений можно найти в реестре Open VSX и добавить их в файл 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
Команды, которые будут выполняться при каждом открытии рабочего пространства.
Это может быть полезно для запуска наблюдателей за сборкой. Например, здесь мы указываем две команды для выполнения:
{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 ];}))
По умолчанию: { }
импорт
Вы можете дополнить свой файл dev.nix импортированным файлом.
# dev.nix
{ pkgs, ... }: {
imports = [
./some-file.nix
];
# ...
}
# some-file.nix
{ pkgs, ... }: {
packages = [
pkgs.python3
];
# ...
}
Существует несколько причин, по которым вам может понадобиться импортировать пользовательский файл .nix в dev.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
Тип: список путей
По умолчанию: [ ]
услуги
Общие сервисы, которые активируются при открытии рабочего пространства.
Например, чтобы включить PostgreSQL и использовать расширение pgvector , добавьте следующее в dev.nix :
services.postgres = {
extensions = ["pgvector"];
enable = true;
};
В следующих разделах перечислены все поддерживаемые сервисы и их настраиваемые параметры.
services.docker.enable
Включить ли Docker без прав root.
Тип: логический
По умолчанию: 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.
Сервер инициализируется с использованием пользователя root без пароля. Поэтому для создания дополнительных пользователей и баз данных используйте mysql -u root .
Тип: логический
По умолчанию: false
Пример: true
services.mysql.package
Пакет MySQL для использования.
Тип: пакет
По умолчанию: pkgs.mysql
Пример: pkgs.mysql80
services.postgres.enable
Включать ли сервер PostgreSQL.
Тип: логический
По умолчанию: false
Пример: true
services.postgres.enableTcp
Включить ли PostgreSQL прослушивание TCP-соединения.
Тип: логический
По умолчанию: true
Пример: true
services.postgres.package
Пакет PostgreSQL для использования.
Тип: пакет
По умолчанию: pkgs.postgresql
Пример: pkgs.postgresql_15
services.postgres.extensions
Расширения PostgreSQL для установки.
Тип: список (один из "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
сервисы.pubsub.port
Настраивает порт, на котором будет прослушивать Pub/Sub.
Тип: 16-битное беззнаковое целое число; от 0 до 65535 (включительно)
По умолчанию: 8085
services.pubsub.project-id
Идентификатор проекта, используемый для запуска эмулятора Pub/Sub. Этот проект предназначен только для тестирования, его существование необязательно, и он используется только локально.
Тип: строка, соответствующая шаблону [az][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