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-Sprachtutorial.
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-23.11";
packages = [pkgs.vim];
}
Hier können Sie nach verfügbaren Paketen suchen: stable-23.11 oder unstable.
Typ:Liste der Pakete
Standard:[ ]
Kanal
Zu verwendender nixpkgs-Channel.
Dieser Channel definiert den Inhalt des pkgs
-Arguments.
Typ: einer der folgenden Werte: „stable-23.05“, „stable-23.11“, „stable-24.05“, „stable-24.11“, „unstable“
Standard:"stable-23.11"
env
Umgebungsvariablen, die in der Entwicklungsumgebung festgelegt sind.
Diese werden an alle Ihre Shells und den Vorschauserver weitergegeben. Umgebungsvariablen können besonders nützlich sein, wenn Ihre Anwendung eine bestimmte Gruppe 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:Attributgruppe von ((Liste von String) oder beliebig)
Standard:{ }
idx.extensions
Code-Erweiterungen, 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. Geben Sie sie in Ihrer dev.nix
-Datei mit ${publisherId}.${extensionId}
ein.
Typ:Liste mit (nicht leeren) Strings oder Pfaden
Standard:[ ]
idx.previews.enable
Legen Sie für dieses Feld true
fest, um IDX-Vorschauen zu aktivieren.
Mit dieser Funktion können Sie Ihre Apps während der Entwicklung automatisch ausführen und neu laden.
Typ: Boolesch
Standard:true
Beispiel: true
idx.previews.previews
Konfigurationen in der Vorschau ansehen
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:Attributgruppe von (Untermodul)
Standard:{ }
idx.previews.previews.<name>.activity
Android Launch Activity
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 vom Typ „String“
Standard:{ }
idx.previews.previews.<name>.manager
Manager
Typ: „web“, „flutter“, „android“ oder „gradle“
idx.workspace.onCreate
Befehle, die ausgeführt werden sollen, wenn der Arbeitsbereich zum ersten Mal erstellt und geöffnet wird.
Das kann beim Einrichten der Entwicklungsumgebung hilfreich sein. Hier geben wir beispielsweise an, dass npm install
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.
Das kann nützlich sein, um Build-Watcher zu starten. Hier werden beispielsweise zwei auszuführende Befehle angegeben:
{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 eine benutzerdefinierte .nix
-Datei in dev.nix
importieren möchten:
Ihre
dev.nix
-Datei ist groß und Sie möchten sie modularisieren, um die Wartbarkeit 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 mit Pfaden
Standard:[ ]
Dienste
Häufig verwendete Dienste, die beim Öffnen des Arbeitsbereichs aktiviert werden.
Wenn Sie beispielsweise Postgres aktivieren und die pgvector
-Erweiterung verwenden möchten, fügen Sie dev.nix
Folgendes hinzu:
services.postgres = {
extensions = ["pgvector"];
enable = true;
};
In den folgenden Abschnitten werden 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:Vorzeichenlose 16-Bit-Ganzzahl; zwischen 0 und 65.535 (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 auf TCP-Verbindungen warten soll.
Typ: Boolesch
Standard:true
Beispiel: true
services.postgres.package
Das zu verwendende PostgreSQL-Paket.
Typ:Paket
Standard:pkgs.postgresql
Beispiel: pkgs.postgresql_15
services.postgres.extensions
Zu installierende Postgres-Erweiterungen.
Typ: Liste mit einem der folgenden Werte: „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, an dem Pub/Sub auf eingehende Nachrichten wartet.
Typ:Vorzeichenlose 16-Bit-Ganzzahl; zwischen 0 und 65.535 (beide einschließlich)
Standard:8085
services.pubsub.project-id
Die Projekt-ID, die zum Ausführen des Pub/Sub-Emulators verwendet werden soll. Dieses Projekt dient nur zu Testzwecken. Es 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:Vorzeichenlose 16-Bit-Ganzzahl; zwischen 0 und 65.535 (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 Fehlereinschleusung in Transaktionen aktiviert werden soll.
Typ: Boolesch
Standard:false
Beispiel: true
services.spanner.grpc-port
Der TCP-Port, an den der Emulator gebunden werden soll.
Typ:Vorzeichenlose 16-Bit-Ganzzahl; zwischen 0 und 65.535 (beide einschließlich)
Standard:9010
services.spanner.rest-port
Der Port, über den REST-Anfragen bereitgestellt werden
Typ:Vorzeichenlose 16-Bit-Ganzzahl; zwischen 0 und 65.535 (beide einschließlich)
Standard:9020