NixOS:使用不同的渠道安装 unfree 包
NixOS: Install unfree package using different channel
我正在使用默认的 nixos 17.09 频道,想从不稳定的频道安装一个 unfree
包。
在这种情况下,我正在使用 (import <nixos-unstable> {}).vscode
安装 vscode,但出现必须设置 ...allowUnfree = true;
的错误
似乎该设置仅适用于默认频道。
如何在不稳定的频道上也设置 allowFree = true;
?
我找到了解决方案 (https://github.com/NixOS/nixpkgs/issues/25880#issuecomment-322855573)。
它为具有相同配置的不稳定频道创建别名。
nixpkgs.config =
{
# Allow proprietary packages
allowUnfree = true;
# Create an alias for the unstable channel
packageOverrides = pkgs:
{
unstable = import <nixos-unstable>
{
# pass the nixpkgs config to the unstable alias
# to ensure `allowUnfree = true;` is propagated:
config = config.nixpkgs.config;
};
};
};
然后你可以像unstable.vscode
那样使用它而不是(import <nixos-unstable> {}).vscode
。
另一个例子:
{ config, pkgs, ... }:
let
unstable = import <unstable> {
config = config.nixpkgs.config;
};
in
{
environment.systemPackages = with pkgs; [
# google-chrome
unstable.google-chrome
];
nixpkgs.config.allowUnfree = true;
}
我正在使用默认的 nixos 17.09 频道,想从不稳定的频道安装一个 unfree
包。
在这种情况下,我正在使用 (import <nixos-unstable> {}).vscode
安装 vscode,但出现必须设置 ...allowUnfree = true;
的错误
似乎该设置仅适用于默认频道。
如何在不稳定的频道上也设置 allowFree = true;
?
我找到了解决方案 (https://github.com/NixOS/nixpkgs/issues/25880#issuecomment-322855573)。
它为具有相同配置的不稳定频道创建别名。
nixpkgs.config =
{
# Allow proprietary packages
allowUnfree = true;
# Create an alias for the unstable channel
packageOverrides = pkgs:
{
unstable = import <nixos-unstable>
{
# pass the nixpkgs config to the unstable alias
# to ensure `allowUnfree = true;` is propagated:
config = config.nixpkgs.config;
};
};
};
然后你可以像unstable.vscode
那样使用它而不是(import <nixos-unstable> {}).vscode
。
另一个例子:
{ config, pkgs, ... }:
let
unstable = import <unstable> {
config = config.nixpkgs.config;
};
in
{
environment.systemPackages = with pkgs; [
# google-chrome
unstable.google-chrome
];
nixpkgs.config.allowUnfree = true;
}