可再生的nix-env -i仅含Nix,无NixOS

时间:2018-06-11 17:09:25

标签: nix

我只使用Nix作为包管理器,而不使用NixOS的所有内容。我想要一个可重现的nix-env -i软件包安装,可以共享和备份。

我知道config.nix使用NixOS,但我正在寻找仅使用Nix个套餐的类似功能。

1 个答案:

答案 0 :(得分:3)

从Nixpkgs可以使用buildEnv函数构建符号链接场,类似于nix-env生成它们的方式。

这使您可以将程序包分组到要单独更新的组中。当然,如果适合您的应用程序,单个组是完全有效的。

以下是greeting-tools.nix示例:

let
  pkgs = import <nixpkgs> {};
  inherit (pkgs) buildEnv;

in buildEnv {
  name = "greeting-tools";
  paths = [ pkgs.hello pkgs.cowsay pkgs.figlet ];
}

您可以安装并删除它,如下所示

$ nix-env -i -f greeting-tools.nix
installing 'greeting-tools'
$ hello
Hello, world!
$ nix-env -e greeting-tools
uninstalling 'greeting-tools'
$ hello
The program ‘hello’ is currently not installed. [...]

要更新软件包,必须重新运行安装命令。 nix-env -u将无法正常工作,因为它只会查看Nixpkgs,可能没有任何类似的名称。

另一种选择可能是home manager