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.