Riferimento dev.nix

Questa pagina include i dettagli dello schema per il file di configurazione dell'ambiente di lavoro, che deve sempre trovarsi in .idx/dev.nix.

Per scoprire di più sul linguaggio Nix, consulta il tutorial ufficiale sul linguaggio Nix.

pacchi

Pacchetti da installare nell'ambiente.

Puoi utilizzare l'argomento pkgs per selezionare i pacchetti da installare, ad esempio pkgs.python3. Tieni presente che i contenuti di pkgs dipendono dall'opzione di canale selezionatachannel.

Esempio:

{pkgs, ...}: {
  channel = "stable-23.11";
  packages = [pkgs.vim];
}

Puoi cercare i pacchetti disponibili qui: stable-23.11 o unstable.

Tipo: elenco del pacchetto

Valore predefinito: [ ]

canale

Il canale nixpkgs da utilizzare.

Questo canale definisce i contenuti dell'argomento pkgs.

Tipo: uno dei valori "stable-23.05", "stable-23.11", "stable-24.05", "unstable"

Valore predefinito: "stable-23.11"

env

Variabili di ambiente impostate all'interno dell'ambiente di sviluppo.

Questi vengono propagati a tutte le shell e al server di anteprima. Le variabili di ambiente possono essere particolarmente utili se la tua applicazione richiede un insieme specifico di variabili.

Il valore di ogni variabile può essere una stringa o un elenco di stringhe. Il secondo viene concatenato, intervallato da due punti.

PATH deve essere un elenco, in quanto viene sempre esteso e mai sostituito completamente.

Esempio:

{pkgs, ...}: {
  env = {
    HELLO = "world";
    # append an entry to PATH
    PATH = ["/some/path/bin"];
  };
}

Tipo: insieme di attributi di ((elenco di stringhe) o qualsiasi altro elemento)

Valore predefinito: { }

idx.extensions

Estensioni di codice da installare nello spazio di lavoro IDX.

Si tratta di un elenco di ID estensione completi, ad esempio${publisherId}.${extensionId}.

Puoi trovare un elenco delle estensioni disponibili nel registro Open VSX e inserirle nel file dev.nix tramite ${publisherId}.${extensionId}.

Tipo: elenco di (stringa o percorso non vuoto)

Valore predefinito: [ ]

idx.previews.enable

Imposta questo valore su true per attivare le anteprime IDX.

Questa funzionalità consente di eseguire e ricaricare automaticamente le app durante lo sviluppo.

Tipo: booleano

Valore predefinito: true

Esempio: true

idx.previews.previews

Visualizza l'anteprima delle configurazioni.

Definisci i comandi eseguiti da IDX nel tuo ambiente di sviluppo.

Esempio:

{pkgs, ...}: {
  idx.previews = {
    enable = true;
    previews = {
      web = {
        command = ["yes"];
        cwd = "subfolder";
        manager = "web";
        env = {
          HELLO = "world";
        };
      };
    };
  };
}

Tipo: insieme di attributi di (sottomodulo)

Valore predefinito: { }

idx.previews.previews.<name>.activity

Attività di lancio di Android

Tipo: stringa

Valore predefinito: ""

idx.previews.previews.<name>.command

Comando da eseguire

Tipo: elenco di stringhe

Valore predefinito: [ ]

idx.previews.previews.<name>.cwd

Directory di lavoro

Tipo: stringa

Valore predefinito: ""

idx.previews.previews.<name>.env

Le variabili di ambiente da impostare.

Tipo: insieme di attributi di stringa

Valore predefinito: { }

idx.previews.previews.<name>.manager

Gestore

Tipo: uno dei valori "web", "flutter", "android", "gradle"

idx.workspace.onCreate

Comandi da eseguire quando lo spazio di lavoro viene creato e aperto per la prima volta.

Ciò può essere utile per configurare l'ambiente di sviluppo. Ad esempio, qui abbiamo specificato npm install da eseguire:

{pkgs, ...}: {
  idx.workspace.onCreate = {
    npm-install = "npm install";
    # files to open when the workspace is first opened.
    default.openFiles = [ "src/index.ts" ];
  };
}

Tipo: insieme di attributi di (percorso o stringa o ({ openFiles = [ string ];}))

Valore predefinito: { }

idx.workspace.onStart

Comandi da eseguire ogni volta che viene aperto lo spazio di lavoro.

Questa opzione può essere utile per avviare gli osservatori delle build. Ad esempio, qui specifichiamo 2 comandi da eseguire:

