我正在使用具有多个通道和本地覆盖的 nix-env 在多台计算机上的 macOS 和 Nixos Linux 上安装软件包。有时我会因为问题而从更新中排除软件包。所有这些都导致需要大量手动工作来维护我的用户环境。我想使用 nix-copy-closure 将尽可能多的内容从一台计算机复制到另一台计算机。我知道可以使用 nix-copy-closure 复制整个配置文件,但我该如何安装它呢?如果这不起作用,是否可以复制所有已安装的软件包,然后逐个安装它们。
我知道以下相关问题:https://stackoverflow.com/questions/28159181/how-to-copy-a-nix-profile但它的解决方案并不令我满意,因此我提出了这个问题。
答案1
创建一个“metapackge”,如下所示的文件mypkgs.nix
:
{ pkgs ? import <nixpkgs> {}, ... } :
pkgs.buildEnv {
name = "mypkgs";
paths = with pkgs; [ bat cowsay ];
}
nix-build mypkgs.nix
将构建包并打印其路径,您可以将其与nix-copy-closure
和一起使用nix-env -i
。
您不需要复制mypkgs.nix
到远程主机,因为您可以直接安装存储路径。