如何在NixOS的/etc/configuration.nix
?
有一个命令可以设置它并使用
重建sudo nix-channel --add https://nixos.org/channels/nixpkgs-unstable
sudo nixos-rebuild switch -I nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixpkgs
但是我想在configuration.nix中设置它,所以我不必记住每次都这样做。谢谢!
答案 0 :(得分:6)
system.autoUpgrade.channel
将其设置为任何频道,例如
system.autoUpgrade.channel = "https://nixos.org/channels/nixos-16.03-small/";
文件说:
默认情况下,这是使用 nix-channel 设置的频道(运行
nix-channel --list
查看当前值)
可以在https://nixos.org/channels/
上找到最新的频道列表参考:https://nixos.org/nixos/manual/options.html#opt-system.autoUpgrade.channel https://nixos.org/nixos/manual/index.html#idm140737317454064
答案 1 :(得分:5)
设置nixPath = [ "nixpkgs=http://nixos.org/channels/nixos-unstable/nixexprs.tar.xz" ];
,请参阅https://github.com/snabblab/snabblab-nixos/blob/master/modules/common.nix#L37
答案 2 :(得分:3)
nix.nixPath
(ref)选项看起来会像你之后做的那样。
同样,nixos-unstable频道可能更适合你,而不是nixpkgs-unstable。我相信nixpkgs通道中的pkgs是针对非nixOS系统进行测试和构建的,但我现在还记不起这方面的参考。
nix-channel --add https://nixos.org/channels/nixos-unstable/
nix-channel --update nixos-unstable
# /etc/nixos/configuration.nix
# Put nixos-unstable at the front of nixPath
{ lib, ... }:
{
nix.nixPath = lib.mkDefault (lib.mkBefore [ "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos-unstable" ]);
}
如果你想在configuration.nix中使用命令式nix-channel命令,你可以编写一个小的systemd服务来执行此操作,如here所示。
编辑:为了确保configuration.nix
是根据最新的unstable
频道构建的,只需设置nixpkgs
的值,如@iElectric的答案,Nix将在评估时使用该网址中包含的表达式configuration.nix
。
PS我意识到你也可以通过nix-channel --add https://nixos.org/channels/nixos-unstable/ nixos
将nixos路径指向nixos-unstable信道,但我认为第一个解决方案更清晰。