dev.nix Referansı

Bu sayfada, çalışma alanı ortamı yapılandırma dosyanızın şemasıyla ilgili ayrıntılar yer alır. Bu dosya her zaman .idx/dev.nix konumunda bulunmalıdır.

Nix dili hakkında bilgi edinmek için resmi Nix dili eğitimine bakın.

packages

Ortama yüklenecek paketler.

Yüklenecek paketleri seçmek için pkgs bağımsız değişkenini kullanabilirsiniz. Örneğin: pkgs.python3. pkgs içeriğinin, seçilen channel kanal seçeneğine bağlı olduğunu unutmayın.

Örnek:

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

Kullanılabilir paketleri burada arayabilirsiniz: stable-23.11 veya<0x0x0A>unstable.

Tür: Paket listesi

Varsayılan: [ ]

kanal

Kullanılacak nixpkgs kanalı.

Bu kanal, pkgs bağımsız değişkeninin içeriğini tanımlar.

Tür: "stable-23.05", "stable-23.11", "stable-24.05", "stable-24.11", "unstable" değerlerinden biri

Varsayılan: "stable-23.11"

env

Geliştirme ortamında ayarlanan ortam değişkenleri.

Bunlar, tüm kabuklarınıza ve önizleme sunucusuna yayılır. Uygulamanız belirli bir değişken grubu gerektiriyorsa ortam değişkenleri özellikle yararlı olabilir.

Her değişkenin değeri bir dize veya dizeler listesi olabilir. İkincisi, iki nokta üst üste karakterlerle serpiştirilerek birleştirilir.

PATH her zaman genişletildiği ve hiçbir zaman tamamen değiştirilmediği için bir liste olmalıdır.

Örnek:

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

Tür: ((dize listesi) veya herhangi bir şey) özellik grubu

Varsayılan: { }

idx.extensions

IDX çalışma alanınıza yüklemek istediğiniz kod uzantıları

Bu, tam nitelikli uzantı kimliklerinin listesidir (ör. ${publisherId}.${extensionId}).

Kullanılabilir uzantıların listesini Open VSX Registry'de bulabilir ve dev.nix dosyanıza ${publisherId}.${extensionId} ile girebilirsiniz.

Tür: (boş olmayan dize veya yol) listesi

Varsayılan: [ ]

idx.previews.enable

IDX önizlemelerini etkinleştirmek için bu ayarı true olarak belirleyin.

Bu özellik, uygulamalarınızı geliştirirken otomatik olarak çalıştırmanıza ve yeniden yüklemenize olanak tanır.

Tür: boole

Varsayılan: true

Örnek: true

idx.previews.previews

Yapılandırmaları önizleyin.

IDX'in geliştirme ortamınızda yürüteceği komutları tanımlayın.

Örnek:

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

Tür: (alt modül) öznitelik grubu

Varsayılan: { }

idx.previews.previews.<name>.activity

Android Launch Activity

Tür: dize

Varsayılan: ""

idx.previews.previews.<name>.command

Yürütülecek komut

Tür: dize listesi

Varsayılan: [ ]

idx.previews.previews.<name>.cwd

Çalışma dizini

Tür: dize

Varsayılan: ""

idx.previews.previews.<name>.env

Ayarlanacak ortam değişkenleri.

Tür: Dize öznitelik grubu

Varsayılan: { }

idx.previews.previews.<name>.manager

Yönetici

Tür: "web", "flutter", "android", "gradle" değerlerinden biri

idx.workspace.onCreate

Çalışma alanı oluşturulup ilk kez açıldığında yürütülecek komutlar.

Bu, geliştirme ortamını ayarlamak için yararlı olabilir. Örneğin, burada çalıştırılacak npm install belirtiliyor:

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

Tür: (yol veya dize veya ({ openFiles = [ dize ];})) özellik grubu

Varsayılan: { }

idx.workspace.onStart

Çalışma alanı her açıldığında yürütülecek komutlar.

Bu, izleyici oluşturmaya başlamak için yararlı olabilir. Örneğin, burada çalıştırılacak 2 komut belirtiyoruz:

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

Tür: (yol veya dize veya ({ openFiles = [ dize ];})) özellik grubu

Varsayılan: { }

ithalat

dev.nix dosyanızı içe aktarılan bir dosyayla genişletebilirsiniz.

# dev.nix
{ pkgs, ... }: {
  imports = [
    ./some-file.nix
  ];
  # ...
}
# some-file.nix
{ pkgs, ... }: {
  packages = [
    pkgs.python3
  ];
  # ...
}

.nix'da özel bir dev.nix dosyası içe aktarmak istemenizin birden fazla nedeni olabilir:

  1. dev.nix dosyanız büyük ve bakımı kolaylaştırmak için modüler hale getirmek istiyorsunuz.

    { pkgs, ... }: {
      channel = "stable-24.11";
      # ...
      imports = [
        ./env-cfg.nix
        ./preview-config.nix
      ];
    }
    
  2. Yerel ortamınıza özel seçenekleri yapılandırmak ve dosyayı .gitignore listenize eklemek istiyorsunuz.

    # dev.nix
    { pkgs, lib, ... }: {
      # ...
    
      imports = lib.optionals (builtins.pathExists ./dev.local.nix ) [ ./dev.local.nix ];
    }
    
    #.gitignore
    .idx/dev.local.nix
    

