Questa pagina include i dettagli sullo schema del 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.
packages
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", "stable-24.11", "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 VSX aperto 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
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 due 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: { }
importazioni
Puoi estendere il file dev.nix con un file importato.
# dev.nix
{ pkgs, ... }: {
imports = [
./some-file.nix
];
# ...
}
# some-file.nix
{ pkgs, ... }: {
packages = [
pkgs.python3
];
# ...
}
Esistono diversi motivi per cui potresti voler importare un file .nix
personalizzato in
dev.nix
:
Il file
dev.nix
è di grandi dimensioni e vuoi modularizzarlo per migliorarne la manutenibilità.{ pkgs, ... }: { channel = "stable-24.11"; # ... imports = [ ./env-cfg.nix ./preview-config.nix ]; }
Vuoi configurare opzioni specifiche per il tuo ambiente locale e aggiungere il file all'elenco
.gitignore
.# dev.nix { pkgs, lib, ... }: { # ... imports = lib.optionals (builtins.pathExists ./dev.local.nix ) [ ./dev.local.nix ]; }
#.gitignore .idx/dev.local.nix
Tipo: elenco di percorsi
Valore predefinito: [ ]
servizi
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 attivare 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
Indica 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 rimane 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