Unfree software: Difference between revisions
m Category:Nixpkgs added Tags: Mobile edit Mobile web edit |
rewrite this page with better formatting |
||
| 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. | |||
== | == Configuring == | ||
{{ | === 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) [ | 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>. | |||
=== For | {{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={ | ||
{ | |||
{{file|~/.config/nixpkgs/config.nix|nix| | |||
{ | |||
allowUnfree = true; | 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"> | ||
</nowiki>}} | $ export NIXPKGS_ALLOW_UNFREE=1 | ||
$ nix-shell -p vscode --command 'code' # nix-legacy | |||
= | $ nix run --impure nixpkgs#vscode # nix3 | ||
For | |||
<syntaxhighlight lang="bash"> | |||
$ NIXPKGS_ALLOW_UNFREE=1 nix-shell -p vscode | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== See also == | == See also == | ||