summary refs log tree commit diff
path: root/doc/packageconfig.xml
blob: 4e0fcc3b6a49e9f84442390e03422c4d110f0091 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<chapter xmlns="http://docbook.org/ns/docbook"
	 xmlns:xlink="http://www.w3.org/1999/xlink"
	 xml:id="chap-packageconfig">

<title><filename>~/.nixpkgs/config.nix</filename>: global configuration</title>

    <para>
      Nix packages can be configured to allow or deny certain options.
    </para>

    <para>
	To apply the configuration edit <filename>~/.nixpkgs/config.nix</filename>
	and set it like
<programlisting>{
  allowUnfree = true;
}</programlisting>
	and will allow the Nix package manager to install unfree licensed packages.

	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 only:
		<programlisting>allowUnfreePredicate = (pkg: pkgs.lib.hasPrefix "flashplayer-" pkg.name);</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>~/.nixpkgs/config</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>