Rehber Nix develop kurulumu ve kullanımı

NixOS'e flake sistemi ile beraber gelen Nix Develop'un nasıl görüldüğünü ve kullanılabileceğini göstereceğim rehberime hoş geldiniz.


nix develop nedir?


Nix develop, nix-Shell'in daha güncel, rahat paylaşılabilir ve istikrarlı hali gibi düşünülebilir. Nix-Shell flake yerine nix aynalarına bağlı, yani ben 26.xx sürümünde derlediğim paketlerden aldığım sonuç ile 25.xx sürümünü kullanan kişinin alacağı sonuç farklı olabilir. Nix develop ise flake sistemini kullandığı için benim elde ettiğim çıktının aynısını 25.xx sürümünü kullanan kişi de elde edebilir.

Nix develop ve nix-Shell normal sistemin RAW halini es geçip özel çalıma ortamı oluşturur ve ilgili işlerinizi yazma kısıtlaması olmadan görmenizi sağlar.


nix develop nasıl kurulur ve kullanılır?


Öncelikle çalışacağınız projenin yanına terminaliniz ile geçiş yapın.

screenshot-2026-01-17_14-31-30.png


Resimde de gördüğünüz gibi flake.nix adlı bir dosya oluşturmalıyız, nix developu başlatırken bu dosyayı referans göstereceğiz. Bunu sistem için kullandığımız flake dosyasına yerleştirmeyi de göstereceğim ama ondan önce işin mantığını göstermeme müsaade edin.

kullandığınız metin editörü ile flake dosyamızı oluşturup içine alttaki betiği yapıştıralım.
Kod:
{
  description = "nix develop shell";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
  };

  outputs = { self, nixpkgs }:
  let
    system = "x86_64-linux";
    pkgs = import nixpkgs { inherit system; };
  in {
    devShells.${system}.default = pkgs.mkShell {
      name = "nix-develop-shell";

      packages = with pkgs; [
        nodejs
        python3
        python3Packages.textual
        git
        gcc
      ];

      shellHook = ''
        echo "nix develop shell aktif"
      '';
    };
  };
}

description: nix develop için oluşturduğumuz flake dosyamızın açıklamasıdır. düzenleyebilirsiniz.
nixpkgs.url: Paketlerin hangi kanaldan çekileceğini belirtir, bu betikte unstable kanaldan çekiyor, fakat kullandığınız sürüm ile aynı kanalı kullanmak istiyorsanız düzenlemeniz gerekir.
system: Hangi sistem mimarisinin kullandığını gösterir, çoğunluk olarak kullanıcılar amd64 işlemci kullanandığından x86_64-linux olarak kalmasında sakınca yoktur. ARM veya başka bir mimari kullanıyorsanız düzenlemeniz gerekir.
shellHook: Komut bittikten sonra yapılacakları belirtir, echo komutu ile terminale yazı yazdırmasını sağladık.
packages : Bizi daha çok ilgilendirecek yer ise burası, bu alanı kullanacağımız proje için hangi paketler lazım ise bunları oraya yazıyoruz, yukarıda da gördüğünüz gibi tui.py dosyam bu rehberin kobayı olacak, bu yüzden python3 ve textualı kurdum.

Dosyamızı kaydettiğimize göre şimdi de kullanalım. terminale nix develop yazalım. İlk defa build ettiğimizde bulunduğumuz klasörde flake.lock dosyası oluşacak ve bir miktar veri kullanacak.Bitince bu şekilde gözükecek:
screenshot-2026-01-17_15-01-15.png


Şimdi ise test edelim. Python ve textual kurmuştum, işte sonuç.
screenshot-2026-01-17_15-03-45.png
screenshot-2026-01-17_15-05-11.png


Paketler kurulu olmasına rağmen nix developu başlatmasaydım bu şekilde gözükecekti:
screenshot-2026-01-17_15-08-26.png



Sistem Flake'inin içinde dahil etme


Hali hazırda nixpkgs.url ekli olduğu için konfigürasyonunuzun outputs kısmına ekleme yapmanız gerekmekte. örneğin:
Kod:
devShells.${system} = {
  default = pkgs.mkShell {
    name = "default-shell";
    packages = with pkgs; [
      python3
      python3Packages.textual
    ];
    shellHook = ''
      echo "nix develop shell aktif"
    '';
  };
 
  python-dev = pkgs.mkShell {
    name = "python-shell";
    packages = with pkgs; [
      python3
      python3Packages.pip
    ];
  };
};

mkShell kısmından öncesi shellin adı ve bununla başlatacağız. default olarak neyi ayarlarsanız nix develop yazınca onu başlatırsınız. eğer yukarıdaki betiği incelerseniz 2 tane shell olduğunu görebilirsiniz. nix develop .#python-dev yazarak tanımladığımız diğer shelli başlatmış olacağız.

Okuduğunuz için teşekkürler, anlamadığınız bir yeri çekinmeden sorabilirsiniz.
 

Bu konuyu görüntüleyen kullanıcılar

  • Technopat Haberler

    Yeni konular

    Geri
    Yukarı