Tür: yol listesi

Varsayılan: [ ]

services

Çalışma alanı açıldığında etkinleştirilecek yaygın hizmetler.

Örneğin, PostgreSQL'i etkinleştirmek ve pgvector uzantısını kullanmak için dev.nix'e aşağıdakileri ekleyin:

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

Aşağıdaki bölümlerde, desteklenen tüm hizmetler ve yapılandırılabilir seçenekleri listelenmiştir.

services.docker.enable

Rootless Docker'ın etkinleştirilip etkinleştirilmeyeceği.

Tür: boole

Varsayılan: false

Örnek: true

services.mongodb.enable

MongoDB sunucusunun etkinleştirilip etkinleştirilmeyeceği.

Tür: boole

Varsayılan: false

Örnek: true

services.mongodb.package

Kullanılacak MongoDB paketi.

Tür: paket

Varsayılan: <derivation mongodb-6.0.11>

services.mongodb.port

Mongod'un dinleyeceği bağlantı noktasını yapılandırır.

Varsayılan olarak tcp devre dışıdır ve Mongod yalnızca /tmp/mongodb/mongodb.sock adresini dinler.

Bağlanmak için bağlantı dizesini kullanın mongodb://%2Ftmp%2Fmongodb%2Fmongodb.sock.

Tür: 16 bit işaretsiz tam sayı; 0 ile 65535 arasında (ikisi de dahil)

Varsayılan: 0

services.mysql.enable

MySQL sunucusunun etkinleştirilip etkinleştirilmeyeceği.

Sunucu, şifresiz kullanıcı köküyle başlatılır. Bu nedenle, ek kullanıcılar ve veritabanları oluşturmak için mysql -u root kullanın.

Tür: boole

Varsayılan: false

Örnek: true

services.mysql.package

Kullanılacak MySQL paketi.

Tür: paket

Varsayılan: pkgs.mysql

Örnek: pkgs.mysql80

services.postgres.enable

PostgreSQL sunucusunun etkinleştirilip etkinleştirilmeyeceği.

Tür: boole

Varsayılan: false

Örnek: true

services.postgres.enableTcp

Postgres'in TCP üzerinden dinlemesini etkinleştirme seçeneği.

Tür: boole

Varsayılan: true

Örnek: true

services.postgres.package

Kullanılacak PostgreSQL paketi.

Tür: paket

Varsayılan: pkgs.postgresql

Örnek: pkgs.postgresql_15

services.postgres.extensions

Yüklenecek Postgres uzantıları.

Tür: Liste ("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" değerlerinden biri)

Varsayılan: [ ]

Örnek: [ "pgvector" "postgis" ];

services.pubsub.enable

Google Pub/Sub emülatörünün etkinleştirilip etkinleştirilmeyeceği.

Emülatörün kullanımıyla ilgili daha fazla dokümanı şu adreste bulabilirsiniz: https://cloud.google.com/pubsub/docs/emulator#using_the_emulator .

Tür: boole

Varsayılan: false

Örnek: true

services.pubsub.port

Pub/Sub'ın dinleyeceği bağlantı noktasını yapılandırır.

Tür: 16 bit işaretsiz tam sayı; 0 ile 65535 arasında (ikisi de dahil)

Varsayılan: 8085

services.pubsub.project-id

Pub/Sub emülatörünü çalıştırmak için kullanılacak proje kimliği. Bu proje yalnızca test amaçlıdır, var olması gerekmez ve yalnızca yerel olarak kullanılır.

Tür: [a-z][a-z0-9-]{5,29} kalıbıyla eşleşen dize

Varsayılan: "idx-pubsub-emulator"

services.redis.enable

Redis sunucusunun etkinleştirilip etkinleştirilmeyeceği.

Tür: boole

Varsayılan: false

Örnek: true

services.redis.port

Redis'in dinleyeceği bağlantı noktasını yapılandırır.

Varsayılan olarak tcp devre dışıdır ve redis yalnızca /tmp/redis/redis.sock adresini dinler.

Tür: 16 bit işaretsiz tam sayı; 0 ile 65535 arasında (ikisi de dahil)

Varsayılan: 0

services.spanner.enable

Google Cloud Spanner Emulator'ın etkinleştirilip etkinleştirilmeyeceği.

Tür: boole

Varsayılan: false

Örnek: true

services.spanner.fault-injection

İşlemlere rastgele hata eklemenin etkinleştirilip etkinleştirilmeyeceği.

Tür: boole

Varsayılan: false

Örnek: true

services.spanner.grpc-port

Emülatörün bağlanması gereken TCP bağlantı noktası.

Tür: 16 bit işaretsiz tam sayı; 0 ile 65535 arasında (ikisi de dahil)

Varsayılan: 9010

services.spanner.rest-port

REST isteklerinin sunulduğu bağlantı noktası

Tür: 16 bit işaretsiz tam sayı; 0 ile 65535 arasında (ikisi de dahil)

Varsayılan: 9020