<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="chap-packageconfig"> <title>Global configuration</title> <para>Nix packages can be configured to allow or deny certain options.</para> <para>To apply the configuration edit <filename>~/.config/nixpkgs/config.nix</filename> and set it like <programlisting> { allowUnfree = true; } </programlisting> and will allow the Nix package manager to install unfree licensed packages.</para> <para>The configuration as listed also applies to NixOS under <option>nixpkgs.config</option> set.</para> <itemizedlist> <listitem> <para>Allow installing of packages that are distributed under unfree license by setting <programlisting>allowUnfree = true;</programlisting> or deny them by setting it to <literal>false</literal>.</para> <para>Same can be achieved by setting the environment variable: <programlisting> $ export NIXPKGS_ALLOW_UNFREE=1 </programlisting> </para> </listitem> <listitem> <para>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: <programlisting> allowUnfreePredicate = (pkg: ...); </programlisting> Example to allow flash player and visual studio code only: <programlisting> allowUnfreePredicate = with builtins; (pkg: elem (parseDrvName pkg.name).name [ "flashplayer" "vscode" ]); </programlisting> </para> </listitem> <listitem> <para>Whenever unfree packages are not allowed, packages can still be whitelisted by their license: <programlisting> whitelistedLicenses = with stdenv.lib.licenses; [ amd wtfpl ]; </programlisting> </para> </listitem> <listitem> <para>In addition to whitelisting licenses which are denied by the <literal>allowUnfree</literal> setting, you can also explicitely deny installation of packages which have a certain license: <programlisting> blacklistedLicenses = with stdenv.lib.licenses; [ agpl3 gpl3 ]; </programlisting> </para> </listitem> </itemizedlist> <para>A complete list of licenses can be found in the file <filename>lib/licenses.nix</filename> of the nix package tree.</para> <!--============================================================--> <section xml:id="sec-modify-via-packageOverrides"><title>Modify packages via <literal>packageOverrides</literal></title> <para>You can define a function called <varname>packageOverrides</varname> in your local <filename>~/.config/nixpkgs/config.nix</filename> to overide nix packages. It must be a function that takes pkgs as an argument and return modified set of packages. <programlisting> { packageOverrides = pkgs: rec { foo = pkgs.foo.override { ... }; }; } </programlisting> </para> </section> </chapter>