rl-2003: release date
[NixPkgs.git] / nixos / doc / manual / release-notes / rl-2003.xml
blob62251e0b25b9f2763c743aa7085f4a9b4225efb7
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-20.03">
6  <title>Release 20.03 (“Markhor”, 2020.04/20)</title>
8  <section xmlns="http://docbook.org/ns/docbook"
9          xmlns:xlink="http://www.w3.org/1999/xlink"
10          xmlns:xi="http://www.w3.org/2001/XInclude"
11          version="5.0"
12          xml:id="sec-release-20.03-highlights">
13   <title>Highlights</title>
15   <para>
16    In addition to numerous new and upgraded packages, this release has the
17    following highlights:
18   </para>
20   <itemizedlist>
21    <listitem>
22     <para>
23      Support is planned until the end of October 2020, handing over to 20.09.
24     </para>
25    </listitem>
26    <listitem>
27     <para>Core version changes:</para>
28     <para>gcc: 8.3.0 -&gt; 9.2.0</para>
29     <para>glibc: 2.27 -&gt; 2.30</para>
30     <para>linux: 4.19 -&gt; 5.4</para>
31     <para>mesa: 19.1.5 -&gt; 19.3.3</para>
32     <para>openssl: 1.0.2u -&gt; 1.1.1d</para>
33    </listitem>
34    <listitem>
35     <para>Desktop version changes:</para>
36     <para>plasma5: 5.16.5 -&gt; 5.17.5</para>
37     <para>kdeApplications: 19.08.2 -&gt; 19.12.3</para>
38     <para>gnome3: 3.32 -&gt; 3.34</para>
39     <para>pantheon: 5.0 -&gt; 5.1.3</para>
40    </listitem>
41    <listitem>
42     <para>
43      Linux kernel is updated to branch 5.4 by default (from 4.19).
44     </para>
45    </listitem>
46    <listitem>
47     <para>
48      Postgresql for NixOS service now defaults to v11.
49     </para>
50    </listitem>
51    <listitem>
52     <para>
53      The graphical installer image starts the graphical session automatically.
54      Before you'd be greeted by a tty and asked to enter <command>systemctl start display-manager</command>.
55      It is now possible to disable the display-manager from running by selecting the <literal>Disable display-manager</literal>
56      quirk in the boot menu.
57     </para>
58    </listitem>
59    <listitem>
60     <para>
61      GNOME 3 has been upgraded to 3.34. Please take a look at their
62      <link xlink:href="https://help.gnome.org/misc/release-notes/3.34">Release Notes</link>
63      for details.
64     </para>
65    </listitem>
66    <listitem>
67     <para>
68      If you enable the Pantheon Desktop Manager via
69      <xref linkend="opt-services.xserver.desktopManager.pantheon.enable" />, we now default to also use
70      <link xlink:href="https://blog.elementary.io/say-hello-to-the-new-greeter/">
71       Pantheon's newly designed greeter
72      </link>.
73       Contrary to NixOS's usual update policy, Pantheon will receive updates during the cycle of
74       NixOS 20.03 when backwards compatible.
75     </para>
76    </listitem>
77    <listitem>
78      <para>
79        By default zfs pools will now be trimmed on a weekly basis.
80        Trimming is only done on supported devices (i.e. NVME or SSDs)
81        and should improve throughput and lifetime of these devices.
82        It is controlled by the <varname>services.zfs.trim.enable</varname> varname.
83        The zfs scrub service (<varname>services.zfs.autoScrub.enable</varname>)
84        and the zfs autosnapshot service (<varname>services.zfs.autoSnapshot.enable</varname>)
85        are now only enabled if zfs is set in <varname>config.boot.initrd.supportedFilesystems</varname> or
86        <varname>config.boot.supportedFilesystems</varname>. These lists will automatically contain
87        zfs as soon as any zfs mountpoint is configured in <varname>fileSystems</varname>.
88      </para>
89    </listitem>
90    <listitem>
91     <para>
92       <command>nixos-option</command> has been rewritten in C++, speeding it up, improving correctness,
93       and adding a <option>-r</option> option which prints all options and their values recursively.
94     </para>
95    </listitem>
96    <listitem>
97     <para>
98      <option>services.xserver.desktopManager.default</option> and <option>services.xserver.windowManager.default</option> options were replaced by a single <xref linkend="opt-services.xserver.displayManager.defaultSession"/> option to improve support for upstream session files. If you used something like:
99 <programlisting>
100 services.xserver.desktopManager.default = "xfce";
101 services.xserver.windowManager.default = "icewm";
102 </programlisting>
103      you should change it to:
104 <programlisting>
105 services.xserver.displayManager.defaultSession = "xfce+icewm";
106 </programlisting>
107     </para>
108    </listitem>
109    <listitem>
110     <para>
111      The testing driver implementation in NixOS is now in Python <filename>make-test-python.nix</filename>.
112      This was done by Jacek Galowicz (<link xlink:href="https://github.com/tfc">@tfc</link>), and with the
113      collaboration of Julian Stecklina (<link xlink:href="https://github.com/blitz">@blitz</link>) and
114      Jana Traue (<link xlink:href="https://github.com/jtraue">@jtraue</link>). All documentation has been updated to use this
115      testing driver, and a vast majority of the 286 tests in NixOS were ported to python driver. In 20.09 the Perl driver implementation,
116      <filename>make-test.nix</filename>, is slated for removal. This should give users of the NixOS integration framework
117      a transitory period to rewrite their tests to use the Python implementation. Users of the Perl driver will see
118      this warning everytime they use it:
119 <screen>
120 <prompt>$ </prompt>warning: Perl VM tests are deprecated and will be removed for 20.09.
121 Please update your tests to use the python test driver.
122 See https://github.com/NixOS/nixpkgs/pull/71684 for details.
123 </screen>
124      API compatibility is planned to be kept for at least the next release with the perl driver.
125     </para>
126    </listitem>
127   </itemizedlist>
128  </section>
130  <section xmlns="http://docbook.org/ns/docbook"
131          xmlns:xlink="http://www.w3.org/1999/xlink"
132          xmlns:xi="http://www.w3.org/2001/XInclude"
133          version="5.0"
134          xml:id="sec-release-20.03-new-services">
135   <title>New Services</title>
137   <para>
138    The following new services were added since the last release:
139   </para>
141   <itemizedlist>
142    <listitem>
143     <para>
144     The kubernetes kube-proxy now supports a new hostname configuration
145     <literal>services.kubernetes.proxy.hostname</literal> which has to
146     be set if the hostname of the node should be non default.
147     </para>
148    </listitem>
149    <listitem>
150     <para>
151     UPower's configuration is now managed by NixOS and can be customized
152     via <option>services.upower</option>.
153     </para>
154    </listitem>
155    <listitem>
156     <para>
157      To use Geary you should enable <xref linkend="opt-programs.geary.enable"/> instead of
158      just adding it to <xref linkend="opt-environment.systemPackages"/>.
159      It was created so Geary could function properly outside of GNOME.
160     </para>
161    </listitem>
162    <listitem>
163      <para>
164        <filename>./config/console.nix</filename>
165      </para>
166    </listitem>
167    <listitem>
168      <para>
169        <filename>./hardware/brillo.nix</filename>
170      </para>
171    </listitem>
172    <listitem>
173      <para>
174        <filename>./hardware/tuxedo-keyboard.nix</filename>
175      </para>
176    </listitem>
177    <listitem>
178      <para>
179        <filename>./programs/bandwhich.nix</filename>
180      </para>
181    </listitem>
182    <listitem>
183      <para>
184        <filename>./programs/bash-my-aws.nix</filename>
185      </para>
186    </listitem>
187    <listitem>
188      <para>
189        <filename>./programs/liboping.nix</filename>
190      </para>
191    </listitem>
192    <listitem>
193      <para>
194        <filename>./programs/traceroute.nix</filename>
195      </para>
196    </listitem>
197    <listitem>
198      <para>
199        <filename>./services/backup/sanoid.nix</filename>
200      </para>
201    </listitem>
202    <listitem>
203      <para>
204        <filename>./services/backup/syncoid.nix</filename>
205      </para>
206    </listitem>
207    <listitem>
208      <para>
209        <filename>./services/backup/zfs-replication.nix</filename>
210      </para>
211    </listitem>
212    <listitem>
213      <para>
214        <filename>./services/continuous-integration/buildkite-agents.nix</filename>
215      </para>
216    </listitem>
217    <listitem>
218      <para>
219        <filename>./services/databases/victoriametrics.nix</filename>
220      </para>
221    </listitem>
222    <listitem>
223      <para>
224        <filename>./services/desktops/gnome3/gnome-initial-setup.nix</filename>
225      </para>
226    </listitem>
227    <listitem>
228      <para>
229        <filename>./services/desktops/neard.nix</filename>
230      </para>
231    </listitem>
232    <listitem>
233      <para>
234        <filename>./services/games/openarena.nix</filename>
235      </para>
236    </listitem>
237    <listitem>
238      <para>
239        <filename>./services/hardware/fancontrol.nix</filename>
240      </para>
241    </listitem>
242    <listitem>
243      <para>
244        <filename>./services/mail/sympa.nix</filename>
245      </para>
246    </listitem>
247    <listitem>
248      <para>
249        <filename>./services/misc/freeswitch.nix</filename>
250      </para>
251    </listitem>
252    <listitem>
253      <para>
254        <filename>./services/misc/mame.nix</filename>
255      </para>
256    </listitem>
257    <listitem>
258      <para>
259        <filename>./services/monitoring/do-agent.nix</filename>
260      </para>
261    </listitem>
262    <listitem>
263      <para>
264        <filename>./services/monitoring/prometheus/xmpp-alerts.nix</filename>
265      </para>
266    </listitem>
267    <listitem>
268      <para>
269        <filename>./services/network-filesystems/orangefs/server.nix</filename>
270      </para>
271    </listitem>
272    <listitem>
273      <para>
274        <filename>./services/network-filesystems/orangefs/client.nix</filename>
275      </para>
276    </listitem>
277    <listitem>
278      <para>
279        <filename>./services/networking/3proxy.nix</filename>
280      </para>
281    </listitem>
282    <listitem>
283      <para>
284        <filename>./services/networking/corerad.nix</filename>
285      </para>
286    </listitem>
287    <listitem>
288      <para>
289        <filename>./services/networking/go-shadowsocks2.nix</filename>
290      </para>
291    </listitem>
292    <listitem>
293      <para>
294        <filename>./services/networking/ntp/openntpd.nix</filename>
295      </para>
296    </listitem>
297    <listitem>
298      <para>
299        <filename>./services/networking/shorewall.nix</filename>
300      </para>
301    </listitem>
302    <listitem>
303      <para>
304        <filename>./services/networking/shorewall6.nix</filename>
305      </para>
306    </listitem>
307    <listitem>
308      <para>
309        <filename>./services/networking/spacecookie.nix</filename>
310      </para>
311    </listitem>
312    <listitem>
313      <para>
314        <filename>./services/networking/trickster.nix</filename>
315      </para>
316    </listitem>
317    <listitem>
318      <para>
319        <filename>./services/networking/v2ray.nix</filename>
320      </para>
321    </listitem>
322    <listitem>
323      <para>
324        <filename>./services/networking/xandikos.nix</filename>
325      </para>
326    </listitem>
327    <listitem>
328      <para>
329        <filename>./services/networking/yggdrasil.nix</filename>
330      </para>
331    </listitem>
332    <listitem>
333      <para>
334        <filename>./services/web-apps/dokuwiki.nix</filename>
335      </para>
336    </listitem>
337    <listitem>
338      <para>
339        <filename>./services/web-apps/gotify-server.nix</filename>
340      </para>
341    </listitem>
342    <listitem>
343      <para>
344        <filename>./services/web-apps/grocy.nix</filename>
345      </para>
346    </listitem>
347    <listitem>
348      <para>
349        <filename>./services/web-apps/ihatemoney</filename>
350      </para>
351    </listitem>
352    <listitem>
353      <para>
354        <filename>./services/web-apps/moinmoin.nix</filename>
355      </para>
356    </listitem>
357    <listitem>
358      <para>
359        <filename>./services/web-apps/trac.nix</filename>
360      </para>
361    </listitem>
362    <listitem>
363      <para>
364        <filename>./services/web-apps/trilium.nix</filename>
365      </para>
366    </listitem>
367    <listitem>
368      <para>
369        <filename>./services/web-apps/shiori.nix</filename>
370      </para>
371    </listitem>
372    <listitem>
373      <para>
374        <filename>./services/web-servers/ttyd.nix</filename>
375      </para>
376    </listitem>
377    <listitem>
378      <para>
379        <filename>./services/x11/picom.nix</filename>
380      </para>
381    </listitem>
382    <listitem>
383      <para>
384        <filename>./services/x11/hardware/digimend.nix</filename>
385      </para>
386    </listitem>
387    <listitem>
388      <para>
389        <filename>./services/x11/imwheel.nix</filename>
390      </para>
391    </listitem>
392    <listitem>
393      <para>
394        <filename>./virtualisation/cri-o.nix</filename>
395      </para>
396    </listitem>
397   </itemizedlist>
399  </section>
401  <section xmlns="http://docbook.org/ns/docbook"
402          xmlns:xlink="http://www.w3.org/1999/xlink"
403          xmlns:xi="http://www.w3.org/2001/XInclude"
404          version="5.0"
405          xml:id="sec-release-20.03-incompatibilities">
406   <title>Backward Incompatibilities</title>
408   <para>
409    When upgrading from a previous release, please be aware of the following
410    incompatible changes:
411   </para>
413   <itemizedlist>
414    <listitem>
415     <para>
416      The <package>dhcpcd</package> package <link xlink:href="https://roy.marples.name/archives/dhcpcd-discuss/0002621.html">
417      does not request IPv4 addresses for tap and bridge interfaces anymore by default</link>.
418      In order to still get an address on a bridge interface, one has to disable
419      <literal>networking.useDHCP</literal> and explicitly enable
420      <literal>networking.interfaces.&lt;name&gt;.useDHCP</literal> on
421      every interface, that should get an address via DHCP. This way, dhcpcd
422      is configured in an explicit way about which interface to run on.
423     </para>
424    </listitem>
425    <listitem>
426     <para>
427       GnuPG is now built without support for a graphical passphrase entry
428       by default. Please enable the <literal>gpg-agent</literal> user service
429       via the NixOS option <literal>programs.gnupg.agent.enable</literal>.
430       Note that upstream recommends using <literal>gpg-agent</literal> and
431       will spawn a <literal>gpg-agent</literal> on the first invocation of
432       GnuPG anyway.
433     </para>
434    </listitem>
435    <listitem>
436     <para>
437      The <literal>dynamicHosts</literal> option has been removed from the
438      <link linkend="opt-networking.networkmanager.enable">NetworkManager</link>
439      module. Allowing (multiple) regular users to override host entries
440      affecting the whole system opens up a huge attack vector.
441      There seem to be very rare cases where this might be useful.
442      Consider setting system-wide host entries using
443      <link linkend="opt-networking.hosts">networking.hosts</link>, provide
444      them via the DNS server in your network, or use
445      <link linkend="opt-environment.etc">environment.etc</link>
446      to add a file into <literal>/etc/NetworkManager/dnsmasq.d</literal>
447      reconfiguring <literal>hostsdir</literal>.
448     </para>
449    </listitem>
450    <listitem>
451     <para>
452      The <literal>99-main.network</literal> file was removed. Matching all
453      network interfaces caused many breakages, see
454      <link xlink:href="https://github.com/NixOS/nixpkgs/pull/18962">#18962</link>
455        and <link xlink:href="https://github.com/NixOS/nixpkgs/pull/71106">#71106</link>.
456     </para>
457     <para>
458      We already don't support the global <link linkend="opt-networking.useDHCP">networking.useDHCP</link>,
459      <link linkend="opt-networking.defaultGateway">networking.defaultGateway</link> and
460      <link linkend="opt-networking.defaultGateway6">networking.defaultGateway6</link> options
461      if <link linkend="opt-networking.useNetworkd">networking.useNetworkd</link> is enabled,
462      but direct users to configure the per-device
463      <link linkend="opt-networking.interfaces">networking.interfaces.&lt;name&gt;.…</link> options.
464     </para>
465    </listitem>
466    <listitem>
467     <para>
468       The stdenv now runs all bash with <literal>set -u</literal>, to catch the use of undefined variables.
469       Before, it itself used <literal>set -u</literal> but was careful to unset it so other packages' code ran as before.
470       Now, all bash code is held to the same high standard, and the rather complex stateful manipulation of the options can be discarded.
471     </para>
472    </listitem>
473    <listitem>
474     <para>
475      The SLIM Display Manager has been removed, as it has been unmaintained since 2013.
476      Consider migrating to a different display manager such as LightDM (current default in NixOS),
477      SDDM, GDM, or using the startx module which uses Xinitrc.
478     </para>
479    </listitem>
480    <listitem>
481     <para>
482      The Way Cooler wayland compositor has been removed, as the project has been officially canceled.
483      There are no more <literal>way-cooler</literal> attribute and <literal>programs.way-cooler</literal> options.
484     </para>
485    </listitem>
486    <listitem>
487     <para>
488       The BEAM package set has been deleted. You will only find there the different interpreters.
489       You should now use the different build tools coming with the languages with sandbox mode disabled.
490     </para>
491    </listitem>
492    <listitem>
493     <para>
494      There is now only one Xfce package-set and module. This means that attributes <literal>xfce4-14</literal>
495      and <literal>xfceUnstable</literal> all now point to the latest Xfce 4.14
496      packages. And in the future NixOS releases will be the latest released version of Xfce available at the
497      time of the release's development (if viable).
498     </para>
499    </listitem>
500    <listitem>
501     <para>
502       The <link linkend="opt-services.phpfpm.pools">phpfpm</link> module now sets
503       <literal>PrivateTmp=true</literal> in its systemd units for better process isolation.
504       If you rely on <literal>/tmp</literal> being shared with other services, explicitly override this by
505       setting <literal>serviceConfig.PrivateTmp</literal> to <literal>false</literal> for each phpfpm unit.
506     </para>
507    </listitem>
508    <listitem>
509     <para>
510      KDE’s old multimedia framework Phonon no longer supports Qt 4. For that reason, Plasma desktop also does not have <option>enableQt4Support</option> option any more.
511     </para>
512    </listitem>
513    <listitem>
514     <para>
515      The BeeGFS module has been removed.
516     </para>
517    </listitem>
518    <listitem>
519     <para>
520      The osquery module has been removed.
521     </para>
522    </listitem>
523    <listitem>
524     <para>
525       Going forward, <literal>~/bin</literal> in the users home directory will no longer be in <literal>PATH</literal> by default.
526       If you depend on this you should set the option <literal>environment.homeBinInPath</literal> to <literal>true</literal>.
527       The aforementioned option was added this release.
528     </para>
529    </listitem>
530    <listitem>
531     <para>
532       The <literal>buildRustCrate</literal> infrastructure now produces <literal>lib</literal> outputs in addition to the <literal>out</literal> output.
533       This has led to drastically reduced closure sizes for some rust crates since development dependencies are now in the <literal>lib</literal> output.
534     </para>
535     </listitem>
536    <listitem>
537     <para>
538      Pango was upgraded to 1.44, which no longer uses freetype for font loading.  This means that type1
539      and bitmap fonts are no longer supported in applications relying on Pango for font rendering
540      (notably, GTK application). See <link xlink:href="https://gitlab.gnome.org/GNOME/pango/issues/386">
541      upstream issue</link> for more information.
542     </para>
543    </listitem>
544    <listitem>
545     <para>
546      The <literal>roundcube</literal> module has been hardened.
547      <itemizedlist>
548       <listitem>
549        <para>
550         The password of the database is not written world readable in the store any more. If <literal>database.host</literal> is set to <literal>localhost</literal>, then a unix user of the same name as the database will be created and PostreSQL peer authentication will be used, removing the need for a password. Otherwise, a password is still needed and can be provided with the new option <literal>database.passwordFile</literal>, which should be set to the path of a file containing the password and readable by the user <literal>nginx</literal> only. The <literal>database.password</literal> option is insecure and deprecated. Usage of this option will print a warning.
551        </para>
552       </listitem>
553       <listitem>
554        <para>
555         A random <literal>des_key</literal> is set by default in the configuration of roundcube, instead of using the hardcoded and insecure default. To ensure a clean migration, all users will be logged out when you upgrade to this release.
556        </para>
557       </listitem>
558      </itemizedlist>
559     </para>
560    </listitem>
561    <listitem>
562     <para>
563      The packages <literal>openobex</literal> and <literal>obexftp</literal>
564      are no longer installed when enabling Bluetooth via
565      <option>hardware.bluetooth.enable</option>.
566     </para>
567    </listitem>
568    <listitem>
569     <para>
570      The <literal>dump1090</literal> derivation has been changed to use FlightAware's dump1090
571      as its upstream. However, this version does not have an internal webserver anymore. The
572      assets in the <literal>share/dump1090</literal> directory of the derivation can be used
573      in conjunction with an external webserver to replace this functionality.
574     </para>
575    </listitem>
576    <listitem>
577     <para>
578      The fourStore and fourStoreEndpoint modules have been removed.
579     </para>
580    </listitem>
581    <listitem>
582     <para>
583      Polkit no longer has the user of uid 0 (root) as an admin identity.
584      We now follow the upstream default of only having every member of the wheel
585      group admin privileged. Before it was root and members of wheel.
586      The positive outcome of this is pkexec GUI popups or terminal prompts
587      will no longer require the user to choose between two essentially equivalent
588      choices (whether to perform the action as themselves with wheel permissions, or as the root user).
589     </para>
590    </listitem>
591    <listitem>
592     <para>
593      NixOS containers no longer build NixOS manual by default. This saves evaluation time,
594      especially if there are many declarative containers defined. Note that this is already done
595      when <literal>&lt;nixos/modules/profiles/minimal.nix&gt;</literal> module is included
596      in container config.
597     </para>
598    </listitem>
599    <listitem>
600     <para>
601      The <literal>kresd</literal> services deprecates the <literal>interfaces</literal> option
602      in favor of the <literal>listenPlain</literal> option which requires full
603      <link xlink:href="https://www.freedesktop.org/software/systemd/man/systemd.socket.html#ListenStream=">systemd.socket compatible</link>
604      declaration which always include a port.
605     </para>
606    </listitem>
607    <listitem>
608     <para>
609      Virtual console options have been reorganized and can be found under
610      a single top-level attribute: <literal>console</literal>.
611      The full set of changes is as follows:
612     </para>
613     <itemizedlist>
614       <listitem>
615        <para>
616          <literal>i18n.consoleFont</literal> renamed to
617          <link linkend="opt-console.font">console.font</link>
618        </para>
619       </listitem>
620       <listitem>
621        <para>
622          <literal>i18n.consoleKeyMap</literal> renamed to
623          <link linkend="opt-console.keyMap">console.keyMap</link>
624        </para>
625       </listitem>
626       <listitem>
627        <para>
628          <literal>i18n.consoleColors</literal> renamed to
629          <link linkend="opt-console.colors">console.colors</link>
630        </para>
631       </listitem>
632       <listitem>
633        <para>
634          <literal>i18n.consolePackages</literal> renamed to
635          <link linkend="opt-console.packages">console.packages</link>
636        </para>
637       </listitem>
638       <listitem>
639        <para>
640          <literal>i18n.consoleUseXkbConfig</literal> renamed to
641          <link linkend="opt-console.useXkbConfig">console.useXkbConfig</link>
642        </para>
643       </listitem>
644       <listitem>
645        <para>
646          <literal>boot.earlyVconsoleSetup</literal> renamed to
647          <link linkend="opt-console.earlySetup">console.earlySetup</link>
648        </para>
649       </listitem>
650       <listitem>
651        <para>
652          <literal>boot.extraTTYs</literal> renamed to
653          <link linkend="opt-console.extraTTYs">console.extraTTYs</link>
654        </para>
655       </listitem>
656     </itemizedlist>
657    </listitem>
658    <listitem>
659     <para>
660      The <link linkend="opt-services.awstats.enable">awstats</link> module has been rewritten
661      to serve stats via static html pages, updated on a timer, over <link linkend="opt-services.nginx.virtualHosts">nginx</link>,
662      instead of dynamic cgi pages over <link linkend="opt-services.httpd.enable">apache</link>.
663     </para>
664     <para>
665      Minor changes will be required to migrate existing configurations. Details of the
666      required changes can seen by looking through the <link linkend="opt-services.awstats.enable">awstats</link>
667      module.
668     </para>
669    </listitem>
670    <listitem>
671     <para>
672       The httpd module no longer provides options to support serving web content without defining a virtual host. As a
673       result of this the <link linkend="opt-services.httpd.logPerVirtualHost">services.httpd.logPerVirtualHost</link>
674       option now defaults to <literal>true</literal> instead of <literal>false</literal>. Please update your
675       configuration to make use of <link linkend="opt-services.httpd.virtualHosts">services.httpd.virtualHosts</link>.
676     </para>
677     <para>
678       The <link linkend="opt-services.httpd.virtualHosts">services.httpd.virtualHosts.&lt;name&gt;</link>
679       option has changed type from a list of submodules to an attribute set of submodules, better matching
680       <link linkend="opt-services.nginx.virtualHosts">services.nginx.virtualHosts.&lt;name&gt;</link>.
681     </para>
682     <para>
683       This change comes with the addition of the following options which mimic the functionality of their <literal>nginx</literal> counterparts:
684       <link linkend="opt-services.httpd.virtualHosts">services.httpd.virtualHosts.&lt;name&gt;.addSSL</link>,
685       <link linkend="opt-services.httpd.virtualHosts">services.httpd.virtualHosts.&lt;name&gt;.forceSSL</link>,
686       <link linkend="opt-services.httpd.virtualHosts">services.httpd.virtualHosts.&lt;name&gt;.onlySSL</link>,
687       <link linkend="opt-services.httpd.virtualHosts">services.httpd.virtualHosts.&lt;name&gt;.enableACME</link>,
688       <link linkend="opt-services.httpd.virtualHosts">services.httpd.virtualHosts.&lt;name&gt;.acmeRoot</link>, and
689       <link linkend="opt-services.httpd.virtualHosts">services.httpd.virtualHosts.&lt;name&gt;.useACMEHost</link>.
690     </para>
691    </listitem>
692    <listitem>
693     <para>
694      For NixOS configuration options, the <literal>loaOf</literal> type has
695      been deprecated and will be removed in a future release. In nixpkgs,
696      options of this type will be changed to <literal>attrsOf</literal>
697      instead. If you were using one of these in your configuration, you will
698      see a warning suggesting what changes will be required.
699     </para>
700     <para>
701      For example, <link linkend="opt-users.users">users.users</link> is a
702      <literal>loaOf</literal> option that is commonly used as follows:
703      <programlisting>
704 users.users =
705   [ { name = "me";
706       description = "My personal user.";
707       isNormalUser = true;
708     }
709   ];
710      </programlisting>
711      This should be rewritten by removing the list and using the
712      value of <literal>name</literal> as the name of the attribute set:
713      <programlisting>
714 users.users.me =
715   { description = "My personal user.";
716     isNormalUser = true;
717   };
718      </programlisting>
719     </para>
720     <para>
721      For more information on this change have look at these links:
722      <link xlink:href="https://github.com/NixOS/nixpkgs/issues/1800">issue #1800</link>,
723      <link xlink:href="https://github.com/NixOS/nixpkgs/pull/63103">PR #63103</link>.
724     </para>
725    </listitem>
726    <listitem>
727     <para>
728      For NixOS modules, the types <literal>types.submodule</literal> and <literal>types.submoduleWith</literal> now support
729      paths as allowed values, similar to how <literal>imports</literal> supports paths.
730      Because of this, if you have a module that defines an option of type
731      <literal>either (submodule ...) path</literal>, it will break since a path
732      is now treated as the first type instead of the second. To fix this, change
733      the type to <literal>either path (submodule ...)</literal>.
734     </para>
735    </listitem>
736    <listitem>
737     <para>
738       The <link linkend="opt-services.buildkite-agents">Buildkite
739       Agent</link> module and corresponding packages have been updated to
740       3.x, and to support multiple instances of the agent running at the
741       same time. This means you will have to rename
742       <literal>services.buildkite-agent</literal> to
743       <literal>services.buildkite-agents.&lt;name&gt;</literal>. Furthermore,
744       the following options have been changed:
745     </para>
746     <itemizedlist>
747       <listitem>
748        <para>
749          <literal>services.buildkite-agent.meta-data</literal> has been renamed to
750          <link linkend="opt-services.buildkite-agents">services.buildkite-agents.&lt;name&gt;.tags</link>,
751          to match upstreams naming for 3.x.
752          Its type has also changed - it now accepts an attrset of strings.
753        </para>
754       </listitem>
755       <listitem>
756        <para>
757          The<literal>services.buildkite-agent.openssh.publicKeyPath</literal> option
758          has been removed, as it's not necessary to deploy public keys to clone private
759          repositories.
760        </para>
761       </listitem>
762       <listitem>
763        <para>
764          <literal>services.buildkite-agent.openssh.privateKeyPath</literal>
765          has been renamed to
766          <link linkend="opt-services.buildkite-agents">buildkite-agents.&lt;name&gt;.privateSshKeyPath</link>,
767          as the whole <literal>openssh</literal> now only contained that single option.
768        </para>
769       </listitem>
770       <listitem>
771        <para>
772          <link linkend="opt-services.buildkite-agents">services.buildkite-agents.&lt;name&gt;.shell</link>
773          has been introduced, allowing to specify a custom shell to be used.
774        </para>
775       </listitem>
776     </itemizedlist>
777    </listitem>
778    <listitem>
779     <para>
780      The <literal>citrix_workspace_19_3_0</literal> package has been removed as
781      it will be EOLed within the lifespan of 20.03. For further information,
782      please refer to the <link xlink:href="https://www.citrix.com/de-de/support/product-lifecycle/milestones/receiver.html">support and maintenance information</link> from upstream.
783     </para>
784    </listitem>
785    <listitem>
786     <para>
787      The <literal>gcc5</literal> and <literal>gfortran5</literal> packages have been removed.
788     </para>
789    </listitem>
790    <listitem>
791     <para>
792      The <option>services.xserver.displayManager.auto</option> module has been removed.
793      It was only intended for use in internal NixOS tests, and gave the false impression
794      of it being a special display manager when it's actually LightDM.
795      Please use the <xref linkend="opt-services.xserver.displayManager.lightdm.autoLogin"/> options instead,
796      or any other display manager in NixOS as they all support auto-login. If you used this module specifically
797      because it permitted root auto-login you can override the lightdm-autologin pam module like:
798 <programlisting>
799 <link xlink:href="#opt-security.pam.services._name__.text">security.pam.services.lightdm-autologin.text</link> = lib.mkForce ''
800     auth     requisite pam_nologin.so
801     auth     required  pam_succeed_if.so quiet
802     auth     required  pam_permit.so
804     account  include   lightdm
806     password include   lightdm
808     session  include   lightdm
810 </programlisting>
811      The difference is the:
812 <programlisting>
813 auth required pam_succeed_if.so quiet
814 </programlisting>
815      line, where default it's:
816 <programlisting>
817 auth required pam_succeed_if.so uid >= 1000 quiet
818 </programlisting>
819      not permitting users with uid's below 1000 (like root).
820      All other display managers in NixOS are configured like this.
821     </para>
822    </listitem>
823    <listitem>
824      <para>
825        There have been lots of improvements to the Mailman module.  As
826        a result,
827      </para>
828      <itemizedlist>
829        <listitem>
830          <para>
831            The <option>services.mailman.hyperkittyBaseUrl</option>
832            option has been renamed to <xref
833            linkend="opt-services.mailman.hyperkitty.baseUrl"/>.
834          </para>
835        </listitem>
836        <listitem>
837          <para>
838            The <option>services.mailman.hyperkittyApiKey</option>
839            option has been removed.  This is because having an option
840            for the Hyperkitty API key meant that the API key would be
841            stored in the world-readable Nix store, which was a
842            security vulnerability.  A new Hyperkitty API key will be
843            generated the first time the new Hyperkitty service is run,
844            and it will then be persisted outside of the Nix store.  To
845            continue using Hyperkitty, you must set <xref
846            linkend="opt-services.mailman.hyperkitty.enable"/> to
847            <literal>true</literal>.
848          </para>
849        </listitem>
850        <listitem>
851          <para>
852            Additionally, some Postfix configuration must now be set
853            manually instead of automatically by the Mailman module:
854 <programlisting>
855 <xref linkend="opt-services.postfix.relayDomains"/> = [ "hash:/var/lib/mailman/data/postfix_domains" ];
856 <xref linkend="opt-services.postfix.config"/>.transport_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ];
857 <xref linkend="opt-services.postfix.config"/>.local_recipient_maps = [ "hash:/var/lib/mailman/data/postfix_lmtp" ];
858 </programlisting>
859            This is because some users may want to include other values
860            in these lists as well, and this was not possible if they
861            were set automatically by the Mailman module.  It would not
862            have been possible to just concatenate values from multiple
863            modules each setting the values they needed, because the
864            order of elements in the list is significant.
865          </para>
866        </listitem>
867      </itemizedlist>
868    </listitem>
869    <listitem>
870     <para>The LLVM versions 3.5, 3.9 and 4 (including the corresponding CLang versions) have been dropped.</para>
871    </listitem>
872    <listitem>
873     <para>
874      The <option>networking.interfaces.*.preferTempAddress</option> option has
875      been replaced by <option>networking.interfaces.*.tempAddress</option>.
876      The new option allows better control of the IPv6 temporary addresses,
877      including completely disabling them for interfaces where they are not
878      needed.
879     </para>
880    </listitem>
881    <listitem>
882      <para>
883        Rspamd was updated to version 2.2. Read
884        <link xlink:href="https://rspamd.com/doc/migration.html#migration-to-rspamd-20">
885        the upstream migration notes</link> carefully. Please be especially
886        aware that some modules were removed and the default Bayes backend is
887        now Redis.
888      </para>
889    </listitem>
890    <listitem>
891     <para>
892      The <literal>*psu</literal> versions of <package>oraclejdk8</package> have been removed
893      as they aren't provided by upstream anymore.
894     </para>
895    </listitem>
896    <listitem>
897     <para>
898      The <option>services.dnscrypt-proxy</option> module has been removed
899      as it used the deprecated version of dnscrypt-proxy. We've added
900      <xref linkend="opt-services.dnscrypt-proxy2.enable"/> to use the supported version.
901      This module supports configuration via the Nix attribute set
902      <xref linkend="opt-services.dnscrypt-proxy2.settings" />, or by passing a TOML configuration file via
903      <xref linkend="opt-services.dnscrypt-proxy2.configFile" />.
904 <programlisting>
905 # Example configuration:
906 services.dnscrypt-proxy2.enable = true;
907 services.dnscrypt-proxy2.settings = {
908   listen_addresses = [ "127.0.0.1:43" ];
909   sources.public-resolvers = {
910     urls = [ "https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md" ];
911     cache_file = "public-resolvers.md";
912     minisign_key = "RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3";
913     refresh_delay = 72;
914   };
917 services.dnsmasq.enable = true;
918 services.dnsmasq.servers = [ "127.0.0.1#43" ];
919 </programlisting>
920     </para>
921    </listitem>
922    <listitem>
923     <para>
924      <literal>qesteidutil</literal> has been deprecated in favor of <literal>qdigidoc</literal>.
925     </para>
926    </listitem>
927    <listitem>
928     <para>
929      <package>sqldeveloper_18</package> has been removed as it's not maintained anymore,
930      <package>sqldeveloper</package> has been updated to version <literal>19.4</literal>.
931      Please note that this means that this means that the <package>oraclejdk</package> is now
932      required. For further information please read the
933      <link xlink:href="https://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/sqldev-relnotes-194-5908846.html">release notes</link>.
934     </para>
935    </listitem>
936    <listitem>
937     <para>
938       Haskell <varname>env</varname> and <varname>shellFor</varname> dev shell environments now organized dependencies the same way as regular builds.
939       In particular, rather than receiving all the different lists of dependencies master together as one big lists, and then partitioning into Haskell and non-Hakell dependencies, they work from the original many different dependency parameters and don't need to algorithmically partition anything.
940     </para>
941     <para>
942       This means that if you incorrectly categorize a dependency, e.g. non-Haskell library dependency as a <varname>buildDepends</varname> or run-time Haskell dependency as a <varname>setupDepends</varname>, whereas things would have worked before they may not work now.
943     </para>
944    </listitem>
945    <listitem>
946     <para>
947      The <package>gcc-snapshot</package>-package has been removed. It's marked as broken for &gt;2 years and used to point
948      to a fairly old snapshot  from the <package>gcc7</package>-branch.
949     </para>
950    </listitem>
951    <listitem>
952     <para>
953      The <citerefentry><refentrytitle>nixos-build-vms</refentrytitle><manvolnum>8</manvolnum>
954      </citerefentry>-script now uses the python test-driver.
955     </para>
956    </listitem>
957    <listitem>
958     <para>
959      The <package>riot-web</package> package now accepts configuration overrides as an attribute set instead of a string.
960      A formerly used JSON configuration can be converted to an attribute set with <literal>builtins.fromJSON</literal>.
961     </para>
962     <para>
963      The new default configuration also disables automatic guest account registration and analytics to improve privacy.
964      The previous behavior can be restored by setting <literal>config.riot-web.conf = { disable_guests = false; piwik = true; }</literal>.
965     </para>
966    </listitem>
967    <listitem>
968      <para>
969        Stand-alone usage of <literal>Upower</literal> now requires
970        <option>services.upower.enable</option> instead of just installing into
971        <xref linkend="opt-environment.systemPackages"/>.
972      </para>
973    </listitem>
974    <listitem>
975     <para>
976      <package>nextcloud</package> has been updated to <literal>v18.0.2</literal>. This means
977      that users from NixOS 19.09 can't upgrade directly since you can only move one version
978       forward and 19.09 uses <literal>v16.0.8</literal>.
979     </para>
980     <para>
981      To provide a safe upgrade-path and to circumvent similar issues in the future, the following
982      measures were taken:
983      <itemizedlist>
984       <listitem>
985        <para>
986         The <package>pkgs.nextcloud</package>-attribute has been removed and replaced with
987         versioned attributes (currently <package>pkgs.nextcloud17</package> and
988         <package>pkgs.nextcloud18</package>). With this change major-releases can be backported
989         without breaking stuff and to make upgrade-paths easier.
990        </para>
991       </listitem>
992       <listitem>
993        <para>
994         Existing setups will be detected using
995         <link linkend="opt-system.stateVersion">system.stateVersion</link>: by default,
996         <package>nextcloud17</package> will be used, but will raise a warning which notes
997         that after that deploy it's recommended to update to the latest stable version
998         (<package>nextcloud18</package>) by declaring the newly introduced setting
999         <link linkend="opt-services.nextcloud.package">services.nextcloud.package</link>.
1000        </para>
1001       </listitem>
1002       <listitem>
1003        <para>
1004         Users with an overlay (e.g. to use <package>nextcloud</package> at version
1005         <literal>v18</literal> on <literal>19.09</literal>) will get an evaluation error
1006         by default. This is done to ensure that our
1007         <link linkend="opt-services.nextcloud.package">package</link>-option doesn't select an
1008         older version by accident. It's recommended to use <package>pkgs.nextcloud18</package>
1009         or to set <link linkend="opt-services.nextcloud.package">package</link> to
1010         <package>pkgs.nextcloud</package> explicitly.
1011        </para>
1012       </listitem>
1013      </itemizedlist>
1014     </para>
1015     <warning>
1016      <para>
1017       Please note that if you're coming from <literal>19.03</literal> or older, you have
1018       to manually upgrade to <literal>19.09</literal> first to upgrade your server
1019       to Nextcloud v16.
1020      </para>
1021     </warning>
1022    </listitem>
1023    <listitem>
1024     <para>
1025      <package>Hydra</package> has gained a massive performance improvement due to
1026      <link xlink:href="https://github.com/NixOS/hydra/pull/710">some database schema
1027      changes</link> by adding several IDs and better indexing. However, it's necessary
1028      to upgrade Hydra in multiple steps:
1029      <itemizedlist>
1030       <listitem>
1031        <para>
1032         At first, an older version of Hydra needs to be deployed which adds those
1033         (nullable) columns. When having set <link linkend="opt-system.stateVersion">stateVersion
1034         </link> to a value older than <literal>20.03</literal>, this package will be selected
1035         by default from the module when upgrading. Otherwise, the package can be deployed using
1036         the following config:
1037 <programlisting>{ pkgs, ... }: {
1038   <link linkend="opt-services.hydra.package">services.hydra.package</link> = pkgs.hydra-migration;
1039 }</programlisting>
1040        </para>
1041       </listitem>
1042       <listitem>
1043        <para>
1044         Automatically fill the newly added ID columns on the server by running the following
1045         command:
1046 <screen>
1047 <prompt>$ </prompt>hydra-backfill-ids
1048 </screen>
1049         <warning>
1050          <para>Please note that this process can take a while depending on your database-size!</para>
1051         </warning>
1052        </para>
1053       </listitem>
1054       <listitem>
1055        <para>
1056         Deploy a newer version of Hydra to activate the DB optimizations. This can be done by
1057         using <package>hydra-unstable</package>. This package already includes
1058         <link xlink:href="https://github.com/nixos/rfcs/pull/49">flake-support</link> and is
1059         therefore compiled against <package>pkgs.nixFlakes</package>.
1060         <warning>
1061          <para>
1062           If your <link linkend="opt-system.stateVersion">stateVersion</link> is set to
1063           <literal>20.03</literal> or greater, <package>hydra-unstable</package> will be used
1064           automatically! This will break your setup if you didn't run the migration.
1065          </para>
1066         </warning>
1067         Please note that Hydra is currently not available with <package>nixStable</package>
1068         as this doesn't compile anymore.
1069        </para>
1070       </listitem>
1071      </itemizedlist>
1072      <warning>
1073       <para>
1074        <package>pkgs.hydra</package> has been removed to ensure a graceful database-migration
1075        using the dedicated package-attributes. If you still have <package>pkgs.hydra</package>
1076        defined in e.g. an overlay, an assertion error will be thrown. To circumvent this,
1077        you need to set <xref linkend="opt-services.hydra.package" /> to <package>pkgs.hydra</package>
1078        explicitly and make sure you know what you're doing!
1079       </para>
1080      </warning>
1081     </para>
1082    </listitem>
1083    <listitem>
1084      <para>
1085        The TokuDB storage engine will be disabled in <package>mariadb</package> 10.5. It is recommended to switch
1086        to RocksDB. See also <link xlink:href="https://mariadb.com/kb/en/tokudb/">TokuDB</link>.
1087      </para>
1088    </listitem>
1089   </itemizedlist>
1090  </section>
1092  <section xmlns="http://docbook.org/ns/docbook"
1093          xmlns:xlink="http://www.w3.org/1999/xlink"
1094          xmlns:xi="http://www.w3.org/2001/XInclude"
1095          version="5.0"
1096          xml:id="sec-release-20.03-notable-changes">
1097   <title>Other Notable Changes</title>
1099   <itemizedlist>
1100    <listitem>
1101      <para>SD images are now compressed by default using <literal>bzip2</literal>.</para>
1102    </listitem>
1103    <listitem>
1104     <para>
1105      The nginx web server previously started its master process as root
1106      privileged, then ran worker processes as a less privileged identity user
1107      (the <literal>nginx</literal> user).
1108      This was changed to start all of nginx as a less privileged user (defined by
1109      <literal>services.nginx.user</literal> and
1110      <literal>services.nginx.group</literal>). As a consequence, all files that
1111      are needed for nginx to run (included configuration fragments, SSL
1112      certificates and keys, etc.) must now be readable by this less privileged
1113      user/group.
1114     </para>
1115     <para>
1116      To continue to use the old approach, you can configure:
1117       <programlisting>
1118 services.nginx.appendConfig = let cfg = config.services.nginx; in ''user ${cfg.user} ${cfg.group};'';
1119 systemd.services.nginx.serviceConfig.User = lib.mkForce "root";
1120       </programlisting>
1121     </para>
1122    </listitem>
1123    <listitem>
1124     <para>
1125      OpenSSH has been upgraded from 7.9 to 8.1, improving security and adding features
1126      but with potential incompatibilities.  Consult the
1127      <link xlink:href="https://www.openssh.com/txt/release-8.1">
1128      release announcement</link> for more information.
1129     </para>
1130    </listitem>
1131    <listitem>
1132      <para>
1133        <literal>PRETTY_NAME</literal> in <literal>/etc/os-release</literal>
1134        now uses the short rather than full version string.
1135      </para>
1136    </listitem>
1137    <listitem>
1138     <para>
1139      The ACME module has switched from simp-le to <link xlink:href="https://github.com/go-acme/lego">lego</link>
1140      which allows us to support DNS-01 challenges and wildcard certificates. The following options have been added:
1141      <link linkend="opt-security.acme.acceptTerms">security.acme.acceptTerms</link>,
1142      <link linkend="opt-security.acme.certs">security.acme.certs.&lt;name&gt;.dnsProvider</link>,
1143      <link linkend="opt-security.acme.certs">security.acme.certs.&lt;name&gt;.credentialsFile</link>,
1144      <link linkend="opt-security.acme.certs">security.acme.certs.&lt;name&gt;.dnsPropagationCheck</link>.
1145      As well as this, the options <literal>security.acme.acceptTerms</literal> and either
1146      <literal>security.acme.email</literal> or <literal>security.acme.certs.&lt;name&gt;.email</literal>
1147      must be set in order to use the ACME module.
1148      Certificates will be regenerated on activation, no account or certificate will be migrated from simp-le.
1149      In particular private keys will not be preserved. However, the credentials for simp-le are preserved and
1150      thus it is possible to roll back to previous versions without breaking certificate generation.
1151      Note also that in contrary to simp-le a new private key is recreated at each renewal by default, which can
1152      have consequences if you embed your public key in apps.
1153     </para>
1154    </listitem>
1155    <listitem>
1156     <para>
1157     It is now possible to unlock LUKS-Encrypted file systems using a FIDO2 token
1158     via <option>boot.initrd.luks.fido2Support</option>.
1159     </para>
1160    </listitem>
1161    <listitem>
1162     <para>
1163      Predictably named network interfaces get renamed in stage-1. This means that it is possible
1164      to use the proper interface name for e.g. Dropbear setups.
1165     </para>
1166     <para>
1167      For further reference, please read <link xlink:href="https://github.com/NixOS/nixpkgs/pull/68953">#68953</link> or the corresponding <link xlink:href="https://discourse.nixos.org/t/predictable-network-interface-names-in-initrd/4055">discourse thread</link>.
1168     </para>
1169    </listitem>
1170    <listitem>
1171     <para>
1172      The <package>matrix-synapse</package>-package has been updated to
1173      <link xlink:href="https://github.com/matrix-org/synapse/releases/tag/v1.11.1">v1.11.1</link>.
1174      Due to <link xlink:href="https://github.com/matrix-org/synapse/releases/tag/v1.10.0rc1">stricter requirements</link>
1175      for database configuration when using <package>postgresql</package>, the automated database setup
1176      of the module has been removed to avoid any further edge-cases.
1177     </para>
1178     <para>
1179      <package>matrix-synapse</package> expects <literal>postgresql</literal>-databases to have the options
1180      <literal>LC_COLLATE</literal> and <literal>LC_CTYPE</literal> set to
1181      <link xlink:href="https://www.postgresql.org/docs/12/locale.html"><literal>'C'</literal></link> which basically
1182      instructs <literal>postgresql</literal> to ignore any locale-based preferences.
1183     </para>
1184     <para>
1185      Depending on your setup, you need to incorporate one of the following changes in your setup to
1186      upgrade to 20.03:
1187      <itemizedlist>
1188       <listitem><para>If you use <literal>sqlite3</literal> you don't need to do anything.</para></listitem>
1189       <listitem><para>If you use <literal>postgresql</literal> on a different server, you don't need
1190        to change anything as well since this module was never designed to configure remote databases.
1191       </para></listitem>
1192       <listitem><para>If you use <literal>postgresql</literal> and configured your synapse initially on
1193        <literal>19.09</literal> or older, you simply need to enable <package>postgresql</package>-support
1194         explicitly:
1195 <programlisting>{ ... }: {
1196   services.matrix-synapse = {
1197     <link linkend="opt-services.matrix-synapse.enable">enable</link> = true;
1198     /* and all the other config you've defined here */
1199   };
1200   <link linkend="opt-services.postgresql.enable">services.postgresql.enable</link> = true;
1201 }</programlisting>
1202       </para></listitem>
1203       <listitem><para>If you deploy a fresh <package>matrix-synapse</package>, you need to configure
1204        the database yourself (e.g. by using the
1205        <link linkend="opt-services.postgresql.initialScript">services.postgresql.initialScript</link>
1206        option). An example for this can be found in the
1207        <link linkend="module-services-matrix">documentation of the Matrix module</link>.
1208       </para></listitem>
1209       <listitem><para>If you initially deployed your <package>matrix-synapse</package> on
1210        <literal>nixos-unstable</literal> <emphasis>after</emphasis> the <literal>19.09</literal>-release,
1211        your database is misconfigured due to a regression in NixOS. For now, <package>matrix-synapse</package> will
1212        startup with a warning, but it's recommended to reconfigure the database to set the values
1213        <literal>LC_COLLATE</literal> and <literal>LC_CTYPE</literal> to
1214        <link xlink:href="https://www.postgresql.org/docs/12/locale.html"><literal>'C'</literal></link>.
1215       </para></listitem>
1216      </itemizedlist>
1217     </para>
1218   </listitem>
1219   <listitem>
1220    <para>
1221     The <link linkend="opt-systemd.network.links">systemd.network.links</link> option is now respected
1222     even when <link linkend="opt-systemd.network.enable">systemd-networkd</link> is disabled.
1223     This mirrors the behaviour of systemd - It's udev that parses <literal>.link</literal> files,
1224     not <command>systemd-networkd</command>.
1225    </para>
1226   </listitem>
1227   <listitem>
1228    <para>
1229     <package>mongodb</package> has been updated to version <literal>3.4.24</literal>.
1230     <warning>
1231      <para>
1232       Please note that <package>mongodb</package> has been relicensed under their own
1233       <link xlink:href="https://www.mongodb.com/licensing/server-side-public-license/faq"><literal>
1234       sspl</literal></link>-license. Since it's not entirely free and not OSI-approved,
1235       it's listed as non-free. This means that Hydra doesn't provide prebuilt
1236       <package>mongodb</package>-packages and needs to be built locally.
1237      </para>
1238     </warning>
1239    </para>
1240   </listitem>
1241   </itemizedlist>
1242  </section>
1243 </section>