{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" ];
  };
}

Tipo: insieme di attributi di (percorso o stringa o ({ openFiles = [ string ];}))

Valore predefinito: { }

Servizi IDX

Servizi comuni da attivare quando si apre lo spazio di lavoro.

Ad esempio, per attivare Postgres e utilizzare l'estensione pgvector, aggiungi quanto segue a dev.nix:

    services.postgres = {
      extensions = ["pgvector"];
      enable = true;
    };

Le sezioni seguenti elencano tutti i servizi supportati e le relative opzioni configurabili.

services.docker.enable

Se abilitare Docker senza root.

Tipo: booleano

Valore predefinito: false

Esempio: true

services.mongodb.enable

Se abilitare il server MongoDB.

Tipo: booleano

Valore predefinito: false

Esempio: true

services.mongodb.package

Il pacchetto MongoDB da utilizzare.

Tipo: pacchetto

Valore predefinito: <derivation mongodb-6.0.11>

services.mongodb.port

Configura la porta su cui Mongod è in ascolto.

Per impostazione predefinita, il protocollo TCP è disabilitato e Mongod ascolta solo su /tmp/mongodb/mongodb.sock. Per connetterti, utilizza la stringa di connessione "mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock"

Tipo: numero intero senza segno a 16 bit compreso tra 0 e 65535 (entrambi inclusi)

Valore predefinito: 0

services.mysql.enable

Se abilitare il server MySQL.

Il server viene inizializzato con un utente root senza password. Per creare altri utenti e database, utilizza mysql -u root. .

Tipo: booleano

Valore predefinito: false

Esempio: true

services.mysql.package

Il pacchetto MySQL da utilizzare.

Tipo: pacchetto

Valore predefinito: pkgs.mysql

Esempio: pkgs.mysql80

services.postgres.enable

Se attivare il server PostgreSQL.

Tipo: booleano

Valore predefinito: false

Esempio: true

services.postgres.enableTcp

Indica se attivare l'ascolto di Postgres su TCP.

Tipo: booleano

Valore predefinito: true

Esempio: true

services.postgres.package

Il pacchetto PostgreSQL da utilizzare.

Tipo: pacchetto

Valore predefinito: pkgs.postgresql

Esempio: pkgs.postgresql_15

services.postgres.extensions

Estensioni Postgres da installare.

Tipo: elenco di (uno di "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")

Valore predefinito: [ ]

Esempio: [ "pgvector" "postgis" ];

services.pubsub.enable

Se abilitare l'emulatore Google Pub/Sub.

Puoi trovare ulteriore documentazione sull'utilizzo dell'emulatore qui: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator .

Tipo: booleano

Valore predefinito: false

Esempio: true

services.pubsub.port

Configura la porta su cui Pub/Sub è in ascolto.

Tipo: numero intero senza segno a 16 bit compreso tra 0 e 65535 (entrambi inclusi)

Valore predefinito: 8085

services.pubsub.project-id

ID progetto da utilizzare per eseguire l'emulatore Pub/Sub. Questo progetto è solo per i test, non deve esistere e viene utilizzato solo localmente.

Tipo: stringa corrispondente al pattern [a-z][a-z0-9-]{5,29}

Valore predefinito: "idx-pubsub-emulator"

services.redis.enable

Se abilitare il server Redis.

Tipo: booleano

Valore predefinito: false

Esempio: true

services.redis.port

Configura la porta su cui Redis sarà in ascolto.

Per impostazione predefinita, il protocollo TCP è disabilitato e Redis ascolta solo su /tmp/redis/redis.sock.

Tipo: numero intero senza segno a 16 bit compreso tra 0 e 65535 (entrambi inclusi)

Valore predefinito: 0

services.spanner.enable

Indica se abilitare l'emulatore Google Cloud Spanner.

Tipo: booleano

Valore predefinito: false

Esempio: true

services.spanner.fault-injection

Se attivare l'iniezione di errori casuali nelle transazioni.

Tipo: booleano

Valore predefinito: false

Esempio: true

services.spanner.grpc-port

La porta TCP a cui deve essere associato l'emulatore.

Tipo: numero intero senza segno a 16 bit compreso tra 0 e 65535 (entrambi inclusi)

Valore predefinito: 9010

services.spanner.rest-port

La porta su cui vengono inviate le richieste REST

Tipo: numero intero senza segno a 16 bit compreso tra 0 e 65535 (entrambi inclusi)

Valore predefinito: 9020