Na tej stronie znajdziesz szczegółowe informacje o schemacie pliku konfiguracyjnego środowiska obszaru roboczego, który zawsze powinien znajdować się w lokalizacji .idx/dev.nix
.
Więcej informacji o języku Nix znajdziesz w oficjalnym samouczku dotyczącym tego języka.
paczki,
Pakiety do zainstalowania w środowisku.
Za pomocą argumentu pkgs
możesz wybrać pakiety do zainstalowania, np.pkgs.python3
. Pamiętaj, że zawartość elementu pkgs
zależy od wybranej opcji kanału channel
.
Przykład:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
Dostępne pakiety możesz wyszukać tutaj: stable-23.11 lub unstable.
Typ: lista pakietów
Domyślnie: [ ]
kanał
kanał nixpkgs, którego chcesz użyć.
Ten kanał określa zawartość argumentu pkgs
.
Typ: jedna z wartości „stable-23.05”, „stable-23.11”, „stable-24.05”, „stable-24.11”, „unstable”.
Domyślnie: "stable-23.11"
env
Zmienne środowiskowe ustawione w środowisku deweloperskim.
Są one propagowane do wszystkich Twoich powłok i serwera podglądu. Zmienne środowiskowe mogą być szczególnie przydatne, jeśli aplikacja wymaga określonego zestawu zmiennych.
Wartością każdej zmiennej może być ciąg znaków lub lista ciągów znaków. Ten drugi jest łączony z dwukropkami.
PATH
musi być listą, ponieważ jest zawsze rozszerzana, a nigdy całkowicie zastępowana.
Przykład:
{pkgs, ...}: {
env = {
HELLO = "world";
# append an entry to PATH
PATH = ["/some/path/bin"];
};
}
Typ: zbiór atrybutów ((lista ciągów znaków) lub dowolny)
Domyślnie: { }
idx.extensions
rozszerzenia kodu, które chcesz zainstalować w obszarze roboczym IDX.
Jest to lista w pełni kwalifikowanych identyfikatorów rozszerzeń, np.${publisherId}.${extensionId}
.
Listę dostępnych rozszerzeń znajdziesz w rejestrze Open VSX. Możesz je wpisać w pliku dev.nix
, używając ${publisherId}.${extensionId}
.
Typ: lista (niepusty ciąg znaków lub ścieżka)
Domyślnie: [ ]
idx.previews.enable
Ustaw tę opcję na true
, aby włączyć podglądy IDX.
Ta funkcja umożliwia automatyczne uruchamianie i ponowne wczytywanie aplikacji podczas ich tworzenia.
Typ: wartość logiczna
Domyślnie: true
Przykład: true
idx.previews.previews
Wyświetl podgląd konfiguracji.
Określ polecenia, które IDX wykonuje w środowisku programistycznym.
Przykład:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
Typ: zestaw atrybutów (podmoduł)
Domyślnie: { }
idx.previews.previews.<name>.activity
Aktywność uruchamiania Androida
Typ: ciąg znaków
Domyślnie: ""
idx.previews.previews.<name>.command
Polecenie do wykonania
Typ: lista ciągów znaków
Domyślnie: [ ]
idx.previews.previews.<name>.cwd
Katalog roboczy
Typ: ciąg znaków
Domyślnie: ""
idx.previews.previews.<name>.env
Zmienne środowiskowe do ustawienia.
Typ: zestaw atrybutów ciągu znaków
Domyślnie: { }
idx.previews.previews.<name>.manager
Menedżer
Typ: jeden z tych ciągów znaków: „web”, „flutter”, „android”, „gradle”
idx.workspace.onCreate
Polecenia do wykonania, gdy obszar roboczy zostanie utworzony i otwarty po raz pierwszy.
Może to być przydatne podczas konfigurowania środowiska programistycznego. Na przykład tutaj określamy npm install
, aby uruchomić:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
# files to open when the workspace is first opened.
default.openFiles = [ "src/index.ts" ];
};
}
Typ: zbiór atrybutów (ścieżka lub ciąg znaków lub ({ openFiles = [ string ];}))
Domyślnie: { }
idx.workspace.onStart
Polecenia do wykonania po otwarciu obszaru roboczego.
Może to być przydatne do uruchamiania obserwatorów kompilacji. Na przykład tutaj określamy 2 polecenia do uruchomienia:
{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: zbiór atrybutów (ścieżka lub ciąg znaków lub ({ openFiles = [ string ];}))
Domyślnie: { }
import
Możesz rozszerzyć plik dev.nix o zaimportowany plik.
# dev.nix
{ pkgs, ... }: {
imports = [
./some-file.nix
];
# ...
}
# some-file.nix
{ pkgs, ... }: {
packages = [
pkgs.python3
];
# ...
}
Istnieje wiele powodów, dla których możesz chcieć zaimportować niestandardowy plik .nix
w dev.nix
:
Plik
dev.nix
jest duży i chcesz go podzielić na moduły, aby ułatwić jego utrzymanie.{ pkgs, ... }: { channel = "stable-24.11"; # ... imports = [ ./env-cfg.nix ./preview-config.nix ]; }
Chcesz skonfigurować opcje specyficzne dla środowiska lokalnego i dodać plik do listy
.gitignore
.# dev.nix { pkgs, lib, ... }: { # ... imports = lib.optionals (builtins.pathExists ./dev.local.nix ) [ ./dev.local.nix ]; }
#.gitignore .idx/dev.local.nix
Typ: lista ścieżek
Domyślnie: [ ]
usługi
Typowe usługi, które należy włączyć po otwarciu przestrzeni roboczej.
Aby na przykład włączyć Postgres i używać rozszerzenia pgvector
, dodaj do pliku dev.nix
te wiersze:
services.postgres = {
extensions = ["pgvector"];
enable = true;
};
W kolejnych sekcjach znajdziesz listę wszystkich obsługiwanych usług i ich konfigurowalnych opcji.
services.docker.enable
Czy włączyć Dockera bez uprawnień roota.
Typ: wartość logiczna
Domyślnie: false
Przykład: true
services.mongodb.enable
Określa, czy serwer MongoDB ma być włączony.
Typ: wartość logiczna
Domyślnie: false
Przykład: true
services.mongodb.package
Pakiet MongoDB do użycia.
Typ: pakiet
Domyślnie: <derivation mongodb-6.0.11>
services.mongodb.port
Konfiguruje port, na którym będzie nasłuchiwać usługa Mongod.
Domyślnie protokół TCP jest wyłączony, a usługa Mongod nasłuchuje tylko w gnieździe /tmp/mongodb/mongodb.sock.
Aby się połączyć, użyj ciągu połączenia
mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock
.
Typ: 16-bitowa liczba całkowita bez znaku z zakresu od 0 do 65 535 (włącznie)
Domyślnie: 0
services.mysql.enable
Określa, czy serwer MySQL ma być włączony.
Serwer jest inicjowany z użytkownikiem root bez hasła. Aby utworzyć dodatkowych użytkowników i bazy danych, użyj polecenia mysql -u root
.
Typ: wartość logiczna
Domyślnie: false
Przykład: true
services.mysql.package
Pakiet MySQL do użycia.
Typ: pakiet
Domyślnie: pkgs.mysql
Przykład: pkgs.mysql80
services.postgres.enable
Czy włączyć serwer PostgreSQL.
Typ: wartość logiczna
Domyślnie: false
Przykład: true
services.postgres.enableTcp
Czy włączyć nasłuchiwanie TCP przez Postgres.
Typ: wartość logiczna
Domyślnie: true
Przykład: true
services.postgres.package
Pakiet PostgreSQL do użycia.
Typ: pakiet
Domyślnie: pkgs.postgresql
Przykład: pkgs.postgresql_15
services.postgres.extensions
Rozszerzenia Postgres do zainstalowania.
Typ: lista (jedna z wartości: „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”)
Domyślnie: [ ]
Przykład: [ "pgvector" "postgis" ];
services.pubsub.enable
Określa, czy włączyć emulator Google Pub/Sub.
Więcej informacji o korzystaniu z emulatora znajdziesz tutaj: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator .
Typ: wartość logiczna
Domyślnie: false
Przykład: true
services.pubsub.port
Konfiguruje port, na którym nasłuchuje Pub/Sub.
Typ: 16-bitowa liczba całkowita bez znaku z zakresu od 0 do 65 535 (włącznie)
Domyślnie: 8085
services.pubsub.project-id
Identyfikator projektu, który ma być używany do uruchamiania emulatora Pub/Sub. Ten projekt służy tylko do testowania. Nie musi istnieć i jest używany tylko lokalnie.
Typ: ciąg znaków pasujący do wzorca [a-z][a-z0-9-]{5,29}
Domyślnie: "idx-pubsub-emulator"
services.redis.enable
Czy włączyć serwer Redis.
Typ: wartość logiczna
Domyślnie: false
Przykład: true
services.redis.port
Konfiguruje port, na którym będzie nasłuchiwać Redis.
Domyślnie protokół TCP jest wyłączony, a serwer Redis nasłuchuje tylko w pliku /tmp/redis/redis.sock.
Typ: 16-bitowa liczba całkowita bez znaku z zakresu od 0 do 65 535 (włącznie)
Domyślnie: 0
services.spanner.enable
Określa, czy włączyć emulator Google Cloud Spanner.
Typ: wartość logiczna
Domyślnie: false
Przykład: true
services.spanner.fault-injection
Czy włączyć losowe wstrzykiwanie błędów do transakcji.
Typ: wartość logiczna
Domyślnie: false
Przykład: true
services.spanner.grpc-port
Port TCP, do którego powinien być powiązany emulator.
Typ: 16-bitowa liczba całkowita bez znaku z zakresu od 0 do 65 535 (włącznie)
Domyślnie: 9010
services.spanner.rest-port
Port, na którym obsługiwane są żądania REST
Typ: 16-bitowa liczba całkowita bez znaku z zakresu od 0 do 65 535 (włącznie)
Domyślnie: 9020