На этой странице приведены сведения о схеме файла конфигурации среды вашего рабочего пространства, который всегда должен располагаться по адресу .idx/dev.nix
.
Чтобы узнать больше о языке Nix, ознакомьтесь с официальным руководством по языку Nix .
пакеты
Пакеты для установки в среде.
Вы можете использовать аргумент pkgs
для выбора пакетов для установки, например pkgs.python3
. Обратите внимание, что содержимое pkgs
зависит от выбранного channel
channel option.
Пример:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
Вы можете найти доступные пакеты здесь: stable-23.11 или stable .
Тип: список пакетов
По умолчанию: [ ]
канал
Канал 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.расширения
Расширения кода, которые вы хотите установить в своем рабочем пространстве IDX.
Это список полностью квалифицированных идентификаторов расширений, например ${publisherId}.${extensionId}
.
Список доступных расширений можно найти в реестре Open VSX и ввести их в файл dev.nix
с помощью ${publisherId}.${extensionId}
.
Тип: список (непустая строка или путь)
По умолчанию: [ ]
idx.previews.enable
Установите значение true
, чтобы включить предварительный просмотр IDX.
Эта функция позволяет автоматически запускать и перезагружать приложения по мере их разработки.
Тип: логический
По умолчанию: true
Пример: true
idx.превью.превью
Предварительный просмотр конфигураций.
Определите команды, которые IDX выполняет в вашей среде разработки.
Пример:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
Тип: набор атрибутов (подмодуль)
По умолчанию: { }
idx.previews.previews.<имя>.активность
Активность запуска Android
Тип: строка
По умолчанию: ""
idx.previews.previews.<имя>.команда
Команда к исполнению
Тип: список строк
По умолчанию: [ ]
idx.previews.previews.<имя>.cwd
Рабочий каталог
Тип: строка
По умолчанию: ""
idx.previews.previews.<имя>.env
Переменные среды для установки.
Тип: набор атрибутов строки
По умолчанию: { }
idx.previews.previews.<имя>.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 ];}))
По умолчанию: { }
импорт
Вы можете расширить свой файл 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
Тип: список путей
По умолчанию: [ ]
услуги
Общие службы, включаемые при открытии рабочего пространства.
Например, чтобы включить 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.пакет
Пакет MongoDB для использования.
Тип: пакет
По умолчанию: <derivation mongodb-6.0.11>
services.mongodb.порт
Настраивает порт, который будет прослушивать 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.пакет
Пакет MySQL для использования.
Тип: пакет
По умолчанию: pkgs.mysql
Пример: pkgs.mysql80
услуги.postgres.enable
Включать ли сервер PostgreSQL.
Тип: логический
По умолчанию: false
Пример: true
services.postgres.enableTcp
Следует ли разрешить Postgres прослушивать TCP.
Тип: логический
По умолчанию: true
Пример: true
услуги.postgres.пакет
Пакет PostgreSQL для использования.
Тип: пакет
По умолчанию: pkgs.postgresql
Пример: pkgs.postgresql_15
службы.postgres.расширения
Расширения 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
ID проекта для запуска эмулятора Pub/Sub. Этот проект предназначен только для тестирования, он не обязательно должен существовать и используется только локально.
Тип: строка, соответствующая шаблону [az][a-z0-9-]{5,29}
По умолчанию: "idx-pubsub-emulator"
услуги.redis.enable
Включать ли сервер Redis.
Тип: логический
По умолчанию: false
Пример: true
услуги.redis.port
Настраивает порт, который будет прослушивать Redis.
По умолчанию протокол TCP отключен, а Redis прослушивает только /tmp/redis/redis.sock.
Тип: 16-битное целое число без знака; от 0 до 65535 (включительно)
По умолчанию: 0
услуги.гаечный.включить
Следует ли включать эмулятор Google Cloud Spanner.
Тип: логический
По умолчанию: false
Пример: true
services.spanner.fault-injection
Следует ли включать случайное внедрение ошибок в транзакции.
Тип: логический
По умолчанию: false
Пример: true
services.spanner.grpc-порт
TCP-порт, к которому следует привязать эмулятор.
Тип: 16-битное целое число без знака; от 0 до 65535 (включительно)
По умолчанию: 9010
services.spanner.rest-port
Порт, на котором обслуживаются REST-запросы
Тип: 16-битное целое число без знака; от 0 до 65535 (включительно)
По умолчанию: 9020