dev.nix-Referenz

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:

  1. 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
      ];
    }
    
  2. 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