我是新手NixOS并尝试学习其概念。我对它感到兴奋的原因之一是我希望它能够为我提供可重现的系统配置,类似于使用适用于本地主机的 Ansible。但是,我不确定如何实现这一点。
我知道environment.systemPackages
在/etc/nixos/configuration.nix
,但这些只是系统范围的软件包。我还知道nix-env
命令可以为用户安装一个包,但我宁愿在可以检查到源代码管理的文件中声明这样的包。
是否有一个特定的文件可以配置(类似于剧本),在其中我可以为用户声明一组包?或者至少指定其“用户环境”或者“个人资料”(不确定哪一个术语是正确的)?
理想情况下,我可以获取一些文件,将它们复制到另一台计算机,运行命令,并且它与旧计算机处于相同的状态,包括具有不同软件包集的多个用户。
最后,我的用例是否意味着我永远不应该使用nix-env
安装软件包?
答案1
因此我询问了 Freenode #nixos IRC 频道上的人们,他们给了我这个答案。
我需要创建一个~/.nixpkgs/config.nix
文件。在该文件中,我需要创建一个包裹领取使用buildEnv 函数并使用 进行安装nix-env
。
使用以下方式安装临时包nix-env
不会更新~/.nixpkgs/config.nix
,因此对于我的用例,我希望避免这样做。不过,值得注意的是,使用安装临时包nix-env
对于实验仍然有用,因为使用开关安装包集合--remove-all
会删除该包集合中不存在的所有内容。