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