我只使用Nix
作为包管理器,而不使用NixOS
的所有内容。我想要一个可重现的nix-env -i
软件包安装,可以共享和备份。
我知道config.nix
使用NixOS
,但我正在寻找仅使用Nix
个套餐的类似功能。
答案 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。