
在 NixOS 上,我嘗試在沒有 Gnome 的情況下編譯我的系統。例如,network-manager/openconnect 有一個 withGnome 選項:
{ stdenv, fetchurl, openconnect, intltool, pkgconfig, networkmanager, libsecret
, withGnome ? true, gnome3, procps, kmod }:
我想將其設為 false;但雖然我可以透過覆蓋來做到這一點,但我不清楚如何將 withGnome 設定為 false全部作為系統一部分所建構的軟體包。
在 nixos 手冊的 6.1.1 中,如下;但這似乎是為了所有依賴者的利益而覆蓋單一包,而不是用單一選項覆蓋所有包。
上面顯示的覆蓋不是全域的。它們不影響原包裝; Nixpkgs 中的其他軟體包繼續依賴原始軟體包而不是客製化的軟體包。這意味著,如果系統中的另一個套件依賴原始套件,那麼您最終會得到該套件的兩個實例。如果您想讓一切取決於您的自訂實例,您可以套用全域覆蓋,如下所示:
非常感謝任何幫助。
答案1
在 Nixpkgs 中,套件選項在套件之間沒有共享含義,因此可能很難擺脫對 Gnome 的所有依賴關係。您有可能需要為其編寫大量重寫。nix why-depends
在這裡可以提供很多幫助。
儘管如此,還是有一個模組選項稱為environment.noXlibs
,這會關閉withGnome
我在 Nixpkgs 中找到的套件選項的所有用法。那也許有一個簡單的方法?