Halaman ini menyertakan detail tentang skema untuk file konfigurasi lingkungan workspace Anda, yang harus selalu berada di .idx/dev.nix
.
Untuk mempelajari bahasa Nix, lihat tutorial bahasa resmi Nix.
paket
Paket yang akan diinstal di lingkungan.
Anda dapat menggunakan argumen pkgs
untuk memilih paket yang akan diinstal, misalnya
pkgs.python3
. Perhatikan bahwa konten pkgs
bergantung pada opsi channel
channel
yang dipilih.
Contoh:
{pkgs, ...}: {
channel = "stable-23.11";
packages = [pkgs.vim];
}
Anda dapat menelusuri paket yang tersedia di sini: stable-23.11 atau unstable.
Jenis: daftar paket
Default: [ ]
saluran
saluran nixpkgs yang akan digunakan.
Saluran ini menentukan konten argumen pkgs
.
Jenis: salah satu dari "stable-23.05", "stable-23.11", "stable-24.05", "unstable"
Default: "stable-23.11"
env
Variabel lingkungan yang ditetapkan di dalam lingkungan developer.
Perubahan ini akan diterapkan ke semua shell dan server pratinjau Anda. Variabel lingkungan dapat sangat berguna jika aplikasi Anda memerlukan kumpulan variabel tertentu.
Nilai setiap variabel dapat berupa string atau daftar string. Yang terakhir digabungkan, diselingi dengan karakter titik dua.
PATH
harus berupa daftar, karena selalu diperluas dan tidak pernah diganti sepenuhnya.
Contoh:
{pkgs, ...}: {
env = {
HELLO = "world";
# append an entry to PATH
PATH = ["/some/path/bin"];
};
}
Jenis: kumpulan atribut ((daftar string) atau apa pun)
Default: { }
idx.extensions
Ekstensi kode yang ingin diinstal di ruang kerja IDX.
Ini adalah daftar ID ekstensi yang sepenuhnya memenuhi syarat, misalnya
${publisherId}.${extensionId}
.
Anda dapat menemukan daftar ekstensi yang tersedia di
Open VSX Registry dan memasukkannya dalam file dev.nix
dengan ${publisherId}.${extensionId}
.
Jenis: daftar (string atau jalur yang tidak kosong)
Default: [ ]
idx.previews.enable
Tetapkan ke true
untuk mengaktifkan Pratinjau IDX.
Fitur ini menyediakan cara untuk menjalankan dan memuat ulang aplikasi secara otomatis saat Anda mengembangkannya.
Jenis: boolean
Default: true
Contoh: true
idx.previews.previews
Melihat pratinjau konfigurasi.
Tentukan perintah yang dijalankan IDX di lingkungan developer Anda.
Contoh:
{pkgs, ...}: {
idx.previews = {
enable = true;
previews = {
web = {
command = ["yes"];
cwd = "subfolder";
manager = "web";
env = {
HELLO = "world";
};
};
};
};
}
Jenis: kumpulan atribut (submodule)
Default: { }
idx.previews.previews.<name>.activity
Aktivitas Peluncuran Android
Jenis: string
Default: ""
idx.previews.previews.<name>.command
Perintah yang akan dieksekusi
Jenis: daftar string
Default: [ ]
idx.previews.previews.<name>.cwd
Direktori yang berfungsi
Jenis: string
Default: ""
idx.previews.previews.<name>.env
Variabel lingkungan yang akan ditetapkan.
Jenis: kumpulan atribut string
Default: { }
idx.previews.previews.<name>.manager
Pengelola
Jenis: salah satu dari "web", "flutter", "android", "gradle"
idx.workspace.onCreate
Perintah yang akan dieksekusi saat ruang kerja dibuat dan dibuka untuk pertama kalinya.
Hal ini dapat berguna untuk menyiapkan lingkungan pengembangan. Misalnya, di sini kita
menentukan npm install
untuk dijalankan:
{pkgs, ...}: {
idx.workspace.onCreate = {
npm-install = "npm install";
# files to open when the workspace is first opened.
default.openFiles = [ "src/index.ts" ];
};
}
Jenis: kumpulan atribut (jalur atau string atau ({ openFiles = [ string ];}))
Default: { }
idx.workspace.onStart
Perintah yang akan dieksekusi setiap kali ruang kerja dibuka.
Hal ini dapat berguna untuk memulai watcher build. Misalnya, di sini kita menentukan 2 perintah untuk dijalankan:
{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" ];
};
}
Jenis: kumpulan atribut (jalur atau string atau ({ openFiles = [ string ];}))
Default: { }
Layanan IDX
Layanan umum yang akan diaktifkan saat ruang kerja dibuka.
Misalnya, untuk mengaktifkan Postgres dan menggunakan ekstensi pgvector
, tambahkan kode berikut ke dev.nix
:
services.postgres = {
extensions = ["pgvector"];
enable = true;
};
Bagian berikut mencantumkan semua layanan yang didukung dan opsi yang dapat dikonfigurasi.
services.docker.enable
Apakah akan mengaktifkan Docker tanpa root.
Jenis: boolean
Default: false
Contoh: true
services.mongodb.enable
Apakah akan mengaktifkan server MongoDB.
Jenis: boolean
Default: false
Contoh: true
services.mongodb.package
Paket MongoDB yang akan digunakan.
Jenis: paket
Default: <derivation mongodb-6.0.11>
services.mongodb.port
Mengonfigurasi port yang akan diproses Mongod.
Secara default, tcp dinonaktifkan dan Mongod hanya memproses /tmp/mongodb/mongodb.sock. Untuk terhubung, gunakan string koneksi "mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock"
Jenis: Bilangan bulat tanpa tanda tangan 16 bit; antara 0 dan 65535 (inklusif)
Default: 0
services.mysql.enable
Apakah server MySQL akan diaktifkan atau tidak.
Server diinisialisasi dengan root pengguna tanpa sandi. Jadi, untuk membuat pengguna
tambahan dan membuat database, gunakan mysql -u root
. .
Jenis: boolean
Default: false
Contoh: true
services.mysql.package
Paket MySQL yang akan digunakan.
Jenis: paket
Default: pkgs.mysql
Contoh: pkgs.mysql80
services.postgres.enable
Apakah akan mengaktifkan server PostgreSQL.
Jenis: boolean
Default: false
Contoh: true
services.postgres.enableTcp
Apakah akan mengaktifkan Postgres untuk memproses TCP.
Jenis: boolean
Default: true
Contoh: true
services.postgres.package
Paket PostgreSQL yang akan digunakan.
Jenis: paket
Default: pkgs.postgresql
Contoh: pkgs.postgresql_15
services.postgres.extensions
Ekstensi Postgres yang akan diinstal.
Jenis: daftar (salah satu dari "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")
Default: [ ]
Contoh: [ "pgvector" "postgis" ];
services.pubsub.enable
Apakah akan mengaktifkan emulator Google Pub/Sub.
Dokumentasi selengkapnya tentang cara menggunakan emulator dapat ditemukan di sini: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator .
Jenis: boolean
Default: false
Contoh: true
services.pubsub.port
Mengonfigurasi port yang akan diproses Pub/Sub.
Jenis: Bilangan bulat tanpa tanda tangan 16 bit; antara 0 dan 65535 (inklusif)
Default: 8085
services.pubsub.project-id
Project ID yang akan digunakan untuk menjalankan emulator Pub/Sub. Project ini hanya untuk pengujian, tidak harus ada dan hanya digunakan secara lokal.
Jenis: string yang cocok dengan pola [a-z][a-z0-9-]{5,29}
Default: "idx-pubsub-emulator"
services.redis.enable
Apakah akan mengaktifkan server Redis.
Jenis: boolean
Default: false
Contoh: true
services.redis.port
Mengonfigurasi port yang akan diproses Redis.
Secara default, tcp dinonaktifkan dan redis hanya memproses di /tmp/redis/redis.sock.
Jenis: Bilangan bulat 16-bit tanpa tanda tangan; antara 0 dan 65535 (inklusif)
Default: 0
services.spanner.enable
Apakah akan mengaktifkan Emulator Google Cloud Spanner.
Jenis: boolean
Default: false
Contoh: true
services.spanner.fault-injection
Apakah akan mengaktifkan injeksi error acak ke dalam transaksi.
Jenis: boolean
Default: false
Contoh: true
services.spanner.grpc-port
Port TCP yang harus diikat oleh emulator.
Jenis: Bilangan bulat 16-bit tanpa tanda tangan; antara 0 dan 65535 (inklusif)
Default: 9010
services.spanner.rest-port
Port tempat permintaan REST ditayangkan
Jenis: Bilangan bulat tanpa tanda tangan 16 bit; antara 0 dan 65535 (inklusif)
Default: 9020