1<section xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-release-14.04">
2 <title>Release 14.04 (<quote>Baboon</quote>, 2014/04/30)</title>
3 <para>
4 This is the second stable release branch of NixOS. In addition to
5 numerous new and upgraded packages and modules, this release has the
6 following highlights:
7 </para>
8 <itemizedlist>
9 <listitem>
10 <para>
11 Installation on UEFI systems is now supported. See
12 <xref linkend="sec-installation" /> for details.
13 </para>
14 </listitem>
15 <listitem>
16 <para>
17 Systemd has been updated to version 212, which has
18 <link xlink:href="http://cgit.freedesktop.org/systemd/systemd/plain/NEWS?id=v212">numerous
19 improvements</link>. NixOS now automatically starts systemd user
20 instances when you log in. You can define global user units
21 through the <literal>systemd.unit.*</literal> options.
22 </para>
23 </listitem>
24 <listitem>
25 <para>
26 NixOS is now based on Glibc 2.19 and GCC 4.8.
27 </para>
28 </listitem>
29 <listitem>
30 <para>
31 The default Linux kernel has been updated to 3.12.
32 </para>
33 </listitem>
34 <listitem>
35 <para>
36 KDE has been updated to 4.12.
37 </para>
38 </listitem>
39 <listitem>
40 <para>
41 GNOME 3.10 experimental support has been added.
42 </para>
43 </listitem>
44 <listitem>
45 <para>
46 Nix has been updated to 1.7
47 (<link xlink:href="https://nixos.org/nix/manual/#ssec-relnotes-1.7">details</link>).
48 </para>
49 </listitem>
50 <listitem>
51 <para>
52 NixOS now supports fully declarative management of users and
53 groups. If you set <literal>users.mutableUsers</literal> to
54 <literal>false</literal>, then the contents of
55 <literal>/etc/passwd</literal> and <literal>/etc/group</literal>
56 will be
57 <link xlink:href="https://www.usenix.org/legacy/event/lisa02/tech/full_papers/traugott/traugott_html/">congruent</link>
58 to your NixOS configuration. For instance, if you remove a user
59 from <literal>users.extraUsers</literal> and run
60 <literal>nixos-rebuild</literal>, the user account will cease to
61 exist. Also, imperative commands for managing users and groups,
62 such as <literal>useradd</literal>, are no longer available. If
63 <literal>users.mutableUsers</literal> is <literal>true</literal>
64 (the default), then behaviour is unchanged from NixOS 13.10.
65 </para>
66 </listitem>
67 <listitem>
68 <para>
69 NixOS now has basic container support, meaning you can easily
70 run a NixOS instance as a container in a NixOS host system.
71 These containers are suitable for testing and experimentation
72 but not production use, since they’re not fully isolated from
73 the host. See <xref linkend="ch-containers" /> for details.
74 </para>
75 </listitem>
76 <listitem>
77 <para>
78 Systemd units provided by packages can now be overridden from
79 the NixOS configuration. For instance, if a package
80 <literal>foo</literal> provides systemd units, you can say:
81 </para>
82 <programlisting language="bash">
83{
84 systemd.packages = [ pkgs.foo ];
85}
86</programlisting>
87 <para>
88 to enable those units. You can then set or override unit options
89 in the usual way, e.g.
90 </para>
91 <programlisting language="bash">
92{
93 systemd.services.foo.wantedBy = [ "multi-user.target" ];
94 systemd.services.foo.serviceConfig.MemoryLimit = "512M";
95}
96</programlisting>
97 <para>
98 When upgrading from a previous release, please be aware of the
99 following incompatible changes:
100 </para>
101 </listitem>
102 <listitem>
103 <para>
104 Nixpkgs no longer exposes unfree packages by default. If your
105 NixOS configuration requires unfree packages from Nixpkgs, you
106 need to enable support for them explicitly by setting:
107 </para>
108 <programlisting language="bash">
109{
110 nixpkgs.config.allowUnfree = true;
111}
112</programlisting>
113 <para>
114 Otherwise, you get an error message such as:
115 </para>
116 <programlisting>
117 error: package ‘nvidia-x11-331.49-3.12.17’ in ‘…/nvidia-x11/default.nix:56’
118 has an unfree license, refusing to evaluate
119</programlisting>
120 </listitem>
121 <listitem>
122 <para>
123 The Adobe Flash player is no longer enabled by default in the
124 Firefox and Chromium wrappers. To enable it, you must set:
125 </para>
126 <programlisting language="bash">
127{
128 nixpkgs.config.allowUnfree = true;
129 nixpkgs.config.firefox.enableAdobeFlash = true; # for Firefox
130 nixpkgs.config.chromium.enableAdobeFlash = true; # for Chromium
131}
132</programlisting>
133 </listitem>
134 <listitem>
135 <para>
136 The firewall is now enabled by default. If you don’t want this,
137 you need to disable it explicitly:
138 </para>
139 <programlisting language="bash">
140{
141 networking.firewall.enable = false;
142}
143</programlisting>
144 </listitem>
145 <listitem>
146 <para>
147 The option <literal>boot.loader.grub.memtest86</literal> has
148 been renamed to
149 <literal>boot.loader.grub.memtest86.enable</literal>.
150 </para>
151 </listitem>
152 <listitem>
153 <para>
154 The <literal>mysql55</literal> service has been merged into the
155 <literal>mysql</literal> service, which no longer sets a default
156 for the option <literal>services.mysql.package</literal>.
157 </para>
158 </listitem>
159 <listitem>
160 <para>
161 Package variants are now differentiated by suffixing the name,
162 rather than the version. For instance,
163 <literal>sqlite-3.8.4.3-interactive</literal> is now called
164 <literal>sqlite-interactive-3.8.4.3</literal>. This ensures that
165 <literal>nix-env -i sqlite</literal> is unambiguous, and that
166 <literal>nix-env -u</literal> won’t <quote>upgrade</quote>
167 <literal>sqlite</literal> to
168 <literal>sqlite-interactive</literal> or vice versa. Notably,
169 this change affects the Firefox wrapper (which provides
170 plugins), as it is now called
171 <literal>firefox-wrapper</literal>. So when using
172 <literal>nix-env</literal>, you should do
173 <literal>nix-env -e firefox; nix-env -i firefox-wrapper</literal>
174 if you want to keep using the wrapper. This change does not
175 affect declarative package management, since attribute names
176 like <literal>pkgs.firefoxWrapper</literal> were already
177 unambiguous.
178 </para>
179 </listitem>
180 <listitem>
181 <para>
182 The symlink <literal>/etc/ca-bundle.crt</literal> is gone.
183 Programs should instead use the environment variable
184 <literal>OPENSSL_X509_CERT_FILE</literal> (which points to
185 <literal>/etc/ssl/certs/ca-bundle.crt</literal>).
186 </para>
187 </listitem>
188 </itemizedlist>
189</section>