我知道我可以从不稳定的渠道安装一个软件包,如下所示:
{ config, pkgs, ... }:
let
unstable-pkgs = import <unstable> {};
in
{
environment.systemPackages = [ unstable-pkgs.chromium ]
}
这表明 '在我的配置中import <unstable> {};
代表 ' pkgs
,但是如果我想对programs
' or '做同样的事情怎么办services
?
答案1
我假设您希望对大部分系统使用稳定通道,但从不稳定通道获取一些特定的程序或服务。您可以通过从 stable 导入您需要的特定模块来完成此操作。
但是,如果该模块也存在于稳定的通道,那么两个模块就会发生冲突。您可以使用disabledModules
它来抑制稳定通道中的现有模块。
例如,这是我plymouth
从不稳定通道加载模块的方法:
{ nixpkgs-unstable, ... }:
{
imports = [
"${nixpkgs-unstable}/nixos/modules/system/boot/plymouth.nix"
];
disabledModules = [
"system/boot/plymouth.nix"
];
}
这是在使用 Flakes 的系统上,其中nixpkgs-unstable
被定义为 Flake 输入和该输入作为调用构建系统配置specialArgs
时的一部分传递。nixosSystem
但是,imports
和disabledModules
不是 Flakes 特定的,因此只要您可以提供从不稳定通道到模块的路径,您就应该能够在非 Flakes 系统上执行相同的操作。