Auf dieser Seite finden Sie Details zum Schema für die Konfigurationsdatei Ihrer Arbeitsbereichsumgebung, die sich immer unter .idx/dev.nix befinden sollte.
Weitere Informationen zur Nix-Sprache finden Sie im offiziellen Nix-Sprach tutorial.
packages
Pakete, die in der Umgebung installiert werden sollen.
Mit dem Argument pkgs können Sie die zu installierenden Pakete auswählen, z. B.
pkgs.python3. Der Inhalt von pkgs hängt von der ausgewählten channel-Kanaloption ab.
Beispiel:
{pkgs, ...}: {
channel = "stable-24.11";
packages = [pkgs.vim];
}
Hier können Sie nach verfügbaren Paketen suchen: stable oder unstable.
Typ: Liste der Pakete
Standard: [ ]
channel
Zu verwendender nixpkgs-Kanal.
Dieser Kanal definiert den Inhalt des Arguments pkgs.
Typ: String (z. B. „stable-24.11“, „stable-25.05“, „unstable“)
Standard: "stable-24.11"
env
Umgebungsvariablen, die in der Entwicklungsumgebung festgelegt werden.
Diese werden an alle Ihre Shells und den Vorschauserver weitergegeben. Umgebungsvariablen können besonders nützlich sein, wenn Ihre Anwendung eine bestimmte Reihe von Variablen erfordert.
Der Wert jeder Variablen kann entweder ein String oder eine Liste von Strings sein. Letztere werden mit Doppelpunkten verkettet.
PATH muss eine Liste sein, da sie immer erweitert und nie vollständig ersetzt wird.
Beispiel:
{pkgs, ...}: {
env = {
HELLO = "world";
# append an entry to PATH
PATH = ["/some/path/bin"];
};
}
Typ: Attributsatz von ((Liste von Strings) oder beliebig)
Standard: { }
idx.extensions
Codeerweiterungen, die Sie in Ihrem IDX-Arbeitsbereich installieren möchten.
Dies ist eine Liste vollständig qualifizierter Erweiterungs-IDs, z. B. ${publisherId}.${extensionId}.
Eine Liste der verfügbaren Erweiterungen finden Sie in der
Open VSX Registry. Sie können sie in Ihrer dev.nix Datei
mit ${publisherId}.${extensionId} eingeben.
Typ: Liste von (nicht leerer String oder Pfad)
Standard: [ ]
idx.previews.enable
Setzen Sie diesen Wert auf true, um IDX-Vorschauen zu aktivieren.
Mit dieser Funktion können Sie Ihre Apps automatisch ausführen und neu laden, während Sie sie entwickeln.
Typ: Boolesch
Standard: true
Beispiel: true
idx.previews.previews
Vorschaukonfigurationen.
Definieren Sie die Befehle, die IDX in Ihrer Entwicklungsumgebung ausführt.
Beispiel:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
Typ: Attributsatz von (Submodul)
Standard: { }
idx.previews.previews.<name>.activity
Android-Startaktivität
Typ: String
Standard: ""
idx.previews.previews.<name>.command
Auszuführender Befehl
Typ: Liste von Strings
Standard: [ ]
idx.previews.previews.<name>.cwd
Arbeitsverzeichnis
Typ: String
Standard: ""
idx.previews.previews.<name>.env
Umgebungsvariablen festzulegen.
Typ: Attributsatz von Strings
Standard: { }
idx.previews.previews.<name>.manager
Manager
Typ: einer von „web“, „flutter“, „android“, „gradle“
idx.workspace.onCreate
Befehle, die ausgeführt werden, wenn der Arbeitsbereich zum ersten Mal erstellt und geöffnet wird.
Dies kann nützlich sein, um die Entwicklungsumgebung einzurichten. Hier geben wir beispielsweise npm install an, das ausgeführt werden soll:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
# files to open when the workspace is first opened.
default.openFiles = [ "src/index.ts" ];
};
}
Typ: Attributsatz von (Pfad oder String oder ({ openFiles = [ String ];}))
Standard: { }
idx.workspace.onStart
Befehle, die ausgeführt werden, wenn der Arbeitsbereich geöffnet wird.
Dies kann nützlich sein, um Build-Watcher zu starten. Hier geben wir beispielsweise zwei Befehle an, die ausgeführt werden sollen:
{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" ];
};
}
Typ: Attributsatz von (Pfad oder String oder ({ openFiles = [ String ];}))
Standard: { }
imports
Sie können Ihre `dev.nix`-Datei mit einer importierten Datei erweitern.
# dev.nix
{ pkgs, ... }: {
imports = [
./some-file.nix
];
# ...
}
# some-file.nix
{ pkgs, ... }: {
packages = [
pkgs.python3
];
# ...
}
Es gibt mehrere Gründe, warum Sie möglicherweise eine benutzerdefinierte .nix Datei in
dev.nix importieren möchten:
Ihre
dev.nix-Datei ist groß und Sie möchten sie modularisieren, um die Wartung zu verbessern.{ pkgs, ... }: { channel = "stable-24.11"; # ... imports = [ ./env-cfg.nix ./preview-config.nix ]; }Sie möchten Optionen konfigurieren, die für Ihre lokale Umgebung spezifisch sind, und die Datei Ihrer
.gitignore-Liste hinzufügen.# dev.nix { pkgs, lib, ... }: { # ... imports = lib.optionals (builtins.pathExists ./dev.local.nix ) [ ./dev.local.nix ]; }#.gitignore .idx/dev.local.nix
Typ: Liste von Pfaden
Standard: [ ]
Dienste
Allgemeine Dienste, die beim Öffnen des Arbeitsbereichs aktiviert werden sollen.
Wenn Sie beispielsweise Postgres aktivieren und die Erweiterung pgvector verwenden möchten, fügen Sie dev.nix Folgendes hinzu:
services.postgres = {
extensions = ["pgvector"];
enable = true;
};
In den folgenden Abschnitten sind alle unterstützten Dienste und ihre konfigurierbaren Optionen aufgeführt.
services.docker.enable
Gibt an, ob Rootless Docker aktiviert werden soll.
Typ: Boolesch
Standard: false
Beispiel: true
services.mongodb.enable
Gibt an, ob der MongoDB-Server aktiviert werden soll.
Typ: Boolesch
Standard: false
Beispiel: true
services.mongodb.package
Zu verwendendes MongoDB-Paket.
Typ: Paket
Standard: <derivation mongodb-6.0.11>
services.mongodb.port
Konfiguriert den Port, den Mongod überwacht.
Standardmäßig ist TCP deaktiviert und Mongod überwacht nur /tmp/mongodb/mongodb.sock.
Verwenden Sie zum Herstellen einer Verbindung den Verbindungsstring mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock.
Typ: 16-Bit-Ganzzahl ohne Vorzeichen; zwischen 0 und 65535 (beide einschließlich)
Standard: 0
services.mysql.enable
Gibt an, ob der MySQL-Server aktiviert werden soll.
Der Server wird mit einem passwortlosen Root-Nutzer initialisiert. Verwenden Sie mysql -u root, um zusätzliche Nutzer und Datenbanken zu erstellen.
Typ: Boolesch
Standard: false
Beispiel: true
services.mysql.package
Zu verwendendes MySQL-Paket.
Typ: Paket
Standard: pkgs.mysql
Beispiel: pkgs.mysql80
services.postgres.enable
Gibt an, ob der PostgreSQL-Server aktiviert werden soll.
Typ: Boolesch
Standard: false
Beispiel: true
services.postgres.enableTcp
Gibt an, ob Postgres TCP überwachen soll.
Typ: Boolesch
Standard: true
Beispiel: true
services.postgres.package
Zu verwendendes PostgreSQL-Paket.
Typ: Paket
Standard: pkgs.postgresql
Beispiel: pkgs.postgresql_15
services.postgres.extensions
Zu installierende Postgres-Erweiterungen.
Typ: Liste von (einer von „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“)
Standard: [ ]
Beispiel: [ "pgvector" "postgis" ];
services.pubsub.enable
Gibt an, ob der Google Pub/Sub-Emulator aktiviert werden soll.
Weitere Informationen zur Verwendung des Emulators finden Sie unter https://cloud.google.com/pubsub/docs/emulator#using_the_emulator .
Typ: Boolesch
Standard: false
Beispiel: true
services.pubsub.port
Konfiguriert den Port, den Pub/Sub überwacht.
Typ: 16-Bit-Ganzzahl ohne Vorzeichen; zwischen 0 und 65535 (beide einschließlich)
Standard: 8085
services.pubsub.project-id
Projekt-ID, die zum Ausführen des Pub/Sub-Emulators verwendet werden soll. Dieses Projekt ist nur für Testzwecke bestimmt, muss nicht vorhanden sein und wird nur lokal verwendet.
Typ: String, der dem Muster [a-z][a-z0-9-]{5,29} entspricht
Standard: "idx-pubsub-emulator"
services.redis.enable
Gibt an, ob der Redis-Server aktiviert werden soll.
Typ: Boolesch
Standard: false
Beispiel: true
services.redis.port
Konfiguriert den Port, den Redis überwacht.
Standardmäßig ist TCP deaktiviert und Redis überwacht nur /tmp/redis/redis.sock.
Typ: 16-Bit-Ganzzahl ohne Vorzeichen; zwischen 0 und 65535 (beide einschließlich)
Standard: 0
services.spanner.enable
Gibt an, ob der Google Cloud Spanner-Emulator aktiviert werden soll.
Typ: Boolesch
Standard: false
Beispiel: true
services.spanner.fault-injection
Gibt an, ob zufällige Fehler in Transaktionen eingefügt werden sollen.
Typ: Boolesch
Standard: false
Beispiel: true
services.spanner.grpc-port
Der TCP-Port, an den der Emulator gebunden werden soll.
Typ: 16-Bit-Ganzzahl ohne Vorzeichen; zwischen 0 und 65535 (beide einschließlich)
Standard: 9010
services.spanner.rest-port
Der Port, an dem REST-Anfragen verarbeitet werden.
Typ: 16-Bit-Ganzzahl ohne Vorzeichen; zwischen 0 und 65535 (beide einschließlich)
Standard: 9020