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.

EOF.