Selamlar. NixOS'ta configuration.nix üzerinden home-manager kuranlar ikinci ve sonralarında derleme ile ilgili sorunlar yaşayabilmekte. Bende sorun yaşayanlara çözüm bulmak, yeni geçmek isteyenlerin de neler yaparak hatalardan kaçınabileceklerinden bahsedeceğim.
Home-manager,
(Çözümlerden birini az önce verdim ama biz onu kullanmayacağız.)
2. Nix-shell ile o sistemde kalıcı hâle getirmek
Öncelikle
Rebuild sonrası
Şimdi ise
Son olarak
Bunu
Konfigürasyonunuzdan home-manager satırını sildiğinizi varsayıyorum, çünkü paletlerin çakışıp boolean olmasını istemeyiz. Bu yüzden silmediyseniz silip rebuild yapın ve devam edin.
Bu kurulumu yaparsanız home.nix dosyanızı yedeklemeniz ve el ile yeniden yerleştirmeniz gerekebilir.
Daha sonra ise siz nasıl kullanmak istiyorsanız o şekilde ayarlayabilirsiniz. Umarım en az hata ile NixOS kullanmaya devam edersiniz!
Yaşanan sorun nedir?
Home-manager,
home-manager switch komutundan sonra "hâli hazırda olan yapılandırmadan dolayı derlenemiyor" veya benzeri bir hata verir. Bu sistem seviyesinde derlenmiş eski home-managerın kalıntısının kaldığını, ve sistemde çakışan paket oluşup çökmesini engellemek için alınan bir önlem. ./config/home/home.nix dosyasını her seferinde silip yeniden yazmak hem bizler için bıkkınlık kaynağı, hemde deklaratif yapıya karşı.(Çözümlerden birini az önce verdim ama biz onu kullanmayacağız.)
Çözüm yolları:
1. Flake ile modülleştirmek2. Nix-shell ile o sistemde kalıcı hâle getirmek
Flake ile modülleştirmek:
Muhtemelen başta en çok uğraştıracak, ama alışınca da deklaratif yapısı ile tek komut ile sistemi kurmanın zevkini verecek yöntem. (Kendimden biliyorum)Öncelikle
configuration.nix dosyanızın herhangi bir yerine nix.settings.experimental-features = [ "nix-command" "flakes" ]; yazıp rebuild edin. Flake rehberi yazdığım vakitte hâlâ tam olarak stabil sayılmadığından etkinleştirilmesi gerek.Rebuild sonrası
cd /etc/NixOS ile konfigürasyonun yanına geldikten sonra nix flake init ile flake.nix dosyamızı oluşturalım. Nano/vim veya başka bir editör ile dosyayı açıp inputs = {}; bloğunun içine bunları yapıştırın:
Kod:
home-manager.url = "github:nix-community/home-manager";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
Şimdi ise
outputs = {}; bloğunu düzenleyelim. Parantezin içine home-manager ekleyelim, yani şöyle gözükecek: outputs ={self, nixpkgs, home-manager}@inputs: {};Son olarak
@inputs: {}; bloğuyla modülleştirmek kaldı. Verdiğim kodlar ile ekleyebilirsiniz:
Kod:
specialArgs = { inherit inputs; };
modules = [
./NixOS/hardware-configuration.nix
./NixOS/configuration.nix
home-manager.NixOSModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.backupFileExtension = "backup";
home-manager.users.asus = import ./home.nix;
home-manager.extraSpecialArgs = { inherit inputs; };
}
];
Bunu
system = "x86_64-linux"; satırının altına ekleyebilirsiniz. Daha sonra ise sudo NixOS-rebuild switch -- flake .# ile derleyebisiniz. flake.nix ile aynı konumda olduğunuzdan emin olun. Örnek olması adına kendi flake dosyamı da alta bırakacağım, ayrıca sizde "flakes for beginner" araması yapıp başka örnekler bulabilirsiniz.nix-env ile kurma:
Konfigürasyonunuzdan home-manager satırını sildiğinizi varsayıyorum, çünkü paletlerin çakışıp boolean olmasını istemeyiz. Bu yüzden silmediyseniz silip rebuild yapın ve devam edin.
nix-channel --add https://github.com/nix-community/home-manager/archive/master.tar.gz home-managernix-channel --updatenix-shell '<home-manager>' -A installBu kurulumu yaparsanız home.nix dosyanızı yedeklemeniz ve el ile yeniden yerleştirmeniz gerekebilir.
Daha sonra ise siz nasıl kullanmak istiyorsanız o şekilde ayarlayabilirsiniz. Umarım en az hata ile NixOS kullanmaya devam edersiniz!
Son düzenleyen: Moderatör: