Bu rehber NixOS'ta en çok kullanılan paket yönetim araçları hakkında bilgi verme amaçlı yazılmıştır.
Öncelikle rehbere hoş geldiniz. Bu rehberde nix-Shell, Configuration.nix ve nix-env(ufak bir kısmı, daha sonra detaylandırılmış rehberi yapılması planlandı) üzerinden paket yönetimini anlatacağım.
nix-Shell kullanımı:
Nix-Shell, terminal açık olduğu sürece paketleri indirip kullanmanıza olanak tanır.
Örneğin neofetch veya fastfetch gibi yazılımları en fazla 1 2 defa açıp daha yüzüne bakmadığımız veya ana sisteminizde kullanacağınız bir yazılımı kalıcı olarak kurmadan önce denemek isteyebilirsiniz.
Örnek kullanım (fastfetch):
Tek seferde daha fazla paket indirmek için ise
Eğer kullanmak istediğiniz paketler sisteme etki edebilen paketlerse bunu sistemden izole bir şekilde çalıştırabilirsiniz. Bunun için koda
Bonus: Bash veya zsh kabuğu ile çalıştırmak için ise
Tamam yeter bu kadar, nix-Shell'i anlat anlat bitmez, nix-Shell bu kadarsa diğerlerini siz düşünün. (özellikle nix-env kodunu)
nix-env kullanımı (aşırı sadeleştirilmiş hali):
Paket yüklemek için kullanılış şekli
Örnek:
Kurulan paketleri listelemek için:
Silmek için:
Örnek:
Ufak bir bilgi vereyim. Örnek verdiğim paket üzerinden gidersem
Configuration.nix ile paket yönetimi:
Evet, genel olarak kullanıcıların en çok muhatap olduğu kısma geldik. (keşke gelmeseydik.
) neyse işi sulandırmadan anlatıma geçelim.
Ben 2 farklı şekilde anlatacağim, biri "program enable" satırı ile, diğeri ise "environment System packages" satırı ile ilgili olacak.
Programs enable:
Örnek:
Örnek:
Bazı paketler yukarıdaki gibi özel ayarlara ihtiyaç duyabiliyor ancak altta bahsedeceğim yöntem yeterli olacaktır. De ve WM gibi araçlarda bu satırlara ihtiyaç duyulabilmekte. (veya başka bir yazılımda)
Environment systempackages: Kurmak istediğiniz asıl paketleri listelediğimiz yerdir. Configuration.nix dosyasının içinde varsayılan olarak bulunur ve içine sadece adını yazmanız yeterli olur.
Örnek kullanım:
veya
daha sonra
Ufak bir not: Eğer nix-env ile bir paket kurduktan sonra konfigürasyon dosyası ile de kurmaya çalışırsanız paket yüklemesi gerçekleşse bile hata alırsınız. Bunu öğrendiğinize göre yukarıda bahsettiğim gibi silip konfigürasyon dosyanıza öyle yükleyin
İnşa artıkları yani eski yapılandırmaları silmek isterseniz
Bu kod haftada bir kez sistem açıldıktan sonra eski yapılandırmaları temizler, isterseniz düzenleyin, kod kapalı değil ya.
Rehber buraya kadardı, umarım gözünüz korkmamıştır.
Öncelikle rehbere hoş geldiniz. Bu rehberde nix-Shell, Configuration.nix ve nix-env(ufak bir kısmı, daha sonra detaylandırılmış rehberi yapılması planlandı) üzerinden paket yönetimini anlatacağım.
nix-Shell kullanımı:
Nix-Shell, terminal açık olduğu sürece paketleri indirip kullanmanıza olanak tanır.
Örneğin neofetch veya fastfetch gibi yazılımları en fazla 1 2 defa açıp daha yüzüne bakmadığımız veya ana sisteminizde kullanacağınız bir yazılımı kalıcı olarak kurmadan önce denemek isteyebilirsiniz.
Örnek kullanım (fastfetch):
nix-shell -p fastfetch
şeklindedir. Tek seferde daha fazla paket indirmek için ise
nix-shell -p fastfetch htop neovim
şeklindedir.Eğer kullanmak istediğiniz paketler sisteme etki edebilen paketlerse bunu sistemden izole bir şekilde çalıştırabilirsiniz. Bunun için koda
--purge
eklemelisiniz. Örnek: nix-shell -p python --purge
Bonus: Bash veya zsh kabuğu ile çalıştırmak için ise
nix-shell -p fastfetch zsh -i zsh
Tamam yeter bu kadar, nix-Shell'i anlat anlat bitmez, nix-Shell bu kadarsa diğerlerini siz düşünün. (özellikle nix-env kodunu)
nix-env kullanımı (aşırı sadeleştirilmiş hali):
Paket yüklemek için kullanılış şekli
nix-env -iA nixos.paket adı
şeklindedir.Örnek:
nix-env -iA nixos.fastfetch
şeklindedir.Kurulan paketleri listelemek için:
nix-env -q
yazabilirsiniz.Silmek için:
nix-env -e paketadı
yazabilirsiniz.Örnek:
nix-env -e fastfetch
Ufak bir bilgi vereyim. Örnek verdiğim paket üzerinden gidersem
fastfetch" ≠ "fastfetch-unstable
görüldüğü gibi paketin içeriğindeki ismi farklı ise doğru olanı girmelisiniz. Yularıdaki gibi listeleyip görebilirsiniz.Configuration.nix ile paket yönetimi:
Evet, genel olarak kullanıcıların en çok muhatap olduğu kısma geldik. (keşke gelmeseydik.

Ben 2 farklı şekilde anlatacağim, biri "program enable" satırı ile, diğeri ise "environment System packages" satırı ile ilgili olacak.
Programs enable:
Programs enable = systemctl enable
bunu unutmayalım./etc/nixos/configuration.nix
dizininde herhangi bir satıra programs.uygulamaadi.enable = true;
veya services.servisadi.enable = true;
eklemek olur.Örnek:
programs.hyprland.enable = true;
Örnek:
services.xserver.enable = true;
Bazı paketler yukarıdaki gibi özel ayarlara ihtiyaç duyabiliyor ancak altta bahsedeceğim yöntem yeterli olacaktır. De ve WM gibi araçlarda bu satırlara ihtiyaç duyulabilmekte. (veya başka bir yazılımda)
Environment systempackages: Kurmak istediğiniz asıl paketleri listelediğimiz yerdir. Configuration.nix dosyasının içinde varsayılan olarak bulunur ve içine sadece adını yazmanız yeterli olur.
Örnek kullanım:
Kod:
environment.systemPackages =
map (p: pkgs.${p}) [
"git"
"neovim"
"home-manager"
"hyprland"
];
veya
Kod:
environment.systemPackages = with pkgs; {
hyprland
home-manager
neovim
};
daha sonra
nixos-rebuild switch
ile sistemi inşa ederek paketleri yüklemiş oluyoruz. Eğer geri silmek isterseniz programın olduğu satırı silebilir veya başına "#" işareri ekleyip yeniden inşa etmeniz yeterli olur.( inşa derken aklınıza inşaat gelmiyor, değil mi?)Ufak bir not: Eğer nix-env ile bir paket kurduktan sonra konfigürasyon dosyası ile de kurmaya çalışırsanız paket yüklemesi gerçekleşse bile hata alırsınız. Bunu öğrendiğinize göre yukarıda bahsettiğim gibi silip konfigürasyon dosyanıza öyle yükleyin

İnşa artıkları yani eski yapılandırmaları silmek isterseniz
nixos-collect-garbage -d
ile eski yapılandırmaları temizlemiş olursunuz. Otomatikleştirmek isterseniz konfigürasyona alttaki satırları ekleyin.
Kod:
systemd.services.nix-collect-garbage = {
description = "Nix artık temizleme";
wantedBy = ["multi-user.target"];
serviceConfig.ExecStart = "/usr/bin/nix-collect-garbage -d";
timerConfig.OnBootSec = "5min";
timerConfigOnUnitActiveSec = "1w";
};
Bu kod haftada bir kez sistem açıldıktan sonra eski yapılandırmaları temizler, isterseniz düzenleyin, kod kapalı değil ya.

Rehber buraya kadardı, umarım gözünüz korkmamıştır.
Son düzenleyen: Moderatör: