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;
}