NixOS:在 configuration.nix 中设置默认频道
NixOS: Setting the default channel in configuration.nix
如何在 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 中设置它,这样我就不必每次都记住如何设置。谢谢!
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 将使用 [=32= 中包含的表达式] 每当它评估 configuration.nix
时。
PS 我意识到您也可以通过 nix-channel --add https://nixos.org/channels/nixos-unstable/ nixos
将 nixos 路径指向 nixos-unstable 通道,但我认为第一个解决方案更清晰。
设置nixPath = [ "nixpkgs=http://nixos.org/channels/nixos-unstable/nixexprs.tar.xz" ];
,见https://github.com/snabblab/snabblab-nixos/blob/d8b9761b107293891b19021f2f0f77a0e3ba3746/modules/common.nix#L39
system.autoUpgrade.channel
可能是您正在寻找的东西
将其设置为任何频道,例如
system.autoUpgrade.channel = "https://nixos.org/channels/nixos-16.03-small/";
文档说:
by default, this is the channel set using nix-channel (run
nix-channel --list
to see the current value)
可以在 https://nixos.org/channels/
上找到最新的频道列表
参考:https://nixos.org/nixos/manual/options.html#opt-system.autoUpgrade.channel
https://nixos.org/nixos/manual/index.html#idm140737317454064
如何在 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 中设置它,这样我就不必每次都记住如何设置。谢谢!
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 将使用 [=32= 中包含的表达式] 每当它评估 configuration.nix
时。
PS 我意识到您也可以通过 nix-channel --add https://nixos.org/channels/nixos-unstable/ nixos
将 nixos 路径指向 nixos-unstable 通道,但我认为第一个解决方案更清晰。
设置nixPath = [ "nixpkgs=http://nixos.org/channels/nixos-unstable/nixexprs.tar.xz" ];
,见https://github.com/snabblab/snabblab-nixos/blob/d8b9761b107293891b19021f2f0f77a0e3ba3746/modules/common.nix#L39
system.autoUpgrade.channel
可能是您正在寻找的东西
将其设置为任何频道,例如
system.autoUpgrade.channel = "https://nixos.org/channels/nixos-16.03-small/";
文档说:
by default, this is the channel set using nix-channel (run
nix-channel --list
to see the current value)
可以在 https://nixos.org/channels/
上找到最新的频道列表参考:https://nixos.org/nixos/manual/options.html#opt-system.autoUpgrade.channel https://nixos.org/nixos/manual/index.html#idm140737317454064