dev.nix Referansı

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

Nix dili hakkında bilgi edinmek için resmi Nix dili eğitim kılavuzuna göz atın.

packages

Ortama yüklenecek paketler.

Yüklenecek paketleri seçmek için pkgs bağımsız değişkenini kullanabilirsiniz (ör. 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 şuradan arayabilirsiniz: stable-23.11 veya 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" seçeneklerinden biri

Varsayılan: "stable-23.11"

env

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

Bu bilgiler tüm kabuklarınıza ve önizleme sunucusuna dağıtılır. Ortam değişkenleri, özellikle uygulamanız belirli bir değişken grubu gerektiriyorsa yararlı olabilir.

Her değişkenin değeri bir dize veya dize listesi olabilir. İkincisi, iki nokta üst üste karakterleriyle birlikte 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) öznitelik 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}).

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

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

Varsayılan: [ ]

idx.previews.enable

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

Bu özellik, uygulamalarınızı geliştirirken otomatik olarak çalıştırmanızı ve yeniden yüklemenizi sağlar.

Tür: boole

Varsayılan: true

Örnek: true

idx.previews.previews

Yapılandırmaları önizleyin.

IDX'nin geliştirici 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) özellik grubu

Varsayılan: { }

idx.previews.previews.<name>.activity

Android Başlatma Etkinliği

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 özelliği grubu

Varsayılan: { }

idx.previews.previews.<name>.manager

Yönetici

Tür: "web", "flutter", "android", "gradle" seçeneklerinden biri

idx.workspace.onCreate

Workspace oluşturulup ilk kez açıldığında çalıştırılacak komutlar.

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

{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 = [ string ];})) özellik grubu

Varsayılan: { }

idx.workspace.onStart

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

Bu, derleme izleyicileri başlatmak için yararlı olabilir. Örneğin, burada çalıştırılacak 2 komutu 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 = [ string ];})) ö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
  ];
  # ...
}

dev.nix'a özel bir .nix dosyası içe aktarmak isteyebileceğiniz birden fazla neden vardır:

  1. dev.nix dosyanız büyük ve bakım kolaylığını artırmak için dosyayı modüler hale getirmek istiyorsunuz.

    { pkgs, ... }: {
      channel = "stable-24.11";
      # ...
      imports = [
        ./env-cfg.nix
        ./preview-config.nix
      ];
    }
    
  2. Yerel ortamınıza özgü 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

Workspace açıldığında etkinleştirilecek yaygın hizmetler.

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

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

Aşağıdaki bölümlerde, desteklenen tüm hizmetler ve bunların 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 adresinde dinler.

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

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

Varsayılan: 0

services.mysql.enable

MySQL sunucusunun etkinleştirilip etkinleştirilmeyeceği.

Sunucu, şifresiz bir kök kullanıcıyla 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'de dinleme yapmasını etkinleştirme.

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: "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" seçeneklerinden 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 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 65.535 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 adresinde dinler.

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

Varsayılan: 0

services.spanner.enable

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

Tür: boole

Varsayılan: false

Örnek: true

services.spanner.fault-injection

İşlemlere rastgele hata ekleme özelliğinin etkinleştirilip etkinleştirilmeyeceği.

Tür: boole

Varsayılan: false

Örnek: true

services.spanner.grpc-port

Emülatöre bağlanacak TCP bağlantı noktası.

Tür: 16 bit işaretsiz tam sayı; 0 ile 65.535 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 65.535 arasında (ikisi de dahil)

Varsayılan: 9020