2014-08-24 18:18:18 +01:00
<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">
2018-05-02 00:57:09 +01:00
<title > Declarative Package Management</title>
<para >
2019-09-19 18:17:30 +01:00
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:
2014-08-24 18:18:18 +01:00
<programlisting >
2018-04-05 09:43:56 +01:00
<xref linkend= "opt-environment.systemPackages" /> = [ pkgs.thunderbird ];
2014-08-24 18:18:18 +01:00
</programlisting>
2019-09-19 18:17:30 +01:00
The effect of this specification is that the Thunderbird package from Nixpkgs
will be built or downloaded as part of the system when you run
<command > nixos-rebuild switch</command> .
2018-05-02 00:57:09 +01:00
</para>
2014-08-24 18:18:18 +01:00
2020-01-18 01:17:36 +00:00
<note >
<para >
Some packages require additional global configuration such as D-Bus or systemd service registration so adding them to <xref linkend= "opt-environment.systemPackages" /> might not be sufficient. You are advised to check the <link xlink:href= "#ch-options" > list of options</link> whether a NixOS module for the package does not exist.
</para>
</note>
2018-05-02 00:57:09 +01:00
<para >
You can get a list of the available packages as follows:
2014-08-24 18:18:18 +01:00
<screen >
2019-06-17 12:25:50 +01:00
<prompt > $ </prompt> nix-env -qaP '*' --description
2015-08-05 16:29:08 +01:00
nixos.firefox firefox-23.0 Mozilla Firefox - the browser, reloaded
2014-08-24 18:18:18 +01:00
<replaceable > ...</replaceable>
</screen>
2019-09-19 18:17:30 +01:00
The first column in the output is the <emphasis > attribute name</emphasis> ,
such as <literal > nixos.thunderbird</literal> .
2019-03-15 02:08:38 +00:00
</para>
2019-09-18 21:13:35 +01:00
<para >
2019-09-19 18:17:30 +01:00
Note: the <literal > nixos</literal> prefix tells us that we want to get the
package from the <literal > nixos</literal> channel and works only in CLI tools.
In declarative configuration use <literal > pkgs</literal> prefix (variable).
2018-05-02 00:57:09 +01:00
</para>
2014-08-24 18:18:18 +01:00
2018-05-02 00:57:09 +01:00
<para >
2019-09-19 18:17:30 +01:00
To “uninstall” a package, simply remove it from
<xref linkend= "opt-environment.systemPackages" /> and run
<command > nixos-rebuild switch</command> .
2018-05-02 00:57:09 +01:00
</para>
2014-08-24 18:18:18 +01:00
2018-05-02 00:57:09 +01:00
<xi:include href= "customizing-packages.xml" />
2014-08-24 18:18:18 +01:00
2018-05-02 00:57:09 +01:00
<xi:include href= "adding-custom-packages.xml" />
2014-08-24 18:18:18 +01:00
</section>