about summary refs log tree commit diff
path: root/nixos/doc/manual/configuration/declarative-packages.xml
blob: bf743024454579f89a3d756a038749c761ddc880 (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
<section xmlns="http://docbook.org/ns/docbook"
         xmlns:xlink="http://www.w3.org/1999/xlink"
         xmlns:xi="http://www.w3.org/2001/XInclude"
         version="5.0"
         xml:id="sec-declarative-package-mgmt">
 <title>Declarative Package Management</title>

 <para>
  With declarative package management, you specify which packages you want on
  your system by setting the option
  <xref linkend="opt-environment.systemPackages"/>. For instance, adding the
  following line to <filename>configuration.nix</filename> enables the Mozilla
  Thunderbird email application:
<programlisting>
<xref linkend="opt-environment.systemPackages"/> = [ pkgs.thunderbird ];
</programlisting>
  The <literal>pkgs</literal> variable is used to reference packages in your
  root channel. The effect of this specification is that the Thunderbird
  package from your root Nixpkgs channel will be built or downloaded as part of
  the system when you run <command>nixos-rebuild switch</command>.
 </para>

 <para>
  You can get a list of the available packages as follows:
<screen>
$ nix-env -qaP '*' --description
nixos.firefox   firefox-23.0   Mozilla Firefox - the browser, reloaded
<replaceable>...</replaceable>
</screen>
  The first column in the output is the <emphasis>attribute name</emphasis>,
  such as <literal>nixos.thunderbird</literal>. The <literal>nixos</literal>
  prefix tells us that we want to get the package from the `nixos` channel.
  Some systems have other channels installed, such as `nixpkgs` or custom
  channels for development purposes.
 </para>

 <para>
  To “uninstall” a package, simply remove it from
  <xref linkend="opt-environment.systemPackages"/> and run
  <command>nixos-rebuild switch</command>.
 </para>

 <xi:include href="customizing-packages.xml" />

 <xi:include href="adding-custom-packages.xml" />
</section>