Auf dieser Seite finden Sie Details zum Schema der Konfigurationsdatei Ihrer Arbeitsbereichsumgebung. Sie sollte sich immer unter .idx/dev.nix
befinden.
Weitere Informationen zur Nix-Sprache finden Sie im offiziellen Nix-Tutorial.
Pakete
Pakete, die in der Umgebung installiert werden sollen.
Mit dem Argument pkgs
können Sie Pakete auswählen, die installiert werden sollen, z. B. pkgs.python3
. Der Inhalt von pkgs
hängt von der ausgewählten Kanaloption channel
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 Kanal 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 Entwicklerumgebung festgelegt werden.
Diese werden an alle Ihre Shells und den Vorschauserver übertragen. 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 verkettet und durch Doppelpunkte getrennt.
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 beliebiger Wert)
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 findest du in der Open VSX Registry. Gib sie in deiner dev.nix
-Datei vor ${publisherId}.${extensionId}
ein.
Typ:Liste von (nicht leerer String oder Pfad)
Standard:[ ]
idx.previews.enable
Legen Sie diesen Wert auf 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 Entwicklerumgebung 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 vom Typ „String“
Standard:{ }
idx.previews.previews.<name>.manager
Manager
Typ: „web“, „flutter“, „android“ oder „gradle“
idx.workspace.onCreate
Befehle, die ausgeführt werden, wenn der Arbeitsbereich erstellt und zum ersten Mal geöffnet wird.
Das kann beim Einrichten der Entwicklungsumgebung hilfreich sein. Hier wird beispielsweise npm install
für Folgendes angegeben:
{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 jedes Mal ausgeführt werden, wenn der Arbeitsbereich geöffnet wird.
Das 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 die Datei „dev.nix“ um eine importierte 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 für Ihre lokale Umgebung konfigurieren und die Datei der
.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
Gängige Dienste, die beim Öffnen des Arbeitsbereichs aktiviert werden sollen.
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 sind alle unterstützten Dienste und ihre konfigurierbaren Optionen aufgeführt.
services.docker.enable
Gibt an, ob Docker ohne Root 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, auf dem Mongod überwacht wird.
Standardmäßig ist TCP deaktiviert und Mongod überwacht nur /tmp/mongodb/mongodb.sock.
Verwenden Sie den Verbindungsstring mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock
, um eine Verbindung herzustellen.
Typ:16-Bit-Vorzeichenlose Ganzzahl; zwischen 0 und 65.535 (einschließlich)
Standard:0
services.mysql.enable
Ob der MySQL-Server aktiviert werden soll.
Der Server wird mit einem passwortlosen Nutzer-Root initialisiert. Wenn Sie also zusätzliche Nutzer und Datenbanken erstellen möchten, verwenden Sie mysql -u root
.
Typ: Boolesch
Standard:false
Beispiel: true
services.mysql.package
Zu verwendendes MySQL-Paket.
Typ:Paket
Standard:pkgs.mysql
Beispiel: pkgs.mysql80
services.postgres.enable
Ob der PostgreSQL-Server aktiviert werden soll.
Typ: Boolesch
Standard:false
Beispiel: true
services.postgres.enableTcp
Gibt an, ob Postgres TCP-Verbindungen ü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 (einem der 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 hier: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator .
Typ: Boolesch
Standard:false
Beispiel: true
services.pubsub.port
Hiermit wird der Port konfiguriert, auf dem Pub/Sub überwacht wird.
Typ:16-Bit-Vorzeichenlose Ganzzahl; zwischen 0 und 65.535 (einschließlich)
Standard:8085
services.pubsub.project-id
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, auf dem Redis überwacht wird.
Standardmäßig ist TCP deaktiviert und Redis überwacht nur /tmp/redis/redis.sock.
Typ:16-Bit-Vorzeichenlose Ganzzahl; zwischen 0 und 65.535 (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
Ob zufällige Fehler in Transaktionen eingeschleust 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-Vorzeichenlose Ganzzahl; zwischen 0 und 65.535 (einschließlich)
Standard:9010
services.spanner.rest-port
Der Port, an dem REST-Anfragen gesendet werden
Typ:16-Bit-Vorzeichenlose Ganzzahl; zwischen 0 und 65.535 (einschließlich)
Standard:9020