1# Release 16.03 ("Emu", 2016/03/31) {#sec-release-16.03}
2
3In addition to numerous new and upgraded packages, this release has the following highlights:
4
5- Systemd 229, bringing [numerous improvements](https://github.com/systemd/systemd/blob/v229/NEWS) over 217.
6
7- Linux 4.4 (was 3.18).
8
9- GCC 5.3 (was 4.9). Note that GCC 5 [changes the C++ ABI in an incompatible way](https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html); this may cause problems if you try to link objects compiled with different versions of GCC.
10
11- Glibc 2.23 (was 2.21).
12
13- Binutils 2.26 (was 2.23.1). See \#909
14
15- Improved support for ensuring [bitwise reproducible builds](https://reproducible-builds.org/). For example, `stdenv` now sets the environment variable `SOURCE_DATE_EPOCH` to a deterministic value, and Nix has [gained an option](https://nixos.org/nix/manual/#ssec-relnotes-1.11) to repeat a build a number of times to test determinism. An ongoing project, the goal of exact reproducibility is to allow binaries to be verified independently (e.g., a user might only trust binaries that appear in three independent binary caches).
16
17- Perl 5.22.
18
19The following new services were added since the last release:
20
21- `services/monitoring/longview.nix`
22
23- `hardware/video/webcam/facetimehd.nix`
24
25- `i18n/input-method/default.nix`
26
27- `i18n/input-method/fcitx.nix`
28
29- `i18n/input-method/ibus.nix`
30
31- `i18n/input-method/nabi.nix`
32
33- `i18n/input-method/uim.nix`
34
35- `programs/fish.nix`
36
37- `security/acme.nix`
38
39- `security/audit.nix`
40
41- `security/oath.nix`
42
43- `services/hardware/irqbalance.nix`
44
45- `services/mail/dspam.nix`
46
47- `services/mail/opendkim.nix`
48
49- `services/mail/postsrsd.nix`
50
51- `services/mail/rspamd.nix`
52
53- `services/mail/rmilter.nix`
54
55- `services/misc/autofs.nix`
56
57- `services/misc/bepasty.nix`
58
59- `services/misc/calibre-server.nix`
60
61- `services/misc/cfdyndns.nix`
62
63- `services/misc/gammu-smsd.nix`
64
65- `services/misc/mathics.nix`
66
67- `services/misc/matrix-synapse.nix`
68
69- `services/misc/octoprint.nix`
70
71- `services/monitoring/hdaps.nix`
72
73- `services/monitoring/heapster.nix`
74
75- `services/monitoring/longview.nix`
76
77- `services/network-filesystems/netatalk.nix`
78
79- `services/network-filesystems/xtreemfs.nix`
80
81- `services/networking/autossh.nix`
82
83- `services/networking/dnschain.nix`
84
85- `services/networking/gale.nix`
86
87- `services/networking/miniupnpd.nix`
88
89- `services/networking/namecoind.nix`
90
91- `services/networking/ostinato.nix`
92
93- `services/networking/pdnsd.nix`
94
95- `services/networking/shairport-sync.nix`
96
97- `services/networking/supplicant.nix`
98
99- `services/search/kibana.nix`
100
101- `services/security/haka.nix`
102
103- `services/security/physlock.nix`
104
105- `services/web-apps/pump.io.nix`
106
107- `services/x11/hardware/libinput.nix`
108
109- `services/x11/window-managers/windowlab.nix`
110
111- `system/boot/initrd-network.nix`
112
113- `system/boot/initrd-ssh.nix`
114
115- `system/boot/loader/loader.nix`
116
117- `system/boot/networkd.nix`
118
119- `system/boot/resolved.nix`
120
121- `virtualisation/lxd.nix`
122
123- `virtualisation/rkt.nix`
124
125When upgrading from a previous release, please be aware of the following incompatible changes:
126
127- We no longer produce graphical ISO images and VirtualBox images for `i686-linux`. A minimal ISO image is still provided.
128
129- Firefox and similar browsers are now _wrapped by default_. The package and attribute names are plain `firefox` or `midori`, etc. Backward-compatibility attributes were set up, but note that `nix-env -u` will _not_ update your current `firefox-with-plugins`; you have to uninstall it and install `firefox` instead.
130
131- `wmiiSnap` has been replaced with `wmii_hg`, but `services.xserver.windowManager.wmii.enable` has been updated respectively so this only affects you if you have explicitly installed `wmiiSnap`.
132
133- `jobs` NixOS option has been removed. It served as compatibility layer between Upstart jobs and SystemD services. All services have been rewritten to use `systemd.services`
134
135- `wmiimenu` is removed, as it has been removed by the developers upstream. Use `wimenu` from the `wmii-hg` package.
136
137- Gitit is no longer automatically added to the module list in NixOS and as such there will not be any manual entries for it. You will need to add an import statement to your NixOS configuration in order to use it, e.g.
138
139 ```nix
140 { imports = [ <nixpkgs/nixos/modules/services/misc/gitit.nix> ]; }
141 ```
142
143 will include the Gitit service configuration options.
144
145- `nginx` does not accept flags for enabling and disabling modules anymore. Instead it accepts `modules` argument, which is a list of modules to be built in. All modules now reside in `nginxModules` set. Example configuration:
146
147 ```nix
148 nginx.override {
149 modules = [
150 nginxModules.rtmp
151 nginxModules.dav
152 nginxModules.moreheaders
153 ];
154 }
155 ```
156
157- `s3sync` is removed, as it hasn't been developed by upstream for 4 years and only runs with ruby 1.8. For an actively-developer alternative look at `tarsnap` and others.
158
159- `ruby_1_8` has been removed as it's not supported from upstream anymore and probably contains security issues.
160
161- `tidy-html5` package is removed. Upstream only provided `(lib)tidy5` during development, and now they went back to `(lib)tidy` to work as a drop-in replacement of the original package that has been unmaintained for years. You can (still) use the `html-tidy` package, which got updated to a stable release from this new upstream.
162
163- `extraDeviceOptions` argument is removed from `bumblebee` package. Instead there are now two separate arguments: `extraNvidiaDeviceOptions` and `extraNouveauDeviceOptions` for setting extra X11 options for nvidia and nouveau drivers, respectively.
164
165- The `Ctrl+Alt+Backspace` key combination no longer kills the X server by default. There's a new option `services.xserver.enableCtrlAltBackspace` allowing to enable the combination again.
166
167- `emacsPackagesNg` now contains all packages from the ELPA, MELPA, and MELPA Stable repositories.
168
169- Data directory for Postfix MTA server is moved from `/var/postfix` to `/var/lib/postfix`. Old configurations are migrated automatically. `service.postfix` module has also received many improvements, such as correct directories' access rights, new `aliasFiles` and `mapFiles` options and more.
170
171- Filesystem options should now be configured as a list of strings, not a comma-separated string. The old style will continue to work, but print a warning, until the 16.09 release. An example of the new style:
172
173 ```nix
174 {
175 fileSystems."/example" = {
176 device = "/dev/sdc";
177 fsType = "btrfs";
178 options = [
179 "noatime"
180 "compress=lzo"
181 "space_cache"
182 "autodefrag"
183 ];
184 };
185 }
186 ```
187
188- CUPS, installed by `services.printing` module, now has its data directory in `/var/lib/cups`. Old configurations from `/etc/cups` are moved there automatically, but there might be problems. Also configuration options `services.printing.cupsdConf` and `services.printing.cupsdFilesConf` were removed because they had been allowing one to override configuration variables required for CUPS to work at all on NixOS. For most use cases, `services.printing.extraConf` and new option `services.printing.extraFilesConf` should be enough; if you encounter a situation when they are not, please file a bug.
189
190 There are also Gutenprint improvements; in particular, a new option `services.printing.gutenprint` is added to enable automatic updating of Gutenprint PPMs; it's greatly recommended to enable it instead of adding `gutenprint` to the `drivers` list.
191
192- `services.xserver.vaapiDrivers` has been removed. Use `hardware.opengl.extraPackages{,32}` instead. You can also specify VDPAU drivers there.
193
194- `programs.ibus` moved to `i18n.inputMethod.ibus`. The option `programs.ibus.plugins` changed to `i18n.inputMethod.ibus.engines` and the option to enable ibus changed from `programs.ibus.enable` to `i18n.inputMethod.enabled`. `i18n.inputMethod.enabled` should be set to the used input method name, `"ibus"` for ibus. An example of the new style:
195
196 ```nix
197 {
198 i18n.inputMethod.enabled = "ibus";
199 i18n.inputMethod.ibus.engines = with pkgs.ibus-engines; [
200 anthy
201 mozc
202 ];
203 }
204 ```
205
206 That is equivalent to the old version:
207
208 ```nix
209 {
210 programs.ibus.enable = true;
211 programs.ibus.plugins = with pkgs; [
212 ibus-anthy
213 mozc
214 ];
215 }
216 ```
217
218- `services.udev.extraRules` option now writes rules to `99-local.rules` instead of `10-local.rules`. This makes all the user rules apply after others, so their results wouldn't be overridden by anything else.
219
220- Large parts of the `services.gitlab` module has been been rewritten. There are new configuration options available. The `stateDir` option was renamned to `statePath` and the `satellitesDir` option was removed. Please review the currently available options.
221
222- The option `services.nsd.zones.<name>.data` no longer interpret the dollar sign (\$) as a shell variable, as such it should not be escaped anymore. Thus the following zone data:
223
224 ```dns-zone
225 $ORIGIN example.com.
226 $TTL 1800
227 @ IN SOA ns1.vpn.nbp.name. admin.example.com. (
228
229 ```
230
231 Should modified to look like the actual file expected by nsd:
232
233 ```dns-zone
234 $ORIGIN example.com.
235 $TTL 1800
236 @ IN SOA ns1.vpn.nbp.name. admin.example.com. (
237
238 ```
239
240- `service.syncthing.dataDir` options now has to point to exact folder where syncthing is writing to. Example configuration should look something like:
241
242 ```nix
243 {
244 services.syncthing = {
245 enable = true;
246 dataDir = "/home/somebody/.syncthing";
247 user = "somebody";
248 };
249 }
250 ```
251
252- `networking.firewall.allowPing` is now enabled by default. Users are encouraged to configure an appropriate rate limit for their machines using the Kernel interface at `/proc/sys/net/ipv4/icmp_ratelimit` and `/proc/sys/net/ipv6/icmp/ratelimit` or using the firewall itself, i.e. by setting the NixOS option `networking.firewall.pingLimit`.
253
254- Systems with some broadcom cards used to result into a generated config that is no longer accepted. If you get errors like
255
256 ```ShellSession
257 error: path ‘/nix/store/*-broadcom-sta-*’ does not exist and cannot be created
258 ```
259
260 you should either re-run `nixos-generate-config` or manually replace `"${config.boot.kernelPackages.broadcom_sta}"` by `config.boot.kernelPackages.broadcom_sta` in your `/etc/nixos/hardware-configuration.nix`. More discussion is on [ the github issue](https://github.com/NixOS/nixpkgs/pull/12595).
261
262- The `services.xserver.startGnuPGAgent` option has been removed. GnuPG 2.1.x changed the way the gpg-agent works, and that new approach no longer requires (or even supports) the "start everything as a child of the agent" scheme we've implemented in NixOS for older versions. To configure the gpg-agent for your X session, add the following code to `~/.bashrc` or some file that's sourced when your shell is started:
263
264 ```shell
265 GPG_TTY=$(tty)
266 export GPG_TTY
267 ```
268
269 If you want to use gpg-agent for SSH, too, add the following to your session initialization (e.g. `displayManager.sessionCommands`)
270
271 ```shell
272 gpg-connect-agent /bye
273 unset SSH_AGENT_PID
274 export SSH_AUTH_SOCK="''${HOME}/.gnupg/S.gpg-agent.ssh"
275 ```
276
277 and make sure that
278
279 ```conf
280 enable-ssh-support
281 ```
282
283 is included in your `~/.gnupg/gpg-agent.conf`. You will need to use `ssh-add` to re-add your ssh keys. If gpg's automatic transformation of the private keys to the new format fails, you will need to re-import your private keyring as well:
284
285 ```ShellSession
286 gpg --import ~/.gnupg/secring.gpg
287 ```
288
289 The `gpg-agent(1)` man page has more details about this subject, i.e. in the "EXAMPLES" section.
290
291Other notable improvements:
292
293- `ejabberd` module is brought back and now works on NixOS.
294
295- Input method support was improved. New NixOS modules (fcitx, nabi and uim), fcitx engines (chewing, hangul, m17n, mozc and table-other) and ibus engines (hangul and m17n) have been added.