NixOS'ta Modül Değerini Zorla Geçersiz Kılmak: lib.mkForce
Problem
Bir NixOS servisinin otomatik başlamasını kapatmak için şunu denedim:
systemd.services.ollama.wantedBy = [];
Rebuild sonrası servis hâlâ başlıyordu.
Neden
NixOS modül sistemi birden fazla modülün aynı seçeneği tanımlamasına izin verir ve bunları birleştirir. services.ollama.enable = true yazdığında, servis modülü wantedBy = [ "multi-user.target" ] tanımlar. Senin wantedBy = [] tanımın eklenir, üzerine yazılmaz — birleştirme işlemi ikisini de görür.
Çözüm
systemd.services.ollama.wantedBy = lib.mkForce [];
lib.mkForce, modül birleştirme sırasında diğer tüm tanımları atar ve bu değeri kazanmaya zorlar. Aynı pattern herhangi bir NixOS modül seçeneği için geçerli:
# Örnek: hardening modülünden gelen değeri geçersiz kıl
systemd.services.nginx.serviceConfig.ProtectSystem = lib.mkForce "strict";
lib.mkDefault da var — ama o tam tersi: başka bir modül aynı seçeneği tanımlarsa, mkDefault’un değeri kaybeder.