14

How do I set the default channel in NixOS's /etc/configuration.nix?

There is a command to set it and rebuild with

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

but I'd like to have it setup in configuration.nix so I don't have to remember how to do this everytime. Thanks!

4

3 回答 3

7

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

于 2016-05-14T20:29:16.017 回答
6

设置nixPath = [ "nixpkgs=http://nixos.org/channels/nixos-unstable/nixexprs.tar.xz" ];,见https://github.com/snabblab/snabblab-nixos/blob/d8b9761b107293891b19021f2f0f77a0e3ba3746/modules/common.nix#L39

于 2016-04-07T10:06:48.807 回答
3

( refnix.nixPath )选项看起来会做你所追求的。

此外,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 服务来执行此操作,如下所示 编辑:为了确保configuration.nix是从最新unstable频道构建的,只需将值设置nixpkgs为@iElectric 的答案,Nix 将在计算时使用该 URL 中包含的表达式configuration.nix

PS我意识到你也可以通过这样做将nixos路径指向nixos-unstable频道,nix-channel --add https://nixos.org/channels/nixos-unstable/ nixos但我认为第一个解决方案更清晰。

于 2016-04-06T20:09:41.107 回答