Global configurationNix packages can be configured to allow or deny certain options.To apply the configuration edit
~/.config/nixpkgs/config.nix and set it like
{
allowUnfree = true;
}
and will allow the Nix package manager to install unfree licensed packages.The configuration as listed also applies to NixOS under
set.Allow installing of packages that are distributed under
unfree license by setting allowUnfree =
true; or deny them by setting it to
false.Same can be achieved by setting the environment variable:
$ export NIXPKGS_ALLOW_UNFREE=1
Whenever unfree packages are not allowed, single packages
can still be allowed by a predicate function that accepts package
as an argument and should return a boolean:
allowUnfreePredicate = (pkg: ...);
Example to allow flash player and visual studio code only:
allowUnfreePredicate = with builtins; (pkg: elem (parseDrvName pkg.name).name [ "flashplayer" "vscode" ]);
Whenever unfree packages are not allowed, packages can still
be whitelisted by their license:
whitelistedLicenses = with stdenv.lib.licenses; [ amd wtfpl ];
In addition to whitelisting licenses which are denied by the
allowUnfree setting, you can also explicitely
deny installation of packages which have a certain license:
blacklistedLicenses = with stdenv.lib.licenses; [ agpl3 gpl3 ];
A complete list of licenses can be found in the file
lib/licenses.nix of the nix package tree.Modify
packages via packageOverridesYou can define a function called
packageOverrides in your local
~/.config/nixpkgs/config.nix to overide nix packages. It
must be a function that takes pkgs as an argument and return modified
set of packages.
{
packageOverrides = pkgs: rec {
foo = pkgs.foo.override { ... };
};
}