Search code examples
nixnixos

NixOS: Install unfree package using different channel


I am using the default nixos 17.09 channel and want to install an unfree package from the unstable channel.

I am using (import <nixos-unstable> {}).vscode to install vscode in this case, but I am getting the error that I must set ...allowUnfree = true; It seems that the setting only applies to the default channel. How can I set allowFree = true; also on the unstable channel?


Solution

  • I found a solution (https://github.com/NixOS/nixpkgs/issues/25880#issuecomment-322855573).

    It creates an alias for the unstable channel with the same config.

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

    Then you can use it like unstable.vscode instead of (import <nixos-unstable> {}).vscode.