虽然可以轻松地回滚NixOS构建代,但这不会给出/etc/nixos/configuration.nix中相应的NixOS配置。因此,在版本控制系统(VCS)中跟踪/etc/nixos/似乎很常见,例如在Git中。
在这样做时,是否也应该跟踪/etc/nixos/result符号链接?为什么?/为什么不?
发布于 2017-12-30 07:45:29
我看不出这样做有什么明显的好处,但也许我的用例在这方面太简单了。
我更喜欢看ls -l /nix/var/nix/profiles/和/或ls -l /nix/var/nix/profiles/system-profiles,这取决于您是否命名系统配置文件(S),而且我通常会手动删除我希望垃圾收集的符号链接。
发布于 2018-01-02 01:15:07
您可以在相应的代中跟踪您的configuration.nix。您只需创建对它的引用(在其内部),以便它成为闭包的一部分。下面是一个例子:
{ config, lib, pkgs, ... }:
{
# yada, yada
environment.etc."configuration.nix".source = /etc/nixos/configuration.nix;
};environment.etc 选项允许您在/etc中声明性地创建文件。Nix将将/etc/nixos/configuration.nix检测为path类型(路径是Nix中的头等类型),从而将其内容复制到Nix存储中。结果是一个符号链接/etc/configuration.nix指向(间接)到/nix/store/blah-blah-configuration.nix,这意味着每一代将有一个指向其相应配置的/etc/configuration.nix符号链接。然后,您可以对其他文件(如hardware-configuration.nix )执行类似的操作。
捕获
虽然上面的命令会存储您的配置,但是它不会使nix-env、nix-shell、nixos-rebuild等使用它,因为这些命令使用$NIX_PATH来定位信任。虽然您可能能够解决这个问题(请参阅这里),但我不建议这样做,因为当您运行nixos-rebuild时,它将使用错误的配置文件(/etc/nixos/configuration.nix而不是Nix存储中的副本,无论如何,它是只读的)。事情会很快变得不稳定。
当然,Nix商店也是世界可读的。
https://unix.stackexchange.com/questions/413710
复制相似问题