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 {
141 imports = [ <nixpkgs/nixos/modules/services/misc/gitit.nix> ];
142 }
143 ```
144
145 will include the Gitit service configuration options.
146
147- `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:
148
149 ```nix
150 nginx.override {
151 modules = [ nginxModules.rtmp nginxModules.dav nginxModules.moreheaders ];
152 }
153 ```
154
155- `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.
156
157- `ruby_1_8` has been removed as it's not supported from upstream anymore and probably contains security issues.
158
159- `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.
160
161- `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.
162
163- 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.
164
165- `emacsPackagesNg` now contains all packages from the ELPA, MELPA, and MELPA Stable repositories.
166
167- 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.
168
169- 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:
170
171 ```nix
172 {
173 fileSystems."/example" = {
174 device = "/dev/sdc";
175 fsType = "btrfs";
176 options = [ "noatime" "compress=lzo" "space_cache" "autodefrag" ];
177 };
178 }
179 ```
180
181- 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.
182
183 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.
184
185- `services.xserver.vaapiDrivers` has been removed. Use `hardware.opengl.extraPackages{,32}` instead. You can also specify VDPAU drivers there.
186
187- `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:
188
189 ```nix
190 {
191 i18n.inputMethod.enabled = "ibus";
192 i18n.inputMethod.ibus.engines = with pkgs.ibus-engines; [ anthy mozc ];
193 }
194 ```
195
196 That is equivalent to the old version:
197
198 ```nix
199 {
200 programs.ibus.enable = true;
201 programs.ibus.plugins = with pkgs; [ ibus-anthy mozc ];
202 }
203 ```
204
205- `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.
206
207- 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.
208
209- 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:
210
211 ```dns-zone
212 $ORIGIN example.com.
213 $TTL 1800
214 @ IN SOA ns1.vpn.nbp.name. admin.example.com. (
215
216 ```
217
218 Should modified to look like the actual file expected by nsd:
219
220 ```dns-zone
221 $ORIGIN example.com.
222 $TTL 1800
223 @ IN SOA ns1.vpn.nbp.name. admin.example.com. (
224
225 ```
226
227- `service.syncthing.dataDir` options now has to point to exact folder where syncthing is writing to. Example configuration should look something like:
228
229 ```nix
230 {
231 services.syncthing = {
232 enable = true;
233 dataDir = "/home/somebody/.syncthing";
234 user = "somebody";
235 };
236 }
237 ```
238
239- `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`.
240
241- Systems with some broadcom cards used to result into a generated config that is no longer accepted. If you get errors like
242
243 ```ShellSession
244 error: path ‘/nix/store/*-broadcom-sta-*’ does not exist and cannot be created
245 ```
246
247 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).
248
249- 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:
250
251 ```shell
252 GPG_TTY=$(tty)
253 export GPG_TTY
254 ```
255
256 If you want to use gpg-agent for SSH, too, add the following to your session initialization (e.g. `displayManager.sessionCommands`)
257
258 ```shell
259 gpg-connect-agent /bye
260 unset SSH_AGENT_PID
261 export SSH_AUTH_SOCK="''${HOME}/.gnupg/S.gpg-agent.ssh"
262 ```
263
264 and make sure that
265
266 ```conf
267 enable-ssh-support
268 ```
269
270 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:
271
272 ```ShellSession
273 gpg --import ~/.gnupg/secring.gpg
274 ```
275
276 The `gpg-agent(1)` man page has more details about this subject, i.e. in the "EXAMPLES" section.
277
278Other notable improvements:
279
280- `ejabberd` module is brought back and now works on NixOS.
281
282- 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.