我读了一些关于NixOS的内容,并且最近尝试过,因为我觉得它可以让我只用一个文件来配置Linux。
当我使用它时,我安装了一堆包含nix-env
的软件包,因此它们并没有在configuration.nix
中结束,但我可以稍后卸载它们并将它们添加到configuration.nix
手工制作。我在npm i -g <package>
之类的东西会全局安装它,所以最终会在configuration.nix
中,并且可以简单地复制到另一台机器上。
此外,我安装了zsh
和atom
之类的东西,他们有一个完全不同的配置和自定义方法(bashscript,javascript,less等)。
Nix / NixOS还有办法跟踪特定于软件包的配置吗?
它是否已经发生并且我没有看到它?就像包的nix表达式知道包将存储其配置等的位置一样。
我的意思是,我可以将这些软件包添加到主配置中,并且在另一台PC上使用它时我安装了相同的软件,但我仍然认为自己也为已安装的软件包编写了相当多的配置,这很好。 。
答案 0 :(得分:7)
如果您希望通过configuration.nix
安装软件包,那么最简单的方法是将它们添加到environment.systemPackages
属性中。其中列出的软件包将自动提供给计算机上的所有用户。据我所知,没有shell命令可用于自动维护该属性。管理该列表的唯一方法是修改configuration.nix
并手动添加您希望安装的软件包。
Nix 不管理特定于程序包的配置文件。您可能知道,NixOS为/etc
中的文件提供了这样的机制,但是在$HOME
等中管理配置文件的类似机制不存在。 Github上的PR https://github.com/NixOS/nixpkgs/pull/9250包含了向Nix添加此功能的具体提议,但尚未合并,因为它需要进行一些有争议的更改。
答案 1 :(得分:1)
Nix 目前不提供管理用户特定配置或语言特定包管理器的方法。 AFAICT 那是因为与为 sshd 等生成配置相比,这是一个非常复杂和固执己见的领域。
然而,有一些基于 Nix 的项目至少为您的问题的某些部分提供了解决方案。要管理用户配置(zsh 等),请查看 home manager。