是否應該將軟件包安裝到系統配置文件或用戶配置文件中取決於您想要實現的功能。沒有單一的正確答案。相反,這兩種安裝包都有不同的優缺點。
系統包在全局配置文件中定義,該文件通常駐留在/etc/nixos/configuration.nix
中。 root
以外的用戶通常不能編輯該文件,因此無法從列表中添加或刪除軟件包。在此定義的軟件包將作爲nixos-rebuild
的一部分進行安裝,它們將在您系統的每個用戶的$PATH
中提供。但是,如果任何這些軟件包由於某種原因而無法編譯,那麼您無法重建系統,即您可能發現自己處於無法更新內核的狀況,因爲nano
未編譯。遵循Nixpkgs git存儲庫的master
分支的用戶可能會頻繁遇到此問題,但對於unstable
或release-x.y
渠道的用戶而言,這種情況不會發生太多。
您的系統上的任何用戶都可以安裝,更新和卸載用戶軟件包,而無需超級用戶權限。一個用戶的包不會被其他用戶看到(除非她有意識地將它們導入$PATH
)。因此,兩個用戶可以安裝同一個軟件包的兩個不同版本。
如果用戶沒有定期更新自己的個人資料,那麼您會在Nix商店中堆積無法收集垃圾的舊包。這可能是一個問題或功能,取決於你如何看待它。另一方面,系統軟件包在每次更新系統時都會更新,因此這些軟件包通常佔用的磁盤空間更小。
就我個人而言,我寧願保持我的系統配置文件儘可能小;我主要通過nix-env
將軟件包安裝到用戶配置文件中。然而,我認識很多人,他們做的恰恰相反,我們都很好。 :-)