1# Release 17.03 ("Gorilla", 2017/03/31) {#sec-release-17.03}
2
3## Highlights {#sec-release-17.03-highlights}
4
5In addition to numerous new and upgraded packages, this release has the following highlights:
6
7- Nixpkgs is now extensible through overlays. See the [Nixpkgs manual](https://nixos.org/nixpkgs/manual/#sec-overlays-install) for more information.
8
9- This release is based on Glibc 2.25, GCC 5.4.0 and systemd 232. The default Linux kernel is 4.9 and Nix is at 1.11.8.
10
11- The default desktop environment now is KDE's Plasma 5. KDE 4 has been removed
12
13- The setuid wrapper functionality now supports setting capabilities.
14
15- X.org server uses branch 1.19. Due to ABI incompatibilities, `ati_unfree` keeps forcing 1.17 and `amdgpu-pro` starts forcing 1.18.
16
17- Cross compilation has been rewritten. See the nixpkgs manual for details. The most obvious breaking change is that in derivations there is no `.nativeDrv` nor `.crossDrv` are now cross by default, not native.
18
19- The `overridePackages` function has been rewritten to be replaced by [ overlays](https://nixos.org/nixpkgs/manual/#sec-overlays-install)
20
21- Packages in nixpkgs can be marked as insecure through listed vulnerabilities. See the [Nixpkgs manual](https://nixos.org/nixpkgs/manual/#sec-allow-insecure) for more information.
22
23- PHP now defaults to PHP 7.1
24
25## New Services {#sec-release-17.03-new-services}
26
27The following new services were added since the last release:
28
29- `hardware/ckb.nix`
30
31- `hardware/mcelog.nix`
32
33- `hardware/usb-wwan.nix`
34
35- `hardware/video/capture/mwprocapture.nix`
36
37- `programs/adb.nix`
38
39- `programs/chromium.nix`
40
41- `programs/gphoto2.nix`
42
43- `programs/java.nix`
44
45- `programs/mtr.nix`
46
47- `programs/oblogout.nix`
48
49- `programs/vim.nix`
50
51- `programs/wireshark.nix`
52
53- `security/dhparams.nix`
54
55- `services/audio/ympd.nix`
56
57- `services/computing/boinc/client.nix`
58
59- `services/continuous-integration/buildbot/master.nix`
60
61- `services/continuous-integration/buildbot/worker.nix`
62
63- `services/continuous-integration/gitlab-runner.nix`
64
65- `services/databases/riak-cs.nix`
66
67- `services/databases/stanchion.nix`
68
69- `services/desktops/gnome3/gnome-terminal-server.nix`
70
71- `services/editors/infinoted.nix`
72
73- `services/hardware/illum.nix`
74
75- `services/hardware/trezord.nix`
76
77- `services/logging/journalbeat.nix`
78
79- `services/mail/offlineimap.nix`
80
81- `services/mail/postgrey.nix`
82
83- `services/misc/couchpotato.nix`
84
85- `services/misc/docker-registry.nix`
86
87- `services/misc/errbot.nix`
88
89- `services/misc/geoip-updater.nix`
90
91- `services/misc/gogs.nix`
92
93- `services/misc/leaps.nix`
94
95- `services/misc/nix-optimise.nix`
96
97- `services/misc/ssm-agent.nix`
98
99- `services/misc/sssd.nix`
100
101- `services/monitoring/arbtt.nix`
102
103- `services/monitoring/netdata.nix`
104
105- `services/monitoring/prometheus/default.nix`
106
107- `services/monitoring/prometheus/alertmanager.nix`
108
109- `services/monitoring/prometheus/blackbox-exporter.nix`
110
111- `services/monitoring/prometheus/json-exporter.nix`
112
113- `services/monitoring/prometheus/nginx-exporter.nix`
114
115- `services/monitoring/prometheus/node-exporter.nix`
116
117- `services/monitoring/prometheus/snmp-exporter.nix`
118
119- `services/monitoring/prometheus/unifi-exporter.nix`
120
121- `services/monitoring/prometheus/varnish-exporter.nix`
122
123- `services/monitoring/sysstat.nix`
124
125- `services/monitoring/telegraf.nix`
126
127- `services/monitoring/vnstat.nix`
128
129- `services/network-filesystems/cachefilesd.nix`
130
131- `services/network-filesystems/glusterfs.nix`
132
133- `services/network-filesystems/ipfs.nix`
134
135- `services/networking/dante.nix`
136
137- `services/networking/dnscrypt-wrapper.nix`
138
139- `services/networking/fakeroute.nix`
140
141- `services/networking/flannel.nix`
142
143- `services/networking/htpdate.nix`
144
145- `services/networking/miredo.nix`
146
147- `services/networking/nftables.nix`
148
149- `services/networking/powerdns.nix`
150
151- `services/networking/pdns-recursor.nix`
152
153- `services/networking/quagga.nix`
154
155- `services/networking/redsocks.nix`
156
157- `services/networking/wireguard.nix`
158
159- `services/system/cgmanager.nix`
160
161- `services/torrent/opentracker.nix`
162
163- `services/web-apps/atlassian/confluence.nix`
164
165- `services/web-apps/atlassian/crowd.nix`
166
167- `services/web-apps/atlassian/jira.nix`
168
169- `services/web-apps/frab.nix`
170
171- `services/web-apps/nixbot.nix`
172
173- `services/web-apps/selfoss.nix`
174
175- `services/web-apps/quassel-webserver.nix`
176
177- `services/x11/unclutter-xfixes.nix`
178
179- `services/x11/urxvtd.nix`
180
181- `system/boot/systemd-nspawn.nix`
182
183- `virtualisation/ecs-agent.nix`
184
185- `virtualisation/lxcfs.nix`
186
187- `virtualisation/openstack/keystone.nix`
188
189- `virtualisation/openstack/glance.nix`
190
191## Backward Incompatibilities {#sec-release-17.03-incompatibilities}
192
193When upgrading from a previous release, please be aware of the following incompatible changes:
194
195- Derivations have no `.nativeDrv` nor `.crossDrv` and are now cross by default, not native.
196
197- `stdenv.overrides` is now expected to take `self` and `super` arguments. See `lib.trivial.extends` for what those parameters represent.
198
199- `ansible` now defaults to ansible version 2 as version 1 has been removed due to a serious [ vulnerability](https://www.computest.nl/advisories/CT-2017-0109_Ansible.txt) unpatched by upstream.
200
201- `gnome` alias has been removed along with `gtk`, `gtkmm` and several others. Now you need to use versioned attributes, like `gnome3`.
202
203- The attribute name of the Radicale daemon has been changed from `pythonPackages.radicale` to `radicale`.
204
205- The `stripHash` bash function in `stdenv` changed according to its documentation; it now outputs the stripped name to `stdout` instead of putting it in the variable `strippedName`.
206
207- PHP now scans for extra configuration .ini files in /etc/php.d instead of /etc. This prevents accidentally loading non-PHP .ini files that may be in /etc.
208
209- Two lone top-level dict dbs moved into `dictdDBs`. This affects: `dictdWordnet` which is now at `dictdDBs.wordnet` and `dictdWiktionary` which is now at `dictdDBs.wiktionary`
210
211- Parsoid service now uses YAML configuration format. `service.parsoid.interwikis` is now called `service.parsoid.wikis` and is a list of either API URLs or attribute sets as specified in parsoid's documentation.
212
213- `Ntpd` was replaced by `systemd-timesyncd` as the default service to synchronize system time with a remote NTP server. The old behavior can be restored by setting `services.ntp.enable` to `true`. Upstream time servers for all NTP implementations are now configured using `networking.timeServers`.
214
215- `service.nylon` is now declared using named instances. As an example:
216
217 ```nix
218 {
219 services.nylon = {
220 enable = true;
221 acceptInterface = "br0";
222 bindInterface = "tun1";
223 port = 5912;
224 };
225 }
226 ```
227
228 should be replaced with:
229
230 ```nix
231 {
232 services.nylon.myvpn = {
233 enable = true;
234 acceptInterface = "br0";
235 bindInterface = "tun1";
236 port = 5912;
237 };
238 }
239 ```
240
241 this enables you to declare a SOCKS proxy for each uplink.
242
243- `overridePackages` function no longer exists. It is replaced by [ overlays](https://nixos.org/nixpkgs/manual/#sec-overlays-install). For example, the following code:
244
245 ```nix
246 let
247 pkgs = import <nixpkgs> {};
248 in
249 pkgs.overridePackages (self: super: { /* ... */ })
250 ```
251
252 should be replaced by:
253
254 ```nix
255 let
256 pkgs = import <nixpkgs> {};
257 in
258 import pkgs.path { overlays = [(self: super: { /* ... */ })]; }
259 ```
260
261- Autoloading connection tracking helpers is now disabled by default. This default was also changed in the Linux kernel and is considered insecure if not configured properly in your firewall. If you need connection tracking helpers (i.e. for active FTP) please enable `networking.firewall.autoLoadConntrackHelpers` and tune `networking.firewall.connectionTrackingModules` to suit your needs.
262
263- `local_recipient_maps` is not set to empty value by Postfix service. It's an insecure default as stated by Postfix documentation. Those who want to retain this setting need to set it via `services.postfix.extraConfig`.
264
265- Iputils no longer provide ping6 and traceroute6. The functionality of these tools has been integrated into ping and traceroute respectively. To enforce an address family the new flags `-4` and `-6` have been added. One notable incompatibility is that specifying an interface (for link-local IPv6 for instance) is no longer done with the `-I` flag, but by encoding the interface into the address (`ping fe80::1%eth0`).
266
267- The socket handling of the `services.rmilter` module has been fixed and refactored. As rmilter doesn't support binding to more than one socket, the options `bindUnixSockets` and `bindInetSockets` have been replaced by `services.rmilter.bindSocket.*`. The default is still a unix socket in `/run/rmilter/rmilter.sock`. Refer to the options documentation for more information.
268
269- The `fetch*` functions no longer support md5, please use sha256 instead.
270
271- The dnscrypt-proxy module interface has been streamlined around the `extraArgs` option. Where possible, legacy option declarations are mapped to `extraArgs` but will emit warnings. The `resolverList` has been outright removed: to use an unlisted resolver, use the `customResolver` option.
272
273- torbrowser now stores local state under `~/.local/share/tor-browser` by default. Any browser profile data from the old location, `~/.torbrowser4`, must be migrated manually.
274
275- The ihaskell, monetdb, offlineimap and sitecopy services have been removed.
276
277## Other Notable Changes {#sec-release-17.03-notable-changes}
278
279- Module type system have a new extensible option types feature that allow to extend certain types, such as enum, through multiple option declarations of the same option across multiple modules.
280
281- `jre` now defaults to GTK UI by default. This improves visual consistency and makes Java follow system font style, improving the situation on HighDPI displays. This has a cost of increased closure size; for server and other headless workloads it's recommended to use `jre_headless`.
282
283- Python 2.6 interpreter and package set have been removed.
284
285- The Python 2.7 interpreter does not use modules anymore. Instead, all CPython interpreters now include the whole standard library except for \`tkinter\`, which is available in the Python package set.
286
287- Python 2.7, 3.5 and 3.6 are now built deterministically and 3.4 mostly. Minor modifications had to be made to the interpreters in order to generate deterministic bytecode. This has security implications and is relevant for those using Python in a `nix-shell`. See the Nixpkgs manual for details.
288
289- The Python package sets now use a fixed-point combinator and the sets are available as attributes of the interpreters.
290
291- The Python function `buildPythonPackage` has been improved and can be used to build from Setuptools source, Flit source, and precompiled Wheels.
292
293- When adding new or updating current Python libraries, the expressions should be put in separate files in `pkgs/development/python-modules` and called from `python-packages.nix`.
294
295- The dnscrypt-proxy service supports synchronizing the list of public resolvers without working DNS resolution. This fixes issues caused by the resolver list becoming outdated. It also improves the viability of DNSCrypt only configurations.
296
297- Containers using bridged networking no longer lose their connection after changes to the host networking.
298
299- ZFS supports pool auto scrubbing.
300
301- The bind DNS utilities (e.g. dig) have been split into their own output and are now also available in `pkgs.dnsutils` and it is no longer necessary to pull in all of `bind` to use them.
302
303- Per-user configuration was moved from `~/.nixpkgs` to `~/.config/nixpkgs`. The former is still valid for `config.nix` for backwards compatibility.