然后我只使用 nix-env -riA nixos.mine 来部署我对环境描述所做的更改(或者在 Channels 更新后重建我的环境) . -r 告诉它从新一代我的 Profiles 中删除除 mine 以外的所有其他内容,这意味着我可以(ab?)使用 nix-env -i some-package 作为"temporarily"安装 some-package 的方式,如果我不知道't decide I like it enough to actually record it in my config.nix it' ll下次我也会被删除部署 .
1
您当然可以创建自己的配置 . 例如,您可以执行以下操作:
let
pkgs = import <nixpkgs> {};
in
{
packages = [
pkgs.vim
pkgs.gimp
];
}
2 回答
我使用NixOS,但我使用
/etc/nixos/configuration.nix
来描述我的系统;我保持相当小,并且不想通过编辑configuration.nix来安装"user"软件 .所以我做的是使用我的
~/.nixpkgs/config.nix
(我相信即使在非NixOS nix安装中你也有相同的东西?我从来没有单独使用过nix) .我使用的基本结构是这样的:
buildEnv
是一个来自nix的便利函数,它使一个"environment"包从其他一些包中出来;安装包mine
取决于(以及安装)paths
中列出的所有内容,并确保它们包含在PATH
之类的东西中 .然后我只使用
nix-env -riA nixos.mine
来部署我对环境描述所做的更改(或者在 Channels 更新后重建我的环境) .-r
告诉它从新一代我的 Profiles 中删除除mine
以外的所有其他内容,这意味着我可以(ab?)使用nix-env -i some-package
作为"temporarily"安装some-package
的方式,如果我不知道't decide I like it enough to actually record it in my config.nix it' ll下次我也会被删除部署 .您当然可以创建自己的配置 . 例如,您可以执行以下操作:
这将产生一个包含名为
packages
的属性的集合,其中包含一个Nix包列表 . 但是,您需要开发一个工具来构建环境,这是nix-env
的一部分 . 例如,该工具可以使用nix-env
来确定已安装的内容,将其与配置中的选定软件包进行比较,然后相应地安装/卸载软件包 .你没有
/etc/nixos/configuration.nix
,因为's NixOS-specific. So while you can do as you asked, you' d必须推出你自己的解决方案 .