1<section xmlns="http://docbook.org/ns/docbook"
2 xmlns:xlink="http://www.w3.org/1999/xlink"
3 xmlns:xi="http://www.w3.org/2001/XInclude"
4 version="5.0"
5 xml:id="sec-release-15.09">
6 <title>Release 15.09 (“Dingo”, 2015/09/30)</title>
7
8 <para>
9 In addition to numerous new and upgraded packages, this release has the
10 following highlights:
11 </para>
12
13 <itemizedlist>
14 <listitem>
15 <para>
16 The <link xlink:href="http://haskell.org/">Haskell</link> packages
17 infrastructure has been re-designed from the ground up ("Haskell
18 NG"). NixOS now distributes the latest version of every single package
19 registered on
20 <link
21 xlink:href="http://hackage.haskell.org/">Hackage</link> -- well
22 in excess of 8,000 Haskell packages. Detailed instructions on how to use
23 that infrastructure can be found in the
24 <link
25 xlink:href="http://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure">User's
26 Guide to the Haskell Infrastructure</link>. Users migrating from an earlier
27 release may find helpful information below, in the list of
28 backwards-incompatible changes. Furthermore, we distribute 51(!) additional
29 Haskell package sets that provide every single
30 <link
31 xlink:href="http://www.stackage.org/">LTS Haskell</link> release
32 since version 0.0 as well as the most recent
33 <link
34 xlink:href="http://www.stackage.org/">Stackage Nightly</link>
35 snapshot. The announcement
36 <link
37 xlink:href="https://nixos.org/nix-dev/2015-September/018138.html">"Full
38 Stackage Support in Nixpkgs"</link> gives additional details.
39 </para>
40 </listitem>
41 <listitem>
42 <para>
43 Nix has been updated to version 1.10, which among other improvements
44 enables cryptographic signatures on binary caches for improved security.
45 </para>
46 </listitem>
47 <listitem>
48 <para>
49 You can now keep your NixOS system up to date automatically by setting
50<programlisting>
51system.autoUpgrade.enable = true;
52</programlisting>
53 This will cause the system to periodically check for updates in your
54 current channel and run <command>nixos-rebuild</command>.
55 </para>
56 </listitem>
57 <listitem>
58 <para>
59 This release is based on Glibc 2.21, GCC 4.9 and Linux 3.18.
60 </para>
61 </listitem>
62 <listitem>
63 <para>
64 GNOME has been upgraded to 3.16.
65 </para>
66 </listitem>
67 <listitem>
68 <para>
69 Xfce has been upgraded to 4.12.
70 </para>
71 </listitem>
72 <listitem>
73 <para>
74 KDE 5 has been upgraded to KDE Frameworks 5.10, Plasma 5.3.2 and
75 Applications 15.04.3. KDE 4 has been updated to kdelibs-4.14.10.
76 </para>
77 </listitem>
78 <listitem>
79 <para>
80 E19 has been upgraded to 0.16.8.15.
81 </para>
82 </listitem>
83 </itemizedlist>
84
85 <para>
86 The following new services were added since the last release:
87 <itemizedlist>
88 <listitem>
89 <para>
90 <literal>services/mail/exim.nix</literal>
91 </para>
92 </listitem>
93 <listitem>
94 <para>
95 <literal>services/misc/apache-kafka.nix</literal>
96 </para>
97 </listitem>
98 <listitem>
99 <para>
100 <literal>services/misc/canto-daemon.nix</literal>
101 </para>
102 </listitem>
103 <listitem>
104 <para>
105 <literal>services/misc/confd.nix</literal>
106 </para>
107 </listitem>
108 <listitem>
109 <para>
110 <literal>services/misc/devmon.nix</literal>
111 </para>
112 </listitem>
113 <listitem>
114 <para>
115 <literal>services/misc/gitit.nix</literal>
116 </para>
117 </listitem>
118 <listitem>
119 <para>
120 <literal>services/misc/ihaskell.nix</literal>
121 </para>
122 </listitem>
123 <listitem>
124 <para>
125 <literal>services/misc/mbpfan.nix</literal>
126 </para>
127 </listitem>
128 <listitem>
129 <para>
130 <literal>services/misc/mediatomb.nix</literal>
131 </para>
132 </listitem>
133 <listitem>
134 <para>
135 <literal>services/misc/mwlib.nix</literal>
136 </para>
137 </listitem>
138 <listitem>
139 <para>
140 <literal>services/misc/parsoid.nix</literal>
141 </para>
142 </listitem>
143 <listitem>
144 <para>
145 <literal>services/misc/plex.nix</literal>
146 </para>
147 </listitem>
148 <listitem>
149 <para>
150 <literal>services/misc/ripple-rest.nix</literal>
151 </para>
152 </listitem>
153 <listitem>
154 <para>
155 <literal>services/misc/ripple-data-api.nix</literal>
156 </para>
157 </listitem>
158 <listitem>
159 <para>
160 <literal>services/misc/subsonic.nix</literal>
161 </para>
162 </listitem>
163 <listitem>
164 <para>
165 <literal>services/misc/sundtek.nix</literal>
166 </para>
167 </listitem>
168 <listitem>
169 <para>
170 <literal>services/monitoring/cadvisor.nix</literal>
171 </para>
172 </listitem>
173 <listitem>
174 <para>
175 <literal>services/monitoring/das_watchdog.nix</literal>
176 </para>
177 </listitem>
178 <listitem>
179 <para>
180 <literal>services/monitoring/grafana.nix</literal>
181 </para>
182 </listitem>
183 <listitem>
184 <para>
185 <literal>services/monitoring/riemann-tools.nix</literal>
186 </para>
187 </listitem>
188 <listitem>
189 <para>
190 <literal>services/monitoring/teamviewer.nix</literal>
191 </para>
192 </listitem>
193 <listitem>
194 <para>
195 <literal>services/network-filesystems/u9fs.nix</literal>
196 </para>
197 </listitem>
198 <listitem>
199 <para>
200 <literal>services/networking/aiccu.nix</literal>
201 </para>
202 </listitem>
203 <listitem>
204 <para>
205 <literal>services/networking/asterisk.nix</literal>
206 </para>
207 </listitem>
208 <listitem>
209 <para>
210 <literal>services/networking/bird.nix</literal>
211 </para>
212 </listitem>
213 <listitem>
214 <para>
215 <literal>services/networking/charybdis.nix</literal>
216 </para>
217 </listitem>
218 <listitem>
219 <para>
220 <literal>services/networking/docker-registry-server.nix</literal>
221 </para>
222 </listitem>
223 <listitem>
224 <para>
225 <literal>services/networking/fan.nix</literal>
226 </para>
227 </listitem>
228 <listitem>
229 <para>
230 <literal>services/networking/firefox/sync-server.nix</literal>
231 </para>
232 </listitem>
233 <listitem>
234 <para>
235 <literal>services/networking/gateone.nix</literal>
236 </para>
237 </listitem>
238 <listitem>
239 <para>
240 <literal>services/networking/heyefi.nix</literal>
241 </para>
242 </listitem>
243 <listitem>
244 <para>
245 <literal>services/networking/i2p.nix</literal>
246 </para>
247 </listitem>
248 <listitem>
249 <para>
250 <literal>services/networking/lambdabot.nix</literal>
251 </para>
252 </listitem>
253 <listitem>
254 <para>
255 <literal>services/networking/mstpd.nix</literal>
256 </para>
257 </listitem>
258 <listitem>
259 <para>
260 <literal>services/networking/nix-serve.nix</literal>
261 </para>
262 </listitem>
263 <listitem>
264 <para>
265 <literal>services/networking/nylon.nix</literal>
266 </para>
267 </listitem>
268 <listitem>
269 <para>
270 <literal>services/networking/racoon.nix</literal>
271 </para>
272 </listitem>
273 <listitem>
274 <para>
275 <literal>services/networking/skydns.nix</literal>
276 </para>
277 </listitem>
278 <listitem>
279 <para>
280 <literal>services/networking/shout.nix</literal>
281 </para>
282 </listitem>
283 <listitem>
284 <para>
285 <literal>services/networking/softether.nix</literal>
286 </para>
287 </listitem>
288 <listitem>
289 <para>
290 <literal>services/networking/sslh.nix</literal>
291 </para>
292 </listitem>
293 <listitem>
294 <para>
295 <literal>services/networking/tinc.nix</literal>
296 </para>
297 </listitem>
298 <listitem>
299 <para>
300 <literal>services/networking/tlsdated.nix</literal>
301 </para>
302 </listitem>
303 <listitem>
304 <para>
305 <literal>services/networking/tox-bootstrapd.nix</literal>
306 </para>
307 </listitem>
308 <listitem>
309 <para>
310 <literal>services/networking/tvheadend.nix</literal>
311 </para>
312 </listitem>
313 <listitem>
314 <para>
315 <literal>services/networking/zerotierone.nix</literal>
316 </para>
317 </listitem>
318 <listitem>
319 <para>
320 <literal>services/scheduling/marathon.nix</literal>
321 </para>
322 </listitem>
323 <listitem>
324 <para>
325 <literal>services/security/fprintd.nix</literal>
326 </para>
327 </listitem>
328 <listitem>
329 <para>
330 <literal>services/security/hologram.nix</literal>
331 </para>
332 </listitem>
333 <listitem>
334 <para>
335 <literal>services/security/munge.nix</literal>
336 </para>
337 </listitem>
338 <listitem>
339 <para>
340 <literal>services/system/cloud-init.nix</literal>
341 </para>
342 </listitem>
343 <listitem>
344 <para>
345 <literal>services/web-servers/shellinabox.nix</literal>
346 </para>
347 </listitem>
348 <listitem>
349 <para>
350 <literal>services/web-servers/uwsgi.nix</literal>
351 </para>
352 </listitem>
353 <listitem>
354 <para>
355 <literal>services/x11/unclutter.nix</literal>
356 </para>
357 </listitem>
358 <listitem>
359 <para>
360 <literal>services/x11/display-managers/sddm.nix</literal>
361 </para>
362 </listitem>
363 <listitem>
364 <para>
365 <literal>system/boot/coredump.nix</literal>
366 </para>
367 </listitem>
368 <listitem>
369 <para>
370 <literal>system/boot/loader/loader.nix</literal>
371 </para>
372 </listitem>
373 <listitem>
374 <para>
375 <literal>system/boot/loader/generic-extlinux-compatible</literal>
376 </para>
377 </listitem>
378 <listitem>
379 <para>
380 <literal>system/boot/networkd.nix</literal>
381 </para>
382 </listitem>
383 <listitem>
384 <para>
385 <literal>system/boot/resolved.nix</literal>
386 </para>
387 </listitem>
388 <listitem>
389 <para>
390 <literal>system/boot/timesyncd.nix</literal>
391 </para>
392 </listitem>
393 <listitem>
394 <para>
395 <literal>tasks/filesystems/exfat.nix</literal>
396 </para>
397 </listitem>
398 <listitem>
399 <para>
400 <literal>tasks/filesystems/ntfs.nix</literal>
401 </para>
402 </listitem>
403 <listitem>
404 <para>
405 <literal>tasks/filesystems/vboxsf.nix</literal>
406 </para>
407 </listitem>
408 <listitem>
409 <para>
410 <literal>virtualisation/virtualbox-host.nix</literal>
411 </para>
412 </listitem>
413 <listitem>
414 <para>
415 <literal>virtualisation/vmware-guest.nix</literal>
416 </para>
417 </listitem>
418 <listitem>
419 <para>
420 <literal>virtualisation/xen-dom0.nix</literal>
421 </para>
422 </listitem>
423 </itemizedlist>
424 </para>
425
426 <para>
427 When upgrading from a previous release, please be aware of the following
428 incompatible changes:
429 <itemizedlist>
430 <listitem>
431 <para>
432 <command>sshd</command> no longer supports DSA and ECDSA host keys by
433 default. If you have existing systems with such host keys and want to
434 continue to use them, please set
435<programlisting>
436system.stateVersion = "14.12";
437</programlisting>
438 The new option <option>system.stateVersion</option> ensures that
439 certain configuration changes that could break existing systems (such as
440 the <command>sshd</command> host key setting) will maintain compatibility
441 with the specified NixOS release. NixOps sets the state version of
442 existing deployments automatically.
443 </para>
444 </listitem>
445 <listitem>
446 <para>
447 <command>cron</command> is no longer enabled by default, unless you have a
448 non-empty <option>services.cron.systemCronJobs</option>. To force
449 <command>cron</command> to be enabled, set <option>services.cron.enable =
450 true</option>.
451 </para>
452 </listitem>
453 <listitem>
454 <para>
455 Nix now requires binary caches to be cryptographically signed. If you have
456 unsigned binary caches that you want to continue to use, you should set
457 <option>nix.requireSignedBinaryCaches = false</option>.
458 </para>
459 </listitem>
460 <listitem>
461 <para>
462 Steam now doesn't need root rights to work. Instead of using
463 <literal>*-steam-chrootenv</literal>, you should now just run
464 <literal>steam</literal>. <literal>steamChrootEnv</literal> package was
465 renamed to <literal>steam</literal>, and old <literal>steam</literal>
466 package -- to <literal>steamOriginal</literal>.
467 </para>
468 </listitem>
469 <listitem>
470 <para>
471 CMPlayer has been renamed to bomi upstream. Package
472 <literal>cmplayer</literal> was accordingly renamed to
473 <literal>bomi</literal>
474 </para>
475 </listitem>
476 <listitem>
477 <para>
478 Atom Shell has been renamed to Electron upstream. Package
479 <literal>atom-shell</literal> was accordingly renamed to
480 <literal>electron</literal>
481 </para>
482 </listitem>
483 <listitem>
484 <para>
485 Elm is not released on Hackage anymore. You should now use
486 <literal>elmPackages.elm</literal> which contains the latest Elm platform.
487 </para>
488 </listitem>
489 <listitem>
490 <para>
491 The CUPS printing service has been updated to version
492 <literal>2.0.2</literal>. Furthermore its systemd service has been renamed
493 to <literal>cups.service</literal>.
494 </para>
495 <para>
496 Local printers are no longer shared or advertised by default. This
497 behavior can be changed by enabling
498 <option>services.printing.defaultShared</option> or
499 <option>services.printing.browsing</option> respectively.
500 </para>
501 </listitem>
502 <listitem>
503 <para>
504 The VirtualBox host and guest options have been named more consistently.
505 They can now found in <option>virtualisation.virtualbox.host.*</option>
506 instead of <option>services.virtualboxHost.*</option> and
507 <option>virtualisation.virtualbox.guest.*</option> instead of
508 <option>services.virtualboxGuest.*</option>.
509 </para>
510 <para>
511 Also, there now is support for the <literal>vboxsf</literal> file system
512 using the <option>fileSystems</option> configuration attribute. An example
513 of how this can be used in a configuration:
514<programlisting>
515fileSystems."/shiny" = {
516 device = "myshinysharedfolder";
517 fsType = "vboxsf";
518};
519</programlisting>
520 </para>
521 </listitem>
522 <listitem>
523 <para>
524 "<literal>nix-env -qa</literal>" no longer discovers Haskell
525 packages by name. The only packages visible in the global scope are
526 <literal>ghc</literal>, <literal>cabal-install</literal>, and
527 <literal>stack</literal>, but all other packages are hidden. The reason
528 for this inconvenience is the sheer size of the Haskell package set.
529 Name-based lookups are expensive, and most <literal>nix-env -qa</literal>
530 operations would become much slower if we'd add the entire Hackage
531 database into the top level attribute set. Instead, the list of Haskell
532 packages can be displayed by running:
533 </para>
534<programlisting>
535nix-env -f "<nixpkgs>" -qaP -A haskellPackages
536</programlisting>
537 <para>
538 Executable programs written in Haskell can be installed with:
539 </para>
540<programlisting>
541nix-env -f "<nixpkgs>" -iA haskellPackages.pandoc
542</programlisting>
543 <para>
544 Installing Haskell <emphasis>libraries</emphasis> this way, however, is no
545 longer supported. See the next item for more details.
546 </para>
547 </listitem>
548 <listitem>
549 <para>
550 Previous versions of NixOS came with a feature called
551 <literal>ghc-wrapper</literal>, a small script that allowed GHC to
552 transparently pick up on libraries installed in the user's profile. This
553 feature has been deprecated; <literal>ghc-wrapper</literal> was removed
554 from the distribution. The proper way to register Haskell libraries with
555 the compiler now is the <literal>haskellPackages.ghcWithPackages</literal>
556 function. The
557 <link
558 xlink:href="http://nixos.org/nixpkgs/manual/#users-guide-to-the-haskell-infrastructure">User's
559 Guide to the Haskell Infrastructure</link> provides more information about
560 this subject.
561 </para>
562 </listitem>
563 <listitem>
564 <para>
565 All Haskell builds that have been generated with version 1.x of the
566 <literal>cabal2nix</literal> utility are now invalid and need to be
567 re-generated with a current version of <literal>cabal2nix</literal> to
568 function. The most recent version of this tool can be installed by running
569 <literal>nix-env -i cabal2nix</literal>.
570 </para>
571 </listitem>
572 <listitem>
573 <para>
574 The <literal>haskellPackages</literal> set in Nixpkgs used to have a
575 function attribute called <literal>extension</literal> that users could
576 override in their <literal>~/.nixpkgs/config.nix</literal> files to
577 configure additional attributes, etc. That function still exists, but it's
578 now called <literal>overrides</literal>.
579 </para>
580 </listitem>
581 <listitem>
582 <para>
583 The OpenBLAS library has been updated to version
584 <literal>0.2.14</literal>. Support for the
585 <literal>x86_64-darwin</literal> platform was added. Dynamic architecture
586 detection was enabled; OpenBLAS now selects microarchitecture-optimized
587 routines at runtime, so optimal performance is achieved without the need
588 to rebuild OpenBLAS locally. OpenBLAS has replaced ATLAS in most packages
589 which use an optimized BLAS or LAPACK implementation.
590 </para>
591 </listitem>
592 <listitem>
593 <para>
594 The <literal>phpfpm</literal> is now using the default PHP version
595 (<literal>pkgs.php</literal>) instead of PHP 5.4
596 (<literal>pkgs.php54</literal>).
597 </para>
598 </listitem>
599 <listitem>
600 <para>
601 The <literal>locate</literal> service no longer indexes the Nix store by
602 default, preventing packages with potentially numerous versions from
603 cluttering the output. Indexing the store can be activated by setting
604 <option>services.locate.includeStore = true</option>.
605 </para>
606 </listitem>
607 <listitem>
608 <para>
609 The Nix expression search path (<envar>NIX_PATH</envar>) no longer
610 contains <filename>/etc/nixos/nixpkgs</filename> by default. You can
611 override <envar>NIX_PATH</envar> by setting <option>nix.nixPath</option>.
612 </para>
613 </listitem>
614 <listitem>
615 <para>
616 Python 2.6 has been marked as broken (as it no longer receives security
617 updates from upstream).
618 </para>
619 </listitem>
620 <listitem>
621 <para>
622 Any use of module arguments such as <varname>pkgs</varname> to access
623 library functions, or to define <literal>imports</literal> attributes will
624 now lead to an infinite loop at the time of the evaluation.
625 </para>
626 <para>
627 In case of an infinite loop, use the <command>--show-trace</command>
628 command line argument and read the line just above the error message.
629<screen>
630$ nixos-rebuild build --show-trace
631…
632while evaluating the module argument `pkgs' in "/etc/nixos/my-module.nix":
633infinite recursion encountered
634</screen>
635 </para>
636 <para>
637 Any use of <literal>pkgs.lib</literal>, should be replaced by
638 <varname>lib</varname>, after adding it as argument of the module. The
639 following module
640<programlisting>
641{ config, pkgs, ... }:
642
643with pkgs.lib;
644
645{
646 options = {
647 foo = mkOption { … };
648 };
649 config = mkIf config.foo { … };
650}
651</programlisting>
652 should be modified to look like:
653<programlisting>
654{ config, pkgs, lib, ... }:
655
656with lib;
657
658{
659 options = {
660 foo = mkOption { <replaceable>option declaration</replaceable> };
661 };
662 config = mkIf config.foo { <replaceable>option definition</replaceable> };
663}
664</programlisting>
665 </para>
666 <para>
667 When <varname>pkgs</varname> is used to download other projects to import
668 their modules, and only in such cases, it should be replaced by
669 <literal>(import <nixpkgs> {})</literal>. The following module
670<programlisting>
671{ config, pkgs, ... }:
672
673let
674 myProject = pkgs.fetchurl {
675 src = <replaceable>url</replaceable>;
676 sha256 = <replaceable>hash</replaceable>;
677 };
678in
679
680{
681 imports = [ "${myProject}/module.nix" ];
682}
683</programlisting>
684 should be modified to look like:
685<programlisting>
686{ config, pkgs, ... }:
687
688let
689 myProject = (import <nixpkgs> {}).fetchurl {
690 src = <replaceable>url</replaceable>;
691 sha256 = <replaceable>hash</replaceable>;
692 };
693in
694
695{
696 imports = [ "${myProject}/module.nix" ];
697}
698</programlisting>
699 </para>
700 </listitem>
701 </itemizedlist>
702 </para>
703
704 <para>
705 Other notable improvements:
706 <itemizedlist>
707 <listitem>
708 <para>
709 The nixos and nixpkgs channels were unified, so one
710 <emphasis>can</emphasis> use <literal>nix-env -iA nixos.bash</literal>
711 instead of <literal>nix-env -iA nixos.pkgs.bash</literal>. See
712 <link xlink:href="https://github.com/NixOS/nixpkgs/commit/2cd7c1f198">the
713 commit</link> for details.
714 </para>
715 </listitem>
716 <listitem>
717 <para>
718 Users running an SSH server who worry about the quality of their
719 <literal>/etc/ssh/moduli</literal> file with respect to the
720 <link
721 xlink:href="https://stribika.github.io/2015/01/04/secure-secure-shell.html">vulnerabilities
722 discovered in the Diffie-Hellman key exchange</link> can now replace
723 OpenSSH's default version with one they generated themselves using the new
724 <option>services.openssh.moduliFile</option> option.
725 </para>
726 </listitem>
727 <listitem>
728 <para>
729 A newly packaged TeX Live 2015 is provided in
730 <literal>pkgs.texlive</literal>, split into 6500 nix packages. For basic
731 user documentation see
732 <link xlink:href="https://github.com/NixOS/nixpkgs/blob/release-15.09/pkgs/tools/typesetting/tex/texlive/default.nix#L1"
733 >the
734 source</link>. Beware of
735 <link xlink:href="https://github.com/NixOS/nixpkgs/issues/9757"
736 >an
737 issue</link> when installing a too large package set. The plan is to
738 deprecate and maybe delete the original TeX packages until the next
739 release.
740 </para>
741 </listitem>
742 <listitem>
743 <para>
744 <option>buildEnv.env</option> on all Python interpreters is now available
745 for nix-shell interoperability.
746 </para>
747 </listitem>
748 </itemizedlist>
749 </para>
750</section>