|
|
(2 intermediate revisions by one other user not shown) |
Line 1: |
Line 1: |
| Unfree software refers to software that has restrictive licensing on modification and/or redistribution. These types of software cannot be freely provided or distributed in an official capacity, which means that they are neither built by [[Hydra]], nor as they cached on the official [[Binary Cache|binary cache]]. Despite this, Nixpkgs offers a very large collection of unfree software as derivations, however they cannot be accessed by default unless you opt-in. | | Unfree software refers to software that has restrictive licensing on modification and/or redistribution. This type of software cannot be freely provided or distributed in an official capacity, which means that unfree software is neither built by [[Hydra]], nor cached on the official [[Binary Cache|binary cache]]. Despite this, Nixpkgs offers a very large collection of unfree software as derivations, however they cannot be used by default without configuring Nixpkgs and opting in to unfree software usage. |
|
| |
|
| == Configuring ==
| | [https://nixos.org/manual/nixpkgs/stable/#sec-allow-unfree Nixpkgs manual on allowing unfree packages] |
| | |
| === For NixOS ===
| |
| [[NixOS]] offers a module that can configure Nixpkgs, which will retroactively change the pkgs across your configuration to use the new settings, including allowing for unfree packages.<syntaxhighlight lang="nixos">
| |
| { config, lib, pkgs, ... }: {
| |
| nixpkgs.config.allowUnfree = true; # Allows all packages that are marked unfree to be built.
| |
| | |
| environment.systemPackages = with pkgs; [
| |
| steam # No error!
| |
| ];
| |
| }
| |
| </syntaxhighlight>You may instead configure this on a per-package basis via <code>allowUnfreePredicate</code>.
| |
| {{Note|Please note that this function has awkward semantics and occasionally doesn't work as expected. Issues like this should be raised directly in [https://github.com/NixOS/nixpkgs/issues Nixpkgs].}}<syntaxhighlight lang="nixos">
| |
| { config, lib, pkgs, ... }: {
| |
| # Add packages by their "derivation name" here.
| |
| # Find the derivation name from https://search.nixos.org/
| |
| nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
| |
| "steam"
| |
| ];
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| === For Nix CLI ===
| |
| As you may have noticed, the above configuration does not apply globally to your NixOS system (and is not applicable for non-NixOS users). Instead, you can configure Nixpkgs at a user level by writing your configuration in <code>~/.config/nixpkgs/config.nix</code>.
| |
| {{Note|This file is ignored using nix3 commands, which internally leverage flakes and/or the flake registry. See Tips and Tricks for an alternative.}}{{file|~/.config/nixpkgs/config.nix|nix|3={
| |
| allowUnfree = true;
| |
| <nowiki>}</nowiki>}}You can alternatively set the environment variable <code>NIXPKGS_ALLOW_UNFREE=1</code>, which is automatically picked up by the Nix CLI. For newer nix3 commands, you will need to additionally pass <code>--impure</code>, otherwise the environment variable is ignored.<syntaxhighlight lang="bash">
| |
| $ export NIXPKGS_ALLOW_UNFREE=1
| |
| $ nix-shell -p vscode --command 'code' # nix-legacy
| |
| $ nix run --impure nixpkgs#vscode # nix3
| |
| </syntaxhighlight>
| |
| | |
| == See also ==
| |
| | |
| * [https://nixos.org/nixpkgs/manual/#sec-allow-unfree Nixpkgs manual on allowing unfree packages]
| |
|
| |
|
| [[Category:Software]] | | [[Category:Software]] |
| [[Category:Nixpkgs]] | | [[Category:Nixpkgs]] |