- Nix paket yöneticisi temelli NixOS, tüm sistemi kod olarak tanımlayan ve onu istenildiğinde deterministik ve yeniden üretilebilir bir duruma geri yükleyebilen bir yapıya sahiptir
- Tüm ayarlar ve paketler tek bir deklaratif yapılandırma dosyası ile yönetilir; böylece yeni bir cihazda bile aynı ortam tek bir kaynaktan yeniden kurulabilir
- 6 aylık döngüye sahip istikrarlı sürümler, otomatik güncellemeler ve gerektiğinde unstable kanalı üzerinden en yeni yazılımları denemeyi destekler
- İzole geliştirme ortamları sunarak sistemi kirletmeden farklı diller ve araçların denenmesini sağlar; ayrıca macOS ve Linux arasında tutarlı bir geliştirme deneyimi sürdürür
- LLM kodlama çağında araçların hızla değişmesine uyum sağlar ve Docker'dan daha deterministik ve katmanlı derleme modeli ile dağıtıma kadar tutarlılığı korur
NixOS'un felsefesi ve çekiciliği
- NixOS'un özü bir Linux dağıtımı değil, Nix paket yöneticisidir
- NixOS, deterministik ve yeniden üretilebilir işlevsel bir paket yöneticisinin bir sonucudur ve girilen Nix DSL'e göre tüm işletim sistemini yapılandırabilir
- Sistemi yeniden inşa etmeye veya yalnızca bir kısmını değiştirmeye imkân verir; sonuç hoşunuza gitmezse geri alma yapılabilir
- Çoğu işletim sistemi zamanla kararsız hâle gelirken, NixOS'ta durum tanımlanabilir ve derlenebilir
- Paket kurulumu, ayar değişiklikleri, araç ekleme/kaldırma nedeniyle belirsiz durumların birikmesini önler
- Sistemi kod olarak tanımlayarak aynı sonucun her zaman yeniden üretilebilmesini sağlar
Deklaratif yapılandırma ve tek kaynak yönetimi
- NixOS'ta paketler, ayarlar, klavye eşlemeleri gibi tüm sistem tek bir deklaratif yapılandırma olarak tanımlanabilir
- GNOME eklenti ayarları ve klavye eşleme örneklerinde olduğu gibi, ayrıntılı davranışlar bile Nix DSL ile ifade edilebilir
- Yeni bir bilgisayarda da tüm sistem tek bir kaynaktan yeniden kurulabilir
- Manuel ayarlara veya dağınık script yönetimine gerek kalmadan tutarlı sistem durumu korunabilir
Kararlılık ve güncelleme yönetimi
- NixOS, 6 aylık öngörülebilir sürüm döngüsünü korur ve otomatik güncellemeleri destekler
- Tipik OS yükseltmelerinde görülen kararsızlık, bildirimler veya sistem drift'i sorunlarını en aza indirir
- Gerekirse unstable kanalı etkinleştirilerek en yeni yazılımlar deneysel olarak kullanılabilir
- HP dizüstü bilgisayarlarda da donanım uyumluluğu ve kararlılık yüksektir; ek ayar olmadan hemen kullanılabilir
Deney ve geliştirme ortamlarının izolasyonu
- NixOS, güvenli ve düşük maliyetli bir deney ortamı sunar
- Paketleri doğrudan sisteme kurmak yerine izole shell ortamlarında çalıştırmak mümkündür
- Nix DSL ile bağımlılıklar, derleme adımları ve çıktılar deklaratif olarak tanımlanarak kirlenmemiş geliştirme ortamları korunur
- Aynı Nix paket yöneticisi hem macOS hem Linux'ta kullanılabildiği için geliştirme araçları ve bağımlılık yönetiminde tutarlılık sağlanır
- FreeBSD için de topluluk desteği vardır
LLM kodlama çağıyla uyumu
- LLM tabanlı kodlama araçlarında belirli sürümlerde yardımcı araçlar, derleyiciler ve runtime'lar sık sık değiştirilmek zorundadır
- Nix bu ihtiyaca uygun olarak araçları deklaratif girdiler olarak ele alır ve onları izole ortamlarda çalıştırır
- Örneğin Rust tabanlı bir speech-to-text ajanı derlenirken Nix, Rust toolchain'ini otomatik olarak getirir ve izole bir derleme ortamı kurar
- Sistem ortamını (
~/.cargo, ~/.rustup, PATH vb.) değiştirmez
flake.nix ve nix flake check ile ajanın deney ortamı yeniden üretilebilir artifact'ler olarak sabitlenebilir
- Geçici oturumları doğrulanabilir derleme birimlerine dönüştürür
Dağıtım ve tutarlı geliştirme modeli
- Nix, Docker'dan daha deterministik ve katmanlı bir image derleme yaklaşımı sunar
dockerTools.buildLayeredImage kullanılarak küçük ve yeniden üretilebilir Docker image'ları oluşturulabilir
- Aynı yapılandırmayla farklı mimarilerde de aynı sonuç derlenebilir
- Aynı model dizüstü bilgisayar, shell, proje bağımlılıkları, CI pipeline'ı ve dağıtım artifact'lerine kadar tutarlı biçimde uygulanır
- Birden çok aracı bir araya getirmek yerine tek bir düşünme biçimiyle tüm yazılım sistemini yönetmek mümkün olur
Sonuç
- NixOS, deklaratif, yeniden üretilebilir, geri alınabilir ve kararlı bir sistemin somut bir uygulamasıdır
- Deneyler ve yükseltmeler korkmadan yapılabilir; hızla değişen araç ortamlarında bile sistemi kirletmez
- LLM kodlama ajanları gibi modern geliştirme akışlarında da kararlılık ve esnekliği aynı anda sunar
- NixOS, bu felsefenin günlük yaşamda en eksiksiz uygulanmış hâlidir
8 yorum
Ben de eskiden yaklaşık altı ay kadar NixOS kullanmıştım ama başka işletim sistemlerinde ayrıca araştırmaya bile gerek olmayan çok basit bir işi ne kadar Google'lasam da çözemeyince, NixOS forumu gibi bir yerde bir NixOS uzmanı mı ne tarafından kaydedilmiş çözümü gördüm; onlarca satırlık o hacky çözümün en çok beğeni alan şey olduğunu görünce NixOS'la önümdeki hayat bana kapkaranlık geldi ve Arch'a geri dönmüştüm...
Bir de tam hatırlamıyorum ama sanırım
flakegibi bir özellik vardı; bir yerde buna best practice deniyor, başka bir yerde experimental deniyor, bir başka yerde ise ikisi birden deniyor, ve bunun yıllardır böyle sürüp gittiğini görünce insanı bekleyen zorluk yolu apaçık görünüyordu..Tabii tüm masaüstü ortamını kolayca kodla tanımlayabilme deneyimi keyifliydi
Firebase Studio da Nix kullanıyor
Oo...anladım!
Bu arada, huzur içinde yat Firebase Studio :(
Çok zor, biraz denedim ama vazgeçtim hıçkırık hıçkırık
(I use Arch btw)
Bilenler kendi aralarında usul usul kullanıyor işte haha
Bildirimsel işlevsel bir dille gerçekleştirilen yeniden üretilebilir kurulum
Öğrenme eğrisi akıl almaz düzeyde. Yeniden üretilebilirliği garanti ettiği ölçüde yüksek bir seviye talep ediyor.
flakekullansanız bile zorlayıcı.Ayrıca içeride
sqlitekullanıyor gibi görünüyor; bunun performansı da bir iyi bir kötü olduğundan, ortamı yeniden kurmanın ne kadar süreceğinde biraz dalgalanma var.Hacker News görüşleri
Bence NixOS, yapay zeka araçlarıyla uyum açısından rakipsiz
Diğer işletim sistemlerinde sistem yapılandırmasını yapay zekaya emanet etmek zorken, NixOS bunu bildirime dayalı ve geri alınabilir yapısı sayesinde güvenilir kılıyor
PulseAudio'dan PipeWire'a geçişi ya da Hyprland kurulumunu Claude'a veya Codex'e bırakmazdım ama NixOS söz konusuysa bunu Grok'a bile emanet edecek kadar güveniyorum
Asıl önemli olan, değişiklikleri önceden gözden geçirebilmek ve istediğin an geri alabilmek
Geliştiriciyseniz, “yapay zeka tarafından yönetilen bir Linux masaüstü” hayaliyle NixOS'u denemenizi öneririm. Claude'a “VM üzerinde gösterilebilecek Flake tabanlı bir Gnome yapılandırması hazırla” demeniz yeterli
Claude'un GNOME dconf ayarlarını bildirime dayalı şekilde düzenlediğini görmek şaşırtıcı
Yine de yapay zeka, Nix ekosisteminin karmaşık bağlamını anlayamadığı için bazen alakasız sonuçlar üretebiliyor
Nix'in düzenli olmayan lambda yapısı ve modüller arası örtük kapsamları, bunun sadece insanlar için değil yapay zeka için de zor olduğunu hissettiriyor
Bu yüzden projenin yapısını ve kalıplarını net tanımlamak önemli. Buna rağmen Nix tabanlı şablonlar oluşturma süreci keyifli ve verimli
Hyprland kurmak için gerçekten bir LLM kullanmaya gerek var mı? Basitçe
sudo dnf install hyprlandyeterliNix'in “yapay zeka dostu” olmasından çok, insanların doğrudan kullanmasının zahmetli olması nedeniyle LLM kullanılıyor gibi geliyor
Birden fazla makinenin yapılandırmasını “iş profilleri” olarak yönetiyor, her makineye gerekli repo ve ayarları otomatik dağıtıyordum
İş arkadaşım aslında bir Windows kullanıcısıydı ama şimdi günlük olarak NixOS kullanıyor
Tüm donanım ayarlarını da bildirime dayalı olarak yönetiyorum ve yapılandırmam GitHub açık deposunda yer alıyor. Geri bildirime açığım
Yapılandırmayı yeni bir düzene taşırken ya da farklı WM/DE test ortamları kurarken Claude tekrar eden işlerin çoğunu hallediyor
Şu anda sistem tamamen oturduğu için elle yapılacak iş neredeyse kalmadı
Başka işletim sistemlerinde bu düzeyde güven duymak zor
Onun yerine geliştirme ortamlarını Docker betikleriyle yönetiyordum ama artık Nix ile yapay zekanın uyumunun kusursuz olduğunu düşünüyorum
Bundan sonra yapay zekanın daha kolay kullanabileceği çok daha fazla yazılım çıkacak gibi görünüyor
30 yıl Windows kullandıktan sonra 1 yıl önce tamamen Nix'e geçtim
Artık Windows'a geri dönmeyi hiç düşünmüyorum
Tüm işletim sistemi yapılandırmasının Git deposunda olması harika
Nix olmadan geliştirme yapmak, Git olmadan kod yazmak kadar verimsiz
Bir kez ayarladıktan sonra yeni bir sistemi kurmak çok kolaylaşıyor
Her uygulamayı bağımsız bir ortamda çalıştırıp tüm sistemi etkilememesini istiyorum
NixOS'un böyle bir geleceğe giden yollardan biri olduğunu düşünüyorum
Nvidia GPU da iyi çalışıyor ve Gamescope'tan çok daha kararlı
NixOS'u daha çok sevmek istiyorum ama en büyük sorun dokümantasyon eksikliği
Bilgi farklı forumlara, eski blog yazılarına ve issue'lara dağılmış durumda
İkisi de güncelleniyor ama hangisinin daha güncel olduğu her aramada değişiyor gibi
nixpkgs'i klonlayıp doğrudan okumak en hızlı yol
NixOS'u dizüstü bilgisayar işletim sistemi olarak kullandım ve artılarıyla eksileri çok belirgindi
Bildirime dayalı yapılandırma ve snapshot özellikleri devrim niteliğinde ama paket/hizmet ayrımı ve Flake kavramı kafa karıştırıcıydı
KDE kurulurken sadece en temel bileşenler geliyordu, ek yapılandırma gerekiyordu ve dokümanlar da sürüme göre değiştiği için takip etmek zordu
Sonunda kararlı bir makineye ihtiyacım olduğu için vazgeçtim ama sistem yöneticileri için mükemmel bir tercih olabilir
Determinate Systems kurucusu varsayılan olarak Flake'i etkinleştiriyor
/etc/nixosyapılandırmasını bir Git deposuna taşıyabilir venixos-install --flake <repo>komutuyla tam yapılandırma dağıtımı yapabilirsinizHome-manager ile birlikte kullanırsanız kullanıcı dizinine kadar bildirime dayalı yönetim mümkün olur
/etcdosyalarıenvironment.etcile,.configdosyaları ise home-manager seçenekleriyle yönetilebilirİlgili bağlantılar: environment.etc seçeneği, home-manager seçenekleri
mkOutOfStoreSymlinkile ilgili doküman ararken “çok basit, dokümana gerek yok” cevabını görünce gülmüştümBuna rağmen NixOS'un avantajları o kadar büyük ki homelab → dizüstü → masaüstü sırasıyla tamamen geçiş yapıyorum
Ama dokümantasyon durumu hâlâ umutsuz
Yani Nix seviyesinde package.json ve lock dosyasının işlevini görüyor
NixOS'u uzun zamandır seviyordum, LLM çağından sonra daha da çok sevmeye başladım
Codex'e “Bu sunucu yapılandırmasını değiştirip wildcard sertifikanın çalışmasını sağla” dediğimde 5 dakika içinde çözüyor
Yeniden üretilebilir sunucu yönetimi hiç bu kadar kolay olmamıştı
NixOS'a geçtikten sonra apt veya brew ile yönetilen dönem taş devri teknolojisi gibi geliyor
Copilot gibi yapay zeka araçlarıyla da harika çalışıyor
Bir sorunu çözmek için sıradan Linux'a göre daha derin anlayış gerekiyor
Ama karşılığında karmaşıklığı en başta tek seferde ödüyorsunuz
nix-shell ile geçici kurulumlar yapabilmek ya da tek bir yapılandırma dosyasından kurulu tüm paketleri görebilmek müthiş
Otomatik snapshot'lar sayesinde deney yapmaktan korkmuyorum. Bir şey bozulursa önceki nesle önyüklemek yeterli
Eskiden kernel parametrelerini değiştirmek gözümü korkuturdu ama artık rahatça deniyorum
Lisp sevdiğim için Guix System'i de düşündüm ama gerçek kullanım açısından NixOS daha iyi
Keşke NixOS'un alışılmadık dosya sistemi yapısı olmasa
Bu yapı aynı anda birden fazla Python sürümü kullanma sorununu çözmeye yönelik ama benim için gerekli değil
Ben sadece tüm makinelerde aynı yapılandırmayı korumak istiyorum
Şu anda Fedora bootc imajlarıyla Podman deniyorum ama
nixos-rebuild switchgibi anında uygulama özelliği olmadığı için rahatsız ediciSonuçta mesele, kolay deney yapılabilen Nix ile standart dosya sistemine sahip Fedora arasındaki denge
NixOS'un en büyük avantajı CI önbelleğinin deterministik yeniden üretilebilirliği
Paketleri her seferinde yeniden derlemeye gerek kalmıyor ve geliştirme ortamı kurmak da kolaylaşıyor
Örneğin Tangled, tüm CI sistemini Nix ile kurdu ve GitHub Actions'ın önbellekleme sorununu tamamen çözdü
Sistemin tamamında değil ama devenv.sh'yi severek kullanıyorum
Yerel konteynerlere göre geliştirme ortamı kurmayı çok daha kolaylaştırıyor
asdf'nin
.tool-versionsdosyası kadar basit bir sürüm eşleme yöntemi olmaması üzücüNix tarafı “bu yanlış yaklaşım” diyor ama ben yine de tek tek sürümleri sabitlemek istiyorum
pkgs.mkShellile de kurulabiliyor; o zaman neden özellikle devenv kullanılmalı, merak ediyorumBen NixOS'u da seviyorum ama Guix'i daha çok tercih ediyorum
Guile diline daha aşinayım ve dokümantasyonu da daha iyi. İki sistemi kardeş gibi görüyorum
Gerçek bir programlama dili (Scheme) kullanması büyük avantaj
Basit bir yapılandırma diline göre çok daha güçlü bir temel sunuyor