NixOS:在configuration.nix中设置默认通道

时间:2016-04-06 13:05:00

标签: nix nixos

如何在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中设置它,所以我不必记住每次都这样做。谢谢!

3 个答案:

答案 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.nixPathref)选项看起来会像你之后做的那样。

同样,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信道,但我认为第一个解决方案更清晰。