2016-04-06 72 views
5

如何在NixOS的/etc/configuration.nix中设置默认频道?NixOS:在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设置,所以我没有记住如何做到这一点每次。谢谢!

回答

2

nix.nixPathref)选项看起来像它会做你以后的事情。

此外,nixos不稳定通道可能更适合您,而不是nixpkgs不稳定。我相信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 
nix.nixPath = pkgs.lib.mkBefore [ "nix/var/nix/profiles/per-user/root/channels/nixos-unstable" ]; 

如果你想在你的configuration.nix势在必行尼克斯道命令,以及你可以写一个小systemd服务这样做,如图所示here

PS我意识到你也可以通过执行nix-channel --add https://nixos.org/channels/nixos-unstable/ nixos指向nixos不稳定通道的nixos路径,但我认为第一种解决方案更清晰。

+0

感谢您的提示。它看起来像可以代替'nixos-rebuild'命令,但是我怎样才能将不稳定的通道本身添加到'configuration.nix'中呢? –

+0

向我的初始答案添加了必需的命令。 – brocking

3

nixPath = [ "nixpkgs=http://nixos.org/channels/nixos-unstable/nixexprs.tar.xz" ];,看到https://github.com/snabblab/snabblab-nixos/blob/master/modules/common.nix#L37

+1

我试过这个,但是如果我正确理解发生了什么,它似乎不能像使用'nix-channel'一样工作。首先,在运行'nixos-rebuild switch'时,它通过下载tar.xz文件来升级nixpkgs。其次,每次需要nixpkgs时,几乎都会(?)下载。如何使用'nix-channel'设置功能?也就是说,只有在明确询问时才升级nixpkgs。但是,通道可以在configuration.nix中设置。这有意义吗? –

2

system.autoUpgrade.channel是什么,你可能会如寻找

将其设置为任何通道

system.autoUpgrade.channel = "https://nixos.org/channels/nixos-16.03-small/";

的文件说:

默认情况下这是一个使用尼克斯沟道(运行 nix-channel --list以查看当前值)

一个的信道集最新的频道名单可在https://nixos.org/channels/

ref:https://nixos.org/nixos/manual/options.html#opt-system.autoUpgrade.channel https://nixos.org/nixos/manual/index.html#idm140737317454064

+0

感谢这看起来很有前途。不幸的是,我对NixOS的实验已经结束,所以我无法验证这一点。如果任何人都可以验证,那么我会选择这个作为答案。 –