summary refs log tree commit diff
diff options
context:
space:
mode:
authorRobin Gloster <mail@glob.in>2016-07-19 10:37:02 +0000
committerRobin Gloster <mail@glob.in>2016-07-19 10:37:02 +0000
commit203846b9de3bc67e77c93be9d111408286a17d5d (patch)
tree3306a68a635fad0de834440c25f7e1b69b1e4b10
parent6539901c7f5eeb18cf5e9a493c230a912ff27f82 (diff)
parentb54009fdfb7951bb5423c4fabcb28b70581b5ba8 (diff)
downloadnixpkgs-203846b9de3bc67e77c93be9d111408286a17d5d.tar
nixpkgs-203846b9de3bc67e77c93be9d111408286a17d5d.tar.gz
nixpkgs-203846b9de3bc67e77c93be9d111408286a17d5d.tar.bz2
nixpkgs-203846b9de3bc67e77c93be9d111408286a17d5d.tar.lz
nixpkgs-203846b9de3bc67e77c93be9d111408286a17d5d.tar.xz
nixpkgs-203846b9de3bc67e77c93be9d111408286a17d5d.tar.zst
nixpkgs-203846b9de3bc67e77c93be9d111408286a17d5d.zip
Merge remote-tracking branch 'upstream/master' into hardened-stdenv
-rw-r--r--.travis.yml20
-rw-r--r--README.md2
-rw-r--r--default.nix2
-rw-r--r--lib/maintainers.nix2
-rwxr-xr-xmaintainers/scripts/travis-nox-review-pr.sh119
-rw-r--r--nixos/modules/config/fonts/fontconfig-ultimate.nix153
-rw-r--r--nixos/modules/config/fonts/fontconfig.nix262
-rw-r--r--nixos/modules/config/pulseaudio.nix1
-rw-r--r--nixos/modules/module-list.nix3
-rw-r--r--nixos/modules/security/grsecurity.nix20
-rw-r--r--nixos/modules/services/continuous-integration/jenkins/default.nix2
-rw-r--r--nixos/modules/services/misc/cgminer.nix2
-rw-r--r--nixos/modules/services/misc/packagekit.nix61
-rw-r--r--nixos/modules/services/misc/sonarr.nix44
-rw-r--r--nixos/modules/services/monitoring/grafana.nix17
-rw-r--r--nixos/modules/services/monitoring/sysstat.nix80
-rw-r--r--nixos/modules/services/x11/compton.nix225
-rw-r--r--nixos/modules/services/x11/desktop-managers/gnome3.nix1
-rw-r--r--nixos/modules/services/x11/desktop-managers/kde5.nix50
-rw-r--r--nixos/modules/services/x11/display-managers/default.nix2
-rw-r--r--nixos/modules/services/x11/display-managers/lightdm.nix100
-rw-r--r--nixos/modules/services/x11/display-managers/sddm.nix9
-rw-r--r--nixos/modules/services/x11/hardware/libinput.nix2
-rw-r--r--nixos/modules/services/x11/redshift.nix2
-rw-r--r--nixos/modules/services/x11/unclutter.nix8
-rw-r--r--nixos/modules/services/x11/window-managers/default.nix1
-rw-r--r--nixos/modules/services/x11/window-managers/pekwm.nix25
-rw-r--r--nixos/modules/system/boot/luksroot.nix26
-rw-r--r--nixos/modules/system/boot/plymouth.nix12
-rw-r--r--nixos/modules/system/boot/stage-1-init.sh3
-rw-r--r--nixos/modules/system/boot/stage-1.nix10
-rw-r--r--nixos/modules/system/boot/systemd-lib.nix2
-rw-r--r--nixos/modules/system/boot/systemd.nix11
-rw-r--r--nixos/modules/tasks/filesystems/zfs.nix18
-rw-r--r--nixos/modules/virtualisation/containers.nix20
-rw-r--r--nixos/modules/virtualisation/qemu-vm.nix4
-rw-r--r--nixos/release.nix1
-rw-r--r--nixos/tests/hibernate.nix42
-rw-r--r--nixos/tests/installer.nix4
-rw-r--r--pkgs/applications/audio/eq10q/default.nix6
-rw-r--r--pkgs/applications/audio/pd-plugins/puremapping/default.nix5
-rw-r--r--pkgs/applications/audio/pd-plugins/zexy/default.nix1
-rw-r--r--pkgs/applications/audio/plugin-torture/default.nix17
-rw-r--r--pkgs/applications/audio/puredata/default.nix6
-rw-r--r--pkgs/applications/editors/emacs-25/default.nix10
-rw-r--r--pkgs/applications/editors/geany/with-vte.nix2
-rw-r--r--pkgs/applications/editors/uemacs/default.nix38
-rw-r--r--pkgs/applications/editors/vis/default.nix35
-rw-r--r--pkgs/applications/graphics/ImageMagick/default.nix4
-rw-r--r--pkgs/applications/graphics/ImageMagick/imagetragick.patch19
-rw-r--r--pkgs/applications/graphics/gimp/2.8.nix4
-rw-r--r--pkgs/applications/graphics/pencil/default.nix3
-rw-r--r--pkgs/applications/graphics/shotwell/default.nix12
-rw-r--r--pkgs/applications/misc/emem/default.nix4
-rw-r--r--pkgs/applications/misc/gpg-mdp/default.nix34
-rw-r--r--pkgs/applications/misc/hugo/default.nix18
-rw-r--r--pkgs/applications/misc/hugo/deps.json44
-rw-r--r--pkgs/applications/misc/mediainfo-gui/default.nix4
-rw-r--r--pkgs/applications/misc/mediainfo/default.nix4
-rw-r--r--pkgs/applications/misc/multimon-ng/default.nix2
-rw-r--r--pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix5
-rw-r--r--pkgs/applications/misc/slic3r/default.nix2
-rw-r--r--pkgs/applications/misc/wikicurses/default.nix22
-rw-r--r--pkgs/applications/networking/bittorrentsync/2.0.x.nix6
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix366
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/default.nix14
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/dev_sources.nix12
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb4
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/generate_sources_dev.rb53
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/sources.nix364
-rw-r--r--pkgs/applications/networking/instant-messengers/teamspeak/client.nix12
-rw-r--r--pkgs/applications/networking/mailreaders/mutt/default.nix14
-rw-r--r--pkgs/applications/networking/mailreaders/mutt/sidebar.patch4450
-rw-r--r--pkgs/applications/networking/mailreaders/mutt/trash.patch797
-rw-r--r--pkgs/applications/networking/syncthing/default.nix4
-rw-r--r--pkgs/applications/office/kmymoney/default.nix7
-rw-r--r--pkgs/applications/office/libreoffice/default.nix2
-rw-r--r--pkgs/applications/office/libreoffice/still.nix2
-rw-r--r--pkgs/applications/office/mendeley/default.nix2
-rw-r--r--pkgs/applications/office/planner/default.nix45
-rw-r--r--pkgs/applications/science/electronics/fritzing/default.nix10
-rw-r--r--pkgs/applications/science/logic/coq/8.5.nix6
-rw-r--r--pkgs/applications/science/logic/tptp/default.nix4
-rw-r--r--pkgs/applications/science/logic/why3/default.nix6
-rw-r--r--pkgs/applications/science/math/LiE/default.nix4
-rw-r--r--pkgs/applications/science/math/jags/default.nix4
-rw-r--r--pkgs/applications/version-management/bitkeeper/default.nix52
-rw-r--r--pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix4
-rw-r--r--pkgs/applications/version-management/guitone/default.nix2
-rw-r--r--pkgs/applications/video/openshot-qt/default.nix48
-rw-r--r--pkgs/applications/video/openshot-qt/libopenshot-audio.nix31
-rw-r--r--pkgs/applications/video/openshot-qt/libopenshot.nix46
-rw-r--r--pkgs/applications/virtualization/rkt/default.nix6
-rw-r--r--pkgs/applications/window-managers/compton/default.nix38
-rw-r--r--pkgs/applications/window-managers/compton/git.nix6
-rw-r--r--pkgs/applications/window-managers/pekwm/default.nix39
-rw-r--r--pkgs/applications/window-managers/sway/default.nix74
-rw-r--r--pkgs/build-support/docker/tarsum.go32
-rw-r--r--pkgs/build-support/fetchmavenartifact/default.nix75
-rw-r--r--pkgs/build-support/fetchurl/mirrors.nix1
-rw-r--r--pkgs/data/fonts/liberationsansnarrow/binary.nix22
-rw-r--r--pkgs/data/fonts/liberationsansnarrow/default.nix39
-rw-r--r--pkgs/desktops/gnome-3/3.18/default.nix16
-rw-r--r--pkgs/desktops/gnome-3/3.18/misc/gnome-packagekit/default.nix26
-rw-r--r--pkgs/desktops/gnome-3/3.18/misc/gnome-software/default.nix31
-rw-r--r--pkgs/desktops/gnome-3/3.20/apps/evolution/src.nix9
-rw-r--r--pkgs/desktops/gnome-3/3.20/core/evolution-data-server/src.nix9
-rw-r--r--pkgs/desktops/gnome-3/3.20/core/gnome-online-accounts/src.nix9
-rw-r--r--pkgs/desktops/gnome-3/3.20/core/gnome-session/src.nix9
-rw-r--r--pkgs/desktops/gnome-3/3.20/core/gnome-software/default.nix27
-rw-r--r--pkgs/desktops/gnome-3/3.20/core/gnome-software/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.20/default.nix12
-rw-r--r--pkgs/desktops/gnome-3/3.20/games/gnome-sudoku/src.nix9
-rw-r--r--pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/default.nix20
-rw-r--r--pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/src.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.20/misc/gspell/src.nix4
-rw-r--r--pkgs/desktops/gnome-3/3.20/misc/pidgin/default.nix4
-rw-r--r--pkgs/desktops/kde-5/applications/ark/default.nix51
-rw-r--r--pkgs/desktops/kde-5/applications/kate.nix35
-rw-r--r--pkgs/desktops/kde-5/applications/spectacle.nix2
-rw-r--r--pkgs/desktops/kde-5/frameworks/baloo.nix11
-rw-r--r--pkgs/desktops/kde-5/frameworks/extra-cmake-modules/setup-hook.sh25
-rw-r--r--pkgs/desktops/kde-5/frameworks/kconfig.nix11
-rw-r--r--pkgs/desktops/kde-5/frameworks/kconfigwidgets/default.nix5
-rw-r--r--pkgs/desktops/kde-5/frameworks/kcoreaddons.nix7
-rw-r--r--pkgs/desktops/kde-5/frameworks/kdbusaddons.nix10
-rw-r--r--pkgs/desktops/kde-5/frameworks/kdeclarative.nix7
-rw-r--r--pkgs/desktops/kde-5/frameworks/kdesignerplugin.nix7
-rw-r--r--pkgs/desktops/kde-5/frameworks/kdoctools/default.nix4
-rw-r--r--pkgs/desktops/kde-5/frameworks/kglobalaccel.nix6
-rw-r--r--pkgs/desktops/kde-5/frameworks/kiconthemes/default.nix7
-rw-r--r--pkgs/desktops/kde-5/frameworks/kinit/default.nix10
-rw-r--r--pkgs/desktops/kde-5/frameworks/kinit/kinit-libpath.patch8
-rw-r--r--pkgs/desktops/kde-5/frameworks/kinit/series1
-rw-r--r--pkgs/desktops/kde-5/frameworks/kinit/start_kdeinit-path.patch13
-rw-r--r--pkgs/desktops/kde-5/frameworks/kio/default.nix10
-rw-r--r--pkgs/desktops/kde-5/frameworks/kjs.nix6
-rw-r--r--pkgs/desktops/kde-5/frameworks/kjsembed.nix8
-rw-r--r--pkgs/desktops/kde-5/frameworks/kpackage/default.nix6
-rw-r--r--pkgs/desktops/kde-5/frameworks/kservice/setup-hook.sh43
-rw-r--r--pkgs/desktops/kde-5/frameworks/ktexteditor/default.nix4
-rw-r--r--pkgs/desktops/kde-5/frameworks/kwallet.nix8
-rw-r--r--pkgs/desktops/kde-5/frameworks/plasma-framework.nix7
-rw-r--r--pkgs/desktops/kde-5/frameworks/solid.nix6
-rw-r--r--pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix39
-rw-r--r--pkgs/desktops/kde-5/plasma/startkde/default.nix48
-rwxr-xr-xpkgs/desktops/kde-5/plasma/startkde/startkde.sh36
-rw-r--r--pkgs/development/compilers/elm/default.nix2
-rw-r--r--pkgs/development/compilers/elm/packages/elm-compiler.nix14
-rw-r--r--pkgs/development/compilers/elm/packages/elm-format.nix31
-rw-r--r--pkgs/development/compilers/elm/packages/elm-make.nix11
-rw-r--r--pkgs/development/compilers/elm/packages/elm-package.nix29
-rw-r--r--pkgs/development/compilers/elm/packages/elm-reactor-elm.nix16
-rw-r--r--pkgs/development/compilers/elm/packages/elm-reactor.nix23
-rw-r--r--pkgs/development/compilers/elm/packages/elm-repl.nix11
-rw-r--r--pkgs/development/compilers/elm/packages/release.nix2
-rwxr-xr-xpkgs/development/compilers/elm/update-elm.rb16
-rw-r--r--pkgs/development/compilers/ghc/6.10.2-binary.nix4
-rw-r--r--pkgs/development/compilers/ghc/7.0.4-binary.nix4
-rw-r--r--pkgs/development/compilers/ghc/7.4.2-binary.nix4
-rw-r--r--pkgs/development/compilers/path64/default.nix35
-rw-r--r--pkgs/development/compilers/sbcl/default.nix4
-rw-r--r--pkgs/development/go-modules/libs.json198
-rw-r--r--pkgs/development/guile-modules/guile-sdl/default.nix2
-rw-r--r--pkgs/development/haskell-modules/configuration-common.nix9
-rw-r--r--pkgs/development/haskell-modules/configuration-hackage2nix.yaml8
-rw-r--r--pkgs/development/haskell-modules/default.nix4
-rw-r--r--pkgs/development/interpreters/octave/default.nix13
-rw-r--r--pkgs/development/interpreters/python/2.6/default.nix8
-rw-r--r--pkgs/development/interpreters/python/2.7/default.nix7
-rw-r--r--pkgs/development/interpreters/python/2.7/no-ldconfig.patch20
-rw-r--r--pkgs/development/interpreters/python/3.3/default.nix7
-rw-r--r--pkgs/development/interpreters/python/3.4/default.nix7
-rw-r--r--pkgs/development/interpreters/python/3.5/default.nix7
-rw-r--r--pkgs/development/interpreters/python/3.6/default.nix145
-rw-r--r--pkgs/development/interpreters/python/3.6/setup-hook.sh15
-rw-r--r--pkgs/development/libraries/appstream-glib/default.nix23
-rw-r--r--pkgs/development/libraries/fltk/default.nix9
-rw-r--r--pkgs/development/libraries/fontconfig/default.nix1
-rw-r--r--pkgs/development/libraries/fontconfig/make-fonts-conf.xsl2
-rw-r--r--pkgs/development/libraries/libinput/default.nix6
-rw-r--r--pkgs/development/libraries/libinput/udev-absolute-path.patch12
-rw-r--r--pkgs/development/libraries/libjpeg-drop/default.nix36
-rw-r--r--pkgs/development/libraries/libmediainfo/default.nix4
-rw-r--r--pkgs/development/libraries/libmsgpack/default.nix4
-rw-r--r--pkgs/development/libraries/libtomcrypt/default.nix2
-rw-r--r--pkgs/development/libraries/libtommath/default.nix6
-rw-r--r--pkgs/development/libraries/libui/default.nix25
-rw-r--r--pkgs/development/libraries/ncurses/default.nix9
-rw-r--r--pkgs/development/libraries/ncurses/gcc-5.patch46
-rw-r--r--pkgs/development/libraries/qrupdate/default.nix4
-rw-r--r--pkgs/development/libraries/qt-3/default.nix12
-rw-r--r--pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh26
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qmake-hook.sh104
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtbase/default.nix1
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh125
-rw-r--r--pkgs/development/libraries/qt-5/5.5/qtlocation.nix1
-rw-r--r--pkgs/development/libraries/qt-5/5.6/make-qt-wrapper.sh26
-rw-r--r--pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh4
-rw-r--r--pkgs/development/libraries/tk/generic.nix4
-rw-r--r--pkgs/development/libraries/unittest-cpp/default.nix26
-rw-r--r--pkgs/development/libraries/webkitgtk/2.4.nix5
-rw-r--r--pkgs/development/r-modules/default.nix27
-rw-r--r--pkgs/development/tools/analysis/cppcheck/default.nix12
-rw-r--r--pkgs/development/tools/continuous-integration/jenkins/default.nix10
-rw-r--r--pkgs/development/tools/doctl/default.nix23
-rw-r--r--pkgs/development/tools/mypy-lang/default.nix4
-rw-r--r--pkgs/development/tools/scalafmt/default.nix4
-rw-r--r--pkgs/development/tools/vagrant/default.nix10
-rw-r--r--pkgs/development/web/nodejs/nodejs.nix2
-rw-r--r--pkgs/development/web/nodejs/v5.nix4
-rw-r--r--pkgs/games/commandergenius/default.nix54
-rw-r--r--pkgs/games/d1x-rebirth/default.nix2
-rw-r--r--pkgs/games/d2x-rebirth/default.nix2
-rw-r--r--pkgs/misc/emulators/ppsspp/default.nix2
-rw-r--r--pkgs/misc/themes/adapta/default.nix14
-rw-r--r--pkgs/misc/themes/blackbird/default.nix17
-rw-r--r--pkgs/misc/vim-plugins/default.nix136
-rw-r--r--pkgs/misc/vim-plugins/patches/youcompleteme/1-top-cmake.patch14
-rw-r--r--pkgs/misc/vim-plugins/patches/youcompleteme/2-ycm-cmake.patch36
-rw-r--r--pkgs/misc/vim-plugins/vim-plugin-names3
-rw-r--r--pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme7
-rw-r--r--pkgs/os-specific/linux/busybox/default.nix8
-rw-r--r--pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix8
-rw-r--r--pkgs/os-specific/linux/fnotifystat/default.nix22
-rw-r--r--pkgs/os-specific/linux/forkstat/default.nix22
-rw-r--r--pkgs/os-specific/linux/lightum/default.nix5
-rw-r--r--pkgs/os-specific/linux/lxc/default.nix4
-rw-r--r--pkgs/os-specific/linux/powerstat/default.nix22
-rw-r--r--pkgs/os-specific/linux/smemstat/default.nix22
-rw-r--r--pkgs/servers/emby/default.nix4
-rw-r--r--pkgs/servers/etcd/default.nix4
-rw-r--r--pkgs/servers/http/nginx/generic.nix (renamed from pkgs/servers/http/nginx/default.nix)6
-rw-r--r--pkgs/servers/http/nginx/mainline.nix6
-rw-r--r--pkgs/servers/http/nginx/mainline.upstream (renamed from pkgs/servers/http/nginx/unstable.upstream)0
-rw-r--r--pkgs/servers/http/nginx/stable.nix6
-rw-r--r--pkgs/servers/http/nginx/stable.upstream (renamed from pkgs/servers/http/nginx/default.upstream)0
-rw-r--r--pkgs/servers/monitoring/grafana/default.nix14
-rw-r--r--pkgs/servers/monitoring/prometheus/alertmanager.nix6
-rw-r--r--pkgs/servers/monitoring/prometheus/collectd-exporter.nix6
-rw-r--r--pkgs/servers/monitoring/prometheus/default.nix6
-rw-r--r--pkgs/servers/monitoring/prometheus/haproxy-exporter.nix4
-rw-r--r--pkgs/servers/monitoring/prometheus/mysqld-exporter.nix4
-rw-r--r--pkgs/servers/monitoring/prometheus/nginx-exporter.nix2
-rw-r--r--pkgs/servers/monitoring/prometheus/node-exporter.nix11
-rw-r--r--pkgs/servers/monitoring/prometheus/node-exporter_deps.json18
-rw-r--r--pkgs/servers/monitoring/prometheus/pushgateway.nix6
-rw-r--r--pkgs/servers/monitoring/prometheus/statsd-bridge.nix8
-rw-r--r--pkgs/servers/plex/default.nix12
-rw-r--r--pkgs/servers/sonarr/default.nix33
-rw-r--r--pkgs/shells/oh-my-zsh/default.nix6
-rw-r--r--pkgs/tools/archivers/p7zip/default.nix6
-rw-r--r--pkgs/tools/archivers/xarchiver/default.nix16
-rw-r--r--pkgs/tools/graphics/nip2/default.nix8
-rw-r--r--pkgs/tools/graphics/vips/default.nix4
-rw-r--r--pkgs/tools/misc/disper/default.nix9
-rw-r--r--pkgs/tools/misc/ethtool/default.nix5
-rw-r--r--pkgs/tools/misc/fzf/default.nix13
-rw-r--r--pkgs/tools/misc/gti/default.nix4
-rw-r--r--pkgs/tools/misc/youtube-dl/default.nix4
-rw-r--r--pkgs/tools/networking/ndjbdns/default.nix7
-rw-r--r--pkgs/tools/networking/openssh/default.nix8
-rw-r--r--pkgs/tools/networking/openssh/dont_create_privsep_path.patch11
-rw-r--r--pkgs/tools/networking/proxychains/default.nix17
-rw-r--r--pkgs/tools/networking/shncpd/default.nix27
-rw-r--r--pkgs/tools/networking/vtun/default.nix10
-rw-r--r--pkgs/tools/package-management/packagekit/default.nix83
-rw-r--r--pkgs/tools/security/keybase/default.nix28
-rw-r--r--pkgs/tools/security/minisign/default.nix11
-rw-r--r--pkgs/tools/security/nasty/default.nix4
-rw-r--r--pkgs/tools/security/sslscan/default.nix4
-rw-r--r--pkgs/tools/security/sudo/default.nix4
-rw-r--r--pkgs/tools/text/platinum-searcher/default.nix6
-rw-r--r--pkgs/tools/virtualization/nixos-container/default.nix17
-rw-r--r--pkgs/tools/virtualization/nixos-container/nixos-container-completion.sh (renamed from nixos/modules/virtualisation/nixos-container-completion.sh)0
-rwxr-xr-xpkgs/tools/virtualization/nixos-container/nixos-container.pl (renamed from nixos/modules/virtualisation/nixos-container.pl)0
-rw-r--r--pkgs/top-level/all-packages.nix106
-rw-r--r--pkgs/top-level/default.nix19
-rw-r--r--pkgs/top-level/impure.nix24
-rw-r--r--pkgs/top-level/make-tarball.nix2
-rw-r--r--pkgs/top-level/php-packages.nix4
-rw-r--r--pkgs/top-level/python-packages.nix50
282 files changed, 4203 insertions, 7163 deletions
diff --git a/.travis.yml b/.travis.yml
index f29f71aa19f..07e8006aa9a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,14 +1,20 @@
+language: nix
 matrix:
-    allow_failures:
-        - os: osx
     include:
         - os: linux
-          language: generic
+          sudo: false
+          script:
+              - ./maintainers/scripts/travis-nox-review-pr.sh nixpkgs-verify nixpkgs-manual nixpkgs-tarball
+              - ./maintainers/scripts/travis-nox-review-pr.sh nixos-options nixos-manual
+        - os: linux
           sudo: required
           dist: trusty
+          script: ./maintainers/scripts/travis-nox-review-pr.sh pr
         - os: osx
-          language: generic
           osx_image: xcode7.3
-before_install: ./maintainers/scripts/travis-nox-review-pr.sh nix
-install: ./maintainers/scripts/travis-nox-review-pr.sh nox
-script: ./maintainers/scripts/travis-nox-review-pr.sh build
+          script: ./maintainers/scripts/travis-nox-review-pr.sh pr
+git:
+    depth: 1
+env:
+    global:
+        - GITHUB_TOKEN=5edaaf1017f691ed34e7f80878f8f5fbd071603f
diff --git a/README.md b/README.md
index c3187f20462..237ec72223c 100644
--- a/README.md
+++ b/README.md
@@ -31,7 +31,7 @@ For pull-requests, please rebase onto nixpkgs `master`.
 * [Documentation (Nix Expression Language chapter)](https://nixos.org/nix/manual/#ch-expression-language)
 * [Manual (How to write packages for Nix)](https://nixos.org/nixpkgs/manual/)
 * [Manual (NixOS)](https://nixos.org/nixos/manual/)
-* [Nix Wiki](https://nixos.org/wiki/)
+* [Nix Wiki](https://nixos.org/wiki/) (deprecated, see milestone ["Move the Wiki!"](https://github.com/NixOS/nixpkgs/issues?q=is%3Aopen+is%3Aissue+milestone%3A%22Move+the+wiki%21%22))
 * [Continuous package builds for unstable/master](https://hydra.nixos.org/jobset/nixos/trunk-combined)
 * [Continuous package builds for 16.03 release](https://hydra.nixos.org/jobset/nixos/release-16.03)
 * [Tests for unstable/master](https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents)
diff --git a/default.nix b/default.nix
index c384a5bb694..8171f4149d2 100644
--- a/default.nix
+++ b/default.nix
@@ -6,4 +6,4 @@ if ! builtins ? nixVersion || builtins.compareVersions requiredVersion builtins.
 
 else
 
-  import ./pkgs/top-level
+  import ./pkgs/top-level/impure.nix
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index 3d83a0a3a1c..56816bb206c 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -163,6 +163,7 @@
   guibert = "David Guibert <david.guibert@gmail.com>";
   havvy = "Ryan Scheel <ryan.havvy@gmail.com>";
   hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>";
+  hce = "Hans-Christian Esperer <hc@hcesperer.org>";
   henrytill = "Henry Till <henrytill@gmail.com>";
   hiberno = "Christian Lask <hiberno@hiberno.net>";
   hinton = "Tom Hinton <t@larkery.com>";
@@ -356,6 +357,7 @@
   sheganinans = "Aistis Raulinaitis <sheganinans@gmail.com>";
   shell = "Shell Turner <cam.turn@gmail.com>";
   shlevy = "Shea Levy <shea@shealevy.com>";
+  siddharthist = "Langston Barrett <langston.barrett@gmail.com>";
   simonvandel = "Simon Vandel Sillesen <simon.vandel@gmail.com>";
   sjagoe = "Simon Jagoe <simon@simonjagoe.com>";
   sjmackenzie = "Stewart Mackenzie <setori88@gmail.com>";
diff --git a/maintainers/scripts/travis-nox-review-pr.sh b/maintainers/scripts/travis-nox-review-pr.sh
index 092fc0cd9d0..386868301a2 100755
--- a/maintainers/scripts/travis-nox-review-pr.sh
+++ b/maintainers/scripts/travis-nox-review-pr.sh
@@ -1,58 +1,69 @@
 #! /usr/bin/env bash
 set -e
 
-export NIX_CURL_FLAGS=-sS
-
-if [[ $1 == nix ]]; then
-    echo "=== Installing Nix..."
-    # Install Nix
-    bash <(curl -sS https://nixos.org/nix/install)
-    source $HOME/.nix-profile/etc/profile.d/nix.sh
-
-    # Make sure we can use hydra's binary cache
-    sudo mkdir /etc/nix
-    sudo sh -c 'echo "build-max-jobs = 4" > /etc/nix/nix.conf'
-
-    # Verify evaluation
-    echo "=== Verifying that nixpkgs evaluates..."
-    nix-env -f. -qa --json >/dev/null
-elif [[ $1 == nox ]]; then
-    source $HOME/.nix-profile/etc/profile.d/nix.sh
-    echo "=== Installing nox..."
-    nix-build -A nox '<nixpkgs>' --show-trace
-elif [[ $1 == build ]]; then
-    source $HOME/.nix-profile/etc/profile.d/nix.sh
-
-    if [[ $TRAVIS_OS_NAME == "osx" ]]; then
-        echo "Skipping NixOS things on darwin"
-    else
-        # Nix builds in /tmp and we need exec support
-        sudo mount -o remount,exec /run
-        sudo mount -o remount,exec /run/user
-        sudo mount
-
-        echo "=== Checking NixOS options"
-        nix-build nixos/release.nix -A options --show-trace
-
-        echo "=== Checking tarball creation"
-        nix-build pkgs/top-level/release.nix -A tarball --show-trace
-    fi
-
-    if [[ $TRAVIS_PULL_REQUEST == false ]]; then
-        echo "=== Not a pull request"
-    else
-        echo "=== Checking PR"
-
-        if ! nix-shell -p nox --run "nox-review pr ${TRAVIS_PULL_REQUEST}"; then
-            if sudo dmesg | egrep 'Out of memory|Killed process' > /tmp/oom-log; then
-                echo "=== The build failed due to running out of memory:"
-                cat /tmp/oom-log
-                echo "=== Please disregard the result of this Travis build."
+while test -n "$1"; do
+
+    # tell Travis to use folding
+    echo -en "travis_fold:start:$1\r"
+
+    case $1 in
+
+        nixpkgs-verify)
+            echo "=== Verifying that nixpkgs evaluates..."
+
+            nix-env --file $TRAVIS_BUILD_DIR --query --available --json > /dev/null
+            ;;
+
+        nixos-options)
+            echo "=== Checking NixOS options"
+
+            nix-build $TRAVIS_BUILD_DIR/nixos/release.nix --attr options --show-trace
+            ;;
+
+        nixos-manual)
+            echo "=== Checking NixOS manuals"
+
+            nix-build $TRAVIS_BUILD_DIR/nixos/release.nix --attr manual --show-trace
+            ;;
+
+        nixpkgs-manual)
+            echo "=== Checking nixpkgs manuals"
+
+            nix-build $TRAVIS_BUILD_DIR/pkgs/top-level/release.nix --attr manpages --show-trace
+            ;;
+
+        nixpkgs-tarball)
+            echo "=== Checking nixpkgs tarball creation"
+
+            nix-build $TRAVIS_BUILD_DIR/pkgs/top-level/release.nix --attr tarball --show-trace
+            ;;
+
+        nixpkgs-lint)
+            echo "=== Checking nixpkgs lint"
+
+            nix-shell --packages nixpkgs-lint --run "nixpkgs-lint -f $TRAVIS_BUILD_DIR"
+            ;;
+
+        pr)
+            if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
+                echo "=== No pull request found"
+            else
+                echo "=== Building pull request #$TRAVIS_PULL_REQUEST"
+
+                token=""
+                if [ -n "$GITHUB_TOKEN" ]; then
+                    token="--token $GITHUB_TOKEN"
+                fi
+
+                nix-shell --packages nox git --run "nox-review pr --slug $TRAVIS_REPO_SLUG $token $TRAVIS_PULL_REQUEST" -I nixpkgs=$TRAVIS_BUILD_DIR
             fi
-            exit 1
-        fi
-    fi
-else
-    echo "$0: Unknown option $1" >&2
-    false
-fi
+            ;;
+
+        *)
+            echo "Skipping unknown option $1"
+            ;;
+    esac
+
+    echo -en "travis_fold:end:$1\r"
+    shift
+done
diff --git a/nixos/modules/config/fonts/fontconfig-ultimate.nix b/nixos/modules/config/fonts/fontconfig-ultimate.nix
index 47d7cc5924d..02568f9de51 100644
--- a/nixos/modules/config/fonts/fontconfig-ultimate.nix
+++ b/nixos/modules/config/fonts/fontconfig-ultimate.nix
@@ -3,84 +3,6 @@
 with lib;
 
 let fcBool = x: if x then "<bool>true</bool>" else "<bool>false</bool>";
-    cfg = config.fonts.fontconfig.ultimate;
-    fontconfigUltimateConf = pkgs.writeText "ultimate-conf" ''
-      <?xml version="1.0"?>
-      <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-      <fontconfig>
-
-        ${optionalString (!cfg.allowBitmaps) ''
-        <!-- Reject bitmap fonts -->
-        <selectfont>
-          <rejectfont>
-            <pattern>
-              <patelt name="scalable"><bool>false</bool></patelt>
-            </pattern>
-          </rejectfont>
-        </selectfont>
-        ''}
-
-        ${optionalString cfg.allowType1 ''
-        <!-- Reject Type 1 fonts -->
-        <selectfont>
-          <rejectfont>
-            <pattern>
-              <patelt name="fontformat">
-                <string>Type 1</string>
-              </patelt>
-            </pattern>
-          </rejectfont>
-        </selectfont>
-        ''}
-
-        <!-- Use embedded bitmaps in fonts like Calibri? -->
-        <match target="font">
-          <edit name="embeddedbitmap" mode="assign">
-            ${fcBool cfg.useEmbeddedBitmaps}
-          </edit>
-        </match>
-
-        <!-- Force autohint always -->
-        <match target="font">
-          <edit name="force_autohint" mode="assign">
-            ${fcBool cfg.forceAutohint}
-          </edit>
-        </match>
-
-        <!-- Render some monospace TTF fonts as bitmaps -->
-        <match target="pattern">
-          <edit name="bitmap_monospace" mode="assign">
-            ${fcBool cfg.renderMonoTTFAsBitmap}
-          </edit>
-        </match>
-
-      </fontconfig>
-    '';
-    confPkg = 
-      let version = pkgs.fontconfig.configVersion;
-      in pkgs.runCommand "font-ultimate-conf" {} ''
-      mkdir -p $out/etc/fonts/{,${version}/}conf.d/
-
-      cp ${fontconfigUltimateConf} \
-        $out/etc/fonts/conf.d/52-fontconfig-ultimate.conf
-
-      cp ${fontconfigUltimateConf} \
-        $out/etc/fonts/${version}/conf.d/52-fontconfig-ultimate.conf
-
-      ${optionalString (cfg.substitutions != "none") ''
-      cp ${pkgs.fontconfig-ultimate.confd}/etc/fonts/presets/${cfg.substitutions}/*.conf \
-        $out/etc/fonts/conf.d/
-      cp ${pkgs.fontconfig-ultimate.confd}/etc/fonts/presets/${cfg.substitutions}/*.conf \
-        $out/etc/fonts/${version}/conf.d/
-      ''}
-
-      ln -s ${pkgs.fontconfig-ultimate.confd}/etc/fonts/conf.d/*.conf \
-        $out/etc/fonts/conf.d/
-
-      ln -s ${pkgs.fontconfig-ultimate.confd}/etc/fonts/conf.d/*.conf \
-        $out/etc/fonts/${version}/conf.d/
-    '';
-
 in
 {
 
@@ -193,11 +115,78 @@ in
   };
 
 
-  config = mkIf (config.fonts.fontconfig.enable && cfg.enable) {
+  config =
+    let ultimate = config.fonts.fontconfig.ultimate;
+        fontconfigUltimateConf = ''
+          <?xml version="1.0"?>
+          <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+          <fontconfig>
+
+            ${optionalString (!ultimate.allowBitmaps) ''
+            <!-- Reject bitmap fonts -->
+            <selectfont>
+              <rejectfont>
+                <pattern>
+                  <patelt name="scalable"><bool>false</bool></patelt>
+                </pattern>
+              </rejectfont>
+            </selectfont>
+            ''}
+
+            ${optionalString ultimate.allowType1 ''
+            <!-- Reject Type 1 fonts -->
+            <selectfont>
+              <rejectfont>
+                <pattern>
+                  <patelt name="fontformat">
+                    <string>Type 1</string>
+                  </patelt>
+                </pattern>
+              </rejectfont>
+            </selectfont>
+            ''}
+
+            <!-- Use embedded bitmaps in fonts like Calibri? -->
+            <match target="font">
+              <edit name="embeddedbitmap" mode="assign">
+                ${fcBool ultimate.useEmbeddedBitmaps}
+              </edit>
+            </match>
+
+            <!-- Force autohint always -->
+            <match target="font">
+              <edit name="force_autohint" mode="assign">
+                ${fcBool ultimate.forceAutohint}
+              </edit>
+            </match>
+
+            <!-- Render some monospace TTF fonts as bitmaps -->
+            <match target="pattern">
+              <edit name="bitmap_monospace" mode="assign">
+                ${fcBool ultimate.renderMonoTTFAsBitmap}
+              </edit>
+            </match>
+
+            ${optionalString (ultimate.substitutions != "none") ''
+            <!-- Type 1 font substitutions -->
+            <include ignore_missing="yes">${pkgs.fontconfig-ultimate.confd}/etc/fonts/presets/${ultimate.substitutions}</include>
+            ''}
+
+            <include ignore_missing="yes">${pkgs.fontconfig-ultimate.confd}/etc/fonts/conf.d</include>
+
+          </fontconfig>
+        '';
+    in mkIf (config.fonts.fontconfig.enable && ultimate.enable) {
+
+      environment.etc."fonts/conf.d/52-fontconfig-ultimate.conf" = {
+        text = fontconfigUltimateConf;
+      };
+
+      environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/52-fontconfig-ultimate.conf" = {
+        text = fontconfigUltimateConf;
+      };
 
-      fonts.fontconfig.confPkgs = [ confPkg ];
-      
-      environment.variables = cfg.rendering;
+      environment.variables = ultimate.rendering;
 
     };
 
diff --git a/nixos/modules/config/fonts/fontconfig.nix b/nixos/modules/config/fonts/fontconfig.nix
index fcf5add4519..1eaebe4b2bb 100644
--- a/nixos/modules/config/fonts/fontconfig.nix
+++ b/nixos/modules/config/fonts/fontconfig.nix
@@ -2,121 +2,6 @@
 
 with lib;
 
-let cfg = config.fonts.fontconfig;
-    fcBool = x: "<bool>" + (if x then "true" else "false") + "</bool>";
-    renderConf = pkgs.writeText "render-conf" ''
-      <?xml version='1.0'?>
-      <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
-      <fontconfig>
-
-        <!-- Default rendering settings -->
-        <match target="font">
-          <edit mode="assign" name="hinting">
-            ${fcBool cfg.hinting.enable}
-          </edit>
-          <edit mode="assign" name="autohint">
-            ${fcBool cfg.hinting.autohint}
-          </edit>
-          <edit mode="assign" name="hintstyle">
-            <const>hint${cfg.hinting.style}</const>
-          </edit>
-          <edit mode="assign" name="antialias">
-            ${fcBool cfg.antialias}
-          </edit>
-          <edit mode="assign" name="rgba">
-            <const>${cfg.subpixel.rgba}</const>
-          </edit>
-          <edit mode="assign" name="lcdfilter">
-            <const>lcd${cfg.subpixel.lcdfilter}</const>
-          </edit>
-        </match>
-
-        ${optionalString (cfg.dpi != 0) ''
-        <match target="pattern">
-          <edit name="dpi" mode="assign">
-            <double>${toString cfg.dpi}</double>
-          </edit>
-        </match>
-        ''}
-
-      </fontconfig>
-    '';
-    genericAliasConf = 
-      let genDefault = fonts: name:
-        optionalString (fonts != []) ''
-          <alias>
-            <family>${name}</family>
-            <prefer>
-            ${concatStringsSep ""
-            (map (font: ''
-              <family>${font}</family>
-            '') fonts)}
-            </prefer>
-          </alias>
-        '';
-      in
-      pkgs.writeText "generic-alias-conf" ''
-      <?xml version='1.0'?>
-      <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
-      <fontconfig>
-
-        <!-- Default fonts -->
-        ${genDefault cfg.defaultFonts.sansSerif "sans-serif"}
-
-        ${genDefault cfg.defaultFonts.serif     "serif"}
-
-        ${genDefault cfg.defaultFonts.monospace "monospace"}
-
-      </fontconfig>
-    '';
-    cacheConf = let
-      cache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; };
-    in
-    pkgs.writeText "cache-conf" ''
-      <?xml version='1.0'?>
-      <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
-      <fontconfig>
-        <!-- Font directories -->
-        ${concatStringsSep "\n" (map (font: "<dir>${font}</dir>") config.fonts.fonts)}
-        <!-- Pre-generated font caches -->
-        <cachedir>${cache pkgs.fontconfig}</cachedir>
-        ${optionalString (pkgs.stdenv.isx86_64 && cfg.cache32Bit) ''
-          <cachedir>${cache pkgs.pkgsi686Linux.fontconfig}</cachedir>
-        ''}
-      </fontconfig>
-    '';
-    userConf = pkgs.writeText "user-conf" ''
-      <?xml version="1.0"?>
-      <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-      <fontconfig>
-        <include ignore_missing="yes" prefix="xdg">fontconfig/conf.d</include>
-        <include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>
-      </fontconfig>
-    '';
-    fontsConf = pkgs.makeFontsConf { fontconfig = pkgs.fontconfig_210; fontDirectories = config.fonts.fonts; };
-    confPkg = 
-      let version = pkgs.fontconfig.configVersion;
-      in pkgs.runCommand "fontconfig-conf" {} ''
-      mkdir -p $out/etc/fonts/{,${version}/}conf.d
-
-      ln -s ${fontsConf}        $out/etc/fonts/fonts.conf
-
-      ln -s ${pkgs.fontconfig.out}/etc/fonts/fonts.conf $out/etc/fonts/${version}/fonts.conf
-      ln -s ${pkgs.fontconfig.out}/etc/fonts/conf.d/*   $out/etc/fonts/${version}/conf.d/
-
-      ln -s ${renderConf}       $out/etc/fonts/conf.d/10-nixos-rendering.conf
-      ln -s ${genericAliasConf} $out/etc/fonts/conf.d/60-nixos-generic-alias.conf
-
-      ln -s ${cacheConf}        $out/etc/fonts/${version}/conf.d/00-nixos.conf
-
-      ln -s ${renderConf}       $out/etc/fonts/${version}/conf.d/10-nixos-rendering.conf
-      ln -s ${genericAliasConf} $out/etc/fonts/${version}/conf.d/30-nixos-generic-alias.conf
-
-      ${optionalString cfg.includeUserConf
-      "ln -s ${userConf}        $out/etc/fonts/${version}/conf.d/99-user.conf"}
-      
-    '';
-in
 {
 
   options = {
@@ -136,15 +21,6 @@ in
           '';
         };
 
-        confPkgs = mkOption {
-          internal = true;
-          type     = with types; listOf path;
-          default  = [ ];
-          description = ''
-            Fontconfig configuration packages.
-          '';
-        };
-
         antialias = mkOption {
           type = types.bool;
           default = true;
@@ -267,17 +143,135 @@ in
 
   };
 
-  config = mkIf cfg.enable {
-    fonts.fontconfig.confPkgs = [ confPkg ];
+  config =
+    let fontconfig = config.fonts.fontconfig;
+        fcBool = x: "<bool>" + (if x then "true" else "false") + "</bool>";
+        renderConf = ''
+          <?xml version='1.0'?>
+          <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+          <fontconfig>
+
+            <!-- Default rendering settings -->
+            <match target="font">
+              <edit mode="assign" name="hinting">
+                ${fcBool fontconfig.hinting.enable}
+              </edit>
+              <edit mode="assign" name="autohint">
+                ${fcBool fontconfig.hinting.autohint}
+              </edit>
+              <edit mode="assign" name="hintstyle">
+                <const>hint${fontconfig.hinting.style}</const>
+              </edit>
+              <edit mode="assign" name="antialias">
+                ${fcBool fontconfig.antialias}
+              </edit>
+              <edit mode="assign" name="rgba">
+                <const>${fontconfig.subpixel.rgba}</const>
+              </edit>
+              <edit mode="assign" name="lcdfilter">
+                <const>lcd${fontconfig.subpixel.lcdfilter}</const>
+              </edit>
+            </match>
+
+            ${optionalString (fontconfig.dpi != 0) ''
+            <match target="pattern">
+              <edit name="dpi" mode="assign">
+                <double>${toString fontconfig.dpi}</double>
+              </edit>
+            </match>
+            ''}
+
+          </fontconfig>
+        '';
+        genericAliasConf = ''
+          <?xml version='1.0'?>
+          <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+          <fontconfig>
+
+            <!-- Default fonts -->
+            ${optionalString (fontconfig.defaultFonts.sansSerif != []) ''
+            <alias>
+              <family>sans-serif</family>
+              <prefer>
+                ${concatStringsSep "\n"
+                  (map (font: "<family>${font}</family>")
+                    fontconfig.defaultFonts.sansSerif)}
+              </prefer>
+            </alias>
+            ''}
+            ${optionalString (fontconfig.defaultFonts.serif != []) ''
+            <alias>
+              <family>serif</family>
+              <prefer>
+                ${concatStringsSep "\n"
+                  (map (font: "<family>${font}</family>")
+                    fontconfig.defaultFonts.serif)}
+              </prefer>
+            </alias>
+            ''}
+            ${optionalString (fontconfig.defaultFonts.monospace != []) ''
+            <alias>
+              <family>monospace</family>
+              <prefer>
+                ${concatStringsSep "\n"
+                  (map (font: "<family>${font}</family>")
+                    fontconfig.defaultFonts.monospace)}
+              </prefer>
+            </alias>
+            ''}
+
+          </fontconfig>
+        '';
+    in mkIf fontconfig.enable {
+
+      # Fontconfig 2.10 backward compatibility
+
+      # Bring in the default (upstream) fontconfig configuration, only for fontconfig 2.10
+      environment.etc."fonts/fonts.conf".source =
+        pkgs.makeFontsConf { fontconfig = pkgs.fontconfig_210; fontDirectories = config.fonts.fonts; };
+
+      environment.etc."fonts/conf.d/10-nixos-rendering.conf".text = renderConf;
+      environment.etc."fonts/conf.d/60-nixos-generic-alias.conf".text = genericAliasConf;
+
+      # Versioned fontconfig > 2.10. Take shared fonts.conf from fontconfig.
+      # Otherwise specify only font directories.
+      environment.etc."fonts/${pkgs.fontconfig.configVersion}/fonts.conf".source =
+        "${pkgs.fontconfig.out}/etc/fonts/fonts.conf";
+
+      environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/00-nixos.conf".text =
+        let
+          cache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; };
+        in ''
+          <?xml version='1.0'?>
+          <!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
+          <fontconfig>
+            <!-- Font directories -->
+            ${concatStringsSep "\n" (map (font: "<dir>${font}</dir>") config.fonts.fonts)}
+            <!-- Pre-generated font caches -->
+            <cachedir>${cache pkgs.fontconfig}</cachedir>
+            ${optionalString (pkgs.stdenv.isx86_64 && config.fonts.fontconfig.cache32Bit) ''
+              <cachedir>${cache pkgs.pkgsi686Linux.fontconfig}</cachedir>
+            ''}
+          </fontconfig>
+        '';
+
+      environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/10-nixos-rendering.conf".text = renderConf;
+      environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/60-nixos-generic-alias.conf".text = genericAliasConf;
+
+      environment.etc."fonts/${pkgs.fontconfig.configVersion}/conf.d/99-user.conf" = {
+        enable = fontconfig.includeUserConf;
+        text = ''
+          <?xml version="1.0"?>
+          <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+          <fontconfig>
+            <include ignore_missing="yes" prefix="xdg">fontconfig/conf.d</include>
+            <include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>
+          </fontconfig>
+        '';
+      };
 
-    environment.etc.fonts.source = 
-      let fontConf = pkgs.symlinkJoin {
-            name  = "fontconfig-etc";
-            paths = cfg.confPkgs;
-          };
-      in "${fontConf}/etc/fonts/";
+      environment.systemPackages = [ pkgs.fontconfig ];
 
-    environment.systemPackages = [ pkgs.fontconfig ];
-  };
+    };
 
 }
diff --git a/nixos/modules/config/pulseaudio.nix b/nixos/modules/config/pulseaudio.nix
index a964e04531c..6984e85603f 100644
--- a/nixos/modules/config/pulseaudio.nix
+++ b/nixos/modules/config/pulseaudio.nix
@@ -161,6 +161,7 @@ in {
             ExecStart = "${getBin cfg.package}/bin/pulseaudio --daemonize=no";
             Restart = "on-failure";
           };
+          environment = { DISPLAY = ":${toString config.services.xserver.display}"; };
         };
 
         sockets.pulseaudio = {
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 0b3f49aec5c..c1d9a250a62 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -249,6 +249,7 @@
   ./services/misc/nix-ssh-serve.nix
   ./services/misc/nzbget.nix
   ./services/misc/octoprint.nix
+  ./services/misc/packagekit.nix
   ./services/misc/parsoid.nix
   ./services/misc/phd.nix
   ./services/misc/plex.nix
@@ -258,6 +259,7 @@
   ./services/misc/ripple-data-api.nix
   ./services/misc/rogue.nix
   ./services/misc/siproxd.nix
+  ./services/misc/sonarr.nix
   ./services/misc/spice-vdagentd.nix
   ./services/misc/subsonic.nix
   ./services/misc/sundtek.nix
@@ -474,6 +476,7 @@
   ./services/web-servers/winstone.nix
   ./services/web-servers/zope2.nix
   ./services/x11/colord.nix
+  ./services/x11/compton.nix
   ./services/x11/unclutter.nix
   ./services/x11/desktop-managers/default.nix
   ./services/x11/display-managers/auto.nix
diff --git a/nixos/modules/security/grsecurity.nix b/nixos/modules/security/grsecurity.nix
index 9d0249820d5..e825679c343 100644
--- a/nixos/modules/security/grsecurity.nix
+++ b/nixos/modules/security/grsecurity.nix
@@ -13,12 +13,16 @@ let
           || elem fs.mountPoint [ "/" "/nix" "/nix/store" "/var" "/var/log" "/var/lib" "/etc" ])
           && fs.fsType == "zfs")
     (attrValues config.fileSystems) != [];
+
+  # Ascertain whether NixOS container support is required
+  containerSupportRequired =
+    config.boot.enableContainers && config.containers != {};
 in
 
 {
   options.security.grsecurity = {
 
-    enable = mkEnableOption "Grsecurity/PaX";
+    enable = mkEnableOption "grsecurity/PaX";
 
     lockTunables = mkOption {
       type = types.bool;
@@ -27,9 +31,9 @@ in
       description = ''
         Whether to automatically lock grsecurity tunables
         (<option>boot.kernel.sysctl."kernel.grsecurity.*"</option>).  Disable
-        this to allow configuration of grsecurity features while the system is
-        running.  The lock can be manually engaged by activating the
-        <literal>grsec-lock</literal> service unit.
+        this to allow runtime configuration of grsecurity features.  Activate
+        the <literal>grsec-lock</literal> service unit to prevent further
+        configuration until the next reboot.
       '';
     };
 
@@ -48,10 +52,6 @@ in
         (isYES "GRKERNSEC_SYSCTL_DISTRO")
       ];
 
-    # Crashing on an overflow in kernel land is user unfriendly and may prevent
-    # the system from booting, which is too severe for our use case.
-    boot.kernelParams = [ "pax_size_overflow_report_only" ];
-
     # Install PaX related utillities into the system profile.  Eventually, we
     # also want to include gradm here.
     environment.systemPackages = with pkgs; [ paxctl pax-utils ];
@@ -59,7 +59,7 @@ in
     # Install rules for the grsec device node
     services.udev.packages = [ pkgs.gradm ];
 
-    # This service unit is responsible for locking the Grsecurity tunables.  The
+    # This service unit is responsible for locking the grsecurity tunables.  The
     # unit is always defined, but only activated on bootup if lockTunables is
     # toggled.  When lockTunables is toggled, failure to activate the unit will
     # enter emergency mode.  The intent is to make it difficult to silently
@@ -105,7 +105,7 @@ in
       "kernel.grsecurity.chroot_deny_chroot" = mkForce 0;
       "kernel.grsecurity.chroot_deny_mount" = mkForce 0;
       "kernel.grsecurity.chroot_deny_pivot" = mkForce 0;
-    } // optionalAttrs config.boot.enableContainers {
+    } // optionalAttrs containerSupportRequired {
       # chroot(2) restrictions that conflict with NixOS lightweight containers
       "kernel.grsecurity.chroot_deny_chmod" = mkForce 0;
       "kernel.grsecurity.chroot_deny_mount" = mkForce 0;
diff --git a/nixos/modules/services/continuous-integration/jenkins/default.nix b/nixos/modules/services/continuous-integration/jenkins/default.nix
index 7da49fa0aaa..4edbbf59a42 100644
--- a/nixos/modules/services/continuous-integration/jenkins/default.nix
+++ b/nixos/modules/services/continuous-integration/jenkins/default.nix
@@ -154,7 +154,7 @@ in {
       '';
 
       script = ''
-        ${pkgs.jdk}/bin/java -jar ${pkgs.jenkins}/lib/jenkins.war --httpListenAddress=${cfg.listenAddress} \
+        ${pkgs.jdk}/bin/java -jar ${pkgs.jenkins}/webapps/jenkins.war --httpListenAddress=${cfg.listenAddress} \
                                                   --httpPort=${toString cfg.port} \
                                                   --prefix=${cfg.prefix} \
                                                   ${concatStringsSep " " cfg.extraOptions}
diff --git a/nixos/modules/services/misc/cgminer.nix b/nixos/modules/services/misc/cgminer.nix
index 868dc87f723..5f97cc03414 100644
--- a/nixos/modules/services/misc/cgminer.nix
+++ b/nixos/modules/services/misc/cgminer.nix
@@ -126,7 +126,7 @@ in
 
       environment = {
         LD_LIBRARY_PATH = ''/run/opengl-driver/lib:/run/opengl-driver-32/lib'';
-        DISPLAY = ":0";
+        DISPLAY = ":${toString config.services.xserver.display}";
         GPU_MAX_ALLOC_PERCENT = "100";
         GPU_USE_SYNC_OBJECTS = "1";
       };
diff --git a/nixos/modules/services/misc/packagekit.nix b/nixos/modules/services/misc/packagekit.nix
new file mode 100644
index 00000000000..2d1ff7bb411
--- /dev/null
+++ b/nixos/modules/services/misc/packagekit.nix
@@ -0,0 +1,61 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+  cfg = config.services.packagekit;
+
+  backend = "nix";
+
+  packagekitConf = ''
+[Daemon]
+DefaultBackend=${backend}
+KeepCache=false
+    '';
+
+  vendorConf = ''
+[PackagesNotFound]
+DefaultUrl=https://github.com/NixOS/nixpkgs
+CodecUrl=https://github.com/NixOS/nixpkgs
+HardwareUrl=https://github.com/NixOS/nixpkgs
+FontUrl=https://github.com/NixOS/nixpkgs
+MimeUrl=https://github.com/NixOS/nixpkgs
+      '';
+
+in
+
+{
+
+  options = {
+
+    services.packagekit = {
+      enable = mkEnableOption
+        ''
+          PackageKit provides a cross-platform D-Bus abstraction layer for
+          installing software. Software utilizing PackageKit can install
+          software regardless of the package manager.
+        '';
+    };
+
+  };
+
+  config = mkIf cfg.enable {
+
+    services.dbus.packages = [ pkgs.packagekit ];
+
+    systemd.services.packagekit = {
+      description = "PackageKit Daemon";
+      wantedBy = [ "multi-user.target" ];
+      serviceConfig.ExecStart = "${pkgs.packagekit}/libexec/packagekitd";
+      serviceConfig.User = "root";
+      serviceConfig.BusName = "org.freedesktop.PackageKit";
+      serviceConfig.Type = "dbus";
+    };
+
+    environment.etc."PackageKit/PackageKit.conf".text = packagekitConf;
+    environment.etc."PackageKit/Vendor.conf".text = vendorConf;
+
+  };
+
+}
diff --git a/nixos/modules/services/misc/sonarr.nix b/nixos/modules/services/misc/sonarr.nix
new file mode 100644
index 00000000000..6d96daa6c3d
--- /dev/null
+++ b/nixos/modules/services/misc/sonarr.nix
@@ -0,0 +1,44 @@
+{ config, pkgs, lib, mono, ... }:
+
+with lib;
+
+let
+  cfg = config.services.sonarr;
+in
+{
+  options = {
+    services.sonarr = {
+      enable = mkEnableOption "Sonarr";
+    };
+  };
+
+  config = mkIf cfg.enable {
+    systemd.services.sonarr = {
+      description = "Sonarr";
+      after = [ "network.target" ];
+      wantedBy = [ "multi-user.target" ];
+      preStart = ''
+        test -d /var/lib/sonarr/ || {
+          echo "Creating sonarr data directory in /var/lib/sonarr/"
+          mkdir -p /var/lib/sonarr/
+        }
+        chown -R sonarr /var/lib/sonarr/
+        chmod 0700 /var/lib/sonarr/
+      '';
+
+      serviceConfig = {
+        Type = "simple";
+        User = "sonarr";
+        Group = "nogroup";
+        PermissionsStartOnly = "true";
+        ExecStart = "${pkgs.sonarr}/bin/NzbDrone --no-browser";
+        Restart = "on-failure";
+      };
+    };
+
+    users.extraUsers.sonarr = {
+      home = "/var/lib/sonarr";
+    };
+
+  };
+}
diff --git a/nixos/modules/services/monitoring/grafana.nix b/nixos/modules/services/monitoring/grafana.nix
index 0b7f3ce0a29..b9e4015c238 100644
--- a/nixos/modules/services/monitoring/grafana.nix
+++ b/nixos/modules/services/monitoring/grafana.nix
@@ -9,6 +9,7 @@ let
 
   envOptions = {
     PATHS_DATA = cfg.dataDir;
+    PATHS_PLUGINS = "${cfg.dataDir}/plugins";
     PATHS_LOGS = "${cfg.dataDir}/log";
 
     SERVER_PROTOCOL = cfg.protocol;
@@ -37,6 +38,8 @@ let
     USERS_AUTO_ASSIGN_ORG_ROLE = cfg.users.autoAssignOrgRole;
 
     AUTH_ANONYMOUS_ENABLED = b2s cfg.auth.anonymous.enable;
+    AUTH_ANONYMOUS_ORG_NAME = cfg.auth.anonymous.org_name;
+    AUTH_ANONYMOUS_ORG_ROLE = cfg.auth.anonymous.org_role;
 
     ANALYTICS_REPORTING_ENABLED = b2s cfg.analytics.reporting.enable;
   } // cfg.extraOptions;
@@ -196,6 +199,17 @@ in {
         default = false;
         type = types.bool;
       };
+      org_name = mkOption {
+        description = "Which organization to allow anonymous access to";
+        default = "Main Org.";
+        type = types.str;
+      };
+      org_role = mkOption {
+        description = "Which role anonymous users have in the organization";
+        default = "Viewer";
+        type = types.str;
+      };
+
     };
 
     analytics.reporting = {
@@ -222,6 +236,8 @@ in {
       "Grafana passwords will be stored as plaintext in the Nix store!"
     ];
 
+    environment.systemPackages = [ cfg.package ];
+
     systemd.services.grafana = {
       description = "Grafana Service Daemon";
       wantedBy = ["multi-user.target"];
@@ -234,6 +250,7 @@ in {
       };
       preStart = ''
         ln -fs ${cfg.package}/share/grafana/conf ${cfg.dataDir}
+        ln -fs ${cfg.package}/share/grafana/vendor ${cfg.dataDir}
       '';
     };
 
diff --git a/nixos/modules/services/monitoring/sysstat.nix b/nixos/modules/services/monitoring/sysstat.nix
new file mode 100644
index 00000000000..d668faa53cc
--- /dev/null
+++ b/nixos/modules/services/monitoring/sysstat.nix
@@ -0,0 +1,80 @@
+{ config, lib, pkgs, ... }:
+with lib;
+let
+  cfg = config.services.sysstat;
+in {
+  options = {
+    services.sysstat = {
+      enable = mkOption {
+        type = types.bool;
+        default = false;
+        description = ''
+          Whether to enable sar system activity collection.
+        '';
+      };
+
+      collect-frequency = mkOption {
+        default = "*:00/10";
+        description = ''
+          OnCalendar specification for sysstat-collect
+        '';
+      };
+
+      collect-args = mkOption {
+        default = "1 1";
+        description = ''
+          Arguments to pass sa1 when collecting statistics
+        '';
+      };
+    };
+  };
+
+  config = mkIf cfg.enable {
+    systemd.services.sysstat = {
+      description = "Resets System Activity Logs";
+      wantedBy = [ "multi-user.target" ];
+      preStart = "test -d /var/log/sa || mkdir -p /var/log/sa";
+
+      serviceConfig = {
+        User = "root";
+        RemainAfterExit = true;
+        Type = "oneshot";
+        ExecStart = "${pkgs.sysstat}/lib/sa/sa1 --boot";
+      };
+    };
+
+    systemd.services.sysstat-collect = {
+      description = "system activity accounting tool";
+      unitConfig.Documentation = "man:sa1(8)";
+
+      serviceConfig = {
+        Type = "oneshot";
+        User = "root";
+        ExecStart = "${pkgs.sysstat}/lib/sa/sa1 ${cfg.collect-args}";
+      };
+    };
+
+    systemd.timers.sysstat-collect = {
+      description = "Run system activity accounting tool on a regular basis";
+      wantedBy = [ "timers.target" ];
+      timerConfig.OnCalendar = cfg.collect-frequency;
+    };
+
+    systemd.services.sysstat-summary = {
+      description = "Generate a daily summary of process accounting";
+      unitConfig.Documentation = "man:sa2(8)";
+
+      serviceConfig = {
+        Type = "oneshot";
+        User = "root";
+        ExecStart = "${pkgs.sysstat}/lib/sa/sa2 -A";
+      };
+    };
+
+    systemd.timers.sysstat-summary = {
+      description = "Generate summary of yesterday's process accounting";
+      wantedBy = [ "timers.target" ];
+      timerConfig.OnCalendar = "00:07:00";
+    };
+  };
+}
diff --git a/nixos/modules/services/x11/compton.nix b/nixos/modules/services/x11/compton.nix
new file mode 100644
index 00000000000..bda4eec0102
--- /dev/null
+++ b/nixos/modules/services/x11/compton.nix
@@ -0,0 +1,225 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+with builtins;
+
+let
+
+  cfg = config.services.compton;
+
+  configFile = pkgs.writeText "compton.conf"
+    (optionalString cfg.fade ''
+      # fading
+      fading = true;
+      fade-delta    = ${toString cfg.fadeDelta};
+      fade-in-step  = ${elemAt cfg.fadeSteps 0};
+      fade-out-step = ${elemAt cfg.fadeSteps 1};
+      fade-exclude  = ${toJSON cfg.fadeExclude};
+    '' + 
+    optionalString cfg.shadow ''
+
+      # shadows
+      shadow = true;
+      shadow-offset-x = ${toString (elemAt cfg.shadowOffsets 0)};
+      shadow-offset-y = ${toString (elemAt cfg.shadowOffsets 1)};
+      shadow-opacity  = ${cfg.shadowOpacity};
+      shadow-exclude  = ${toJSON cfg.shadowExclude};
+    '' + ''
+
+      # opacity
+      active-opacity   = ${cfg.activeOpacity};
+      inactive-opacity = ${cfg.inactiveOpacity};
+      menu-opacity     = ${cfg.menuOpacity};
+      
+      # other options
+      backend = ${toJSON cfg.backend};
+      vsync = ${toJSON cfg.vSync};
+      refresh-rate = ${toString cfg.refreshRate};
+    '' + cfg.extraOptions);
+
+in {
+
+  options.services.compton = {
+    enable = mkOption {
+      type = types.bool;
+      default = false;
+      example = true;
+      description = ''
+        Whether of not to enable Compton as the X.org composite manager.
+      '';
+    };
+
+    fade = mkOption {
+      type = types.bool;
+      default = false;
+      example = true;
+      description = ''
+        Fade windows in and out.
+      '';
+    };
+
+    fadeDelta = mkOption {
+      type = types.int;
+      default = 10;
+      example = 5;
+      description = ''
+        Time between fade animation step (in ms).
+      '';
+    };
+
+    fadeSteps = mkOption {
+      type = types.listOf types.str;
+      default = [ "0.028" "0.03" ];
+      example = [ "0.04" "0.04" ];
+      description = ''
+        Opacity change between fade steps (in and out).
+      '';
+    };
+
+    fadeExclude = mkOption {
+      type = types.listOf types.str;
+      default = [];
+      example = [
+        "window_type *= 'menu'"
+        "name ~= 'Firefox$'"
+        "focused = 1" 
+      ];
+      description = ''
+        List of condition of windows that should have no shadow.
+        See <literal>compton(1)</literal> man page for more examples.
+      '';
+    };
+
+    shadow = mkOption {
+      type = types.bool;
+      default = false;
+      example = true;
+      description = ''
+        Draw window shadows.
+      '';
+    };
+
+    shadowOffsets = mkOption {
+      type = types.listOf types.int;
+      default = [ (-15) (-15) ];
+      example = [ (-10) (-15) ];
+      description = ''
+        Left and right offset for shadows (in pixels).
+      '';
+    };
+
+    shadowOpacity = mkOption {
+      type = types.str;
+      default = "0.75";
+      example = "0.8";
+      description = ''
+        Window shadows opacity (number in range 0 - 1).
+      '';
+    };
+
+    shadowExclude = mkOption {
+      type = types.listOf types.str;
+      default = [];
+      example = [
+        "window_type *= 'menu'"
+        "name ~= 'Firefox$'"
+        "focused = 1" 
+      ];
+      description = ''
+        List of condition of windows that should have no shadow.
+        See <literal>compton(1)</literal> man page for more examples.
+      '';
+    };
+
+    activeOpacity = mkOption {
+      type = types.str;
+      default = "1.0";
+      example = "0.8";
+      description = ''
+        Opacity of active windows.
+      '';
+    };
+
+    inactiveOpacity = mkOption {
+      type = types.str;
+      default = "1.0";
+      example = "0.8";
+      description = ''
+        Opacity of inactive windows.
+      '';
+    };
+
+    menuOpacity = mkOption {
+      type = types.str;
+      default = "1.0";
+      example = "0.8";
+      description = ''
+        Opacity of dropdown and popup menu.
+      '';
+    };
+
+    backend = mkOption {
+      type = types.str;
+      default = "glx";
+      description = ''
+        Backend to use: <literal>glx</literal> or <literal>xrender</literal>.
+      '';
+    };
+
+    vSync = mkOption {
+     type = types.str;
+     default = "none";
+     example = "opengl-swc";
+     description = ''
+       Enable vertical synchronization using the specified method.
+       See <literal>compton(1)</literal> man page available methods.
+     '';
+    };
+
+    refreshRate = mkOption {
+      type = types.int;
+      default = 0;
+      example = 60;
+      description = ''
+       Screen refresh rate (0 = automatically detect).
+      '';
+    };
+
+    package = mkOption {
+      type = types.package;
+      default = pkgs.compton;
+      example = literalExample "pkgs.compton";
+      description = ''
+        Compton derivation to use.
+      '';
+    };
+
+    extraOptions = mkOption {
+      type = types.str;
+      default = "";
+      example = ''
+        unredir-if-possible = true;
+        dbe = true;
+      '';
+      description = ''
+        Additional Compton configuration.
+      '';
+    };
+  };
+
+  config = mkIf cfg.enable {
+    systemd.user.services.compton = {
+      description = "Compton composite manager";
+      wantedBy = [ "default.target" ];
+      serviceConfig = {
+        ExecStart = "${cfg.package}/bin/compton --config ${configFile}";
+        RestartSec = 3;
+        Restart = "always";
+      };
+      environment.DISPLAY = ":0";
+    };
+
+    environment.systemPackages = [ cfg.package ];
+  };
+
+}
diff --git a/nixos/modules/services/x11/desktop-managers/gnome3.nix b/nixos/modules/services/x11/desktop-managers/gnome3.nix
index 89b515a6e27..44c87c0760c 100644
--- a/nixos/modules/services/x11/desktop-managers/gnome3.nix
+++ b/nixos/modules/services/x11/desktop-managers/gnome3.nix
@@ -121,6 +121,7 @@ in {
     services.upower.enable = config.powerManagement.enable;
     services.dbus.packages = mkIf config.services.printing.enable [ pkgs.system-config-printer ];
     services.colord.enable = mkDefault true;
+    services.packagekit.enable = mkDefault true;
     hardware.bluetooth.enable = mkDefault true;
     services.xserver.libinput.enable = mkDefault true; # for controlling touchpad settings via gnome control center
 
diff --git a/nixos/modules/services/x11/desktop-managers/kde5.nix b/nixos/modules/services/x11/desktop-managers/kde5.nix
index 060dda1a70a..9f9bbe24623 100644
--- a/nixos/modules/services/x11/desktop-managers/kde5.nix
+++ b/nixos/modules/services/x11/desktop-managers/kde5.nix
@@ -50,13 +50,13 @@ in
     security.setuidOwners = [
       {
         program = "kcheckpass";
-        source = "${kde5.plasma-workspace}/lib/libexec/kcheckpass";
+        source = "${kde5.plasma-workspace.out}/lib/libexec/kcheckpass";
         owner = "root";
         setuid = true;
       }
       {
-        program = "start_kdeinit_wrapper";
-        source = "${kde5.plasma-workspace}/lib/libexec/kf5/start_kdeinit_wrapper";
+        program = "start_kdeinit";
+        source = "${kde5.kinit.out}/lib/libexec/kf5/start_kdeinit";
         owner = "root";
         setuid = true;
       }
@@ -65,10 +65,50 @@ in
     environment.systemPackages =
       [
         kde5.frameworkintegration
+        kde5.kactivities
+        kde5.kauth
+        kde5.kcmutils
+        kde5.kconfig
+        kde5.kconfigwidgets
+        kde5.kcoreaddons
+        kde5.kdbusaddons
+        kde5.kdeclarative
+        kde5.kded
+        kde5.kdesu
+        kde5.kdnssd
+        kde5.kemoticons
+        kde5.kfilemetadata
+        kde5.kglobalaccel
+        kde5.kguiaddons
+        kde5.kiconthemes
+        kde5.kidletime
+        kde5.kimageformats
         kde5.kinit
+        kde5.kio
+        kde5.kjobwidgets
+        kde5.knewstuff
+        kde5.knotifications
+        kde5.knotifyconfig
+        kde5.kpackage
+        kde5.kparts
+        kde5.kpeople
+        kde5.krunner
+        kde5.kservice
+        kde5.ktextwidgets
+        kde5.kwallet
+        kde5.kwayland
+        kde5.kwidgetsaddons
+        kde5.kxmlgui
+        kde5.kxmlrpcclient
+        kde5.plasma-framework
+        kde5.solid
+        kde5.sonnet
+        kde5.threadweaver
 
         kde5.breeze
+        kde5.kactivitymanagerd
         kde5.kde-cli-tools
+        kde5.kdecoration
         kde5.kdeplasma-addons
         kde5.kgamma5
         kde5.khelpcenter
@@ -76,12 +116,16 @@ in
         kde5.kinfocenter
         kde5.kmenuedit
         kde5.kscreen
+        kde5.kscreenlocker
         kde5.ksysguard
         kde5.kwayland
         kde5.kwin
         kde5.kwrited
+        kde5.libkscreen
+        kde5.libksysguard
         kde5.milou
         kde5.oxygen
+        kde5.plasma-integration
         kde5.polkit-kde-agent
         kde5.systemsettings
 
diff --git a/nixos/modules/services/x11/display-managers/default.nix b/nixos/modules/services/x11/display-managers/default.nix
index 862ddc1d13f..83d679ebe01 100644
--- a/nixos/modules/services/x11/display-managers/default.nix
+++ b/nixos/modules/services/x11/display-managers/default.nix
@@ -34,7 +34,7 @@ let
 
       ${optionalString cfg.displayManager.logToJournal ''
         if [ -z "$_DID_SYSTEMD_CAT" ]; then
-          _DID_SYSTEMD_CAT=1 exec ${config.systemd.package}/bin/systemd-cat -t xsession -- "$0" "$1"
+          _DID_SYSTEMD_CAT=1 exec ${config.systemd.package}/bin/systemd-cat -t xsession -- "$0" "$@"
         fi
       ''}
 
diff --git a/nixos/modules/services/x11/display-managers/lightdm.nix b/nixos/modules/services/x11/display-managers/lightdm.nix
index ac7db3d9adc..47786f0a432 100644
--- a/nixos/modules/services/x11/display-managers/lightdm.nix
+++ b/nixos/modules/services/x11/display-managers/lightdm.nix
@@ -4,7 +4,8 @@ with lib;
 
 let
 
-  dmcfg = config.services.xserver.displayManager;
+  xcfg = config.services.xserver;
+  dmcfg = xcfg.displayManager;
   xEnv = config.systemd.services."display-manager".environment;
   cfg = dmcfg.lightdm;
 
@@ -36,16 +37,31 @@ let
   lightdmConf = writeText "lightdm.conf"
     ''
       [LightDM]
-      greeter-user = ${config.users.extraUsers.lightdm.name}
-      greeters-directory = ${cfg.greeter.package}
+      ${optionalString cfg.greeter.enable ''
+        greeter-user = ${config.users.extraUsers.lightdm.name}
+        greeters-directory = ${cfg.greeter.package}
+      ''}
       sessions-directory = ${dmcfg.session.desktops}
 
       [Seat:*]
       xserver-command = ${xserverWrapper}
       session-wrapper = ${dmcfg.session.script}
-      greeter-session = ${cfg.greeter.name}
+      ${optionalString cfg.greeter.enable ''
+        greeter-session = ${cfg.greeter.name}
+      ''}
+      ${optionalString cfg.autoLogin.enable ''
+        autologin-user = ${cfg.autoLogin.user}
+        autologin-user-timeout = ${toString cfg.autoLogin.timeout}
+        autologin-session = ${defaultSessionName}
+      ''}
       ${cfg.extraSeatDefaults}
     '';
+
+  defaultSessionName =
+    let
+      dm = xcfg.desktopManager.default;
+      wm = xcfg.windowManager.default;
+    in dm + optionalString (wm != "none") (" + " + wm);
 in
 {
   # Note: the order in which lightdm greeter modules are imported
@@ -68,6 +84,14 @@ in
       };
 
       greeter =  {
+        enable = mkOption {
+          type = types.bool;
+          default = true;
+          description = ''
+            If set to false, run lightdm in greeterless mode. This only works if autologin
+            is enabled and autoLogin.timeout is zero.
+          '';
+        };
         package = mkOption {
           type = types.package;
           description = ''
@@ -102,10 +126,67 @@ in
         description = "Extra lines to append to SeatDefaults section.";
       };
 
+      autoLogin = mkOption {
+        default = {};
+        description = ''
+          Configuration for automatic login.
+        '';
+
+        type = types.submodule {
+          options = {
+            enable = mkOption {
+              type = types.bool;
+              default = false;
+              description = ''
+                Automatically log in as the specified <option>autoLogin.user</option>.
+              '';
+            };
+
+            user = mkOption {
+              type = types.nullOr types.str;
+              default = null;
+              description = ''
+                User to be used for the automatic login.
+              '';
+            };
+
+            timeout = mkOption {
+              type = types.int;
+              default = 0;
+              description = ''
+                Show the greeter for this many seconds before automatic login occurs.
+              '';
+            };
+          };
+        };
+      };
+
     };
   };
 
   config = mkIf cfg.enable {
+
+    assertions = [
+      { assertion = cfg.autoLogin.enable -> cfg.autoLogin.user != null;
+        message = ''
+          LightDM auto-login requires services.xserver.displayManager.lightdm.autoLogin.user to be set
+        '';
+      }
+      { assertion = cfg.autoLogin.enable -> elem defaultSessionName dmcfg.session.names;
+        message = ''
+          LightDM auto-login requires that services.xserver.desktopManager.default and
+          services.xserver.windowMananger.default are set to valid values. The current
+          default session: ${defaultSessionName} is not valid.
+        '';
+      }
+      { assertion = !cfg.greeter.enable -> (cfg.autoLogin.enable && cfg.autoLogin.timeout == 0);
+        message = ''
+          LightDM can only run without greeter if automatic login is enabled and the timeout for it
+          is set to zero.
+        '';
+      }
+    ];
+
     services.xserver.displayManager.slim.enable = false;
 
     services.xserver.displayManager.job = {
@@ -144,6 +225,17 @@ in
         session  optional ${pkgs.systemd}/lib/security/pam_systemd.so
       '';
     };
+    security.pam.services.lightdm-autologin.text = ''
+        auth     requisite pam_nologin.so
+        auth     required  pam_succeed_if.so uid >= 1000 quiet
+        auth     required  pam_permit.so
+
+        account  include   lightdm
+
+        password include   lightdm
+
+        session  include   lightdm
+    '';
 
     users.extraUsers.lightdm = {
       createHome = true;
diff --git a/nixos/modules/services/x11/display-managers/sddm.nix b/nixos/modules/services/x11/display-managers/sddm.nix
index 7a17a222bca..16d1e89e8d9 100644
--- a/nixos/modules/services/x11/display-managers/sddm.nix
+++ b/nixos/modules/services/x11/display-managers/sddm.nix
@@ -27,6 +27,7 @@ let
     ${cfg.stopScript}
   '';
 
+
   cfgFile = pkgs.writeText "sddm.conf" ''
     [General]
     HaltCommand=${pkgs.systemd}/bin/systemctl poweroff
@@ -154,7 +155,7 @@ in
               type = types.bool;
               default = false;
               description = ''
-                Automatically log in as the sepecified <option>autoLogin.user</option>.
+                Automatically log in as <option>autoLogin.user</option>.
               '';
             };
 
@@ -162,7 +163,7 @@ in
               type = types.nullOr types.str;
               default = null;
               description = ''
-                User to be used for the autologin.
+                User to be used for the automatic login.
               '';
             };
 
@@ -170,8 +171,8 @@ in
               type = types.bool;
               default = false;
               description = ''
-                If true automatic login will kick in again on session exit, otherwise it
-                will work only the first time.
+                If true automatic login will kick in again on session exit (logout), otherwise it
+                will only log in automatically when the display-manager is started.
               '';
             };
           };
diff --git a/nixos/modules/services/x11/hardware/libinput.nix b/nixos/modules/services/x11/hardware/libinput.nix
index 12cc1e7e646..14c7131e611 100644
--- a/nixos/modules/services/x11/hardware/libinput.nix
+++ b/nixos/modules/services/x11/hardware/libinput.nix
@@ -198,6 +198,8 @@ in {
 
     environment.systemPackages = [ pkgs.xorg.xf86inputlibinput ];
 
+    services.udev.packages = [ pkgs.libinput ];
+
     services.xserver.config =
       ''
         # Automatically enable the libinput driver for all touchpads.
diff --git a/nixos/modules/services/x11/redshift.nix b/nixos/modules/services/x11/redshift.nix
index 8f1e317e52b..63ffa29c199 100644
--- a/nixos/modules/services/x11/redshift.nix
+++ b/nixos/modules/services/x11/redshift.nix
@@ -108,7 +108,7 @@ in {
         RestartSec = 3;
         Restart = "always";
       };
-      environment = { DISPLAY = ":0"; };
+      environment = { DISPLAY = ":${toString config.services.xserver.display}"; };
     };
   };
 
diff --git a/nixos/modules/services/x11/unclutter.nix b/nixos/modules/services/x11/unclutter.nix
index 3260fdb3d54..ebc195d108d 100644
--- a/nixos/modules/services/x11/unclutter.nix
+++ b/nixos/modules/services/x11/unclutter.nix
@@ -39,12 +39,6 @@ in {
       default = 1;
     };
 
-    displayName = mkOption {
-      description = "Name of the X11 display";
-      type = types.str;
-      default = ":0";
-    };
-
     excluded = mkOption {
       description = "Names of windows where unclutter should not apply";
       type = types.listOf types.str;
@@ -67,7 +61,7 @@ in {
       serviceConfig.ExecStart = ''
         ${cfg.package}/bin/unclutter \
           -idle ${toString cfg.timeout} \
-          -display ${cfg.displayName} \
+          -display :${toString config.services.xserver.display} \
           -jitter ${toString (cfg.threeshold - 1)} \
           ${optionalString cfg.keystroke "-keystroke"} \
           ${concatMapStrings (x: " -"+x) cfg.extraOptions} \
diff --git a/nixos/modules/services/x11/window-managers/default.nix b/nixos/modules/services/x11/window-managers/default.nix
index fce71bbda7e..94f1aa3add7 100644
--- a/nixos/modules/services/x11/window-managers/default.nix
+++ b/nixos/modules/services/x11/window-managers/default.nix
@@ -19,6 +19,7 @@ in
     ./jwm.nix
     ./metacity.nix
     ./openbox.nix
+    ./pekwm.nix
     ./notion.nix
     ./ratpoison.nix
     ./sawfish.nix
diff --git a/nixos/modules/services/x11/window-managers/pekwm.nix b/nixos/modules/services/x11/window-managers/pekwm.nix
new file mode 100644
index 00000000000..850335ce7dd
--- /dev/null
+++ b/nixos/modules/services/x11/window-managers/pekwm.nix
@@ -0,0 +1,25 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.xserver.windowManager.pekwm;
+in
+{
+  ###### interface
+  options = {
+    services.xserver.windowManager.pekwm.enable = mkEnableOption "pekwm";
+  };
+
+  ###### implementation
+  config = mkIf cfg.enable {
+    services.xserver.windowManager.session = singleton {
+      name = "pekwm";
+      start = ''
+        ${pkgs.pekwm}/bin/pekwm &
+        waitPID=$!
+      '';
+    };
+    environment.systemPackages = [ pkgs.pekwm ];
+  };
+}
diff --git a/nixos/modules/system/boot/luksroot.nix b/nixos/modules/system/boot/luksroot.nix
index 15881b6d371..8dad09c8920 100644
--- a/nixos/modules/system/boot/luksroot.nix
+++ b/nixos/modules/system/boot/luksroot.nix
@@ -36,7 +36,7 @@ let
           ${optionalString (header != null) "--header=${header}"} \
           ${optionalString (keyFile != null) "--key-file=${keyFile} ${optionalString (keyFileSize != null) "--keyfile-size=${toString keyFileSize}"}"} \
           > /.luksopen_args
-        get_password "Enter LUKS Passphrase" cryptsetup-askpass
+        cryptsetup-askpass
         rm /.luksopen_args
     }
 
@@ -78,7 +78,9 @@ let
         for try in $(seq 3); do
 
             ${optionalString yubikey.twoFactor ''
-            k_user="$(get_password "Enter two-factor passphrase" cat)"
+            echo -n "Enter two-factor passphrase: "
+            read -s k_user
+            echo
             ''}
 
             if [ ! -z "$k_user" ]; then
@@ -461,26 +463,6 @@ in
       ''}
     '';
 
-    boot.initrd.preDeviceCommands = ''
-      get_password() {
-        local ret
-        local reply
-        local tty_stat
-
-        tty_stat="$(stty -g)"
-        stty -echo
-        for i in `seq 1 3`; do
-          echo -n "$1: "
-          read reply
-          echo "$reply" | "$2"
-          if [ "$?" = "0" ]; then
-            break
-          fi
-        done
-        stty "$tty_stat"
-      }
-    '';
-
     boot.initrd.preLVMCommands = concatStrings (mapAttrsToList openCommand preLVM);
     boot.initrd.postDeviceCommands = concatStrings (mapAttrsToList openCommand postLVM);
 
diff --git a/nixos/modules/system/boot/plymouth.nix b/nixos/modules/system/boot/plymouth.nix
index 82c1032937c..60a587af8e9 100644
--- a/nixos/modules/system/boot/plymouth.nix
+++ b/nixos/modules/system/boot/plymouth.nix
@@ -112,6 +112,7 @@ in
       sed -i '/loginctl/d' $out/71-seat.rules
     '';
 
+    # We use `mkAfter` to ensure that LUKS password prompt would be shown earlier than the splash screen.
     boot.initrd.preLVMCommands = mkAfter ''
       mkdir -p /etc/plymouth
       ln -s ${configFile} /etc/plymouth/plymouthd.conf
@@ -121,7 +122,16 @@ in
       ln -s $extraUtils/lib/plymouth /etc/plymouth/plugins
 
       plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session
-      plymouth --show-splash
+      plymouth show-splash
+    '';
+
+    boot.initrd.postMountCommands = ''
+      plymouth update-root-fs --new-root-dir="$targetRoot"
+    '';
+
+    # `mkBefore` to ensure that any custom prompts would be visible.
+    boot.initrd.preFailCommands = mkBefore ''
+      plymouth quit --wait
     '';
 
   };
diff --git a/nixos/modules/system/boot/stage-1-init.sh b/nixos/modules/system/boot/stage-1-init.sh
index 6b1bf0b3e02..7705dcb2d12 100644
--- a/nixos/modules/system/boot/stage-1-init.sh
+++ b/nixos/modules/system/boot/stage-1-init.sh
@@ -14,8 +14,7 @@ export LVM_SUPPRESS_FD_WARNINGS=true
 fail() {
     if [ -n "$panicOnFail" ]; then exit 1; fi
 
-    # If we have a splash screen started, quit it.
-    command -v plymouth >/dev/null 2>&1 && plymouth quit
+    @preFailCommands@
 
     # If starting stage 2 failed, allow the user to repair the problem
     # in an interactive shell.
diff --git a/nixos/modules/system/boot/stage-1.nix b/nixos/modules/system/boot/stage-1.nix
index 56a9c38b8f2..4b1d3efb411 100644
--- a/nixos/modules/system/boot/stage-1.nix
+++ b/nixos/modules/system/boot/stage-1.nix
@@ -208,7 +208,7 @@ let
     inherit (config.boot) resumeDevice devSize runSize;
 
     inherit (config.boot.initrd) checkJournalingFS
-      preLVMCommands preDeviceCommands postDeviceCommands postMountCommands kernelModules;
+      preLVMCommands preDeviceCommands postDeviceCommands postMountCommands preFailCommands kernelModules;
 
     resumeDevices = map (sd: if sd ? device then sd.device else "/dev/disk/by-label/${sd.label}")
                     (filter (sd: (sd ? label || hasPrefix "/dev/" sd.device) && !sd.randomEncryption) config.swapDevices);
@@ -336,6 +336,14 @@ in
       '';
     };
 
+    boot.initrd.preFailCommands = mkOption {
+      default = "";
+      type = types.lines;
+      description = ''
+        Shell commands to be executed before the failure prompt is shown.
+      '';
+    };
+
     boot.initrd.extraUtilsCommands = mkOption {
       internal = true;
       default = "";
diff --git a/nixos/modules/system/boot/systemd-lib.nix b/nixos/modules/system/boot/systemd-lib.nix
index 8acaa5212f5..2e93693cbfc 100644
--- a/nixos/modules/system/boot/systemd-lib.nix
+++ b/nixos/modules/system/boot/systemd-lib.nix
@@ -176,7 +176,7 @@ rec {
       ${optionalString (type == "system") ''
         # Stupid misc. symlinks.
         ln -s ${cfg.defaultUnit} $out/default.target
-
+        ln -s ${cfg.ctrlAltDelUnit} $out/ctrl-alt-del.target
         ln -s rescue.target $out/kbrequest.target
 
         mkdir -p $out/getty.target.wants/
diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix
index 5c8cce5066a..df72be1b4be 100644
--- a/nixos/modules/system/boot/systemd.nix
+++ b/nixos/modules/system/boot/systemd.nix
@@ -120,7 +120,6 @@ let
       "systemd-poweroff.service"
       "halt.target"
       "systemd-halt.service"
-      "ctrl-alt-del.target"
       "shutdown.target"
       "umount.target"
       "final.target"
@@ -162,7 +161,6 @@ let
       "systemd-hostnamed.service"
       "systemd-binfmt.service"
     ]
-
     ++ cfg.additionalUpstreamSystemUnits;
 
   upstreamSystemWants =
@@ -485,6 +483,15 @@ in
       description = "Default unit started when the system boots.";
     };
 
+    systemd.ctrlAltDelUnit = mkOption {
+      default = "reboot.target";
+      type = types.str;
+      example = "poweroff.target";
+      description = ''
+        Target that should be started when Ctrl-Alt-Delete is pressed.
+      '';
+    };
+
     systemd.globalEnvironment = mkOption {
       type = types.attrs;
       default = {};
diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix
index 19292bd1ef7..80aec1bba0f 100644
--- a/nixos/modules/tasks/filesystems/zfs.nix
+++ b/nixos/modules/tasks/filesystems/zfs.nix
@@ -270,7 +270,23 @@ in
               ("$zpool_cmd" list "${pool}" >/dev/null) || "$zpool_cmd" import -d ${cfgZfs.devNodes} -N ${optionalString cfgZfs.forceImportAll "-f"} "${pool}"
             '';
           };
-      in listToAttrs (map createImportService dataPools) // {
+
+        # This forces a sync of any ZFS pools prior to poweroff, even if they're set
+        # to sync=disabled.
+        createSyncService = pool:
+          nameValuePair "zfs-sync-${pool}" {
+            description = "Sync ZFS pool \"${pool}\"";
+            wantedBy = [ "shutdown.target" ];
+            serviceConfig = {
+              Type = "oneshot";
+              RemainAfterExit = true;
+            };
+            script = ''
+              ${zfsUserPkg}/sbin/zfs set nixos:shutdown-time="$(date)" "${pool}"
+            '';
+          };
+
+      in listToAttrs (map createImportService dataPools ++ map createSyncService allPools) // {
         "zfs-mount" = { after = [ "systemd-modules-load.service" ]; };
         "zfs-share" = { after = [ "systemd-modules-load.service" ]; };
         "zed" = { after = [ "systemd-modules-load.service" ]; };
diff --git a/nixos/modules/virtualisation/containers.nix b/nixos/modules/virtualisation/containers.nix
index 13ecb8e25ed..b3870caece0 100644
--- a/nixos/modules/virtualisation/containers.nix
+++ b/nixos/modules/virtualisation/containers.nix
@@ -4,22 +4,6 @@ with lib;
 
 let
 
-  nixos-container = pkgs.substituteAll {
-    name = "nixos-container";
-    dir = "bin";
-    isExecutable = true;
-    src = ./nixos-container.pl;
-    perl = "${pkgs.perl}/bin/perl -I${pkgs.perlPackages.FileSlurp}/lib/perl5/site_perl";
-    su = "${pkgs.shadow.su}/bin/su";
-    inherit (pkgs) utillinux;
-
-    postInstall = ''
-      t=$out/etc/bash_completion.d
-      mkdir -p $t
-      cp ${./nixos-container-completion.sh} $t/nixos-container
-    '';
-  };
-
   # The container's init script, a small wrapper around the regular
   # NixOS stage-2 init script.
   containerInit = pkgs.writeScript "container-init"
@@ -410,7 +394,7 @@ in
         ExecReload = pkgs.writeScript "reload-container"
           ''
             #! ${pkgs.stdenv.shell} -e
-            ${nixos-container}/bin/nixos-container run "$INSTANCE" -- \
+            ${pkgs.nixos-container}/bin/nixos-container run "$INSTANCE" -- \
               bash --login -c "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/bin/switch-to-configuration test"
           '';
 
@@ -498,6 +482,6 @@ in
 
     networking.dhcpcd.denyInterfaces = [ "ve-*" ];
 
-    environment.systemPackages = [ nixos-container ];
+    environment.systemPackages = [ pkgs.nixos-container ];
   });
 }
diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix
index 9d9b725a805..b77b319f4a2 100644
--- a/nixos/modules/virtualisation/qemu-vm.nix
+++ b/nixos/modules/virtualisation/qemu-vm.nix
@@ -62,7 +62,9 @@ let
       idx=2
       extraDisks=""
       ${flip concatMapStrings cfg.emptyDiskImages (size: ''
-        ${pkgs.qemu_kvm}/bin/qemu-img create -f qcow2 "empty$idx.qcow2" "${toString size}M"
+        if ! test -e "empty$idx.qcow2"; then
+            ${pkgs.qemu_kvm}/bin/qemu-img create -f qcow2 "empty$idx.qcow2" "${toString size}M"
+        fi
         extraDisks="$extraDisks -drive index=$idx,file=$(pwd)/empty$idx.qcow2,if=${cfg.qemu.diskInterface},werror=report"
         idx=$((idx + 1))
       '')}
diff --git a/nixos/release.nix b/nixos/release.nix
index 1800122fa2e..184e340341f 100644
--- a/nixos/release.nix
+++ b/nixos/release.nix
@@ -231,6 +231,7 @@ in rec {
   tests.gnome3 = callTest tests/gnome3.nix {};
   tests.gnome3-gdm = callTest tests/gnome3-gdm.nix {};
   tests.grsecurity = callTest tests/grsecurity.nix {};
+  tests.hibernate = callTest tests/hibernate.nix {};
   tests.i3wm = callTest tests/i3wm.nix {};
   tests.installer = callSubTests tests/installer.nix {};
   tests.influxdb = callTest tests/influxdb.nix {};
diff --git a/nixos/tests/hibernate.nix b/nixos/tests/hibernate.nix
new file mode 100644
index 00000000000..787929f8904
--- /dev/null
+++ b/nixos/tests/hibernate.nix
@@ -0,0 +1,42 @@
+# Test whether hibernation from partition works.
+
+import ./make-test.nix (pkgs: {
+  name = "hibernate";
+
+  nodes = {
+    machine = { config, lib, pkgs, ... }: with lib; {
+      virtualisation.emptyDiskImages = [ config.virtualisation.memorySize ];
+
+      systemd.services.backdoor.conflicts = [ "sleep.target" ];
+
+      swapDevices = mkOverride 0 [ { device = "/dev/vdb"; } ];
+
+      networking.firewall.allowedTCPPorts = [ 4444 ];
+
+      systemd.services.listener.serviceConfig.ExecStart = "${pkgs.netcat}/bin/nc -l -p 4444";
+    };
+
+    probe = { config, lib, pkgs, ...}: {
+      environment.systemPackages = [ pkgs.netcat ];
+    };
+  };
+
+  # 9P doesn't support reconnection to virtio transport after a hibernation.
+  # Therefore, machine just hangs on any Nix store access.
+  # To work around it we run a daemon which listens to a TCP connection and
+  # try to connect to it as a test.
+
+  testScript =
+    ''
+      $machine->waitForUnit("multi-user.target");
+      $machine->succeed("mkswap /dev/vdb");
+      $machine->succeed("swapon -a");
+      $machine->startJob("listener");
+      $machine->succeed("systemctl hibernate &");
+      $machine->waitForShutdown;
+      $machine->start;
+      $probe->waitForUnit("network.target");
+      $probe->waitUntilSucceeds("echo test | nc -c machine 4444");
+    '';
+
+})
diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix
index 4a30cc18b02..e71168a7366 100644
--- a/nixos/tests/installer.nix
+++ b/nixos/tests/installer.nix
@@ -210,6 +210,10 @@ let
                 pkgs.nixos-artwork
                 pkgs.perlPackages.XMLLibXML
                 pkgs.perlPackages.ListCompare
+
+                # add curl so that rather than seeing the test attempt to download
+                # curl's tarball, we see what it's trying to download
+                pkgs.curl
               ]
               ++ optional (bootLoader == "grub" && grubVersion == 1) pkgs.grub
               ++ optionals (bootLoader == "grub" && grubVersion == 2) [ pkgs.grub2 pkgs.grub2_efi ];
diff --git a/pkgs/applications/audio/eq10q/default.nix b/pkgs/applications/audio/eq10q/default.nix
index e2adf9e131c..0ff83a9023e 100644
--- a/pkgs/applications/audio/eq10q/default.nix
+++ b/pkgs/applications/audio/eq10q/default.nix
@@ -1,10 +1,10 @@
 { stdenv, fetchurl, cmake, fftw, gtkmm, libxcb, lv2, pkgconfig, xorg }:
 stdenv.mkDerivation rec {
-  name = "eq10q-2-${version}";
-  version = "beta7.1";
+  name = "eq10q-${version}";
+  version = "2.0";
   src = fetchurl {
     url = "mirror://sourceforge/project/eq10q/${name}.tar.gz";
-    sha256 = "1jmrcx4jlx8kgsy5n4jcxa6qkjqvx7d8l2p7dsmw4hj20s39lgyi";
+    sha256 = "08vlfly0qqrfqiwpn5g5php680icpk97pwnwjadmj5syhgvi0i3h";
   };
 
   buildInputs = [ cmake fftw gtkmm libxcb lv2 pkgconfig xorg.libpthreadstubs xorg.libXdmcp xorg.libxshmfence ];
diff --git a/pkgs/applications/audio/pd-plugins/puremapping/default.nix b/pkgs/applications/audio/pd-plugins/puremapping/default.nix
index 9300d7461fe..4f285552576 100644
--- a/pkgs/applications/audio/pd-plugins/puremapping/default.nix
+++ b/pkgs/applications/audio/pd-plugins/puremapping/default.nix
@@ -1,10 +1,11 @@
 { stdenv, fetchurl, unzip, puredata }:
 
 stdenv.mkDerivation rec {
-  name = "puremapping-20160130";
+  name = "puremapping-${version}";
+  version = "20160130";
 
   src = fetchurl {
-    url = "http://www.chnry.net/data/puremapping-20160130-generic.zip";
+    url = "http://www.chnry.net/data/puremapping-${version}-generic.zip";
     name = "puremapping";
     sha256 = "1h7qgqd8srrxw2y1rkdw5js4k6f5vc8x6nlm2mq9mq9vjck7n1j7";
   };
diff --git a/pkgs/applications/audio/pd-plugins/zexy/default.nix b/pkgs/applications/audio/pd-plugins/zexy/default.nix
index 68996e9e6e4..7cd244c9ea4 100644
--- a/pkgs/applications/audio/pd-plugins/zexy/default.nix
+++ b/pkgs/applications/audio/pd-plugins/zexy/default.nix
@@ -16,7 +16,6 @@ stdenv.mkDerivation rec {
     for i in ${puredata}/include/pd/*; do
       ln -s $i .
     done
-    patchShebangs
     ./bootstrap.sh
     ./configure --enable-lpt=no --prefix=$out
   '';
diff --git a/pkgs/applications/audio/plugin-torture/default.nix b/pkgs/applications/audio/plugin-torture/default.nix
index cca4538422f..e4fb83439e0 100644
--- a/pkgs/applications/audio/plugin-torture/default.nix
+++ b/pkgs/applications/audio/plugin-torture/default.nix
@@ -1,13 +1,14 @@
-{ stdenv, fetchgit, boost, ladspaH, lilv, lv2, pkgconfig, serd, sord, sratom }:
+{ stdenv, fetchFromGitHub, boost, ladspaH, lilv, lv2, pkgconfig, serd, sord, sratom }:
 
 stdenv.mkDerivation rec {
-  name = "plugin-torture-git-${version}";
-  version = "2013-10-03";
+  name = "plugin-torture-${version}";
+  version = "5";
 
-  src = fetchgit {
-    url = "https://github.com/cth103/plugin-torture";
-    rev = "9ee06016982bdfbaa215cd0468cc6ada6367462a";
-    sha256 = "0ynzfs3z95lbw4l1w276as2a37zxp0cw6pi3lbikr0qk0r7j5j10";
+  src = fetchFromGitHub {
+    owner = "cth103";
+    repo = "plugin-torture";
+    rev = "v${version}";
+    sha256 = "1mlgxjsyaz86wm4k32ll2w5nghjffnsdqlm6kjv02a4dpb2bfrih";
   };
 
   buildInputs = [ boost ladspaH lilv lv2 pkgconfig serd sord sratom ];
@@ -15,7 +16,7 @@ stdenv.mkDerivation rec {
   installPhase = ''
     mkdir -p $out/bin
     cp plugin-torture $out/bin/
-    cp README $out/bin/
+    cp find-safe-plugins $out/bin/
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/audio/puredata/default.nix b/pkgs/applications/audio/puredata/default.nix
index 8fddcccd51c..daa017d1ccb 100644
--- a/pkgs/applications/audio/puredata/default.nix
+++ b/pkgs/applications/audio/puredata/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation  rec {
   name = "puredata-${version}";
-  version = "0.45-4";
+  version = "0.47-1";
 
   src = fetchurl {
-    url = "mirror://sourceforge/pure-data/pd-${version}.src.tar.gz";
-    sha256 = "1ls2ap5yi2zxvmr247621g4jx0hhfds4j5704a050bn2n3l0va2p";
+    url = "http://msp.ucsd.edu/Software/pd-${version}.src.tar.gz";
+    sha256 = "0k5s949kqd7yw97h3m8z81bjz32bis9m4ih8df1z0ymipnafca67";
   };
 
   patchPhase = ''
diff --git a/pkgs/applications/editors/emacs-25/default.nix b/pkgs/applications/editors/emacs-25/default.nix
index 44581ffb4d0..9d97146cd2a 100644
--- a/pkgs/applications/editors/emacs-25/default.nix
+++ b/pkgs/applications/editors/emacs-25/default.nix
@@ -5,6 +5,7 @@
 , autoconf, automake
 , withX ? !stdenv.isDarwin
 , withGTK3 ? false, gtk3 ? null
+, withXwidgets ? false, webkitgtk24x ? null, wrapGAppsHook ? null, glib_networking ? null
 , withGTK2 ? true, gtk2
 }:
 
@@ -14,6 +15,7 @@ assert withGTK2 -> withX || stdenv.isDarwin;
 assert withGTK3 -> withX || stdenv.isDarwin;
 assert withGTK2 -> !withGTK3 && gtk2 != null;
 assert withGTK3 -> !withGTK2 && gtk3 != null;
+assert withXwidgets -> withGTK3 && webkitgtk24x != null;
 
 let
   toolkit =
@@ -49,19 +51,21 @@ stdenv.mkDerivation rec {
         imagemagick gconf ]
     ++ stdenv.lib.optional (withX && withGTK2) gtk2
     ++ stdenv.lib.optional (withX && withGTK3) gtk3
-    ++ stdenv.lib.optional (stdenv.isDarwin && withX) cairo;
+    ++ stdenv.lib.optional (stdenv.isDarwin && withX) cairo
+    ++ stdenv.lib.optionals withXwidgets [webkitgtk24x wrapGAppsHook glib_networking];
 
   propagatedBuildInputs = stdenv.lib.optionals stdenv.isDarwin [ AppKit GSS ImageIO ];
 
   hardeningDisable = [ "format" ];
 
   configureFlags =
-    if stdenv.isDarwin
+    (if stdenv.isDarwin
       then [ "--with-ns" "--disable-ns-self-contained" ]
     else if withX
       then [ "--with-x-toolkit=${toolkit}" "--with-xft" ]
       else [ "--with-x=no" "--with-xpm=no" "--with-jpeg=no" "--with-png=no"
-             "--with-gif=no" "--with-tiff=no" ];
+             "--with-gif=no" "--with-tiff=no" ])
+    ++ stdenv.lib.optional withXwidgets "--with-xwidgets";
 
   NIX_CFLAGS_COMPILE = stdenv.lib.optionalString (stdenv.isDarwin && withX)
     "-I${cairo.dev}/include/cairo";
diff --git a/pkgs/applications/editors/geany/with-vte.nix b/pkgs/applications/editors/geany/with-vte.nix
index ffffed1b853..679125b5ec4 100644
--- a/pkgs/applications/editors/geany/with-vte.nix
+++ b/pkgs/applications/editors/geany/with-vte.nix
@@ -2,5 +2,7 @@
 let name = builtins.replaceStrings ["geany-"] ["geany-with-vte-"] geany.name;
 in
 runCommand "${name}" { nativeBuildInputs = [ makeWrapper ]; } "
+   mkdir -p $out
+   ln -s ${geany}/share $out
    makeWrapper ${geany}/bin/geany $out/bin/geany --prefix LD_LIBRARY_PATH : ${gnome.vte}/lib
 "
diff --git a/pkgs/applications/editors/uemacs/default.nix b/pkgs/applications/editors/uemacs/default.nix
new file mode 100644
index 00000000000..551fa67d986
--- /dev/null
+++ b/pkgs/applications/editors/uemacs/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchgit, ncurses }:
+
+stdenv.mkDerivation rec {
+  name = "uemacs-${version}";
+  version = "2014-12-08";
+
+  src = fetchgit {
+    url = git://git.kernel.org/pub/scm/editors/uemacs/uemacs.git;
+    rev = "8841922689769960fa074fbb053cb8507f2f3ed9";
+    sha256 = "14yq7kpkax111cg6k7i3mnqk7sq7a65krq6qizzj7vvnm7bsj3sd";
+  };
+
+  postPatch = ''
+    substituteInPlace Makefile \
+      --replace "-lcurses" "-lncurses" \
+      --replace "CFLAGS=-O2" "CFLAGS+=" \
+      --replace "BINDIR=/usr/bin" "BINDIR=$out/bin" \
+      --replace "LIBDIR=/usr/lib" "LIBDIR=$out/share/uemacs"
+    substituteInPlace epath.h \
+      --replace "/usr/global/lib/" "$out/share/uemacs/" \
+      --replace "/usr/local/bin/" "$out/bin/" \
+      --replace "/usr/local/lib/" "$out/share/uemacs/" \
+      --replace "/usr/local/" "$out/bin/" \
+      --replace "/usr/lib/" "$out/share/uemacs/"
+    mkdir -p $out/bin $out/share/uemacs
+  '';
+
+  buildInputs = [ ncurses ];
+
+  meta = with stdenv.lib; {
+    homepage = https://git.kernel.org/cgit/editors/uemacs/uemacs.git;
+    description = "Torvalds Micro-emacs fork";
+    longDescription = ''
+      uEmacs/PK 4.0 is a full screen editor based on MicroEMACS 3.9e
+    '';
+    license = licenses.unfree;
+  };
+}
diff --git a/pkgs/applications/editors/vis/default.nix b/pkgs/applications/editors/vis/default.nix
index 8c7cf73f432..496f04142e1 100644
--- a/pkgs/applications/editors/vis/default.nix
+++ b/pkgs/applications/editors/vis/default.nix
@@ -1,12 +1,18 @@
-{ stdenv, fetchFromGitHub, unzip, pkgconfig, makeWrapper, ncurses, libtermkey, lpeg, lua }:
+{ stdenv, fetchFromGitHub, unzip, pkgconfig, makeWrapper
+, ncurses, libtermkey, lpeg, lua
+, acl ? null, libselinux ? null
+, version ? "2016-07-15"
+, rev ? "5c2cee9461ef1199f2e80ddcda699595b11fdf08"
+, sha256 ? "1jmsv72hq0c2f2rnpllvd70cmxbjwfhynzwaxx24f882zlggwsnd"
+}:
 
 stdenv.mkDerivation rec {
   name = "vis-nightly-${version}";
-  version = "2016-04-15";
+  inherit version;
 
   src = fetchFromGitHub {
-    sha256 = "0a4gpwniy5r9dpfq51fxjxxnxavdjv8x76w9bbjnbnh8n63p3sj7";
-    rev = "472c559a273d3c7b0f5ee92260c5544bc3d74576";
+    inherit sha256;
+    inherit rev;
     repo = "vis";
     owner = "martanne";
   };
@@ -14,12 +20,14 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ makeWrapper ];
 
   buildInputs = [
-     unzip
-     pkgconfig
-     ncurses
-     libtermkey
-     lua
-     lpeg
+    unzip pkgconfig
+    ncurses
+    libtermkey
+    lua
+    lpeg
+  ] ++ stdenv.lib.optional stdenv.isLinux [
+    acl
+    libselinux
   ];
 
   LUA_CPATH="${lpeg}/lib/lua/${lua.luaversion}/?.so;";
@@ -33,11 +41,10 @@ stdenv.mkDerivation rec {
       --prefix VIS_PATH : "$out/share/vis"
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "A vim like editor";
     homepage = http://github.com/martanne/vis;
-    license = stdenv.lib.licenses.isc;
-    maintainers = [ stdenv.lib.maintainers.vrthra ];
+    license = licenses.isc;
+    maintainers = [ maintainers.vrthra ];
   };
 }
-
diff --git a/pkgs/applications/graphics/ImageMagick/default.nix b/pkgs/applications/graphics/ImageMagick/default.nix
index e73cc9024c6..793940a8878 100644
--- a/pkgs/applications/graphics/ImageMagick/default.nix
+++ b/pkgs/applications/graphics/ImageMagick/default.nix
@@ -11,8 +11,8 @@ let
     else throw "ImageMagick is not supported on this platform.";
 
   cfg = {
-    version = "6.9.3-9";
-    sha256 = "0q19jgn1iv7zqrw8ibxp4z57iihrc9kyb09k2wnspcacs6vrvinf";
+    version = "6.9.5-2";
+    sha256 = "09h3rpr1jnzd7ipy5d16r2gi0bwg4hk5khwzv4cyhv1xzs8pk7pj";
     patches = [];
   }
     # Freeze version on mingw so we don't need to port the patch too often.
diff --git a/pkgs/applications/graphics/ImageMagick/imagetragick.patch b/pkgs/applications/graphics/ImageMagick/imagetragick.patch
index bdb152dd23a..1b2de5e7350 100644
--- a/pkgs/applications/graphics/ImageMagick/imagetragick.patch
+++ b/pkgs/applications/graphics/ImageMagick/imagetragick.patch
@@ -1,15 +1,8 @@
-diff --git a/config/policy.xml b/config/policy.xml
-index ca3b022..b058c05 100644
 --- a/config/policy.xml
 +++ b/config/policy.xml
-@@ -58,4 +58,10 @@
-   <!-- <policy domain="resource" name="time" value="3600"/> -->
-   <!-- <policy domain="system" name="precision" value="6"/> -->
-   <policy domain="cache" name="shared-secret" value="passphrase"/>
-+
-+  <policy domain="coder" rights="none" pattern="EPHEMERAL" />
-+  <policy domain="coder" rights="none" pattern="URL" />
-+  <policy domain="coder" rights="none" pattern="HTTPS" />
-+  <policy domain="coder" rights="none" pattern="MVG" />
-+  <policy domain="coder" rights="none" pattern="MSL" />
- </policymap>
+67a68,72
+>   <policy domain="coder" rights="none" pattern="EPHEMERAL" />
+>   <policy domain="coder" rights="none" pattern="URL" />
+>   <policy domain="coder" rights="none" pattern="HTTPS" />
+>   <policy domain="coder" rights="none" pattern="MVG" />
+>   <policy domain="coder" rights="none" pattern="MSL" />
diff --git a/pkgs/applications/graphics/gimp/2.8.nix b/pkgs/applications/graphics/gimp/2.8.nix
index 5943cb9cdac..27d7376fe52 100644
--- a/pkgs/applications/graphics/gimp/2.8.nix
+++ b/pkgs/applications/graphics/gimp/2.8.nix
@@ -5,7 +5,7 @@
 
 stdenv.mkDerivation rec {
   name = "gimp-${version}";
-  version = "2.8.16";
+  version = "2.8.18";
 
   # This declarations for `gimp-with-plugins` wrapper,
   # (used for determining $out/lib/gimp/${majorVersion}/ paths)
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://download.gimp.org/pub/gimp/v2.8/${name}.tar.bz2";
-    sha256 = "1dsgazia9hmab8cw3iis7s69dvqyfj5wga7ds7w2q5mms1xqbqwm";
+    sha256 = "0halh6sl3d2j9gahyabj6h6r3yyldcy7sfb4qrfazpkqqr3j5p9r";
   };
 
   buildInputs =
diff --git a/pkgs/applications/graphics/pencil/default.nix b/pkgs/applications/graphics/pencil/default.nix
index 80774fba5ff..7d9b77e9661 100644
--- a/pkgs/applications/graphics/pencil/default.nix
+++ b/pkgs/applications/graphics/pencil/default.nix
@@ -32,5 +32,8 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2; # Commercial license is also available
     maintainers = with maintainers; [ bjornfor prikhi ];
     platforms = platforms.linux;
+    # See https://github.com/prikhi/pencil/issues/840
+    # ("Error: Platform version '47.0' is not compatible with minVersion >= 36.0 maxVersion <= 46.*")
+    broken = true;
   };
 }
diff --git a/pkgs/applications/graphics/shotwell/default.nix b/pkgs/applications/graphics/shotwell/default.nix
index 513b1a49198..e52eb045ffb 100644
--- a/pkgs/applications/graphics/shotwell/default.nix
+++ b/pkgs/applications/graphics/shotwell/default.nix
@@ -1,17 +1,19 @@
 { fetchurl, stdenv, m4, glibc, gtk3, libexif, libgphoto2, libsoup, libxml2, vala, sqlite
-, webkitgtk24x, pkgconfig, gnome3, gst_all_1, which, udev, libgudev, libraw, glib, json_glib
+, webkitgtk, pkgconfig, gnome3, gst_all_1, which, udev, libgudev, libraw, glib, json_glib
 , gettext, desktop_file_utils, lcms2, gdk_pixbuf, librsvg, makeWrapper
 , gnome_doc_utils, hicolor_icon_theme }:
 
 # for dependencies see http://www.yorba.org/projects/shotwell/install/
 
 stdenv.mkDerivation rec {
-  version = "0.22.0";
+  version = "${major}.${minor}";
+  major = "0.23";
+  minor = "2";
   name = "shotwell-${version}";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/shotwell/0.22/${name}.tar.xz";
-    sha256 = "0cgqaaikrb10plhf6zxbgqy32zqpiwyi9dpx3g8yr261q72r5c81";
+    url = "mirror://gnome/sources/shotwell/${major}/${name}.tar.xz";
+    sha256 = "d52caae4e3204f2f78e2eb828d955848ea6fef5c91d3ac6e9eb0b185c0490b39";
   };
 
   NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/glib-2.0 -I${glib.out}/lib/glib-2.0/include";
@@ -35,7 +37,7 @@ stdenv.mkDerivation rec {
   '';
 
 
-  buildInputs = [ m4 glibc gtk3 libexif libgphoto2 libsoup libxml2 vala sqlite webkitgtk24x
+  buildInputs = [ m4 glibc gtk3 libexif libgphoto2 libsoup libxml2 vala sqlite webkitgtk
                   pkgconfig gst_all_1.gstreamer gst_all_1.gst-plugins-base gnome3.libgee
                   which udev libgudev gnome3.gexiv2 hicolor_icon_theme
                   libraw json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg
diff --git a/pkgs/applications/misc/emem/default.nix b/pkgs/applications/misc/emem/default.nix
index 27736713024..b1ba9831c63 100644
--- a/pkgs/applications/misc/emem/default.nix
+++ b/pkgs/applications/misc/emem/default.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation rec {
   pname = "emem";
-  version = "0.2.16";
+  version = "0.2.18";
   name = "${pname}-${version}";
 
   inherit jdk;
 
   src = fetchurl {
     url = "https://github.com/ebzzry/${pname}/releases/download/v${version}/${pname}.jar";
-    sha256 = "1j6i40mcfwcx85zv0pxpwrqj0zy9s5qd7j63zdqf0lckkjvyrih9";
+    sha256 = "090sd1q345xlari267j4k27lglnch26dkwa9pibb1q70hdygv0w8";
   };
 
   buildInputs = [ ];
diff --git a/pkgs/applications/misc/gpg-mdp/default.nix b/pkgs/applications/misc/gpg-mdp/default.nix
new file mode 100644
index 00000000000..fe58fa92d07
--- /dev/null
+++ b/pkgs/applications/misc/gpg-mdp/default.nix
@@ -0,0 +1,34 @@
+{ fetchurl, stdenv, ncurses, gnupg }:
+
+let version = "0.7.4";
+in stdenv.mkDerivation {
+  # mdp renamed to gpg-mdp because there is a mdp package already.
+  name = "gpg-mdp-${version}";
+  meta = {
+    homepage = https://tamentis.com/projects/mdp/;
+    license = [stdenv.lib.licenses.isc];
+    description = "Manage your passwords with GnuPG and a text editor";
+  };
+  src = fetchurl {
+    url = "https://tamentis.com/projects/mdp/files/mdp-${version}.tar.gz";
+    sha256 = "04mdnx4ccpxf9m2myy9nvpl9ma4jgzmv9bkrzv2b9affzss3r34g";
+  };
+  buildInputs = [ ncurses ];
+  prePatch = ''
+    substituteInPlace ./configure \
+      --replace "alias echo=/bin/echo" ""
+
+    substituteInPlace ./src/config.c \
+      --replace "/usr/bin/gpg" "${gnupg}/bin/gpg2" \
+      --replace "/usr/bin/vi" "vi"
+
+    substituteInPlace ./mdp.1 \
+      --replace "/usr/bin/gpg" "${gnupg}/bin/gpg2"
+  '';
+  # we add symlinks to the binary and man page with the name 'gpg-mdp', in case
+  # the completely unrelated program also named 'mdp' is already installed.
+  postFixup = ''
+    ln -s $out/bin/mdp $out/bin/gpg-mdp
+    ln -s $out/share/man/man1/mdp.1.gz $out/share/man/man1/gpg-mdp.1.gz
+  '';
+}
diff --git a/pkgs/applications/misc/hugo/default.nix b/pkgs/applications/misc/hugo/default.nix
new file mode 100644
index 00000000000..c183f70a289
--- /dev/null
+++ b/pkgs/applications/misc/hugo/default.nix
@@ -0,0 +1,18 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "hugo-${version}";
+  version = "v0.16";
+  rev = "8b54843a0db694facbaf368af4e777d0ae5fb992";
+
+  goPackagePath = "github.com/spf13/hugo";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "spf13";
+    repo = "hugo";
+    sha256 = "135mrdi8i56z9m2sihjrdfab6lrczbfgavwvfrngvi1zxnx7scmv";
+  };
+
+  goDeps = ./deps.json;
+}
diff --git a/pkgs/applications/misc/hugo/deps.json b/pkgs/applications/misc/hugo/deps.json
new file mode 100644
index 00000000000..47f67d4269c
--- /dev/null
+++ b/pkgs/applications/misc/hugo/deps.json
@@ -0,0 +1,44 @@
+[
+  {
+    "include": "../../libs.json",
+    "packages": [
+        "gopkg.in/yaml.v2",
+        "github.com/hashicorp/hcl",
+        "github.com/pkg/sftp",
+        "golang.org/x/sys",
+        "github.com/hashicorp/go-multierror",
+        "golang.org/x/crypto",
+        "github.com/pkg/errors",
+        "github.com/kr/fs",
+        "github.com/kyokomi/emoji",
+        "github.com/bep/inflect",
+        "github.com/BurntSushi/toml",
+        "github.com/PuerkitoBio/purell",
+        "github.com/PuerkitoBio/urlesc",
+        "github.com/dchest/cssmin",
+        "github.com/eknkc/amber",
+        "github.com/gorilla/websocket",
+        "github.com/kardianos/osext",
+        "github.com/miekg/mmark",
+        "github.com/mitchellh/mapstructure",
+        "github.com/russross/blackfriday",
+        "github.com/shurcooL/sanitized_anchor_name",
+        "github.com/spf13/afero",
+        "github.com/spf13/cast",
+        "github.com/spf13/jwalterweatherman",
+        "github.com/spf13/cobra",
+        "github.com/cpuguy83/go-md2man",
+        "github.com/inconshreveable/mousetrap",
+        "github.com/spf13/pflag",
+        "github.com/spf13/fsync",
+        "github.com/spf13/viper",
+        "github.com/kr/pretty",
+        "github.com/kr/text",
+        "github.com/magiconair/properties",
+        "golang.org/x/text",
+        "github.com/yosssi/ace",
+        "github.com/spf13/nitro",
+        "github.com/fsnotify/fsnotify"
+    ]
+  }
+]
diff --git a/pkgs/applications/misc/mediainfo-gui/default.nix b/pkgs/applications/misc/mediainfo-gui/default.nix
index 73dc8433b88..2fe806649c2 100644
--- a/pkgs/applications/misc/mediainfo-gui/default.nix
+++ b/pkgs/applications/misc/mediainfo-gui/default.nix
@@ -2,11 +2,11 @@
 , desktop_file_utils, libSM, imagemagick }:
 
 stdenv.mkDerivation rec {
-  version = "0.7.86";
+  version = "0.7.87";
   name = "mediainfo-gui-${version}";
   src = fetchurl {
     url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
-    sha256 = "15w6m75bk6rsxxdrdibi330ch1x0cw131gynbhmhbsppsg0v5vb5";
+    sha256 = "1ws4hyfcw289hax0bq8y3bbw5y321xmh0va1x4zv5rjwfzcd51pv";
   };
 
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
diff --git a/pkgs/applications/misc/mediainfo/default.nix b/pkgs/applications/misc/mediainfo/default.nix
index c512f6a249e..77c1badbf40 100644
--- a/pkgs/applications/misc/mediainfo/default.nix
+++ b/pkgs/applications/misc/mediainfo/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, autoreconfHook, pkgconfig, libzen, libmediainfo, zlib }:
 
 stdenv.mkDerivation rec {
-  version = "0.7.86";
+  version = "0.7.87";
   name = "mediainfo-${version}";
   src = fetchurl {
     url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
-    sha256 = "15w6m75bk6rsxxdrdibi330ch1x0cw131gynbhmhbsppsg0v5vb5";
+    sha256 = "1ws4hyfcw289hax0bq8y3bbw5y321xmh0va1x4zv5rjwfzcd51pv";
   };
 
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
diff --git a/pkgs/applications/misc/multimon-ng/default.nix b/pkgs/applications/misc/multimon-ng/default.nix
index a9f0cb2511a..8e39c258333 100644
--- a/pkgs/applications/misc/multimon-ng/default.nix
+++ b/pkgs/applications/misc/multimon-ng/default.nix
@@ -16,6 +16,8 @@ stdenv.mkDerivation {
 
   nativeBuildInputs = [ qmake4Hook ];
 
+  qmakeFlags = [ "multimon-ng.pro" ];
+
   installPhase = ''
     mkdir -p $out/bin
     cp multimon-ng $out/bin
diff --git a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix b/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix
index eafa0d6d18b..bca87b12b9f 100644
--- a/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix
+++ b/pkgs/applications/misc/rxvt_unicode-plugins/urxvt-font-size/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, xrdb }:
+{ stdenv, fetchFromGitHub, xrdb, xlsfonts }:
 
 stdenv.mkDerivation {
   name = "urxvt-font-size-2015-05-22";
@@ -13,7 +13,8 @@ stdenv.mkDerivation {
 
   installPhase = ''
     substituteInPlace font-size \
-      --replace "xrdb -merge" "${xrdb}/bin/xrdb -merge"
+      --replace "xrdb -merge" "${xrdb}/bin/xrdb -merge" \
+      --replace "xlsfonts" "${xlsfonts}/bin/xlsfonts"
 
     mkdir -p $out/lib/urxvt/perl
     cp font-size $out/lib/urxvt/perl
diff --git a/pkgs/applications/misc/slic3r/default.nix b/pkgs/applications/misc/slic3r/default.nix
index 6d7ec762e77..64bcb0e1921 100644
--- a/pkgs/applications/misc/slic3r/default.nix
+++ b/pkgs/applications/misc/slic3r/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
     EncodeLocale MathClipper ExtUtilsXSpp threads
     MathConvexHullMonotoneChain MathGeometryVoronoi MathPlanePath Moo
     IOStringy ClassXSAccessor Wx GrowlGNTP NetDBus ImportInto XMLSAX
-    ExtUtilsMakeMaker OpenGL WxGLCanvas ModuleBuild
+    ExtUtilsMakeMaker OpenGL WxGLCanvas ModuleBuild LWP
   ];
 
   desktopItem = makeDesktopItem {
diff --git a/pkgs/applications/misc/wikicurses/default.nix b/pkgs/applications/misc/wikicurses/default.nix
new file mode 100644
index 00000000000..54e56785071
--- /dev/null
+++ b/pkgs/applications/misc/wikicurses/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+pythonPackages.buildPythonApplication rec {
+  version = "1.3";
+  name = "wikicurses-${version}";
+
+  src = fetchurl {
+    url = "http://github.com/ids1024/wikicurses/archive/v${version}.tar.gz";
+    sha256 = "1yxgafk1sczg1xi2p6nhrvr3hchp7ydw98n48lp3qzwnryn1kxv8";
+  };
+
+  propagatedBuildInputs = with pythonPackages; [ urwid beautifulsoup4 lxml ];
+
+  meta = {
+    description = "A simple curses interface for MediaWiki sites such as Wikipedia";
+    homepage = "https://github.com/ids1024/wikicurses/";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.unix;
+  };
+
+}
+
diff --git a/pkgs/applications/networking/bittorrentsync/2.0.x.nix b/pkgs/applications/networking/bittorrentsync/2.0.x.nix
index f8ba6a5c5f6..d2db3eec26e 100644
--- a/pkgs/applications/networking/bittorrentsync/2.0.x.nix
+++ b/pkgs/applications/networking/bittorrentsync/2.0.x.nix
@@ -1,9 +1,9 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // {
-  version = "2.3.7";
+  version = "2.3.8";
   sha256s = {
-    "x86_64-linux" = "1hnw6bv60xrnc733gm1ilywc0y93k2g6bmwgnww9qk7ivbvi6pd1";
-    "i686-linux"   = "0hj8nbq6mava15m1hxaqq371fqk0whdx5iqsbnppyci0jjnr4qv1";
+    "x86_64-linux" = "02n5s561cz3mprg682mrbmh3qai42dh64jgi05rqy9s6wgbn66ly";
+    "i686-linux"   = "118qrnxc7gvm30rsz0xfx6dlxmrr0dk5ajrvszhy06ww7xvqhzji";
   };
 })
diff --git a/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix b/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix
index ad26ab6e950..19f130bcdc6 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix
@@ -4,189 +4,189 @@
 # ruby generate_sources.rb 46.0.1 > sources.nix
 
 {
-  version = "48.0b1";
+  version = "48.0b7";
   sources = [
-    { locale = "ach"; arch = "linux-i686"; sha512 = "464c3b19ab7bda118d962da2699dd40482e1742887bcd9d72b8b7d211c7ab085aaf4c31fdea3c4e195af9030276118431ed7c2e6a917b354c5bf9f55cc8111a9"; }
-    { locale = "ach"; arch = "linux-x86_64"; sha512 = "d9f9844fb06637ca7449bc00c54c02abf8660c42207c0671fffd53e2415df7b0fc3df782c4a2ccde807b4c2e477b0cf3a74c36acb7cce3f75e4ce267a3575e5c"; }
-    { locale = "af"; arch = "linux-i686"; sha512 = "77bca1f05627ed9ace120eee7a7cd24fc354e9bf23a7709e38879241ad87c5d39a8cfcf2aed12881b6f9d6d611c334a864c20c9dee877952990c47c631c6a61b"; }
-    { locale = "af"; arch = "linux-x86_64"; sha512 = "bf4d5353a46778d93627c232c404c768e643420b17d490c932848d126846e4ca3a185df671dcf72b1c1d3fe75606c212e6b0dadd2169b52c4fe73f5088e87b94"; }
-    { locale = "an"; arch = "linux-i686"; sha512 = "2882258205866c93a4b808b7397ff62efd629b74b5233154190ce72ddd0be5d1eb8153d686d921ddb72049dfae0f11c3eb46128413e578c0f9f6323636a0e378"; }
-    { locale = "an"; arch = "linux-x86_64"; sha512 = "543b1d66dc37e1843f370ff071adb050af16e5777bc0042c2d25579a7d99b5b1d176ea099a0b3afc19f270ad5f191fec65e544634e2bbc2223ccc6afcb1869e0"; }
-    { locale = "ar"; arch = "linux-i686"; sha512 = "855fc1c71b50ba5b8354ee7ce2ea59664b40b77d007d99ea6b658873de729e22ca9018e475a669992b2e2bea9388fe0966e06f1e2b0d334df4ffbff2be147949"; }
-    { locale = "ar"; arch = "linux-x86_64"; sha512 = "8ff272dd30cc66460a617dd80678b68917067b87d63d6b307f6d60e61deda092f46bca9e890d08b69a0738f4c204cd2c5896201b362df68aa9abbe7dd0fcc96d"; }
-    { locale = "as"; arch = "linux-i686"; sha512 = "607039866932e6ec0692c534aa2e4ddcb3725d81f2908e7e905edafdbafb3221161f5ae4a5b6eb2ba065e9bd66e1f63c008015b17040033ed90ffa0576b1d08b"; }
-    { locale = "as"; arch = "linux-x86_64"; sha512 = "59f3c28bcbc50a9ffe780025e03edafbbf82a213f28ba8e0f62a04a0e052038c24e1a5928ad4a730455bd358fc3cd0f1188e785dd13f79b377d86e5c55360735"; }
-    { locale = "ast"; arch = "linux-i686"; sha512 = "c9767d9b73ec2dd411e16b1fab503e97b7960c315533ca529c4898dd10a6e0f809104588ac33f440e1026d026d114ec080cfc312b1902601958656607cdd4ad1"; }
-    { locale = "ast"; arch = "linux-x86_64"; sha512 = "f4c7ab66af5e7fca460999b3d68793f8099b177809e70f682fcd7b0a50a3d5ad2a1c15bc5df5a63c37437fce9d70e08e963119755626c357bce6eb17bfb229ee"; }
-    { locale = "az"; arch = "linux-i686"; sha512 = "58bb0eb057caf6af113debeb8d9d7eeb3b2fbd2c52c9dac04c527a67da45b3a4ebac4debfea1704639cdf20ec116876e140f4b55ea5f2b90f3afb9db6b2641b6"; }
-    { locale = "az"; arch = "linux-x86_64"; sha512 = "a82fdc532e4d9fee9ffab9ab8aa58074c4ed174c131d56b4ed48b1ebce1f8950371fa7c7e174c4f35150b752cdeccc2a553b416e94fb3eec22c0c4467c0b1f20"; }
-    { locale = "be"; arch = "linux-i686"; sha512 = "55a96ff3fe9e54ec09a828f740899118504848c82b9c842ed27b9c1e1179f8efcbb2fae5e25f01dd1440f9d2ad896e37056fe8240979cf2c60f536870590cac3"; }
-    { locale = "be"; arch = "linux-x86_64"; sha512 = "6fe1b00f8a03160a5131a52aba5b31401bf18913eb5b6018d1dccb0456ee09154c76220bb94b1ee20bf5b8e63535a888abf895af570e9a668395b497bbdf90b1"; }
-    { locale = "bg"; arch = "linux-i686"; sha512 = "e21d3a2234b533b9d5904be3c1ee4f489bfdea747ff2b45828c40712f70d631ca824375c7a232989741bfceb8a7eb1ca341a4709285056cea2cf3689326a9c35"; }
-    { locale = "bg"; arch = "linux-x86_64"; sha512 = "160600a553d452c30d533e4d9a4ccc4c4d0cbbadf7875856f9be0fc81dbb7a686aa79f47ae8ea1c1e3746d150db31c7ce0dc18f1d271a47abb6d9bc35f478bf0"; }
-    { locale = "bn-BD"; arch = "linux-i686"; sha512 = "6a4267ce4e0d474779f16a7bb31fb873c0d2ba4af993428330bef8c93a24c1f9121b68d50956beb3df549fccf233fa2ce851c69950bf93cf6cdf34debae0cfce"; }
-    { locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "31100d78f0b2fcca2643c822f930ffcf01da9ad3c026d8e05e88b659afddb9d55a000dfe043a87d6e4008d40fced109c134a3bb2c8183a1044d462fdc050989d"; }
-    { locale = "bn-IN"; arch = "linux-i686"; sha512 = "cb0efc8151949b33c23cb9d4fe41168830e215d4361963ec9399e43c97aa4504b4539a202f2c43283e63ea0a4afbdffb9bbfa1340a256483c3b848ef24660734"; }
-    { locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "37e8311e0126da80740b9f97b4b69eb2285716b309e1986daaec5becf88ee5624343ca3b208fa84eb63477f47234c8d5958e394bf750da32e02d777ee94437f1"; }
-    { locale = "br"; arch = "linux-i686"; sha512 = "be6cb0e7b1ceb0be27a7203620b19341c16061ce0d4632f9ce135b2559db2ca31adac2e40ef95f98db903fd151a1b5d411232361631272f2d6200dbcc45464be"; }
-    { locale = "br"; arch = "linux-x86_64"; sha512 = "aa71bd069902a921b2a61ebbcbb604972104ba5f4274788da261e1e527dc7ce10c6a9aa0652773f0d0499d53c2916dd1e2d862b900fb87d678a9bcb401948cba"; }
-    { locale = "bs"; arch = "linux-i686"; sha512 = "5282780a9f35577498b95ded38f86423d043429a0fb4b9ded956716381a3343ebe653508e8929bd8ac7475a2fa0d6c4c67e84482cae0d40a681338eba09f4c96"; }
-    { locale = "bs"; arch = "linux-x86_64"; sha512 = "1056be9971338d821025a5d272321ea4b1704f3103c02014cde711516e9da5303dbc5753f0c2c1cf236096a53b3b067261b628f17d6d45e6c713f5b5cdee69b1"; }
-    { locale = "ca"; arch = "linux-i686"; sha512 = "15c98207cb051466bc89dc15fb2dc1da95490306030fb318f3e3bb184d23590df7213e183af2e5178969099a4edf9752e5872a9d4a091958d7a9ab6087ff6bdf"; }
-    { locale = "ca"; arch = "linux-x86_64"; sha512 = "f7fc94c6c358dff1336938ff2d28c4fb9b0d391c22acefa7e286004978570e18cc1fd1a41a101a8bee27cbec1d750e04ba43cb409886f2b72e8e16a9aed6c835"; }
-    { locale = "cak"; arch = "linux-i686"; sha512 = "96da63ceb6d4382abd8d1e343fdc4b72ead5e5ed2e3d451e768c6b092186287dcbaf239c389d29bc23e5641495a3f2a05512377300f45402428647ab77550b17"; }
-    { locale = "cak"; arch = "linux-x86_64"; sha512 = "8584d4d82c79a56657a01a9cff211fa99e0fbcf0a42103a6cd9688713e7c11b77f35535fe31ed7e48855e055897b2c5fd84c2b1796c313401d8f01ed889ac7cf"; }
-    { locale = "cs"; arch = "linux-i686"; sha512 = "2dff956f8df85bd007b68eeb8b809ddf7d99a6185f6946d2f4fd371f17e4dbf46bf2aad1799b6a1c84bd983935fa2ade5acd3b062f3eee48f7a160f37f3e8e6e"; }
-    { locale = "cs"; arch = "linux-x86_64"; sha512 = "725a2e1272722cdce125b5dea7e61525a43ddda6a45cb003f397ec8d1c9334f11adcd7fb6dd2c901de1cd9a0d07eae54304e5f95ecc6c529c80070b9d6af1b47"; }
-    { locale = "cy"; arch = "linux-i686"; sha512 = "5eeacbc1cd803687235927a91923895930e135a39de62574c79499fe56accb5278da3efc4d151f0f93ec482ad44099481960dd6e3102afa94cce3c30db67b133"; }
-    { locale = "cy"; arch = "linux-x86_64"; sha512 = "49fc8136b3900b96fcea850a9549812b1cf1e9b1058cf99ee7e2e135cf49827e46ef4361badcc4efbd5dd09600d5269e68392f8df03c2e039d6b3d04b244aa71"; }
-    { locale = "da"; arch = "linux-i686"; sha512 = "f806a36960cbec3624be8ebf6e7f8116635c7fff63ca890a886bd16fe73ec8a311d1e8b3c34ca680425d4634c91f8b96b0617cd175eef69e701d7c72e8917872"; }
-    { locale = "da"; arch = "linux-x86_64"; sha512 = "22a274b9a5a1e670369009f2e48a4b7d2f63f18baf435d001506dd590b59115d43619fa824e2156b468b17739aea420621148ca47cd46bc3ace31bc5be4533f8"; }
-    { locale = "de"; arch = "linux-i686"; sha512 = "6d64a77f420d1f87b7dac151eec75d4d42ec1f904b882b970d88b0e20a38ed5ebf8cbb2180abbdb8fb00dd60621e538fecaf77e09c4aee51f71a38a14f81b9b8"; }
-    { locale = "de"; arch = "linux-x86_64"; sha512 = "897918d57691fb1a3f93273da48c128cf8a91e9bc5dd12d0ce2b4a085ff4df01db3ee28a378f36b7e7944c23f71df8a6dbf3481ec207cf85b73f3bac95bde054"; }
-    { locale = "dsb"; arch = "linux-i686"; sha512 = "d5fa1438b71fcd3507175619090840cf983de9efb003f537eb28b9dba66f1cb3518e1410c4918187eb25766634464aaa796ebe0020f8fc110361008751e1c359"; }
-    { locale = "dsb"; arch = "linux-x86_64"; sha512 = "30cb3759bd1f6ba91dfa847703326a57901782ebf397adaa1a403afe894f9b8cdeba80fc910f50037bae003e61956845f605b0e62c364c1c415b12a5abb87080"; }
-    { locale = "el"; arch = "linux-i686"; sha512 = "991dfd0870e38ee4a8887a61ce87a4c5af1c21206442a0602197caafae0be2c3c5aa4c7b25fd92fd9968bdf25c780ac342dd0203c3df8d729034ba20a459d120"; }
-    { locale = "el"; arch = "linux-x86_64"; sha512 = "d62b4f1eb5feeb30e4d2d7b8cb7391f374a209d14b70cdd77acb56106b6df36f54c67a3c5fa1ab4286fd7c46b5d0a42efc52d140b8e5cbe08b17c6d7bd14b498"; }
-    { locale = "en-GB"; arch = "linux-i686"; sha512 = "2cddfb3d4472bfda882a3e3a054d5826a596bfd6b9b4399d7f45c6ad9f157599206f5e149f6c4fb35845ae291320520bf7a76c891713f1951c6e9a9450e92d23"; }
-    { locale = "en-GB"; arch = "linux-x86_64"; sha512 = "d6bda8496f96448b9b046822547167c9c631dbf35c8bba07226634fc9aa1058009200d10e4e586fe059ab1e7b558d6cfa2c0040a33220d46dba5ca742bfe6f5c"; }
-    { locale = "en-US"; arch = "linux-i686"; sha512 = "a9025b8d66c9294ede71ed37b7df256476cc640f7b7ce74cc4998c0b4b5741b5f869c486f1eaf4793fb4b2f347ba069f859e1c5318fa8df18c52377c83f8a09d"; }
-    { locale = "en-US"; arch = "linux-x86_64"; sha512 = "a551550037fe762d6d06a4f046ff4e2f37cd2607aace13df5ba2e28d643ddcef01210367555fb2fc66c6fe45d83f0306f61f4139001d1059ea5e913fbd43cd69"; }
-    { locale = "en-ZA"; arch = "linux-i686"; sha512 = "3e4721593a69bc289c7299b64e91af0ff121d59ded0167bfdd6692dc6d7a0ce0b0a7e8e89a591cee9fb90dc8b9eac26c5d978e4443b1d3462a0f4030ec8c5a50"; }
-    { locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "76e069c8938cc133576c934e4049fd4d8920d8a823122f1961d4ab69802e9e52e920873fc1406dbab01edebd0cc576ccb12df0ebbf5487ddd49c339111bf7101"; }
-    { locale = "eo"; arch = "linux-i686"; sha512 = "ff071fd2545a8dfe0fbb1b1dae57d3fc4b0743698e54746da1f774b568b2b9ad9b0e14e2cd27f56031e1d159a05ae7d54060509532a7503b3dcc7fffa442a514"; }
-    { locale = "eo"; arch = "linux-x86_64"; sha512 = "7705efee2c65de30a0efc6ea0c372061f47c4266ab7faeb6feb01bfde4324ac92ed99a9eab81d8c4e2e6972245953a200c4331b26845eb7a2f9e048fb3023840"; }
-    { locale = "es-AR"; arch = "linux-i686"; sha512 = "3c08ab10d76650fd11ecd9616af1d4646fabdc55b63c7625940630f8aa25427482a3ff04052b91e6aceac708ca187552f7c87343d08c01cc1b4940e341e1672b"; }
-    { locale = "es-AR"; arch = "linux-x86_64"; sha512 = "b6d700123f612b93b952f05bfa92dceed8878ad20a84214f8daab63e4eb669f1f69a9a5d6d28896b16b19d3dbd710b98a4851d7f611bea0fd79e41930c3d838e"; }
-    { locale = "es-CL"; arch = "linux-i686"; sha512 = "7c64c7f7058b1cb3bd5f55b1afa0bc2e779d46d05e5dd354fac7573ad6245ba31aa126301d827ffd17f197b460be24c98ad7c2a9a3d4c66cb6189618a4e38ebe"; }
-    { locale = "es-CL"; arch = "linux-x86_64"; sha512 = "dcc4b4085fd4e480e79ca85b862c421f6e85d200d46b40178ce27177c1ac00f0d19d0c71ae3d7c12e15bf570cd0234743d080d06dae1e9e3c0c2f0eccf4bdf86"; }
-    { locale = "es-ES"; arch = "linux-i686"; sha512 = "d049bada399fbc723ceb14aa116b9218d14729cca6a2297d852782e4d3a0cc7e278aecc62ec4b7f1e1c5af10f65d0cd0bd39e6fbf95d989ce4d2ea5b0e2f7901"; }
-    { locale = "es-ES"; arch = "linux-x86_64"; sha512 = "a77978f8af7f932151468c9e002731c8b6b3e9d3d8d8dfdcf28cc545b63f1d859b99c6dd25c547201b050f58bde9a55fc67b8134ecb0c893ce50f7788774fe99"; }
-    { locale = "es-MX"; arch = "linux-i686"; sha512 = "46a7bc0f112f99ffc218e0161116b373c5b496e8d73744f9ed341fcd0fece5bc4618bcaebd68cb0aa80bf86078163d92205d322464dd8a918463507e4a9bde9d"; }
-    { locale = "es-MX"; arch = "linux-x86_64"; sha512 = "412f52d4eaf3f85cd452d18164d2ce13d3057b45bd4f81ef2255a3580bb5b7e68f23dfc8622dbe3c4d69291b1fbb4a3312a429713b940b081415157fe5dc849c"; }
-    { locale = "et"; arch = "linux-i686"; sha512 = "34d56c20cd06f224d1a3916a12bfd3f076a1659d9bf21aacacd5bea59e789ff496600b712a12f0b67410da97e0500d2f28f1f916872bd223f9f3b913ac648552"; }
-    { locale = "et"; arch = "linux-x86_64"; sha512 = "383a4e2b28217651e76a06dd84eed5f058bf53c25847a6ef0ad1ea9e6a3c98f6a94ef05999a92f03f669e7cea0df11654b201c4e21fc595fcf99bc91b90c05df"; }
-    { locale = "eu"; arch = "linux-i686"; sha512 = "cae20dc1b9880dcd9ecf4331bf1b6c6208a63ee3490ac8b827c9e338916a9d07e447f93be4108db78ce3cc96b8d3828f1882c28aaf28f198fa4f875035ca5835"; }
-    { locale = "eu"; arch = "linux-x86_64"; sha512 = "38ff3155783328b685c72f1ada0e01ab8a8fb75b191455dd43de590207f9b3a258da7cca6ecd3538a7d8319c8d1372e174fea0a22baecb497ca33aaff80a33d2"; }
-    { locale = "fa"; arch = "linux-i686"; sha512 = "6d4d15e4897568d32128f193fa7bb413e63cb2bca23b81a16cb5b9ae7a558b768193461a182552da1153dfb708f834434a1fb63478cb5fe7984b91d00415ea34"; }
-    { locale = "fa"; arch = "linux-x86_64"; sha512 = "6439f27cec2a8af66a4e68406c88b536c5f8e2b0202ce82aa46e75f840cb3977ddb041d8ee315d95505ebaa0e37b36afbf26ea0f39310cda09f6e765eb7bb120"; }
-    { locale = "ff"; arch = "linux-i686"; sha512 = "ee9114fe358d9a6dcb7e404f13fc594de9339fc7ad126063b52548d42aaedac7abbce9e647766462de2716c3ad248b6992dc04e96ea3816068e884c30a3bcf84"; }
-    { locale = "ff"; arch = "linux-x86_64"; sha512 = "beae2223a6b3aa555c071b51a46d3b0758efa53b6002f2486554f5bec154cfc1a1598f0175af654fc47a60a170eda916152e959a5ce2f799b779e5040ae15c5e"; }
-    { locale = "fi"; arch = "linux-i686"; sha512 = "d8414f63f04a5a9c916487f93c67d2368bb4d8c8fb757c1d58233e6c6e6bde139f323b1c77dda57730173c6005b2647c688f7072ac09c1962b04a2493cdfa18b"; }
-    { locale = "fi"; arch = "linux-x86_64"; sha512 = "7e0fce63b69653fa5d0d0ffa9598d10976a1f49aeeb48bcd8eee26b51ca1f6d1d898c84944a442d530abcab700dcfdf89c48ca23db9d835c877388a8f694b7ea"; }
-    { locale = "fr"; arch = "linux-i686"; sha512 = "c3bfda75397d644bc4392ef87f1d24faa033f4c5672adc4d5d0007d5fbd63efd7f46a2febd0bfdf95d8f06152d274daf39ef6355e049e7fd5e53e2d750d03ae0"; }
-    { locale = "fr"; arch = "linux-x86_64"; sha512 = "81c8091c9d8cc1ede738bb1d9b4fe72580d13de7e3f89410d1c684ca017ee197837788e63243c9722b30e23b2c910cb54fc7985f4936bc6068643a504d9a4ebd"; }
-    { locale = "fy-NL"; arch = "linux-i686"; sha512 = "59797af1d76fb2afceb06de28c6fd13bdbc14d42c61f87f1f71d8273e03aa691e2ade3ba0361d19721862878c911ec46ffbfd0431d19d6ec0a92ebac05cfb4c4"; }
-    { locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "19d0cfb01374bf2842a17ef4e9f5ab85280c1090723c1657459a230262d22aeb14c2faee1b86ac0b342c5926cbbf0479f2e1ec315117c06ad3272a3362d02f8c"; }
-    { locale = "ga-IE"; arch = "linux-i686"; sha512 = "c1a4fe00a36e95fcd33d21544ee6b4fa5a6eae0628a37c27057cc801a641fbe5519818ccc157b87b64f24f4886dd6dd629809c89b9c89dc4878de794e48b107d"; }
-    { locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "8d9654ecf7b6cb43b4794f345105c779809b9bd39a9dd46a0fbb1920139e9234e7433fd9a8d7dd57192c738d187f97ab82c8dd3f3a2460e3a34cdc9e9a5c5089"; }
-    { locale = "gd"; arch = "linux-i686"; sha512 = "0d48b2886c431a9237293f24fa5f8cc7104a3373b24c98e23bbf93f66aeeb5b8b9e737712bdd1c777db19bbd6b01f9a33f0c388b6af023d852cce6543d486973"; }
-    { locale = "gd"; arch = "linux-x86_64"; sha512 = "0339b6952f993d38686d92ac9a664cfa558f2827b92ae3464188f12e28e2676c8c4718cff62a840dba14de687434cf13902a621094f63e1bca1ebce321800d15"; }
-    { locale = "gl"; arch = "linux-i686"; sha512 = "5cecaede8ebdfb58951b3f839388b81dccaaaa5d3b4fb5cbf26978b23cd962905191fa91d961037fa15000af47ab48042d272fd18a73e5ed4dcc2bb0ff4416ca"; }
-    { locale = "gl"; arch = "linux-x86_64"; sha512 = "d1a0447ce592e7d2a8564d9c27fbce5f9378a4e21db3fa501782e57b6e13ede6f42b612fffea32e8891d47010509ac8e3ed1f63c5a81878008f9bead68b6b750"; }
-    { locale = "gn"; arch = "linux-i686"; sha512 = "aff2f407e4c947d3e34447b43e844135562d79bf937a05dad5ce4dd1853dd479f35b4f6af1b2d8b52deeb9786a4fc67980cbf58ad82a747a7e55ea753a50ad43"; }
-    { locale = "gn"; arch = "linux-x86_64"; sha512 = "78645796fffe364fcd28b80cde591d88db91a756318f645610f6823b616222c0c53faf8d55aaf1703d4bbcec1e8381cee566bb5739ccfa181e1d1224408463de"; }
-    { locale = "gu-IN"; arch = "linux-i686"; sha512 = "331bc227d138a49d74cca37f8d7ba4e6eb891064357aa5b0606761f9af8cc4a029816a3a96cc3ac4dfb71b1d010c569940ebd70375fdd06af7b6b487bd90dafe"; }
-    { locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "d1f6c5af9e75e76683d39281eb559ac688436eae65d6bc486763028744af030a6c311d1f0358ead5e88ead60357261032dd739251352cde097986251dfdff325"; }
-    { locale = "he"; arch = "linux-i686"; sha512 = "7a49d8cabab6aa8480026de6b77e1b6d60333c580d2b9591cf3fdc8c491d269f6a7a7f93118594de8c87576dda868f12de5a88f494736f721ee3ddc16a9afea9"; }
-    { locale = "he"; arch = "linux-x86_64"; sha512 = "0eed4301d7949415d21426d9e52825710a0f48a1a0a3546f62d757059091bf12b3b53091f2c3102de0682162e3982a9fb58c111c9a6b8245d84825892e1d6844"; }
-    { locale = "hi-IN"; arch = "linux-i686"; sha512 = "70ecabcdfee807b1a7e0b6a167bab07d3df798672a61bb7b80d1d6c3ace9385c472e08dd31f2c4c684cd5e723e7024016728df7b22943d3adec3d770ba7abd1b"; }
-    { locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "11e8be059afa8298a23857bd68b2f895bb60f73378c513d2aae0395b5faed68123631d9ee44b5608263334269e33b76b4563c063b2feec486e7a2dac1be42275"; }
-    { locale = "hr"; arch = "linux-i686"; sha512 = "2c99b81cb0c8413aa98dcbac2cbd45d59a440c173a9cd744b78ee0d60b82ec4fe4894fe5e313d51b81caf6b86f40effdb36f5fd90c73cab82acf97c20fb5b152"; }
-    { locale = "hr"; arch = "linux-x86_64"; sha512 = "fc209d82cbc24eea777a4318f5555d2cea4828bb7f305f868b8fca18014ea7c930f778c716eb0b9c1a7e29d9a4353b4c537900f9d659c432d6a75b1eebf30963"; }
-    { locale = "hsb"; arch = "linux-i686"; sha512 = "3232380f15a33f31f8e3755707231ba0725b9afdae1d2a0d4fb2eb883ab4dcb5c8aee75549e41e7e2cdf445b6f39331b2be4d7e417604987c7ced46d2dd5dc51"; }
-    { locale = "hsb"; arch = "linux-x86_64"; sha512 = "11bb460c404316c322e2498986ac6e7cb976a196de7208ee54dcd4ec61b8f05fa8f7782d6cf462cd5531f3137b1688b7797da2d78437e3c4d4f95867c781953c"; }
-    { locale = "hu"; arch = "linux-i686"; sha512 = "40c3837c7ca4e0dc9e97e4c4422e54cc3ef157933ce9969abf71fd422fbcad517a6f6da3bcada83d3567323e83248a060fccc8a23a7f6fb55568a5b7ee0ff464"; }
-    { locale = "hu"; arch = "linux-x86_64"; sha512 = "d05bdf14ed9c72031a29e7e9b39afe79bd2ccdc69bafaf8c6196081d462b0aa57a220a8a2105812b215067494c53de8adc994fbbb3549ccfcadfc15f99c710ac"; }
-    { locale = "hy-AM"; arch = "linux-i686"; sha512 = "a9da495cc3e7a1e89ca8dd7a3db6c83529e0b7ba6562e7f0542f8b9c93bee8e4c219973b0b6fda1abd046d933fca718fab1f6bd4350ee960ddd89144dd321ed6"; }
-    { locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "53db4843e0c9e99188e28bbe46b09239d998a3bae35ab79954bc6eedc5e73c0f3010c500dbb93f8a6ee2d5b22fb3ee9fef9ef6eef2dbbadf4b83f948282a8bc3"; }
-    { locale = "id"; arch = "linux-i686"; sha512 = "05e7450a164c940e43ce34f6b7c9ad610d1652f11b0f030dfea7c9d8539961b2f3e69ab0d3b8d714725cf3e8bb256f18f4ac3613bc86bbf6223d9914e4eb77f3"; }
-    { locale = "id"; arch = "linux-x86_64"; sha512 = "7ce0b880406dfbef90ca6ae6f121eaf72bd289e7b57f7686ea83fc182cb9b54a3e0bd8b23bffbcfb3c9e82a6b13c7afa16ce56d426f33f66072db4b5f466db04"; }
-    { locale = "is"; arch = "linux-i686"; sha512 = "71446911d5142ab19308aca456dcc1d4d087db07898e331604230faa58c2146b980212880c7f88b6e3770b303a8450cff9e447638b5a063daf50ec25d29de738"; }
-    { locale = "is"; arch = "linux-x86_64"; sha512 = "2542f214cb2474eab97d18a1daffb1181fff569058b91c1c9d7d6400b8401020b69ea9492fca55153c904289be45215b37ed0846d563f8f06ba401c482d59762"; }
-    { locale = "it"; arch = "linux-i686"; sha512 = "bdf0da50be211492e2acdd9de223ef741fa916c54e94bf9c8eb20685006b68b5f430949161199a915c368d11143caf828c25b2e82c33fd5a61bfcd05de53966e"; }
-    { locale = "it"; arch = "linux-x86_64"; sha512 = "a4562fdcac6d9ba96fc840498bbb381de6190158fea65c4809ea1ff3518181ed47b7c33bb772077975fd07c23a1e8700403cb6cc67c5fcb1c24e72563214f4bc"; }
-    { locale = "ja"; arch = "linux-i686"; sha512 = "cc81a02282474928e7d2efc694761168db022ffcbf5ff32d92c21b90edfb194187dfb78f2eca4c42e60cfbba8ab6614c1c7b0359aaecafa47b1c9d3918327cee"; }
-    { locale = "ja"; arch = "linux-x86_64"; sha512 = "07cd92b7f9647f774b080cfcef828899144cb03472d70394be197c43732b164978e1d9ebc9212a47b58fdcc61f5009328e766f4c6f799f35d73a4dcd2b31fdd4"; }
-    { locale = "kk"; arch = "linux-i686"; sha512 = "1bef31c35180ad7fd49ab695a6985d8be301a6802225d319e979b8c716e78a5687753b6f63516f4b4221c402a2d2c8c0a0e22aec9023cdee98d71a4335728e7a"; }
-    { locale = "kk"; arch = "linux-x86_64"; sha512 = "dff599278a27fe2b4efbcc99b7ad3b211ef5debbf1b95d765a36fdbdbaebff69936c250018f237843481244e2b02cb8de4e3090d9422adcbb3d8af4239759269"; }
-    { locale = "km"; arch = "linux-i686"; sha512 = "0080783187b80019cb4c56e2b30a1a403c632defc375adab7d613489fbf7f217a22a779f0119e2810ee9f0bd024418ffc654df146873a06f59bc7f1de5fbf244"; }
-    { locale = "km"; arch = "linux-x86_64"; sha512 = "84d1ca7fd0a4d6a39aff375e922dcdcbe51fb2b497c6eebc312abe6cb5b29bd049e648197f0181bb2ee1b47b43275c14eb13233958c0bd4f7cf7b28e5725de97"; }
-    { locale = "kn"; arch = "linux-i686"; sha512 = "2dac35157e3264547726ad33f786bd86e52a4db8aa8d1449cdfa9993e5bc16556c6005e06cee915e427e74b3eb4eed665a4a6deed7bf3800a95319346fda3690"; }
-    { locale = "kn"; arch = "linux-x86_64"; sha512 = "175b3edf58286a229ab4045ca2d75f8a00e8ddcac532fbfc8aee5a048e0ae0cd5044155a8619d6dc53756150bce2d46b910e1abe216bf537d259435199cb42cd"; }
-    { locale = "ko"; arch = "linux-i686"; sha512 = "1db17eaf47e7916366d05021d683c2b4d8f26316abc057a450d24a5d19fa1ed9aaad2f7a45cee63c0f021d93214b62a032d17312cdb123289b31dd2e5bd43808"; }
-    { locale = "ko"; arch = "linux-x86_64"; sha512 = "4bc673e54fb0c30b7c8389c2a66b322bd4b19e8635cb3d633754214c0726fb95d3194d09435bb4afca17e6cb3f03f028408d13f9ed44d8c2b9c323eabe5101e9"; }
-    { locale = "lij"; arch = "linux-i686"; sha512 = "8349ba8cf921d73f0c3bd54c9a30df9c0232d7686724a0d635435d65a6bc8baa1915e25702b930cbefe954b5aedd1d3faeaf54ffa9b5dc494e465a635a57369e"; }
-    { locale = "lij"; arch = "linux-x86_64"; sha512 = "e12597062c060dabaff08c251f82ad63f534c341d1afa94e567c763b7ac290cbb03a27726e03b449ff89fe8b86b25211e807ef7ba34e876d902705f9361d5cdc"; }
-    { locale = "lt"; arch = "linux-i686"; sha512 = "f67ff28a20ae0580aa537797928bf84cdc088cc0df586071a460eda6ea7b96337a5004b2689688a487ed246b5d83a14bf77a5002f39fe7ccc46e92f65b565cf1"; }
-    { locale = "lt"; arch = "linux-x86_64"; sha512 = "f4ffb37c69b9c69e9ea54d691bfa3c069b28d5b1b0b48b917f4c6f10c1434bb451b7c17e777b5daf3c869eeefb2a064264bba7591f681d319fcab00335b37384"; }
-    { locale = "lv"; arch = "linux-i686"; sha512 = "7efe759ef2f0e585a8887e829e2bdf917209efd5b3d5235f5765c0995206c25941abed9b11f9241da565a919f94890682a944d2bb7dd1d1360f67f173dcf2852"; }
-    { locale = "lv"; arch = "linux-x86_64"; sha512 = "63cdba3ea94fb1847913a42ba70193ebfbbf1235a28881c7d671b20dc8272c5989dcb8290087a0862cea7a4c8ff448ee61b42a13d6c03c8787be1dbd957769f1"; }
-    { locale = "mai"; arch = "linux-i686"; sha512 = "0619cde7ad13590d2da001fdf87e2fe9772d65d1ce468ea2b1f3085d8c6c157f48d23b343e6886969dde5827d12a368e208242dd16df4e498893d53f030665d7"; }
-    { locale = "mai"; arch = "linux-x86_64"; sha512 = "f65ab5c51b7dd0f127a4b9f65a0280002af3387b12e8730f8efd79f4700f6c5f5842e3f634dd738571995dfa52ef58ec0d68255ceb52c6a7df0332797dfab253"; }
-    { locale = "mk"; arch = "linux-i686"; sha512 = "e6d2bf183fc1fa88d0bbccbf058344e8dada0271694ba3bfc149e965ff16ec05ba6f7a04cc39f3657524555e84f25d072d7922fb2c075b0bbb8cd933336f1d94"; }
-    { locale = "mk"; arch = "linux-x86_64"; sha512 = "68a96a11e38944d654d1aa720b5a099fd0789520b8681f15cf33d972956e7dd2c44d940ea0b2840c48db79615aed8c83d3f19769908752f960f84a7bdcf3a2ab"; }
-    { locale = "ml"; arch = "linux-i686"; sha512 = "32c8e00f71a7fa609c3b99799f64362962d245d75865ce54fcd72e8cefc45f5cec7a99ed343a7bd92614569e62a02ac0e712b4ca3fce3d5d0f2f7ad52767c209"; }
-    { locale = "ml"; arch = "linux-x86_64"; sha512 = "c641244006a11de3b6ae947f2d5bf8b40fd4bcde8e7b71d2fa2a8258087bf3d6382f21b10b05b2554f031ee95a579d31d0e0d8f1b72a5e1101acb31075aee02c"; }
-    { locale = "mr"; arch = "linux-i686"; sha512 = "3949d3e4d9fa507c50f5ca92ee9cb041dc9d034f78d44343139a1576f128a06d8ef3aa2b1fcfe11d77a7489b0f7dd18e14f0ec0fff595dbefc219f6b1eadd969"; }
-    { locale = "mr"; arch = "linux-x86_64"; sha512 = "c323cf8842f695e47f3c91d356ff63bb0ce7a5cf47cbe874dc6956d90fd84f6330e6e1f5f0bbf61e2cfda66a2dd0e81a756f3b464108e7ad84450722562e5906"; }
-    { locale = "ms"; arch = "linux-i686"; sha512 = "f5ded01c47ac91d506a10774b198b3c2fdcff35a10ced17cd0cd94a1e367d489f2afe7ae22d59beb420f771684cefe3724c88313249a4c6072ce68f36bb16cbf"; }
-    { locale = "ms"; arch = "linux-x86_64"; sha512 = "39d4a052c21fe9ee876f8b8a7fabeae9a6a30d959e1a7b27b0a1fd08658cac5959aa4879e3056675e2b7de83f588cf82f5d138f2ee5d9b0bbd135b51de109f7b"; }
-    { locale = "nb-NO"; arch = "linux-i686"; sha512 = "6cc34cda3cccb3ce92f44244e291dc94238292ef6e91172d73659ca5b4b46fd004483680a7a45ad3643d59c57c7fe7bf4286f4cf7c903301eb39712db9bd3583"; }
-    { locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "da645c69d2675bdd1d2808f0d7446ded4414311bffe5f1a37a685f6f4338a56e831349a1a7904c0332266e909e4e82085585afb14b3fda7925698d66e9912a65"; }
-    { locale = "nl"; arch = "linux-i686"; sha512 = "a2d906caf6b4c36305cbcd2840915000c53db2ac03122aca162e672014b217237363bc309cdee5ec19d21106073044fe8668fd044805161bf4916cdd938565ed"; }
-    { locale = "nl"; arch = "linux-x86_64"; sha512 = "6288c2f0306aacd87a82a3a6262b514f32a177674e6b96eeb5a8f937ee36b6573d8a3e6925be87609e4d7dabd1e6367eb0e730d87148cd50c1572756bb098a5a"; }
-    { locale = "nn-NO"; arch = "linux-i686"; sha512 = "04454f9f5dd2611cc76575a41d56f6819c5b97e213f82ebf0aa5e8393d9cd4a99a9df5291d3e3c3985396a99559f39fe5dc6a85141ac1d2f4919b731d7539a89"; }
-    { locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "fb55685275d0b6c9e47b0356bd4249feeb3005b338d2a2caea4bb7b86edc6991752af9276db91f448032ba7d9e01209d92706f7612531232f87c05cbcb13f337"; }
-    { locale = "or"; arch = "linux-i686"; sha512 = "16639bc10229e171577abfeab841bd7b5dc411f4e314335787727803a486b8f04e8730a7be9321172fdd60791fce7363d5ce5aa28628cc4d2b7769357737cd0a"; }
-    { locale = "or"; arch = "linux-x86_64"; sha512 = "041f3a63a4cd9c0f287132252df7aa6d7eedc72650244729e01eb52a93a9ca8206a11cd7783e7778d4cad9a525ce2aef1c423840ea5c54fa202600a0b5805e31"; }
-    { locale = "pa-IN"; arch = "linux-i686"; sha512 = "7c9cda0d9dd9d1196ca33a58b6f5f3c3f09896bf65e8fbeed67fd9811cb1bdc12b7ca8966b7612cad524a3bcc9dd1e2678627f6cfe172b1bfc2d9b64eaac17cc"; }
-    { locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "56507e7e1e93ae880de5410b4ad8c1302f58b43ade2ee4dc70c1290334edf2ea05f7ddf2ca00317ee33662de29c635caad8f73332935fd5bd4ff6a37758bd195"; }
-    { locale = "pl"; arch = "linux-i686"; sha512 = "52cb7e700e541a82328c935a0a99313dad6b7699c09a1386697c77544284d53653705ec6d57f3cc1bec632962217c090ee39687a81b19f3a3af2178eba9a1eae"; }
-    { locale = "pl"; arch = "linux-x86_64"; sha512 = "77a99740ad99808a31df3e71038944901fc0d5339f919cce40389de67baeecf2b9c34608194ea1f0e4a25bbaed0ba06159d10ac8816735b34a2e28ab041ae97b"; }
-    { locale = "pt-BR"; arch = "linux-i686"; sha512 = "e39d9b22f8b7226ff2908b34847fb77cbe0c834f51985712024de83ece7549c8a89c3ab3d81abb6bfe6a7b21f18dee2d87926abf3d2edf9f8a8976242a4dcb26"; }
-    { locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "a03a0e37ecc2d903715b70eec0a4b2808a913a8e27398dd96206295e1e765283e97b76ba278b394f9629e352c10cdb2011f3184b903d0e6de784a13abfcf9668"; }
-    { locale = "pt-PT"; arch = "linux-i686"; sha512 = "2d511400948ce05358b9400752bba41cbd947d1a4a5a5a92f982830db92507e257c28ae319f411717253dd53a1a7e73607f9f62fb7b7c8666aa339fdc73ce728"; }
-    { locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "71e2a000333ae8565de6fc9d01e871c2e894f96a9a2544a21aac08ccea0399da37d74c3230c4b3cb7ba0231fcdddaa417f78e48848fda8f063179766cb675038"; }
-    { locale = "rm"; arch = "linux-i686"; sha512 = "4337964e6daa7bc799f01aa52a33f04c060288bbb881c2321ef938658b57f05b632f734ea0564cddd0078f4b38d1c8cb2c2e6221849ca4aa80579f308fdc2056"; }
-    { locale = "rm"; arch = "linux-x86_64"; sha512 = "a55e250de5e11ef808243ef974fac8938c70269a36bcf9db898a11997722b8d96d60d76ca28e41e023b4c7e6614e323479d3d4d2831b83655ad3ae3eb5ed774c"; }
-    { locale = "ro"; arch = "linux-i686"; sha512 = "17171889ac7647e525783c96afa5a5de796d603c8fa6a7ad8d12205ad510f869b35f0df79aaa04e4b980c86ceb923f89936499df7e55539393e40ac92c23bb1d"; }
-    { locale = "ro"; arch = "linux-x86_64"; sha512 = "721912e5ad4b0ad0727f0185f660351b3c59291b3a22aa394f01c26ee87366b43b5aa08cdfc164c16117e1650837bc2007e42c34756dc26466edbb113f11fc09"; }
-    { locale = "ru"; arch = "linux-i686"; sha512 = "28dafdbe6ae4fdabc061c68ca82dc6ab8fc463da11c712500378d90dfb662d6e0991f35a918315ce138603283befcee182092ac4f8d348815bef27431252874b"; }
-    { locale = "ru"; arch = "linux-x86_64"; sha512 = "27bbd48859f5ed6053a2062778537f4952a0847ff74d2dd407766ef4b4f144903167b4fe80b98a5b2b80e42d6b730bdfed36fe9a958d247a335bf31f091b8c70"; }
-    { locale = "si"; arch = "linux-i686"; sha512 = "0f50616131a3b80499885ed5fb8573fd3ebe522cc893496d03e48ac6eafbc2a5224240971b66c393323d2583512dacb73f3201eef1a495298badad605cc76bb3"; }
-    { locale = "si"; arch = "linux-x86_64"; sha512 = "37996cbc994a7527c2ffc5143dfe970ae2fe0e098f0bcbf9fd4643e8297bddbe7fc0f4af2f2ee15b0807c339c25d780040e2f9f03975ba9f49359052a2be271e"; }
-    { locale = "sk"; arch = "linux-i686"; sha512 = "db95ce3b68fdfdfc9916cfbfa6a797370ddf58f5aa234d59bde6e76cf7fc0e821e9954cd0ce090404f5f718b9ede9c1ae6b9c7e37db9e64eb9d9dcfd975c6a79"; }
-    { locale = "sk"; arch = "linux-x86_64"; sha512 = "f9e28572c83e70c7658fd67abce93d021600fcf6b8daa7861cb6eff315a28c0e531f1082f6c25f5779371b2884c975fbc22cb953aaf589ba6b050bc736d25d9f"; }
-    { locale = "sl"; arch = "linux-i686"; sha512 = "e40c201c5e892a83a23ac9f1af22e9274bf6d964b39bae2e191bdac100170685376fa81210ddca38c76e5277978772c693563e55871318777cca7ac7e47fd1f3"; }
-    { locale = "sl"; arch = "linux-x86_64"; sha512 = "ea4a198b300e2fbb23fdf863659b683b772624cf4f6c2c3e5e07af9a3f991a8fdf7113f852646f36f697c705c3a6f24485dcb8e2d615a3a358bfdfca406254a0"; }
-    { locale = "son"; arch = "linux-i686"; sha512 = "b510efeafff8c32ef3b7f88e81d4c1a1c1b2bb435c2ed4ad69adbef8f5d374677e2231f94700cdbff9e5f747c712d8f58245a4c8f0d38ac3eebb5adcdc42c7ae"; }
-    { locale = "son"; arch = "linux-x86_64"; sha512 = "8c8d583e7e5ef1363096c905535c8e6dd63900ee50684d9cd36b4e55100930b8fc8ee9a3ae770128cfc71a30a73f331cc508555ecdfd3fbbf359ad08d5cc9519"; }
-    { locale = "sq"; arch = "linux-i686"; sha512 = "809ec8706df6f3538e3c53765a1f1834cee3d2d9cffbfb1f3e991faeedaca28a2dc3d4e037ed9e00d58ac6cdb27f5575bdafdc454828d9fa988d7764bca88c0c"; }
-    { locale = "sq"; arch = "linux-x86_64"; sha512 = "6f2c5778d40e9bc5bb558ac626becfcbe33c42e2a2e588ee59065f60643708ff83be55a082b383f7747241ad8d59c0e3e13bc8556967f5fce034ee23d7f054f8"; }
-    { locale = "sr"; arch = "linux-i686"; sha512 = "cc0e0c039af32611d489bf082dba5ba971b54b22937d4b8fa80150a560a3c452851e67d02f7cb27e1a63229c9a42da449f932cdb88af342e0146022586de109c"; }
-    { locale = "sr"; arch = "linux-x86_64"; sha512 = "21928411981e8d3fac5e44f02173a08ad4c3135ec874998d6ddf5ef2821226ffee260023e5bb45848a40db19537b1d6cc0b127d9524c0d0616d80618ab1d9228"; }
-    { locale = "sv-SE"; arch = "linux-i686"; sha512 = "cddd222328f1099c25591b03abe23692fdccc82405df127ff920818fb7952fe384fc1373b1330b971d196e98acd62b3754711b38876050ec3cce7de20f183b79"; }
-    { locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "06c819436de292d531a9d3df34b76bad36bb627e0e45ca042f2dafb06db14cc23e956dc2e00904d5147bf7d0b39c16f712f2b8acb1d9bc4daa210d56d8058e22"; }
-    { locale = "ta"; arch = "linux-i686"; sha512 = "5e8560e423aa88c1fc5b61cf91c558a861a58d09d7e560790ba835f0bbae85cc82c61e1eb9e1a92e632d2fe24419d3eecec4a15bb083bf0c1568a441a5586a50"; }
-    { locale = "ta"; arch = "linux-x86_64"; sha512 = "6ba48474d930036d77d23b717fd2e592b19d0ab2b4399f7a6f7bd36da48cc0a2dea9c25442928c507cdfe8a8f37a8d0e4ddb94da42a7a3d6c2ecba26d4f7dd2f"; }
-    { locale = "te"; arch = "linux-i686"; sha512 = "2df2a46677c979b8702700c69f687e8bfa49e879ccd9204a1ca876b7a5f8925abfe6f81f42e6d6576aff6cea264cced854ae536a3cc01ed04b7a536396e9ff33"; }
-    { locale = "te"; arch = "linux-x86_64"; sha512 = "d6c7bdb7a823be0cbe8286b977cc265e80ae290ae8fc4002a7dc71eddb3b80a3796e66ad1e00fe2e797ae83272422f460defa86322dea8e33ad0d7dfb50491de"; }
-    { locale = "th"; arch = "linux-i686"; sha512 = "eb017475d187ef4f1329d303bde84a17995ed84458923330c2ef61940c86674c03f06de2e3655885df49cdc384d1b8e952dfe8ce960cec738f99b8853af1e018"; }
-    { locale = "th"; arch = "linux-x86_64"; sha512 = "cca6fe63bf24ca1db9d736305dff312f334cbe0a836cb181fdde85c4b2e383e1a19135f441a1f07c69cce716a4c2d3fe42a07fe3c91146aa6598d651890ff049"; }
-    { locale = "tr"; arch = "linux-i686"; sha512 = "98aa598f348be7705c11834f6d174fa19a8408b87193a93f641c4fe92898f3175f79a1bef9c66dc93c3cc19a372930725025d7ff1bf178e951c9d5dfd675ff36"; }
-    { locale = "tr"; arch = "linux-x86_64"; sha512 = "a4c2d82f7e56e413526cbe40eb24df79ea264b37dc09b470ccf3416c922730d714ad166507f06b6a68fc85ff73df73309da936ff56499cdf81b78fc973675c86"; }
-    { locale = "uk"; arch = "linux-i686"; sha512 = "cc04ead20aa1f6d3a8ac470ed3fc69ac0d348ab0523308ae56b49734785fd63bae4ac6fcc32bcac3f2e9350ebfefe76fa39efc2a7a7f5d7c2309b6999f490e90"; }
-    { locale = "uk"; arch = "linux-x86_64"; sha512 = "1f29246b8bd1a4e07af7b30c2ffcb5239ee5f870e529227e96c0ef091cf9d9d8783891b2e60b0a5dee10e80893ddc6a5cb972d27e70ae4cd0f820ba9f60a2165"; }
-    { locale = "uz"; arch = "linux-i686"; sha512 = "d144626529e57e93ea12ddca25184903b78b878563302c7f14a396435187791d2a14482a7d10bb569890d9483253474634574f105b9c79763ad6a85fb10de73d"; }
-    { locale = "uz"; arch = "linux-x86_64"; sha512 = "4e6b7706c6f529739a18748f35d7e31071c6818c0f83261e1d31e66306fb40ac94573f7ebe3b811f4c70f88a2bbca29528b868821962e88ba30dbf84039c5ea1"; }
-    { locale = "vi"; arch = "linux-i686"; sha512 = "fc7144a73551e09196b7c79e4fcf1ecf5ad92b3e54e8a203e213627133df0260dc53f0cc9bb9e03ccae0953de5f2752e303a35e0fdb720a40637e5b31edd3544"; }
-    { locale = "vi"; arch = "linux-x86_64"; sha512 = "7a38b4814418516c8971825616874782512bf91d51a798fbdb1b8d8a817d30e72d9fde45238602a6de9cb9c53cd0512acb07f6e16a819ce24fba6467ab1cc8b2"; }
-    { locale = "xh"; arch = "linux-i686"; sha512 = "0fe791a3270343598417b093476fc7eb50628a7557c56294b3222e657c62a2b5ce7988243d75ae08f7a11c2b9e437d01d47258b1ac93c2579638ac67e12c4d78"; }
-    { locale = "xh"; arch = "linux-x86_64"; sha512 = "f797c52d88b62aaff15419baf5d7c5b2a44909674602ca82c295120b4b0fcb7182a36952f7adeaf7e9878b3d21031e990d22e5f8dcbc5421a3d587ba37f63906"; }
-    { locale = "zh-CN"; arch = "linux-i686"; sha512 = "970c14e1f105d6092fd542d73db57260836bf249aee99ab53f43882cb6327520905b7a452e96a6c142676794bf22e13c80e86291bb5b6dcaa09d0d9bb376d4be"; }
-    { locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "b811f9d359fb61674781443d71e961ba687fecbe4904622b6ac410e435e31b6118f30726896021d28ae51628ab95092b28181ca0ae471374c0cbc5a740fea496"; }
-    { locale = "zh-TW"; arch = "linux-i686"; sha512 = "43f8d6e9cdf5815365e0eb1516ccb5f6c7ac7e19c10d1ee45ee367d721bf1944321879d9966f7000f50d324f14c36f9f8fcd9bb43ef20c780ba39d3c138f2192"; }
-    { locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "02f4910b3c5b6f75e2f19c03452ce0534980be7ff18abed8be2a2f9af19c6eee5928c493e618b00d167bb3b2d7e60724741a2f4de1df9b1e48a05923a7649cef"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ach/firefox-48.0b7.tar.bz2"; locale = "ach"; arch = "linux-i686"; sha512 = "9fa8e2fe59c149abf5b1f4fad168717aa68c9e3e9acb219aaf257aff953a719c2df1dfd55081c6c4398732c9bb16690e4481b7c3c9f1fc9ba20468ca38d7b9fa"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ach/firefox-48.0b7.tar.bz2"; locale = "ach"; arch = "linux-x86_64"; sha512 = "b4115232ee0cfa6062fb9c06743d31edc444f9e5481b84cae4c1ec275c55500a16fe7478ee79caa269b669e566701be225c45729946ca950a492b36038d208fa"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/af/firefox-48.0b7.tar.bz2"; locale = "af"; arch = "linux-i686"; sha512 = "03dde31a027765e7003c89188cfdbd87f57447c8d7f6542e11e01ac4242866f6db98943d8d50188b1e0c41d740f3ee95b5f9ead01e9df5ad9beeb066c0b1e54b"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/af/firefox-48.0b7.tar.bz2"; locale = "af"; arch = "linux-x86_64"; sha512 = "e9973af0cc52e2126ea682067fd7aa11bf071ae2aafab935d704122480a46658139043a29df30c038af85c1fde836ff7725bed21ea4c4778e176adbab704c6ed"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/an/firefox-48.0b7.tar.bz2"; locale = "an"; arch = "linux-i686"; sha512 = "1e23956adc055188e4342cfaa0e38d062bcacaf0fb99895fd2fe3535f4e528890a75a18e0620e881e1fc87d11ce8b21c280c88ed11b2444d037990a11fb8e9af"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/an/firefox-48.0b7.tar.bz2"; locale = "an"; arch = "linux-x86_64"; sha512 = "e75ea9a5ca4860f228d4b2aba3c9ba4d104a7cc24fa138102d80b595e29a391d15fb82d749ff7a03193dccfccc7bbd106dfbffe5ae7152afc4b62f4d05d58ad2"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ar/firefox-48.0b7.tar.bz2"; locale = "ar"; arch = "linux-i686"; sha512 = "df97f1f2414d9f2c1d5ddc50e901167fe3535ac0f71ef99e08552ff9a5f4b7e6162f258c41d1024e2f886969e7ae80b741c271b551a51ae05a48a3e7987a52b3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ar/firefox-48.0b7.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; sha512 = "79da3baef8806966891b803137f2b9610b3562f0a806ab2fe3234f3320cb0efe11ff523373e933d5d230a6959ca68ab013d64dded47e6043e9fee90202c8bbc7"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/as/firefox-48.0b7.tar.bz2"; locale = "as"; arch = "linux-i686"; sha512 = "ab18bd3f015cddf2dfe337556d29a20576dda5879a56242955476f50b0978808d3ec63812666ce73a58904a70edf251e3773ea34a38b955510ad331e5f66751a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/as/firefox-48.0b7.tar.bz2"; locale = "as"; arch = "linux-x86_64"; sha512 = "26be5b409c5e4acd6a09482d1380f902cbc9948fce33ff5e33c22a8573b5ccd05f10a4b6f84dae8ed9280f5b6568a411837ec7bd1b64bfaf18670e2a45c475cf"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ast/firefox-48.0b7.tar.bz2"; locale = "ast"; arch = "linux-i686"; sha512 = "30d23a4012caa6faa02871be312ebf867321b5cddf1e74d7680e426af4a6670b34aa48f237ac8801c696d0cd2551f90ab5fe482b4a9bd03bd7d4521e204bba65"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ast/firefox-48.0b7.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; sha512 = "cb0ff48d6cefe69c4f05a83d7b9247b5bccc31db8efa708a7de3ffa67459f8427ac255bb6645e59f7ff6047f0370d24d2668954837aed7d71eae88df6824cced"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/az/firefox-48.0b7.tar.bz2"; locale = "az"; arch = "linux-i686"; sha512 = "00685bee899c7a083fbe2a4dbdbe32df1f291c619e1ca681164a3c88782f6898a11add06a17f13aeb912c635d0fb2ea2c30c0e3bd5ff7cceb63b1134901ecab8"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/az/firefox-48.0b7.tar.bz2"; locale = "az"; arch = "linux-x86_64"; sha512 = "e4133e1a9fb103652037caf21bc18815d89bf5e1a0d7b34abe115715e8e5060de8b00d35326bd3cfb9d5edb7cbe286456748953742e4cb5d5c76c7314a344720"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/be/firefox-48.0b7.tar.bz2"; locale = "be"; arch = "linux-i686"; sha512 = "9444970e5cc3f3359b02b8bc58f13edfd64ae6f99d306ae7d9baa084658c75b85120354614fe2655b600e0005de1b128df1e2967f93dd0fd1c31ee721e0ac306"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/be/firefox-48.0b7.tar.bz2"; locale = "be"; arch = "linux-x86_64"; sha512 = "08bf09e7b8f8911e42f5e88852f705c1f7263d1b6a0981c07f7ff651e620bd31c1a6baebd8a8a9353e49f9ed50d1c0d55bb88c97faaade0d415cba482ddc6f73"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bg/firefox-48.0b7.tar.bz2"; locale = "bg"; arch = "linux-i686"; sha512 = "1708e547f2ea234537a0dcf40163ac18c641bb4860e74f054325db8ddf4960ee0649348b458a8fad1f5bfbe1fa4308c9fb13d84fb941c2928ea42f6ea77cccff"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bg/firefox-48.0b7.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; sha512 = "26540e48ce864590cc40a45d4124250674a1977778d3251b5f46701d3fa3b0f6d8a602b5bbe1449040ff943a2ed12bce7758037fe8ab753d0b43eb815e905ffb"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bn-BD/firefox-48.0b7.tar.bz2"; locale = "bn-BD"; arch = "linux-i686"; sha512 = "6e37580672455a717be37061c4d3135e72cd6aacaceef20957cafe9fc95ff40a6781dd92a8425e4023f75f4d027c5961d7a3b0b6373501790ec5057da519baec"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bn-BD/firefox-48.0b7.tar.bz2"; locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "1498ed777a7e3aec18945ab01aec80a51e7cf6a202ca38b333ed6aa9517170bf9ec4a3c9e638acb60cac5b01ca16963b41489cdf71cf40655cd87d2ef161d4ad"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bn-IN/firefox-48.0b7.tar.bz2"; locale = "bn-IN"; arch = "linux-i686"; sha512 = "1d9335e8b1268fc163bc31d1afe58613738f08e4ca8a429da63e59e4b862e326cd62d82a686e5710304a5b86e9d2981885ce52aca9913d4cbbcd4c1e0a88e782"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bn-IN/firefox-48.0b7.tar.bz2"; locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "e686e0a9f8d5078d2a728add3085d0d11fcec9ce8b1a05f242769532ede411f41d8385b2199e2a27edbe8a58648d3e4b91df2d730e6bb17b7cb69c4a22630fb6"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/br/firefox-48.0b7.tar.bz2"; locale = "br"; arch = "linux-i686"; sha512 = "19f012125431f7c56ecf9ac12bb44a52aa041a97a0b2c1db3656d6229b4215d5bf492730c2bf08244e38ff120ad9003d4ee0842f834cfef8536b8f40d8e2217d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/br/firefox-48.0b7.tar.bz2"; locale = "br"; arch = "linux-x86_64"; sha512 = "250c9dc52e661c91163ece0fc195ed29d621508ab5666ae97d74ffeabd0dac1effddcc4d0ad9573c5c44ba9aa746330b5a6dd40693491f52609b1c47e9fe97a0"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/bs/firefox-48.0b7.tar.bz2"; locale = "bs"; arch = "linux-i686"; sha512 = "fa946cf9eba376ddccae25b44c31cb41dec16c016c678c155d0fb6f235c2932fc59eac0df292940acceaa7f463979495de17c86863450a1a771a277440d2033d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/bs/firefox-48.0b7.tar.bz2"; locale = "bs"; arch = "linux-x86_64"; sha512 = "eaf3e8c8706a6005f6f78645c709cfa2463e47f678baa395db6c562506b872d9d110e973186b4408022cb1d4a8b343d7c84e2e0f1a3c18e3d5c04b72c23243b4"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ca/firefox-48.0b7.tar.bz2"; locale = "ca"; arch = "linux-i686"; sha512 = "c4fefe7ea67edda4cf5ff7dccf6639246fb73eae683ef72bb7c75e25d630cea78fad38d11d690d9786e43e506cff548df3c867fe91d7570048759933f2ec0523"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ca/firefox-48.0b7.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; sha512 = "9bcad65fcbfdc85892fc552809da740fd28094bf6be32ddf783a6d011c901f3a17d8ba8d33649111978cfd75274641f6e0aa3513b2d05ed100f2d2d9a8cf9057"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/cak/firefox-48.0b7.tar.bz2"; locale = "cak"; arch = "linux-i686"; sha512 = "430b4f156d4130d2a689349c172c40c635ebb4e41d8dff65f7e3971b92ce7682661de763a1ccd706c9fcd11d3590d53193502c01964b703a7a304313c94e710b"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/cak/firefox-48.0b7.tar.bz2"; locale = "cak"; arch = "linux-x86_64"; sha512 = "46f3fd5a750618f8bfbc8015748e12df62b1f3db470abd3e7b0edba01ffe4dae1909cdbda5dd5cdd78a0d62845eebaf8e6223cc11e4b88b3710e1ce62e3ebd39"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/cs/firefox-48.0b7.tar.bz2"; locale = "cs"; arch = "linux-i686"; sha512 = "d8b8eed71db048dbcd25f116e70040d5105dc3ea9ea69a77064807862f19229cc215ef1482c94609276b914ed7fe55250889b986ac1d11ed086e4de3bb15b9b3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/cs/firefox-48.0b7.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; sha512 = "01e23193ad0bb1c0cd218bf22e301fa79da810ec79f4d68afdbb6d7f3da5871de3f15f38abb5cb5440fe29a3781600dce4733fef67d0410ffc6e63b0c29fb9e4"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/cy/firefox-48.0b7.tar.bz2"; locale = "cy"; arch = "linux-i686"; sha512 = "451f4eaae757e9474e905135caa2718d75551f2893a6343256b8c8595dd312e0c5416a7d7488b6670cd361db81d44097fb3c54c3cfa27a7efe6386652addb472"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/cy/firefox-48.0b7.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; sha512 = "c260f1090ffe09cc714ade4105c74bf234ab03f032cb066cecbc0308866c33169c9b3c7b37f3acd70d17794878d9e7e9f928a29c5e8aa2172d8475ca7460fb15"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/da/firefox-48.0b7.tar.bz2"; locale = "da"; arch = "linux-i686"; sha512 = "a449772de22183399c34d91b2c747253e7e32bd388e37b6f7194d68b87faf74df805886bc75230b19766ffb40e312c76d439754902b6d3c8b2057a654e656f33"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/da/firefox-48.0b7.tar.bz2"; locale = "da"; arch = "linux-x86_64"; sha512 = "990bf989ce48afd5261c7a6d6a4e3ada0c40acaaa5cc8c369724ff7eb73f5800009ea2c4584e8afe926f77d4b18af95510558bd99ff564754625e1c1dfe0d5ef"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/de/firefox-48.0b7.tar.bz2"; locale = "de"; arch = "linux-i686"; sha512 = "5c6cc3a65a31043ba0143d9609ad006b6cb4f9af4cbc57efb4d2012ec08438b63045dca06c93b7d9c657f7cab9e19e01ed2b5dc78b79f2d9f59ff85836a89009"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/de/firefox-48.0b7.tar.bz2"; locale = "de"; arch = "linux-x86_64"; sha512 = "1dcee925aa75eb0acdf3e21a0578dc7f747dbef8cecfe5024dba66461e03420ce9a9211b2c69a35861cdc75facb956f576cfe3664f91f4085aba1585d976fccd"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/dsb/firefox-48.0b7.tar.bz2"; locale = "dsb"; arch = "linux-i686"; sha512 = "c327582db0a1f78b1d4ec56115220c4bd5751eb46d16f26bd589b4b64291a66845d0277c4eb099cf197225771414ad1bd16a56d41587befd3fa1c766095c697d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/dsb/firefox-48.0b7.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; sha512 = "eb049a000e908e5d46726d09ad8a219e1c60ff2f29959f5cfa416a788e5c747f50ff5e6b807fe30f7e013a7f5587f607834ff0faad6e060a33db55d04dc6cfb4"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/el/firefox-48.0b7.tar.bz2"; locale = "el"; arch = "linux-i686"; sha512 = "634320e4103b0ce72a6c132afc8e33ff4a234669f835a23e526c227e94f62be62075cb69d6883831d72d13d309d4e1ecf9947d850c8079efe0c880f7b7b79aed"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/el/firefox-48.0b7.tar.bz2"; locale = "el"; arch = "linux-x86_64"; sha512 = "85c4a47f5d3c65a6ee623f89420141f0cf7e02d8c7338d39c8c672cb0aae2364afd37c66fa740bbfb88c52aa37da6b9d106a824845c881e4de6c2d2604477d47"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/en-GB/firefox-48.0b7.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; sha512 = "1ea0aafb65140f9c09aa4557d7460cfa9f206bd963137ec72a86d237be9cc3ca131b616c198e330d6328f48ae713cd5ac9f53159477b131e55e3ceef8e2ed7b9"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/en-GB/firefox-48.0b7.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; sha512 = "1a726088d2843ce835154675c6dca3e877af6281bac63aada1e4969782350e985428971b216e9225646c8daf523907394a21080e7f4e40225b9ff62d24df4295"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/en-US/firefox-48.0b7.tar.bz2"; locale = "en-US"; arch = "linux-i686"; sha512 = "ded034cd43b45d73539a3c3f8a196f26d5e80c3cba84e3d2ccb925815b661b4c9a3eaad1d35bc363ecee70e3ccec953bb03795c6fad33debd1a81ce8dc71669c"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/en-US/firefox-48.0b7.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; sha512 = "0bdb77bee7fb8720f1154ffa486a8f6564ca592c56ce07b823800bd54218bc01c57bc27cddc73524c8f8fa1944c869523880a02fc698e44c5c71f4c800dd7208"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/en-ZA/firefox-48.0b7.tar.bz2"; locale = "en-ZA"; arch = "linux-i686"; sha512 = "9557d2b57e09c390cd706673c6b2203f2a1beec8952a63e2d891d00b975c67ba3b5f0f6da622e81572d090aecee42ea8ff398df61845f7564ddfd42818bdaf4f"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/en-ZA/firefox-48.0b7.tar.bz2"; locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "0617a7b1117fe47bec89b86f89248cef981812a2126e64779d2f7b9c81fc11b38cb3ffe8f039aec72d4904cbb95505519e7ce64c115c1613e96adf90ee72f5d3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/eo/firefox-48.0b7.tar.bz2"; locale = "eo"; arch = "linux-i686"; sha512 = "3e4ffa7728382e6862f224be0f576953120b563e0b68599df545ffb46483ae470d12280556a97b238aba0427651be744e9e93e7ba19be3d0764698367b4ab5ac"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/eo/firefox-48.0b7.tar.bz2"; locale = "eo"; arch = "linux-x86_64"; sha512 = "acf8527148b42e9ed50d027dd9c9a6de11975d40556b2ceb27bbb2fbe0e37a4f2839ca643972b55de52f95619eb432e16b12f0cfb501a5be3824e977315ef89d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-AR/firefox-48.0b7.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; sha512 = "ed70d0cf72acbcac71e0684ef755d987702412103bab21510daa7107b369186569e848586009fb3e654f54ca657e7cb259ad5574d5ca1e16c517100946135466"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-AR/firefox-48.0b7.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; sha512 = "541f5579e3889413b6cfb1be40f5630ab401b7b0b3054cef1a633d89e36b59b1d83c86e44ccbb3acc8fbb13f2851b16e0b43f9aece4f98b0713b377606e742af"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-CL/firefox-48.0b7.tar.bz2"; locale = "es-CL"; arch = "linux-i686"; sha512 = "a44839ac7686b1d252cb04fe17ef5c2790d30214e5fa34a3cbd11f12dfbd9168acf7b33ef9dc22a06edd624726511e718691a973c5b70665eff78d0a18287413"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-CL/firefox-48.0b7.tar.bz2"; locale = "es-CL"; arch = "linux-x86_64"; sha512 = "84b768876fcbd95dd1f9734368c73b51b82ff445df975bfe913eb74c139e35d069acb1428b9afc51357c4567dba0d03950d7199b3fb43017df4987aa69247450"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-ES/firefox-48.0b7.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; sha512 = "727f670438db45203d403746b7396b3b754b888b4a1d104b2bd0599790ef12b0a16db9a32b51617ea05bdff4f2ac696566970e83029e7e3d25434ddda8c4e88f"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-ES/firefox-48.0b7.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; sha512 = "638ebd73556eacf0f2b38ef2d71db5922299d10c0d5b72b6bc7e935d814e300c17dd835f94517b8d0e62ba6e54d5bf5059dcaf57eb03a03bb7068161440f7c22"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/es-MX/firefox-48.0b7.tar.bz2"; locale = "es-MX"; arch = "linux-i686"; sha512 = "da88b8c3d5c9aeb33cbd637b00f4790225b7b46f4b8a1edfc6c49edeb1e29929c4690bd66de0afd31492b213a67eb617355adfe5a7d7b5ded09208eb3a861e36"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/es-MX/firefox-48.0b7.tar.bz2"; locale = "es-MX"; arch = "linux-x86_64"; sha512 = "0581028fea7610b44f27a6e5b25203020768d87e83e665aca24e753bbc0f0d49e2935c8f12755e6d4911e5f79052b4362447d1dfdc37838bfe9976e0d218e49e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/et/firefox-48.0b7.tar.bz2"; locale = "et"; arch = "linux-i686"; sha512 = "6d150372dff1113d14cb32003fcbbfc11f9aff6ed8a0fc8f5f8e2d5d3119b34a8471469d69e8fe48161297e69f95185c414680b3c59bb95d7e483ab2805b5729"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/et/firefox-48.0b7.tar.bz2"; locale = "et"; arch = "linux-x86_64"; sha512 = "72d784c90c054d29420582a9a71d96c9a7270b1ac5592d8b920f8148542f17181d9cd71d019c0294c60112dde94191a686ad105993d7bd8340142ca849b5c150"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/eu/firefox-48.0b7.tar.bz2"; locale = "eu"; arch = "linux-i686"; sha512 = "0c2b1f0f886436c8d9fe6eead6718ee47e72fd988e1e4d83a70200f6d085419636058d6767a66d273842cb44573d39f58f72181ddfce01ca60f392c6c18df22c"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/eu/firefox-48.0b7.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; sha512 = "7c03846d49cf1dba85202b2f7b6ed722898da5185a956ffde1c88df454560eb682ee562f782c3e21bf62b41ab156048ba1c63efacf7fd46f8fd7adf0536cff5d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fa/firefox-48.0b7.tar.bz2"; locale = "fa"; arch = "linux-i686"; sha512 = "3a21d3ecb88827de7094aa4ccf29005ffbf3f88681c459aa9f159d6dd6b04affda08661b1b77986b73a19de1fd2fdba2ceb91036ecc718a69cc5cb16e8c8bbe9"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fa/firefox-48.0b7.tar.bz2"; locale = "fa"; arch = "linux-x86_64"; sha512 = "4750663d5eae7ba9fa282b0dd97e05cbcf3ace8b0715983525ae207de57d352b45495e0dcc46381979997532a8e20c85567a9de18056181f5d408d57cefddaa4"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ff/firefox-48.0b7.tar.bz2"; locale = "ff"; arch = "linux-i686"; sha512 = "e9f452656328e3c5a2dd7dde23b84ae535551bcba16b14cc58fbf8aa33f2eb8655cb4ff524a15b0a2db2d4af9ef5da4ca853fedb5c0d05b877fb0a8656833311"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ff/firefox-48.0b7.tar.bz2"; locale = "ff"; arch = "linux-x86_64"; sha512 = "f43daeec8c0647a8ee984d3541172516d1d8822596ab66a1a9651cd31d447a35f078725f1eb4b30a3f01c02b8573fb0ad268ada70ce013cf1932602f22119e4e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fi/firefox-48.0b7.tar.bz2"; locale = "fi"; arch = "linux-i686"; sha512 = "477e5594a9821864db879ebf04b74852c711c5f0a43e00c02bf17754817c20279c56705aa3e3b51bccd52f9380bc242b12bf58cf40a2b64d9697c8ea76270771"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fi/firefox-48.0b7.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; sha512 = "aeef4b397c9972c055392faf64947d16173a903c290e4d710067c5cbe6c422acb2172f17c8b72bd5b80ae883f4d22c905ca0581c11822975a42031f2621852b3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fr/firefox-48.0b7.tar.bz2"; locale = "fr"; arch = "linux-i686"; sha512 = "363bd189e7988393a97c7fd9544537068cb541e762427115bde4a3f05297302a30604a5e6a34c97b037c8f2e9c25ddcdee0ebbd8c292ba007362b6de858643c6"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fr/firefox-48.0b7.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; sha512 = "4da717be716a1c16440be76d988ed2ac2ff73bf5a8734d1025ff190cb6d3b9072bd613d973e65207102e4e54479c32e8101aef59de533487b60a1cf10e7ed9ae"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/fy-NL/firefox-48.0b7.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; sha512 = "49e343a363afb94a8b7f7d2aca557127af4743a97678d123fe2a4355d542497da1f5c43a9c83ec974586ca707c3988d416c9e55090c9bae10923bc5aae785bd9"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/fy-NL/firefox-48.0b7.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "1c53d25d464e36d7dcdda0ba6dbe5bfc85c03309dd22edc916c97aac4ef7f4bdf6329349fe66d27e1e885b7ad76359e27c6fa885302905e6c6e785da1535b53e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ga-IE/firefox-48.0b7.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; sha512 = "bfa9b70d5b2c891a82b92ad78e5f7b71df005ec142a1fe60e6bbc5717152f1b5325499fa5baca6a9f4e01be104b0dcddc11994a510e7cb41a5f1709dbe00c895"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ga-IE/firefox-48.0b7.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "3d6bc3254bcffeda6260168bc43e58e1ea517543831579892b784cb43f51d9cf0b598f6acf1b56f51b72b7946f1904eb96168f046a80a76923ba52f265ef6d12"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gd/firefox-48.0b7.tar.bz2"; locale = "gd"; arch = "linux-i686"; sha512 = "4c12d70a50e8d1b5bb2a912f3d070b30783757ea339eefa87e63c46f8e47646e69acaf975f3a565dff67bb65933bcf070bb823c195a5df9ba8968ac9a7fd82ea"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gd/firefox-48.0b7.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; sha512 = "fdb748f6914902308d074262d4a1816d8a0a26a3e7f159d013d321875297b7c46eb266473361567c92c5011234ddc66a89f0a88b7ec6435c39e7488167d0b63c"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gl/firefox-48.0b7.tar.bz2"; locale = "gl"; arch = "linux-i686"; sha512 = "e450407c27de08ed93b088222fda97daea6cd69ec93a75f267ec67a510f3ea6a657eb4eed67844990f8815be28fa1af8fd722f208c3b6193fba38188eb03b134"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gl/firefox-48.0b7.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; sha512 = "be63e8e8dc2daa586fccfcf4e41979cc6746ab2797962a86b6644c9ed14d0f228a0a83aeea7ca115e4a13f33bd5048075ceff9c0ee7516ba1fc50dcece31d88d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gn/firefox-48.0b7.tar.bz2"; locale = "gn"; arch = "linux-i686"; sha512 = "545a5c29789b626e47db56d0b962989f8a73244d865ef03bbff57272f463706cc5de1cc5e346b0188d4dbd7caa3fb67f6c0ea6064320d6c81a7db678b8eac86c"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gn/firefox-48.0b7.tar.bz2"; locale = "gn"; arch = "linux-x86_64"; sha512 = "4dff9aad6938c17f3b97b1901831cdf1f993f0c8c03c3d03881680e1a5d82a10c414f85d5d6ef8791ea5c352eeede94036075b8a14046b87b19caf6cb917f950"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/gu-IN/firefox-48.0b7.tar.bz2"; locale = "gu-IN"; arch = "linux-i686"; sha512 = "a63a9c54fd2e3db1c161d33b6c725711bbe43d5e915f6bfe50ebe9f667a47299989e9096ac8b8caf80c7f69f0fb276fce33873dc77b930d0cc228d0472ae81af"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/gu-IN/firefox-48.0b7.tar.bz2"; locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "a9dd610aefc900d712bc68075d32ebe0e87a1de05af9b8592533db8cb65a1a6f56db5a566cd3c013a84d72802eac917fafd42517c0ce53b4701f58711ef0b7d8"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/he/firefox-48.0b7.tar.bz2"; locale = "he"; arch = "linux-i686"; sha512 = "5b0b46f00e3c61ea8c00b849b5605357979c7ec4276f9f490b6e75efee28fd4ba2aa285ebf689bacf58a40f03c2336e77a7b19c7fb518f95d900150c3c70d62e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/he/firefox-48.0b7.tar.bz2"; locale = "he"; arch = "linux-x86_64"; sha512 = "d67ef81f2c539718ff6916349f9ecfff42983c2e28b02b64e8ac71c54ef2dbfe5e9a4da6ec6f1b4361e458940bfde6f4da7f22bc19515cbdb98cc0166bdb1c27"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hi-IN/firefox-48.0b7.tar.bz2"; locale = "hi-IN"; arch = "linux-i686"; sha512 = "a15ac725626fdc4f9bfe02e31da4385af32c57c407dce7dc321e259fb29d4c46a254bd484dce8ea7d3e322fcdeef07d62f64a874d45f0460bd2b17007f688b71"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hi-IN/firefox-48.0b7.tar.bz2"; locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "2ded18a44554ddfe73721a35af71b77c600b362dce138ee78a633fa8d4d91a5fd55921654ff9c2eae05d0ebd9ede1de8b5c9bc07f761e068339474bb8622732e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hr/firefox-48.0b7.tar.bz2"; locale = "hr"; arch = "linux-i686"; sha512 = "797fa8e8ea628b9855f42bc3f77e1928743f9b96566ce886cf2897dbed920a6f83089f518bd07f5f820374e0968de848b46d8a6777d8c77ca581a1b172fd25c1"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hr/firefox-48.0b7.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; sha512 = "623eb40846a769825300177ffcde2f18721474605e6bbf7cacc0f26f2d7e3e68f0699a173fd0154bdbc6f56c13befe2bf45caa76dd3de7ba2249cb153b8624f2"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hsb/firefox-48.0b7.tar.bz2"; locale = "hsb"; arch = "linux-i686"; sha512 = "58b1f83e123fbd32ca6d824aa87e0834d92f8c148db086fba5414519aa77a1469f5010077b119dd6758bf58165afdc1bcb0fe5b0b664a68fb73951047082ec07"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hsb/firefox-48.0b7.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; sha512 = "853b6fa276e7e6c1ba0a30b95f8fde73e4bd4fb7e745c3722fed9de00bdae0d1739b78570a0108d2ff9efb73e8052e5d5192151ae789c5b336946039ece560d0"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hu/firefox-48.0b7.tar.bz2"; locale = "hu"; arch = "linux-i686"; sha512 = "984d3ab191091e9956bd28a2112715d0c27a24e5345b9c515e2b0521030200d2742041340db0d916915c87071c70b3d60762ca278dbffb88ab35611f30337468"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hu/firefox-48.0b7.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; sha512 = "cae180b050bd956bca474b187648dc969c2ca8ca3816ebe46d379681bbd470029d93e6518e7fe6170864c2466e6b3752aa3f372df34b672f93687704a26f0b83"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/hy-AM/firefox-48.0b7.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; sha512 = "f26993353fab3bbae965b7d7cdef57bee60839e4a726c75c966ff2e99cf6edd3e249bb3e3adc7791b1095869fe6f5b43861337f8cc6d3017600e61fe436497a8"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/hy-AM/firefox-48.0b7.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "b7c228256d16587720f186c1a257cd157d8302e597dfa6cb72fd984c05105cfbe6e33578addce044a88ae11b11e4e6703aea432d5823526caffb08e81b1b300d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/id/firefox-48.0b7.tar.bz2"; locale = "id"; arch = "linux-i686"; sha512 = "324de4444814ec0e57c57fc4ca07dca20e10bb0a80df33ee01dcb8908caf6e5310563bfd66b62ea4eb5f595ed81edd9c504a8b6f81317bf85c4acdf9da2181af"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/id/firefox-48.0b7.tar.bz2"; locale = "id"; arch = "linux-x86_64"; sha512 = "8b199bf64955d23fdbf47c92c57022e7742dce10c02242cd3cecfb662303402dce4a6c784c141a63007f4ea92b78e0ea0fa74fb6bddf157a848b2e85f50acde9"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/is/firefox-48.0b7.tar.bz2"; locale = "is"; arch = "linux-i686"; sha512 = "4addbf9e9626f6f81a276e506b5974232da161e108c194ea34f755efa40e5f5b4df6e4feedc90309740b4e8c04b946a8da74cebc28867f2d23ca71d9c0dc4cf0"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/is/firefox-48.0b7.tar.bz2"; locale = "is"; arch = "linux-x86_64"; sha512 = "843bcdaf5855dba929b4e12ba88388e3dbe3372051a3d789ac5951a66ff4c044af563e2c04e005788bf087590444d390ccdc0646ed37571e95cfa5225976cd36"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/it/firefox-48.0b7.tar.bz2"; locale = "it"; arch = "linux-i686"; sha512 = "e637a52c2d365835de33b8e3f3dae7beac254169ac65671282252c3ce33816c3af3cd696c73d15a3f3a3827c72376245ead9b0f655d2bdc857156bab353ddf69"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/it/firefox-48.0b7.tar.bz2"; locale = "it"; arch = "linux-x86_64"; sha512 = "f62acc4a2d2e8fee43f3744e3adf6b2850de9b7ada59a9d985b5ea0051a2f00c2fb0ce14bffefe679c0359897e1920e071aacd177bc140719f47d64dccf799c6"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ja/firefox-48.0b7.tar.bz2"; locale = "ja"; arch = "linux-i686"; sha512 = "081aa992d79d9a07e82a3027294752fc338e715e0b26edd6dfbb80fad3fab78fc4c0ab5082cf8880912c3a3249d7d35b0ae99c2152bb87a025219e7ecf16f330"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ja/firefox-48.0b7.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; sha512 = "3ffd093818c2fadc5d6e6a3ad9891b84352d522686ff1c23a9574c981a2421974d6346284db686a382193078ef3ad4ea8eaa081d9ecf59e4d07c396e1a1b223a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/kk/firefox-48.0b7.tar.bz2"; locale = "kk"; arch = "linux-i686"; sha512 = "492e2165c88e5e2a1fcce1bfc2c994f7daddc1ded69d6b486f21d0655c6ccf112b1202080cc989bed68a1c35502c078025135af13ddcb0548b17d6f830c09b66"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/kk/firefox-48.0b7.tar.bz2"; locale = "kk"; arch = "linux-x86_64"; sha512 = "f5e7a56849dd1aafc13b3b0772fdb482cf6e283ad98cbf2aa655c016d443242d9b760cf133c130813f04cc572de3f5ccf5cd4beeac98d07cdd4d9441838b1f34"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/km/firefox-48.0b7.tar.bz2"; locale = "km"; arch = "linux-i686"; sha512 = "d21d401e1505bdea1dda8fcd65622547ff919e0fe2c3ef402c1a5a67a5c61d6c082730ae21286def66699a994f0196202ba03956e9f5ba42a166d8dbff2a1aa6"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/km/firefox-48.0b7.tar.bz2"; locale = "km"; arch = "linux-x86_64"; sha512 = "c0e08b44b09c3f8c0e17335c0d287285e3f6cd5e308688da36647ba226ecb10c98f87f92ca6b2d50e0718e39757bcace7132390ffc4d2a339db5d3cfbc37b85b"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/kn/firefox-48.0b7.tar.bz2"; locale = "kn"; arch = "linux-i686"; sha512 = "71d3dbd2fffbf51c64fe7af008e27a2d9ff3dba3417bd9c0f1106fcfd445f88c2865ba03799b8fbbb00c13242c1cc7995b5aeed3d20c19b95448a7597378023d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/kn/firefox-48.0b7.tar.bz2"; locale = "kn"; arch = "linux-x86_64"; sha512 = "dda7d698c760ef750575f5978599bb964cc008a18ec048e744aecd17cf41d6eb2b9a69ea13efedf5a5d5a46da990c1df817027b7762cd169ca2f30a0920ebf98"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ko/firefox-48.0b7.tar.bz2"; locale = "ko"; arch = "linux-i686"; sha512 = "f427847b0a4d3e8c52f59a75e4b1971ae96998d202b44ed360f5781775d3cb1c705923a4acb96a365925fa1f27af7e7292d3e4f0af6c22af9803600d7a64a9ee"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ko/firefox-48.0b7.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; sha512 = "fda5463fb43253a392616ea7f0e287464e83bc9f4c9b3a88ae40f0e2bb1b18b5873ebe7304d27b76b2016312d9a2ff416f3006f5a75f315e2be5f8ea16be82a5"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/lij/firefox-48.0b7.tar.bz2"; locale = "lij"; arch = "linux-i686"; sha512 = "38d539b3b0ad87b557aa9c75212c64978fe1397c797247d94ac6b2fec33723d6d05de80f1d79b84989424fe5074204eda4af3f23d163dbcfcd035e5f7f568ce8"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/lij/firefox-48.0b7.tar.bz2"; locale = "lij"; arch = "linux-x86_64"; sha512 = "a03e8261420d0b336545bf140916fea9cdf6cf2ba5bb55de6f039141011bccec49e88fddf7664e7a574c6da525f2f6646793b9d505135a311710a4d4014fde5d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/lt/firefox-48.0b7.tar.bz2"; locale = "lt"; arch = "linux-i686"; sha512 = "ca11b61ed252863b6efcdab2438fca21bf837f29bcc7b719e5a99065aedb8f75bcae8beaec1a273624ea3c2a7a57db4386f52096777755297183691498f33c62"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/lt/firefox-48.0b7.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; sha512 = "7d6af8577ce9c9e3ab13ee3313b4c35bdbeef802bb5a5a15fd991d4fcf063b49ea1292718a4d74ed57b7c6f00889c96c9261bba442476d6aa090623afccebd9b"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/lv/firefox-48.0b7.tar.bz2"; locale = "lv"; arch = "linux-i686"; sha512 = "19024158acd59afccdbe39430e463e9b441cf1950aadc713ff8a74d9da97cc11d9437d86d0542306a8fa4a29a69547b4d59aa28be2bbec8a434425f20ca0d1dd"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/lv/firefox-48.0b7.tar.bz2"; locale = "lv"; arch = "linux-x86_64"; sha512 = "73c81902a047a13c01fddc07eeab9886c0c55e2a3ebd30fee0a036878e52580f50c47a1dd4050cf39587b63432cc9c2947c88200fb2c95b143379a21ea60c400"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/mai/firefox-48.0b7.tar.bz2"; locale = "mai"; arch = "linux-i686"; sha512 = "d6a2d0b8821872b4f78f2fc9ec6ab9e602673bfff2d1b6339a37532f883b61134719d0e4e9caba53d3198107b895b3ce193839de2a374391c3fd58e595be1eca"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/mai/firefox-48.0b7.tar.bz2"; locale = "mai"; arch = "linux-x86_64"; sha512 = "bdb1e2e97b736b70a7d11538e3fc16be55889b14397709094c2efea1faa3c57b0c272cacca0fb0b307a3cba656145df3f7945cba4e9f762f3f9ee4f389e3ab50"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/mk/firefox-48.0b7.tar.bz2"; locale = "mk"; arch = "linux-i686"; sha512 = "0c52c93a00e1b82b5569787a624806f1c3175d40813da3da0833b23006cb377dd1b693120f96c1a6c172093393ad08321efc52262c5260e80fe037e709c94ae4"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/mk/firefox-48.0b7.tar.bz2"; locale = "mk"; arch = "linux-x86_64"; sha512 = "bc2c513eb37a667195180ba3933407c7f90cb1e815f2c646a5410fb942e562c3659eaf3200ec6397a12987267ea26be1c71dd4467f80045c79bb793f2144cd89"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ml/firefox-48.0b7.tar.bz2"; locale = "ml"; arch = "linux-i686"; sha512 = "7336e98002f71f6ff9b51d94b5c2ca2b5ff412d9069837053a63e3819013b36ad6587b9675089243f19474eda2906767e98b2cb3e96ace266ea29f5142c2533d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ml/firefox-48.0b7.tar.bz2"; locale = "ml"; arch = "linux-x86_64"; sha512 = "fe70de56fa9d3bf56d355058c4412427f967f69467dd7b49cd1fa26c6abc898ae061b49bf259eaba7073fd926c1e8e5901a0979a88007ef3ba3d5caf07329203"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/mr/firefox-48.0b7.tar.bz2"; locale = "mr"; arch = "linux-i686"; sha512 = "180072a70d38d4607b8c2105dbfae2647900796208f6f5a6111419c4712e6ea959a6f5ca5068f1f7653ece073087e2f3c5dff177d92da4d92aba4ac1b4b7971e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/mr/firefox-48.0b7.tar.bz2"; locale = "mr"; arch = "linux-x86_64"; sha512 = "08bd093d657ae4e6b6136d1627ebd355ea2794c2e2824ca4d4121a5a506b0682a65e1416aa2cab49fd00db4c3736ce09101225b0333385032a958309cd7e4edb"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ms/firefox-48.0b7.tar.bz2"; locale = "ms"; arch = "linux-i686"; sha512 = "a3bdac7effbb5a29f2ff1385da3de4a2c16a914d1d3306cee22b379779b1eb9d45f6a6c6bf10ef1e1a11ab52834a08c5510a38303c10cc6e4cfb96b32ce2769a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ms/firefox-48.0b7.tar.bz2"; locale = "ms"; arch = "linux-x86_64"; sha512 = "08f2fe47c14ff5432f8944312e3d45d26dd3fa56bf4b0d350b4504cdc639eab147e3da9edc25b8551ab5156dc214101831c2c1c0f1b159201e5a061461e51285"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/nb-NO/firefox-48.0b7.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; sha512 = "cfbb14897df334df5f11305ec44f8e4b736a8320b6ed39e5581be413cc4daf92908ed54215e24e35e34e0904a1a500f295ebe64871e53438658d0340f7e708ad"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/nb-NO/firefox-48.0b7.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "19403a121e9e86447f3265ef72bda4e3a7fca55dfa76e8a25381ff97412329705f8b8a79031fd0116ac7e0fdc29fb9afa0c1de14287399f28e95d181fc933470"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/nl/firefox-48.0b7.tar.bz2"; locale = "nl"; arch = "linux-i686"; sha512 = "73789e769bcf2bd710f5234cc9c0f046abd5aed5d66b4e900b19f87a3c23a7daccfd086d9fb80fc6ced3742ccec90e96aba785330a2dc9cc79d76780fdf56cf3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/nl/firefox-48.0b7.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; sha512 = "07a842dbcde5fa7c5623fe5e8bd8dec04b33b300f52a1ffa8fe604ddf93df9879b9179bf8363cca4aa62a1c878ed77fb5e0b5db85355b4a2d1405888a9a6268d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/nn-NO/firefox-48.0b7.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; sha512 = "b82f14f66dee3036dd62d0af2889137d51521ff51494584fd8f50f380e8ead3d8290a73843a0aaa7dfc7e38c3f69c28b661185841c3f71f11eec686336c7f36b"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/nn-NO/firefox-48.0b7.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "9b627e063644d138c5b9b5bfce48431f8926fb3b13caa01547aebf007a002c75f8ae3818d5643f212c2e6d1e6203c49a24412aaadcc2dc5539824c168ecea52e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/or/firefox-48.0b7.tar.bz2"; locale = "or"; arch = "linux-i686"; sha512 = "7e36e94c90cd2ce6116a56a5f1ae2772eabfb19bfbe0a5bb616173f0e3cfc6d9f3cf77db07c767fe2673b29437ea8cdd70584e2b65752660d6c4878d598e0998"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/or/firefox-48.0b7.tar.bz2"; locale = "or"; arch = "linux-x86_64"; sha512 = "cfb9989b2ff2e2a81c3453dc7b03113e251d57b1925ba1fe60bcff4bca9fa16fe8ce6409cda6f90d7afde832b370a731d86c999df08e77a7c69ad6e72181f6e8"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pa-IN/firefox-48.0b7.tar.bz2"; locale = "pa-IN"; arch = "linux-i686"; sha512 = "63e4f8e6e5d6360914073a1a8b9dfd9d1936ad3efef6994a880bde075468cd37809294d3cd80dbb693b429dd82426e06632b6ea87f776da509bfb1ed1cdc1848"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pa-IN/firefox-48.0b7.tar.bz2"; locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "49a065634297b37532882cad5b13687fb6abfe0fdb577a4ea1bf86568abe2ef5b29bec7d786a47b8a12ad06d4fa78faffdea1f531245488efc42b14da24d2f52"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pl/firefox-48.0b7.tar.bz2"; locale = "pl"; arch = "linux-i686"; sha512 = "06ff4df2f58d8c39ded84915d5f4ea2137f1692b7955c205a738fe65adc8c324c9e4e1f46963e40dfb74c483a33028d6157609e9f99819683008e0e5f992e52e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pl/firefox-48.0b7.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; sha512 = "b07fc75e55b860ac8ce03262dfbe77ec558842baef037f0e390245f3bffab03df31f6488811b630ed5355878dc01e4930b839251fa726a121fcbfac2eddae9d8"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pt-BR/firefox-48.0b7.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; sha512 = "56a5f63dda3c359203a1ada88dda971aefd4219e0d76a8123792131cc5abaf23a1bda2498c1f93725b853576f572205905f3b7d16569611adcf87b7bc96528b2"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pt-BR/firefox-48.0b7.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "5f7af50fa1620c17e4473c869fa0a4384518b79514108317c1aa8c5f32fe6635bf88eb53d589f4714fcae740988d56163e293960b40b2165eeb6fdc7146586c5"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/pt-PT/firefox-48.0b7.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; sha512 = "b3f4913abae949f1783cb6cfe934b97f3a93a579c8f57d3e29d87e15169234b58c5a243395ddd0944edf4519a9d3d735424bf14ff7280d7a54494989cbe7aed9"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/pt-PT/firefox-48.0b7.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "71853f84f9f1545a099bee0994bc598845aceabf562730c1fbb7b0f9c3ea8113e6ba473840feadf76aa0d35ac0ae5a038188ef6078fdb192de99396973cfebce"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/rm/firefox-48.0b7.tar.bz2"; locale = "rm"; arch = "linux-i686"; sha512 = "d1aef184253166dcab16b1cf25bf58131ec76e30af84ea0a75d89106e253ae4b5ec17d55039b1d1584f39c4ee1ef7eb28b73144cb8312fe15aba74e43cea0ae4"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/rm/firefox-48.0b7.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; sha512 = "1ebe23f6c352e088180ebc9f03c4e35b1c08a2c8b9efc64ef710c8bb0c70c082bcdc3f23c436a427a95bccc219a5be8011b46d49047483fb57a2be2ea61577a1"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ro/firefox-48.0b7.tar.bz2"; locale = "ro"; arch = "linux-i686"; sha512 = "6ae17fafcc61dcf5ea548e55c7535ac196402c20468ed53eb32a529eb756a88264660dc4acaf1f27dfeb9bf4e5515c75287b4cc8ac42c765358908659ee12d03"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ro/firefox-48.0b7.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; sha512 = "9635df3cf66825a4ec30ca03f944929977bd526146d5991b03a2539e59a6d5a979f8d25697e9aa6e051ebd6f05bbfeb993e11e547491a272e77c36b695402d93"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ru/firefox-48.0b7.tar.bz2"; locale = "ru"; arch = "linux-i686"; sha512 = "ca1f6e5e32da878f50b2cfa5f42d78ed93423e0f4f308e914a184747c59a82f0d2db5c768fb65a16bb0409070614be44ea14351c21904e32baf5470b81fd4925"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ru/firefox-48.0b7.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; sha512 = "14f66c3db5d3f17e064eeb80eec31ea4d531b827248eaa5d6d1c936962b77503f7b9adb16daf754909e4749f8548f4be8f86f3d01345bf9999e70d8e7c52f6d6"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/si/firefox-48.0b7.tar.bz2"; locale = "si"; arch = "linux-i686"; sha512 = "cd45ccd8f3e41ae3f4833f6f5a821dee061898fba61c974099361eb84272676b146896727889f8adecdd563db9c4ce0de666221eacc7f0ef841ce4a5155961d9"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/si/firefox-48.0b7.tar.bz2"; locale = "si"; arch = "linux-x86_64"; sha512 = "234fe0d5677b67bf5458df4290b055159860f43a3afa66982b9ed9279a5e74ba90ef6cde23fdbd9fb7134ef0ba47b270880b3561f35fdf2286b23e128f9d0da0"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sk/firefox-48.0b7.tar.bz2"; locale = "sk"; arch = "linux-i686"; sha512 = "0cdc7209cbb2d537ba19ba206b53534f18ec0cfba1ad67a435f7134b1161f13236db2bce707cad50687790861e09ddd31a35eec8fd4965d4b1c697a84b4e00f4"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sk/firefox-48.0b7.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; sha512 = "8db988c2fe8624d9b7154a39df173f2bec70369edebcb02363f5a1ff50e299590722961d58c96bc7cd003e14b7db8e6c1c78a488bd1bf3721e880df1e14fed08"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sl/firefox-48.0b7.tar.bz2"; locale = "sl"; arch = "linux-i686"; sha512 = "a67d0bb63da12db2a1d936b40dfbda4f4473a67c8937c771b8b07c651eb9302128cdce01c02f1bf52ea641dcd9520b5d79561c07a88004ab39ae4ddf28a6cfc0"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sl/firefox-48.0b7.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; sha512 = "d0f179237a4dfc59d8e847f5393ce7d59c6f399bc9bf5113f70f3850e3452d14542f08ac1b2faf0ec291b0f80183553d4b44c64866902db4ee891f00703bfe4b"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/son/firefox-48.0b7.tar.bz2"; locale = "son"; arch = "linux-i686"; sha512 = "f66d6383be284933b2b62432b86e6ffa636c737ff5ad2d8159dab527cd951501eedcbe9a41d197fc1a7f14404ead4b2f25b7c1bd1725bef80a5dcba6a793ea42"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/son/firefox-48.0b7.tar.bz2"; locale = "son"; arch = "linux-x86_64"; sha512 = "bf461c7cf0f24cc091af8806097b759a5ceb5934fd96011e003a438ea5de0dd9221241665c3b713dbb3485f13070cd7aecc23902a28b2f84bb6bcd69d96b95d6"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sq/firefox-48.0b7.tar.bz2"; locale = "sq"; arch = "linux-i686"; sha512 = "cac1528dbddbf0163391cbc7860cd048376de7012950fdb74beb8f0dbecdbfda5b41dc347d100b0a83b31d3b324211e7a253dfbfafbc72f083013250660139c0"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sq/firefox-48.0b7.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; sha512 = "bc96183968912b8ccd6e46adf82c49777f19b1692a5a06ccc9e24d4cba31fbddca79993f6e33a1693da0a794c081d8696d96dfe84de32003f190c2cceb484e9e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sr/firefox-48.0b7.tar.bz2"; locale = "sr"; arch = "linux-i686"; sha512 = "4f5ae88197d4841cb38da7b0b8c5cc0ac8a228f6d1f6851bfa8782dc4ae91124da25a2235a13f9074d29498ff227602bafeb2a475e1f83f116ae6df26a575f66"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sr/firefox-48.0b7.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; sha512 = "334695dbd86e2fe674897b23c9144444e984e16c5cb813a980fbc6b025b214aaf344019dddb8612125c26ab1b6da4b9007dcffc1ddf205cbf226d43f536728ce"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/sv-SE/firefox-48.0b7.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; sha512 = "9bb2a9d07db3f7840e56368edbdaa3760abb2a5e9a266f75ac84ddafe0ab42b582613cce581dd898761ecb869b85ec515a113a79ee1c3470ae48ba261f559c8b"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/sv-SE/firefox-48.0b7.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "3a7dbf64988527a3d1f88fa1840bdf8292cf90ce21b5823aedeb2fb9263a2b7ffd9f89d2709e2a2d208f0c7e70d3819a92c7859cc2c2510a4f0fe8160599d3b4"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/ta/firefox-48.0b7.tar.bz2"; locale = "ta"; arch = "linux-i686"; sha512 = "4d6df0bc1dfbb8a0761250fa7bcc3575af66ea0e91e6ed18d340eac96e4ae2c50e1f873c54f10eecc08a0902f3dcb9a9df753d6d9f6a640e7421fa9bf38f884e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/ta/firefox-48.0b7.tar.bz2"; locale = "ta"; arch = "linux-x86_64"; sha512 = "b13dc2570f7c2f5d4a323aabf1448d04550d6356bd43b143c10fdc7e88a97d79d93b8145c3d7230e9f417a147f5884af3217738e5190955ab61459703bfe5954"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/te/firefox-48.0b7.tar.bz2"; locale = "te"; arch = "linux-i686"; sha512 = "b3540cdfe33168c6b77386d3d32dd3a44c3198e9669fac89129549f6240475e657c2e790a38f985e85e20315df0769fdee57c65513c914ebee239f51e7932043"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/te/firefox-48.0b7.tar.bz2"; locale = "te"; arch = "linux-x86_64"; sha512 = "3aa1ea89e62fa74208c5336c99aa6bdd98358852a032e1c90a70a48b6903523d08cc03e62976e10bfae86cfe0b431befd9a33bd62ef1f262d58bd9d5940255fa"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/th/firefox-48.0b7.tar.bz2"; locale = "th"; arch = "linux-i686"; sha512 = "8e2e979f54bef8979367b7bc5b54eafbcf774dd4ec47a65352e8529d76edb6a4ea331fa8dafe82894868f4cd6b269424f06668a46596d099400a980694b03db3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/th/firefox-48.0b7.tar.bz2"; locale = "th"; arch = "linux-x86_64"; sha512 = "708841b24ad871cef003040a59379dac33b2131bb699ede2146d02b6be7f562057c6713d050e201075341dbbb8a7fb400c6852cb4d1de2064fcd03ecdda6450f"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/tr/firefox-48.0b7.tar.bz2"; locale = "tr"; arch = "linux-i686"; sha512 = "788e91d5af695acfdca1b02eb422efc8ea35652dadffd3b03babe5622c6e8d0ad1dd200a63589329a28eed3e0ca723e838ceafa721c45a86ffcc34aabc462671"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/tr/firefox-48.0b7.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; sha512 = "370fc35b68ec734e9f5544f7cb74cb07d706f3e1c181f25c7e1b6e5fe1f9ee1bd9b289e164792e4a31c9fe7fb098c5114919234cda0583794f8964f14d60c4f3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/uk/firefox-48.0b7.tar.bz2"; locale = "uk"; arch = "linux-i686"; sha512 = "463da060477f0b9831fce5e00248d841fa7b9ccae1e70fd707966aa09f55b7bd4eb89ee04b41ed6619ce465c86ce84236fafe14268a2b97c482830a2c6f8f77e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/uk/firefox-48.0b7.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; sha512 = "7a085f96ad6f67092f11ac1605541f1dd39a5ded50a3375e50596e18c76e992a1ec9a648a2ffcf4fefee09a3644d6d5d0abcbb43f5173a1d086f3c38b4ed7ed3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/uz/firefox-48.0b7.tar.bz2"; locale = "uz"; arch = "linux-i686"; sha512 = "e3458b936fa06aab7ad5fb37c8bb0e3d1391e764382643b9978ded9e175dbe14fd3658f9b0903a0a5a74bb1aa1d56340fef37f19ca9ed92d3ba3ed28174c2cd2"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/uz/firefox-48.0b7.tar.bz2"; locale = "uz"; arch = "linux-x86_64"; sha512 = "2899fc4bd5b40996aebd0c67627ddd40bd9c3778001afc23a7d4a232a12ababf4504568594aab045eddf2a1ad71e026bbc832b5ddd265132c74325eb84523a82"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/vi/firefox-48.0b7.tar.bz2"; locale = "vi"; arch = "linux-i686"; sha512 = "c8cbd21b1ec2962e30a525bf7d1f45f449aa80448f3c8cedf2ffd54b2f7e1e07d8f0ceb2c5fdb3a9bd7e2df8fae0b14c65d0d84fd60f6cece8ececec7df468a1"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/vi/firefox-48.0b7.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; sha512 = "86fd5cf184aa8b897b37dc0f05bdce5dba64e7b8d7d6fea79d42e7a591a141af7b28e87e15a1a98d828ed259c097005b8ff8f52fa5c33873eed199d5f2a391b3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/xh/firefox-48.0b7.tar.bz2"; locale = "xh"; arch = "linux-i686"; sha512 = "703a39b4d0fbb522c9b7a2c24780776d804025b659a6bfc1b875924429f05d55f2eb57bc333dfc6b0b0b18bf8b18dabdb7a91ec7696cdefb404cbf0b2afd89b7"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/xh/firefox-48.0b7.tar.bz2"; locale = "xh"; arch = "linux-x86_64"; sha512 = "0551330c8203a93db60f5c4570a03fbd7b63f243eabe2eb0465bb8e3fa6c2389e402b29237fd91f98455f74360c6056d31fc1c1f66c5035c57ff4c8b2500070f"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/zh-CN/firefox-48.0b7.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; sha512 = "8b9293827007bd0d510ab84e15553f4f396dc058a9871651d63638936fa03cb628ffd31bc2d01dfeee9935ad18976e0941345217e1e161df0ddc7a0e4b527ae6"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/zh-CN/firefox-48.0b7.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "ecdb91365c00090388b0d0e0b9bf7fc327b6d142c3671fa96e626a744852ee838220efcbcdc57a6fe2f17d8b3a3b57fc3644b30d965a0a5c118cab421755dd05"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-i686/zh-TW/firefox-48.0b7.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; sha512 = "9f65780b2952210ba613767fb885dd77af3e96596e2d7833902318ac7508c98172abb2a42d3c33c7bdb63826379f039ee50f0df3436c122a4bc794d4e9fd3a20"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/48.0b7/linux-x86_64/zh-TW/firefox-48.0b7.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "a915d396e093f2d87f2ee6cfe20f3c26fb6c524968fee0c8d1cbbf1e53a6cdec86921b6e2f252ca3a8dc13bbc8617e97d8d6e883973364e68be70c409bf1b8ad"; }
   ];
 }
diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix
index e9f6f816be5..88d9a0ccb96 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/default.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix
@@ -35,18 +35,13 @@
 , libheimdal
 , libpulseaudio
 , systemd
-, channel ? "stable"
+, generated ? import ./sources.nix
 }:
 
 assert stdenv.isLinux;
 
 let
 
-  generated = if channel == "stable"    then (import ./sources.nix)
-         else if channel == "beta"      then (import ./beta_sources.nix)
-         else if channel == "developer" then (import ./dev_sources.nix)
-         else builtins.abort "Wrong channel! Channel must be one of `stable`, `beta` or `developer`";
-
   inherit (generated) version sources;
 
   arch = if stdenv.system == "i686-linux"
@@ -70,12 +65,7 @@ in
 stdenv.mkDerivation {
   name = "firefox-bin-unwrapped-${version}";
 
-  src = fetchurl {
-    url = if channel == "developer"
-            then "http://download-installer.cdn.mozilla.net/pub/firefox/nightly/latest-mozilla-aurora/firefox-${version}.${source.locale}.${source.arch}.tar.bz2"
-            else "http://download-installer.cdn.mozilla.net/pub/firefox/releases/${version}/${source.arch}/${source.locale}/firefox-${version}.tar.bz2";
-    inherit (source) sha512;
-  };
+  src = fetchurl { inherit (source) url sha512; };
 
   phases = "unpackPhase installPhase";
 
diff --git a/pkgs/applications/networking/browsers/firefox-bin/dev_sources.nix b/pkgs/applications/networking/browsers/firefox-bin/dev_sources.nix
deleted file mode 100644
index f43810d53f0..00000000000
--- a/pkgs/applications/networking/browsers/firefox-bin/dev_sources.nix
+++ /dev/null
@@ -1,12 +0,0 @@
-# This file is generated from generate_sources_dev.rb. DO NOT EDIT.
-# Execute the following command to update the file.
-#
-# ruby generate_sources_dev.rb 49.0a2 > dev_sources.nix
-
-{
-  version = "49.0a2";
-  sources = [
-    { locale = "en-US"; arch = "linux-i686"; sha512 = "85c4289e561d2246f96a05e3b8df011337984b9f176670826a705c2cd68a1284056ba507e4b6e4887595bf37f25386d9f7b28a20bc1f125865b9fd7b8be17eaa"; }
-    { locale = "en-US"; arch = "linux-x86_64"; sha512 = "2bf9518dbfbb48348f74929c19d03e8daf51020bf9ba6db577a202b6e98ad7ffb9e9a0b4ca92af010cd3f864ae84940b65438f4230e6de3165f72e4e7280086d"; }
-  ];
-}
diff --git a/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb b/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb
index 03acf17e426..d049363f2cf 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb
+++ b/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb
@@ -10,7 +10,7 @@ version =
     ARGV[0]
   end
 
-base_path = "http://archive.mozilla.org/pub/firefox/releases"
+base_path = "http://download-installer.cdn.mozilla.net/pub/firefox/releases"
 
 Source = Struct.new(:hash, :arch, :locale, :filename)
 
@@ -39,7 +39,7 @@ puts(<<"EOH")
 EOH
 
 sources.each do |source|
-  puts(%Q|    { locale = "#{source.locale}"; arch = "#{source.arch}"; sha512 = "#{source.hash}"; }|)
+  puts(%Q|    { url = "#{base_path}/#{version}/#{source.arch}/#{source.locale}/firefox-#{version}.tar.bz2"; locale = "#{source.locale}"; arch = "#{source.arch}"; sha512 = "#{source.hash}"; }|)
 end
 
 puts(<<'EOF')
diff --git a/pkgs/applications/networking/browsers/firefox-bin/generate_sources_dev.rb b/pkgs/applications/networking/browsers/firefox-bin/generate_sources_dev.rb
deleted file mode 100644
index 37d5569efb0..00000000000
--- a/pkgs/applications/networking/browsers/firefox-bin/generate_sources_dev.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/env ruby
-require "open-uri"
-
-version =
-  if ARGV.empty?
-    $stderr.puts("Usage: ruby generate_sources_dev.rb <version> > dev_sources.nix")
-    exit(-1)
-  else
-    ARGV[0]
-  end
-
-base_url = "http://download-installer.cdn.mozilla.net/pub/firefox/nightly/latest-mozilla-aurora"
-
-arches = ["linux-i686", "linux-x86_64"]
-locales = ["en-US"]
-sources = []
-
-Source = Struct.new(:hash, :arch, :locale, :filename)
-
-locales.each do |locale|
-  arches.each do |arch|
-    basename = "firefox-#{version}.#{locale}.#{arch}"
-    filename = basename + ".tar.bz2"
-    sha512 = open("#{base_url}/#{basename}.checksums").each_line
-      .find(filename).first
-      .split(" ").first
-    sources << Source.new(sha512, arch, locale, filename)
-  end
-end
-
-sources = sources.sort_by do |source|
-  [source.locale, source.arch]
-end
-
-puts(<<"EOH")
-# This file is generated from generate_sources_dev.rb. DO NOT EDIT.
-# Execute the following command to update the file.
-#
-# ruby generate_sources_dev.rb 49.0a2 > dev_sources.nix
-
-{
-  version = "#{version}";
-  sources = [
-EOH
-
-sources.each do |source|
-  puts(%Q|    { locale = "#{source.locale}"; arch = "#{source.arch}"; sha512 = "#{source.hash}"; }|)
-end
-
-puts(<<'EOF')
-  ];
-}
-EOF
diff --git a/pkgs/applications/networking/browsers/firefox-bin/sources.nix b/pkgs/applications/networking/browsers/firefox-bin/sources.nix
index 337e6573309..90749b914f1 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/sources.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/sources.nix
@@ -6,187 +6,187 @@
 {
   version = "47.0.1";
   sources = [
-    { locale = "ach"; arch = "linux-i686"; sha512 = "a5391e45d1e59a7c14d8d421286033e3e760bf2b4afddfec3d1767b2ebc957b053c39f17f8185a6c9ca2542c76f6c9612d95d474c01bd5ecc62e5d4f4e43e8df"; }
-    { locale = "ach"; arch = "linux-x86_64"; sha512 = "48681328033b694adfc6149bd965a3dff90ef014db6f65641ddd3d79ba7901604623735555bad024dc2425f226c65e332a0875d6b18fe1c06b18a1e407b70294"; }
-    { locale = "af"; arch = "linux-i686"; sha512 = "7757ba99ce9991f67a45d9a19615a93c0a1bf0e35d35c5fe653f04d47c068054c8d91327641a48cd20fb9531cd1e842066c0e6f2dd8b23bff216a9fc727ec84d"; }
-    { locale = "af"; arch = "linux-x86_64"; sha512 = "7e3d70da29aeb5fc81f5e6dc52a4b8f831813f8c025b1a105df631cc5b675905c82dae842459ad30c5257b74bd5654e9aec5dcfcdee93eb42443c45cda81138e"; }
-    { locale = "an"; arch = "linux-i686"; sha512 = "1051e1e3a6c25ba6b3aa4ce5adfdc60bcb3c612f3facd5edb702385ea8c0837cc53e95b064a424e0c055a56a11f3a54a7ba37e2ef35045c8cbb834aaec0f6327"; }
-    { locale = "an"; arch = "linux-x86_64"; sha512 = "27fb75ce402c0d47f8542d3d6d6992587e6ea0caaba2249e763f0f9c4f1d233b37a4b87ebb7e730d16704c7d2abab690660e409e721850875fc09deb0c433252"; }
-    { locale = "ar"; arch = "linux-i686"; sha512 = "296e23fff265bcc08ec0f81608d50428181163d216fd896c80a1a8c31e95f243112aeedf3bbd96b1efbaa1d6d576a9bfc75e5fe8df434cbb74bb9576f7d90a83"; }
-    { locale = "ar"; arch = "linux-x86_64"; sha512 = "15f0e7cbf5a98ffa9d2d7befcb11938b76194dff29b1d93ddcbb8f5c655ef33659534874a72aea18f98af06e5fa4392aee5412582ef43292d70603dff2c42c60"; }
-    { locale = "as"; arch = "linux-i686"; sha512 = "67883c8cb7ffb6c05288b316b2aa5bc3274372dd82ab4c771fcf1e5a968e550d12c89027440704d8479a906beeef24a18ca72ad243628a5ece45918ed990c793"; }
-    { locale = "as"; arch = "linux-x86_64"; sha512 = "f7718b0dc9bcbfd109591f87263d7791dcd7612b0312d0bf93e68b1f2014d3732dc6740c57a8e64dfc1af7946da14dde617945e38842eb19cfe39376cb12ad44"; }
-    { locale = "ast"; arch = "linux-i686"; sha512 = "f29b883932752bfa947c48f7c1ff6084b1cf215ea84cf63beaea808702b0b90f50e85aa4cefa4d2c1234b0d366c8f6e3d8fdf7a0f92d432cba790adab6d24174"; }
-    { locale = "ast"; arch = "linux-x86_64"; sha512 = "8b656c6b08640c125b94f90e1dc8259c90af2e764cee73b02b9dc3c0246b3195906d9208bc2a6b3ca31091d8cdfca8338fa6c489b7caa5685a23133e98847a39"; }
-    { locale = "az"; arch = "linux-i686"; sha512 = "5ee1247e37964274bbea8021c8e4e5116fedca95712fbd91d709c5c580bd1618c6319cae73278b2f0ba82031e94bd3fb382d2b4dcfc9a5d7ad47ecd80f4fca43"; }
-    { locale = "az"; arch = "linux-x86_64"; sha512 = "c369046c29dd0dfcf40e69e1f5b5a63423833a376d2b143d3fbf2ee1e23dedb3baf24843ba1178bda94b86f357724898a147d4adfac1e469cbf44166d7ffd16c"; }
-    { locale = "be"; arch = "linux-i686"; sha512 = "f8a1ab05b8d25a7a30e755a551f0851a308ba0720180685f6946a510363988717f8274ac2c8ef826c60232a62c394b86829d289e7d74e24b7656b55238129b15"; }
-    { locale = "be"; arch = "linux-x86_64"; sha512 = "df05271371de5fa25ec11164eaac0b253bc892749d421a6ca730dfeceb4ef89492c42ce83a87eccbe91cb03ab001bf0a1d9a20a7296b69841cab8c6b5d2acc36"; }
-    { locale = "bg"; arch = "linux-i686"; sha512 = "80644b86f9296b708e74843a51f81d368e3508f0f2f74de1a998d30a15f6e3af08ffd70dcc5c79adb76c03be9ff4713fc8403b8433cbc33ca3493941c4fb2fe0"; }
-    { locale = "bg"; arch = "linux-x86_64"; sha512 = "0e6cdc5b3cc706031c95a550b0c800c9e8e2d7bf241010c22f0872eca4bab018a5f0d4a94abb4f8291c279476700f2101a69ac0c57ae79994fba38b88b00fddb"; }
-    { locale = "bn-BD"; arch = "linux-i686"; sha512 = "4c697f1dcd68634e2ab712d4f2415e57cf8be0017fff3602223d8af19a1f3a5c973489d13951baaab95924fad42212a485fdff622d2b559be36e246c8a847b67"; }
-    { locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "1931035a9d92dd9246a00b32443e282dc405096407a4feff7856125b7ee156840114c9be0dd58a020c250fa54c4ccb22052d2be291eeec9b5f76303fdf6c4cc5"; }
-    { locale = "bn-IN"; arch = "linux-i686"; sha512 = "fbab6f7e4205c803a50990624d58aa80cfd3aa76fed02cbf9ea390f4ecdcc1a97bda9b51791cec49f2a7e1010109d5f81a1c9b6ac224f1f70df49407df5f7386"; }
-    { locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "c705ec8356796060c6782261086011bc0bf3ac9f08bc821ce2305c9aac11c522abb802a9d9ab7dcb53b0d38468bb6e667d45b187355d769acb43a8b252c4f400"; }
-    { locale = "br"; arch = "linux-i686"; sha512 = "c58cd77139a0ae7f3bb8f6f25c40856aca18a831c8f5d6f5d59a45ec615420bd55205093fb66a77591835b0d9493f774b1801a168b9c071086d510a1446cc914"; }
-    { locale = "br"; arch = "linux-x86_64"; sha512 = "b6bde26d478eac081007ef43a6d588f70dc4d54afc423b019468dc91bfcb117d3b4989c4cbb4cf77a1a11847a58ec74fbf822b6e6f0ef86fdb0065c301294850"; }
-    { locale = "bs"; arch = "linux-i686"; sha512 = "16ee40d079996f42be77167b73645d389045648c9d36b76e34d0398c7b5b6dee54712d109f93d054236ac7076fc3edb06ee82acae40ad22825a23d92d0e2c636"; }
-    { locale = "bs"; arch = "linux-x86_64"; sha512 = "ef674f409df5c32fe4584f9de65cc6558d6b3ec78d8a83f5cec829bc1ae09f30399567915e32584334704d12264c2592fecc9e4952beabc8b0d4eb49a7186854"; }
-    { locale = "ca"; arch = "linux-i686"; sha512 = "fe522bd836c82cb68bb21ad1c7f36bd9a7af1642abf7c035e2d0999b4cc07c58124e4d8de81344598036159102ee12f22c12e44a8a087e54d6c661c3f453b63e"; }
-    { locale = "ca"; arch = "linux-x86_64"; sha512 = "b618da984d35fbde3819d101c103d8d9a5a4de98f0e254c67e894656019ebb6adc56e14a57410a61430d9aa9c1e0a01339b39a5272164af372544f27329a1644"; }
-    { locale = "cak"; arch = "linux-i686"; sha512 = "82659aa2fbd091224aef6800b3df1d2e5141b6a295918e4fc4ea09b671184f62c670e3dedd7040b2f167581b0c8a0e8799d861256b273b01b2455d0937722273"; }
-    { locale = "cak"; arch = "linux-x86_64"; sha512 = "a507cff511c6337f805a27c0f73548342d2fb2cffa683874d66b054b844b17c354cc6da5c3d15618006c2279099b0cd9172b17d9d4b21a3863b5e395db686b22"; }
-    { locale = "cs"; arch = "linux-i686"; sha512 = "9af91acffc2beeb53280a6cbd21656a91a686c03342fad90dd91314c49535acef1a8abac8fe54bcfc250ca8b8f07e3550c890094f3bcee6baece983cec68bd8a"; }
-    { locale = "cs"; arch = "linux-x86_64"; sha512 = "c8bea48dc11c021fff9df5ee1a67a6b6e9193ffb2a07e17014d7448254d8a8f4d1512f862ea73bf84dc15b40edbba3fd94cd3d2d18872255bbfc7fa9a7b8ec29"; }
-    { locale = "cy"; arch = "linux-i686"; sha512 = "7cc062c3b9b4bbfd0b1f7247f06505ae99458514b607d4d9062836085798bab7ade6c4d1c8903b1b961243c6fb6adb4c4f94780f1194f745cf62d786e2c4f5c6"; }
-    { locale = "cy"; arch = "linux-x86_64"; sha512 = "abafa600b941e17f8aea0e778a937f5fb34cbc8803c93e59febc5d9fde6ad3347ba0bc7aa07ab57a61f6b9d6b11d582b987100364aa8401bca539dc6e14584e3"; }
-    { locale = "da"; arch = "linux-i686"; sha512 = "d4a9141779f52b78a51b9682b6b44e5ccffdecf5582358ab8a02efe133d9a52023e03c238e106a79e41a8aeaabcc58e0757c1af66837768e7bf4732f26182915"; }
-    { locale = "da"; arch = "linux-x86_64"; sha512 = "48f0c48aa273cec9830bf806330c7a630185262838007628acad904a45b3186450a8973938c36db636bdef9042c78ce94a4a456e1682ef561abaabab6ac20863"; }
-    { locale = "de"; arch = "linux-i686"; sha512 = "01675b3a8ecfa10da1d101cba36295b226b130e1cdb2c760541cd76c9b21436ae84ca7228e063402b1ca2eb59acadcac7720c9dd47db8b406675fb273af206c6"; }
-    { locale = "de"; arch = "linux-x86_64"; sha512 = "6a7ef802a8109f58504b2accb9ef0ee38986f6c8980e0831c30b470f2ee768169557cdbde1a58d7c72996b27596e553185ded476cecdd7114b75d82428b7846e"; }
-    { locale = "dsb"; arch = "linux-i686"; sha512 = "55528fca4d276b2b0430949686845e3d7d88975129c9a9846408f758b4f9c8f154425db891e5c1930197e36137d6c15ba29de90dad624bad23090015849d0ab5"; }
-    { locale = "dsb"; arch = "linux-x86_64"; sha512 = "f21c14a57f6f973be824340fcd417ce03765d5826114462f62adbd933661bccbfbe90b66935083619c62d48401c511830574ccc373ca2110093b06fad59734ff"; }
-    { locale = "el"; arch = "linux-i686"; sha512 = "ac5a808db1ba68286a7199eef33794f7aeeafa26e97a20738fb21be479462bcaeb1e8a7995720d5c7dcaadd0cebe91bb2a3e019873d0cf74f42838f7d5c1a427"; }
-    { locale = "el"; arch = "linux-x86_64"; sha512 = "c02e6587d99fc3ca66debe854c778a8b3dbf9b514e6ed74fa15e3035a54643b2bc324ff59f1705c6bd392c37ad1996f80dbabbb57df10aff954ed0ff3f5b01d5"; }
-    { locale = "en-GB"; arch = "linux-i686"; sha512 = "c458c70db0408d627a904781adc9af18011f243689f4c5a606c8f1508b4e9417a8df499673c4ba56d32ea77d0f79ab85ff88852f7c518e7fd124e5970615b2f9"; }
-    { locale = "en-GB"; arch = "linux-x86_64"; sha512 = "28ccaebc4f7613d7ea8c3b47504923f2d59bdf4afd6e386a67dcb6b6923a9374c1c783e4f904da0b6e0f716ec87a046fc12f3781b732389d1d680745d6955c58"; }
-    { locale = "en-US"; arch = "linux-i686"; sha512 = "e1ea34bd0829656c04c471b66d2013fc07cbd5cf40b47bf3a932326cca71f9a502c52d1d5e6dd902d274d307079475b0e75d7ff552fcb2fadf31b2883efba79e"; }
-    { locale = "en-US"; arch = "linux-x86_64"; sha512 = "a56b2ad26df424f008d96968a4e6a10406694b33f42d962f19dff1a0bcdf261bca5dd0e5c6f3af32d892c3268da5ebee8ce182090f04f8480d37d232ccd23b9f"; }
-    { locale = "en-ZA"; arch = "linux-i686"; sha512 = "d5efc3d4e624f34c81df068f4d6c184cb8a63ad0667695e9ce7099e069b23715eb77cf2004adee41bf355452179959e5ef7450f167f87be70339abb4cf70844a"; }
-    { locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "859730132549691b61e936813f0f5fd3e62f3ef6fa9899e3f68bd3178b7438b4c6b49f54f00d4898b568d6abccdd55a0f9fc6c51858e95735fefcc13de460d73"; }
-    { locale = "eo"; arch = "linux-i686"; sha512 = "8ef290bf1eb3504ace393b32c2da64d14435edc327c4f13a40cd925efaf7e042a03b6877689b3f2290f85625410a4e48dfb2cf676f138fdba87ffc597b25f4b6"; }
-    { locale = "eo"; arch = "linux-x86_64"; sha512 = "7d6167749d2a57a9c12180302a825fee14555e9050b6be3c83dd35183678bc36e10391cedcc864ca0dd96d297997a68627dc4fc1a9cd8922e789dcfa814f18eb"; }
-    { locale = "es-AR"; arch = "linux-i686"; sha512 = "07768e3b3ed903f4327881a132f192a65842a376eeca6d10ec0de69fefb4ddf3d7fee2a704bbc8d229c78556478814d9e53940cca9edee58270d9790d6b76998"; }
-    { locale = "es-AR"; arch = "linux-x86_64"; sha512 = "cac021af09abd742273dc77291fb1528dd5d6d38cef3a5e36e615fbb9f3908655fdc96ceb93fd131c4879acf24e702a044471136e7575f3b550ebcecd982047e"; }
-    { locale = "es-CL"; arch = "linux-i686"; sha512 = "e92ce6bec5b1ee8cf3db0a604eb4cae6245fb6d04a48eec64b6dd55139f3606cbbcb65511e29a3164d6572929b7216afbaa7f034a2191eba100ecb7403740504"; }
-    { locale = "es-CL"; arch = "linux-x86_64"; sha512 = "98e57146481a53061c0b30872290ecabc2d14c73805a9461d82aaaf4cf9f301521fd55b01c8159c09a56f52a1580d83c9527986b1390f496d0fbd11227216e7f"; }
-    { locale = "es-ES"; arch = "linux-i686"; sha512 = "c44df66e140ea9190112f89aedff9519b6bee18f5e2b54aea19acd233e623c299aecf134cdba70d366fcaf6b7795d220052ff75409c7a04394a7aa02d9ea708e"; }
-    { locale = "es-ES"; arch = "linux-x86_64"; sha512 = "c2d70bc5a304df7b2484c8fb2b374f8e31a69049eb223a53dbd0e4b51e4ccce907efb1674eb637370ce7c3947ba5c09e65f433d10e0f328b80d482f3de9cae12"; }
-    { locale = "es-MX"; arch = "linux-i686"; sha512 = "96dcb75cffeb85b85f092e295e38ee55c272714c40609ca90cfaac5fa0cfdb3efe8e993319ee690b4a7938c42346bf39f063ab1f3db606e743c1e4720de5a93f"; }
-    { locale = "es-MX"; arch = "linux-x86_64"; sha512 = "60b50d6726b2e1985564bc02263eb88c9b4c1bb39e6d19812ecc6751d6ad223ba04f65a7755a946fb15dceab90628b057bda89c55fdd4972604586f52c5a4b1c"; }
-    { locale = "et"; arch = "linux-i686"; sha512 = "0a4bef2277f729c93db413b68f8263eb356f7b3278880574b8ebe010e2db9067b803967e1f0d6912f128a9ad5ef204466f52ae277f3addfb8fe9ac377c3b8a3a"; }
-    { locale = "et"; arch = "linux-x86_64"; sha512 = "ed1bd4fd67262958601f1107edc589bb28e9b7f9faf0edebdcaf0c07ec6007f527a9eab434582a65271a8f68edac8178601da54eab9398f48b31126657a21b0b"; }
-    { locale = "eu"; arch = "linux-i686"; sha512 = "8c5c9406345e2a1fca3544aeb742dc0d254c804d887e3614613280c050a63b69320d4488b017ee16b0a2a07bea862e8b245baf7edc9df65689d509986f3c5958"; }
-    { locale = "eu"; arch = "linux-x86_64"; sha512 = "d8f7004e24033f377391b577c549b66f73cf0e899ce5f580eaccd07713ec03b4362db7b222ce6345d113641d3e6a951302939bbb155c47ec0fa46a201a631427"; }
-    { locale = "fa"; arch = "linux-i686"; sha512 = "f4e02737e20b6ffd3bc2b3a5e5fa59fc80a8e37dc8459ad4a6b99e7621a4d3f360884915f7136dc201830efe371de37977ef3e27f34f84e2cb734c1fff8f6e36"; }
-    { locale = "fa"; arch = "linux-x86_64"; sha512 = "8f624b066faa39341b750dbb702dd60ee6ad75b3850c659dac2e21969ebed1f792423e9fb0a9cae7fc456943020f9a0155af5d7c596433eedaaa9990ce07b7d4"; }
-    { locale = "ff"; arch = "linux-i686"; sha512 = "22a2c5376b1e8d770659475085d98ac1f1020cd816ff3ec6ccfcd68f2484b1b0dc25bb84ca52f4ad27144f4da356ce5e7fd54411d12ae7c852064509470d5828"; }
-    { locale = "ff"; arch = "linux-x86_64"; sha512 = "bcb3dabc250045b8ad444219055fd9d14902296ef3f9c320bec1bef940f84eeb0d4a50249805188ae96ed0288a70f0216350ee79191beba49aeba890ae515b41"; }
-    { locale = "fi"; arch = "linux-i686"; sha512 = "0c505a0e1d3030038b61ea159eece3892bcc7d947b6d7010c0be8791525c9d91ad1170d4cb45260584c93a78a4bc831b7acd9f28e95ae62e5b96b31745dcbe50"; }
-    { locale = "fi"; arch = "linux-x86_64"; sha512 = "f347cde005c6b61366c633db5a8cbc5260dfa0d68230a938d847e3f80bff2f1bed09dddded7b1728f4ef9525610ecd046743f9e71eefb467943fe6b72ed198ca"; }
-    { locale = "fr"; arch = "linux-i686"; sha512 = "8fb8ea2eab82740657a6b822b330fa0c289c31ad900683b4ad07b1e9b0c6c4e14f50af39d6d0f787642010628800b0a99b5ab0c4cad62e4a579390509b1ddd13"; }
-    { locale = "fr"; arch = "linux-x86_64"; sha512 = "ae79c5b7f9f8305c3631f4f913baa341a9beaa7a2ee5df1c6c1826030c21bf22b92095ee579affb8911110bf3bcc359793c0beca18d4c32b1fcc1f3d1dbcc4b9"; }
-    { locale = "fy-NL"; arch = "linux-i686"; sha512 = "1c57d02fdc33ff53de48ed9aa9e89ecd5a56d35b432d5651e71bbfbd5f9dfd18aeaf14d10b881f72df871afd00a12b31ff05cf9d5c5a55cd44a92c7a0156523d"; }
-    { locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "f30f59d630c5d289b61dc7440f7bbb976eb16732370f827365a477090cdf9f2859f39afb7ff9d9be7e8a022f181f2aeb7a3005c00f4c14e6505a28db7ae48a9a"; }
-    { locale = "ga-IE"; arch = "linux-i686"; sha512 = "739d5feec4bffee67876227f6783d35675f4c0d168b7abbe5f97b6e8edce7fe4b8f04f8240087f7f208db4180f3417997b661c93ebe046decff3f4f4fecac839"; }
-    { locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "cb4344df6e07db839ce8c9fffd1b7b310c8108b5218cea3602972806c1a40f56bf1355ede4cb3595f54179b16e3470e25bfbddc8e39d726c7d6c1e99d128ca8b"; }
-    { locale = "gd"; arch = "linux-i686"; sha512 = "91004d62bb5f1f6a1d65b35fee9e594d21d9877669e042cb4c9a834b01b35797363e1433a9ce5a8d0a9f64c8b256da6a6d09fa3342b74b7c2af8ce8afb3e4e56"; }
-    { locale = "gd"; arch = "linux-x86_64"; sha512 = "f04034cafed25c34713ffe4109e53b107b8fe81321c0c0c035f54ff0ce67ac393b42db7598edc658d3f026e447f9ff1c4d1cfdedd31066eefb6019117248e4c0"; }
-    { locale = "gl"; arch = "linux-i686"; sha512 = "107bdebb92ce86f39cdc45d6bb24a9c4d104820eca6bb77950693ccbd55e7f8a2f143fc3a5bbb1bfda161e7a33c8f6d8d2686b09da1497215defbca2b4e4e109"; }
-    { locale = "gl"; arch = "linux-x86_64"; sha512 = "c841af5c73343475150b5404b4b54396bda845aa5b231a742aa17ecb7fdbbc5cd4123efc3ac2ede1c24f485d04bd87e8bf7cb00b7135bef236ce56afa0c27a19"; }
-    { locale = "gn"; arch = "linux-i686"; sha512 = "20954e218967772488bd895ebf069522c3f4c56ebfa09a7c8efb740158cb95b6be76cee8f4d7f2c1c6c505ca9071a0ddc1914784a54f669d337d5196f18b6f4a"; }
-    { locale = "gn"; arch = "linux-x86_64"; sha512 = "aaed68f13e326792671669883b452b65556998ed757ed5b745c6453d6bae8865a06f137709de37ace2688e2e09f1b96ecf2e5b6374b4170d29100c6f83ce22ce"; }
-    { locale = "gu-IN"; arch = "linux-i686"; sha512 = "205093ecc0dfcddb2b90e05b1a17f75805a4597bbfad214d67442fd0d952f765b031ba63a3c399ba9c1c46e4d05b3cf786f01c46eb8990240a16431964c93a94"; }
-    { locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "a84ec5015f6922a22a284eaca985010586067370d818e77d401b58782f86dcf2f534f1ef021719c170f1f502525ce25c94760d3b75481c15fade3c25b969b563"; }
-    { locale = "he"; arch = "linux-i686"; sha512 = "5727fc4699316c4b34be1c2596c5cc20d5fc9d2062b1e106087cdb34b788fe3ebbc098acc8c690bc83c9d9be59ac3b3977fd9116d766ce908aa088660fe34771"; }
-    { locale = "he"; arch = "linux-x86_64"; sha512 = "c399969bc24b10ca1c1eff17d3414f214cfe3e5b73282942ead5b2ba4d2c58b74d665b13031ccf42956cd45f0fc7b206dd2f9674103c1e3a8861a33577b5caa7"; }
-    { locale = "hi-IN"; arch = "linux-i686"; sha512 = "f014c47a143d425aa3452be2bbed199a8b5e75d278c35fa86bb6bcac40bfb32bdee22d030386c881c818b465451b35c81f97bf29f9ccfbea606d52c822057899"; }
-    { locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "0e5dc0970680886dc02448d7118b6864092699fe44f3276ca17cba160aee59418f8e39338247897b118de0e1fb7634cf725ddc6a34a8b6f002b7a78d92deffb0"; }
-    { locale = "hr"; arch = "linux-i686"; sha512 = "a9af43f6cf6f493f728b8942d3a600f3cb3a23eb0818d284ddabb8766f7d274aa0a232f9925b65625bb56d00864946dc6b0567491cbecdd6a7cf626b6964d9b1"; }
-    { locale = "hr"; arch = "linux-x86_64"; sha512 = "d97951148ca0ba80a67020f323859ea3f508e40906ecfd18f7a8fbe7a2bc85ea4635945b5c6063e1d5d18456471604075e6767da9a4fda6a09dd3e992a7d3a88"; }
-    { locale = "hsb"; arch = "linux-i686"; sha512 = "2f7adccdc894f345e861b29a6d65909b1cde2649c69ec9223f784e659e8e3f4668f815b3683fe691de0749483167d26885a0199bee88e8524377c7eee3afbe99"; }
-    { locale = "hsb"; arch = "linux-x86_64"; sha512 = "70e39341ede01e18c653a0eb56b48e31c73ee3df54ebc11bcd220e2d8e19c67c3e248095c4d070b12a0eac5c24acf5a8ad83069673dcaa684229f4706103685e"; }
-    { locale = "hu"; arch = "linux-i686"; sha512 = "1fc01c6dd873e2194e6196b1bdb0246e95d0b0520f558b21a2052251d2a5202141c09410c4631b3f025479169d8f68411c2a24f32825261fa8d65696fc7cbe0f"; }
-    { locale = "hu"; arch = "linux-x86_64"; sha512 = "b4509d671d7eac055812add85ae571f52c90b4eeb172d21c22ce844c70192ba235f37a732e94a0edd6794ecd5a8caa5e8bb6ce05a26d3705902d3628420af871"; }
-    { locale = "hy-AM"; arch = "linux-i686"; sha512 = "a2b7cd1ec95a0b5eb064e816cfcfc6a74a92806772592947267c4b266bf7ce77d1beb17a7c25b905251cf497ca8dfabf16bca367cf6d9e9e635182f306bd71ca"; }
-    { locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "9997ca45051e609e289d7730caf1254adacefbf8e618a165750d5bb7ff7933d014781af76501296c89a4236fd3ac477df6e6be5a5dd45f214983c851a856ce5a"; }
-    { locale = "id"; arch = "linux-i686"; sha512 = "bda5a7c599885bef966daa35a3f34297e38534e32967142ff9cc720a34c7aa9730e3f24623c240637838eca03f78f9b2ee30af3ac3dc8ba48f9664c56b64c789"; }
-    { locale = "id"; arch = "linux-x86_64"; sha512 = "97d16c5b4382c7fc6ccee416d671e47d345834a44ab111aa486a41c756b25eb894628d0128e8454fc15f38937bc40436b12e60752ce7b7c1fe35a230abaca337"; }
-    { locale = "is"; arch = "linux-i686"; sha512 = "576b904fb836ea735f652c6b9c91891dee164edd3523c5f99d68cccb4bd6689c29e4c579b6cc44e699a8900101fb8d223f9e0b0860f71a2814ae0ee2c70609e5"; }
-    { locale = "is"; arch = "linux-x86_64"; sha512 = "592d65977c34c6133f5745a85722f822efa5956bafc6e880954a0b318fa59712c754e882768755fc08f5e08a1c99493c0b30b4219c46169ba663258e3fd3f3fc"; }
-    { locale = "it"; arch = "linux-i686"; sha512 = "4d749e1b5d8432df789f29a247ab48a688d4aa16fb25dcf7209783c6036bfccb9ff8ac32dcd09dab1708f71896fa034576d6048eef077d1a6c0a3dc58d3cdb26"; }
-    { locale = "it"; arch = "linux-x86_64"; sha512 = "087c456d691225d9aef54b2013af69cc7bf2501f83060179112e9c40c1d6762202f68e6329a936df091a1ae6aa5f20bcc96a4c8b0451b71270426bddfb45d15c"; }
-    { locale = "ja"; arch = "linux-i686"; sha512 = "cb4b0bbff7d322f2f04fdaa50b365d4e0a1ff1786206539cd124870ebd69a9305b88d39b9fbed41c64ddbe68098e02c51a0dc665262424f8eff882b1497ea1fd"; }
-    { locale = "ja"; arch = "linux-x86_64"; sha512 = "b6c9b419a3e746957f93a4bdba9043adc3911b6f76e1eea2e4e31e77e9aa9057ce720205db4af5586a90df4d6b774b90829f1d7689e77c560c50ccae755400b9"; }
-    { locale = "kk"; arch = "linux-i686"; sha512 = "ae7711d86ce8180997f44f9309a63a436bd8b70ed0dccda773c34ba816daae99b3b1ae913ee87f4d1f9a4e8f016aea670e89652823df16b5e8414bb58ac28225"; }
-    { locale = "kk"; arch = "linux-x86_64"; sha512 = "49fb6b5ab6aa12535373927519bf36099da6fab7c2e1bcd6f5ce73d91679f58e81eddd3556df65b305fc2d1cd439cf6de081980fa98ff79df16b620ed41290fd"; }
-    { locale = "km"; arch = "linux-i686"; sha512 = "29dd1808c1430c01dbb395d5e5a833bfbde85453278d4efd32f1afa1eac19a651c0c3a42eb4ba3402f56a8492e80746d753986c0ec0f1a6dc0e5eb6778b5c6ae"; }
-    { locale = "km"; arch = "linux-x86_64"; sha512 = "f53966aed30b57a601152f09a26414e11bff4ff31683989eb1e47546eaa32fce8cbb6511043f9753cae076d23d6f2172c2b224313cf5f3262f109b49119175e5"; }
-    { locale = "kn"; arch = "linux-i686"; sha512 = "17dc37df2b3d5a87bbadc4d5c80d4ddff03752b7a80f5c76171ce9f0bc4b8926964b6315cd4f0c6c9dd3142cec56b464503bde34ec3c69e2b8a66ddcae72b0ec"; }
-    { locale = "kn"; arch = "linux-x86_64"; sha512 = "2af5ac5c254bd0ed2d08656a6fee7966d73aa89973cfad67fd18d7d88fd1f18a2b882de7854af46a3ebc6acba4cceacc06942db7ae495faa2c6ef21c65e94158"; }
-    { locale = "ko"; arch = "linux-i686"; sha512 = "415fc260f3dcc2ede6c43194501d9522fdfb106f7c86e5d8f5929df6615c73023fffc3efd190deb68bf08bb2a0d4ab34f7605e222301c8350b980f2dbc289c8a"; }
-    { locale = "ko"; arch = "linux-x86_64"; sha512 = "c991c0b9a89b618ac046882b929fd7e3689e19dd96edf4535b25f9172b6baaa801a4490ae4fd35e82ca3c776afab74a0a09b993f8ae8c2a603d210f2cf248f73"; }
-    { locale = "lij"; arch = "linux-i686"; sha512 = "3cd367654397d14b782cea4ef8c96f1f6938f011576a8dba92dd4ca832ca3c8682f3e0e161a4288b112fca550d556080d0ece5a79e4c4f6ec99a9298feb6fa12"; }
-    { locale = "lij"; arch = "linux-x86_64"; sha512 = "2d7475c544df807a956feb9361f889ba0f5e43dc52a9e1dc9c469d86e97f344b4f2995e3fa149a77662969f3acbcc998f430973b2b9d28b23c82c5058b4a9dfc"; }
-    { locale = "lt"; arch = "linux-i686"; sha512 = "35c8a452ca845576739d5faa9dab6f3c34dcecf9ce95870f68699836f3534b4807c91fbe80007950abbbca662e6d01b406205b3e4cdf4d33e0717ea5d6f57006"; }
-    { locale = "lt"; arch = "linux-x86_64"; sha512 = "8791df09d841d5ddabd552d0fb0dc7e9446d23092bae1010d92bc3b056a9ad4a6dad01c5d8db531a273945eaaf4c30c922cd03d7b17e1b6be263e0bcb91b8384"; }
-    { locale = "lv"; arch = "linux-i686"; sha512 = "22b865a344a46096c53a72ff6b1402d00808bb3b49ecabe6f4115ea60e40e522d64afc701648772616fcb784a963bc6d5bb3f89517d7f8407f22fa82d81bad98"; }
-    { locale = "lv"; arch = "linux-x86_64"; sha512 = "3c66af306b1a8d0a684c12511d95353c0bdda0bea981ce4e577c928be03e12b582b19dcaccdccec551b3cb0fb716323b1079180aa7a8f1204f5e4b5a84b72831"; }
-    { locale = "mai"; arch = "linux-i686"; sha512 = "780fe423a3cd56a7452df32679ee07a0e328b21cadc78faa2721cec59185c4a4467aeeb75e9237cc86d38dfa2cd71530f02156c4fb9515582ca564dd53d47543"; }
-    { locale = "mai"; arch = "linux-x86_64"; sha512 = "d27218b59edf004dc57cfa9ffd70dbeb59b7d3c0871b00388a56b505629fd82ddd6f6e0147f5b4c67a8ad72a674e384b66ba2f9455fa9ff218c9ada4b27d1d7d"; }
-    { locale = "mk"; arch = "linux-i686"; sha512 = "da7ae3718f3c69ec9b62aaaea93951375d82d8d02818d6855fa9f085a64b69c155a1336585d786ae2d33d657110b787f62909dc9e4d54c62d2ea94d2fa8fee3e"; }
-    { locale = "mk"; arch = "linux-x86_64"; sha512 = "95136f8bf86014a63bcbf4a5cfbd778c4c7e6a84618aa0f6a6948bb597638569b3702e0569b50c5dc9b46339e723377faea8964b921ae9802043fb7983a2c4e4"; }
-    { locale = "ml"; arch = "linux-i686"; sha512 = "56743acb54283715fb2a910caa85dda61f7e2c1c5e012aa222dc07e3b522572500056fddf990b7ef03a175ff8901fb11b113bcad5c2adf4a6e6e032644ccca2f"; }
-    { locale = "ml"; arch = "linux-x86_64"; sha512 = "134f35f5f6616c2a7eec48f637277fc02e23b57bf38eccff9777bb08c70a41fe79967b69567f75f9c8bcbad4b22d2ddaf16bec98e399c4b8ca9db9b70e99ef58"; }
-    { locale = "mr"; arch = "linux-i686"; sha512 = "f29de7ae7dba03465baf86f93d778c9faf3055d50295977c0207c7e4daae6f7ad733ed38e1323263cebe4f737d9a1616024333a97139156470de1a9fe3c16276"; }
-    { locale = "mr"; arch = "linux-x86_64"; sha512 = "731b4f143fd1303ab54ea3f1b6aca6c4f78ce935caae32fed0b8cdcd46c0ade8c8977131a3be786ea929a7d284c3d45d34851a0d81242761f722f0bceb126957"; }
-    { locale = "ms"; arch = "linux-i686"; sha512 = "d372bac105f2012b189efedc449c7c183d0daf64cd7a40822ef9d685ce4a1550ca9699620440dd198b13f95513a577766e9f1a8e88b212492831bf7ffcac7e0a"; }
-    { locale = "ms"; arch = "linux-x86_64"; sha512 = "1287f36a742fa834d5f31e6bc2f6d3651e54f2bc8845a1f0f647e9a9e38ba66c58138961185897c8832107cffff06167a35dc3ee1f0ff830f997f65fb0854a63"; }
-    { locale = "nb-NO"; arch = "linux-i686"; sha512 = "ac3e46080e188e56a6b67ff77aeffdba7982d7c3aa4156a6f2781ef6b8fe63cac50d678e5afc91aca4ad16c4384d2b2727f74ddc4083da91a1e3590ac98ec9d2"; }
-    { locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "dca52381e45b5c2d89f590971d830010a9ec1a2a513fe655ee93c3fbd980adcea78787701595a95402bdb660c2f3e0a489e001deba13798337493655798c713a"; }
-    { locale = "nl"; arch = "linux-i686"; sha512 = "6ec01f8eb18384aadb5715a996c8410ffa94b801ee1f1b1ab43bdeb492e179e781e8b85acbeff4a25cb4fef847ce3e2335968458d9f6e47d046083264e91f6f7"; }
-    { locale = "nl"; arch = "linux-x86_64"; sha512 = "7d5840518312dd167d914a8f7fa5670fe17f9a6fc39ccd128e30f689005b35bd352d0602993713c3d05288f2b036829be8e08398d536e4aebf2341ae2290e633"; }
-    { locale = "nn-NO"; arch = "linux-i686"; sha512 = "a185f7592649a91214363cf2a0474b5895f33342c98cd4bdc48fafb0cc76310b2ba4f46575970d723c76b2ecfeba8e2b39d9671e6059a15bcb2565258096156c"; }
-    { locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "7f8e7277bcbfbe5f40c161f1ebbeed86159c2b6205a5ea55cd8b6253fa6742bcfede11d4de6c1aba36e2b1e98f9c9a7b8e26f9aa35e1eaadc1d011636d429be3"; }
-    { locale = "or"; arch = "linux-i686"; sha512 = "a543a7d3f4e24364be7e4df65a81da82d955d1268a4cbce741ad7ddd5f4e9916573e271f02af1e92b123a4da2c7f312c17f6ce714e3057a1b204484ef12133d8"; }
-    { locale = "or"; arch = "linux-x86_64"; sha512 = "7672596470cd8f49f9c4558b05bd637af1650da729bc518681a8cde3ec785358121fa7ef209e123fca4b59df1a63878832bc32d2ff404b5d2a818b60ba10c15e"; }
-    { locale = "pa-IN"; arch = "linux-i686"; sha512 = "a99b60ae1eb479e31f838fd41d5de325c418762fdcfa5e0f3bc3d5da8df108d3b64ce5bfac0af09663007becf5327164db8dea0ea7a3876586cc43030a780199"; }
-    { locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "f0110b74842f924808f74979061151fec711d10a6005d2da2fbb8d46fa2a25ecd5a2c804e58c10a918efe570d4d67d05578b0245f526e1aede4bbc786e9f304e"; }
-    { locale = "pl"; arch = "linux-i686"; sha512 = "7eaa2bad351429d76b476819a1529ed1609388968327382cc13df235a294f2e9fb14295341ff15fe3b2815ffd1c6c8978e2aa104a847fd2cb4adcf2ae3b0b974"; }
-    { locale = "pl"; arch = "linux-x86_64"; sha512 = "a40e2c15cff0e7f7bff8a5c0bc4cf39df948a21bd37b34ffc93dd87e1f5256526a25526e457fcfd8d081bc872dc1bec13e67da3cf671b6a16dfa17850be4743c"; }
-    { locale = "pt-BR"; arch = "linux-i686"; sha512 = "c9cd96e68fa2e1f73a49e71c287a25be8d45a8ebb56262e02c40ba5869fc58c7fc43a1f6958592bb377e7dd4064d64f5ebcbcb5cd3a9fe0a007c2da665f50a66"; }
-    { locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "1184751c1d1a0a9044f8df2d20aee7dfe332dc5f851802ebaf2c5c83fa2bcccfd913cb6e16d2baa449cff1b02aa18f828489914c0741a2ef2a46d54fefecc268"; }
-    { locale = "pt-PT"; arch = "linux-i686"; sha512 = "86538057ae91b1297acc11c9bf3f7d24ba1950edead89d4733f7c898cf53e3848054bf391a975f19766b69f4c56f576ca54e4b8da806db7416f3e3d91777c3c3"; }
-    { locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "0a480c26e5dfe2bb9b536e122ae32e18a6dac999004493839cb506c1ad615e095c554d296f1a77bfccbbb86b58bcf549db83f7de51d02b68d1eb752b421f23cc"; }
-    { locale = "rm"; arch = "linux-i686"; sha512 = "751ffe931cd60296490c7164f49f61f4a51bac5210328a18d02261a07eb607e181b2bab4fa0b59d2df15334152386bf816a984840d2331b7e801171be9c90594"; }
-    { locale = "rm"; arch = "linux-x86_64"; sha512 = "3e526c9a1a876e5d2c548c9a68803dd11c04c8214e18eb09c0b1c3fb3833f64c8a3362db8083ac5de81c59268439b53effa3bf1c64807fafc874eb8ed9baf188"; }
-    { locale = "ro"; arch = "linux-i686"; sha512 = "73cf6a18deafb7ba93fd60cba3ba0bb0191471f977c41bac11bf2fd6cc6f7fd7cf2ad125ac5cf168ef577d71dfb0e893e182f39be6ad186ddc642d87c40041a5"; }
-    { locale = "ro"; arch = "linux-x86_64"; sha512 = "b62c54b8694b4a662c1d336056d404a8d432ba0a3d4f2964b5c5acc0e39b668fd228105e1c4e307bfab1acfa5c3ce223db4229df01866cdbbc7c1ac95e70fe2c"; }
-    { locale = "ru"; arch = "linux-i686"; sha512 = "6ebd3b3a1f3613905313129cde7cf113bdd777fd0f600496231ba813a95b04309b25016dd69891d31189a93ccad3f87b9c69d54d6219ad39dd38d1181b1f3102"; }
-    { locale = "ru"; arch = "linux-x86_64"; sha512 = "539a22d13587cdcc21b6f76ff24ccfd1df98cbaaacac802aed46ba8f2bfed27cb2f3e5c146cbd2c3559aaff22297e692030b9612041a05a6bfca08f49bf0d2fb"; }
-    { locale = "si"; arch = "linux-i686"; sha512 = "bb0d1621f5b9af886fca0ea7cf7fd851d7c22d2d8f279a7b88e9bce98be33ad7b75d6a51ab47ea859802ed39b467815db60409285afaa0bbf4bb1ce6d590eabc"; }
-    { locale = "si"; arch = "linux-x86_64"; sha512 = "90337d193df7db41a1384856938bb62212952a80144dcc319a725a9b567ffd4deb7bb7af89b57891d3c17499ff466990e656edf7d0b017b8f4e0370aab445477"; }
-    { locale = "sk"; arch = "linux-i686"; sha512 = "23a15e6ad5ce9b03c218be4e26e603a412de4d870d5f64b599ae511bfc66bf2cf04613cc06fc1a054d06b80435e284456c0b08e33f34d8c9482f5ca23da6ae62"; }
-    { locale = "sk"; arch = "linux-x86_64"; sha512 = "a86cbed60f65e4ebb36c614d846fbb2515945112fd4f2482c3a63b49a62c3acb310f050dcbd57cc76a808c049eefd8f779d6aeea53362dd81798bb8d7177c86a"; }
-    { locale = "sl"; arch = "linux-i686"; sha512 = "8ae008f0077081ef40de3bf08c2de294231f41439a83d8a41a485f53e95ba3f4fc6ef03d6ac98e8848c3f3dad290978f1607d8c847f1622bd86b7d38cd0be730"; }
-    { locale = "sl"; arch = "linux-x86_64"; sha512 = "34efb560c65329c7f3f6b341cc49ac4952f24e6e9b34e7f5bd45d98618a4d03ac89c6f62580223efd2d37db24a03f76a54381d4162f5430b887122bb56eb49d9"; }
-    { locale = "son"; arch = "linux-i686"; sha512 = "d3e5a25fbc4a786239a7ae543fefb7b7e3ecc34192c8326af915f18b9b08436656bf68faa4953a34bdc464e32305baecce800f91ef0152bb4b4a8323ab448f33"; }
-    { locale = "son"; arch = "linux-x86_64"; sha512 = "ffee5d1a23e91911fd1dedb5ecf24bfc6b1733fb582e64a5e07d4df4b7afd9a6c502a70ab3af6624b4594f5ddcd81bc8962ede5b693cc035a96a561389f6bfca"; }
-    { locale = "sq"; arch = "linux-i686"; sha512 = "1cbaf8c32d1d3205cd85127839eed11b416903960c9e411b9adc71c42ba4add47acddd32a9217bb68f27b90d6765892edf2d356e21235c5bfd5cf69d1ee719f9"; }
-    { locale = "sq"; arch = "linux-x86_64"; sha512 = "16d93961a53ecc3e1ae3480be9e34f2a22dec2bdab55dbd35d1ea79ecf2ee48f195380bd52efc7d39529601610793b75daadeeb54dd76c9a3702c786af25acdd"; }
-    { locale = "sr"; arch = "linux-i686"; sha512 = "0b2c5234f1787cd972fad398dc270766fbc3015dc1bba29755e5316f207af9f5787d4aa41e96cffd2c9d31c57a5d1896e63fcd04e6235a4a6798469e738fa10d"; }
-    { locale = "sr"; arch = "linux-x86_64"; sha512 = "e7c7e7ff7fd81ca86f45997faed7244e4d807c3e5ad7ed66d6feb38c3e9173eaf136bd34af690ce28534f0c531c7f1d11595ec6502dfa42778cc19dee4334c49"; }
-    { locale = "sv-SE"; arch = "linux-i686"; sha512 = "dffb94b0ddb4b9d2effba3894b408c9f191f2079dc4b47e214347a235c9bf1adf77e520465691d14a274c3f3344c7f8b7d41965051d506728347e0af1117ad27"; }
-    { locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "b601906d28f071c6beb3dbd6b37fa68f50809c9c47c9db69d631127ccc7b784e7d3b278aea6de060b34d83b6c78137da32b77f8e17ed199c3213b89dd9391264"; }
-    { locale = "ta"; arch = "linux-i686"; sha512 = "1a496470ef8e0899bfce66b41490f54d4d32776eaf60aca8725c4732512f1d3befb2e1fc3b942ebea95fe2359509c43d41649e5f90498264b8e02a3352244260"; }
-    { locale = "ta"; arch = "linux-x86_64"; sha512 = "00e6dbc43ad3c77693903fe534722094826637698df691b266eb801b27cd5e63502c21ca3e34ff939a7645a1f75d36fce6154626019eb96bc73cc39ab845c952"; }
-    { locale = "te"; arch = "linux-i686"; sha512 = "70ed539571cadf241f819b68ff24829db32f56287aadab31656fdf66c0ed94ccc6cc11b6cef6e2e963203cda47af2c6032db6e5689c37aaaf495b1e4fa970207"; }
-    { locale = "te"; arch = "linux-x86_64"; sha512 = "d491acd4635ab9b22f76531740c7ee7a85832678aef9ed646e75f56755c02538440adeea71e9ca5a7a5e11f3f2f6941c3c4c1e47380547179f63baaf6c20ad07"; }
-    { locale = "th"; arch = "linux-i686"; sha512 = "0414f74c6266fc204f2741b6860f7919c957364bd56ccc2cec5ef4b9c4be812c554ab584e6ce53387e6b7a18ad02991a44d9507a16da59a4aabfd44e7fb5b754"; }
-    { locale = "th"; arch = "linux-x86_64"; sha512 = "2952cceaecdd4013882150e8158607639e4ab2cffdef563d4fd1a015c41f1eff6c5ac22c0b9301a05ab6f9fef9659d54916275d5a50d97ad43bf69f10da7b3c8"; }
-    { locale = "tr"; arch = "linux-i686"; sha512 = "c5c6273bae2b9a46108a433af3a85b5cbbba4cd3154ee124ccc49f46c4a76264836a76d1b2da4b1064e9a913cc9fe461911c53e44f40343c5f780be04da932e5"; }
-    { locale = "tr"; arch = "linux-x86_64"; sha512 = "f0b5bef1ea4b948d699a79d902055d5b31afbe5c4f1814d98cadef1ca820ce39212ec009f68d875860a48942e9d797bda88eec4f6ed591dd8b3b260e04170974"; }
-    { locale = "uk"; arch = "linux-i686"; sha512 = "3a069ba914716ce122c4a89612988708d811b9350d333aab203dde212527c0e0cc86ec4781e6aa23f40b77f2266f76eca366cf355651870f43e180b97aa25c43"; }
-    { locale = "uk"; arch = "linux-x86_64"; sha512 = "db7931aa3f1d150e4b5b8c87b9d069df4a515fb2aa5e250b8f8a1bae0d8fd9a210ae949df056c47e3c88e8faf28f2571311ce2d6f179e3365720b42f1335b546"; }
-    { locale = "uz"; arch = "linux-i686"; sha512 = "110a82749e187f39d77f63b16ad515218e5512e5974916e4145e625a40d797e23fdbb5d110a23f061448cfc3d3c597858636c9304e941a34c68368f749c3c900"; }
-    { locale = "uz"; arch = "linux-x86_64"; sha512 = "1dbf94cef034449e8d1342822384bf1761dc61748e2d876aec1ac628dd161f92b62da832fe397b2fe4f8a1b82f9adf1c3690f26e07ee3e48c6299f95969533cf"; }
-    { locale = "vi"; arch = "linux-i686"; sha512 = "af97e1dcfc9bfbdce95a5cd35025b2540ad928d3238863471116e071a51b354b7818577bc3e7427c513e7b335bc1510605ba3ad1a37221389de7c7fedf6e2103"; }
-    { locale = "vi"; arch = "linux-x86_64"; sha512 = "cc938935395e66ef721fdbb8c8b781ef648b5419393ed1687a116a4d9ae12dd18f2edbc8287235504aa6782bbd6a41f9f5dd89c9c712ed4980fb9fa44f46ef38"; }
-    { locale = "xh"; arch = "linux-i686"; sha512 = "a76dbac054cdb7f5c194766dc54f215de4cb4cca4aacd7c883e0e3632b9dfc18cc25d7a54788e213bc65c894dd26ca9b863199b55b649133f93da9fed9a58fe4"; }
-    { locale = "xh"; arch = "linux-x86_64"; sha512 = "cfd8bbb81637c19464ec34788254740e999c13bc8a64b4289b0e1c64f76d711a5a5a8380995271f309444032739066f06334da2f81b6ca2b2be33ff55d3ff402"; }
-    { locale = "zh-CN"; arch = "linux-i686"; sha512 = "d11637b0c28aa1c45b315322ff12392e133aebe21f435564da278b9e301f0c8515ccb721df2bd55c175c48c3e24934837abbba4b84c9fa659b7a58db1da68f04"; }
-    { locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "27a06d87f23eaeec170d1ea7f3df636198bfd4787001e178948fe9b8a3f1aafff3be59b9d01ed5b5851902b550601f061e923a4cda3a972f0ac68928cab28577"; }
-    { locale = "zh-TW"; arch = "linux-i686"; sha512 = "7c6ef5592b273749ccbf7b37c09984b11722beb7f49d4ed25555b84f0521e0dbac5197c7642ac508a21a1a40c5578dcfb49310858819875cc9407c85426d599a"; }
-    { locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "9ccce84a292144f3758190ff2858c077d1e7ec6d49ff5e1efb404b8dfb3bcfebf96eab15d0ec32325e4d96d94f4c6bcc67f4e43dd22af418b822d82a2afaf6f1"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ach/firefox-47.0.1.tar.bz2"; locale = "ach"; arch = "linux-i686"; sha512 = "a5391e45d1e59a7c14d8d421286033e3e760bf2b4afddfec3d1767b2ebc957b053c39f17f8185a6c9ca2542c76f6c9612d95d474c01bd5ecc62e5d4f4e43e8df"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ach/firefox-47.0.1.tar.bz2"; locale = "ach"; arch = "linux-x86_64"; sha512 = "48681328033b694adfc6149bd965a3dff90ef014db6f65641ddd3d79ba7901604623735555bad024dc2425f226c65e332a0875d6b18fe1c06b18a1e407b70294"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/af/firefox-47.0.1.tar.bz2"; locale = "af"; arch = "linux-i686"; sha512 = "7757ba99ce9991f67a45d9a19615a93c0a1bf0e35d35c5fe653f04d47c068054c8d91327641a48cd20fb9531cd1e842066c0e6f2dd8b23bff216a9fc727ec84d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/af/firefox-47.0.1.tar.bz2"; locale = "af"; arch = "linux-x86_64"; sha512 = "7e3d70da29aeb5fc81f5e6dc52a4b8f831813f8c025b1a105df631cc5b675905c82dae842459ad30c5257b74bd5654e9aec5dcfcdee93eb42443c45cda81138e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/an/firefox-47.0.1.tar.bz2"; locale = "an"; arch = "linux-i686"; sha512 = "1051e1e3a6c25ba6b3aa4ce5adfdc60bcb3c612f3facd5edb702385ea8c0837cc53e95b064a424e0c055a56a11f3a54a7ba37e2ef35045c8cbb834aaec0f6327"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/an/firefox-47.0.1.tar.bz2"; locale = "an"; arch = "linux-x86_64"; sha512 = "27fb75ce402c0d47f8542d3d6d6992587e6ea0caaba2249e763f0f9c4f1d233b37a4b87ebb7e730d16704c7d2abab690660e409e721850875fc09deb0c433252"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ar/firefox-47.0.1.tar.bz2"; locale = "ar"; arch = "linux-i686"; sha512 = "296e23fff265bcc08ec0f81608d50428181163d216fd896c80a1a8c31e95f243112aeedf3bbd96b1efbaa1d6d576a9bfc75e5fe8df434cbb74bb9576f7d90a83"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ar/firefox-47.0.1.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; sha512 = "15f0e7cbf5a98ffa9d2d7befcb11938b76194dff29b1d93ddcbb8f5c655ef33659534874a72aea18f98af06e5fa4392aee5412582ef43292d70603dff2c42c60"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/as/firefox-47.0.1.tar.bz2"; locale = "as"; arch = "linux-i686"; sha512 = "67883c8cb7ffb6c05288b316b2aa5bc3274372dd82ab4c771fcf1e5a968e550d12c89027440704d8479a906beeef24a18ca72ad243628a5ece45918ed990c793"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/as/firefox-47.0.1.tar.bz2"; locale = "as"; arch = "linux-x86_64"; sha512 = "f7718b0dc9bcbfd109591f87263d7791dcd7612b0312d0bf93e68b1f2014d3732dc6740c57a8e64dfc1af7946da14dde617945e38842eb19cfe39376cb12ad44"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ast/firefox-47.0.1.tar.bz2"; locale = "ast"; arch = "linux-i686"; sha512 = "f29b883932752bfa947c48f7c1ff6084b1cf215ea84cf63beaea808702b0b90f50e85aa4cefa4d2c1234b0d366c8f6e3d8fdf7a0f92d432cba790adab6d24174"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ast/firefox-47.0.1.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; sha512 = "8b656c6b08640c125b94f90e1dc8259c90af2e764cee73b02b9dc3c0246b3195906d9208bc2a6b3ca31091d8cdfca8338fa6c489b7caa5685a23133e98847a39"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/az/firefox-47.0.1.tar.bz2"; locale = "az"; arch = "linux-i686"; sha512 = "5ee1247e37964274bbea8021c8e4e5116fedca95712fbd91d709c5c580bd1618c6319cae73278b2f0ba82031e94bd3fb382d2b4dcfc9a5d7ad47ecd80f4fca43"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/az/firefox-47.0.1.tar.bz2"; locale = "az"; arch = "linux-x86_64"; sha512 = "c369046c29dd0dfcf40e69e1f5b5a63423833a376d2b143d3fbf2ee1e23dedb3baf24843ba1178bda94b86f357724898a147d4adfac1e469cbf44166d7ffd16c"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/be/firefox-47.0.1.tar.bz2"; locale = "be"; arch = "linux-i686"; sha512 = "f8a1ab05b8d25a7a30e755a551f0851a308ba0720180685f6946a510363988717f8274ac2c8ef826c60232a62c394b86829d289e7d74e24b7656b55238129b15"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/be/firefox-47.0.1.tar.bz2"; locale = "be"; arch = "linux-x86_64"; sha512 = "df05271371de5fa25ec11164eaac0b253bc892749d421a6ca730dfeceb4ef89492c42ce83a87eccbe91cb03ab001bf0a1d9a20a7296b69841cab8c6b5d2acc36"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bg/firefox-47.0.1.tar.bz2"; locale = "bg"; arch = "linux-i686"; sha512 = "80644b86f9296b708e74843a51f81d368e3508f0f2f74de1a998d30a15f6e3af08ffd70dcc5c79adb76c03be9ff4713fc8403b8433cbc33ca3493941c4fb2fe0"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bg/firefox-47.0.1.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; sha512 = "0e6cdc5b3cc706031c95a550b0c800c9e8e2d7bf241010c22f0872eca4bab018a5f0d4a94abb4f8291c279476700f2101a69ac0c57ae79994fba38b88b00fddb"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bn-BD/firefox-47.0.1.tar.bz2"; locale = "bn-BD"; arch = "linux-i686"; sha512 = "4c697f1dcd68634e2ab712d4f2415e57cf8be0017fff3602223d8af19a1f3a5c973489d13951baaab95924fad42212a485fdff622d2b559be36e246c8a847b67"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bn-BD/firefox-47.0.1.tar.bz2"; locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "1931035a9d92dd9246a00b32443e282dc405096407a4feff7856125b7ee156840114c9be0dd58a020c250fa54c4ccb22052d2be291eeec9b5f76303fdf6c4cc5"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bn-IN/firefox-47.0.1.tar.bz2"; locale = "bn-IN"; arch = "linux-i686"; sha512 = "fbab6f7e4205c803a50990624d58aa80cfd3aa76fed02cbf9ea390f4ecdcc1a97bda9b51791cec49f2a7e1010109d5f81a1c9b6ac224f1f70df49407df5f7386"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bn-IN/firefox-47.0.1.tar.bz2"; locale = "bn-IN"; arch = "linux-x86_64"; sha512 = "c705ec8356796060c6782261086011bc0bf3ac9f08bc821ce2305c9aac11c522abb802a9d9ab7dcb53b0d38468bb6e667d45b187355d769acb43a8b252c4f400"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/br/firefox-47.0.1.tar.bz2"; locale = "br"; arch = "linux-i686"; sha512 = "c58cd77139a0ae7f3bb8f6f25c40856aca18a831c8f5d6f5d59a45ec615420bd55205093fb66a77591835b0d9493f774b1801a168b9c071086d510a1446cc914"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/br/firefox-47.0.1.tar.bz2"; locale = "br"; arch = "linux-x86_64"; sha512 = "b6bde26d478eac081007ef43a6d588f70dc4d54afc423b019468dc91bfcb117d3b4989c4cbb4cf77a1a11847a58ec74fbf822b6e6f0ef86fdb0065c301294850"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/bs/firefox-47.0.1.tar.bz2"; locale = "bs"; arch = "linux-i686"; sha512 = "16ee40d079996f42be77167b73645d389045648c9d36b76e34d0398c7b5b6dee54712d109f93d054236ac7076fc3edb06ee82acae40ad22825a23d92d0e2c636"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/bs/firefox-47.0.1.tar.bz2"; locale = "bs"; arch = "linux-x86_64"; sha512 = "ef674f409df5c32fe4584f9de65cc6558d6b3ec78d8a83f5cec829bc1ae09f30399567915e32584334704d12264c2592fecc9e4952beabc8b0d4eb49a7186854"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ca/firefox-47.0.1.tar.bz2"; locale = "ca"; arch = "linux-i686"; sha512 = "fe522bd836c82cb68bb21ad1c7f36bd9a7af1642abf7c035e2d0999b4cc07c58124e4d8de81344598036159102ee12f22c12e44a8a087e54d6c661c3f453b63e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ca/firefox-47.0.1.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; sha512 = "b618da984d35fbde3819d101c103d8d9a5a4de98f0e254c67e894656019ebb6adc56e14a57410a61430d9aa9c1e0a01339b39a5272164af372544f27329a1644"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/cak/firefox-47.0.1.tar.bz2"; locale = "cak"; arch = "linux-i686"; sha512 = "82659aa2fbd091224aef6800b3df1d2e5141b6a295918e4fc4ea09b671184f62c670e3dedd7040b2f167581b0c8a0e8799d861256b273b01b2455d0937722273"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/cak/firefox-47.0.1.tar.bz2"; locale = "cak"; arch = "linux-x86_64"; sha512 = "a507cff511c6337f805a27c0f73548342d2fb2cffa683874d66b054b844b17c354cc6da5c3d15618006c2279099b0cd9172b17d9d4b21a3863b5e395db686b22"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/cs/firefox-47.0.1.tar.bz2"; locale = "cs"; arch = "linux-i686"; sha512 = "9af91acffc2beeb53280a6cbd21656a91a686c03342fad90dd91314c49535acef1a8abac8fe54bcfc250ca8b8f07e3550c890094f3bcee6baece983cec68bd8a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/cs/firefox-47.0.1.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; sha512 = "c8bea48dc11c021fff9df5ee1a67a6b6e9193ffb2a07e17014d7448254d8a8f4d1512f862ea73bf84dc15b40edbba3fd94cd3d2d18872255bbfc7fa9a7b8ec29"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/cy/firefox-47.0.1.tar.bz2"; locale = "cy"; arch = "linux-i686"; sha512 = "7cc062c3b9b4bbfd0b1f7247f06505ae99458514b607d4d9062836085798bab7ade6c4d1c8903b1b961243c6fb6adb4c4f94780f1194f745cf62d786e2c4f5c6"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/cy/firefox-47.0.1.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; sha512 = "abafa600b941e17f8aea0e778a937f5fb34cbc8803c93e59febc5d9fde6ad3347ba0bc7aa07ab57a61f6b9d6b11d582b987100364aa8401bca539dc6e14584e3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/da/firefox-47.0.1.tar.bz2"; locale = "da"; arch = "linux-i686"; sha512 = "d4a9141779f52b78a51b9682b6b44e5ccffdecf5582358ab8a02efe133d9a52023e03c238e106a79e41a8aeaabcc58e0757c1af66837768e7bf4732f26182915"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/da/firefox-47.0.1.tar.bz2"; locale = "da"; arch = "linux-x86_64"; sha512 = "48f0c48aa273cec9830bf806330c7a630185262838007628acad904a45b3186450a8973938c36db636bdef9042c78ce94a4a456e1682ef561abaabab6ac20863"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/de/firefox-47.0.1.tar.bz2"; locale = "de"; arch = "linux-i686"; sha512 = "01675b3a8ecfa10da1d101cba36295b226b130e1cdb2c760541cd76c9b21436ae84ca7228e063402b1ca2eb59acadcac7720c9dd47db8b406675fb273af206c6"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/de/firefox-47.0.1.tar.bz2"; locale = "de"; arch = "linux-x86_64"; sha512 = "6a7ef802a8109f58504b2accb9ef0ee38986f6c8980e0831c30b470f2ee768169557cdbde1a58d7c72996b27596e553185ded476cecdd7114b75d82428b7846e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/dsb/firefox-47.0.1.tar.bz2"; locale = "dsb"; arch = "linux-i686"; sha512 = "55528fca4d276b2b0430949686845e3d7d88975129c9a9846408f758b4f9c8f154425db891e5c1930197e36137d6c15ba29de90dad624bad23090015849d0ab5"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/dsb/firefox-47.0.1.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; sha512 = "f21c14a57f6f973be824340fcd417ce03765d5826114462f62adbd933661bccbfbe90b66935083619c62d48401c511830574ccc373ca2110093b06fad59734ff"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/el/firefox-47.0.1.tar.bz2"; locale = "el"; arch = "linux-i686"; sha512 = "ac5a808db1ba68286a7199eef33794f7aeeafa26e97a20738fb21be479462bcaeb1e8a7995720d5c7dcaadd0cebe91bb2a3e019873d0cf74f42838f7d5c1a427"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/el/firefox-47.0.1.tar.bz2"; locale = "el"; arch = "linux-x86_64"; sha512 = "c02e6587d99fc3ca66debe854c778a8b3dbf9b514e6ed74fa15e3035a54643b2bc324ff59f1705c6bd392c37ad1996f80dbabbb57df10aff954ed0ff3f5b01d5"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/en-GB/firefox-47.0.1.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; sha512 = "c458c70db0408d627a904781adc9af18011f243689f4c5a606c8f1508b4e9417a8df499673c4ba56d32ea77d0f79ab85ff88852f7c518e7fd124e5970615b2f9"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/en-GB/firefox-47.0.1.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; sha512 = "28ccaebc4f7613d7ea8c3b47504923f2d59bdf4afd6e386a67dcb6b6923a9374c1c783e4f904da0b6e0f716ec87a046fc12f3781b732389d1d680745d6955c58"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/en-US/firefox-47.0.1.tar.bz2"; locale = "en-US"; arch = "linux-i686"; sha512 = "e1ea34bd0829656c04c471b66d2013fc07cbd5cf40b47bf3a932326cca71f9a502c52d1d5e6dd902d274d307079475b0e75d7ff552fcb2fadf31b2883efba79e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/en-US/firefox-47.0.1.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; sha512 = "a56b2ad26df424f008d96968a4e6a10406694b33f42d962f19dff1a0bcdf261bca5dd0e5c6f3af32d892c3268da5ebee8ce182090f04f8480d37d232ccd23b9f"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/en-ZA/firefox-47.0.1.tar.bz2"; locale = "en-ZA"; arch = "linux-i686"; sha512 = "d5efc3d4e624f34c81df068f4d6c184cb8a63ad0667695e9ce7099e069b23715eb77cf2004adee41bf355452179959e5ef7450f167f87be70339abb4cf70844a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/en-ZA/firefox-47.0.1.tar.bz2"; locale = "en-ZA"; arch = "linux-x86_64"; sha512 = "859730132549691b61e936813f0f5fd3e62f3ef6fa9899e3f68bd3178b7438b4c6b49f54f00d4898b568d6abccdd55a0f9fc6c51858e95735fefcc13de460d73"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/eo/firefox-47.0.1.tar.bz2"; locale = "eo"; arch = "linux-i686"; sha512 = "8ef290bf1eb3504ace393b32c2da64d14435edc327c4f13a40cd925efaf7e042a03b6877689b3f2290f85625410a4e48dfb2cf676f138fdba87ffc597b25f4b6"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/eo/firefox-47.0.1.tar.bz2"; locale = "eo"; arch = "linux-x86_64"; sha512 = "7d6167749d2a57a9c12180302a825fee14555e9050b6be3c83dd35183678bc36e10391cedcc864ca0dd96d297997a68627dc4fc1a9cd8922e789dcfa814f18eb"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-AR/firefox-47.0.1.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; sha512 = "07768e3b3ed903f4327881a132f192a65842a376eeca6d10ec0de69fefb4ddf3d7fee2a704bbc8d229c78556478814d9e53940cca9edee58270d9790d6b76998"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-AR/firefox-47.0.1.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; sha512 = "cac021af09abd742273dc77291fb1528dd5d6d38cef3a5e36e615fbb9f3908655fdc96ceb93fd131c4879acf24e702a044471136e7575f3b550ebcecd982047e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-CL/firefox-47.0.1.tar.bz2"; locale = "es-CL"; arch = "linux-i686"; sha512 = "e92ce6bec5b1ee8cf3db0a604eb4cae6245fb6d04a48eec64b6dd55139f3606cbbcb65511e29a3164d6572929b7216afbaa7f034a2191eba100ecb7403740504"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-CL/firefox-47.0.1.tar.bz2"; locale = "es-CL"; arch = "linux-x86_64"; sha512 = "98e57146481a53061c0b30872290ecabc2d14c73805a9461d82aaaf4cf9f301521fd55b01c8159c09a56f52a1580d83c9527986b1390f496d0fbd11227216e7f"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-ES/firefox-47.0.1.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; sha512 = "c44df66e140ea9190112f89aedff9519b6bee18f5e2b54aea19acd233e623c299aecf134cdba70d366fcaf6b7795d220052ff75409c7a04394a7aa02d9ea708e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-ES/firefox-47.0.1.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; sha512 = "c2d70bc5a304df7b2484c8fb2b374f8e31a69049eb223a53dbd0e4b51e4ccce907efb1674eb637370ce7c3947ba5c09e65f433d10e0f328b80d482f3de9cae12"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/es-MX/firefox-47.0.1.tar.bz2"; locale = "es-MX"; arch = "linux-i686"; sha512 = "96dcb75cffeb85b85f092e295e38ee55c272714c40609ca90cfaac5fa0cfdb3efe8e993319ee690b4a7938c42346bf39f063ab1f3db606e743c1e4720de5a93f"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/es-MX/firefox-47.0.1.tar.bz2"; locale = "es-MX"; arch = "linux-x86_64"; sha512 = "60b50d6726b2e1985564bc02263eb88c9b4c1bb39e6d19812ecc6751d6ad223ba04f65a7755a946fb15dceab90628b057bda89c55fdd4972604586f52c5a4b1c"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/et/firefox-47.0.1.tar.bz2"; locale = "et"; arch = "linux-i686"; sha512 = "0a4bef2277f729c93db413b68f8263eb356f7b3278880574b8ebe010e2db9067b803967e1f0d6912f128a9ad5ef204466f52ae277f3addfb8fe9ac377c3b8a3a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/et/firefox-47.0.1.tar.bz2"; locale = "et"; arch = "linux-x86_64"; sha512 = "ed1bd4fd67262958601f1107edc589bb28e9b7f9faf0edebdcaf0c07ec6007f527a9eab434582a65271a8f68edac8178601da54eab9398f48b31126657a21b0b"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/eu/firefox-47.0.1.tar.bz2"; locale = "eu"; arch = "linux-i686"; sha512 = "8c5c9406345e2a1fca3544aeb742dc0d254c804d887e3614613280c050a63b69320d4488b017ee16b0a2a07bea862e8b245baf7edc9df65689d509986f3c5958"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/eu/firefox-47.0.1.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; sha512 = "d8f7004e24033f377391b577c549b66f73cf0e899ce5f580eaccd07713ec03b4362db7b222ce6345d113641d3e6a951302939bbb155c47ec0fa46a201a631427"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fa/firefox-47.0.1.tar.bz2"; locale = "fa"; arch = "linux-i686"; sha512 = "f4e02737e20b6ffd3bc2b3a5e5fa59fc80a8e37dc8459ad4a6b99e7621a4d3f360884915f7136dc201830efe371de37977ef3e27f34f84e2cb734c1fff8f6e36"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fa/firefox-47.0.1.tar.bz2"; locale = "fa"; arch = "linux-x86_64"; sha512 = "8f624b066faa39341b750dbb702dd60ee6ad75b3850c659dac2e21969ebed1f792423e9fb0a9cae7fc456943020f9a0155af5d7c596433eedaaa9990ce07b7d4"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ff/firefox-47.0.1.tar.bz2"; locale = "ff"; arch = "linux-i686"; sha512 = "22a2c5376b1e8d770659475085d98ac1f1020cd816ff3ec6ccfcd68f2484b1b0dc25bb84ca52f4ad27144f4da356ce5e7fd54411d12ae7c852064509470d5828"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ff/firefox-47.0.1.tar.bz2"; locale = "ff"; arch = "linux-x86_64"; sha512 = "bcb3dabc250045b8ad444219055fd9d14902296ef3f9c320bec1bef940f84eeb0d4a50249805188ae96ed0288a70f0216350ee79191beba49aeba890ae515b41"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fi/firefox-47.0.1.tar.bz2"; locale = "fi"; arch = "linux-i686"; sha512 = "0c505a0e1d3030038b61ea159eece3892bcc7d947b6d7010c0be8791525c9d91ad1170d4cb45260584c93a78a4bc831b7acd9f28e95ae62e5b96b31745dcbe50"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fi/firefox-47.0.1.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; sha512 = "f347cde005c6b61366c633db5a8cbc5260dfa0d68230a938d847e3f80bff2f1bed09dddded7b1728f4ef9525610ecd046743f9e71eefb467943fe6b72ed198ca"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fr/firefox-47.0.1.tar.bz2"; locale = "fr"; arch = "linux-i686"; sha512 = "8fb8ea2eab82740657a6b822b330fa0c289c31ad900683b4ad07b1e9b0c6c4e14f50af39d6d0f787642010628800b0a99b5ab0c4cad62e4a579390509b1ddd13"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fr/firefox-47.0.1.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; sha512 = "ae79c5b7f9f8305c3631f4f913baa341a9beaa7a2ee5df1c6c1826030c21bf22b92095ee579affb8911110bf3bcc359793c0beca18d4c32b1fcc1f3d1dbcc4b9"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/fy-NL/firefox-47.0.1.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; sha512 = "1c57d02fdc33ff53de48ed9aa9e89ecd5a56d35b432d5651e71bbfbd5f9dfd18aeaf14d10b881f72df871afd00a12b31ff05cf9d5c5a55cd44a92c7a0156523d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/fy-NL/firefox-47.0.1.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "f30f59d630c5d289b61dc7440f7bbb976eb16732370f827365a477090cdf9f2859f39afb7ff9d9be7e8a022f181f2aeb7a3005c00f4c14e6505a28db7ae48a9a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ga-IE/firefox-47.0.1.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; sha512 = "739d5feec4bffee67876227f6783d35675f4c0d168b7abbe5f97b6e8edce7fe4b8f04f8240087f7f208db4180f3417997b661c93ebe046decff3f4f4fecac839"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ga-IE/firefox-47.0.1.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "cb4344df6e07db839ce8c9fffd1b7b310c8108b5218cea3602972806c1a40f56bf1355ede4cb3595f54179b16e3470e25bfbddc8e39d726c7d6c1e99d128ca8b"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gd/firefox-47.0.1.tar.bz2"; locale = "gd"; arch = "linux-i686"; sha512 = "91004d62bb5f1f6a1d65b35fee9e594d21d9877669e042cb4c9a834b01b35797363e1433a9ce5a8d0a9f64c8b256da6a6d09fa3342b74b7c2af8ce8afb3e4e56"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gd/firefox-47.0.1.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; sha512 = "f04034cafed25c34713ffe4109e53b107b8fe81321c0c0c035f54ff0ce67ac393b42db7598edc658d3f026e447f9ff1c4d1cfdedd31066eefb6019117248e4c0"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gl/firefox-47.0.1.tar.bz2"; locale = "gl"; arch = "linux-i686"; sha512 = "107bdebb92ce86f39cdc45d6bb24a9c4d104820eca6bb77950693ccbd55e7f8a2f143fc3a5bbb1bfda161e7a33c8f6d8d2686b09da1497215defbca2b4e4e109"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gl/firefox-47.0.1.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; sha512 = "c841af5c73343475150b5404b4b54396bda845aa5b231a742aa17ecb7fdbbc5cd4123efc3ac2ede1c24f485d04bd87e8bf7cb00b7135bef236ce56afa0c27a19"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gn/firefox-47.0.1.tar.bz2"; locale = "gn"; arch = "linux-i686"; sha512 = "20954e218967772488bd895ebf069522c3f4c56ebfa09a7c8efb740158cb95b6be76cee8f4d7f2c1c6c505ca9071a0ddc1914784a54f669d337d5196f18b6f4a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gn/firefox-47.0.1.tar.bz2"; locale = "gn"; arch = "linux-x86_64"; sha512 = "aaed68f13e326792671669883b452b65556998ed757ed5b745c6453d6bae8865a06f137709de37ace2688e2e09f1b96ecf2e5b6374b4170d29100c6f83ce22ce"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/gu-IN/firefox-47.0.1.tar.bz2"; locale = "gu-IN"; arch = "linux-i686"; sha512 = "205093ecc0dfcddb2b90e05b1a17f75805a4597bbfad214d67442fd0d952f765b031ba63a3c399ba9c1c46e4d05b3cf786f01c46eb8990240a16431964c93a94"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/gu-IN/firefox-47.0.1.tar.bz2"; locale = "gu-IN"; arch = "linux-x86_64"; sha512 = "a84ec5015f6922a22a284eaca985010586067370d818e77d401b58782f86dcf2f534f1ef021719c170f1f502525ce25c94760d3b75481c15fade3c25b969b563"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/he/firefox-47.0.1.tar.bz2"; locale = "he"; arch = "linux-i686"; sha512 = "5727fc4699316c4b34be1c2596c5cc20d5fc9d2062b1e106087cdb34b788fe3ebbc098acc8c690bc83c9d9be59ac3b3977fd9116d766ce908aa088660fe34771"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/he/firefox-47.0.1.tar.bz2"; locale = "he"; arch = "linux-x86_64"; sha512 = "c399969bc24b10ca1c1eff17d3414f214cfe3e5b73282942ead5b2ba4d2c58b74d665b13031ccf42956cd45f0fc7b206dd2f9674103c1e3a8861a33577b5caa7"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hi-IN/firefox-47.0.1.tar.bz2"; locale = "hi-IN"; arch = "linux-i686"; sha512 = "f014c47a143d425aa3452be2bbed199a8b5e75d278c35fa86bb6bcac40bfb32bdee22d030386c881c818b465451b35c81f97bf29f9ccfbea606d52c822057899"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hi-IN/firefox-47.0.1.tar.bz2"; locale = "hi-IN"; arch = "linux-x86_64"; sha512 = "0e5dc0970680886dc02448d7118b6864092699fe44f3276ca17cba160aee59418f8e39338247897b118de0e1fb7634cf725ddc6a34a8b6f002b7a78d92deffb0"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hr/firefox-47.0.1.tar.bz2"; locale = "hr"; arch = "linux-i686"; sha512 = "a9af43f6cf6f493f728b8942d3a600f3cb3a23eb0818d284ddabb8766f7d274aa0a232f9925b65625bb56d00864946dc6b0567491cbecdd6a7cf626b6964d9b1"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hr/firefox-47.0.1.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; sha512 = "d97951148ca0ba80a67020f323859ea3f508e40906ecfd18f7a8fbe7a2bc85ea4635945b5c6063e1d5d18456471604075e6767da9a4fda6a09dd3e992a7d3a88"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hsb/firefox-47.0.1.tar.bz2"; locale = "hsb"; arch = "linux-i686"; sha512 = "2f7adccdc894f345e861b29a6d65909b1cde2649c69ec9223f784e659e8e3f4668f815b3683fe691de0749483167d26885a0199bee88e8524377c7eee3afbe99"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hsb/firefox-47.0.1.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; sha512 = "70e39341ede01e18c653a0eb56b48e31c73ee3df54ebc11bcd220e2d8e19c67c3e248095c4d070b12a0eac5c24acf5a8ad83069673dcaa684229f4706103685e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hu/firefox-47.0.1.tar.bz2"; locale = "hu"; arch = "linux-i686"; sha512 = "1fc01c6dd873e2194e6196b1bdb0246e95d0b0520f558b21a2052251d2a5202141c09410c4631b3f025479169d8f68411c2a24f32825261fa8d65696fc7cbe0f"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hu/firefox-47.0.1.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; sha512 = "b4509d671d7eac055812add85ae571f52c90b4eeb172d21c22ce844c70192ba235f37a732e94a0edd6794ecd5a8caa5e8bb6ce05a26d3705902d3628420af871"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/hy-AM/firefox-47.0.1.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; sha512 = "a2b7cd1ec95a0b5eb064e816cfcfc6a74a92806772592947267c4b266bf7ce77d1beb17a7c25b905251cf497ca8dfabf16bca367cf6d9e9e635182f306bd71ca"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/hy-AM/firefox-47.0.1.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "9997ca45051e609e289d7730caf1254adacefbf8e618a165750d5bb7ff7933d014781af76501296c89a4236fd3ac477df6e6be5a5dd45f214983c851a856ce5a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/id/firefox-47.0.1.tar.bz2"; locale = "id"; arch = "linux-i686"; sha512 = "bda5a7c599885bef966daa35a3f34297e38534e32967142ff9cc720a34c7aa9730e3f24623c240637838eca03f78f9b2ee30af3ac3dc8ba48f9664c56b64c789"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/id/firefox-47.0.1.tar.bz2"; locale = "id"; arch = "linux-x86_64"; sha512 = "97d16c5b4382c7fc6ccee416d671e47d345834a44ab111aa486a41c756b25eb894628d0128e8454fc15f38937bc40436b12e60752ce7b7c1fe35a230abaca337"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/is/firefox-47.0.1.tar.bz2"; locale = "is"; arch = "linux-i686"; sha512 = "576b904fb836ea735f652c6b9c91891dee164edd3523c5f99d68cccb4bd6689c29e4c579b6cc44e699a8900101fb8d223f9e0b0860f71a2814ae0ee2c70609e5"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/is/firefox-47.0.1.tar.bz2"; locale = "is"; arch = "linux-x86_64"; sha512 = "592d65977c34c6133f5745a85722f822efa5956bafc6e880954a0b318fa59712c754e882768755fc08f5e08a1c99493c0b30b4219c46169ba663258e3fd3f3fc"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/it/firefox-47.0.1.tar.bz2"; locale = "it"; arch = "linux-i686"; sha512 = "4d749e1b5d8432df789f29a247ab48a688d4aa16fb25dcf7209783c6036bfccb9ff8ac32dcd09dab1708f71896fa034576d6048eef077d1a6c0a3dc58d3cdb26"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/it/firefox-47.0.1.tar.bz2"; locale = "it"; arch = "linux-x86_64"; sha512 = "087c456d691225d9aef54b2013af69cc7bf2501f83060179112e9c40c1d6762202f68e6329a936df091a1ae6aa5f20bcc96a4c8b0451b71270426bddfb45d15c"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ja/firefox-47.0.1.tar.bz2"; locale = "ja"; arch = "linux-i686"; sha512 = "cb4b0bbff7d322f2f04fdaa50b365d4e0a1ff1786206539cd124870ebd69a9305b88d39b9fbed41c64ddbe68098e02c51a0dc665262424f8eff882b1497ea1fd"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ja/firefox-47.0.1.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; sha512 = "b6c9b419a3e746957f93a4bdba9043adc3911b6f76e1eea2e4e31e77e9aa9057ce720205db4af5586a90df4d6b774b90829f1d7689e77c560c50ccae755400b9"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/kk/firefox-47.0.1.tar.bz2"; locale = "kk"; arch = "linux-i686"; sha512 = "ae7711d86ce8180997f44f9309a63a436bd8b70ed0dccda773c34ba816daae99b3b1ae913ee87f4d1f9a4e8f016aea670e89652823df16b5e8414bb58ac28225"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/kk/firefox-47.0.1.tar.bz2"; locale = "kk"; arch = "linux-x86_64"; sha512 = "49fb6b5ab6aa12535373927519bf36099da6fab7c2e1bcd6f5ce73d91679f58e81eddd3556df65b305fc2d1cd439cf6de081980fa98ff79df16b620ed41290fd"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/km/firefox-47.0.1.tar.bz2"; locale = "km"; arch = "linux-i686"; sha512 = "29dd1808c1430c01dbb395d5e5a833bfbde85453278d4efd32f1afa1eac19a651c0c3a42eb4ba3402f56a8492e80746d753986c0ec0f1a6dc0e5eb6778b5c6ae"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/km/firefox-47.0.1.tar.bz2"; locale = "km"; arch = "linux-x86_64"; sha512 = "f53966aed30b57a601152f09a26414e11bff4ff31683989eb1e47546eaa32fce8cbb6511043f9753cae076d23d6f2172c2b224313cf5f3262f109b49119175e5"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/kn/firefox-47.0.1.tar.bz2"; locale = "kn"; arch = "linux-i686"; sha512 = "17dc37df2b3d5a87bbadc4d5c80d4ddff03752b7a80f5c76171ce9f0bc4b8926964b6315cd4f0c6c9dd3142cec56b464503bde34ec3c69e2b8a66ddcae72b0ec"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/kn/firefox-47.0.1.tar.bz2"; locale = "kn"; arch = "linux-x86_64"; sha512 = "2af5ac5c254bd0ed2d08656a6fee7966d73aa89973cfad67fd18d7d88fd1f18a2b882de7854af46a3ebc6acba4cceacc06942db7ae495faa2c6ef21c65e94158"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ko/firefox-47.0.1.tar.bz2"; locale = "ko"; arch = "linux-i686"; sha512 = "415fc260f3dcc2ede6c43194501d9522fdfb106f7c86e5d8f5929df6615c73023fffc3efd190deb68bf08bb2a0d4ab34f7605e222301c8350b980f2dbc289c8a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ko/firefox-47.0.1.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; sha512 = "c991c0b9a89b618ac046882b929fd7e3689e19dd96edf4535b25f9172b6baaa801a4490ae4fd35e82ca3c776afab74a0a09b993f8ae8c2a603d210f2cf248f73"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/lij/firefox-47.0.1.tar.bz2"; locale = "lij"; arch = "linux-i686"; sha512 = "3cd367654397d14b782cea4ef8c96f1f6938f011576a8dba92dd4ca832ca3c8682f3e0e161a4288b112fca550d556080d0ece5a79e4c4f6ec99a9298feb6fa12"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/lij/firefox-47.0.1.tar.bz2"; locale = "lij"; arch = "linux-x86_64"; sha512 = "2d7475c544df807a956feb9361f889ba0f5e43dc52a9e1dc9c469d86e97f344b4f2995e3fa149a77662969f3acbcc998f430973b2b9d28b23c82c5058b4a9dfc"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/lt/firefox-47.0.1.tar.bz2"; locale = "lt"; arch = "linux-i686"; sha512 = "35c8a452ca845576739d5faa9dab6f3c34dcecf9ce95870f68699836f3534b4807c91fbe80007950abbbca662e6d01b406205b3e4cdf4d33e0717ea5d6f57006"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/lt/firefox-47.0.1.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; sha512 = "8791df09d841d5ddabd552d0fb0dc7e9446d23092bae1010d92bc3b056a9ad4a6dad01c5d8db531a273945eaaf4c30c922cd03d7b17e1b6be263e0bcb91b8384"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/lv/firefox-47.0.1.tar.bz2"; locale = "lv"; arch = "linux-i686"; sha512 = "22b865a344a46096c53a72ff6b1402d00808bb3b49ecabe6f4115ea60e40e522d64afc701648772616fcb784a963bc6d5bb3f89517d7f8407f22fa82d81bad98"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/lv/firefox-47.0.1.tar.bz2"; locale = "lv"; arch = "linux-x86_64"; sha512 = "3c66af306b1a8d0a684c12511d95353c0bdda0bea981ce4e577c928be03e12b582b19dcaccdccec551b3cb0fb716323b1079180aa7a8f1204f5e4b5a84b72831"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/mai/firefox-47.0.1.tar.bz2"; locale = "mai"; arch = "linux-i686"; sha512 = "780fe423a3cd56a7452df32679ee07a0e328b21cadc78faa2721cec59185c4a4467aeeb75e9237cc86d38dfa2cd71530f02156c4fb9515582ca564dd53d47543"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/mai/firefox-47.0.1.tar.bz2"; locale = "mai"; arch = "linux-x86_64"; sha512 = "d27218b59edf004dc57cfa9ffd70dbeb59b7d3c0871b00388a56b505629fd82ddd6f6e0147f5b4c67a8ad72a674e384b66ba2f9455fa9ff218c9ada4b27d1d7d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/mk/firefox-47.0.1.tar.bz2"; locale = "mk"; arch = "linux-i686"; sha512 = "da7ae3718f3c69ec9b62aaaea93951375d82d8d02818d6855fa9f085a64b69c155a1336585d786ae2d33d657110b787f62909dc9e4d54c62d2ea94d2fa8fee3e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/mk/firefox-47.0.1.tar.bz2"; locale = "mk"; arch = "linux-x86_64"; sha512 = "95136f8bf86014a63bcbf4a5cfbd778c4c7e6a84618aa0f6a6948bb597638569b3702e0569b50c5dc9b46339e723377faea8964b921ae9802043fb7983a2c4e4"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ml/firefox-47.0.1.tar.bz2"; locale = "ml"; arch = "linux-i686"; sha512 = "56743acb54283715fb2a910caa85dda61f7e2c1c5e012aa222dc07e3b522572500056fddf990b7ef03a175ff8901fb11b113bcad5c2adf4a6e6e032644ccca2f"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ml/firefox-47.0.1.tar.bz2"; locale = "ml"; arch = "linux-x86_64"; sha512 = "134f35f5f6616c2a7eec48f637277fc02e23b57bf38eccff9777bb08c70a41fe79967b69567f75f9c8bcbad4b22d2ddaf16bec98e399c4b8ca9db9b70e99ef58"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/mr/firefox-47.0.1.tar.bz2"; locale = "mr"; arch = "linux-i686"; sha512 = "f29de7ae7dba03465baf86f93d778c9faf3055d50295977c0207c7e4daae6f7ad733ed38e1323263cebe4f737d9a1616024333a97139156470de1a9fe3c16276"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/mr/firefox-47.0.1.tar.bz2"; locale = "mr"; arch = "linux-x86_64"; sha512 = "731b4f143fd1303ab54ea3f1b6aca6c4f78ce935caae32fed0b8cdcd46c0ade8c8977131a3be786ea929a7d284c3d45d34851a0d81242761f722f0bceb126957"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ms/firefox-47.0.1.tar.bz2"; locale = "ms"; arch = "linux-i686"; sha512 = "d372bac105f2012b189efedc449c7c183d0daf64cd7a40822ef9d685ce4a1550ca9699620440dd198b13f95513a577766e9f1a8e88b212492831bf7ffcac7e0a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ms/firefox-47.0.1.tar.bz2"; locale = "ms"; arch = "linux-x86_64"; sha512 = "1287f36a742fa834d5f31e6bc2f6d3651e54f2bc8845a1f0f647e9a9e38ba66c58138961185897c8832107cffff06167a35dc3ee1f0ff830f997f65fb0854a63"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/nb-NO/firefox-47.0.1.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; sha512 = "ac3e46080e188e56a6b67ff77aeffdba7982d7c3aa4156a6f2781ef6b8fe63cac50d678e5afc91aca4ad16c4384d2b2727f74ddc4083da91a1e3590ac98ec9d2"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/nb-NO/firefox-47.0.1.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "dca52381e45b5c2d89f590971d830010a9ec1a2a513fe655ee93c3fbd980adcea78787701595a95402bdb660c2f3e0a489e001deba13798337493655798c713a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/nl/firefox-47.0.1.tar.bz2"; locale = "nl"; arch = "linux-i686"; sha512 = "6ec01f8eb18384aadb5715a996c8410ffa94b801ee1f1b1ab43bdeb492e179e781e8b85acbeff4a25cb4fef847ce3e2335968458d9f6e47d046083264e91f6f7"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/nl/firefox-47.0.1.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; sha512 = "7d5840518312dd167d914a8f7fa5670fe17f9a6fc39ccd128e30f689005b35bd352d0602993713c3d05288f2b036829be8e08398d536e4aebf2341ae2290e633"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/nn-NO/firefox-47.0.1.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; sha512 = "a185f7592649a91214363cf2a0474b5895f33342c98cd4bdc48fafb0cc76310b2ba4f46575970d723c76b2ecfeba8e2b39d9671e6059a15bcb2565258096156c"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/nn-NO/firefox-47.0.1.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "7f8e7277bcbfbe5f40c161f1ebbeed86159c2b6205a5ea55cd8b6253fa6742bcfede11d4de6c1aba36e2b1e98f9c9a7b8e26f9aa35e1eaadc1d011636d429be3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/or/firefox-47.0.1.tar.bz2"; locale = "or"; arch = "linux-i686"; sha512 = "a543a7d3f4e24364be7e4df65a81da82d955d1268a4cbce741ad7ddd5f4e9916573e271f02af1e92b123a4da2c7f312c17f6ce714e3057a1b204484ef12133d8"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/or/firefox-47.0.1.tar.bz2"; locale = "or"; arch = "linux-x86_64"; sha512 = "7672596470cd8f49f9c4558b05bd637af1650da729bc518681a8cde3ec785358121fa7ef209e123fca4b59df1a63878832bc32d2ff404b5d2a818b60ba10c15e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pa-IN/firefox-47.0.1.tar.bz2"; locale = "pa-IN"; arch = "linux-i686"; sha512 = "a99b60ae1eb479e31f838fd41d5de325c418762fdcfa5e0f3bc3d5da8df108d3b64ce5bfac0af09663007becf5327164db8dea0ea7a3876586cc43030a780199"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pa-IN/firefox-47.0.1.tar.bz2"; locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "f0110b74842f924808f74979061151fec711d10a6005d2da2fbb8d46fa2a25ecd5a2c804e58c10a918efe570d4d67d05578b0245f526e1aede4bbc786e9f304e"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pl/firefox-47.0.1.tar.bz2"; locale = "pl"; arch = "linux-i686"; sha512 = "7eaa2bad351429d76b476819a1529ed1609388968327382cc13df235a294f2e9fb14295341ff15fe3b2815ffd1c6c8978e2aa104a847fd2cb4adcf2ae3b0b974"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pl/firefox-47.0.1.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; sha512 = "a40e2c15cff0e7f7bff8a5c0bc4cf39df948a21bd37b34ffc93dd87e1f5256526a25526e457fcfd8d081bc872dc1bec13e67da3cf671b6a16dfa17850be4743c"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pt-BR/firefox-47.0.1.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; sha512 = "c9cd96e68fa2e1f73a49e71c287a25be8d45a8ebb56262e02c40ba5869fc58c7fc43a1f6958592bb377e7dd4064d64f5ebcbcb5cd3a9fe0a007c2da665f50a66"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pt-BR/firefox-47.0.1.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "1184751c1d1a0a9044f8df2d20aee7dfe332dc5f851802ebaf2c5c83fa2bcccfd913cb6e16d2baa449cff1b02aa18f828489914c0741a2ef2a46d54fefecc268"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/pt-PT/firefox-47.0.1.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; sha512 = "86538057ae91b1297acc11c9bf3f7d24ba1950edead89d4733f7c898cf53e3848054bf391a975f19766b69f4c56f576ca54e4b8da806db7416f3e3d91777c3c3"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/pt-PT/firefox-47.0.1.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "0a480c26e5dfe2bb9b536e122ae32e18a6dac999004493839cb506c1ad615e095c554d296f1a77bfccbbb86b58bcf549db83f7de51d02b68d1eb752b421f23cc"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/rm/firefox-47.0.1.tar.bz2"; locale = "rm"; arch = "linux-i686"; sha512 = "751ffe931cd60296490c7164f49f61f4a51bac5210328a18d02261a07eb607e181b2bab4fa0b59d2df15334152386bf816a984840d2331b7e801171be9c90594"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/rm/firefox-47.0.1.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; sha512 = "3e526c9a1a876e5d2c548c9a68803dd11c04c8214e18eb09c0b1c3fb3833f64c8a3362db8083ac5de81c59268439b53effa3bf1c64807fafc874eb8ed9baf188"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ro/firefox-47.0.1.tar.bz2"; locale = "ro"; arch = "linux-i686"; sha512 = "73cf6a18deafb7ba93fd60cba3ba0bb0191471f977c41bac11bf2fd6cc6f7fd7cf2ad125ac5cf168ef577d71dfb0e893e182f39be6ad186ddc642d87c40041a5"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ro/firefox-47.0.1.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; sha512 = "b62c54b8694b4a662c1d336056d404a8d432ba0a3d4f2964b5c5acc0e39b668fd228105e1c4e307bfab1acfa5c3ce223db4229df01866cdbbc7c1ac95e70fe2c"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ru/firefox-47.0.1.tar.bz2"; locale = "ru"; arch = "linux-i686"; sha512 = "6ebd3b3a1f3613905313129cde7cf113bdd777fd0f600496231ba813a95b04309b25016dd69891d31189a93ccad3f87b9c69d54d6219ad39dd38d1181b1f3102"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ru/firefox-47.0.1.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; sha512 = "539a22d13587cdcc21b6f76ff24ccfd1df98cbaaacac802aed46ba8f2bfed27cb2f3e5c146cbd2c3559aaff22297e692030b9612041a05a6bfca08f49bf0d2fb"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/si/firefox-47.0.1.tar.bz2"; locale = "si"; arch = "linux-i686"; sha512 = "bb0d1621f5b9af886fca0ea7cf7fd851d7c22d2d8f279a7b88e9bce98be33ad7b75d6a51ab47ea859802ed39b467815db60409285afaa0bbf4bb1ce6d590eabc"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/si/firefox-47.0.1.tar.bz2"; locale = "si"; arch = "linux-x86_64"; sha512 = "90337d193df7db41a1384856938bb62212952a80144dcc319a725a9b567ffd4deb7bb7af89b57891d3c17499ff466990e656edf7d0b017b8f4e0370aab445477"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sk/firefox-47.0.1.tar.bz2"; locale = "sk"; arch = "linux-i686"; sha512 = "23a15e6ad5ce9b03c218be4e26e603a412de4d870d5f64b599ae511bfc66bf2cf04613cc06fc1a054d06b80435e284456c0b08e33f34d8c9482f5ca23da6ae62"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sk/firefox-47.0.1.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; sha512 = "a86cbed60f65e4ebb36c614d846fbb2515945112fd4f2482c3a63b49a62c3acb310f050dcbd57cc76a808c049eefd8f779d6aeea53362dd81798bb8d7177c86a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sl/firefox-47.0.1.tar.bz2"; locale = "sl"; arch = "linux-i686"; sha512 = "8ae008f0077081ef40de3bf08c2de294231f41439a83d8a41a485f53e95ba3f4fc6ef03d6ac98e8848c3f3dad290978f1607d8c847f1622bd86b7d38cd0be730"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sl/firefox-47.0.1.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; sha512 = "34efb560c65329c7f3f6b341cc49ac4952f24e6e9b34e7f5bd45d98618a4d03ac89c6f62580223efd2d37db24a03f76a54381d4162f5430b887122bb56eb49d9"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/son/firefox-47.0.1.tar.bz2"; locale = "son"; arch = "linux-i686"; sha512 = "d3e5a25fbc4a786239a7ae543fefb7b7e3ecc34192c8326af915f18b9b08436656bf68faa4953a34bdc464e32305baecce800f91ef0152bb4b4a8323ab448f33"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/son/firefox-47.0.1.tar.bz2"; locale = "son"; arch = "linux-x86_64"; sha512 = "ffee5d1a23e91911fd1dedb5ecf24bfc6b1733fb582e64a5e07d4df4b7afd9a6c502a70ab3af6624b4594f5ddcd81bc8962ede5b693cc035a96a561389f6bfca"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sq/firefox-47.0.1.tar.bz2"; locale = "sq"; arch = "linux-i686"; sha512 = "1cbaf8c32d1d3205cd85127839eed11b416903960c9e411b9adc71c42ba4add47acddd32a9217bb68f27b90d6765892edf2d356e21235c5bfd5cf69d1ee719f9"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sq/firefox-47.0.1.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; sha512 = "16d93961a53ecc3e1ae3480be9e34f2a22dec2bdab55dbd35d1ea79ecf2ee48f195380bd52efc7d39529601610793b75daadeeb54dd76c9a3702c786af25acdd"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sr/firefox-47.0.1.tar.bz2"; locale = "sr"; arch = "linux-i686"; sha512 = "0b2c5234f1787cd972fad398dc270766fbc3015dc1bba29755e5316f207af9f5787d4aa41e96cffd2c9d31c57a5d1896e63fcd04e6235a4a6798469e738fa10d"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sr/firefox-47.0.1.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; sha512 = "e7c7e7ff7fd81ca86f45997faed7244e4d807c3e5ad7ed66d6feb38c3e9173eaf136bd34af690ce28534f0c531c7f1d11595ec6502dfa42778cc19dee4334c49"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/sv-SE/firefox-47.0.1.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; sha512 = "dffb94b0ddb4b9d2effba3894b408c9f191f2079dc4b47e214347a235c9bf1adf77e520465691d14a274c3f3344c7f8b7d41965051d506728347e0af1117ad27"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/sv-SE/firefox-47.0.1.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "b601906d28f071c6beb3dbd6b37fa68f50809c9c47c9db69d631127ccc7b784e7d3b278aea6de060b34d83b6c78137da32b77f8e17ed199c3213b89dd9391264"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/ta/firefox-47.0.1.tar.bz2"; locale = "ta"; arch = "linux-i686"; sha512 = "1a496470ef8e0899bfce66b41490f54d4d32776eaf60aca8725c4732512f1d3befb2e1fc3b942ebea95fe2359509c43d41649e5f90498264b8e02a3352244260"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/ta/firefox-47.0.1.tar.bz2"; locale = "ta"; arch = "linux-x86_64"; sha512 = "00e6dbc43ad3c77693903fe534722094826637698df691b266eb801b27cd5e63502c21ca3e34ff939a7645a1f75d36fce6154626019eb96bc73cc39ab845c952"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/te/firefox-47.0.1.tar.bz2"; locale = "te"; arch = "linux-i686"; sha512 = "70ed539571cadf241f819b68ff24829db32f56287aadab31656fdf66c0ed94ccc6cc11b6cef6e2e963203cda47af2c6032db6e5689c37aaaf495b1e4fa970207"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/te/firefox-47.0.1.tar.bz2"; locale = "te"; arch = "linux-x86_64"; sha512 = "d491acd4635ab9b22f76531740c7ee7a85832678aef9ed646e75f56755c02538440adeea71e9ca5a7a5e11f3f2f6941c3c4c1e47380547179f63baaf6c20ad07"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/th/firefox-47.0.1.tar.bz2"; locale = "th"; arch = "linux-i686"; sha512 = "0414f74c6266fc204f2741b6860f7919c957364bd56ccc2cec5ef4b9c4be812c554ab584e6ce53387e6b7a18ad02991a44d9507a16da59a4aabfd44e7fb5b754"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/th/firefox-47.0.1.tar.bz2"; locale = "th"; arch = "linux-x86_64"; sha512 = "2952cceaecdd4013882150e8158607639e4ab2cffdef563d4fd1a015c41f1eff6c5ac22c0b9301a05ab6f9fef9659d54916275d5a50d97ad43bf69f10da7b3c8"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/tr/firefox-47.0.1.tar.bz2"; locale = "tr"; arch = "linux-i686"; sha512 = "c5c6273bae2b9a46108a433af3a85b5cbbba4cd3154ee124ccc49f46c4a76264836a76d1b2da4b1064e9a913cc9fe461911c53e44f40343c5f780be04da932e5"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/tr/firefox-47.0.1.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; sha512 = "f0b5bef1ea4b948d699a79d902055d5b31afbe5c4f1814d98cadef1ca820ce39212ec009f68d875860a48942e9d797bda88eec4f6ed591dd8b3b260e04170974"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/uk/firefox-47.0.1.tar.bz2"; locale = "uk"; arch = "linux-i686"; sha512 = "3a069ba914716ce122c4a89612988708d811b9350d333aab203dde212527c0e0cc86ec4781e6aa23f40b77f2266f76eca366cf355651870f43e180b97aa25c43"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/uk/firefox-47.0.1.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; sha512 = "db7931aa3f1d150e4b5b8c87b9d069df4a515fb2aa5e250b8f8a1bae0d8fd9a210ae949df056c47e3c88e8faf28f2571311ce2d6f179e3365720b42f1335b546"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/uz/firefox-47.0.1.tar.bz2"; locale = "uz"; arch = "linux-i686"; sha512 = "110a82749e187f39d77f63b16ad515218e5512e5974916e4145e625a40d797e23fdbb5d110a23f061448cfc3d3c597858636c9304e941a34c68368f749c3c900"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/uz/firefox-47.0.1.tar.bz2"; locale = "uz"; arch = "linux-x86_64"; sha512 = "1dbf94cef034449e8d1342822384bf1761dc61748e2d876aec1ac628dd161f92b62da832fe397b2fe4f8a1b82f9adf1c3690f26e07ee3e48c6299f95969533cf"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/vi/firefox-47.0.1.tar.bz2"; locale = "vi"; arch = "linux-i686"; sha512 = "af97e1dcfc9bfbdce95a5cd35025b2540ad928d3238863471116e071a51b354b7818577bc3e7427c513e7b335bc1510605ba3ad1a37221389de7c7fedf6e2103"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/vi/firefox-47.0.1.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; sha512 = "cc938935395e66ef721fdbb8c8b781ef648b5419393ed1687a116a4d9ae12dd18f2edbc8287235504aa6782bbd6a41f9f5dd89c9c712ed4980fb9fa44f46ef38"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/xh/firefox-47.0.1.tar.bz2"; locale = "xh"; arch = "linux-i686"; sha512 = "a76dbac054cdb7f5c194766dc54f215de4cb4cca4aacd7c883e0e3632b9dfc18cc25d7a54788e213bc65c894dd26ca9b863199b55b649133f93da9fed9a58fe4"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/xh/firefox-47.0.1.tar.bz2"; locale = "xh"; arch = "linux-x86_64"; sha512 = "cfd8bbb81637c19464ec34788254740e999c13bc8a64b4289b0e1c64f76d711a5a5a8380995271f309444032739066f06334da2f81b6ca2b2be33ff55d3ff402"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/zh-CN/firefox-47.0.1.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; sha512 = "d11637b0c28aa1c45b315322ff12392e133aebe21f435564da278b9e301f0c8515ccb721df2bd55c175c48c3e24934837abbba4b84c9fa659b7a58db1da68f04"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/zh-CN/firefox-47.0.1.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "27a06d87f23eaeec170d1ea7f3df636198bfd4787001e178948fe9b8a3f1aafff3be59b9d01ed5b5851902b550601f061e923a4cda3a972f0ac68928cab28577"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-i686/zh-TW/firefox-47.0.1.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; sha512 = "7c6ef5592b273749ccbf7b37c09984b11722beb7f49d4ed25555b84f0521e0dbac5197c7642ac508a21a1a40c5578dcfb49310858819875cc9407c85426d599a"; }
+    { url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/47.0.1/linux-x86_64/zh-TW/firefox-47.0.1.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "9ccce84a292144f3758190ff2858c077d1e7ec6d49ff5e1efb404b8dfb3bcfebf96eab15d0ec32325e4d96d94f4c6bcc67f4e43dd22af418b822d82a2afaf6f1"; }
   ];
 }
diff --git a/pkgs/applications/networking/instant-messengers/teamspeak/client.nix b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
index 17fdb2061dd..24edbc85643 100644
--- a/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
+++ b/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
@@ -31,7 +31,7 @@ in
 stdenv.mkDerivation rec {
   name = "teamspeak-client-${version}";
 
-  version = "3.0.19.1";
+  version = "3.0.19.3";
 
   src = fetchurl {
     urls = [
@@ -39,8 +39,8 @@ stdenv.mkDerivation rec {
       "http://teamspeak.gameserver.gamed.de/ts3/releases/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run"
     ];
     sha256 = if stdenv.is64bit
-                then "173mcvrckia0mming1v9nzi0bllr4m430y9swl9kyfsvp44f5n5h"
-                else "1iansjlbalwil0nlrlxfl70zzbx009c4rccf4va0kq097rqhgznx";
+                then "05620qqi8plxsrzj92g306a0l8wg1pd2l66vpmj71vs0f5lms6p4"
+                else "07b2120pa8nyvnvh48vp5vqq7xlxg6vrrx67azz9kfcdzbbarcv9";
   };
 
   # grab the plugin sdk for the desktop icon
@@ -101,7 +101,11 @@ stdenv.mkDerivation rec {
   meta = {
     description = "The TeamSpeak voice communication tool";
     homepage = http://teamspeak.com/;
-    license = "http://www.teamspeak.com/?page=downloads&type=ts3_linux_client_latest";
+    license = {
+      fullName = "Teamspeak client license";
+      url = http://sales.teamspeakusa.com/licensing.php;
+      free = false;
+    };
     maintainers = [ stdenv.lib.maintainers.lhvwb ];
     platforms = stdenv.lib.platforms.linux;
   };
diff --git a/pkgs/applications/networking/mailreaders/mutt/default.nix b/pkgs/applications/networking/mailreaders/mutt/default.nix
index 31ead22e1fd..0be5e0bd57e 100644
--- a/pkgs/applications/networking/mailreaders/mutt/default.nix
+++ b/pkgs/applications/networking/mailreaders/mutt/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, ncurses, which, perl, autoreconfHook
+{ stdenv, fetchurl, fetchpatch, ncurses, which, perl, autoreconfHook
 , gdbm ? null
 , openssl ? null
 , cyrus_sasl ? null
@@ -61,8 +61,16 @@ stdenv.mkDerivation rec {
     ++ optional saslSupport "--with-sasl";
 
   patches =
-    optional withTrash ./trash.patch ++
-    optional withSidebar ./sidebar.patch;
+    optional withTrash (fetchpatch {
+      name = "trash.patch";
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/trash.patch?h=mutt-sidebar";
+      sha256 = "1hrib9jk28mqd02nzv0sx01jfdabzvnwcc5qjc3810zfglzc1nql";
+    }) ++
+    optional withSidebar (fetchpatch {
+      name = "sidebar.patch";
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/sidebar.patch?h=mutt-sidebar";
+      sha256 = "1l63wj7kw41jrh00mcxdw4p4vrbc9wld42s99liw8kz2aclymq5m";
+    });
 
   meta = {
     description = "A small but very powerful text-based mail client";
diff --git a/pkgs/applications/networking/mailreaders/mutt/sidebar.patch b/pkgs/applications/networking/mailreaders/mutt/sidebar.patch
deleted file mode 100644
index 218de7a0c46..00000000000
--- a/pkgs/applications/networking/mailreaders/mutt/sidebar.patch
+++ /dev/null
@@ -1,4450 +0,0 @@
-diff -urN mutt-1.6.1/buffy.c mutt-1.6.1-sidebar/buffy.c
---- mutt-1.6.1/buffy.c	2016-06-12 18:43:00.397447512 +0100
-+++ mutt-1.6.1-sidebar/buffy.c	2016-06-12 18:43:03.951502935 +0100
-@@ -27,6 +27,10 @@
- 
- #include "mutt_curses.h"
- 
-+#ifdef USE_SIDEBAR
-+#include "sidebar.h"
-+#endif
-+
- #ifdef USE_IMAP
- #include "imap.h"
- #endif
-@@ -196,9 +200,17 @@
- static BUFFY *buffy_new (const char *path)
- {
-   BUFFY* buffy;
-+#ifdef USE_SIDEBAR
-+  char rp[PATH_MAX] = "";
-+  char *r = NULL;
-+#endif
- 
-   buffy = (BUFFY *) safe_calloc (1, sizeof (BUFFY));
-   strfcpy (buffy->path, path, sizeof (buffy->path));
-+#ifdef USE_SIDEBAR
-+  r = realpath (path, rp);
-+  strfcpy (buffy->realpath, r ? rp : path, sizeof (buffy->realpath));
-+#endif
-   buffy->next = NULL;
-   buffy->magic = 0;
- 
-@@ -215,7 +227,10 @@
-   BUFFY **tmp,*tmp1;
-   char buf[_POSIX_PATH_MAX];
-   struct stat sb;
--  char f1[PATH_MAX], f2[PATH_MAX];
-+  char f1[PATH_MAX];
-+#ifndef USE_SIDEBAR
-+  char f2[PATH_MAX];
-+#endif
-   char *p, *q;
- 
-   while (MoreArgs (s))
-@@ -228,6 +243,9 @@
-       for (tmp = &Incoming; *tmp;)
-       {
-         tmp1=(*tmp)->next;
-+#ifdef USE_SIDEBAR
-+	mutt_sb_notify_mailbox (*tmp, 0);
-+#endif
-         buffy_free (tmp);
-         *tmp=tmp1;
-       }
-@@ -243,8 +261,13 @@
-     p = realpath (buf, f1);
-     for (tmp = &Incoming; *tmp; tmp = &((*tmp)->next))
-     {
-+#ifdef USE_SIDEBAR
-+      q = (*tmp)->realpath;
-+      if (mutt_strcmp (p ? p : buf, q) == 0)
-+#else
-       q = realpath ((*tmp)->path, f2);
-       if (mutt_strcmp (p ? p : buf, q ? q : (*tmp)->path) == 0)
-+#endif
-       {
- 	dprint(3,(debugfile,"mailbox '%s' already registered as '%s'\n", buf, (*tmp)->path));
- 	break;
-@@ -256,14 +279,21 @@
-       if(*tmp)
-       {
-         tmp1=(*tmp)->next;
-+#ifdef USE_SIDEBAR
-+	mutt_sb_notify_mailbox (*tmp, 0);
-+#endif
-         buffy_free (tmp);
-         *tmp=tmp1;
-       }
-       continue;
-     }
- 
--    if (!*tmp)
-+    if (!*tmp) {
-       *tmp = buffy_new (buf);
-+#ifdef USE_SIDEBAR
-+      mutt_sb_notify_mailbox (*tmp, 1);
-+#endif
-+    }
- 
-     (*tmp)->new = 0;
-     (*tmp)->notified = 1;
-@@ -306,6 +336,13 @@
-       return 0;
-   }
- 
-+#ifdef USE_SIDEBAR
-+  if (option (OPTSIDEBAR) && mailbox->msg_unread > 0) {
-+    mailbox->new = 1;
-+    return 1;
-+  }
-+#endif
-+
-   if ((dirp = opendir (path)) == NULL)
-   {
-     mailbox->magic = 0;
-@@ -357,6 +394,93 @@
- 
-   return 0;
- }
-+
-+#ifdef USE_SIDEBAR
-+/**
-+ * buffy_maildir_update_dir - Update counts for one directory
-+ * @mailbox: BUFFY representing a maildir mailbox
-+ * @dir:     Which directory to search
-+ *
-+ * Look through one directory of a maildir mailbox.  The directory could
-+ * be either "new" or "cur".
-+ *
-+ * Count how many new, or flagged, messages there are.
-+ */
-+static void
-+buffy_maildir_update_dir (BUFFY *mailbox, const char *dir)
-+{
-+  char path[_POSIX_PATH_MAX] = "";
-+  DIR *dirp = NULL;
-+  struct dirent *de = NULL;
-+  char *p = NULL;
-+  int read;
-+
-+  snprintf (path, sizeof (path), "%s/%s", mailbox->path, dir);
-+
-+  dirp = opendir (path);
-+  if (!dirp)
-+  {
-+    mailbox->magic = 0;
-+    return;
-+  }
-+
-+  while ((de = readdir (dirp)) != NULL)
-+  {
-+    if (*de->d_name == '.')
-+      continue;
-+
-+    /* Matches maildir_parse_flags logic */
-+    read = 0;
-+    mailbox->msg_count++;
-+    p = strstr (de->d_name, ":2,");
-+    if (p)
-+    {
-+      p += 3;
-+      if (strchr (p, 'S'))
-+        read = 1;
-+      if (strchr (p, 'F'))
-+        mailbox->msg_flagged++;
-+    }
-+    if (!read) {
-+      mailbox->msg_unread++;
-+    }
-+  }
-+
-+  closedir (dirp);
-+}
-+
-+/**
-+ * buffy_maildir_update - Update messages counts for a maildir mailbox
-+ * @mailbox: BUFFY representing a maildir mailbox
-+ *
-+ * Open a mailbox directories and update our record of how many new, or
-+ * flagged, messages there are.
-+ */
-+void
-+buffy_maildir_update (BUFFY *mailbox)
-+{
-+	if (!option (OPTSIDEBAR))
-+		return;
-+
-+	mailbox->msg_count   = 0;
-+	mailbox->msg_unread  = 0;
-+	mailbox->msg_flagged = 0;
-+
-+	buffy_maildir_update_dir (mailbox, "new");
-+	if (mailbox->msg_count) {
-+		mailbox->new = 1;
-+	}
-+	buffy_maildir_update_dir (mailbox, "cur");
-+
-+	mailbox->sb_last_checked = time (NULL);
-+
-+	/* make sure the updates are actually put on screen */
-+	if (SidebarWidth)
-+		mutt_sb_draw();
-+}
-+
-+#endif
-+
- /* returns 1 if mailbox has new mail */ 
- static int buffy_mbox_hasnew (BUFFY* mailbox, struct stat *sb)
- {
-@@ -368,7 +491,11 @@
-   else
-     statcheck = sb->st_mtime > sb->st_atime
-       || (mailbox->newly_created && sb->st_ctime == sb->st_mtime && sb->st_ctime == sb->st_atime);
-+#ifdef USE_SIDEBAR
-+  if ((!option (OPTSIDEBAR) && statcheck) || (option (OPTSIDEBAR) && mailbox->msg_unread > 0))
-+#else
-   if (statcheck)
-+#endif
-   {
-     if (!option(OPTMAILCHECKRECENT) || sb->st_mtime > mailbox->last_visited)
-     {
-@@ -388,6 +515,42 @@
-   return rc;
- }
- 
-+#ifdef USE_SIDEBAR
-+/**
-+ * buffy_mbox_update - Update messages counts for an mbox mailbox
-+ * @mailbox: BUFFY representing an mbox mailbox
-+ * @sb:      stat(2) infomation about the mailbox file
-+ *
-+ * Open a mbox file and update our record of how many new, or flagged,
-+ * messages there are. If the mailbox hasn't changed since the last call,
-+ * the function does nothing.
-+ */
-+void
-+buffy_mbox_update (BUFFY *mailbox, struct stat *sb)
-+{
-+  CONTEXT *ctx = NULL;
-+
-+  if (!option (OPTSIDEBAR))
-+    return;
-+  if ((mailbox->sb_last_checked > sb->st_mtime) && (mailbox->msg_count != 0))
-+    return; /* no check necessary */
-+
-+  ctx = mx_open_mailbox (mailbox->path, M_READONLY | M_QUIET | M_NOSORT | M_PEEK, NULL);
-+  if (ctx)
-+  {
-+    mailbox->msg_count       = ctx->msgcount;
-+    mailbox->msg_unread      = ctx->unread;
-+    mailbox->msg_flagged     = ctx->flagged;
-+    mailbox->sb_last_checked = time (NULL);
-+    mx_close_mailbox (ctx, 0);
-+  }
-+
-+  /* make sure the updates are actually put on screen */
-+  if (SidebarWidth)
-+    mutt_sb_draw();
-+}
-+#endif
-+
- int mutt_buffy_check (int force)
- {
-   BUFFY *tmp;
-@@ -461,16 +623,25 @@
-       {
-       case M_MBOX:
-       case M_MMDF:
-+#ifdef USE_SIDEBAR
-+	buffy_mbox_update (tmp, &sb);
-+#endif
- 	if (buffy_mbox_hasnew (tmp, &sb) > 0)
- 	  BuffyCount++;
- 	break;
- 
-       case M_MAILDIR:
-+#ifdef USE_SIDEBAR
-+	buffy_maildir_update (tmp);
-+#endif
- 	if (buffy_maildir_hasnew (tmp) > 0)
- 	  BuffyCount++;
- 	break;
- 
-       case M_MH:
-+#ifdef USE_SIDEBAR
-+	mh_buffy_update (tmp);
-+#endif
- 	mh_buffy(tmp);
- 	if (tmp->new)
- 	  BuffyCount++;
-diff -urN mutt-1.6.1/buffy.h mutt-1.6.1-sidebar/buffy.h
---- mutt-1.6.1/buffy.h	2016-06-12 18:43:00.397447512 +0100
-+++ mutt-1.6.1-sidebar/buffy.h	2016-06-12 18:43:03.951502935 +0100
-@@ -16,6 +16,9 @@
-  *     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
-  */
- 
-+#ifndef _BUFFY_H
-+#define _BUFFY_H
-+
- /*parameter to mutt_parse_mailboxes*/
- #define M_MAILBOXES   1
- #define M_UNMAILBOXES 2 
-@@ -23,13 +26,28 @@
- typedef struct buffy_t
- {
-   char path[_POSIX_PATH_MAX];
-+#ifdef USE_SIDEBAR
-+  char realpath[_POSIX_PATH_MAX];
-+#endif
-   off_t size;
-   struct buffy_t *next;
-+#ifdef USE_SIDEBAR
-+  struct buffy_t *prev;
-+#endif
-   short new;			/* mailbox has new mail */
-+#ifdef USE_SIDEBAR
-+  int msg_count;		/* total number of messages */
-+  int msg_unread;		/* number of unread messages */
-+  int msg_flagged;		/* number of flagged messages */
-+  short is_hidden;		/* is hidden from the sidebar */
-+#endif
-   short notified;		/* user has been notified */
-   short magic;			/* mailbox type */
-   short newly_created;		/* mbox or mmdf just popped into existence */
-   time_t last_visited;		/* time of last exit from this mailbox */
-+#ifdef USE_SIDEBAR
-+  time_t sb_last_checked;	/* time of last buffy check from sidebar */
-+#endif
- }
- BUFFY;
- 
-@@ -49,3 +67,5 @@
- void mutt_buffy_setnotified (const char *path);
- 
- void mh_buffy (BUFFY *);
-+
-+#endif /* _BUFFY_H */
-diff -urN mutt-1.6.1/color.c mutt-1.6.1-sidebar/color.c
---- mutt-1.6.1/color.c	2016-06-12 18:43:00.397447512 +0100
-+++ mutt-1.6.1-sidebar/color.c	2016-06-12 18:43:03.951502935 +0100
-@@ -94,6 +94,14 @@
-   { "underline",	MT_COLOR_UNDERLINE },
-   { "index",		MT_COLOR_INDEX },
-   { "prompt",		MT_COLOR_PROMPT },
-+#ifdef USE_SIDEBAR
-+  { "sidebar_divider",	MT_COLOR_DIVIDER },
-+  { "sidebar_flagged",	MT_COLOR_FLAGGED },
-+  { "sidebar_highlight",MT_COLOR_HIGHLIGHT },
-+  { "sidebar_indicator",MT_COLOR_SB_INDICATOR },
-+  { "sidebar_new",	MT_COLOR_NEW },
-+  { "sidebar_spoolfile",MT_COLOR_SB_SPOOLFILE },
-+#endif
-   { NULL,		0 }
- };
- 
-@@ -146,6 +154,9 @@
-   ColorDefs[MT_COLOR_INDICATOR] = A_REVERSE;
-   ColorDefs[MT_COLOR_SEARCH] = A_REVERSE;
-   ColorDefs[MT_COLOR_MARKERS] = A_REVERSE;
-+#ifdef USE_SIDEBAR
-+  ColorDefs[MT_COLOR_HIGHLIGHT] = A_UNDERLINE;
-+#endif
-   /* special meaning: toggle the relevant attribute */
-   ColorDefs[MT_COLOR_BOLD] = 0;
-   ColorDefs[MT_COLOR_UNDERLINE] = 0;
-diff -urN mutt-1.6.1/compose.c mutt-1.6.1-sidebar/compose.c
---- mutt-1.6.1/compose.c	2016-06-12 18:43:00.398447528 +0100
-+++ mutt-1.6.1-sidebar/compose.c	2016-06-12 18:43:03.952502951 +0100
-@@ -32,6 +32,9 @@
- #include "mailbox.h"
- #include "sort.h"
- #include "charset.h"
-+#ifdef USE_SIDEBAR
-+#include "sidebar.h"
-+#endif
- 
- #ifdef MIXMASTER
- #include "remailer.h"
-@@ -72,7 +75,7 @@
- 
- #define HDR_XOFFSET 10
- #define TITLE_FMT "%10s" /* Used for Prompts, which are ASCII */
--#define W (COLS - HDR_XOFFSET)
-+#define W (COLS - HDR_XOFFSET - SidebarWidth)
- 
- static const char * const Prompts[] =
- {
-@@ -110,7 +113,7 @@
- 
- static void redraw_crypt_lines (HEADER *msg)
- {
--  mvaddstr (HDR_CRYPT, 0, "Security: ");
-+  mvprintw (HDR_CRYPT, SidebarWidth, TITLE_FMT, "Security: ");
- 
-   if ((WithCrypto & (APPLICATION_PGP | APPLICATION_SMIME)) == 0)
-   {
-@@ -145,16 +148,16 @@
-       addstr (_(" (OppEnc mode)"));
- 
-   clrtoeol ();
--  move (HDR_CRYPTINFO, 0);
-+  move (HDR_CRYPTINFO, SidebarWidth);
-   clrtoeol ();
- 
-   if ((WithCrypto & APPLICATION_PGP)
-       && (msg->security & APPLICATION_PGP) && (msg->security & SIGN))
--    printw ("%s%s", _(" sign as: "), PgpSignAs ? PgpSignAs : _("<default>"));
-+    printw (TITLE_FMT "%s", _("sign as: "), PgpSignAs ? PgpSignAs : _("<default>"));
- 
-   if ((WithCrypto & APPLICATION_SMIME)
-       && (msg->security & APPLICATION_SMIME) && (msg->security & SIGN)) {
--      printw ("%s%s", _(" sign as: "), SmimeDefaultKey ? SmimeDefaultKey : _("<default>"));
-+      printw (TITLE_FMT "%s", _("sign as: "), SmimeDefaultKey ? SmimeDefaultKey : _("<default>"));
-   }
- 
-   if ((WithCrypto & APPLICATION_SMIME)
-@@ -162,7 +165,7 @@
-       && (msg->security & ENCRYPT)
-       && SmimeCryptAlg
-       && *SmimeCryptAlg) {
--      mvprintw (HDR_CRYPTINFO, 40, "%s%s", _("Encrypt with: "),
-+      mvprintw (HDR_CRYPTINFO, SidebarWidth + 40, "%s%s", _("Encrypt with: "),
- 		NONULL(SmimeCryptAlg));
-   }
- }
-@@ -175,7 +178,8 @@
-   int c;
-   char *t;
- 
--  mvaddstr (HDR_MIX, 0,     "     Mix: ");
-+  /* L10N: "Mix" refers to the MixMaster chain for anonymous email */
-+  mvprintw (HDR_MIX, SidebarWidth, TITLE_FMT, _("Mix: "));
- 
-   if (!chain)
-   {
-@@ -190,7 +194,7 @@
-     if (t && t[0] == '0' && t[1] == '\0')
-       t = "<random>";
-     
--    if (c + mutt_strlen (t) + 2 >= COLS)
-+    if (c + mutt_strlen (t) + 2 >= COLS - SidebarWidth)
-       break;
- 
-     addstr (NONULL(t));
-@@ -242,20 +246,23 @@
- 
-   buf[0] = 0;
-   rfc822_write_address (buf, sizeof (buf), addr, 1);
--  mvprintw (line, 0, TITLE_FMT, Prompts[line - 1]);
-+  mvprintw (line, SidebarWidth, TITLE_FMT, Prompts[line - 1]);
-   mutt_paddstr (W, buf);
- }
- 
- static void draw_envelope (HEADER *msg, char *fcc)
- {
-+#ifdef USE_SIDEBAR
-+  mutt_sb_draw();
-+#endif
-   draw_envelope_addr (HDR_FROM, msg->env->from);
-   draw_envelope_addr (HDR_TO, msg->env->to);
-   draw_envelope_addr (HDR_CC, msg->env->cc);
-   draw_envelope_addr (HDR_BCC, msg->env->bcc);
--  mvprintw (HDR_SUBJECT, 0, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);
-+  mvprintw (HDR_SUBJECT, SidebarWidth, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);
-   mutt_paddstr (W, NONULL (msg->env->subject));
-   draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to);
--  mvprintw (HDR_FCC, 0, TITLE_FMT, Prompts[HDR_FCC - 1]);
-+  mvprintw (HDR_FCC, SidebarWidth, TITLE_FMT, Prompts[HDR_FCC - 1]);
-   mutt_paddstr (W, fcc);
- 
-   if (WithCrypto)
-@@ -266,7 +273,7 @@
- #endif
- 
-   SETCOLOR (MT_COLOR_STATUS);
--  mvaddstr (HDR_ATTACH - 1, 0, _("-- Attachments"));
-+  mvaddstr (HDR_ATTACH - 1, SidebarWidth, _("-- Attachments"));
-   clrtoeol ();
- 
-   NORMAL_COLOR;
-@@ -302,7 +309,7 @@
-   /* redraw the expanded list so the user can see the result */
-   buf[0] = 0;
-   rfc822_write_address (buf, sizeof (buf), *addr, 1);
--  move (line, HDR_XOFFSET);
-+  move (line, HDR_XOFFSET + SidebarWidth);
-   mutt_paddstr (W, buf);
-   
-   return 0;
-@@ -515,7 +522,7 @@
-   menu->tag = mutt_tag_attach;
-   menu->data = idx;
-   menu->help = mutt_compile_help (helpstr, sizeof (helpstr), MENU_COMPOSE, ComposeHelp);
--  
-+
-   while (loop)
-   {
-     switch (op = mutt_menuLoop (menu))
-@@ -564,7 +571,7 @@
- 	if (mutt_get_field ("Subject: ", buf, sizeof (buf), 0) == 0)
- 	{
- 	  mutt_str_replace (&msg->env->subject, buf);
--	  move (HDR_SUBJECT, HDR_XOFFSET);
-+	  move (HDR_SUBJECT, HDR_XOFFSET + SidebarWidth);
- 	  if (msg->env->subject)
- 	    mutt_paddstr (W, msg->env->subject);
- 	  else
-@@ -582,7 +589,7 @@
- 	{
- 	  strfcpy (fcc, buf, fcclen);
- 	  mutt_pretty_mailbox (fcc, fcclen);
--	  move (HDR_FCC, HDR_XOFFSET);
-+	  move (HDR_FCC, HDR_XOFFSET + SidebarWidth);
- 	  mutt_paddstr (W, fcc);
- 	  fccSet = 1;
- 	}
-diff -urN mutt-1.6.1/configure.ac mutt-1.6.1-sidebar/configure.ac
---- mutt-1.6.1/configure.ac	2016-06-12 18:43:00.398447528 +0100
-+++ mutt-1.6.1-sidebar/configure.ac	2016-06-12 18:43:03.952502951 +0100
-@@ -175,6 +175,14 @@
- 	SMIMEAUX_TARGET="smime_keys"
- fi
- 
-+AC_ARG_ENABLE(sidebar, AC_HELP_STRING([--enable-sidebar], [Enable Sidebar support]),
-+[       if test x$enableval = xyes ; then
-+		AC_DEFINE(USE_SIDEBAR, 1, [Define if you want support for the sidebar.])
-+		OPS="$OPS \$(srcdir)/OPS.SIDEBAR"
-+                MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS sidebar.o"
-+        fi
-+])
-+
- AC_ARG_WITH(mixmaster, AS_HELP_STRING([--with-mixmaster@<:@=PATH@:>@],[Include Mixmaster support]),
-   [if test "$withval" != no
-    then
-diff -urN mutt-1.6.1/copy.c mutt-1.6.1-sidebar/copy.c
---- mutt-1.6.1/copy.c	2016-06-12 18:43:00.398447528 +0100
-+++ mutt-1.6.1-sidebar/copy.c	2016-06-12 18:43:03.952502951 +0100
-@@ -288,7 +288,8 @@
-       if (flags & (CH_DECODE|CH_PREFIX))
-       {
- 	if (mutt_write_one_header (out, 0, headers[x], 
--				   flags & CH_PREFIX ? prefix : 0, mutt_term_width (Wrap), flags) == -1)
-+				   flags & CH_PREFIX ? prefix : 0,
-+                                   mutt_term_width (Wrap), flags) == -1)
- 	{
- 	  error = TRUE;
- 	  break;
-diff -urN mutt-1.6.1/curs_main.c mutt-1.6.1-sidebar/curs_main.c
---- mutt-1.6.1/curs_main.c	2016-06-12 18:43:00.399447544 +0100
-+++ mutt-1.6.1-sidebar/curs_main.c	2016-06-12 18:43:03.953502966 +0100
-@@ -26,8 +26,13 @@
- #include "mailbox.h"
- #include "mapping.h"
- #include "sort.h"
-+#include "buffy.h"
- #include "mx.h"
- 
-+#ifdef USE_SIDEBAR
-+#include "sidebar.h"
-+#endif
-+
- #ifdef USE_POP
- #include "pop.h"
- #endif
-@@ -595,21 +600,39 @@
-        menu->redraw |= REDRAW_STATUS;
-      if (do_buffy_notify)
-      {
--       if (mutt_buffy_notify () && option (OPTBEEPNEW))
-- 	beep ();
-+       if (mutt_buffy_notify())
-+       {
-+         menu->redraw |= REDRAW_STATUS;
-+         if (option (OPTBEEPNEW))
-+           beep();
-+       }
-      }
-      else
-        do_buffy_notify = 1;
-     }
- 
-+#ifdef USE_SIDEBAR
-+    if (option (OPTSIDEBAR))
-+        menu->redraw |= REDRAW_SIDEBAR;
-+#endif
-+
-     if (op != -1)
-       mutt_curs_set (0);
- 
-     if (menu->redraw & REDRAW_FULL)
-     {
-       menu_redraw_full (menu);
-+#ifdef USE_SIDEBAR
-+      mutt_sb_draw();
-+#endif
-       mutt_show_error ();
-     }
-+#ifdef USE_SIDEBAR
-+    else if (menu->redraw & REDRAW_SIDEBAR) {
-+      mutt_sb_draw();
-+      menu->redraw &= ~REDRAW_SIDEBAR;
-+    }
-+#endif
- 
-     if (menu->menu == MENU_MAIN)
-     {
-@@ -630,9 +653,20 @@
- 
-       if (menu->redraw & REDRAW_STATUS)
-       {
-+#ifdef USE_SIDEBAR
-+        /* Temporarily lie about the sidebar width */
-+	short sw = SidebarWidth;
-+	SidebarWidth = 0;
-+#endif
- 	menu_status_line (buf, sizeof (buf), menu, NONULL (Status));
-+#ifdef USE_SIDEBAR
-+        SidebarWidth = sw; /* Restore the sidebar width */
-+#endif
- 	move (option (OPTSTATUSONTOP) ? 0 : LINES-2, 0);
- 	SETCOLOR (MT_COLOR_STATUS);
-+#ifdef USE_SIDEBAR
-+	mutt_sb_set_buffystats (Context);
-+#endif
- 	mutt_paddstr (COLS, buf);
- 	NORMAL_COLOR;
- 	menu->redraw &= ~REDRAW_STATUS;
-@@ -652,7 +686,7 @@
- 	menu->oldcurrent = -1;
- 
-       if (option (OPTARROWCURSOR))
--	move (menu->current - menu->top + menu->offset, 2);
-+	move (menu->current - menu->top + menu->offset, SidebarWidth + 2);
-       else if (option (OPTBRAILLEFRIENDLY))
- 	move (menu->current - menu->top + menu->offset, 0);
-       else
-@@ -1091,6 +1125,9 @@
- 	  break;
- 
- 	CHECK_MSGCOUNT;
-+#ifdef USE_SIDEBAR
-+	CHECK_VISIBLE;
-+#endif
- 	CHECK_READONLY;
- 	{
- 	  int oldvcount = Context->vcount;
-@@ -1150,6 +1187,9 @@
- 	  menu->redraw = REDRAW_FULL;
- 	break;
- 
-+#ifdef USE_SIDEBAR
-+      case OP_SIDEBAR_OPEN:
-+#endif
-       case OP_MAIN_CHANGE_FOLDER:
-       case OP_MAIN_NEXT_UNREAD_MAILBOX:
- 
-@@ -1181,6 +1221,14 @@
- 	{
- 	  mutt_buffy (buf, sizeof (buf));
- 
-+#ifdef USE_SIDEBAR
-+	  if (op == OP_SIDEBAR_OPEN) {
-+	    const char *path = mutt_sb_get_highlight();
-+	    if (!path)
-+	      break;
-+	    strncpy (buf, path, sizeof (buf));
-+	  } else
-+#endif
- 	  if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) == -1)
- 	  {
- 	    if (menu->menu == MENU_PAGER)
-@@ -1199,6 +1247,9 @@
- 	}
- 
- 	mutt_expand_path (buf, sizeof (buf));
-+#ifdef USE_SIDEBAR
-+	mutt_sb_set_open_buffy (buf);
-+#endif
- 	if (mx_get_magic (buf) <= 0)
- 	{
- 	  mutt_error (_("%s is not a mailbox."), buf);
-@@ -2310,6 +2361,21 @@
- 	mutt_what_key();
- 	break;
- 
-+#ifdef USE_SIDEBAR
-+      case OP_SIDEBAR_NEXT:
-+      case OP_SIDEBAR_NEXT_NEW:
-+      case OP_SIDEBAR_PAGE_DOWN:
-+      case OP_SIDEBAR_PAGE_UP:
-+      case OP_SIDEBAR_PREV:
-+      case OP_SIDEBAR_PREV_NEW:
-+        mutt_sb_change_mailbox (op);
-+        break;
-+
-+      case OP_SIDEBAR_TOGGLE_VISIBLE:
-+	toggle_option (OPTSIDEBAR);
-+	menu->redraw = REDRAW_FULL;
-+	break;
-+#endif
-       default:
- 	if (menu->menu == MENU_MAIN)
- 	  km_error_key (MENU_MAIN);
-diff -urN mutt-1.6.1/doc/manual.xml.head mutt-1.6.1-sidebar/doc/manual.xml.head
---- mutt-1.6.1/doc/manual.xml.head	2016-06-12 18:43:00.402447590 +0100
-+++ mutt-1.6.1-sidebar/doc/manual.xml.head	2016-06-12 18:43:03.955502998 +0100
-@@ -405,6 +405,623 @@
- 
- </sect2>
- 
-+<sect2 id="intro-sidebar">
-+	<title>Sidebar</title>
-+	<para>
-+		The Sidebar shows a list of all your mailboxes.  The list can be
-+		turned on and off, it can be themed and the list style can be
-+		configured.
-+	</para>
-+	<para>
-+		This part of the manual is suitable for beginners.
-+		If you already know Mutt you could skip ahead to the main
-+		<link linkend="sidebar">Sidebar guide</link>.
-+		If you just want to get started, you could use the sample
-+		<link linkend="sidebar-muttrc">Sidebar muttrc</link>.
-+	</para>
-+	<para>
-+		This version of Sidebar is based on Terry Chan's
-+		<ulink url="http://www.lunar-linux.org/mutt-sidebar/">2015-11-11 release</ulink>.
-+		It contains many
-+		<emphasis role="bold"><link linkend="intro-sidebar-features">new features</link></emphasis>,
-+		lots of
-+		<emphasis role="bold"><link linkend="intro-sidebar-bugfixes">bugfixes</link></emphasis>
-+		and a generous helping of
-+		<emphasis role="bold">new documentation</emphasis> which you are already reading.
-+	</para>
-+	<para>
-+		To check if Mutt supports <quote>Sidebar</quote>, look for the string
-+		<literal>+USE_SIDEBAR</literal> in the mutt version.
-+	</para>
-+<screen>
-+mutt -v
-+</screen>
-+	<para>
-+		<emphasis role="bold">Let's turn on the Sidebar:</emphasis>
-+	</para>
-+	<screen>set sidebar_visible</screen>
-+	<para>
-+		You will see something like this.
-+		A list of mailboxes on the left.
-+		A list of emails, from the selected mailbox, on the right.
-+	</para>
-+<screen>
-+<emphasis role="indicator">Fruit [1]     3/8</emphasis>|  1    + Jan 24  Rhys Lee         (192)  Yew
-+Animals [1]   2/6|  2    + Feb 11  Grace Hall       (167)  Ilama
-+Cars            4|  3      Feb 23  Aimee Scott      (450)  Nectarine
-+Seas          1/7|  4    ! Feb 28  Summer Jackson   (264)  Lemon
-+                 |  5      Mar 07  Callum Harrison  (464)  Raspberry
-+                 |<emphasis role="indicator">  6 N  + Mar 24  Samuel Harris    (353)  Tangerine          </emphasis>
-+                 |  7 N  + Sep 05  Sofia Graham     (335)  Cherry
-+                 |  8 N    Sep 16  Ewan Brown       (105)  Ugli
-+                 |
-+                 |
-+</screen>
-+<para>
-+	This user has four mailboxes: <quote>Fruit</quote>,
-+	<quote>Cars</quote>, <quote>Animals</quote> and
-+	<quote>Seas</quote>.
-+</para>
-+<para>
-+	The current, open, mailbox is <quote>Fruit</quote>.  We can
-+	also see information about the other mailboxes.  For example:
-+	The <quote>Animals</quote> mailbox contains, 1 flagged email, 2
-+	new emails out of a total of 6 emails.
-+</para>
-+	<sect3 id="intro-sidebar-navigation">
-+		<title>Navigation</title>
-+		<para>
-+			The Sidebar adds some new <link linkend="sidebar-functions">functions</link>
-+			to Mutt.
-+		</para>
-+		<para>
-+			The user pressed the <quote>c</quote> key to
-+			<literal>&lt;change-folder&gt;</literal> to the
-+			<quote>Animals</quote> mailbox.  The Sidebar automatically
-+			updated the indicator to match.
-+		</para>
-+<screen>
-+Fruit [1]     3/8|  1      Jan 03  Tia Gibson       (362)  Caiman
-+<emphasis role="indicator">Animals [1]   2/6</emphasis>|  2    + Jan 22  Rhys Lee         ( 48)  Dolphin
-+Cars            4|  3    ! Aug 16  Ewan Brown       (333)  Hummingbird
-+Seas          1/7|  4      Sep 25  Grace Hall       ( 27)  Capybara
-+                 |<emphasis role="indicator">  5 N  + Nov 12  Evelyn Rogers    (453)  Tapir              </emphasis>
-+                 |  6 N  + Nov 16  Callum Harrison  (498)  Hedgehog
-+                 |
-+                 |
-+                 |
-+                 |
-+</screen>
-+		<para>
-+			Let's map some functions:
-+		</para>
-+<screen>
-+bind index,pager \CP sidebar-prev       <emphasis role="comment"># Ctrl-Shift-P - Previous Mailbox</emphasis>
-+bind index,pager \CN sidebar-next       <emphasis role="comment"># Ctrl-Shift-N - Next Mailbox</emphasis>
-+bind index,pager \CO sidebar-open       <emphasis role="comment"># Ctrl-Shift-O - Open Highlighted Mailbox</emphasis>
-+</screen>
-+		<para>
-+			Press <quote>Ctrl-Shift-N</quote> (Next mailbox) twice will
-+			move the Sidebar <emphasis role="bold">highlight</emphasis> to
-+			down to the <quote>Seas</quote> mailbox.
-+		</para>
-+<screen>
-+Fruit [1]     3/8|  1      Jan 03  Tia Gibson       (362)  Caiman
-+<emphasis role="indicator">Animals [1]   2/6</emphasis>|  2    + Jan 22  Rhys Lee         ( 48)  Dolphin
-+Cars            4|  3    ! Aug 16  Ewan Brown       (333)  Hummingbird
-+<emphasis role="highlight">Seas          1/7</emphasis>|  4      Sep 25  Grace Hall       ( 27)  Capybara
-+                 |<emphasis role="indicator">  5 N  + Nov 12  Evelyn Rogers    (453)  Tapir              </emphasis>
-+                 |  6 N  + Nov 16  Callum Harrison  (498)  Hedgehog
-+                 |
-+                 |
-+                 |
-+                 |
-+</screen>
-+		<note>
-+			Functions <literal>&lt;sidebar-next&gt;</literal> and
-+			<literal>&lt;sidebar-prev&gt;</literal> move the Sidebar
-+			<emphasis role="bold">highlight</emphasis>.
-+			They <emphasis role="bold">do not</emphasis> change the open
-+			mailbox.
-+		</note>
-+		<para>
-+			Press <quote>Ctrl-Shift-O</quote>
-+			(<literal>&lt;sidebar-open&gt;</literal>)
-+			to open the highlighted mailbox.
-+		</para>
-+<screen>
-+Fruit [1]     3/8|  1    ! Mar 07  Finley Jones     (139)  Molucca Sea
-+Animals [1]   2/6|  2    + Mar 24  Summer Jackson   ( 25)  Arafura Sea
-+Cars            4|  3    + Feb 28  Imogen Baker     (193)  Pechora Sea
-+<emphasis role="indicator">Seas          1/7</emphasis>|<emphasis role="indicator">  4 N  + Feb 23  Isla Hussain     (348)  Balearic Sea       </emphasis>
-+                 |
-+                 |
-+                 |
-+                 |
-+                 |
-+                 |
-+</screen>
-+	</sect3>
-+	<sect3 id="intro-sidebar-features">
-+		<title>Features</title>
-+		<para>
-+			The Sidebar shows a list of mailboxes in a panel.
-+		<para>
-+		</para>
-+			Everything about the Sidebar can be configured.
-+		</para>
-+		<itemizedlist>
-+		<title><link linkend="intro-sidebar-basics">State of the Sidebar</link></title>
-+			<listitem><para>Visibility</para></listitem>
-+			<listitem><para>Width</para></listitem>
-+		</itemizedlist>
-+		<itemizedlist>
-+		<title><link linkend="intro-sidebar-limit">Which mailboxes are displayed</link></title>
-+			<listitem><para>Display all</para></listitem>
-+			<listitem><para>Limit to mailboxes with new mail</para></listitem>
-+			<listitem><para>Whitelist mailboxes to display always</para></listitem>
-+		</itemizedlist>
-+		<itemizedlist>
-+		<title><link linkend="sidebar-sort">The order in which mailboxes are displayed</link></title>
-+		<title></title>
-+			<listitem><para>Unsorted (order of mailboxes commands)</para></listitem>
-+			<listitem><para>Sorted alphabetically</para></listitem>
-+			<listitem><para>Sorted by number of new mails</para></listitem>
-+		</itemizedlist>
-+		<itemizedlist>
-+		<title><link linkend="intro-sidebar-colors">Color</link></title>
-+			<listitem><para>Sidebar indicators and divider</para></listitem>
-+			<listitem><para>Mailboxes depending on their type</para></listitem>
-+			<listitem><para>Mailboxes depending on their contents</para></listitem>
-+		</itemizedlist>
-+		<itemizedlist>
-+		<title><link linkend="sidebar-functions">Key bindings</link></title>
-+			<listitem><para>Hide/Unhide the Sidebar</para></listitem>
-+			<listitem><para>Select previous/next mailbox</para></listitem>
-+			<listitem><para>Select previous/next mailbox with new mail</para></listitem>
-+			<listitem><para>Page up/down through a list of mailboxes</para></listitem>
-+		</itemizedlist>
-+		<itemizedlist>
-+		<title>Misc</title>
-+			<listitem><para><link linkend="intro-sidebar-format">Formatting string for mailbox</link></para></listitem>
-+			<listitem><para><link linkend="sidebar-next-new-wrap">Wraparound searching</link></para></listitem>
-+			<listitem><para><link linkend="intro-sidebar-abbrev">Flexible mailbox abbreviations</link></para></listitem>
-+			<listitem><para>Support for Unicode mailbox names (utf-8)</para></listitem>
-+		</itemizedlist>
-+	</sect3>
-+	<sect3 id="intro-sidebar-display">
-+		<title>Display</title>
-+		<para>
-+			Everything about the Sidebar can be configured.
-+		</para>
-+		<itemizedlist>
-+			<title>For a quick reference:</title>
-+			<listitem><para><link linkend="sidebar-variables">Sidebar variables to set</link> </para></listitem>
-+			<listitem><para><link linkend="sidebar-colors">Sidebar colors to apply</link></para></listitem>
-+			<listitem><para><link linkend="sidebar-sort">Sidebar sort methods</link></para></listitem>
-+		</itemizedlist>
-+		<sect4 id="intro-sidebar-basics">
-+			<title>Sidebar Basics</title>
-+			<para>
-+				The most important variable is <literal>$sidebar_visible</literal>.
-+				You can set this in your <quote>muttrc</quote>, or bind a key to the
-+				function <literal>&lt;sidebar-toggle-visible&gt;</literal>.
-+			</para>
-+<screen>
-+set sidebar_visible                         <emphasis role="comment"># Make the Sidebar visible by default</emphasis>
-+bind index,pager B sidebar-toggle-visible   <emphasis role="comment"># Use 'B' to switch the Sidebar on and off</emphasis>
-+</screen>
-+			<para>
-+				Next, decide how wide you want the Sidebar to be.  25
-+				characters might be enough for the mailbox name and some numbers.
-+		Remember, you can hide/show the Sidebar at the press of button.
-+		</para>
-+		<para>
-+		Finally, you might want to change the divider character.
-+		By default, Sidebar draws an ASCII line between it and the Index panel
-+				If your terminal supports it, you can use a Unicode line-drawing character.
-+			</para>
-+<screen>
-+set sidebar_width = 25                  <emphasis role="comment"># Plenty of space</emphasis>
-+set sidebar_divider_char = '│'          <emphasis role="comment"># Pretty line-drawing character</emphasis>
-+</screen>
-+		</sect4>
-+		<sect4 id="intro-sidebar-format">
-+			<title>Sidebar Format String</title>
-+			<para>
-+				<literal>$sidebar_format</literal> allows you to customize the Sidebar display.
-+				For an introduction, read <link linkend="index-format">format strings</link>
-+				including the section about <link linkend="formatstrings-conditionals">conditionals</link>.
-+			</para>
-+			<para>
-+				The default value is <literal>%B%?F? [%F]?%* %?N?%N/?%S</literal>
-+			</para>
-+			<itemizedlist>
-+				<title>Which breaks down as:</title>
-+				<listitem><para><literal>%B</literal> - Mailbox name</para></listitem>
-+				<listitem><para><literal>%?F? [%F]?</literal> - If flagged emails <literal>[%F]</literal>, otherwise nothing</para></listitem>
-+				<listitem><para><literal>%* </literal> - Pad with spaces</para></listitem>
-+				<listitem><para><literal>%?N?%N/?</literal> - If new emails <literal>%N/</literal>, otherwise nothing</para></listitem>
-+				<listitem><para><literal>%S</literal> - Total number of emails</para></listitem>
-+			</itemizedlist>
-+			<table>
-+				<title>sidebar_format</title>
-+				<tgroup cols="3">
-+					<thead>
-+						<row>
-+							<entry>Format</entry>
-+							<entry>Notes</entry>
-+							<entry>Description</entry>
-+						</row>
-+					</thead>
-+					<tbody>
-+						<row>
-+							<entry>%B</entry>
-+							<entry></entry>
-+							<entry>Name of the mailbox</entry>
-+						</row>
-+						<row>
-+							<entry>%S</entry>
-+							<entry>*</entry>
-+							<entry>Size of mailbox (total number of messages)</entry>
-+						</row>
-+						<row>
-+							<entry>%N</entry>
-+							<entry>*</entry>
-+							<entry>Number of New messages in the mailbox</entry>
-+						</row>
-+						<row>
-+							<entry>%F</entry>
-+							<entry>*</entry>
-+							<entry>Number of Flagged messages in the mailbox</entry>
-+						</row>
-+						<row>
-+							<entry>%!</entry>
-+							<entry></entry>
-+							<entry>
-+								<quote>!</quote>: one flagged message;
-+								<quote>!!</quote>: two flagged messages;
-+								<quote>n!</quote>: n flagged messages (for n &gt; 2).
-+								Otherwise prints nothing.
-+							</entry>
-+						</row>
-+						<row>
-+							<entry>%d</entry>
-+							<entry>* ‡</entry>
-+							<entry>Number of deleted messages</entry>
-+						</row>
-+						<row>
-+							<entry>%L</entry>
-+							<entry>* ‡</entry>
-+							<entry>Number of messages after limiting</entry>
-+						</row>
-+						<row>
-+							<entry>%t</entry>
-+							<entry>* ‡</entry>
-+							<entry>Number of tagged messages</entry>
-+						</row>
-+						<row>
-+							<entry>%&gt;X</entry>
-+							<entry></entry>
-+							<entry>Right justify the rest of the string and pad with <quote>X</quote></entry>
-+						</row>
-+						<row>
-+							<entry>%|X</entry>
-+							<entry></entry>
-+							<entry>Pad to the end of the line with
-+							<quote>X</quote></entry>
-+						</row>
-+						<row>
-+							<entry>%*X</entry>
-+							<entry></entry>
-+							<entry>Soft-fill with character <quote>X</quote>as pad</entry>
-+						</row>
-+					</tbody>
-+				</tgroup>
-+			</table>
-+			<para>
-+			* = Can be optionally printed if nonzero
-+			</para>
-+			<para>
-+			‡ = Only applicable to the current folder
-+			</para>
-+			<para>
-+				Here are some examples.
-+				They show the number of (F)lagged, (N)ew and (S)ize.
-+			</para>
-+			<table>
-+				<title>sidebar_format</title>
-+				<tgroup cols="2">
-+					<thead>
-+						<row>
-+							<entry>Format</entry>
-+							<entry>Example</entry>
-+						</row>
-+					</thead>
-+					<tbody>
-+						<row>
-+							<entry><literal>%B%?F? [%F]?%* %?N?%N/?%S</literal></entry>
-+							<entry><screen>mailbox [F]            N/S</screen></entry>
-+						</row>
-+						<row>
-+							<entry><literal>%B%* %F:%N:%S</literal></entry>
-+							<entry><screen>mailbox              F:N:S</screen></entry>
-+						</row>
-+						<row>
-+							<entry><literal>%B %?N?(%N)?%* %S</literal></entry>
-+							<entry><screen>mailbox (N)              S</screen></entry>
-+						</row>
-+						<row>
-+							<entry><literal>%B%* ?F?%F/?%N</literal></entry>
-+							<entry><screen>mailbox                F/S</screen></entry>
-+						</row>
-+					</tbody>
-+				</tgroup>
-+			</table>
-+		</sect4>
-+		<sect4 id="intro-sidebar-abbrev">
-+			<title>Abbreviating Mailbox Names</title>
-+			<para>
-+				<literal>$sidebar_delim_chars</literal> tells Sidebar
-+				how to split up mailbox paths.  For local directories
-+				use <quote>/</quote>; for IMAP folders use <quote>.</quote>
-+			</para>
-+			<sect5 id="intro-sidebar-abbrev-ex1">
-+				<title>Example 1</title>
-+				<para>
-+					This example works well if your mailboxes have unique names
-+					after the last separator.
-+				</para>
-+				<para>
-+					Add some mailboxes of diffent depths.
-+				</para>
-+<screen>
-+set folder="~/mail"
-+mailboxes =fruit/apple          =fruit/banana          =fruit/cherry
-+mailboxes =water/sea/sicily     =water/sea/archipelago =water/sea/sibuyan
-+mailboxes =water/ocean/atlantic =water/ocean/pacific   =water/ocean/arctic
-+</screen>
-+				<para>
-+					Shorten the names:
-+				</para>
-+<screen>
-+set sidebar_short_path                  <emphasis role="comment"># Shorten mailbox names</emphasis>
-+set sidebar_delim_chars="/"             <emphasis role="comment"># Delete everything up to the last / character</emphasis>
-+</screen>
-+				<para>
-+					The screenshot below shows what the Sidebar would look like
-+					before and after shortening.
-+				</para>
-+<screen>
-+|fruit/apple                            |apple
-+|fruit/banana                           |banana
-+|fruit/cherry                           |cherry
-+|water/sea/sicily                       |sicily
-+|water/sea/archipelago                  |archipelago
-+|water/sea/sibuyan                      |sibuyan
-+|water/ocean/atlantic                   |atlantic
-+|water/ocean/pacific                    |pacific
-+|water/ocean/arctic                     |arctic
-+</screen>
-+			</sect5>
-+			<sect5 id="intro-sidebar-abbrev-ex2">
-+				<title>Example 2</title>
-+				<para>
-+					This example works well if you have lots of mailboxes which are arranged
-+					in a tree.
-+				</para>
-+				<para>
-+					Add some mailboxes of diffent depths.
-+				</para>
-+<screen>
-+set folder="~/mail"
-+mailboxes =fruit
-+mailboxes =fruit/apple =fruit/banana =fruit/cherry
-+mailboxes =water
-+mailboxes =water/sea
-+mailboxes =water/sea/sicily =water/sea/archipelago =water/sea/sibuyan
-+mailboxes =water/ocean
-+mailboxes =water/ocean/atlantic =water/ocean/pacific =water/ocean/arctic
-+</screen>
-+				<para>
-+					Shorten the names:
-+				</para>
-+<screen>
-+set sidebar_short_path                  <emphasis role="comment"># Shorten mailbox names</emphasis>
-+set sidebar_delim_chars="/"             <emphasis role="comment"># Delete everything up to the last / character</emphasis>
-+set sidebar_folder_indent               <emphasis role="comment"># Indent folders whose names we've shortened</emphasis>
-+set sidebar_indent_string="  "          <emphasis role="comment"># Indent with two spaces</emphasis>
-+</screen>
-+				<para>
-+					The screenshot below shows what the Sidebar would look like
-+					before and after shortening.
-+				</para>
-+<screen>
-+|fruit                                  |fruit
-+|fruit/apple                            |  apple
-+|fruit/banana                           |  banana
-+|fruit/cherry                           |  cherry
-+|water                                  |water
-+|water/sea                              |  sea
-+|water/sea/sicily                       |    sicily
-+|water/sea/archipelago                  |    archipelago
-+|water/sea/sibuyan                      |    sibuyan
-+|water/ocean                            |  ocean
-+|water/ocean/atlantic                   |    atlantic
-+|water/ocean/pacific                    |    pacific
-+|water/ocean/arctic                     |    arctic
-+</screen>
-+				<para>
-+					Sometimes, it will be necessary to add mailboxes, that you
-+					don't use, to fill in part of the tree.	 This will trade
-+					vertical space for horizonal space (but it looks good).
-+				</para>
-+			</sect5>
-+		</sect4>
-+		<sect4 id="intro-sidebar-limit">
-+			<title>Limiting the Number of Mailboxes</title>
-+			<para>
-+				If you have a lot of mailboxes, sometimes it can be useful to hide
-+				the ones you aren't using.	<literal>$sidebar_new_mail_only</literal>
-+				tells Sidebar to only show mailboxes that contain new, or flagged, email.
-+			</para>
-+			<para>
-+				If you want some mailboxes to be always visible, then use the
-+				<literal>sidebar_whitelist</literal> command.  It takes a list of
-+				mailboxes as parameters.
-+			</para>
-+<screen>
-+set sidebar_new_mail_only               <emphasis role="comment"># Only mailboxes with new/flagged email</emphasis>
-+sidebar_whitelist fruit fruit/apple     <emphasis role="comment"># Always display these two mailboxes</emphasis>
-+</screen>
-+		</sect4>
-+	</sect3>
-+	<sect3 id="intro-sidebar-colors">
-+		<title>Colors</title>
-+		<para>
-+			Here is a sample color scheme:
-+		</para>
-+<screen>
-+color sidebar_indicator default color17         <emphasis role="comment"># Dark blue background</emphasis>
-+color sidebar_highlight white   color238        <emphasis role="comment"># Grey background</emphasis>
-+color sidebar_spoolfile yellow  default         <emphasis role="comment"># Yellow</emphasis>
-+color sidebar_new       green   default         <emphasis role="comment"># Green</emphasis>
-+color sidebar_flagged   red     default         <emphasis role="comment"># Red</emphasis>
-+color sidebar_divider   color8  default         <emphasis role="comment"># Dark grey</emphasis>
-+</screen>
-+		<para>
-+			There is a priority order when coloring Sidebar mailboxes.
-+			e.g.  If a mailbox has new mail it will have the
-+			<literal>sidebar_new</literal> color, even if it also contains
-+			flagged mails.
-+		</para>
-+		<table id="table-intro-sidebar-colors">
-+			<title>Sidebar Color Priority</title>
-+			<tgroup cols="3">
-+				<thead>
-+					<row>
-+						<entry>Priority</entry>
-+						<entry>Color</entry>
-+						<entry>Description</entry>
-+					</row>
-+				</thead>
-+				<tbody>
-+					<row>
-+						<entry>Highest</entry>
-+						<entry><literal>sidebar_indicator</literal></entry>
-+						<entry>Mailbox is open</entry>
-+					</row>
-+					<row>
-+						<entry></entry>
-+						<entry><literal>sidebar_highlight</literal></entry>
-+						<entry>Mailbox is highlighed</entry>
-+					</row>
-+					<row>
-+						<entry></entry>
-+						<entry><literal>sidebar_spoolfile</literal></entry>
-+						<entry>Mailbox is the spoolfile (receives incoming mail)</entry>
-+					</row>
-+					<row>
-+						<entry></entry>
-+						<entry><literal>sidebar_new</literal></entry>
-+						<entry>Mailbox contains new mail</entry>
-+					</row>
-+					<row>
-+						<entry></entry>
-+						<entry><literal>sidebar_flagged</literal></entry>
-+						<entry>Mailbox contains flagged mail</entry>
-+					</row>
-+					<row>
-+						<entry>Lowest</entry>
-+						<entry>(None)</entry>
-+						<entry>Mailbox does not match above</entry>
-+					</row>
-+				</tbody>
-+			</tgroup>
-+		</table>
-+	</sect3>
-+	<sect3 id="intro-sidebar-bugfixes">
-+		<title>Bug-fixes</title>
-+		<para>
-+			If you haven't used Sidebar before, you can ignore this section.
-+		</para>
-+		<para>
-+			These bugs have been fixed since the previous Sidebar release: 2015-11-11.
-+		</para>
-+		<itemizedlist>
-+			<listitem><para>Fix bug when starting in compose mode</para></listitem>
-+			<listitem><para>Fix bug with empty sidebar_divider_char string</para></listitem>
-+			<listitem><para>Fix bug with header wrapping</para></listitem>
-+			<listitem><para>Correctly handle utf8 character sequences</para></listitem>
-+			<listitem><para>Fix a bug in mh_buffy_update</para></listitem>
-+			<listitem><para>Fix refresh -- time overflowed short</para></listitem>
-+			<listitem><para>Protect against empty format strings</para></listitem>
-+			<listitem><para>Limit Sidebar width to COLS</para></listitem>
-+			<listitem><para>Handle unmailboxes * safely</para></listitem>
-+			<listitem><para>Refresh Sidebar after timeout</para></listitem>
-+		</itemizedlist>
-+	</sect3>
-+	<sect3 id="intro-sidebar-config-changes">
-+		<title>Config Changes</title>
-+		<para>
-+			If you haven't used Sidebar before, you can ignore this section.
-+		</para>
-+		<para>
-+			Some of the Sidebar config has been changed to make its meaning clearer.
-+			These changes have been made since the previous Sidebar release: 2015-11-11.
-+		</para>
-+		<table id="table-intro-sidebar-config-changes">
-+			<title>Config Changes</title>
-+			<tgroup cols="2">
-+				<thead>
-+					<row>
-+						<entry>Old Name</entry>
-+						<entry>New Name</entry>
-+					</row>
-+				</thead>
-+				<tbody>
-+					<row>
-+						<entry><literal>$sidebar_delim</literal></entry>
-+						<entry><literal>$sidebar_divider_char</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>$sidebar_folderindent</literal></entry>
-+						<entry><literal>$sidebar_folder_indent</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>$sidebar_indentstr</literal></entry>
-+						<entry><literal>$sidebar_indent_string</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>$sidebar_newmail_only</literal></entry>
-+						<entry><literal>$sidebar_new_mail_only</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>$sidebar_refresh</literal></entry>
-+						<entry><literal>$sidebar_refresh_time</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>$sidebar_shortpath</literal></entry>
-+						<entry><literal>$sidebar_short_path</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>$sidebar_sort</literal></entry>
-+						<entry><literal>$sidebar_sort_method</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>&lt;sidebar-scroll-down&gt;</literal></entry>
-+						<entry><literal>&lt;sidebar-page-down&gt;</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>&lt;sidebar-scroll-up&gt;</literal></entry>
-+						<entry><literal>&lt;sidebar-page-up&gt;</literal></entry>
-+					</row>
-+				</tbody>
-+			</tgroup>
-+		</table>
-+	</sect3>
-+</sect2>
-+
- <sect2 id="intro-help">
- <title>Help</title>
- 
-@@ -6773,6 +7390,17 @@
- </para>
- 
- <para>
-+Mutt will set the <literal>COLUMNS</literal> environment variable to
-+the width of the pager.  Some programs make use of this environment
-+variable automatically.  Others provide a command line argument that
-+can use this to set the output width:
-+</para>
-+
-+<screen>
-+text/html; lynx -dump -width ${COLUMNS:-80} %s; copiousoutput
-+</screen>
-+
-+<para>
- Note that when using the built-in pager, <emphasis>only</emphasis>
- entries with this flag will be considered a handler for a MIME type
- &mdash; all other entries will be ignored.
-@@ -7467,6 +8095,16 @@
- 
- </sect2>
- 
-+<sect2 id="mutt-patches">
-+<title>Mutt Patches</title>
-+<para>
-+Mutt may also be <quote>patched</quote> to support smaller features.
-+These patches should add a free-form string to the end Mutt's version string.
-+Running <literal>mutt -v</literal> might show:
-+<screen>patch-1.6.1.sidebar.20160502</screen>
-+</para>
-+</sect2>
-+
- <sect2 id="url-syntax">
- <title>URL Syntax</title>
- 
-@@ -8081,6 +8719,469 @@
- 
- </sect1>
- 
-+<sect1 id="sidebar">
-+	<title>Sidebar Patch</title>
-+	<subtitle>Overview of mailboxes</subtitle>
-+
-+	<sect2 id="sidebar-patch">
-+		<title>Patch</title>
-+
-+		<para>
-+			To check if Mutt supports <quote>Sidebar</quote>, look for
-+			<quote>+USE_SIDEBAR</quote> in the mutt version.
-+			See: <xref linkend="compile-time-features"/>.
-+		</para>
-+
-+		<itemizedlist>
-+			<title>Dependencies:</title>
-+			<listitem><para>mutt-1.6.1</para></listitem>
-+		</itemizedlist>
-+
-+		<para>This patch is part of the <ulink url="http://www.neomutt.org/">NeoMutt Project</ulink>.</para>
-+	</sect2>
-+
-+	<sect2 id="sidebar-intro">
-+		<title>Introduction</title>
-+
-+		<para>
-+			The Sidebar shows a list of all your mailboxes.  The list can be
-+			turned on and off, it can be themed and the list style can be
-+			configured.
-+		</para>
-+
-+		<para>
-+			This part of the manual is a reference guide.
-+			If you want a simple introduction with examples see the
-+			<link linkend="intro-sidebar">Sidebar Howto</link>.
-+			If you just want to get started, you could use the sample
-+			<link linkend="sidebar-muttrc">Sidebar muttrc</link>.
-+		</para>
-+
-+		<para>
-+			This version of Sidebar is based on Terry Chan's
-+			<ulink url="http://www.lunar-linux.org/mutt-sidebar/">2015-11-11 release</ulink>.
-+			It contains many
-+			<emphasis role="bold"><link linkend="intro-sidebar-features">new features</link></emphasis>,
-+			lots of
-+			<emphasis role="bold"><link linkend="intro-sidebar-bugfixes">bugfixes</link></emphasis>.
-+		</para>
-+	</sect2>
-+
-+	<sect2 id="sidebar-variables">
-+		<title>Variables</title>
-+
-+		<table id="table-sidebar-variables">
-+			<title>Sidebar Variables</title>
-+			<tgroup cols="3">
-+				<thead>
-+					<row>
-+						<entry>Name</entry>
-+						<entry>Type</entry>
-+						<entry>Default</entry>
-+					</row>
-+				</thead>
-+				<tbody>
-+					<row>
-+						<entry><literal>sidebar_delim_chars</literal></entry>
-+						<entry>string</entry>
-+						<entry><literal>/.</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_divider_char</literal></entry>
-+						<entry>string</entry>
-+						<entry><literal>|</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_folder_indent</literal></entry>
-+						<entry>boolean</entry>
-+						<entry><literal>no</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_format</literal></entry>
-+						<entry>string</entry>
-+						<entry><literal>%B%?F? [%F]?%* %?N?%N/?%S</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_indent_string</literal></entry>
-+						<entry>string</entry>
-+						<entry><literal>&nbsp;&nbsp;</literal> (two spaces)</entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_new_mail_only</literal></entry>
-+						<entry>boolean</entry>
-+						<entry><literal>no</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_next_new_wrap</literal></entry>
-+						<entry>boolean</entry>
-+						<entry><literal>no</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_refresh_time</literal></entry>
-+						<entry>number</entry>
-+						<entry><literal>60</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_short_path</literal></entry>
-+						<entry>boolean</entry>
-+						<entry><literal>no</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_sort_method</literal></entry>
-+						<entry>enum</entry>
-+						<entry><literal>SORT_ORDER</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_visible</literal></entry>
-+						<entry>boolean</entry>
-+						<entry><literal>no</literal></entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_whitelist</literal></entry>
-+						<entry>list</entry>
-+						<entry>(empty)</entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_width</literal></entry>
-+						<entry>number</entry>
-+						<entry><literal>20</literal></entry>
-+					</row>
-+				</tbody>
-+			</tgroup>
-+		</table>
-+	</sect2>
-+
-+	<sect2 id="sidebar-functions">
-+		<title>Functions</title>
-+
-+		<para>
-+			Sidebar adds the following functions to Mutt.
-+			By default, none of them are bound to keys.
-+		</para>
-+
-+		<table id="table-sidebar-functions">
-+			<title>Sidebar Functions</title>
-+			<tgroup cols="3">
-+				<thead>
-+					<row>
-+						<entry>Menus</entry>
-+						<entry>Function</entry>
-+						<entry>Description</entry>
-+					</row>
-+				</thead>
-+				<tbody>
-+					<row>
-+						<entry>index,pager</entry>
-+						<entry><literal>&lt;sidebar-next&gt;</literal></entry>
-+						<entry>Move the highlight to next mailbox</entry>
-+					</row>
-+					<row>
-+						<entry>index,pager</entry>
-+						<entry><literal>&lt;sidebar-next-new&gt;</literal></entry>
-+						<entry>Move the highlight to next mailbox with new mail</entry>
-+					</row>
-+					<row>
-+						<entry>index,pager</entry>
-+						<entry><literal>&lt;sidebar-open&gt;</literal></entry>
-+						<entry>Open highlighted mailbox</entry>
-+					</row>
-+					<row>
-+						<entry>index,pager</entry>
-+						<entry><literal>&lt;sidebar-page-down&gt;</literal></entry>
-+						<entry>Scroll the Sidebar down 1 page</entry>
-+					</row>
-+					<row>
-+						<entry>index,pager</entry>
-+						<entry><literal>&lt;sidebar-page-up&gt;</literal></entry>
-+						<entry>Scroll the Sidebar up 1 page</entry>
-+					</row>
-+					<row>
-+						<entry>index,pager</entry>
-+						<entry><literal>&lt;sidebar-prev&gt;</literal></entry>
-+						<entry>Move the highlight to previous mailbox</entry>
-+					</row>
-+					<row>
-+						<entry>index,pager</entry>
-+						<entry><literal>&lt;sidebar-prev-new&gt;</literal></entry>
-+						<entry>Move the highlight to previous mailbox with new mail</entry>
-+					</row>
-+					<row>
-+						<entry>index,pager</entry>
-+						<entry><literal>&lt;sidebar-toggle-visible&gt;</literal></entry>
-+						<entry>Make the Sidebar (in)visible</entry>
-+					</row>
-+				</tbody>
-+			</tgroup>
-+		</table>
-+	</sect2>
-+
-+	<sect2 id="sidebar-commands">
-+		<title>Commands</title>
-+		<cmdsynopsis>
-+			<command>sidebar_whitelist</command>
-+			<arg choice="plain">
-+				<replaceable class="parameter">mailbox</replaceable>
-+			</arg>
-+			<arg choice="opt" rep="repeat">
-+				<replaceable class="parameter">mailbox</replaceable>
-+			</arg>
-+		</cmdsynopsis>
-+	</sect2>
-+
-+	<sect2 id="sidebar-colors">
-+		<title>Colors</title>
-+
-+		<table id="table-sidebar-colors">
-+			<title>Sidebar Colors</title>
-+			<tgroup cols="3">
-+				<thead>
-+					<row>
-+						<entry>Name</entry>
-+						<entry>Default Color</entry>
-+						<entry>Description</entry>
-+					</row>
-+				</thead>
-+				<tbody>
-+					<row>
-+						<entry><literal>sidebar_divider</literal></entry>
-+						<entry>default</entry>
-+						<entry>The dividing line between the Sidebar and the Index/Pager panels</entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_flagged</literal></entry>
-+						<entry>default</entry>
-+						<entry>Mailboxes containing flagged mail</entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_highlight</literal></entry>
-+						<entry>underline</entry>
-+						<entry>Cursor to select a mailbox</entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_indicator</literal></entry>
-+						<entry>mutt <literal>indicator</literal></entry>
-+						<entry>The mailbox open in the Index panel</entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_new</literal></entry>
-+						<entry>default</entry>
-+						<entry>Mailboxes containing new mail</entry>
-+					</row>
-+					<row>
-+						<entry><literal>sidebar_spoolfile</literal></entry>
-+						<entry>default</entry>
-+						<entry>Mailbox that receives incoming mail</entry>
-+					</row>
-+				</tbody>
-+			</tgroup>
-+		</table>
-+
-+		If the <literal>sidebar_indicator</literal> color isn't set, then the default Mutt
-+		indicator color will be used (the color used in the index panel).
-+	</sect2>
-+
-+	<sect2 id="sidebar-sort">
-+		<title>Sort</title>
-+
-+		<table id="table-sidebar-sort">
-+			<title>Sidebar Sort</title>
-+			<tgroup cols="2">
-+				<thead>
-+					<row>
-+						<entry>Sort</entry>
-+						<entry>Description</entry>
-+					</row>
-+				</thead>
-+				<tbody>
-+					<row>
-+						<entry><literal>alpha</literal></entry>
-+						<entry>Alphabetically by path</entry>
-+					</row>
-+					<row>
-+						<entry><literal>count</literal></entry>
-+						<entry>Total number of messages</entry>
-+					</row>
-+					<row>
-+						<entry><literal>flagged</literal></entry>
-+						<entry>Number of flagged messages</entry>
-+					</row>
-+					<row>
-+						<entry><literal>name</literal></entry>
-+						<entry>Alphabetically by path</entry>
-+					</row>
-+					<row>
-+						<entry><literal>new</literal></entry>
-+						<entry>Number of new messages</entry>
-+					</row>
-+					<row>
-+						<entry><literal>path</literal></entry>
-+						<entry>Alphabetically by path</entry>
-+					</row>
-+					<row>
-+						<entry><literal>unsorted</literal></entry>
-+						<entry>Do not resort the paths</entry>
-+					</row>
-+				</tbody>
-+			</tgroup>
-+		</table>
-+	</sect2>
-+
-+	<sect2 id="sidebar-muttrc">
-+		<title>Muttrc</title>
-+<screen>
-+<emphasis role="comment"># This is a complete list of sidebar-related configuration.
-+ 
-+# --------------------------------------------------------------------------
-+# VARIABLES - shown with their default values
-+# --------------------------------------------------------------------------
-+ 
-+# Should the Sidebar be shown?</emphasis>
-+set sidebar_visible = no
-+ 
-+<emphasis role="comment"># How wide should the Sidebar be in screen columns?
-+# Note: Some characters, e.g. Chinese, take up two columns each.</emphasis>
-+set sidebar_width = 20
-+ 
-+<emphasis role="comment"># Should the mailbox paths be abbreviated?</emphasis>
-+set sidebar_short_path = no
-+ 
-+<emphasis role="comment"># When abbreviating mailbox path names, use any of these characters as path
-+# separators.  Only the part after the last separators will be shown.
-+# For file folders '/' is good.  For IMAP folders, often '.' is useful.</emphasis>
-+set sidebar_delim_chars = '/.'
-+ 
-+<emphasis role="comment"># If the mailbox path is abbreviated, should it be indented?</emphasis>
-+set sidebar_folder_indent = no
-+ 
-+<emphasis role="comment"># Indent mailbox paths with this string.</emphasis>
-+set sidebar_indent_string = '  '
-+ 
-+<emphasis role="comment"># Make the Sidebar only display mailboxes that contain new, or flagged,
-+# mail.</emphasis>
-+set sidebar_new_mail_only = no
-+ 
-+<emphasis role="comment"># Any mailboxes that are whitelisted will always be visible, even if the
-+# sidebar_new_mail_only option is enabled.</emphasis>
-+sidebar_whitelist '/home/user/mailbox1'
-+sidebar_whitelist '/home/user/mailbox2'
-+ 
-+<emphasis role="comment"># When searching for mailboxes containing new mail, should the search wrap
-+# around when it reaches the end of the list?</emphasis>
-+set sidebar_next_new_wrap = no
-+ 
-+<emphasis role="comment"># The character to use as the divider between the Sidebar and the other Mutt
-+# panels.
-+# Note: Only the first character of this string is used.</emphasis>
-+set sidebar_divider_char = '|'
-+ 
-+<emphasis role="comment"># Display the Sidebar mailboxes using this format string.</emphasis>
-+set sidebar_format = '%B%?F? [%F]?%* %?N?%N/?%S'
-+ 
-+<emphasis role="comment"># Sidebar will not refresh its list of mailboxes any more frequently than
-+# this number of seconds.  This will help reduce disk/network traffic.</emphasis>
-+set sidebar_refresh_time = 60
-+ 
-+<emphasis role="comment"># Sort the mailboxes in the Sidebar using this method:
-+#       count    - total number of messages
-+#       flagged  - number of flagged messages
-+#       new      - number of new messages
-+#       path     - mailbox path
-+#       unsorted - do not sort the mailboxes</emphasis>
-+set sidebar_sort_method = 'unsorted'
-+ 
-+<emphasis role="comment"># --------------------------------------------------------------------------
-+# FUNCTIONS - shown with an example mapping
-+# --------------------------------------------------------------------------
-+ 
-+# Move the highlight to the previous mailbox</emphasis>
-+bind index,pager \Cp sidebar-prev
-+ 
-+<emphasis role="comment"># Move the highlight to the next mailbox</emphasis>
-+bind index,pager \Cn sidebar-next
-+ 
-+<emphasis role="comment"># Open the highlighted mailbox</emphasis>
-+bind index,pager \Co sidebar-open
-+ 
-+<emphasis role="comment"># Move the highlight to the previous page
-+# This is useful if you have a LOT of mailboxes.</emphasis>
-+bind index,pager &lt;F3&gt; sidebar-page-up
-+ 
-+<emphasis role="comment"># Move the highlight to the next page
-+# This is useful if you have a LOT of mailboxes.</emphasis>
-+bind index,pager &lt;F4&gt; sidebar-page-down
-+ 
-+<emphasis role="comment"># Move the highlight to the previous mailbox containing new, or flagged,
-+# mail.</emphasis>
-+bind index,pager &lt;F5&gt; sidebar-prev-new
-+ 
-+<emphasis role="comment"># Move the highlight to the next mailbox containing new, or flagged, mail.</emphasis>
-+bind index,pager &lt;F6&gt; sidebar-next-new
-+ 
-+<emphasis role="comment"># Toggle the visibility of the Sidebar.</emphasis>
-+bind index,pager B sidebar-toggle-visible
-+ 
-+<emphasis role="comment"># --------------------------------------------------------------------------
-+# COLORS - some unpleasant examples are given
-+# --------------------------------------------------------------------------
-+# Note: All color operations are of the form:
-+#       color OBJECT FOREGROUND BACKGROUND
-+ 
-+# Color of the current, open, mailbox
-+# Note: This is a general Mutt option which colors all selected items.</emphasis>
-+color indicator cyan black
-+ 
-+<emphasis role="comment"># Color of the highlighted, but not open, mailbox.</emphasis>
-+color sidebar_highlight black color8
-+ 
-+<emphasis role="comment"># Color of the divider separating the Sidebar from Mutt panels</emphasis>
-+color sidebar_divider color8 black
-+ 
-+<emphasis role="comment"># Color to give mailboxes containing flagged mail</emphasis>
-+color sidebar_flagged red black
-+ 
-+<emphasis role="comment"># Color to give mailboxes containing new mail</emphasis>
-+color sidebar_new green black
-+ 
-+<emphasis role="comment"># --------------------------------------------------------------------------
-+ 
-+# vim: syntax=muttrc</emphasis>
-+</screen>
-+	</sect2>
-+
-+	<sect2 id="sidebar-see-also">
-+		<title>See Also</title>
-+
-+		<itemizedlist>
-+			<listitem><para><link linkend="regexp">Regular Expressions</link></para></listitem>
-+			<listitem><para><link linkend="patterns">Patterns</link></para></listitem>
-+			<listitem><para><link linkend="color">Color command</link></para></listitem>
-+			<listitem><para><link linkend="notmuch">notmuch patch</link></para></listitem>
-+		</itemizedlist>
-+	</sect2>
-+
-+	<sect2 id="sidebar-known-bugs">
-+		<title>Known Bugs</title>
-+		Unsorted isn't
-+	</sect2>
-+
-+	<sect2 id="sidebar-credits">
-+		<title>Credits</title>
-+		<itemizedlist>
-+		<listitem><para>Justin Hibbits <email>jrh29@po.cwru.edu</email></para></listitem>
-+		<listitem><para>Thomer M. Gil <email>mutt@thomer.com</email></para></listitem>
-+		<listitem><para>David Sterba <email>dsterba@suse.cz</email></para></listitem>
-+		<listitem><para>Evgeni Golov <email>evgeni@debian.org</email></para></listitem>
-+		<listitem><para>Fabian Groffen <email>grobian@gentoo.org</email></para></listitem>
-+		<listitem><para>Jason DeTiberus <email>jdetiber@redhat.com</email></para></listitem>
-+		<listitem><para>Stefan Assmann <email>sassmann@kpanic.de</email></para></listitem>
-+		<listitem><para>Steve Kemp <email>steve@steve.org.uk</email></para></listitem>
-+		<listitem><para>Terry Chan <email>tchan@lunar-linux.org</email></para></listitem>
-+		<listitem><para>Tyler Earnest <email>tylere@rne.st</email></para></listitem>
-+		<listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>
-+		</itemizedlist>
-+	</sect2>
-+</sect1>
-+
- </chapter>
- 
- <chapter id="security">
-@@ -9237,6 +10338,17 @@
- 
- <listitem>
- <cmdsynopsis>
-+<command><link linkend="sidebar-whitelist">sidebar_whitelist</link></command>
-+<arg choice="plain">
-+<replaceable class="parameter">item</replaceable>
-+</arg>
-+<arg choice="plain">
-+<replaceable class="parameter">command</replaceable>
-+</arg>
-+</cmdsynopsis>
-+</listitem>
-+<listitem>
-+<cmdsynopsis>
- <command><link linkend="source">source</link></command>
- <arg choice="plain">
- <replaceable class="parameter">filename</replaceable>
-diff -urN mutt-1.6.1/doc/mutt.css mutt-1.6.1-sidebar/doc/mutt.css
---- mutt-1.6.1/doc/mutt.css	2016-06-12 18:43:00.402447590 +0100
-+++ mutt-1.6.1-sidebar/doc/mutt.css	2016-06-12 18:43:03.811500752 +0100
-@@ -9,17 +9,24 @@
- div.table-contents table th, div.informaltable table th {
-     font-family:sans-serif;
-     background:#d0d0d0;
--    font-weight:normal;
-+    font-weight:bold;
-     vertical-align:top;
- }
--div.cmdsynopsis { border-left:1px solid #707070; padding-left:5px; }
-+div.cmdsynopsis { border-left:1px solid #707070; padding-left: 1em; }
- li div.cmdsynopsis { border-left:none; padding-left:0px; }
--pre.screen, div.note { background:#f0f0f0; border:1px solid #c0c0c0; padding:5px; margin-left:2%; margin-right:2%; }
-+li p { margin: 0; }
-+pre.screen, div.note { border:1px solid #c0c0c0; margin-left:2%; margin-right:2%; }
-+pre.screen { color: #ffffff; background:#000000; padding: 0.5em; }
-+div.note { background:#ffff80; padding: 0.5em; }
- div.example p.title { margin-left:2%; }
- div.note h3 { font-size:small; font-style:italic; font-variant: small-caps; }
- div.note h3:after { content: ":" }
- div.note { margin-bottom: 5px; }
--.command { font-family: monospace; font-weight: normal; }
-+div.literallayout, .command { font-family: monospace; font-weight: normal; }
- .command strong { font-weight: normal; }
- tr { vertical-align: top; }
--.comment { color:#707070; }
-+.comment { color:#00c000; }
-+code.literal { background: #f0f0f0; color: #000000; }
-+span.indicator { background: #000060; color: #ffffff; }
-+span.highlight { background: #404040; color: #ffffff; }
-+span.reverse { background: #ffffff; color: #000000; }
-diff -urN mutt-1.6.1/doc/muttrc.sidebar mutt-1.6.1-sidebar/doc/muttrc.sidebar
---- mutt-1.6.1/doc/muttrc.sidebar	1970-01-01 01:00:00.000000000 +0100
-+++ mutt-1.6.1-sidebar/doc/muttrc.sidebar	2016-06-12 18:43:03.812500768 +0100
-@@ -0,0 +1,116 @@
-+# This is a complete list of sidebar-related configuration.
-+
-+# --------------------------------------------------------------------------
-+# VARIABLES - shown with their default values
-+# --------------------------------------------------------------------------
-+
-+# Should the Sidebar be shown?
-+set sidebar_visible = no
-+
-+# How wide should the Sidebar be in screen columns?
-+# Note: Some characters, e.g. Chinese, take up two columns each.
-+set sidebar_width = 20
-+
-+# Should the mailbox paths be abbreviated?
-+set sidebar_short_path = no
-+
-+# When abbreviating mailbox path names, use any of these characters as path
-+# separators.  Only the part after the last separators will be shown.
-+# For file folders '/' is good.  For IMAP folders, often '.' is useful.
-+set sidebar_delim_chars = '/.'
-+
-+# If the mailbox path is abbreviated, should it be indented?
-+set sidebar_folder_indent = no
-+
-+# Indent mailbox paths with this string.
-+set sidebar_indent_string = '  '
-+
-+# Make the Sidebar only display mailboxes that contain new, or flagged,
-+# mail.
-+set sidebar_new_mail_only = no
-+
-+# Any mailboxes that are whitelisted will always be visible, even if the
-+# sidebar_new_mail_only option is enabled.
-+sidebar_whitelist '/home/user/mailbox1'
-+sidebar_whitelist '/home/user/mailbox2'
-+
-+# When searching for mailboxes containing new mail, should the search wrap
-+# around when it reaches the end of the list?
-+set sidebar_next_new_wrap = no
-+
-+# The character to use as the divider between the Sidebar and the other Mutt
-+# panels.
-+# Note: Only the first character of this string is used.
-+set sidebar_divider_char = '|'
-+
-+# Display the Sidebar mailboxes using this format string.
-+set sidebar_format = '%B%?F? [%F]?%* %?N?%N/?%S'
-+
-+# Sidebar will not refresh its list of mailboxes any more frequently than
-+# this number of seconds.  This will help reduce disk/network traffic.
-+set sidebar_refresh_time = 60
-+
-+# Sort the mailboxes in the Sidebar using this method:
-+#       count    - total number of messages
-+#       flagged  - number of flagged messages
-+#       new      - number of new messages
-+#       path     - mailbox path
-+#       unsorted - do not sort the mailboxes
-+set sidebar_sort_method = 'unsorted'
-+
-+# --------------------------------------------------------------------------
-+# FUNCTIONS - shown with an example mapping
-+# --------------------------------------------------------------------------
-+
-+# Move the highlight to the previous mailbox
-+bind index,pager \Cp sidebar-prev
-+
-+# Move the highlight to the next mailbox
-+bind index,pager \Cn sidebar-next
-+
-+# Open the highlighted mailbox
-+bind index,pager \Co sidebar-open
-+
-+# Move the highlight to the previous page
-+# This is useful if you have a LOT of mailboxes.
-+bind index,pager <F3> sidebar-page-up
-+
-+# Move the highlight to the next page
-+# This is useful if you have a LOT of mailboxes.
-+bind index,pager <F4> sidebar-page-down
-+
-+# Move the highlight to the previous mailbox containing new, or flagged,
-+# mail.
-+bind index,pager <F5> sidebar-prev-new
-+
-+# Move the highlight to the next mailbox containing new, or flagged, mail.
-+bind index,pager <F6> sidebar-next-new
-+
-+# Toggle the visibility of the Sidebar.
-+bind index,pager B sidebar-toggle-visible
-+
-+# --------------------------------------------------------------------------
-+# COLORS - some unpleasant examples are given
-+# --------------------------------------------------------------------------
-+# Note: All color operations are of the form:
-+#       color OBJECT FOREGROUND BACKGROUND
-+
-+# Color of the current, open, mailbox
-+# Note: This is a general Mutt option which colors all selected items.
-+color indicator cyan black
-+
-+# Color of the highlighted, but not open, mailbox.
-+color sidebar_highlight black color8
-+
-+# Color of the divider separating the Sidebar from Mutt panels
-+color sidebar_divider color8 black
-+
-+# Color to give mailboxes containing flagged mail
-+color sidebar_flagged red black
-+
-+# Color to give mailboxes containing new mail
-+color sidebar_new green black
-+
-+# --------------------------------------------------------------------------
-+
-+# vim: syntax=muttrc
-diff -urN mutt-1.6.1/doc/vimrc.sidebar mutt-1.6.1-sidebar/doc/vimrc.sidebar
---- mutt-1.6.1/doc/vimrc.sidebar	1970-01-01 01:00:00.000000000 +0100
-+++ mutt-1.6.1-sidebar/doc/vimrc.sidebar	2016-06-12 18:43:03.813500783 +0100
-@@ -0,0 +1,35 @@
-+" Vim syntax file for the mutt sidebar patch
-+
-+syntax keyword muttrcVarBool    skipwhite contained sidebar_folder_indent nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-+syntax keyword muttrcVarBool    skipwhite contained sidebar_new_mail_only nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-+syntax keyword muttrcVarBool    skipwhite contained sidebar_next_new_wrap nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-+syntax keyword muttrcVarBool    skipwhite contained sidebar_short_path    nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-+syntax keyword muttrcVarBool    skipwhite contained sidebar_visible       nextgroup=muttrcSetBoolAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-+
-+syntax keyword muttrcVarNum     skipwhite contained sidebar_refresh_time  nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-+syntax keyword muttrcVarNum     skipwhite contained sidebar_width         nextgroup=muttrcSetNumAssignment,muttrcVPrefix,muttrcVarBool,muttrcVarQuad,muttrcVarNum,muttrcVarStr
-+
-+syntax keyword muttrcVarStr     contained skipwhite sidebar_divider_char  nextgroup=muttrcVarEqualsIdxFmt
-+syntax keyword muttrcVarStr     contained skipwhite sidebar_delim_chars   nextgroup=muttrcVarEqualsIdxFmt
-+syntax keyword muttrcVarStr     contained skipwhite sidebar_format        nextgroup=muttrcVarEqualsIdxFmt
-+syntax keyword muttrcVarStr     contained skipwhite sidebar_indent_string nextgroup=muttrcVarEqualsIdxFmt
-+syntax keyword muttrcVarStr     contained skipwhite sidebar_sort_method   nextgroup=muttrcVarEqualsIdxFmt
-+
-+syntax keyword muttrcCommand    sidebar_whitelist
-+
-+syntax match muttrcFunction     contained "\<sidebar-next\>"
-+syntax match muttrcFunction     contained "\<sidebar-next-new\>"
-+syntax match muttrcFunction     contained "\<sidebar-open\>"
-+syntax match muttrcFunction     contained "\<sidebar-page-down\>"
-+syntax match muttrcFunction     contained "\<sidebar-page-up\>"
-+syntax match muttrcFunction     contained "\<sidebar-prev\>"
-+syntax match muttrcFunction     contained "\<sidebar-prev-new\>"
-+syntax match muttrcFunction     contained "\<sidebar-toggle-visible\>"
-+
-+syntax keyword muttrcColorField contained sidebar_divider
-+syntax keyword muttrcColorField contained sidebar_flagged
-+syntax keyword muttrcColorField contained sidebar_highlight
-+syntax keyword muttrcColorField contained sidebar_indicator
-+syntax keyword muttrcColorField contained sidebar_new
-+
-+" vim: syntax=vim
-diff -urN mutt-1.6.1/filter.c mutt-1.6.1-sidebar/filter.c
---- mutt-1.6.1/filter.c	2016-06-12 18:43:00.403447606 +0100
-+++ mutt-1.6.1-sidebar/filter.c	2016-06-12 18:43:03.835501127 +0100
-@@ -21,6 +21,7 @@
- #endif
- 
- #include "mutt.h"
-+#include "mutt_curses.h"
- 
- #include <unistd.h>
- #include <stdlib.h>
-@@ -34,6 +35,7 @@
- 		       int fdin, int fdout, int fderr)
- {
-   int pin[2], pout[2], perr[2], thepid;
-+  char columns[11];
- 
-   if (in)
-   {
-@@ -117,6 +119,9 @@
-       close (fderr);
-     }
- 
-+    snprintf (columns, sizeof (columns), "%d", COLS - SidebarWidth);
-+    setenv ("COLUMNS", columns, 1);
-+
-     execl (EXECSHELL, "sh", "-c", cmd, NULL);
-     _exit (127);
-   }
-diff -urN mutt-1.6.1/flags.c mutt-1.6.1-sidebar/flags.c
---- mutt-1.6.1/flags.c	2016-06-12 18:43:00.403447606 +0100
-+++ mutt-1.6.1-sidebar/flags.c	2016-06-12 18:43:03.956503013 +0100
-@@ -25,6 +25,10 @@
- #include "sort.h"
- #include "mx.h"
- 
-+#ifdef USE_SIDEBAR
-+#include "sidebar.h"
-+#endif
-+
- void _mutt_set_flag (CONTEXT *ctx, HEADER *h, int flag, int bf, int upd_ctx)
- {
-   int changed = h->changed;
-@@ -263,6 +267,9 @@
-    */
-   if (h->searched && (changed != h->changed || deleted != ctx->deleted || tagged != ctx->tagged || flagged != ctx->flagged))
-     h->searched = 0;
-+#ifdef USE_SIDEBAR
-+  mutt_sb_draw();
-+#endif
- }
- 
- void mutt_tag_set_flag (int flag, int bf)
-diff -urN mutt-1.6.1/functions.h mutt-1.6.1-sidebar/functions.h
---- mutt-1.6.1/functions.h	2016-06-12 18:43:00.403447606 +0100
-+++ mutt-1.6.1-sidebar/functions.h	2016-06-12 18:43:03.956503013 +0100
-@@ -168,6 +168,16 @@
-   { "decrypt-copy",		OP_DECRYPT_COPY,		NULL },
-   { "decrypt-save",		OP_DECRYPT_SAVE,		NULL },
- 
-+#ifdef USE_SIDEBAR
-+  { "sidebar-next",		OP_SIDEBAR_NEXT,		NULL },
-+  { "sidebar-next-new",		OP_SIDEBAR_NEXT_NEW,		NULL },
-+  { "sidebar-open",		OP_SIDEBAR_OPEN,		NULL },
-+  { "sidebar-page-down",	OP_SIDEBAR_PAGE_DOWN,		NULL },
-+  { "sidebar-page-up",		OP_SIDEBAR_PAGE_UP,		NULL },
-+  { "sidebar-prev",		OP_SIDEBAR_PREV,		NULL },
-+  { "sidebar-prev-new",		OP_SIDEBAR_PREV_NEW,		NULL },
-+  { "sidebar-toggle-visible",	OP_SIDEBAR_TOGGLE_VISIBLE,	NULL },
-+#endif
- 
-   { NULL,			0,				NULL }
- };
-@@ -272,6 +282,17 @@
- 
-   { "what-key",		OP_WHAT_KEY,		NULL },
- 
-+#ifdef USE_SIDEBAR
-+  { "sidebar-next",		OP_SIDEBAR_NEXT,		NULL },
-+  { "sidebar-next-new",		OP_SIDEBAR_NEXT_NEW,		NULL },
-+  { "sidebar-open",		OP_SIDEBAR_OPEN,		NULL },
-+  { "sidebar-page-down",	OP_SIDEBAR_PAGE_DOWN,		NULL },
-+  { "sidebar-page-up",		OP_SIDEBAR_PAGE_UP,		NULL },
-+  { "sidebar-prev",		OP_SIDEBAR_PREV,		NULL },
-+  { "sidebar-prev-new",		OP_SIDEBAR_PREV_NEW,		NULL },
-+  { "sidebar-toggle-visible",	OP_SIDEBAR_TOGGLE_VISIBLE,	NULL },
-+#endif
-+
-   { NULL,		0,				NULL }
- };
- 
-diff -urN mutt-1.6.1/globals.h mutt-1.6.1-sidebar/globals.h
---- mutt-1.6.1/globals.h	2016-06-12 18:43:00.403447606 +0100
-+++ mutt-1.6.1-sidebar/globals.h	2016-06-12 18:43:03.956503013 +0100
-@@ -118,6 +118,12 @@
- WHERE char *SendCharset;
- WHERE char *Sendmail;
- WHERE char *Shell;
-+#ifdef USE_SIDEBAR
-+WHERE char *SidebarDelimChars;
-+WHERE char *SidebarDividerChar;
-+WHERE char *SidebarFormat;
-+WHERE char *SidebarIndentString;
-+#endif
- WHERE char *Signature;
- WHERE char *SimpleSearch;
- #if USE_SMTP
-@@ -214,6 +220,14 @@
- WHERE short ScoreThresholdRead;
- WHERE short ScoreThresholdFlag;
- 
-+/* This isn't excluded from the build because it's too entwined in the code.
-+ * For now. */
-+WHERE short SidebarWidth;
-+#ifdef USE_SIDEBAR
-+WHERE short SidebarRefreshTime;
-+WHERE LIST *SidebarWhitelist INITVAL(0);
-+#endif
-+
- #ifdef USE_IMAP
- WHERE short ImapKeepalive;
- WHERE short ImapPipelineDepth;
-diff -urN mutt-1.6.1/imap/command.c mutt-1.6.1-sidebar/imap/command.c
---- mutt-1.6.1/imap/command.c	2016-06-12 18:43:00.405447637 +0100
-+++ mutt-1.6.1-sidebar/imap/command.c	2016-06-12 18:43:03.839501189 +0100
-@@ -1016,6 +1016,14 @@
- 	     opened */
- 	  status->uidnext = oldun;
- 
-+#ifdef USE_SIDEBAR
-+	/* Make the sidebar show the correct numbers */
-+	if (status->messages) {
-+	  inc->msg_count  = status->messages;
-+	  inc->msg_unread = status->unseen;
-+	}
-+#endif
-+
-         FREE (&value);
-         return;
-       }
-diff -urN mutt-1.6.1/imap/imap.c mutt-1.6.1-sidebar/imap/imap.c
---- mutt-1.6.1/imap/imap.c	2016-06-12 18:43:00.405447637 +0100
-+++ mutt-1.6.1-sidebar/imap/imap.c	2016-06-12 18:43:03.958503044 +0100
-@@ -1535,7 +1535,11 @@
- 
-     imap_munge_mbox_name (idata, munged, sizeof (munged), name);
-     snprintf (command, sizeof (command),
-+#ifdef USE_SIDEBAR
-+	      "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT MESSAGES)", munged);
-+#else
- 	      "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT)", munged);
-+#endif
- 
-     if (imap_exec (idata, command, IMAP_CMD_QUEUE) < 0)
-     {
-diff -urN mutt-1.6.1/init.c mutt-1.6.1-sidebar/init.c
---- mutt-1.6.1/init.c	2016-06-12 18:43:00.406447652 +0100
-+++ mutt-1.6.1-sidebar/init.c	2016-06-12 18:43:03.959503060 +0100
-@@ -2173,6 +2173,9 @@
- 	case DT_SORT_AUX:
- 	  map = SortAuxMethods;
- 	  break;
-+	case DT_SORT_SIDEBAR:
-+	  map = SortSidebarMethods;
-+	  break;
- 	default:
- 	  map = SortMethods;
- 	  break;
-diff -urN mutt-1.6.1/init.h mutt-1.6.1-sidebar/init.h
---- mutt-1.6.1/init.h	2016-06-12 18:43:00.408447684 +0100
-+++ mutt-1.6.1-sidebar/init.h	2016-06-12 18:43:03.960503075 +0100
-@@ -42,11 +42,12 @@
- #define DTYPE(x) ((x) & DT_MASK)
- 
- /* subtypes */
--#define DT_SUBTYPE_MASK	0xf0
-+#define DT_SUBTYPE_MASK	0xff0
- #define DT_SORT_ALIAS	0x10
- #define DT_SORT_BROWSER 0x20
- #define DT_SORT_KEYS	0x40
- #define DT_SORT_AUX	0x80
-+#define DT_SORT_SIDEBAR	0x100
- 
- /* flags to parse_set() */
- #define M_SET_INV	(1<<0)	/* default is to invert all vars */
-@@ -2665,6 +2666,147 @@
-   ** Command to use when spawning a subshell.  By default, the user's login
-   ** shell from \fC/etc/passwd\fP is used.
-   */
-+#ifdef USE_SIDEBAR
-+  { "sidebar_divider_char", DT_STR, R_BOTH, UL &SidebarDividerChar, UL "|" },
-+  /*
-+  ** .pp
-+  ** This specifies the characters to be drawn between the sidebar (when
-+  ** visible) and the other Mutt panels. ASCII and Unicode line-drawing
-+  ** characters are supported.
-+  */
-+  { "sidebar_delim_chars", DT_STR, R_NONE, UL &SidebarDelimChars, UL "/." },
-+  /*
-+  ** .pp
-+  ** This contains the list of characters which you would like to treat
-+  ** as folder separators for displaying paths in the sidebar.
-+  ** .pp
-+  ** Local mail is often arranged in directories: `dir1/dir2/mailbox'.
-+  ** .ts
-+  ** set sidebar_delim_chars='/'
-+  ** .te
-+  ** .pp
-+  ** IMAP mailboxes are often named: `folder1.folder2.mailbox'.
-+  ** .ts
-+  ** set sidebar_delim_chars='.'
-+  ** .te
-+  ** .pp
-+  ** \fBSee also:\fP $$sidebar_short_path, $$sidebar_folder_indent, $$sidebar_indent_string.
-+  */
-+  { "sidebar_folder_indent", DT_BOOL, R_BOTH, OPTSIDEBARFOLDERINDENT, 0 },
-+  /*
-+  ** .pp
-+  ** Set this to indent mailboxes in the sidebar.
-+  ** .pp
-+  ** \fBSee also:\fP $$sidebar_short_path, $$sidebar_indent_string, $$sidebar_delim_chars.
-+  */
-+  { "sidebar_format", DT_STR, R_NONE, UL &SidebarFormat, UL "%B%?F? [%F]?%* %?N?%N/?%S" },
-+  /*
-+  ** .pp
-+  ** This variable allows you to customize the sidebar display. This string is
-+  ** similar to $$index_format, but has its own set of \fCprintf(3)\fP-like
-+  ** sequences:
-+  ** .dl
-+  ** .dt %B  .dd Name of the mailbox
-+  ** .dt %S  .dd * Size of mailbox (total number of messages)
-+  ** .dt %N  .dd * Number of New messages in the mailbox
-+  ** .dt %F  .dd * Number of Flagged messages in the mailbox
-+  ** .dt %!  .dd ``!'' : one flagged message;
-+  **             ``!!'' : two flagged messages;
-+  **             ``n!'' : n flagged messages (for n > 2).
-+  **             Otherwise prints nothing.
-+  ** .dt %d  .dd * @ Number of deleted messages
-+  ** .dt %L  .dd * @ Number of messages after limiting
-+  ** .dt %t  .dd * @ Number of tagged messages
-+  ** .dt %>X .dd right justify the rest of the string and pad with ``X''
-+  ** .dt %|X .dd pad to the end of the line with ``X''
-+  ** .dt %*X .dd soft-fill with character ``X'' as pad
-+  ** .de
-+  ** .pp
-+  ** * = Can be optionally printed if nonzero
-+  ** @ = Only applicable to the current folder
-+  */
-+  { "sidebar_indent_string", DT_STR, R_BOTH, UL &SidebarIndentString, UL "  " },
-+  /*
-+  ** .pp
-+  ** This specifies the string that is used to indent mailboxes in the sidebar.
-+  ** It defaults to two spaces.
-+  ** .pp
-+  ** \fBSee also:\fP $$sidebar_short_path, $$sidebar_folder_indent, $$sidebar_delim_chars.
-+  */
-+  { "sidebar_new_mail_only", DT_BOOL, R_BOTH, OPTSIDEBARNEWMAILONLY, 0 },
-+  /*
-+  ** .pp
-+  ** When set, the sidebar will only display mailboxes containing new, or
-+  ** flagged, mail.
-+  ** .pp
-+  ** \fBSee also:\fP $sidebar_whitelist.
-+  */
-+  { "sidebar_next_new_wrap", DT_BOOL, R_BOTH, UL OPTSIDEBARNEXTNEWWRAP, 0 },
-+  /*
-+  ** .pp
-+  ** When set, the \fC<sidebar-next-new>\fP command will not stop and the end of
-+  ** the list of mailboxes, but wrap around to the beginning. The
-+  ** \fC<sidebar-prev-new>\fP command is similarly affected, wrapping around to
-+  ** the end of the list.
-+  */
-+  { "sidebar_refresh_time", DT_NUM, R_BOTH, UL &SidebarRefreshTime, 60 },
-+  /*
-+  ** .pp
-+  ** Set sidebar_refresh_time to the minimum number of seconds between refreshes.
-+  ** This will reduce network traffic.
-+  ** .pp
-+  ** \fBNote:\fP Set to 0 to disable refreshing.
-+  */
-+  { "sidebar_short_path", DT_BOOL, R_BOTH, OPTSIDEBARSHORTPATH, 0 },
-+  /*
-+  ** .pp
-+  ** By default the sidebar will show the mailbox's path, relative to the
-+  ** $$folder variable. Setting \fCsidebar_shortpath=yes\fP will shorten the
-+  ** names relative to the previous name. Here's an example:
-+  ** .dl
-+  ** .dt \fBshortpath=no\fP .dd \fBshortpath=yes\fP .dd \fBshortpath=yes, folderindent=yes, indentstr=".."\fP
-+  ** .dt \fCfruit\fP        .dd \fCfruit\fP         .dd \fCfruit\fP
-+  ** .dt \fCfruit.apple\fP  .dd \fCapple\fP         .dd \fC..apple\fP
-+  ** .dt \fCfruit.banana\fP .dd \fCbanana\fP        .dd \fC..banana\fP
-+  ** .dt \fCfruit.cherry\fP .dd \fCcherry\fP        .dd \fC..cherry\fP
-+  ** .de
-+  ** .pp
-+  ** \fBSee also:\fP $$sidebar_delim_chars, $$sidebar_folder_indent, $$sidebar_indent_string.
-+  */
-+  { "sidebar_sort_method", DT_SORT|DT_SORT_SIDEBAR, R_NONE, UL &SidebarSortMethod, SORT_ORDER },
-+  /*
-+  ** .pp
-+  ** Specifies how to sort entries in the file browser.  By default, the
-+  ** entries are sorted alphabetically.  Valid values:
-+  ** .il
-+  ** .dd alpha (alphabetically)
-+  ** .dd count (all message count)
-+  ** .dd date
-+  ** .dd desc (description)
-+  ** .dd new (new message count)
-+  ** .dd size
-+  ** .dd unsorted
-+  ** .ie
-+  ** .pp
-+  ** You may optionally use the ``reverse-'' prefix to specify reverse sorting
-+  ** order (example: ``\fCset sort_browser=reverse-date\fP'').
-+  */
-+  { "sidebar_visible", DT_BOOL, R_BOTH, OPTSIDEBAR, 0 },
-+  /*
-+  ** .pp
-+  ** This specifies whether or not to show sidebar. The sidebar shows a list of
-+  ** all your mailboxes.
-+  ** .pp
-+  ** \fBSee also:\fP $$sidebar_format, $$sidebar_width
-+  */
-+  { "sidebar_width", DT_NUM, R_BOTH, UL &SidebarWidth, 0 },
-+  /*
-+  ** .pp
-+  ** This controls the width of the sidebar.  It is measured in screen columns.
-+  ** For example: sidebar_width=20 could display 20 ASCII characters, or 10
-+  ** Chinese characters.
-+  */
-+#endif
-   { "sig_dashes",	DT_BOOL, R_NONE, OPTSIGDASHES, 1 },
-   /*
-   ** .pp
-@@ -3652,6 +3794,19 @@
-   { NULL,       0 }
- };
- 
-+const struct mapping_t SortSidebarMethods[] = {
-+  { "alpha",		SORT_PATH },
-+  { "count",		SORT_COUNT },
-+  { "desc",		SORT_DESC },
-+  { "flagged",		SORT_FLAGGED },
-+  { "mailbox-order",	SORT_ORDER },
-+  { "name",		SORT_PATH },
-+  { "new",		SORT_COUNT_NEW },
-+  { "path",		SORT_PATH },
-+  { "unsorted",		SORT_ORDER },
-+  { NULL,		0 }
-+};
-+
- 
- /* functions used to parse commands in a rc file */
- 
-@@ -3741,6 +3896,9 @@
-   { "send-hook",	mutt_parse_hook,	M_SENDHOOK },
-   { "send2-hook",	mutt_parse_hook,	M_SEND2HOOK },
-   { "set",		parse_set,		0 },
-+#ifdef USE_SIDEBAR
-+  { "sidebar_whitelist",parse_list,		UL &SidebarWhitelist },
-+#endif
-   { "source",		parse_source,		0 },
-   { "spam",		parse_spam_list,	M_SPAM },
-   { "nospam",		parse_spam_list,	M_NOSPAM },
-diff -urN mutt-1.6.1/keymap.c mutt-1.6.1-sidebar/keymap.c
---- mutt-1.6.1/keymap.c	2016-06-12 18:43:00.408447684 +0100
-+++ mutt-1.6.1-sidebar/keymap.c	2016-06-12 18:43:03.960503075 +0100
-@@ -453,6 +453,9 @@
-     }
- #endif
- 
-+    /* update sidebar stats */
-+    mutt_buffy_check(0);
-+
-     timeout (i * 1000);
-     tmp = mutt_getch();
-     timeout (-1);
-diff -urN mutt-1.6.1/mailbox.h mutt-1.6.1-sidebar/mailbox.h
---- mutt-1.6.1/mailbox.h	2016-06-12 18:43:00.408447684 +0100
-+++ mutt-1.6.1-sidebar/mailbox.h	2016-06-12 18:43:03.960503075 +0100
-@@ -27,6 +27,9 @@
- #define M_NEWFOLDER	(1<<4) /* create a new folder - same as M_APPEND, but uses
- 				* safe_fopen() for mbox-style folders.
- 				*/
-+#ifdef USE_SIDEBAR
-+#define M_PEEK		(1<<5) /* revert atime back after taking a look (if applicable) */
-+#endif
- 
- /* mx_open_new_message() */
- #define M_ADD_FROM	(1<<0)	/* add a From_ line */
-diff -urN mutt-1.6.1/main.c mutt-1.6.1-sidebar/main.c
---- mutt-1.6.1/main.c	2016-06-12 18:43:00.409447699 +0100
-+++ mutt-1.6.1-sidebar/main.c	2016-06-12 18:43:03.961503091 +0100
-@@ -31,6 +31,9 @@
- #include "url.h"
- #include "mutt_crypt.h"
- #include "mutt_idna.h"
-+#ifdef USE_SIDEBAR
-+#include "sidebar.h"
-+#endif
- 
- #ifdef USE_SASL
- #include "mutt_sasl.h"
-@@ -485,6 +488,12 @@
- 	"-USE_HCACHE  "
- #endif
- 
-+#ifdef USE_SIDEBAR
-+	"+USE_SIDEBAR  "
-+#else
-+	"-USE_SIDEBAR  "
-+#endif
-+
- 	);
- 
- #ifdef ISPELL
-@@ -557,7 +566,11 @@
- 
- int main (int argc, char **argv)
- {
-+#ifdef USE_SIDEBAR
-+  char folder[PATH_MAX] = "";
-+#else
-   char folder[_POSIX_PATH_MAX] = "";
-+#endif
-   char *subject = NULL;
-   char *includeFile = NULL;
-   char *draftFile = NULL;
-@@ -828,6 +841,9 @@
-     clear ();
-     mutt_error = mutt_curses_error;
-     mutt_message = mutt_curses_message;
-+#ifdef USE_SIDEBAR
-+    mutt_sb_init();
-+#endif
-   }
- 
-   /* Create the Maildir directory if it doesn't exist. */
-@@ -1184,6 +1200,15 @@
-       strfcpy (folder, NONULL(Spoolfile), sizeof (folder));
-     mutt_expand_path (folder, sizeof (folder));
- 
-+#ifdef USE_SIDEBAR
-+    {
-+      char tmpfolder[PATH_MAX] = "";
-+      strfcpy (tmpfolder, folder, sizeof (tmpfolder));
-+      if (!realpath (tmpfolder, folder))
-+        strfcpy (folder, tmpfolder, sizeof (tmpfolder));
-+    }
-+#endif
-+
-     mutt_str_replace (&CurrentFolder, folder);
-     mutt_str_replace (&LastFolder, folder);
- 
-@@ -1206,6 +1231,9 @@
-     if((Context = mx_open_mailbox (folder, ((flags & M_RO) || option (OPTREADONLY)) ? M_READONLY : 0, NULL))
-        || !explicit_folder)
-     {
-+#ifdef USE_SIDEBAR
-+      mutt_sb_set_open_buffy (folder);
-+#endif
-       mutt_index_menu ();
-       if (Context)
- 	FREE (&Context);
-diff -urN mutt-1.6.1/Makefile.am mutt-1.6.1-sidebar/Makefile.am
---- mutt-1.6.1/Makefile.am	2016-06-12 18:43:00.389447388 +0100
-+++ mutt-1.6.1-sidebar/Makefile.am	2016-06-12 18:43:03.944502826 +0100
-@@ -56,7 +56,7 @@
- 	mutt_idna.c mutt_sasl.c mutt_socket.c mutt_ssl.c mutt_ssl_gnutls.c \
- 	mutt_tunnel.c pgp.c pgpinvoke.c pgpkey.c pgplib.c pgpmicalg.c \
- 	pgppacket.c pop.c pop_auth.c pop_lib.c remailer.c resize.c sha1.c \
--	smime.c smtp.c utf8.c wcwidth.c \
-+	sidebar.c smime.c smtp.c utf8.c wcwidth.c \
- 	bcache.h browser.h hcache.h mbyte.h mutt_idna.h remailer.h url.h
- 
- EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO UPDATING \
-@@ -71,7 +71,7 @@
- 	mbyte.h lib.h extlib.c pgpewrap.c smime_keys.pl pgplib.h \
- 	README.SSL smime.h group.h \
- 	muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \
--	ChangeLog mkchangelog.sh mutt_idna.h \
-+	ChangeLog mkchangelog.sh mutt_idna.h sidebar.h OPS.sidebar \
- 	snprintf.c regex.c crypt-gpgme.h hcachever.sh.in sys_socket.h \
- 	txt2c.c txt2c.sh version.sh check_sec.sh
- 
-@@ -129,9 +129,9 @@
- keymap_defs.h: $(OPS) $(srcdir)/gen_defs
- 	$(srcdir)/gen_defs $(OPS) > keymap_defs.h
- 
--keymap_alldefs.h: $(srcdir)/OPS $(srcdir)/OPS.PGP $(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME $(srcdir)/gen_defs
-+keymap_alldefs.h: $(srcdir)/OPS $(srcdir)/OPS.SIDEBAR $(srcdir)/OPS.PGP $(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME $(srcdir)/gen_defs
- 	rm -f $@
--	$(srcdir)/gen_defs $(srcdir)/OPS $(srcdir)/OPS.PGP \
-+	$(srcdir)/gen_defs $(srcdir)/OPS $(srcdir)/OPS.SIDEBAR $(srcdir)/OPS.PGP \
- 		$(srcdir)/OPS.MIX $(srcdir)/OPS.CRYPT $(srcdir)/OPS.SMIME \
- 			> keymap_alldefs.h
- 
-diff -urN mutt-1.6.1/mbox.c mutt-1.6.1-sidebar/mbox.c
---- mutt-1.6.1/mbox.c	2016-06-12 18:43:00.409447699 +0100
-+++ mutt-1.6.1-sidebar/mbox.c	2016-06-12 18:43:03.961503091 +0100
-@@ -100,6 +100,9 @@
-     mutt_perror (ctx->path);
-     return (-1);
-   }
-+#ifdef USE_SIDEBAR
-+  ctx->atime = sb.st_atime;
-+#endif
-   ctx->mtime = sb.st_mtime;
-   ctx->size = sb.st_size;
- 
-@@ -251,6 +254,9 @@
- 
-   ctx->size = sb.st_size;
-   ctx->mtime = sb.st_mtime;
-+#ifdef USE_SIDEBAR
-+  ctx->atime = sb.st_atime;
-+#endif
- 
- #ifdef NFS_ATTRIBUTE_HACK
-   if (sb.st_mtime > sb.st_atime)
-diff -urN mutt-1.6.1/menu.c mutt-1.6.1-sidebar/menu.c
---- mutt-1.6.1/menu.c	2016-06-12 18:43:00.409447699 +0100
-+++ mutt-1.6.1-sidebar/menu.c	2016-06-12 18:43:03.961503091 +0100
-@@ -24,6 +24,9 @@
- #include "mutt_curses.h"
- #include "mutt_menu.h"
- #include "mbyte.h"
-+#ifdef USE_SIDEBAR
-+#include "sidebar.h"
-+#endif
- 
- char* SearchBuffers[MENU_MAX];
- 
-@@ -184,7 +187,7 @@
- {
-   char *scratch = safe_strdup (s);
-   int shift = option (OPTARROWCURSOR) ? 3 : 0;
--  int cols = COLS - shift;
-+  int cols = COLS - shift - SidebarWidth;
- 
-   mutt_format_string (s, n, cols, cols, FMT_LEFT, ' ', scratch, mutt_strlen (scratch), 1);
-   s[n - 1] = 0;
-@@ -237,6 +240,9 @@
-   int do_color;
-   int attr;
- 
-+#ifdef USE_SIDEBAR
-+  mutt_sb_draw();
-+#endif
-   for (i = menu->top; i < menu->top + menu->pagelen; i++)
-   {
-     if (i < menu->max)
-@@ -247,7 +253,7 @@
-       menu_pad_string (buf, sizeof (buf));
- 
-       ATTRSET(attr);
--      move(i - menu->top + menu->offset, 0);
-+      move(i - menu->top + menu->offset, SidebarWidth);
-       do_color = 1;
- 
-       if (i == menu->current)
-@@ -270,7 +276,11 @@
-     else
-     {
-       NORMAL_COLOR;
-+#ifdef USE_SIDEBAR
-+      CLEARLINE_WIN(i - menu->top + menu->offset);
-+#else
-       CLEARLINE(i - menu->top + menu->offset);
-+#endif
-     }
-   }
-   NORMAL_COLOR;
-@@ -287,7 +297,7 @@
-     return;
-   }
-   
--  move (menu->oldcurrent + menu->offset - menu->top, 0);
-+  move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth);
-   ATTRSET(menu->color (menu->oldcurrent));
- 
-   if (option (OPTARROWCURSOR))
-@@ -299,13 +309,13 @@
-     {
-       menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent);
-       menu_pad_string (buf, sizeof (buf));
--      move (menu->oldcurrent + menu->offset - menu->top, 3);
-+      move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth + 3);
-       print_enriched_string (menu->color(menu->oldcurrent), (unsigned char *) buf, 1);
-     }
- 
-     /* now draw it in the new location */
-     SETCOLOR(MT_COLOR_INDICATOR);
--    mvaddstr(menu->current + menu->offset - menu->top, 0, "->");
-+    mvaddstr(menu->current + menu->offset - menu->top, SidebarWidth, "->");
-   }
-   else
-   {
-@@ -318,7 +328,7 @@
-     menu_make_entry (buf, sizeof (buf), menu, menu->current);
-     menu_pad_string (buf, sizeof (buf));
-     SETCOLOR(MT_COLOR_INDICATOR);
--    move(menu->current - menu->top + menu->offset, 0);
-+    move(menu->current - menu->top + menu->offset, SidebarWidth);
-     print_enriched_string (menu->color(menu->current), (unsigned char *) buf, 0);
-   }
-   menu->redraw &= REDRAW_STATUS;
-@@ -330,7 +340,7 @@
-   char buf[LONG_STRING];
-   int attr = menu->color (menu->current);
-   
--  move (menu->current + menu->offset - menu->top, 0);
-+  move (menu->current + menu->offset - menu->top, SidebarWidth);
-   menu_make_entry (buf, sizeof (buf), menu, menu->current);
-   menu_pad_string (buf, sizeof (buf));
- 
-@@ -873,7 +883,7 @@
-     
-     
-     if (option (OPTARROWCURSOR))
--      move (menu->current - menu->top + menu->offset, 2);
-+      move (menu->current - menu->top + menu->offset, SidebarWidth + 2);
-     else if (option (OPTBRAILLEFRIENDLY))
-       move (menu->current - menu->top + menu->offset, 0);
-     else
-diff -urN mutt-1.6.1/mh.c mutt-1.6.1-sidebar/mh.c
---- mutt-1.6.1/mh.c	2016-06-12 18:43:00.410447715 +0100
-+++ mutt-1.6.1-sidebar/mh.c	2016-06-12 18:43:03.962503107 +0100
-@@ -295,6 +295,48 @@
-   mhs_free_sequences (&mhs);
- }
- 
-+#ifdef USE_SIDEBAR
-+/**
-+ * mh_buffy_update - Update messages counts for an mh mailbox
-+ * @mailbox: BUFFY representing a maildir mailbox
-+ *
-+ * Read through an mh mailbox and count messages.  Save the number of new,
-+ * flagged messages and a timestamp for now.
-+ */
-+void
-+mh_buffy_update (BUFFY *mailbox)
-+{
-+  int i;
-+  struct mh_sequences mhs;
-+
-+  if (!mailbox)
-+    return;
-+
-+  if (!option (OPTSIDEBAR))
-+    return;
-+
-+  memset (&mhs, 0, sizeof (mhs));
-+
-+  if (mh_read_sequences (&mhs, mailbox->path) < 0)
-+    return;
-+
-+  mailbox->msg_count   = 0;
-+  mailbox->msg_unread  = 0;
-+  mailbox->msg_flagged = 0;
-+
-+  for (i = 0; i <= mhs.max; i++)
-+  {
-+    mailbox->msg_count++;
-+    if (mhs_check (&mhs, i) & MH_SEQ_UNSEEN)
-+      mailbox->msg_unread++;
-+    if (mhs_check (&mhs, i) & MH_SEQ_FLAGGED)
-+      mailbox->msg_flagged++;
-+  }
-+  mhs_free_sequences (&mhs);
-+  mailbox->sb_last_checked = time (NULL);
-+}
-+#endif
-+
- static int mh_mkstemp (CONTEXT * dest, FILE ** fp, char **tgt)
- {
-   int fd;
-diff -urN mutt-1.6.1/mutt_curses.h mutt-1.6.1-sidebar/mutt_curses.h
---- mutt-1.6.1/mutt_curses.h	2016-06-12 18:43:00.410447715 +0100
-+++ mutt-1.6.1-sidebar/mutt_curses.h	2016-06-12 18:43:03.962503107 +0100
-@@ -64,6 +64,9 @@
- #undef lines
- #endif /* lines */
- 
-+#ifdef USE_SIDEBAR
-+#define CLEARLINE_WIN(x) move (x,SidebarWidth), clrtoeol()
-+#endif
- #define CLEARLINE(x) move(x,0), clrtoeol()
- #define CENTERLINE(x,y) move(y, (COLS-strlen(x))/2), addstr(x)
- #define BEEP() do { if (option (OPTBEEP)) beep(); } while (0)
-@@ -124,6 +127,14 @@
-   MT_COLOR_UNDERLINE,
-   MT_COLOR_INDEX,
-   MT_COLOR_PROMPT,
-+#ifdef USE_SIDEBAR
-+  MT_COLOR_DIVIDER,
-+  MT_COLOR_FLAGGED,
-+  MT_COLOR_HIGHLIGHT,
-+  MT_COLOR_NEW,
-+  MT_COLOR_SB_INDICATOR,
-+  MT_COLOR_SB_SPOOLFILE,
-+#endif
-   MT_COLOR_MAX
- };
- 
-@@ -163,12 +174,16 @@
- 
- static inline int mutt_term_width(short wrap)
- {
-+  int cols = COLS;
-+#ifdef USE_SIDEBAR
-+  cols -= SidebarWidth;
-+#endif
-   if (wrap < 0)
--    return COLS > -wrap ? COLS + wrap : COLS;
-+    return cols > -wrap ? cols + wrap : cols;
-   else if (wrap)
--    return wrap < COLS ? wrap : COLS;
-+    return wrap < cols ? wrap : cols;
-   else
--    return COLS;
-+    return cols;
- }
- 
- extern int *ColorQuote;
-diff -urN mutt-1.6.1/mutt.h mutt-1.6.1-sidebar/mutt.h
---- mutt-1.6.1/mutt.h	2016-06-12 18:43:00.410447715 +0100
-+++ mutt-1.6.1-sidebar/mutt.h	2016-06-12 18:43:03.962503107 +0100
-@@ -428,6 +428,13 @@
-   OPTSAVEEMPTY,
-   OPTSAVENAME,
-   OPTSCORE,
-+#ifdef USE_SIDEBAR
-+  OPTSIDEBAR,
-+  OPTSIDEBARFOLDERINDENT,
-+  OPTSIDEBARNEWMAILONLY,
-+  OPTSIDEBARNEXTNEWWRAP,
-+  OPTSIDEBARSHORTPATH,
-+#endif
-   OPTSIGDASHES,
-   OPTSIGONTOP,
-   OPTSORTRE,
-@@ -872,6 +879,9 @@
- {
-   char *path;
-   FILE *fp;
-+#ifdef USE_SIDEBAR
-+  time_t atime;
-+#endif
-   time_t mtime;
-   off_t size;
-   off_t vsize;
-@@ -906,6 +916,9 @@
-   unsigned int quiet : 1;	/* inhibit status messages? */
-   unsigned int collapsed : 1;   /* are all threads collapsed? */
-   unsigned int closing : 1;	/* mailbox is being closed */
-+#ifdef USE_SIDEBAR
-+  unsigned int peekonly : 1;	/* just taking a glance, revert atime */
-+#endif
- 
-   /* driver hooks */
-   void *data;			/* driver specific data */
-diff -urN mutt-1.6.1/muttlib.c mutt-1.6.1-sidebar/muttlib.c
---- mutt-1.6.1/muttlib.c	2016-06-12 18:43:00.411447731 +0100
-+++ mutt-1.6.1-sidebar/muttlib.c	2016-06-12 18:43:03.963503122 +0100
-@@ -1282,7 +1282,7 @@
- 	  pl = pw = 1;
- 
- 	/* see if there's room to add content, else ignore */
--	if ((col < COLS && wlen < destlen) || soft)
-+	if ((col < (COLS - SidebarWidth) && (wlen < destlen)) || soft)
- 	{
- 	  int pad;
- 
-@@ -1293,7 +1293,7 @@
- 
- 	  /* try to consume as many columns as we can, if we don't have
- 	   * memory for that, use as much memory as possible */
--	  pad = (COLS - col - wid) / pw;
-+	  pad = (COLS - SidebarWidth - col - wid) / pw;
- 	  if (pad > 0 && wlen + (pad * pl) + len > destlen)
- 	    pad = ((signed)(destlen - wlen - len)) / pl;
- 	  if (pad > 0)
-@@ -1312,13 +1312,13 @@
- 	    /* \0-terminate dest for length computation in mutt_wstr_trunc() */
- 	    *wptr = 0;
- 	    /* make sure right part is at most as wide as display */
--	    len = mutt_wstr_trunc (buf, destlen, COLS-offset, &wid);
-+	    len = mutt_wstr_trunc (buf, destlen, COLS - offset - SidebarWidth, &wid);
- 	    /* truncate left so that right part fits completely in */
- 	    wlen = mutt_wstr_trunc (dest, destlen - len, col + pad*pw -offset, &col);
- 	    wptr = dest + wlen;
- 	  }
- 	  if (len + wlen > destlen)
--	    len = mutt_wstr_trunc (buf, destlen - wlen, COLS - col, NULL);
-+	    len = mutt_wstr_trunc (buf, destlen - wlen, COLS - SidebarWidth - col, NULL);
- 	  memcpy (wptr, buf, len);
- 	  wptr += len;
- 	  wlen += len;
-diff -urN mutt-1.6.1/mutt_menu.h mutt-1.6.1-sidebar/mutt_menu.h
---- mutt-1.6.1/mutt_menu.h	2016-06-12 18:43:00.410447715 +0100
-+++ mutt-1.6.1-sidebar/mutt_menu.h	2016-06-12 18:43:03.962503107 +0100
-@@ -34,6 +34,9 @@
- #define REDRAW_FULL		(1<<5)
- #define REDRAW_BODY		(1<<6)
- #define REDRAW_SIGWINCH		(1<<7)
-+#ifdef USE_SIDEBAR
-+#define REDRAW_SIDEBAR		(1<<8)
-+#endif
- 
- #define M_MODEFMT "-- Mutt: %s"
- 
-diff -urN mutt-1.6.1/mx.c mutt-1.6.1-sidebar/mx.c
---- mutt-1.6.1/mx.c	2016-06-12 18:43:00.411447731 +0100
-+++ mutt-1.6.1-sidebar/mx.c	2016-06-12 18:43:03.963503122 +0100
-@@ -29,6 +29,9 @@
- #include "copy.h"
- #include "keymap.h"
- #include "url.h"
-+#ifdef USE_SIDEBAR
-+#include "sidebar.h"
-+#endif
- 
- #ifdef USE_IMAP
- #include "imap.h"
-@@ -580,6 +583,7 @@
-  *		M_APPEND	open mailbox for appending
-  *		M_READONLY	open mailbox in read-only mode
-  *		M_QUIET		only print error messages
-+ *		M_PEEK		revert atime where applicable
-  *	ctx	if non-null, context struct to use
-  */
- CONTEXT *mx_open_mailbox (const char *path, int flags, CONTEXT *pctx)
-@@ -602,6 +606,10 @@
-     ctx->quiet = 1;
-   if (flags & M_READONLY)
-     ctx->readonly = 1;
-+#ifdef USE_SIDEBAR
-+  if (flags & M_PEEK)
-+    ctx->peekonly = 1;
-+#endif
- 
-   if (flags & (M_APPEND|M_NEWFOLDER))
-   {
-@@ -705,8 +713,21 @@
-   if(!ctx) 
-     return;
- 
-+#ifdef USE_SIDEBAR
-+  /* fix up the times so buffy won't get confused */
-+  struct utimbuf ut;
-+  if (ctx->peekonly && ctx->path && (ctx->mtime > ctx->atime)) {
-+    ut.actime  = ctx->atime;
-+    ut.modtime = ctx->mtime;
-+    utime (ctx->path, &ut);
-+  }
-+#endif
-+
-   /* never announce that a mailbox we've just left has new mail. #3290
-    * XXX: really belongs in mx_close_mailbox, but this is a nice hook point */
-+#ifdef USE_SIDEBAR
-+  if (!ctx->peekonly)
-+#endif
-   mutt_buffy_setnotified(ctx->path);
- 
-   if (ctx->mx_close)
-@@ -812,6 +833,12 @@
-     if (!ctx->hdrs[i]->deleted && ctx->hdrs[i]->read 
-         && !(ctx->hdrs[i]->flagged && option (OPTKEEPFLAGGED)))
-       read_msgs++;
-+#ifdef USE_SIDEBAR
-+    if (ctx->hdrs[i]->deleted && !ctx->hdrs[i]->read)
-+      ctx->unread--;
-+    if (ctx->hdrs[i]->deleted && ctx->hdrs[i]->flagged)
-+      ctx->flagged--;
-+#endif
-   }
- 
-   if (read_msgs && quadoption (OPT_MOVE) != M_NO)
-@@ -981,6 +1008,11 @@
-       !mutt_is_spool(ctx->path) && !option (OPTSAVEEMPTY))
-     mx_unlink_empty (ctx->path);
- 
-+#ifdef USE_SIDEBAR
-+  ctx->msgcount -= ctx->deleted;
-+  mutt_sb_set_buffystats (ctx);
-+#endif
-+
-   mx_fastclose_mailbox (ctx);
- 
-   return 0;
-diff -urN mutt-1.6.1/mx.h mutt-1.6.1-sidebar/mx.h
---- mutt-1.6.1/mx.h	2016-06-12 18:43:00.411447731 +0100
-+++ mutt-1.6.1-sidebar/mx.h	2016-06-12 18:43:03.963503122 +0100
-@@ -26,6 +26,7 @@
- #define _MX_H
- 
- #include "mailbox.h"
-+#include "buffy.h"
- 
- /* supported mailbox formats */
- enum
-@@ -57,6 +58,9 @@
- int mh_read_dir (CONTEXT *, const char *);
- int mh_sync_mailbox (CONTEXT *, int *);
- int mh_check_mailbox (CONTEXT *, int *);
-+#ifdef USE_SIDEBAR
-+void mh_buffy_update (BUFFY *mailbox);
-+#endif
- int mh_check_empty (const char *);
- 
- int maildir_read_dir (CONTEXT *);
-diff -urN mutt-1.6.1/OPS.SIDEBAR mutt-1.6.1-sidebar/OPS.SIDEBAR
---- mutt-1.6.1/OPS.SIDEBAR	1970-01-01 01:00:00.000000000 +0100
-+++ mutt-1.6.1-sidebar/OPS.SIDEBAR	2016-06-12 18:43:03.944502826 +0100
-@@ -0,0 +1,8 @@
-+OP_SIDEBAR_NEXT "Move the highlight to next mailbox"
-+OP_SIDEBAR_NEXT_NEW "Move the highlight to next mailbox with new mail"
-+OP_SIDEBAR_OPEN "Open highlighted mailbox"
-+OP_SIDEBAR_PAGE_DOWN "Scroll the Sidebar down 1 page"
-+OP_SIDEBAR_PAGE_UP "Scroll the Sidebar up 1 page"
-+OP_SIDEBAR_PREV "Move the highlight to previous mailbox"
-+OP_SIDEBAR_PREV_NEW "Move the highlight to previous mailbox with new mail"
-+OP_SIDEBAR_TOGGLE_VISIBLE "Make the Sidebar (in)visible"
-diff -urN mutt-1.6.1/pager.c mutt-1.6.1-sidebar/pager.c
---- mutt-1.6.1/pager.c	2016-06-12 18:43:00.412447746 +0100
-+++ mutt-1.6.1-sidebar/pager.c	2016-06-12 18:43:03.964503138 +0100
-@@ -29,6 +29,9 @@
- #include "pager.h"
- #include "attach.h"
- #include "mbyte.h"
-+#ifdef USE_SIDEBAR
-+#include "sidebar.h"
-+#endif
- 
- #include "mutt_crypt.h"
- 
-@@ -1491,7 +1494,7 @@
-    * a newline (grr!).
-    */
- #ifndef USE_SLANG_CURSES
--    if (col < COLS)
-+    if (col < (COLS - SidebarWidth))
- #endif
-       addch ('\n');
- 
-@@ -1573,6 +1576,7 @@
- 
-   int bodyoffset = 1;			/* offset of first line of real text */
-   int statusoffset = 0; 		/* offset for the status bar */
-+  int statuswidth = COLS;
-   int helpoffset = LINES - 2;		/* offset for the help bar. */
-   int bodylen = LINES - 2 - bodyoffset; /* length of displayable area */
- 
-@@ -1747,7 +1751,7 @@
-     if ((redraw & REDRAW_BODY) || topline != oldtopline)
-     {
-       do {
--	move (bodyoffset, 0);
-+	move (bodyoffset, SidebarWidth);
- 	curline = oldtopline = topline;
- 	lines = 0;
- 	force_redraw = 0;
-@@ -1760,6 +1764,9 @@
- 			    &QuoteList, &q_level, &force_redraw, &SearchRE) > 0)
- 	    lines++;
- 	  curline++;
-+#ifdef USE_SIDEBAR
-+	  move (lines + bodyoffset, SidebarWidth);
-+#endif
- 	}
- 	last_offset = lineInfo[curline].offset;
-       } while (force_redraw);
-@@ -1772,6 +1779,9 @@
- 	  addch ('~');
- 	addch ('\n');
- 	lines++;
-+#ifdef USE_SIDEBAR
-+	move (lines + bodyoffset, SidebarWidth);
-+#endif
-       }
-       NORMAL_COLOR;
- 
-@@ -1789,29 +1799,49 @@
-       hfi.ctx = Context;
-       hfi.pager_progress = pager_progress_str;
- 
-+#ifdef USE_SIDEBAR
-+      statuswidth = COLS;
-+      if (option (OPTSTATUSONTOP) && (PagerIndexLines > 0))
-+        statuswidth -= SidebarWidth;
-+#endif
-+
-       if (last_pos < sb.st_size - 1)
- 	snprintf(pager_progress_str, sizeof(pager_progress_str), OFF_T_FMT "%%", (100 * last_offset / sb.st_size));
-       else
- 	strfcpy(pager_progress_str, (topline == 0) ? "all" : "end", sizeof(pager_progress_str));
- 
-       /* print out the pager status bar */
--      move (statusoffset, 0);
-+      move (statusoffset, SidebarWidth);
-       SETCOLOR (MT_COLOR_STATUS);
-+#ifdef USE_SIDEBAR
-+      short sw = SidebarWidth;
-+      if (option (OPTSTATUSONTOP) && PagerIndexLines > 0) {
-+        CLEARLINE_WIN (statusoffset);
-+      } else {
-+        CLEARLINE (statusoffset);
-+        /* Temporarily lie about the sidebar width */
-+        SidebarWidth = 0;
-+      }
-+#endif
- 
-       if (IsHeader (extra) || IsMsgAttach (extra))
-       {
--	size_t l1 = COLS * MB_LEN_MAX;
-+	size_t l1 = statuswidth * MB_LEN_MAX;
- 	size_t l2 = sizeof (buffer);
- 	hfi.hdr = (IsHeader (extra)) ? extra->hdr : extra->bdy->hdr;
- 	mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT);
--	mutt_paddstr (COLS, buffer);
-+	mutt_paddstr (statuswidth, buffer);
-       }
-       else
-       {
- 	char bn[STRING];
- 	snprintf (bn, sizeof (bn), "%s (%s)", banner, pager_progress_str);
--	mutt_paddstr (COLS, bn);
-+	mutt_paddstr (statuswidth, bn);
-       }
-+#ifdef USE_SIDEBAR
-+      if (!option (OPTSTATUSONTOP) || PagerIndexLines == 0)
-+        SidebarWidth = sw; /* Restore the sidebar width */
-+#endif
-       NORMAL_COLOR;
-       if (option(OPTTSENABLED) && TSSupported)
-       {
-@@ -1827,16 +1857,26 @@
-       /* redraw the pager_index indicator, because the
-        * flags for this message might have changed. */
-       menu_redraw_current (index);
-+#ifdef USE_SIDEBAR
-+      mutt_sb_draw();
-+#endif
- 
-       /* print out the index status bar */
-       menu_status_line (buffer, sizeof (buffer), index, NONULL(Status));
-  
--      move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), 0);
-+      move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)),
-+          (option(OPTSTATUSONTOP) ? 0: SidebarWidth));
-       SETCOLOR (MT_COLOR_STATUS);
--      mutt_paddstr (COLS, buffer);
-+      mutt_paddstr (COLS - (option(OPTSTATUSONTOP) ? 0 : SidebarWidth), buffer);
-       NORMAL_COLOR;
-     }
- 
-+#ifdef USE_SIDEBAR
-+    /* if we're not using the index, update every time */
-+    if (index == 0)
-+      mutt_sb_draw();
-+#endif
-+
-     redraw = 0;
- 
-     if (option(OPTBRAILLEFRIENDLY)) {
-@@ -2498,8 +2538,12 @@
- 	  ch = 0;
- 	}
- 
--	if (option (OPTFORCEREDRAWPAGER))
-+	if (option (OPTFORCEREDRAWPAGER)) {
- 	  redraw = REDRAW_FULL;
-+#ifdef USE_SIDEBAR
-+	  mutt_sb_draw();
-+#endif
-+	}
- 	unset_option (OPTFORCEREDRAWINDEX);
- 	unset_option (OPTFORCEREDRAWPAGER);
- 	break;
-@@ -2777,6 +2821,22 @@
- 	mutt_what_key ();
- 	break;
- 
-+#ifdef USE_SIDEBAR
-+      case OP_SIDEBAR_NEXT:
-+      case OP_SIDEBAR_NEXT_NEW:
-+      case OP_SIDEBAR_PAGE_DOWN:
-+      case OP_SIDEBAR_PAGE_UP:
-+      case OP_SIDEBAR_PREV:
-+      case OP_SIDEBAR_PREV_NEW:
-+	mutt_sb_change_mailbox (ch);
-+	break;
-+
-+      case OP_SIDEBAR_TOGGLE_VISIBLE:
-+	toggle_option (OPTSIDEBAR);
-+	redraw = REDRAW_FULL;
-+	break;
-+#endif
-+
-       default:
- 	ch = -1;
- 	break;
-diff -urN mutt-1.6.1/PATCHES mutt-1.6.1-sidebar/PATCHES
---- mutt-1.6.1/PATCHES	2016-06-12 18:43:00.395447481 +0100
-+++ mutt-1.6.1-sidebar/PATCHES	2016-06-12 18:43:03.949502904 +0100
-@@ -0,0 +1 @@
-+patch-sidebar-neo-20160612
-diff -urN mutt-1.6.1/README.sidebar mutt-1.6.1-sidebar/README.sidebar
---- mutt-1.6.1/README.sidebar	1970-01-01 01:00:00.000000000 +0100
-+++ mutt-1.6.1-sidebar/README.sidebar	2016-06-12 18:43:03.792500456 +0100
-@@ -0,0 +1,145 @@
-+Sidebar Patch
-+=============
-+
-+    Overview of mailboxes
-+
-+    NOTES:
-+
-+    If you haven't used the sidebar before, you might like to read the
-+    Sidebar Introduction:
-+
-+        http://www.neomutt.org/sidebar-intro.html
-+
-+    If you have used an older version of the Sidebar, please note that some
-+    of the configuration has changed.
-+
-+        http://www.neomutt.org/sidebar-intro.html#intro-sidebar-config-changes
-+
-+Patch
-+-----
-+
-+    To check if Mutt supports "Sidebar", look for "+USE_SIDEBAR" in the mutt
-+    version.
-+
-+    Dependencies
-+    * mutt-1.6.1
-+
-+Introduction
-+------------
-+
-+    The Sidebar shows a list of all your mailboxes. The list can be turned on
-+    and off, it can be themed and the list style can be configured.
-+
-+    This part of the manual is a reference guide. If you want a simple
-+    introduction with examples see the Sidebar Howto. If you just want to get
-+    started, you could use the sample Sidebar muttrc.
-+
-+    This version of Sidebar is based on Terry Chan's [2015-11-11
-+    release](http://www.lunar-linux.org/mutt-sidebar/). It contains many new
-+    features, lots of bugfixes.
-+
-+Variables
-+---------
-+
-+    Sidebar Variables
-+
-+    | Name                    | Type    | Default                     |
-+    |-------------------------|---------|-----------------------------|
-+    | 'sidebar_delim_chars'   | string  | '/.'                        |
-+    | 'sidebar_divider_char'  | string  | '|'                         |
-+    | 'sidebar_folder_indent' | boolean | 'no'                        |
-+    | 'sidebar_format'        | string  | '%B%?F? [%F]?%* %?N?%N/?%S' |
-+    | 'sidebar_indent_string' | string  | '  ' (two spaces)           |
-+    | 'sidebar_new_mail_only' | boolean | 'no'                        |
-+    | 'sidebar_next_new_wrap' | boolean | 'no'                        |
-+    | 'sidebar_refresh_time'  | number  | '60'                        |
-+    | 'sidebar_short_path'    | boolean | 'no'                        |
-+    | 'sidebar_sort_method'   | enum    | 'SORT_ORDER'                |
-+    | 'sidebar_visible'       | boolean | 'no'                        |
-+    | 'sidebar_whitelist'     | list    | (empty)                     |
-+    | 'sidebar_width'         | number  | '20'                        |
-+
-+Functions
-+---------
-+
-+    Sidebar Functions
-+
-+    Sidebar adds the following functions to Mutt. By default, none of them are
-+    bound to keys.
-+
-+    | Menus       | Function                   | Description                                          |
-+    |-------------|----------------------------|------------------------------------------------------|
-+    | index,pager | '<sidebar-next>'           | Move the highlight to next mailbox                   |
-+    | index,pager | '<sidebar-next-new>'       | Move the highlight to next mailbox with new mail     |
-+    | index,pager | '<sidebar-open>'           | Open highlighted mailbox                             |
-+    | index,pager | '<sidebar-page-down>'      | Scroll the Sidebar down 1 page                       |
-+    | index,pager | '<sidebar-page-up>'        | Scroll the Sidebar up 1 page                         |
-+    | index,pager | '<sidebar-prev>'           | Move the highlight to previous mailbox               |
-+    | index,pager | '<sidebar-prev-new>'       | Move the highlight to previous mailbox with new mail |
-+    | index,pager | '<sidebar-toggle-visible>' | Make the Sidebar (in)visible                         |
-+
-+Commands
-+--------
-+
-+        sidebar_whitelist mailbox [ mailbox... ]
-+
-+Colors
-+------
-+
-+    Sidebar Colors
-+
-+    | Name                | Default Color    | Description                                                      |
-+    |---------------------|------------------|------------------------------------------------------------------|
-+    | 'sidebar_divider'   | default          | The dividing line between the Sidebar and the Index/Pager panels |
-+    | 'sidebar_flagged'   | default          | Mailboxes containing flagged mail                                |
-+    | 'sidebar_highlight' | underline        | Cursor to select a mailbox                                       |
-+    | 'sidebar_indicator' | mutt 'indicator' | The mailbox open in the Index panel                              |
-+    | 'sidebar_new'       | default          | Mailboxes containing new mail                                    |
-+    | 'sidebar_spoolfile' | default          | Mailbox that receives incoming mail                              |
-+
-+    If the sidebar_indicator color isn't set, then the default Mutt indicator
-+    color will be used (the color used in the index panel).
-+
-+Sort
-+----
-+
-+    Sidebar Sort
-+
-+    | Sort       | Description                |
-+    |------------|----------------------------|
-+    | 'alpha'    | Alphabetically by path     |
-+    | 'count'    | Total number of messages   |
-+    | 'flagged'  | Number of flagged messages |
-+    | 'name'     | Alphabetically by path     |
-+    | 'new'      | Number of new messages     |
-+    | 'path'     | Alphabetically by path     |
-+    | 'unsorted' | Do not resort the paths    |
-+
-+See Also
-+--------
-+
-+    * Regular Expressions
-+    * Patterns
-+    * Color command
-+    * notmuch patch
-+
-+Known Bugs
-+----------
-+
-+    Unsorted isn't
-+
-+Credits
-+-------
-+
-+    * Justin Hibbits <jrh29@po.cwru.edu>
-+    * Thomer M. Gil <mutt@thomer.com>
-+    * David Sterba <dsterba@suse.cz>
-+    * Evgeni Golov <evgeni@debian.org>
-+    * Fabian Groffen <grobian@gentoo.org>
-+    * Jason DeTiberus <jdetiber@redhat.com>
-+    * Stefan Assmann <sassmann@kpanic.de>
-+    * Steve Kemp <steve@steve.org.uk>
-+    * Terry Chan <tchan@lunar-linux.org>
-+    * Tyler Earnest <tylere@rne.st>
-+    * Richard Russon <rich@flatcap.org>
-+
-diff -urN mutt-1.6.1/sidebar.c mutt-1.6.1-sidebar/sidebar.c
---- mutt-1.6.1/sidebar.c	1970-01-01 01:00:00.000000000 +0100
-+++ mutt-1.6.1-sidebar/sidebar.c	2016-06-14 18:46:00.000000000 +0100
-@@ -0,0 +1,1090 @@
-+/* Copyright (C) 2004 Justin Hibbits <jrh29@po.cwru.edu>
-+ * Copyright (C) 2004 Thomer M. Gil <mutt@thomer.com>
-+ * Copyright (C) 2015-2016 Richard Russon <rich@flatcap.org>
-+ *
-+ *     This program is free software; you can redistribute it and/or modify
-+ *     it under the terms of the GNU General Public License as published by
-+ *     the Free Software Foundation; either version 2 of the License, or
-+ *     (at your option) any later version.
-+ *
-+ *     This program is distributed in the hope that it will be useful,
-+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ *     GNU General Public License for more details.
-+ *
-+ *     You should have received a copy of the GNU General Public License
-+ *     along with this program; if not, write to the Free Software
-+ *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
-+ */
-+
-+#if HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include "mutt.h"
-+#include "buffy.h"
-+#include "keymap.h"
-+#include "mutt_curses.h"
-+#include "mutt_menu.h"
-+#include "sort.h"
-+
-+/* Previous values for some sidebar config */
-+static short  OldVisible;	/* sidebar_visible */
-+static short  OldWidth;		/* sidebar_width */
-+static short  PreviousSort;	/* sidebar_sort_method */
-+static time_t LastRefresh;	/* Time of last refresh */
-+
-+/* Keep track of various BUFFYs */
-+static BUFFY *TopBuffy;		/* First mailbox visible in sidebar */
-+static BUFFY *OpnBuffy;		/* Current (open) mailbox */
-+static BUFFY *HilBuffy;		/* Highlighted mailbox */
-+static BUFFY *BotBuffy;		/* Last mailbox visible in sidebar */
-+static BUFFY *Outgoing;		/* Last mailbox in the linked list */
-+
-+/**
-+ * struct sidebar_entry - Info about folders in the sidebar
-+ *
-+ * Used in the mutt_FormatString callback
-+ */
-+struct sidebar_entry
-+{
-+  char         box[STRING];
-+  BUFFY       *buffy;
-+};
-+
-+
-+/**
-+ * find_next_new - Find the next folder that contains new mail
-+ * @wrap: Wrap around to the beginning if the end is reached
-+ *
-+ * Search down the list of mail folders for one containing new mail.
-+ *
-+ * Returns:
-+ *	BUFFY*: Success
-+ *	NULL:   Failure
-+ */
-+static BUFFY *find_next_new (int wrap)
-+{
-+  BUFFY *b = HilBuffy;
-+  if (!b)
-+    return NULL;
-+
-+  do
-+  {
-+    b = b->next;
-+    if (!b && wrap)
-+      b = Incoming;
-+    if (!b || (b == HilBuffy))
-+      break;
-+    if (b->msg_unread > 0)
-+      return b;
-+  } while (b);
-+
-+  return NULL;
-+}
-+
-+/**
-+ * find_prev_new - Find the previous folder that contains new mail
-+ * @wrap: Wrap around to the beginning if the end is reached
-+ *
-+ * Search up the list of mail folders for one containing new mail.
-+ *
-+ * Returns:
-+ *	BUFFY*: Success
-+ *	NULL:   Failure
-+ */
-+static BUFFY *find_prev_new (int wrap)
-+{
-+  BUFFY *b = HilBuffy;
-+  if (!b)
-+    return NULL;
-+
-+  do
-+  {
-+    b = b->prev;
-+    if (!b && wrap)
-+      b = Outgoing;
-+    if (!b || (b == HilBuffy))
-+      break;
-+    if (b->msg_unread > 0)
-+      return b;
-+  } while (b);
-+
-+  return NULL;
-+}
-+
-+/**
-+ * cb_format_str - Create the string to show in the sidebar
-+ * @dest:        Buffer in which to save string
-+ * @destlen:     Buffer length
-+ * @col:         Starting column, UNUSED
-+ * @op:          printf-like operator, e.g. 'B'
-+ * @src:         printf-like format string
-+ * @prefix:      Field formatting string, UNUSED
-+ * @ifstring:    If condition is met, display this string
-+ * @elsestring:  Otherwise, display this string
-+ * @data:        Pointer to our sidebar_entry
-+ * @flags:       Format flags, e.g. M_FORMAT_OPTIONAL
-+ *
-+ * cb_format_str is a callback function for mutt_FormatString.  It understands
-+ * five operators. '%B' : Mailbox name, '%F' : Number of flagged messages,
-+ * '%N' : Number of new messages, '%S' : Size (total number of messages),
-+ * '%!' : Icon denoting number of flagged messages.
-+ *
-+ * Returns: src (unchanged)
-+ */
-+static const char *cb_format_str(char *dest, size_t destlen, size_t col, char op,
-+                                 const char *src, const char *prefix, const char *ifstring,
-+                                 const char *elsestring, unsigned long data, format_flag flags)
-+{
-+  struct sidebar_entry *sbe = (struct sidebar_entry *) data;
-+  unsigned int optional;
-+  char fmt[STRING];
-+
-+  if (!sbe || !dest)
-+    return src;
-+
-+  dest[0] = 0;	/* Just in case there's nothing to do */
-+
-+  BUFFY *b = sbe->buffy;
-+  if (!b)
-+    return src;
-+
-+  int c = Context && (mutt_strcmp (Context->path, b->path) == 0);
-+
-+  optional = flags & M_FORMAT_OPTIONAL;
-+
-+  switch (op)
-+  {
-+    case 'B':
-+      mutt_format_s (dest, destlen, prefix, sbe->box);
-+      break;
-+
-+    case 'd':
-+      if (!optional)
-+      {
-+        snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
-+        snprintf (dest, destlen, fmt, c ? Context->deleted : 0);
-+      }
-+      else if ((c && Context->deleted == 0) || !c)
-+        optional = 0;
-+      break;
-+
-+    case 'F':
-+      if (!optional)
-+      {
-+        snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
-+        snprintf (dest, destlen, fmt, b->msg_flagged);
-+      }
-+      else if (b->msg_flagged == 0)
-+        optional = 0;
-+      break;
-+
-+    case 'L':
-+      if (!optional)
-+      {
-+        snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
-+        snprintf (dest, destlen, fmt, c ? Context->vcount : b->msg_count);
-+      }
-+      else if ((c && Context->vcount == b->msg_count) || !c)
-+        optional = 0;
-+      break;
-+
-+    case 'N':
-+      if (!optional)
-+      {
-+        snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
-+        snprintf (dest, destlen, fmt, b->msg_unread);
-+      }
-+      else if (b->msg_unread == 0)
-+        optional = 0;
-+      break;
-+
-+    case 'S':
-+      if (!optional)
-+      {
-+        snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
-+        snprintf (dest, destlen, fmt, b->msg_count);
-+      }
-+      else if (b->msg_count == 0)
-+        optional = 0;
-+      break;
-+
-+    case 't':
-+      if (!optional)
-+      {
-+        snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
-+        snprintf (dest, destlen, fmt, c ? Context->tagged : 0);
-+      }
-+      else if ((c && Context->tagged == 0) || !c)
-+        optional = 0;
-+      break;
-+
-+    case '!':
-+      if (b->msg_flagged == 0)
-+        mutt_format_s (dest, destlen, prefix, "");
-+      else if (b->msg_flagged == 1)
-+        mutt_format_s (dest, destlen, prefix, "!");
-+      else if (b->msg_flagged == 2)
-+        mutt_format_s (dest, destlen, prefix, "!!");
-+      else
-+      {
-+        snprintf (fmt, sizeof (fmt), "%d!", b->msg_flagged);
-+        mutt_format_s (dest, destlen, prefix, fmt);
-+      }
-+      break;
-+  }
-+
-+  if (optional)
-+    mutt_FormatString (dest, destlen, col, ifstring,   cb_format_str, (unsigned long) sbe, flags);
-+  else if (flags & M_FORMAT_OPTIONAL)
-+    mutt_FormatString (dest, destlen, col, elsestring, cb_format_str, (unsigned long) sbe, flags);
-+
-+  /* We return the format string, unchanged */
-+  return src;
-+}
-+
-+/**
-+ * make_sidebar_entry - Turn mailbox data into a sidebar string
-+ * @buf:     Buffer in which to save string
-+ * @buflen:  Buffer length
-+ * @width:   Desired width in screen cells
-+ * @box:     Mailbox name
-+ * @size:    Size (total number of messages)
-+ * @new:     Number of new messages
-+ * @flagged: Number of flagged messages
-+ *
-+ * Take all the relevant mailbox data and the desired screen width and then get
-+ * mutt_FormatString to do the actual work. mutt_FormatString will callback to
-+ * us using cb_format_str() for the sidebar specific formatting characters.
-+ */
-+static void make_sidebar_entry (char *buf, unsigned int buflen, int width, char *box,
-+                                BUFFY *b)
-+{
-+  struct sidebar_entry sbe;
-+
-+  if (!buf || !box || !b)
-+    return;
-+
-+  sbe.buffy = b;
-+  strfcpy (sbe.box, box, sizeof (sbe.box));
-+
-+  /* Temporarily lie about the screen width */
-+  int oc = COLS;
-+  COLS = width + SidebarWidth;
-+  mutt_FormatString (buf, buflen, 0, NONULL(SidebarFormat), cb_format_str, (unsigned long) &sbe, 0);
-+  COLS = oc;
-+
-+  /* Force string to be exactly the right width */
-+  int w = mutt_strwidth (buf);
-+  int s = strlen (buf);
-+  width = MIN(buflen, width);
-+  if (w < width)
-+  {
-+    /* Pad with spaces */
-+    memset (buf + s, ' ', width - w);
-+    buf[s + width - w] = 0;
-+  }
-+  else if (w > width)
-+  {
-+    /* Truncate to fit */
-+    int len = mutt_wstr_trunc (buf, buflen, width, NULL);
-+    buf[len] = 0;
-+  }
-+}
-+
-+/**
-+ * cb_qsort_buffy - qsort callback to sort BUFFYs
-+ * @a: First  BUFFY to compare
-+ * @b: Second BUFFY to compare
-+ *
-+ * Compare the paths of two BUFFYs taking the locale into account.
-+ *
-+ * Returns:
-+ *	-1: a precedes b
-+ *	 0: a and b are identical
-+ *	 1: b precedes a
-+ */
-+static int cb_qsort_buffy (const void *a, const void *b)
-+{
-+  const BUFFY *b1 = *(const BUFFY **) a;
-+  const BUFFY *b2 = *(const BUFFY **) b;
-+
-+  /* Special case -- move hidden BUFFYs to the end */
-+  if (b1->is_hidden != b2->is_hidden)
-+  {
-+    if (b1->is_hidden)
-+      return 1;
-+    else
-+      return -1;
-+  }
-+
-+  int result = 0;
-+
-+  switch ((SidebarSortMethod & SORT_MASK))
-+  {
-+    case SORT_COUNT:
-+      result = (b2->msg_count - b1->msg_count);
-+      break;
-+    case SORT_COUNT_NEW:
-+      result = (b2->msg_unread - b1->msg_unread);
-+      break;
-+    case SORT_FLAGGED:
-+      result = (b2->msg_flagged - b1->msg_flagged);
-+      break;
-+    case SORT_PATH:
-+      result = mutt_strcasecmp (b1->path, b2->path);
-+      break;
-+  }
-+
-+  if (SidebarSortMethod & SORT_REVERSE)
-+    result = -result;
-+
-+  return result;
-+}
-+
-+/**
-+ * buffy_going - Prevent our pointers becoming invalid
-+ * @b: BUFFY about to be deleted
-+ *
-+ * If we receive a delete-notification for a BUFFY, we need to change any
-+ * pointers we have to reference a different BUFFY, or set them to NULL.
-+ *
-+ * We don't update the prev/next pointers, they'll be fixed on the next
-+ * call to prepare_sidebar().
-+ *
-+ * Returns:
-+ *	A valid alternative BUFFY, or NULL
-+ */
-+static BUFFY *buffy_going (const BUFFY *b)
-+{
-+  if (!b)
-+    return NULL;
-+
-+  if (b->prev)
-+  {
-+    b->prev->next = NULL;
-+  }
-+
-+  if (b->next)
-+  {
-+    b->next->prev = NULL;
-+    return b->next;
-+  }
-+
-+  return b->prev;
-+}
-+
-+/**
-+ * update_buffy_visibility - Should a BUFFY be displayed in the sidebar
-+ * @arr:     array of BUFFYs
-+ * @arr_len: number of BUFFYs in array
-+ *
-+ * For each BUFFY in the array, check whether we should display it.
-+ * This is determined by several criteria.  If the BUFFY:
-+ *	is the currently open mailbox
-+ *	is the currently highlighted mailbox
-+ *	has unread messages
-+ *	has flagged messages
-+ *	is whitelisted
-+ */
-+static void update_buffy_visibility (BUFFY **arr, int arr_len)
-+{
-+  if (!arr)
-+    return;
-+
-+  short new_only = option (OPTSIDEBARNEWMAILONLY);
-+
-+  BUFFY *b;
-+  int i;
-+  for (i = 0; i < arr_len; i++)
-+  {
-+    b = arr[i];
-+
-+    b->is_hidden = 0;
-+
-+    if (!new_only)
-+      continue;
-+
-+    if ((b == OpnBuffy) || (b->msg_unread  > 0) ||
-+        (b == HilBuffy) || (b->msg_flagged > 0))
-+      continue;
-+
-+    if (Context && (strcmp (b->path, Context->path) == 0))
-+      /* Spool directory */
-+      continue;
-+
-+    if (mutt_find_list (SidebarWhitelist, b->path))
-+      /* Explicitly asked to be visible */
-+      continue;
-+
-+    b->is_hidden = 1;
-+  }
-+}
-+
-+/**
-+ * sort_buffy_array - Sort an array of BUFFY pointers
-+ * @arr:     array of BUFFYs
-+ * @arr_len: number of BUFFYs in array
-+ *
-+ * Sort an array of BUFFY pointers according to the current sort config
-+ * option "sidebar_sort_method". This calls qsort to do the work which calls our
-+ * callback function "cb_qsort_buffy".
-+ *
-+ * Once sorted, the prev/next links will be reconstructed.
-+ */
-+static void sort_buffy_array (BUFFY **arr, int arr_len)
-+{
-+  if (!arr)
-+    return;
-+
-+  /* These are the only sort methods we understand */
-+  short ssm = (SidebarSortMethod & SORT_MASK);
-+  if ((ssm == SORT_COUNT)     ||
-+      (ssm == SORT_COUNT_NEW) ||
-+      (ssm == SORT_DESC)      ||
-+      (ssm == SORT_FLAGGED)   ||
-+      (ssm == SORT_PATH))
-+    qsort (arr, arr_len, sizeof (*arr), cb_qsort_buffy);
-+
-+  int i;
-+  for (i = 0; i < (arr_len - 1); i++)
-+    arr[i]->next = arr[i + 1];
-+  arr[arr_len - 1]->next = NULL;
-+
-+  for (i = 1; i < arr_len; i++)
-+    arr[i]->prev = arr[i - 1];
-+  arr[0]->prev = NULL;
-+}
-+
-+/**
-+ * prepare_sidebar - Prepare the list of BUFFYs for the sidebar display
-+ * @page_size:  The number of lines on a page
-+ *
-+ * Before painting the sidebar, we count the BUFFYs, determine which are
-+ * visible, sort them and set up our page pointers.
-+ *
-+ * This is a lot of work to do each refresh, but there are many things that
-+ * can change outside of the sidebar that we don't hear about.
-+ *
-+ * Returns:
-+ *	0: No, don't draw the sidebar
-+ *	1: Yes, draw the sidebar
-+ */
-+static int prepare_sidebar (int page_size)
-+{
-+  BUFFY *b = Incoming;
-+  if (!b)
-+    return 0;
-+
-+  int count = 0;
-+  for (; b; b = b->next)
-+    count++;
-+
-+  BUFFY **arr = safe_malloc (count * sizeof (*arr));
-+
-+  int i = 0;
-+  for (b = Incoming; b; b = b->next, i++)
-+    arr[i] = b;
-+
-+  update_buffy_visibility (arr, count);
-+  sort_buffy_array        (arr, count);
-+
-+  Incoming = arr[0];
-+
-+  int top_index =  0;
-+  int opn_index = -1;
-+  int hil_index = -1;
-+  int bot_index = -1;
-+
-+  for (i = 0; i < count; i++)
-+  {
-+    if (OpnBuffy == arr[i])
-+      opn_index = i;
-+    if (HilBuffy == arr[i])
-+      hil_index = i;
-+  }
-+
-+  if (!HilBuffy || (SidebarSortMethod != PreviousSort))
-+  {
-+    if (OpnBuffy)
-+    {
-+      HilBuffy  = OpnBuffy;
-+      hil_index = opn_index;
-+    }
-+    else
-+    {
-+      HilBuffy  = arr[0];
-+      hil_index = 0;
-+    }
-+  }
-+  if (TopBuffy)
-+    top_index = (hil_index / page_size) * page_size;
-+  else
-+    top_index = hil_index;
-+  TopBuffy = arr[top_index];
-+
-+  bot_index = top_index + page_size - 1;
-+  if (bot_index > (count - 1))
-+    bot_index = count - 1;
-+  BotBuffy  = arr[bot_index];
-+
-+  Outgoing = arr[count - 1];
-+
-+  PreviousSort = SidebarSortMethod;
-+  FREE (&arr);
-+  return 1;
-+}
-+
-+/**
-+ * visible - Should we display the sidebar?
-+ *
-+ * After validating the config options "sidebar_visible" and "sidebar_width",
-+ * determine whether we should should display the sidebar.
-+ *
-+ * When not visible, set the global SidebarWidth to 0.
-+ *
-+ * Returns:
-+ *	Boolean
-+ */
-+static short
-+visible (void)
-+{
-+  short new_visible = option (OPTSIDEBAR);
-+  short new_width   = SidebarWidth;
-+
-+  if (OldWidth != new_width)
-+  {
-+    if (new_width > 0)
-+    {
-+      OldWidth = new_width;
-+    }
-+  }
-+
-+  if (OldVisible != new_visible)
-+  {
-+    if (new_visible)
-+    {
-+      set_option (OPTSIDEBAR);
-+    }
-+    else
-+    {
-+      unset_option (OPTSIDEBAR);
-+    }
-+    OldVisible = new_visible;
-+  }
-+  else if (new_width == 0)
-+  {
-+    unset_option (OPTSIDEBAR);
-+    OldVisible = 0;
-+  }
-+
-+  if (!option (OPTSIDEBAR))
-+  {
-+    SidebarWidth = 0;
-+  }
-+  else if (new_width == 0)
-+  {
-+    SidebarWidth = OldWidth;
-+  }
-+  else
-+  {
-+    SidebarWidth = new_width;
-+  }
-+
-+  return new_visible;
-+}
-+
-+/**
-+ * draw_divider - Draw a line between the sidebar and the rest of mutt
-+ * @first_row:  Screen line to start (0-based)
-+ * @num_rows:   Number of rows to fill
-+ *
-+ * Draw a divider using characters from the config option "sidebar_divider_char".
-+ * This can be an ASCII or Unicode character.  First we calculate this
-+ * characters' width in screen columns, then subtract that from the config
-+ * option "sidebar_width".
-+ *
-+ * Returns:
-+ *	-1: Error: bad character, etc
-+ *	0:  Error: 0 width character
-+ *	n:  Success: character occupies n screen columns
-+ */
-+static int draw_divider (int first_row, int num_rows)
-+{
-+  /* Calculate the width of the delimiter in screen cells */
-+  int delim_len = mutt_strwidth (SidebarDividerChar);
-+
-+  if (delim_len < 1)
-+    return delim_len;
-+
-+  if ((SidebarWidth + delim_len) > (COLS + 1))
-+    return 0;
-+
-+  if (delim_len > SidebarWidth)
-+    return -1;
-+
-+  SETCOLOR(MT_COLOR_DIVIDER);
-+
-+  int i;
-+  for (i = 0; i < num_rows; i++)
-+  {
-+    move (first_row + i, SidebarWidth - delim_len);
-+    addstr (NONULL(SidebarDividerChar));
-+  }
-+
-+  return delim_len;
-+}
-+
-+/**
-+ * fill_empty_space - Wipe the remaining Sidebar space
-+ * @first_row:  Screen line to start (0-based)
-+ * @num_rows:   Number of rows to fill
-+ * @width:      Width of the Sidebar (minus the divider)
-+ *
-+ * Write spaces over the area the sidebar isn't using.
-+ */
-+static void fill_empty_space (int first_row, int num_rows, int width)
-+{
-+  /* Fill the remaining rows with blank space */
-+  SETCOLOR(MT_COLOR_NORMAL);
-+
-+  int r;
-+  for (r = 0; r < num_rows; r++)
-+  {
-+    int i = 0;
-+    move (first_row + r, 0);
-+    for (; i < width; i++)
-+      addch (' ');
-+  }
-+}
-+
-+/**
-+ * draw_sidebar - Write out a list of mailboxes, on the left
-+ * @first_row:  Screen line to start (0-based)
-+ * @num_rows:   Number of rows to fill
-+ * @div_width:  Width in screen characters taken by the divider
-+ *
-+ * Display a list of mailboxes in a panel on the left.  What's displayed will
-+ * depend on our index markers: TopBuffy, OpnBuffy, HilBuffy, BotBuffy.
-+ * On the first run they'll be NULL, so we display the top of Mutt's list
-+ * (Incoming).
-+ *
-+ * TopBuffy - first visible mailbox
-+ * BotBuffy - last  visible mailbox
-+ * OpnBuffy - mailbox shown in Mutt's Index Panel
-+ * HilBuffy - Unselected mailbox (the paging follows this)
-+ *
-+ * The entries are formatted using "sidebar_format" and may be abbreviated:
-+ * "sidebar_short_path", indented: "sidebar_folder_indent",
-+ * "sidebar_indent_string" and sorted: "sidebar_sort_method".  Finally, they're
-+ * trimmed to fit the available space.
-+ */
-+static void draw_sidebar (int first_row, int num_rows, int div_width)
-+{
-+  BUFFY *b = TopBuffy;
-+  if (!b)
-+    return;
-+
-+  int w = MIN(COLS, (SidebarWidth - div_width));
-+  int row = 0;
-+  for (b = TopBuffy; b && (row < num_rows); b = b->next)
-+  {
-+    if (b->is_hidden)
-+      continue;
-+
-+    if (b == OpnBuffy)
-+    {
-+      if ((ColorDefs[MT_COLOR_SB_INDICATOR] != 0))
-+        SETCOLOR(MT_COLOR_SB_INDICATOR);
-+      else
-+        SETCOLOR(MT_COLOR_INDICATOR);
-+    }
-+    else if (b == HilBuffy)
-+      SETCOLOR(MT_COLOR_HIGHLIGHT);
-+    else if ((ColorDefs[MT_COLOR_SB_SPOOLFILE] != 0) &&
-+               (mutt_strcmp (b->path, Spoolfile) == 0))
-+      SETCOLOR(MT_COLOR_SB_SPOOLFILE);
-+    else if (b->msg_unread > 0)
-+      SETCOLOR(MT_COLOR_NEW);
-+    else if (b->msg_flagged > 0)
-+      SETCOLOR(MT_COLOR_FLAGGED);
-+    else
-+      SETCOLOR(MT_COLOR_NORMAL);
-+
-+    move (first_row + row, 0);
-+    if (Context && Context->path &&
-+        (!strcmp (b->path, Context->path)||
-+         !strcmp (b->realpath, Context->path)))
-+    {
-+      b->msg_unread  = Context->unread;
-+      b->msg_count   = Context->msgcount;
-+      b->msg_flagged = Context->flagged;
-+    }
-+
-+    /* compute length of Maildir without trailing separator */
-+    size_t maildirlen = strlen (Maildir);
-+    if (SidebarDelimChars && strchr (SidebarDelimChars, Maildir[maildirlen - 1]))
-+      maildirlen--;
-+
-+    /* check whether Maildir is a prefix of the current folder's path */
-+    short maildir_is_prefix = 0;
-+    if ((strlen (b->path) > maildirlen) && (strncmp (Maildir, b->path, maildirlen) == 0))
-+      maildir_is_prefix = 1;
-+
-+    /* calculate depth of current folder and generate its display name with indented spaces */
-+    int sidebar_folder_depth = 0;
-+    char *sidebar_folder_name;
-+    int i;
-+    if (option (OPTSIDEBARSHORTPATH))
-+    {
-+      /* disregard a trailing separator, so strlen() - 2 */
-+      sidebar_folder_name = b->path;
-+      for (i = strlen (sidebar_folder_name) - 2; i >= 0; i--)
-+      {
-+        if (SidebarDelimChars &&
-+            strchr (SidebarDelimChars, sidebar_folder_name[i]))
-+        {
-+          sidebar_folder_name += (i + 1);
-+          break;
-+        }
-+      }
-+    }
-+    else
-+      sidebar_folder_name = b->path + maildir_is_prefix * (maildirlen + 1);
-+
-+    if (maildir_is_prefix && option (OPTSIDEBARFOLDERINDENT))
-+    {
-+      const char *tmp_folder_name;
-+      int lastsep = 0;
-+      tmp_folder_name = b->path + maildirlen + 1;
-+      int tmplen = (int) strlen (tmp_folder_name) - 1;
-+      for (i = 0; i < tmplen; i++)
-+      {
-+        if (SidebarDelimChars && strchr (SidebarDelimChars, tmp_folder_name[i]))
-+        {
-+          sidebar_folder_depth++;
-+          lastsep = i + 1;
-+        }
-+      }
-+      if (sidebar_folder_depth > 0)
-+      {
-+        if (option (OPTSIDEBARSHORTPATH))
-+          tmp_folder_name += lastsep;  /* basename */
-+        sidebar_folder_name = malloc (strlen (tmp_folder_name) + sidebar_folder_depth*strlen (NONULL(SidebarIndentString)) + 1);
-+        sidebar_folder_name[0]=0;
-+        for (i=0; i < sidebar_folder_depth; i++)
-+          strncat (sidebar_folder_name, NONULL(SidebarIndentString), strlen (NONULL(SidebarIndentString)));
-+        strncat (sidebar_folder_name, tmp_folder_name, strlen (tmp_folder_name));
-+      }
-+    }
-+    char str[STRING];
-+    make_sidebar_entry (str, sizeof (str), w, sidebar_folder_name, b);
-+    printw ("%s", str);
-+    if (sidebar_folder_depth > 0)
-+      FREE (&sidebar_folder_name);
-+    row++;
-+  }
-+
-+  fill_empty_space (first_row + row, num_rows - row, w);
-+}
-+
-+
-+/**
-+ * mutt_sb_init - Set some default values for the sidebar.
-+ */
-+void
-+mutt_sb_init (void)
-+{
-+  OldVisible = option (OPTSIDEBAR);
-+  if (SidebarWidth > 0)
-+  {
-+    OldWidth = SidebarWidth;
-+  }
-+  else
-+  {
-+    OldWidth = 20;
-+    if (OldVisible)
-+    {
-+      SidebarWidth = OldWidth;
-+    }
-+  }
-+}
-+
-+/**
-+ * mutt_sb_draw - Completely redraw the sidebar
-+ *
-+ * Completely refresh the sidebar region.  First draw the divider; then, for
-+ * each BUFFY, call make_sidebar_entry; finally blank out any remaining space.
-+ */
-+void mutt_sb_draw (void)
-+{
-+  if (!visible())
-+    return;
-+
-+  /* XXX - if transitioning from invisible to visible */
-+  /* if (OldVisible == 0) */
-+  /* 	mutt_buffy_check (1); we probably have bad or no numbers */
-+
-+  int x = getcurx (stdscr);
-+  int y = getcury (stdscr);
-+
-+  int first_row = 0;
-+  int num_rows  = LINES - 2;
-+
-+  if (option (OPTHELP) || option (OPTSTATUSONTOP))
-+    first_row++;
-+
-+  if (option (OPTHELP))
-+    num_rows--;
-+
-+  int div_width = draw_divider (first_row, num_rows);
-+  if (div_width < 0)
-+    return;
-+
-+  if (!Incoming)
-+  {
-+    int w = MIN(COLS, (SidebarWidth - div_width));
-+    fill_empty_space (first_row, num_rows, w);
-+    return;
-+  }
-+
-+  if (!prepare_sidebar (num_rows))
-+    return;
-+
-+  draw_sidebar (first_row, num_rows, div_width);
-+  move (y, x);
-+}
-+
-+/**
-+ * mutt_sb_should_refresh - Check if the sidebar is due to be refreshed
-+ *
-+ * The "sidebar_refresh_time" config option allows the user to limit the frequency
-+ * with which the sidebar is refreshed.
-+ *
-+ * Returns:
-+ *	1  Yes, refresh is due
-+ *	0  No,  refresh happened recently
-+ */
-+int mutt_sb_should_refresh (void)
-+{
-+  if (!option (OPTSIDEBAR))
-+    return 0;
-+
-+  if (SidebarRefreshTime == 0)
-+    return 0;
-+
-+  time_t diff = (time (NULL) - LastRefresh);
-+
-+  return (diff >= SidebarRefreshTime);
-+}
-+
-+/**
-+ * mutt_sb_change_mailbox - Change the selected mailbox
-+ * @op: Operation code
-+ *
-+ * Change the selected mailbox, e.g. "Next mailbox", "Previous Mailbox
-+ * with new mail". The operations are listed OPS.SIDEBAR which is built
-+ * into an enum in keymap_defs.h.
-+ *
-+ * If the operation is successful, HilBuffy will be set to the new mailbox.
-+ * This function only *selects* the mailbox, doesn't *open* it.
-+ *
-+ * Allowed values are: OP_SIDEBAR_NEXT, OP_SIDEBAR_NEXT_NEW,
-+ * OP_SIDEBAR_PAGE_DOWN, OP_SIDEBAR_PAGE_UP, OP_SIDEBAR_PREV,
-+ * OP_SIDEBAR_PREV_NEW.
-+ */
-+void mutt_sb_change_mailbox (int op)
-+{
-+  BUFFY *b;
-+  if (!HilBuffy)	/* It'll get reset on the next draw */
-+    return;
-+
-+  switch (op)
-+  {
-+    case OP_SIDEBAR_NEXT:
-+      if (!HilBuffy->next)
-+        return;
-+      if (HilBuffy->next->is_hidden)
-+        return;
-+      HilBuffy = HilBuffy->next;
-+      break;
-+    case OP_SIDEBAR_NEXT_NEW:
-+      b = find_next_new (option (OPTSIDEBARNEXTNEWWRAP));
-+      if (!b)
-+        return;
-+      else
-+        HilBuffy = b;
-+      break;
-+    case OP_SIDEBAR_PAGE_DOWN:
-+      HilBuffy = BotBuffy;
-+      if (HilBuffy->next)
-+        HilBuffy = HilBuffy->next;
-+      break;
-+    case OP_SIDEBAR_PAGE_UP:
-+      HilBuffy = TopBuffy;
-+      if (HilBuffy != Incoming)
-+        HilBuffy = HilBuffy->prev;
-+      break;
-+    case OP_SIDEBAR_PREV:
-+      if (!HilBuffy->prev)
-+        return;
-+      if (HilBuffy->prev->is_hidden)	/* Can't happen, we've sorted the hidden to the end */
-+        return;
-+      HilBuffy = HilBuffy->prev;
-+      break;
-+    case OP_SIDEBAR_PREV_NEW:
-+      b = find_prev_new (option (OPTSIDEBARNEXTNEWWRAP));
-+      if (!b)
-+        return;
-+      else
-+        HilBuffy = b;
-+      break;
-+    default:
-+      return;
-+  }
-+
-+  /* We can change folder even if the sidebar is hidden */
-+  if (option (OPTSIDEBAR))
-+    mutt_sb_draw();
-+}
-+
-+/**
-+ * mutt_sb_set_buffystats - Update the BUFFY's message counts from the CONTEXT
-+ * @ctx:  A mailbox CONTEXT
-+ *
-+ * Given a mailbox CONTEXT, find a matching mailbox BUFFY and copy the message
-+ * counts into it.
-+ */
-+void mutt_sb_set_buffystats (const CONTEXT *ctx)
-+{
-+  /* Even if the sidebar's hidden,
-+   * we should take note of the new data. */
-+  BUFFY *b = Incoming;
-+  if (!ctx || !b)
-+    return;
-+
-+  for (; b; b = b->next)
-+  {
-+    if (!strcmp (b->path,     ctx->path) ||
-+        !strcmp (b->realpath, ctx->path))
-+    {
-+      b->msg_unread  = ctx->unread;
-+      b->msg_count   = ctx->msgcount;
-+      b->msg_flagged = ctx->flagged;
-+      break;
-+    }
-+  }
-+}
-+
-+/**
-+ * mutt_sb_get_highlight - Get the BUFFY that's highlighted in the sidebar
-+ *
-+ * Get the path of the mailbox that's highlighted in the sidebar.
-+ *
-+ * Returns:
-+ *	Mailbox path
-+ */
-+const char *mutt_sb_get_highlight (void)
-+{
-+  if (!HilBuffy)
-+    return NULL;
-+
-+  return HilBuffy->path;
-+}
-+
-+/**
-+ * mutt_sb_set_open_buffy - Set the OpnBuffy based on a mailbox path
-+ * @path: Mailbox path
-+ *
-+ * Search through the list of mailboxes.  If a BUFFY has a matching path, set
-+ * OpnBuffy to it.
-+ */
-+BUFFY *mutt_sb_set_open_buffy (const char *path)
-+{
-+  /* Even if the sidebar is hidden */
-+
-+  BUFFY *b = Incoming;
-+
-+  if (!path || !b)
-+    return NULL;
-+
-+  OpnBuffy = NULL;
-+
-+  for (; b; b = b->next)
-+  {
-+    if (!strcmp (b->path,     path) ||
-+        !strcmp (b->realpath, path))
-+    {
-+      OpnBuffy = b;
-+      HilBuffy = b;
-+      break;
-+    }
-+  }
-+
-+  return OpnBuffy;
-+}
-+
-+/**
-+ * mutt_sb_set_update_time - Note the time that the sidebar was updated
-+ *
-+ * Update the timestamp representing the last sidebar update.  If the user
-+ * configures "sidebar_refresh_time", this will help to reduce traffic.
-+ */
-+void mutt_sb_set_update_time (void)
-+{
-+  /* XXX - should this be public? */
-+
-+  LastRefresh = time (NULL);
-+}
-+
-+/**
-+ * mutt_sb_notify_mailbox - The state of a BUFFY is about to change
-+ *
-+ * We receive a notification:
-+ *	After a new BUFFY has been created
-+ *	Before a BUFFY is deleted
-+ *
-+ * Before a deletion, check that our pointers won't be invalidated.
-+ */
-+void mutt_sb_notify_mailbox (BUFFY *b, int created)
-+{
-+  if (!b)
-+    return;
-+
-+  /* Any new/deleted mailboxes will cause a refresh.  As long as
-+   * they're valid, our pointers will be updated in prepare_sidebar() */
-+
-+  if (created)
-+  {
-+    if (!TopBuffy)
-+      TopBuffy = b;
-+    if (!HilBuffy)
-+      HilBuffy = b;
-+    if (!BotBuffy)
-+      BotBuffy = b;
-+    if (!Outgoing)
-+      Outgoing = b;
-+    if (!OpnBuffy && Context)
-+    {
-+      /* This might happen if the user "unmailboxes *", then
-+       * "mailboxes" our current mailbox back again */
-+      if (mutt_strcmp (b->path, Context->path) == 0)
-+        OpnBuffy = b;
-+    }
-+  }
-+  else
-+  {
-+    BUFFY *replacement = buffy_going (b);
-+    if (TopBuffy == b)
-+      TopBuffy = replacement;
-+    if (OpnBuffy == b)
-+      OpnBuffy = NULL;
-+    if (HilBuffy == b)
-+      HilBuffy = replacement;
-+    if (BotBuffy == b)
-+      BotBuffy = replacement;
-+    if (Outgoing == b)
-+      Outgoing = replacement;
-+  }
-+}
-diff -urN mutt-1.6.1/sidebar.h mutt-1.6.1-sidebar/sidebar.h
---- mutt-1.6.1/sidebar.h	1970-01-01 01:00:00.000000000 +0100
-+++ mutt-1.6.1-sidebar/sidebar.h	2016-06-12 18:43:03.967503185 +0100
-@@ -0,0 +1,36 @@
-+/* Copyright (C) 2004 Justin Hibbits <jrh29@po.cwru.edu>
-+ * Copyright (C) 2004 Thomer M. Gil <mutt@thomer.com>
-+ * Copyright (C) 2015-2016 Richard Russon <rich@flatcap.org>
-+ *
-+ *     This program is free software; you can redistribute it and/or modify
-+ *     it under the terms of the GNU General Public License as published by
-+ *     the Free Software Foundation; either version 2 of the License, or
-+ *     (at your option) any later version.
-+ *
-+ *     This program is distributed in the hope that it will be useful,
-+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ *     GNU General Public License for more details.
-+ *
-+ *     You should have received a copy of the GNU General Public License
-+ *     along with this program; if not, write to the Free Software
-+ *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
-+ */
-+
-+#ifndef SIDEBAR_H
-+#define SIDEBAR_H
-+
-+#include "mutt.h"
-+#include "buffy.h"
-+
-+void         mutt_sb_change_mailbox (int op);
-+void         mutt_sb_draw (void);
-+const char * mutt_sb_get_highlight (void);
-+void         mutt_sb_init (void);
-+void         mutt_sb_notify_mailbox (BUFFY *b, int created);
-+void         mutt_sb_set_buffystats (const CONTEXT *ctx);
-+BUFFY *      mutt_sb_set_open_buffy (const char *path);
-+void         mutt_sb_set_update_time (void);
-+int          mutt_sb_should_refresh (void);
-+
-+#endif /* SIDEBAR_H */
-diff -urN mutt-1.6.1/sort.h mutt-1.6.1-sidebar/sort.h
---- mutt-1.6.1/sort.h	2016-06-12 18:43:00.415447793 +0100
-+++ mutt-1.6.1-sidebar/sort.h	2016-06-12 18:43:03.968503200 +0100
-@@ -31,6 +31,12 @@
- #define SORT_KEYID	12
- #define SORT_TRUST	13
- #define SORT_SPAM	14
-+#define SORT_COUNT	15
-+#define SORT_COUNT_NEW	16
-+#define SORT_DESC	17
-+#define SORT_FLAGGED	18
-+#define SORT_PATH	19
-+
- /* dgc: Sort & SortAux are shorts, so I'm bumping these bitflags up from
-  * bits 4 & 5 to bits 8 & 9 to make room for more sort keys in the future. */
- #define SORT_MASK	0xff
-@@ -50,6 +56,7 @@
- WHERE short Sort INITVAL (SORT_DATE);
- WHERE short SortAux INITVAL (SORT_DATE); /* auxiliary sorting method */
- WHERE short SortAlias INITVAL (SORT_ALIAS);
-+WHERE short SidebarSortMethod INITVAL (SORT_ORDER);
- 
- /* FIXME: This one does not belong to here */
- WHERE short PgpSortKeys INITVAL (SORT_ADDRESS);
diff --git a/pkgs/applications/networking/mailreaders/mutt/trash.patch b/pkgs/applications/networking/mailreaders/mutt/trash.patch
deleted file mode 100644
index a7bda4c4c8b..00000000000
--- a/pkgs/applications/networking/mailreaders/mutt/trash.patch
+++ /dev/null
@@ -1,797 +0,0 @@
-diff -urN mutt-1.6.1/commands.c mutt-1.6.1-trash/commands.c
---- mutt-1.6.1/commands.c	2016-06-12 18:43:00.397447512 +0100
-+++ mutt-1.6.1-trash/commands.c	2016-06-12 18:43:04.892517610 +0100
-@@ -720,6 +720,7 @@
-     if (option (OPTDELETEUNTAG))
-       mutt_set_flag (Context, h, M_TAG, 0);
-   }
-+  mutt_set_flag (Context, h, M_APPENDED, 1);
-   
-   return 0;
- }
-diff -urN mutt-1.6.1/curs_main.c mutt-1.6.1-trash/curs_main.c
---- mutt-1.6.1/curs_main.c	2016-06-12 18:43:00.399447544 +0100
-+++ mutt-1.6.1-trash/curs_main.c	2016-06-12 18:43:04.895517656 +0100
-@@ -1919,6 +1919,7 @@
- 	MAYBE_REDRAW (menu->redraw);
- 	break;
- 
-+      case OP_PURGE_MESSAGE:
-       case OP_DELETE:
- 
- 	CHECK_MSGCOUNT;
-@@ -1930,6 +1931,7 @@
- 	if (tag)
- 	{
- 	  mutt_tag_set_flag (M_DELETE, 1);
-+	  mutt_tag_set_flag (M_PURGED, (op != OP_PURGE_MESSAGE) ? 0 : 1);
- 	  if (option (OPTDELETEUNTAG))
- 	    mutt_tag_set_flag (M_TAG, 0);
- 	  menu->redraw = REDRAW_INDEX;
-@@ -1937,6 +1939,8 @@
- 	else
- 	{
- 	  mutt_set_flag (Context, CURHDR, M_DELETE, 1);
-+	  mutt_set_flag (Context, CURHDR, M_PURGED,
-+			 (op != OP_PURGE_MESSAGE) ? 0 : 1);
- 	  if (option (OPTDELETEUNTAG))
- 	    mutt_set_flag (Context, CURHDR, M_TAG, 0);
- 	  if (option (OPTRESOLVE))
-@@ -2242,11 +2246,13 @@
- 	if (tag)
- 	{
- 	  mutt_tag_set_flag (M_DELETE, 0);
-+	  mutt_tag_set_flag (M_PURGED, 0);
- 	  menu->redraw = REDRAW_INDEX;
- 	}
- 	else
- 	{
- 	  mutt_set_flag (Context, CURHDR, M_DELETE, 0);
-+	  mutt_set_flag (Context, CURHDR, M_PURGED, 0);
- 	  if (option (OPTRESOLVE) && menu->current < Context->vcount - 1)
- 	  {
- 	    menu->current++;
-@@ -2268,9 +2274,11 @@
- 	CHECK_ACL(M_ACL_DELETE, _("Cannot undelete message(s)"));
- 
- 	rc = mutt_thread_set_flag (CURHDR, M_DELETE, 0,
--				   op == OP_UNDELETE_THREAD ? 0 : 1);
-+				   op == OP_UNDELETE_THREAD ? 0 : 1)
-+	  + mutt_thread_set_flag (CURHDR, M_PURGED, 0,
-+				  (op == OP_UNDELETE_THREAD) ? 0 : 1);
- 
--	if (rc != -1)
-+	if (rc > -1)
- 	{
- 	  if (option (OPTRESOLVE))
- 	  {
-diff -urN mutt-1.6.1/doc/manual.xml.head mutt-1.6.1-trash/doc/manual.xml.head
---- mutt-1.6.1/doc/manual.xml.head	2016-06-12 18:43:00.402447590 +0100
-+++ mutt-1.6.1-trash/doc/manual.xml.head	2016-06-12 18:43:04.901517750 +0100
-@@ -7467,6 +7467,16 @@
- 
- </sect2>
- 
-+<sect2 id="mutt-patches">
-+<title>Mutt Patches</title>
-+<para>
-+Mutt may also be <quote>patched</quote> to support smaller features.
-+These patches should add a free-form string to the end Mutt's version string.
-+Running <literal>mutt -v</literal> might show:
-+<screen>patch-1.6.1.sidebar.20160502</screen>
-+</para>
-+</sect2>
-+
- <sect2 id="url-syntax">
- <title>URL Syntax</title>
- 
-@@ -8081,6 +8091,175 @@
- 
- </sect1>
- 
-+<sect1 id="trash-folder">
-+	<title>Trash Folder Patch</title>
-+	<subtitle>Automatically move "deleted" emails to a trash bin</subtitle>
-+
-+	<sect2 id="trash-folder-patch">
-+		<title>Patch</title>
-+
-+		<para>
-+			To check if Mutt supports <quote>Trash Folder</quote>, look for
-+			<quote>patch-trash</quote> in the mutt version.
-+			See: <xref linkend="mutt-patches"/>.
-+		</para>
-+
-+		If IMAP is enabled, this patch will use it
-+
-+		<itemizedlist>
-+			<title>Dependencies:</title>
-+			<listitem><para>mutt-1.6.1</para></listitem>
-+			<listitem><para>IMAP support</para></listitem>
-+		</itemizedlist>
-+
-+		<para>This patch is part of the <ulink url="http://www.neomutt.org/">NeoMutt Project</ulink>.</para>
-+	</sect2>
-+
-+	<sect2 id="trash-folder-intro">
-+		<title>Introduction</title>
-+
-+		<para>
-+		In Mutt, when you <quote>delete</quote> an email it is first marked
-+		deleted.  The email isn't really gone until
-+		<link linkend="index-map">&lt;sync-mailbox&gt;</link> is called.
-+		This happens when the user leaves the folder, or the function is called
-+		manually.
-+		</para>
-+
-+		<para>
-+		After <literal>&lt;sync-mailbox&gt;</literal> has been called the email is gone forever.
-+		</para>
-+
-+		<para>
-+		The <link linkend="trash">$trash</link> variable defines a folder in
-+		which to keep old emails.  As before, first you mark emails for
-+		deletion.  When &lt;sync-mailbox&gt; is called the emails are moved to
-+		the trash folder.
-+		</para>
-+
-+		<para>
-+		The <literal>$trash</literal> path can be either a full directory,
-+		or be relative to the <link linkend="folder">$folder</link>
-+		variable, like the <literal>mailboxes</literal> command.
-+		</para>
-+
-+		<note>
-+		Emails deleted from the trash folder are gone forever.
-+		</note>
-+	</sect2>
-+
-+	<sect2 id="trash-folder-variables">
-+		<title>Variables</title>
-+		<table id="table-trash-variables">
-+			<title>Trash Variables</title>
-+			<tgroup cols="3">
-+				<thead>
-+					<row>
-+						<entry>Name</entry>
-+						<entry>Type</entry>
-+						<entry>Default</entry>
-+					</row>
-+				</thead>
-+				<tbody>
-+					<row>
-+						<entry>trash</entry>
-+						<entry>string</entry>
-+						<entry>(none)</entry>
-+					</row>
-+				</tbody>
-+			</tgroup>
-+		</table>
-+	</sect2>
-+
-+	<sect2 id="trash-folder-functions">
-+		<title>Functions</title>
-+		<table id="table-trash-functions">
-+			<title>Trash Functions</title>
-+			<tgroup cols="4">
-+				<thead>
-+					<row>
-+						<entry>Menus</entry>
-+						<entry>Default Key</entry>
-+						<entry>Function</entry>
-+						<entry>Description</entry>
-+					</row>
-+				</thead>
-+				<tbody>
-+					<row>
-+						<entry>index,pager</entry>
-+						<entry>(none)</entry>
-+						<entry><literal>&lt;purge-message&gt;</literal></entry>
-+						<entry>really delete the current entry, bypassing the trash folder</entry>
-+					</row>
-+				</tbody>
-+			</tgroup>
-+		</table>
-+	</sect2>
-+
-+<!--
-+	<sect2 id="trash-folder-commands">
-+		<title>Commands</title>
-+		<para>None</para>
-+	</sect2>
-+
-+	<sect2 id="trash-folder-colors">
-+		<title>Colors</title>
-+		<para>None</para>
-+	</sect2>
-+
-+	<sect2 id="trash-folder-sort">
-+		<title>Sort</title>
-+		<para>None</para>
-+	</sect2>
-+-->
-+
-+	<sect2 id="trash-folder-muttrc">
-+		<title>Muttrc</title>
-+<screen>
-+<emphasis role="comment"># Example Mutt config file for the 'trash' feature.
-+ 
-+# This feature defines a new 'trash' folder.
-+# When mail is deleted it will be moved to this folder.
-+ 
-+# Folder in which to put deleted emails</emphasis>
-+set trash='+Trash'
-+set trash='/home/flatcap/Mail/Trash'
-+ 
-+<emphasis role="comment"># The default delete key 'd' will move an email to the 'trash' folder
-+# Bind 'D' to REALLY delete an email</emphasis>
-+bind index D purge-message
-+ 
-+<emphasis role="comment"># Note: Deleting emails from the 'trash' folder will REALLY delete them.
-+ 
-+# vim: syntax=muttrc</emphasis>
-+</screen>
-+	</sect2>
-+
-+	<sect2 id="trash-folder-see-also">
-+		<title>See Also</title>
-+
-+		<itemizedlist>
-+			<listitem><para><ulink url="http://www.neomutt.org/">NeoMutt Project</ulink></para></listitem>
-+			<listitem><para><link linkend="folder-hook">folder-hook</link></para></listitem>
-+		</itemizedlist>
-+	</sect2>
-+
-+	<sect2 id="trash-folder-known-bugs">
-+		<title>Known Bugs</title>
-+		<para>None</para>
-+	</sect2>
-+
-+	<sect2 id="trash-folder-credits">
-+		<title>Credits</title>
-+		<itemizedlist>
-+		<listitem><para>Cedric Duval <email>cedricduval@free.fr</email></para></listitem>
-+		<listitem><para>Benjamin Kuperman <email>kuperman@acm.org</email></para></listitem>
-+		<listitem><para>Paul Miller <email>paul@voltar.org</email></para></listitem>
-+		<listitem><para>Richard Russon <email>rich@flatcap.org</email></para></listitem>
-+		</itemizedlist>
-+	</sect2>
-+</sect1>
-+
- </chapter>
- 
- <chapter id="security">
-diff -urN mutt-1.6.1/doc/muttrc.trash mutt-1.6.1-trash/doc/muttrc.trash
---- mutt-1.6.1/doc/muttrc.trash	1970-01-01 01:00:00.000000000 +0100
-+++ mutt-1.6.1-trash/doc/muttrc.trash	2016-06-12 18:43:04.768515676 +0100
-@@ -0,0 +1,16 @@
-+# Example Mutt config file for the 'trash' feature.
-+
-+# This feature defines a new 'trash' folder.
-+# When mail is deleted it will be moved to this folder.
-+
-+# Folder in which to put deleted emails
-+set trash='+Trash'
-+set trash='/home/flatcap/Mail/Trash'
-+
-+# The default delete key 'd' will move an email to the 'trash' folder
-+# Bind 'D' to REALLY delete an email
-+bind index D purge-message
-+
-+# Note: Deleting emails from the 'trash' folder will REALLY delete them.
-+
-+# vim: syntax=muttrc
-diff -urN mutt-1.6.1/doc/vimrc.trash mutt-1.6.1-trash/doc/vimrc.trash
---- mutt-1.6.1/doc/vimrc.trash	1970-01-01 01:00:00.000000000 +0100
-+++ mutt-1.6.1-trash/doc/vimrc.trash	2016-06-12 18:43:04.769515692 +0100
-@@ -0,0 +1,7 @@
-+" Vim syntax file for the mutt trash patch
-+
-+syntax keyword muttrcVarStr     contained skipwhite trash                 nextgroup=muttrcVarEqualsIdxFmt
-+
-+syntax match muttrcFunction     contained "\<purge-message\>"
-+
-+" vim: syntax=vim
-diff -urN mutt-1.6.1/flags.c mutt-1.6.1-trash/flags.c
---- mutt-1.6.1/flags.c	2016-06-12 18:43:00.403447606 +0100
-+++ mutt-1.6.1-trash/flags.c	2016-06-12 18:43:04.902517766 +0100
-@@ -65,7 +65,13 @@
-       {
- 	h->deleted = 0;
-         update = 1;
--	if (upd_ctx) ctx->deleted--;
-+        if (upd_ctx) {
-+          ctx->deleted--;
-+          if (h->appended) {
-+            ctx->appended--;
-+	  }
-+        }
-+        h->appended = 0; /* when undeleting, also reset the appended flag */
- #ifdef USE_IMAP
-         /* see my comment above */
- 	if (ctx->magic == M_IMAP) 
-@@ -87,6 +93,27 @@
-       }
-       break;
- 
-+    case M_APPENDED:
-+      if (bf) {
-+        if (!h->appended) {
-+          h->appended = 1;
-+          if (upd_ctx) {
-+            ctx->appended++;
-+          }
-+        }
-+      }
-+      break;
-+
-+    case M_PURGED:
-+      if (bf) {
-+        if (!h->purged) {
-+          h->purged = 1;
-+        }
-+      } else if (h->purged) {
-+        h->purged = 0;
-+      }
-+      break;
-+
-     case M_NEW:
- 
-       if (!mutt_bit_isset(ctx->rights,M_ACL_SEEN))
-diff -urN mutt-1.6.1/functions.h mutt-1.6.1-trash/functions.h
---- mutt-1.6.1/functions.h	2016-06-12 18:43:00.403447606 +0100
-+++ mutt-1.6.1-trash/functions.h	2016-06-12 18:43:04.902517766 +0100
-@@ -121,6 +121,7 @@
-   { "toggle-write",		OP_TOGGLE_WRITE,		"%" },
-   { "next-thread",		OP_MAIN_NEXT_THREAD,		"\016" },
-   { "next-subthread",		OP_MAIN_NEXT_SUBTHREAD,		"\033n" },
-+  { "purge-message",		OP_PURGE_MESSAGE,		NULL },
-   { "query",			OP_QUERY,			"Q" },
-   { "quit",			OP_QUIT,			"q" },
-   { "reply",			OP_REPLY,			"r" },
-@@ -213,6 +214,7 @@
-   { "print-message",	OP_PRINT,			"p" },
-   { "previous-thread",	OP_MAIN_PREV_THREAD,		"\020" },
-   { "previous-subthread",OP_MAIN_PREV_SUBTHREAD,	"\033p" },
-+  { "purge-message",	OP_PURGE_MESSAGE,		NULL },
-   { "quit",		OP_QUIT,			"Q" },
-   { "exit",		OP_EXIT,			"q" },
-   { "reply",		OP_REPLY,			"r" },
-diff -urN mutt-1.6.1/globals.h mutt-1.6.1-trash/globals.h
---- mutt-1.6.1/globals.h	2016-06-12 18:43:00.403447606 +0100
-+++ mutt-1.6.1-trash/globals.h	2016-06-12 18:43:04.903517781 +0100
-@@ -141,6 +141,7 @@
- WHERE char *Status;
- WHERE char *Tempdir;
- WHERE char *Tochars;
-+WHERE char *TrashPath;
- WHERE char *TSStatusFormat;
- WHERE char *TSIconFormat;
- WHERE short TSSupported;
-diff -urN mutt-1.6.1/imap/imap.c mutt-1.6.1-trash/imap/imap.c
---- mutt-1.6.1/imap/imap.c	2016-06-12 18:43:00.405447637 +0100
-+++ mutt-1.6.1-trash/imap/imap.c	2016-06-12 18:43:04.905517812 +0100
-@@ -888,6 +888,12 @@
-           if (hdrs[n]->deleted != HEADER_DATA(hdrs[n])->deleted)
-             match = invert ^ hdrs[n]->deleted;
- 	  break;
-+        case M_EXPIRED: /* imap_fast_trash version of M_DELETED */
-+	  if (hdrs[n]->purged)
-+	    break;
-+          if (hdrs[n]->deleted != HEADER_DATA(hdrs[n])->deleted)
-+            match = invert ^ (hdrs[n]->deleted && !hdrs[n]->appended);
-+	  break;
-         case M_FLAG:
-           if (hdrs[n]->flagged != HEADER_DATA(hdrs[n])->flagged)
-             match = invert ^ hdrs[n]->flagged;
-@@ -2038,3 +2044,53 @@
- 
-   return -1;
- }
-+
-+/**
-+ * imap_fast_trash - XXX
-+ */
-+int
-+imap_fast_trash (void)
-+{
-+	if ((Context->magic == M_IMAP) && mx_is_imap (TrashPath)) {
-+		IMAP_MBOX mx;
-+		IMAP_DATA *idata = (IMAP_DATA *) Context->data;
-+		char mbox[LONG_STRING];
-+		char mmbox[LONG_STRING];
-+		int rc;
-+		dprint (1, (debugfile, "[itf] trashcan seems to be on imap.\n"));
-+
-+		if (imap_parse_path (TrashPath, &mx) == 0) {
-+			if (mutt_account_match (&(idata->conn->account), &(mx.account))) {
-+				dprint (1, (debugfile, "[itf] trashcan seems to be on the same account.\n"));
-+
-+				imap_fix_path (idata, mx.mbox, mbox, sizeof (mbox));
-+				if (!*mbox)
-+					strfcpy (mbox, "INBOX", sizeof (mbox));
-+				imap_munge_mbox_name (idata, mmbox, sizeof (mmbox), mbox);
-+
-+				rc = imap_exec_msgset (idata, "UID COPY", mmbox, M_EXPIRED, 0, 0);
-+				if (rc == 0) {
-+					dprint (1, (debugfile, "imap_copy_messages: No messages del-tagged\n"));
-+					rc = -1;
-+					goto old_way;
-+				} else if (rc < 0) {
-+					dprint (1, (debugfile, "could not queue copy\n"));
-+					goto old_way;
-+				} else {
-+					mutt_message (_("Copying %d messages to %s..."), rc, mbox);
-+					return 0;
-+				}
-+			} else {
-+				dprint (1, (debugfile, "[itf] trashcan seems to be on a different account.\n"));
-+			}
-+old_way:
-+			FREE(&mx.mbox); /* we probably only need to free this when the parse works */
-+		} else {
-+			dprint (1, (debugfile, "[itf] failed to parse TrashPath.\n"));
-+		}
-+
-+		dprint (1, (debugfile, "[itf] giving up and trying old fasioned way.\n"));
-+	}
-+
-+	return 1;
-+}
-diff -urN mutt-1.6.1/imap/imap.h mutt-1.6.1-trash/imap/imap.h
---- mutt-1.6.1/imap/imap.h	2016-06-12 18:43:00.405447637 +0100
-+++ mutt-1.6.1-trash/imap/imap.h	2016-06-12 18:43:04.774515769 +0100
-@@ -72,4 +72,7 @@
- 
- int imap_account_match (const ACCOUNT* a1, const ACCOUNT* a2);
- 
-+/* trash */
-+int imap_fast_trash (void);
-+
- #endif
-diff -urN mutt-1.6.1/imap/message.c mutt-1.6.1-trash/imap/message.c
---- mutt-1.6.1/imap/message.c	2016-06-12 18:43:00.406447652 +0100
-+++ mutt-1.6.1-trash/imap/message.c	2016-06-12 18:43:04.906517828 +0100
-@@ -886,6 +886,7 @@
-         if (ctx->hdrs[n]->tagged)
-         {
-           mutt_set_flag (ctx, ctx->hdrs[n], M_DELETE, 1);
-+          mutt_set_flag (ctx, ctx->hdrs[n], M_APPENDED, 1);
-           if (option (OPTDELETEUNTAG))
-             mutt_set_flag (ctx, ctx->hdrs[n], M_TAG, 0);
-         }
-@@ -893,6 +894,7 @@
-     else
-     {
-       mutt_set_flag (ctx, h, M_DELETE, 1);
-+      mutt_set_flag (ctx, h, M_APPENDED, 1);
-       if (option (OPTDELETEUNTAG))
-         mutt_set_flag (ctx, h, M_TAG, 0);
-     }
-diff -urN mutt-1.6.1/init.h mutt-1.6.1-trash/init.h
---- mutt-1.6.1/init.h	2016-06-12 18:43:00.408447684 +0100
-+++ mutt-1.6.1-trash/init.h	2016-06-12 18:43:04.909517875 +0100
-@@ -3419,6 +3419,16 @@
-   ** provided that ``$$ts_enabled'' has been set. This string is identical in
-   ** formatting to the one used by ``$$status_format''.
-   */
-+  { "trash",            DT_PATH, R_NONE, UL &TrashPath, 0 },
-+  /*
-+  ** .pp
-+  ** If set, this variable specifies the path of the trash folder where the
-+  ** mails marked for deletion will be moved, instead of being irremediably
-+  ** purged.
-+  ** .pp
-+  ** NOTE: When you delete a message in the trash folder, it is really
-+  ** deleted, so that you have a way to clean the trash.
-+  */
- #ifdef USE_SOCKET
-   { "tunnel",            DT_STR, R_NONE, UL &Tunnel, UL 0 },
-   /*
-diff -urN mutt-1.6.1/mutt.h mutt-1.6.1-trash/mutt.h
---- mutt-1.6.1/mutt.h	2016-06-12 18:43:00.410447715 +0100
-+++ mutt-1.6.1-trash/mutt.h	2016-06-12 18:43:04.912517922 +0100
-@@ -182,6 +182,8 @@
-   M_DELETE,
-   M_UNDELETE,
-   M_DELETED,
-+  M_APPENDED,
-+  M_PURGED,
-   M_FLAG,
-   M_TAG,
-   M_UNTAG,
-@@ -719,6 +721,8 @@
-   unsigned int mime : 1;    		/* has a MIME-Version header? */
-   unsigned int flagged : 1; 		/* marked important? */
-   unsigned int tagged : 1;
-+  unsigned int appended : 1;		/* has been saved */
-+  unsigned int purged : 1;   /* bypassing the trash folder */
-   unsigned int deleted : 1;
-   unsigned int changed : 1;
-   unsigned int attach_del : 1; 		/* has an attachment marked for deletion */
-@@ -891,6 +895,7 @@
-   int new;			/* how many new messages? */
-   int unread;			/* how many unread messages? */
-   int deleted;			/* how many deleted messages */
-+  int appended;                 /* how many saved messages? */
-   int flagged;			/* how many flagged messages */
-   int msgnotreadyet;		/* which msg "new" in pager, -1 if none */
- 
-diff -urN mutt-1.6.1/muttlib.c mutt-1.6.1-trash/muttlib.c
---- mutt-1.6.1/muttlib.c	2016-06-12 18:43:00.411447731 +0100
-+++ mutt-1.6.1-trash/muttlib.c	2016-06-12 18:43:04.913517937 +0100
-@@ -1511,7 +1511,9 @@
- 
-   if (magic > 0 && !mx_access (s, W_OK))
-   {
--    if (option (OPTCONFIRMAPPEND))
-+    if (option (OPTCONFIRMAPPEND) &&
-+       (!TrashPath || (mutt_strcmp (s, TrashPath) != 0)))
-+       /* if we're appending to the trash, there's no point in asking */
-     {
-       snprintf (tmp, sizeof (tmp), _("Append messages to %s?"), s);
-       if ((rc = mutt_yesorno (tmp, M_YES)) == M_NO)
-diff -urN mutt-1.6.1/mx.c mutt-1.6.1-trash/mx.c
---- mutt-1.6.1/mx.c	2016-06-12 18:43:00.411447731 +0100
-+++ mutt-1.6.1-trash/mx.c	2016-06-12 18:43:04.914517953 +0100
-@@ -776,6 +776,62 @@
-   return rc;
- }
- 
-+/**
-+ * trash_append - XXX
-+ *
-+ * move deleted mails to the trash folder
-+ */
-+static int trash_append (CONTEXT *ctx)
-+{
-+	CONTEXT *ctx_trash;
-+	int i = 0;
-+	struct stat st, stc;
-+
-+	if (!TrashPath || !ctx->deleted ||
-+	   ((ctx->magic == M_MAILDIR) && option (OPTMAILDIRTRASH))) {
-+		return 0;
-+	}
-+
-+	for (; i < ctx->msgcount && (!ctx->hdrs[i]->deleted || ctx->hdrs[i]->appended); i++);
-+		/* nothing */
-+
-+	if (i == ctx->msgcount)
-+		return 0; /* nothing to be done */
-+
-+	if (mutt_save_confirm (TrashPath, &st) != 0) {
-+		mutt_error _("message(s) not deleted");
-+		return -1;
-+	}
-+
-+	if (lstat (ctx->path, &stc) == 0 && stc.st_ino == st.st_ino
-+	    && stc.st_dev == st.st_dev && stc.st_rdev == st.st_rdev) {
-+		return 0;  /* we are in the trash folder: simple sync */
-+	}
-+
-+#ifdef USE_IMAP
-+	if (!imap_fast_trash())
-+		return 0;
-+#endif
-+
-+	if ((ctx_trash = mx_open_mailbox (TrashPath, M_APPEND, NULL)) != NULL) {
-+		for (i = 0 ; i < ctx->msgcount ; i++) {
-+			if (ctx->hdrs[i]->deleted && !ctx->hdrs[i]->appended
-+			    && !ctx->hdrs[i]->purged
-+			    && mutt_append_message (ctx_trash, ctx, ctx->hdrs[i], 0, 0) == -1) {
-+				mx_close_mailbox (ctx_trash, NULL);
-+				return -1;
-+			}
-+		}
-+
-+		mx_close_mailbox (ctx_trash, NULL);
-+	} else {
-+		mutt_error _("Can't open trash folder");
-+		return -1;
-+	}
-+
-+	return 0;
-+}
-+
- /* save changes and close mailbox */
- int mx_close_mailbox (CONTEXT *ctx, int *index_hint)
- {
-@@ -912,6 +968,7 @@
- 	  if (mutt_append_message (&f, ctx, ctx->hdrs[i], 0, CH_UPDATE_LEN) == 0)
- 	  {
- 	    mutt_set_flag (ctx, ctx->hdrs[i], M_DELETE, 1);
-+	    mutt_set_flag (ctx, ctx->hdrs[i], M_APPENDED, 1);
- 	  }
- 	  else
- 	  {
-@@ -936,6 +993,14 @@
-     return 0;
-   }
-   
-+  /* copy mails to the trash before expunging */
-+  if (purge && ctx->deleted && mutt_strcmp (ctx->path, TrashPath)) {
-+    if (trash_append (ctx) != 0) {
-+      ctx->closing = 0;
-+      return -1;
-+    }
-+  }
-+
- #ifdef USE_IMAP
-   /* allow IMAP to preserve the deleted flag across sessions */
-   if (ctx->magic == M_IMAP)
-@@ -1140,6 +1205,12 @@
-   msgcount = ctx->msgcount;
-   deleted = ctx->deleted;
- 
-+  if (purge && ctx->deleted && mutt_strcmp (ctx->path, TrashPath)) {
-+    if (trash_append (ctx) == -1) {
-+      return -1;
-+    }
-+  }
-+
- #ifdef USE_IMAP
-   if (ctx->magic == M_IMAP)
-     rc = imap_sync_mailbox (ctx, purge, index_hint);
-diff -urN mutt-1.6.1/OPS mutt-1.6.1-trash/OPS
---- mutt-1.6.1/OPS	2016-06-12 18:43:00.389447388 +0100
-+++ mutt-1.6.1-trash/OPS	2016-06-12 18:43:04.883517469 +0100
-@@ -142,6 +142,7 @@
- OP_PREV_LINE "scroll up one line"
- OP_PREV_PAGE "move to the previous page"
- OP_PRINT "print the current entry"
-+OP_PURGE_MESSAGE "really delete the current entry, bypassing the trash folder"
- OP_QUERY "query external program for addresses"
- OP_QUERY_APPEND "append new query results to current results"
- OP_QUIT "save changes to mailbox and quit"
-diff -urN mutt-1.6.1/pager.c mutt-1.6.1-trash/pager.c
---- mutt-1.6.1/pager.c	2016-06-12 18:43:00.412447746 +0100
-+++ mutt-1.6.1-trash/pager.c	2016-06-12 18:43:04.915517968 +0100
-@@ -2351,6 +2351,7 @@
- 	MAYBE_REDRAW (redraw);
- 	break;
- 
-+      case OP_PURGE_MESSAGE:
-       case OP_DELETE:
- 	CHECK_MODE(IsHeader (extra));
- 	CHECK_READONLY;
-@@ -2358,6 +2359,8 @@
- 	CHECK_ACL(M_ACL_DELETE, _("Cannot delete message"));
- 
- 	mutt_set_flag (Context, extra->hdr, M_DELETE, 1);
-+	mutt_set_flag (Context, extra->hdr, M_PURGED,
-+		       ch != OP_PURGE_MESSAGE ? 0 : 1);
-         if (option (OPTDELETEUNTAG))
- 	  mutt_set_flag (Context, extra->hdr, M_TAG, 0);
- 	redraw = REDRAW_STATUS | REDRAW_INDEX;
-@@ -2688,6 +2691,7 @@
- 	CHECK_ACL(M_ACL_DELETE, _("Cannot undelete message"));
- 
- 	mutt_set_flag (Context, extra->hdr, M_DELETE, 0);
-+	mutt_set_flag (Context, extra->hdr, M_PURGED, 0);
- 	redraw = REDRAW_STATUS | REDRAW_INDEX;
- 	if (option (OPTRESOLVE))
- 	{
-@@ -2704,9 +2708,11 @@
- 	CHECK_ACL(M_ACL_DELETE, _("Cannot undelete message(s)"));
- 
- 	r = mutt_thread_set_flag (extra->hdr, M_DELETE, 0,
-+				  ch == OP_UNDELETE_THREAD ? 0 : 1)
-+	  + mutt_thread_set_flag (extra->hdr, M_PURGED, 0,
- 				  ch == OP_UNDELETE_THREAD ? 0 : 1);
- 
--	if (r != -1)
-+	if (r > -1)
- 	{
- 	  if (option (OPTRESOLVE))
- 	  {
-diff -urN mutt-1.6.1/PATCHES mutt-1.6.1-trash/PATCHES
---- mutt-1.6.1/PATCHES	2016-06-12 18:43:00.395447481 +0100
-+++ mutt-1.6.1-trash/PATCHES	2016-06-12 18:43:04.889517563 +0100
-@@ -0,0 +1 @@
-+patch-trash-neo-20160612
-diff -urN mutt-1.6.1/pattern.c mutt-1.6.1-trash/pattern.c
---- mutt-1.6.1/pattern.c	2016-06-12 18:43:00.413447762 +0100
-+++ mutt-1.6.1-trash/pattern.c	2016-06-12 18:43:04.916517984 +0100
-@@ -1367,8 +1367,9 @@
-       {
- 	switch (op)
- 	{
--	  case M_DELETE:
- 	  case M_UNDELETE:
-+	    mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_PURGED, 0);
-+	  case M_DELETE:
- 	    mutt_set_flag (Context, Context->hdrs[Context->v2r[i]], M_DELETE, 
- 			  (op == M_DELETE));
- 	    break;
-diff -urN mutt-1.6.1/postpone.c mutt-1.6.1-trash/postpone.c
---- mutt-1.6.1/postpone.c	2016-06-12 18:43:00.414447777 +0100
-+++ mutt-1.6.1-trash/postpone.c	2016-06-12 18:43:04.917518000 +0100
-@@ -277,6 +277,9 @@
-   /* finished with this message, so delete it. */
-   mutt_set_flag (PostContext, h, M_DELETE, 1);
- 
-+  /* and consider it saved, so that it won't be moved to the trash folder */
-+  mutt_set_flag (PostContext, h, M_APPENDED, 1);
-+
-   /* update the count for the status display */
-   PostCount = PostContext->msgcount - PostContext->deleted;
- 
-diff -urN mutt-1.6.1/README.trash mutt-1.6.1-trash/README.trash
---- mutt-1.6.1/README.trash	1970-01-01 01:00:00.000000000 +0100
-+++ mutt-1.6.1-trash/README.trash	2016-06-12 18:43:04.748515364 +0100
-@@ -0,0 +1,74 @@
-+Trash Folder Patch
-+==================
-+
-+    Automatically move "deleted" emails to a trash bin
-+
-+Patch
-+-----
-+
-+    To check if Mutt supports "Trash Folder", look for "patch-trash" in the
-+    mutt version.
-+
-+    If IMAP is enabled, this patch will use it
-+
-+    Dependencies
-+    * mutt-1.6.1
-+    * IMAP support
-+
-+Introduction
-+------------
-+
-+    In Mutt, when you "delete" an email it is first marked deleted. The email
-+    isn't really gone until <sync-mailbox> is called. This happens when the
-+    user leaves the folder, or the function is called manually.
-+
-+    After '<sync-mailbox>' has been called the email is gone forever.
-+
-+    The $trash variable defines a folder in which to keep old emails. As
-+    before, first you mark emails for deletion. When <sync-mailbox> is called
-+    the emails are moved to the trash folder.
-+
-+    The '$trash' path can be either a full directory, or be relative to the
-+    $folder variable, like the 'mailboxes' command.
-+
-+    > Note
-+    >
-+    > Emails deleted from the trash folder are gone forever.
-+
-+Variables
-+---------
-+
-+    Trash Variables
-+
-+    | Name  | Type   | Default |
-+    |-------|--------|---------|
-+    | trash | string | (none)  |
-+
-+Functions
-+---------
-+
-+    Trash Functions
-+
-+    | Menus       | Default Key | Function          | Description                                                 |
-+    |-------------|-------------|-------------------|-------------------------------------------------------------|
-+    | index,pager | (none)      | '<purge-message>' | really delete the current entry, bypassing the trash folder |
-+
-+See Also
-+--------
-+
-+    * NeoMutt project
-+    * folder-hook
-+
-+Known Bugs
-+----------
-+
-+    None
-+
-+Credits
-+-------
-+
-+    * Cedric Duval <cedricduval@free.fr>
-+    * Benjamin Kuperman <kuperman@acm.org>
-+    * Paul Miller <paul@voltar.org>
-+    * Richard Russon <rich@flatcap.org>
-+
diff --git a/pkgs/applications/networking/syncthing/default.nix b/pkgs/applications/networking/syncthing/default.nix
index 87d74aeafd8..b6d318011aa 100644
--- a/pkgs/applications/networking/syncthing/default.nix
+++ b/pkgs/applications/networking/syncthing/default.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchgit, go }:
 
 stdenv.mkDerivation rec {
-  version = "0.13.9";
+  version = "0.13.10";
   name = "syncthing-${version}";
 
   src = fetchgit {
     url = https://github.com/syncthing/syncthing;
     rev = "refs/tags/v${version}";
-    sha256 = "1ah3a86rjfqlx4mqyvn8j3r806i65mzhs5xnfg4aakzmwpr5zpx0";
+    sha256 = "07q3j6mnrza719rnvbkdsmvlkyr2pch5sj2l204m5iy5mxaghpx7";
   };
 
   buildInputs = [ go ];
diff --git a/pkgs/applications/office/kmymoney/default.nix b/pkgs/applications/office/kmymoney/default.nix
index 8884c78e883..2516cfd4597 100644
--- a/pkgs/applications/office/kmymoney/default.nix
+++ b/pkgs/applications/office/kmymoney/default.nix
@@ -3,11 +3,12 @@
 , doxygen, aqbanking, gwenhywfar }:
 
 stdenv.mkDerivation rec {
-  name = "kmymoney-4.7.2";
+  name = "kmymoney-${version}";
+  version = "4.8.0";
 
   src = fetchurl {
-    url = "mirror://sourceforge/kmymoney2/${name}.tar.xz";
-    sha256 = "0g9rakjx7zmw4bf7m5516rrx0n3bl2by3nn24iiz9209yfgw5cmz";
+    url = "mirror://kde/stable/kmymoney/${version}/src/${name}.tar.xz";
+    sha256 = "1hlayhcmdfayma4hchv2bfyg82ry0h74hg4095d959mg19qkb9n2";
   };
 
   cmakeFlags = [
diff --git a/pkgs/applications/office/libreoffice/default.nix b/pkgs/applications/office/libreoffice/default.nix
index 9c1e1b78990..63af5babca2 100644
--- a/pkgs/applications/office/libreoffice/default.nix
+++ b/pkgs/applications/office/libreoffice/default.nix
@@ -124,6 +124,8 @@ in stdenv.mkDerivation rec {
     sed -e /CppunitTest_sd_tiledrendering/d -i sd/Module_sd.mk
     # one more fragile test?
     sed -e '/CPPUNIT_TEST(testTdf96536);/d' -i sw/qa/extras/uiwriter/uiwriter.cxx
+    # rendering-dependent test
+    sed -e '/CPPUNIT_ASSERT_EQUAL(11148L, pOleObj->GetLogicRect().getWidth());/d ' -i sc/qa/unit/subsequent_filters-test.cxx
   '';
 
   makeFlags = "SHELL=${bash}/bin/bash";
diff --git a/pkgs/applications/office/libreoffice/still.nix b/pkgs/applications/office/libreoffice/still.nix
index b8ad900fb14..eadf4135630 100644
--- a/pkgs/applications/office/libreoffice/still.nix
+++ b/pkgs/applications/office/libreoffice/still.nix
@@ -124,6 +124,8 @@ in stdenv.mkDerivation rec {
     sed -e /CppunitTest_sd_tiledrendering/d -i sd/Module_sd.mk
     # one more fragile test?
     sed -e '/CPPUNIT_TEST(testTdf96536);/d' -i sw/qa/extras/uiwriter/uiwriter.cxx
+    # rendering-dependent test
+    sed -e '/CPPUNIT_ASSERT_EQUAL(11148L, pOleObj->GetLogicRect().getWidth());/d ' -i sc/qa/unit/subsequent_filters-test.cxx
   '';
 
   makeFlags = "SHELL=${bash}/bin/bash";
diff --git a/pkgs/applications/office/mendeley/default.nix b/pkgs/applications/office/mendeley/default.nix
index 529c41ec899..5ad6df96325 100644
--- a/pkgs/applications/office/mendeley/default.nix
+++ b/pkgs/applications/office/mendeley/default.nix
@@ -19,7 +19,7 @@ let
   url = "http://desktop-download.mendeley.com/download/apt/pool/main/m/mendeleydesktop/mendeleydesktop_${version}.deb";
   sha256 = if stdenv.system == arch32
     then "0lsmaw8zzyfvndsz1awz3vl5cdvsik9wc3ck8983y20awh7r9f4m"
-    else "12p6rgxiqajnfgd8nmknyb8icdkln727sshba8x1xlxakxg5c4q4";
+    else "0q11v6dv7z5q4s9hlr1hmsd73nmkp8l0sj0b3hjxfblx4mqk6wl7";
 
   deps = [
     gcc.cc
diff --git a/pkgs/applications/office/planner/default.nix b/pkgs/applications/office/planner/default.nix
new file mode 100644
index 00000000000..9222ed5757c
--- /dev/null
+++ b/pkgs/applications/office/planner/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl
+, pkgconfig
+, intltool
+, gnome
+, libxslt
+, python
+}:
+
+let
+  version = "${major}.${minor}.${patch}";
+  major = "0";
+  minor = "14";
+  patch = "6";
+
+in stdenv.mkDerivation {
+  name = "planner-${version}";
+
+  src = fetchurl {
+    url = "http://ftp.gnome.org/pub/GNOME/sources/planner/${major}.${minor}/planner-${version}.tar.xz";
+    sha256 = "15h6ps58giy5r1g66sg1l4xzhjssl362mfny2x09khdqsvk2j38k";
+  };
+
+  buildInputs = [
+    pkgconfig
+    intltool
+    gnome.GConf
+    gnome.gtk
+    gnome.libgnomecanvas
+    gnome.libgnomeui
+    gnome.libglade
+    gnome.scrollkeeper
+    libxslt
+    python
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Planner/;
+    description = "Project management application for GNOME";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.rasendubi ];
+  };
+}
diff --git a/pkgs/applications/science/electronics/fritzing/default.nix b/pkgs/applications/science/electronics/fritzing/default.nix
index 110759ea292..3f80ed2866d 100644
--- a/pkgs/applications/science/electronics/fritzing/default.nix
+++ b/pkgs/applications/science/electronics/fritzing/default.nix
@@ -9,8 +9,18 @@ stdenv.mkDerivation rec {
     sha256 = "181qnknq1j5x075icpw2qk0sc4wcj9f2hym533vs936is0wxp2gk";
   };
 
+  unpackPhase = ''
+    tar xjf ${src}
+  '';
+
   buildInputs = [ qtbase qtsvg boost qmakeHook ];
 
+  qmakeFlags = [ "phoenix.pro" ];
+
+  preConfigure = ''
+    cd fritzing-${version}.source
+  '';
+  
   meta = {
     description = "An open source prototyping tool for Arduino-based projects";
     homepage = http://fritzing.org/;
diff --git a/pkgs/applications/science/logic/coq/8.5.nix b/pkgs/applications/science/logic/coq/8.5.nix
index 1485626125d..eb74891f511 100644
--- a/pkgs/applications/science/logic/coq/8.5.nix
+++ b/pkgs/applications/science/logic/coq/8.5.nix
@@ -6,7 +6,7 @@
 {stdenv, fetchurl, writeText, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null, csdp ? null}:
 
 let
-  version = "8.5pl1";
+  version = "8.5pl2";
   coq-version = "8.5";
   buildIde = lablgtk != null;
   ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
@@ -24,7 +24,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "http://coq.inria.fr/distrib/V${version}/files/coq-${version}.tar.gz";
-    sha256 = "1w2xvm6w16khfn63bp95s25hnkn2ny3w0yqg3lq63gp11aqpbyjb";
+    sha256 = "0wyywia0darak2zmc5v0ra9rn0b9whwdfiahralm8v5za499s8w3";
   };
 
   buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ];
@@ -34,7 +34,7 @@ stdenv.mkDerivation {
     RM=$(type -tp rm)
     substituteInPlace configure --replace "/bin/uname" "$UNAME"
     substituteInPlace tools/beautify-archive --replace "/bin/rm" "$RM"
-    substituteInPlace configure.ml --replace "if arch = \"Darwin\" then \"md5" "if arch = \"Darwinx\" then \"md5"
+    substituteInPlace configure.ml --replace "if arch = \"Darwin\" || arch = \"FreeBSD\" then \"md5" "if arch = \"Darwinx\" then \"md5"
     ${csdpPatch}
   '';
 
diff --git a/pkgs/applications/science/logic/tptp/default.nix b/pkgs/applications/science/logic/tptp/default.nix
index e9a89bc0dc6..32906b88d59 100644
--- a/pkgs/applications/science/logic/tptp/default.nix
+++ b/pkgs/applications/science/logic/tptp/default.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation rec {
   name = "TPTP-${version}";
-  version = "6.3.0";
+  version = "6.4.0";
 
   src = fetchurl {
     url = [
       "http://www.cs.miami.edu/~tptp/TPTP/Distribution/TPTP-v${version}.tgz"
       "http://www.cs.miami.edu/~tptp/TPTP/Archive/TPTP-v${version}/TPTP-v${version}.tgz"
     ];
-    sha256 = "0xy4cqniyx9fv8r9mc5q5b7xl163pkr9hcmpq6gkls2a0pvg07w9";
+    sha256 = "1i5hi8grfl5zyh8py63zn39rg019bd90h2l312iswbgai6nyfdw0";
   };
 
   buildInputs = [ tcsh yap perl patchelf ];
diff --git a/pkgs/applications/science/logic/why3/default.nix b/pkgs/applications/science/logic/why3/default.nix
index 7825fc2761e..3891f3ca6d1 100644
--- a/pkgs/applications/science/logic/why3/default.nix
+++ b/pkgs/applications/science/logic/why3/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name    = "why3-${version}";
-  version = "0.87.0";
+  version = "0.87.1";
 
   src = fetchurl {
-    url    = https://gforge.inria.fr/frs/download.php/file/35643/why3-0.87.0.tar.gz;
-    sha256 = "0c3vhcb70ay7iwvmq0m25fqh38y40c5x7mki4r9pxf13vgbs3xb0";
+    url    = https://gforge.inria.fr/frs/download.php/file/35893/why3-0.87.1.tar.gz;
+    sha256 = "1ssik2f6fkpvwpdmxz8hrm3p62qas3sjlqya0r57s60ilpkgiwwb";
   };
 
   buildInputs = (with ocamlPackages; [
diff --git a/pkgs/applications/science/math/LiE/default.nix b/pkgs/applications/science/math/LiE/default.nix
index 233f44b44cc..b448b511421 100644
--- a/pkgs/applications/science/math/LiE/default.nix
+++ b/pkgs/applications/science/math/LiE/default.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
     cp -v Lie.exe $out
     cp -v lie $out/bin
 
-    cp -v LEARN LEARN.ind $out
-    cp -v INFO.ind INFO.[0-4] $out
+    cp -v LEARN* $out
+    cp -v INFO* $out
   '';
 }
diff --git a/pkgs/applications/science/math/jags/default.nix b/pkgs/applications/science/math/jags/default.nix
index 9d70d268691..ceebfa458a8 100644
--- a/pkgs/applications/science/math/jags/default.nix
+++ b/pkgs/applications/science/math/jags/default.nix
@@ -1,10 +1,10 @@
 {stdenv, fetchurl, gfortran, openblas}:
 
 stdenv.mkDerivation rec {
-  name = "JAGS-3.4.0";
+  name = "JAGS-4.1.0";
   src = fetchurl {
     url = "mirror://sourceforge/mcmc-jags/${name}.tar.gz";
-    sha256 = "0ayqsz9kkmbss7mxlwr34ch2z1vsb65lryjzqpprab1ccyiaksib";
+    sha256 = "08pmrnbwibc0brgn5cx860jcl0s2xaw4amw7g45649r1bcdz7v25";
   };
   buildInputs = [gfortran openblas];
   configureFlags = [ "--with-blas=-lopenblas" "--with-lapack=-lopenblas" ];
diff --git a/pkgs/applications/version-management/bitkeeper/default.nix b/pkgs/applications/version-management/bitkeeper/default.nix
new file mode 100644
index 00000000000..76083292482
--- /dev/null
+++ b/pkgs/applications/version-management/bitkeeper/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchurl, perl, gperf, bison, groff
+, pkgconfig, libXft, fontconfig, pcre
+, libtomcrypt, libtommath, lz4, zlib }:
+
+stdenv.mkDerivation rec {
+  name = "bitkeeper-${version}";
+  version = "7.3ce";
+
+  src = fetchurl {
+    url = "https://www.bitkeeper.org/downloads/${version}/bk-${version}.tar.gz";
+    sha256 = "0lk4vydpq5bi52m81h327gvzdzybf8kkak7yjwmpj6kg1jn9blaz";
+  };
+
+  enableParallelBuilding = true;
+
+  buildInputs = [
+    perl gperf bison groff libXft pkgconfig
+    pcre libtomcrypt libtommath lz4
+  ];
+
+  postPatch = ''
+        substituteInPlace port/unix_platform.sh \
+                --replace /bin/rm rm
+        substituteInPlace ./undo.c \
+                --replace /bin/cat cat
+  '';
+
+  sourceRoot = "bk-${version}/src";
+  buildPhase = ''
+    make -j6 V=1 p
+    make image
+  '';
+
+  installPhase = ''
+    ./utils/bk-* $out/bitkeeper
+    mkdir -p $out/bin
+    $out/bitkeeper/bk links $out/bin
+    chmod g-w $out
+  '';
+
+  meta = {
+    description     = "A distributed version control system";
+    longDescription = ''
+      BitKeeper is a fast, enterprise-ready, distributed SCM that
+      scales up to very large projects and down to tiny ones.
+    '';
+    homepage    = https://www.bitkeeper.org/;
+    license     = stdenv.lib.licenses.asl20;
+    platforms   = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ wscott thoughtpolice ];
+  };
+}
diff --git a/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix b/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix
index 8f96f36cf86..a3881baf1e7 100644
--- a/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/diff-so-fancy/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   name = "diff-so-fancy-${version}";
-  version = "0.10.0";
+  version = "0.10.1";
 
   # perl is needed here so patchShebangs can do its job
   buildInputs = [perl makeWrapper];
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
     owner = "so-fancy";
     repo = "diff-so-fancy";
     rev = "v${version}";
-    sha256 = "08dv9xlrsyjr1ylm83lbsv2p5asfia4ib97bwgcacsdxxh5zyqh9";
+    sha256 = "0wp5civn70jzil1gbygx6ccrxfrmc8xx90v7zgf36rqi2yhvv64m";
   };
 
   buildPhase = null;
diff --git a/pkgs/applications/version-management/guitone/default.nix b/pkgs/applications/version-management/guitone/default.nix
index 8731cbfde19..8f8750b98c2 100644
--- a/pkgs/applications/version-management/guitone/default.nix
+++ b/pkgs/applications/version-management/guitone/default.nix
@@ -18,6 +18,8 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ qt4 qmake4Hook pkgconfig graphviz ];
 
+  qmakeFlags = [ "guitone.pro" ];
+
   meta = {
     description = "Qt4 based GUI for monotone";
     homepage = http://guitone.thomaskeller.biz;
diff --git a/pkgs/applications/video/openshot-qt/default.nix b/pkgs/applications/video/openshot-qt/default.nix
new file mode 100644
index 00000000000..5f142d715f5
--- /dev/null
+++ b/pkgs/applications/video/openshot-qt/default.nix
@@ -0,0 +1,48 @@
+{stdenv, fetchurl, fetchFromGitHub, callPackage, makeWrapper, doxygen
+, ffmpeg, python3Packages, qt55}:
+
+with stdenv.lib;
+
+let
+  libopenshot = callPackage ./libopenshot.nix {};
+in
+stdenv.mkDerivation rec {
+  name = "openshot-qt-${version}";
+  version = "2.0.7";
+
+  src = fetchFromGitHub {
+    owner = "OpenShot";
+    repo = "openshot-qt";
+    rev = "v${version}";
+    sha256 = "1s4b61fd8cyjy8kvc25mqd97dkxx6gqmz02i42rrcriz51pw8wgh";
+  };
+
+  buildInputs = [doxygen python3Packages.python makeWrapper ffmpeg];
+
+  propagatedBuildInputs = [
+    qt55.qtbase
+    qt55.qtmultimedia
+    libopenshot
+  ];
+
+  installPhase = ''
+    mkdir -p $(toPythonPath $out)
+    cp -r src/* $(toPythonPath $out)
+    mkdir -p $out/bin
+    echo "#/usr/bin/env sh" >$out/bin/openshot-qt
+    echo "exec ${python3Packages.python.interpreter} $(toPythonPath $out)/launch.py" >>$out/bin/openshot-qt
+    chmod +x $out/bin/openshot-qt
+    wrapProgram $out/bin/openshot-qt \
+      --prefix PYTHONPATH : "$(toPythonPath $out):$(toPythonPath ${libopenshot}):$(toPythonPath ${python3Packages.pyqt5}):$(toPythonPath ${python3Packages.sip_4_16}):$(toPythonPath ${python3Packages.httplib2}):$PYTHONPATH"
+  '';
+
+  doCheck = false;
+
+  meta = {
+    homepage = "http://openshot.org/";
+    description = "Free, open-source video editor";
+    license = licenses.gpl3Plus;
+    maintainers = [maintainers.tohl];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/video/openshot-qt/libopenshot-audio.nix b/pkgs/applications/video/openshot-qt/libopenshot-audio.nix
new file mode 100644
index 00000000000..8b583d4ec5c
--- /dev/null
+++ b/pkgs/applications/video/openshot-qt/libopenshot-audio.nix
@@ -0,0 +1,31 @@
+{stdenv, fetchurl, fetchFromGitHub, cmake, doxygen
+, libX11, libXft, libXrandr, libXinerama, libXext, libXcursor, alsaLib}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "libopenshot-audio-${version}";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "OpenShot";
+    repo = "libopenshot-audio";
+    rev = "v${version}";
+    sha256 = "0pgw7vzx3znglwm58187ybhg5maa13n4xcy5hrhzfsp8bqhrwkc7";
+  };
+
+  buildInputs = [
+    cmake doxygen
+    libX11 libXft libXrandr libXinerama libXext libXcursor alsaLib
+  ];
+
+  doCheck = false;
+
+  meta = {
+    homepage = "http://openshot.org/";
+    description = "Free, open-source video editor";
+    license = licenses.gpl3Plus;
+    maintainers = [maintainers.tohl];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/video/openshot-qt/libopenshot.nix b/pkgs/applications/video/openshot-qt/libopenshot.nix
new file mode 100644
index 00000000000..2737c48ec83
--- /dev/null
+++ b/pkgs/applications/video/openshot-qt/libopenshot.nix
@@ -0,0 +1,46 @@
+{stdenv, fetchurl, fetchFromGitHub, callPackage, cmake, doxygen
+, imagemagick, ffmpeg, qt55, swig, python3, ruby, unittest-cpp}:
+
+with stdenv.lib;
+
+let
+  libopenshot_audio = callPackage ./libopenshot-audio.nix {};
+in
+stdenv.mkDerivation rec {
+  name = "libopenshot-${version}";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "OpenShot";
+    repo = "libopenshot";
+    rev = "v${version}";
+    sha256 = "12nfkris7spn8n4s8fvy2f6yk1hqh97wzh1z3fsdxldg4gppi903";
+  };
+
+  patchPhase = ''
+    sed -i 's/{UNITTEST++_INCLUDE_DIR}/ENV{UNITTEST++_INCLUDE_DIR}/g' tests/CMakeLists.txt
+    sed -i 's/{_REL_PYTHON_MODULE_PATH}/ENV{_REL_PYTHON_MODULE_PATH}/g' src/bindings/python/CMakeLists.txt
+    sed -i 's/{RUBY_VENDOR_ARCH_DIR}/ENV{RUBY_VENDOR_ARCH_DIR}/g' src/bindings/ruby/CMakeLists.txt
+    export _REL_PYTHON_MODULE_PATH=$(toPythonPath $out)
+    export RUBY_VENDOR_ARCH_DIR=$out/lib/ruby/site-packages
+  '';
+
+  buildInputs = [
+    cmake doxygen
+    imagemagick ffmpeg qt55.qtbase qt55.qtmultimedia swig python3 ruby
+    unittest-cpp
+  ];
+
+  LIBOPENSHOT_AUDIO_DIR = "${libopenshot_audio}";
+  "UNITTEST++_INCLUDE_DIR" = "${unittest-cpp}/include/UnitTest++";
+
+  doCheck = false;
+
+  meta = {
+    homepage = "http://openshot.org/";
+    description = "Free, open-source video editor";
+    license = licenses.gpl3Plus;
+    maintainers = [maintainers.tohl];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/virtualization/rkt/default.nix b/pkgs/applications/virtualization/rkt/default.nix
index 17c7f7e2928..18e5d6dd4db 100644
--- a/pkgs/applications/virtualization/rkt/default.nix
+++ b/pkgs/applications/virtualization/rkt/default.nix
@@ -50,7 +50,11 @@ in stdenv.mkDerivation rec {
 
   installPhase = ''
     mkdir -p $out/bin
-    cp -Rv $BUILDDIR/target/bin/* $out/bin
+    cp -Rv $BUILDDIR/target/bin/rkt $out/bin
+
+    mkdir -p $out/lib/rkt/stage1-images/
+    cp -Rv $BUILDDIR/target/bin/stage1-*.aci $out/lib/rkt/stage1-images/
+
     wrapProgram $out/bin/rkt \
       --prefix LD_LIBRARY_PATH : ${systemd}/lib \
       --prefix PATH : ${iptables}/bin
diff --git a/pkgs/applications/window-managers/compton/default.nix b/pkgs/applications/window-managers/compton/default.nix
index 7efacafd6a1..5a79c0829b5 100644
--- a/pkgs/applications/window-managers/compton/default.nix
+++ b/pkgs/applications/window-managers/compton/default.nix
@@ -1,10 +1,8 @@
-{ stdenv, fetchurl, pkgconfig
-, dbus, libconfig, libdrm, libxml2, mesa, pcre
-, libXcomposite, libXfixes, libXdamage, libXinerama
-, libXrandr, libXrender, libXext }:
+{ stdenv, fetchurl, pkgconfig, dbus, libconfig, libdrm, libxml2, mesa, pcre,
+  libXcomposite, libXfixes, libXdamage, libXinerama, libXrandr, libXrender,
+  libXext, xwininfo }:
 
 stdenv.mkDerivation rec {
-
   name = "compton-0.1_beta2";
 
   src = fetchurl {
@@ -12,18 +10,36 @@ stdenv.mkDerivation rec {
     sha256 = "1mpgn1d98dv66xs2j8gaxjiw26nzwl9a641lrday7h40g3k45g9v";
   };
 
-  buildInputs = [ pkgconfig dbus libconfig libdrm libxml2 mesa pcre
-    libXcomposite libXfixes libXdamage libXinerama libXrandr libXrender libXext ];
+  buildInputs = [
+    pkgconfig
+    dbus
+    libconfig
+    libdrm
+    libxml2
+    mesa
+    pcre
+    libXcomposite
+    libXfixes
+    libXdamage
+    libXinerama
+    libXrandr
+    libXrender
+    libXext
+  ];
+  
+  propagatedBuildInputs = [ xwininfo ];
+  
   installFlags = "PREFIX=$(out)";
 
   meta = with stdenv.lib; {
     homepage = https://github.com/chjj/compton/;
     description = "A fork of XCompMgr, a sample compositing manager for X servers";
     longDescription = ''
-      A fork of XCompMgr, which is a  sample compositing manager for X servers
-      supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE extensions.  It enables
-      basic eye-candy effects. This fork adds additional features, such as additional
-      effects, and a fork at a well-defined and proper place.
+      A fork of XCompMgr, which is a sample compositing manager for X
+      servers supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE
+      extensions. It enables basic eye-candy effects. This fork adds
+      additional features, such as additional effects, and a fork at a
+      well-defined and proper place.
     '';
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/applications/window-managers/compton/git.nix b/pkgs/applications/window-managers/compton/git.nix
index f4907f881af..afa7d123107 100644
--- a/pkgs/applications/window-managers/compton/git.nix
+++ b/pkgs/applications/window-managers/compton/git.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, asciidoc, dbus, docbook_xml_dtd_45,
   docbook_xml_xslt, libconfig, libdrm, libxml2, libxslt, mesa, pcre,
   pkgconfig, libXcomposite, libXdamage, libXext, libXfixes, libXinerama,
-  libXrandr, libXrender }:
+  libXrandr, libXrender, xwininfo }:
 
 stdenv.mkDerivation {
   name = "compton-git-2015-09-21";
@@ -37,6 +37,8 @@ stdenv.mkDerivation {
     pcre
   ];
 
+  propagatedBuildInputs = [ xwininfo ];
+
   installFlags = "PREFIX=$(out)";
 
   meta = with stdenv.lib; {
@@ -47,7 +49,7 @@ stdenv.mkDerivation {
     longDescription = ''
       A fork of XCompMgr, which is a sample compositing manager for X
       servers supporting the XFIXES, DAMAGE, RENDER, and COMPOSITE
-      extensions.  It enables basic eye-candy effects. This fork adds
+      extensions. It enables basic eye-candy effects. This fork adds
       additional features, such as additional effects, and a fork at a
       well-defined and proper place.
     '';
diff --git a/pkgs/applications/window-managers/pekwm/default.nix b/pkgs/applications/window-managers/pekwm/default.nix
new file mode 100644
index 00000000000..60753e46840
--- /dev/null
+++ b/pkgs/applications/window-managers/pekwm/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, pkgconfig
+, libpng, libjpeg
+, libXext, libXft, libXpm, libXrandr, libXinerama }:
+
+stdenv.mkDerivation rec {
+
+  name = "pekwm-${version}";
+  version = "0.1.17";
+
+  src = fetchurl {
+    url = "https://www.pekwm.org/projects/pekwm/files/${name}.tar.bz2";
+    sha256 = "003x6bxj1lb2ljxz3v414bn0rdl6z68c0r185fxwgs1qkyzx67wa";
+  };
+
+  buildInputs = [ pkgconfig libpng libjpeg
+  libXext libXft libXpm libXrandr libXinerama ];
+
+  meta = with stdenv.lib; {
+    description = "A lightweight window manager";
+    longDescription = ''
+      pekwm is a window manager that once upon a time was based on the
+      aewm++ window manager, but it has evolved enough that it no
+      longer resembles aewm++ at all. It has a much expanded
+      feature-set, including window grouping (similar to ion, pwm, or
+      fluxbox), autoproperties, xinerama, keygrabber that supports
+      keychains, and much more.      
+      - Lightweight and Unobtrusive, a window manager shouldn't be
+        noticed.
+      - Very configurable, we all work and think in different ways.
+      - Automatic properties, for all the lazy people, make things
+        appear as they should when starting applications.
+      - Chainable Keygrabber, usability for everyone.
+    '';
+      homepage = https://www.pekwm.org;
+      license = licenses.gpl2;
+      maintainers = [ maintainers.AndersonTorres ];
+      platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/applications/window-managers/sway/default.nix b/pkgs/applications/window-managers/sway/default.nix
index 81fbedc4917..62b0b9c11ea 100644
--- a/pkgs/applications/window-managers/sway/default.nix
+++ b/pkgs/applications/window-managers/sway/default.nix
@@ -3,39 +3,41 @@
 , wayland, wlc, libxkbcommon, pixman, fontconfig, pcre, json_c, dbus_libs
 }:
 
-stdenv.mkDerivation rec {
-  name = "sway-${version}";
-  version = "0.7";
-
-  src = fetchFromGitHub {
-    owner = "Sircmpwn";
-    repo = "sway";
-    rev = "0.7";
-    sha256 = "05mn68brqz7j3a1sb5xd3pxzzdd8swnhw2g7cc9f7rdjr5dlrjip";
-  };
-
-  nativeBuildInputs = [ makeWrapper cmake pkgconfig asciidoc libxslt docbook_xsl ];
-
-  buildInputs = [ wayland wlc libxkbcommon pixman fontconfig pcre json_c dbus_libs pango cairo libinput ];
-
-  patchPhase = ''
-    sed -i s@/etc/sway@$out/etc/sway@g CMakeLists.txt;
-  '';
-
-  makeFlags = "PREFIX=$(out)";
-  installPhase = "PREFIX=$out make install";
-
-  LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [ wlc dbus_libs ];
-  preFixup = ''
-    wrapProgram $out/bin/sway \
-      --prefix LD_LIBRARY_PATH : "${LD_LIBRARY_PATH}";
-  '';
-
-  meta = with stdenv.lib; {
-    description = "i3-compatible window manager for Wayland";
-    homepage    = "http://swaywm.org";
-    license     = licenses.mit;
-    platforms   = platforms.linux;
-    maintainers = with maintainers; [ ];
-  };
-}
+let
+  version = "0.8";
+in
+  stdenv.mkDerivation rec {
+    name = "sway-${version}";
+
+    src = fetchFromGitHub {
+      owner = "Sircmpwn";
+      repo = "sway";
+      rev = "${version}";
+      sha256 = "10i62cn1z7fwg0jwkskmzcaha39lprkl4zvkp59jr5wvpjligdq3";
+    };
+
+    nativeBuildInputs = [ makeWrapper cmake pkgconfig asciidoc libxslt docbook_xsl ];
+
+    buildInputs = [ wayland wlc libxkbcommon pixman fontconfig pcre json_c dbus_libs pango cairo libinput ];
+
+    patchPhase = ''
+      sed -i s@/etc/sway@$out/etc/sway@g CMakeLists.txt;
+    '';
+
+    makeFlags = "PREFIX=$(out)";
+    installPhase = "PREFIX=$out make install";
+
+    LD_LIBRARY_PATH = stdenv.lib.makeLibraryPath [ wlc dbus_libs ];
+    preFixup = ''
+      wrapProgram $out/bin/sway \
+        --prefix LD_LIBRARY_PATH : "${LD_LIBRARY_PATH}";
+    '';
+
+    meta = with stdenv.lib; {
+      description = "i3-compatible window manager for Wayland";
+      homepage    = "http://swaywm.org";
+      license     = licenses.mit;
+      platforms   = platforms.linux;
+      maintainers = with maintainers; [ ];
+    };
+  }
diff --git a/pkgs/build-support/docker/tarsum.go b/pkgs/build-support/docker/tarsum.go
index 4c25f11b71e..ad33bbac75b 100644
--- a/pkgs/build-support/docker/tarsum.go
+++ b/pkgs/build-support/docker/tarsum.go
@@ -1,24 +1,24 @@
 package main
 
 import (
-    "tarsum"
-    "io"
-    "io/ioutil"
-    "fmt"
-    "os"
+	"fmt"
+	"io"
+	"io/ioutil"
+	"os"
+	"tarsum"
 )
 
 func main() {
-    ts, err := tarsum.NewTarSum(os.Stdin, false, tarsum.Version1)
-    if err != nil {
-        fmt.Println(err)
-        os.Exit(1)
-    }
+	ts, err := tarsum.NewTarSum(os.Stdin, true, tarsum.Version1)
+	if err != nil {
+		fmt.Println(err)
+		os.Exit(1)
+	}
 
-    if _, err = io.Copy(ioutil.Discard, ts); err != nil {
-        fmt.Println(err)
-        os.Exit(1)
-    }
+	if _, err = io.Copy(ioutil.Discard, ts); err != nil {
+		fmt.Println(err)
+		os.Exit(1)
+	}
 
-    fmt.Println(ts.Sum(nil))
-}
\ No newline at end of file
+	fmt.Println(ts.Sum(nil))
+}
diff --git a/pkgs/build-support/fetchmavenartifact/default.nix b/pkgs/build-support/fetchmavenartifact/default.nix
new file mode 100644
index 00000000000..a9c53249ae8
--- /dev/null
+++ b/pkgs/build-support/fetchmavenartifact/default.nix
@@ -0,0 +1,75 @@
+# Adaptation of the MIT-licensed work on `sbt2nix` done by Charles O'Farrell
+
+{ fetchurl, stdenv }:
+let
+  defaultRepos = [
+    http://central.maven.org/maven2
+    http://oss.sonatype.org/content/repositories/releases
+    http://oss.sonatype.org/content/repositories/public
+    http://repo.typesafe.com/typesafe/releases
+  ];
+in
+
+args@
+{ # Example: "org.apache.httpcomponents"
+  groupId
+, # Example: "httpclient"
+  artifactId
+, # Example: "4.3.6"
+  version
+, # List of maven repositories from where to fetch the artifact.
+  # Example: [ http://oss.sonatype.org/content/repositories/public ].
+  repos ? defaultRepos
+  # The `url` and `urls` parameters, if specified should point to the JAR
+  # file and will take precedence over the `repos` parameter. Only one of `url`
+  # and `urls` can be specified, not both.
+, url ? ""
+, urls ? []
+, # The rest of the arguments are just forwarded to `fetchurl`.
+  ...
+}:
+
+# only one of url and urls can be specified at a time.
+assert (url == "") || (urls == []);
+# if repos is empty, then url or urls must be specified.
+assert (repos != []) || (url != "") || (urls != []);
+
+
+let
+  name_ =
+    with stdenv.lib; concatStrings [
+      (replaceChars ["."] ["_"] groupId) "_"
+      (replaceChars ["."] ["_"] artifactId) "-"
+      version
+    ];
+  mkJarUrl = repoUrl:
+    with stdenv.lib; concatStringsSep "/" [
+      (removeSuffix "/" repoUrl)
+      (replaceChars ["."] ["/"] groupId)
+      artifactId
+      version
+      "${artifactId}-${version}.jar"
+    ];
+  urls_ =
+    if url != "" then [url]
+    else if urls != [] then urls
+    else map mkJarUrl repos;
+  jar =
+    fetchurl (
+      builtins.removeAttrs args ["groupId" "artifactId" "version" "repos" "url" ]
+        // { urls = urls_; name = "${name_}.jar"; }
+    );
+in
+  stdenv.mkDerivation {
+    name = name_;
+    phases = "installPhase fixupPhase";
+    # By moving the jar to $out/share/java we make it discoverable by java
+    # packages packages that mention this derivation in their buildInputs.
+    installPhase = ''
+      mkdir -p $out/share/java
+      ln -s ${jar} $out/share/java
+    '';
+    # We also add a `jar` attribute that can be used to easily obtain the path
+    # to the downloaded jar file.
+    passthru.jar = jar;
+  }
diff --git a/pkgs/build-support/fetchurl/mirrors.nix b/pkgs/build-support/fetchurl/mirrors.nix
index d97ecb32be5..68244a43e58 100644
--- a/pkgs/build-support/fetchurl/mirrors.nix
+++ b/pkgs/build-support/fetchurl/mirrors.nix
@@ -10,6 +10,7 @@ rec {
 
   # SourceForge.
   sourceforge = [
+    http://downloads.sourceforge.net/
     http://prdownloads.sourceforge.net/
     http://heanet.dl.sourceforge.net/sourceforge/
     http://surfnet.dl.sourceforge.net/sourceforge/
diff --git a/pkgs/data/fonts/liberationsansnarrow/binary.nix b/pkgs/data/fonts/liberationsansnarrow/binary.nix
new file mode 100644
index 00000000000..c7afc91af84
--- /dev/null
+++ b/pkgs/data/fonts/liberationsansnarrow/binary.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, liberationsansnarrow }:
+
+stdenv.mkDerivation rec {
+  version = "1.07.3";
+  name = "liberationsansnarrow-${version}";
+  src = fetchurl {
+    url = "https://fedorahosted.org/releases/l/i/liberation-fonts/liberation-fonts-ttf-${version}.tar.gz";
+    sha256 = "0qkr7n97jmj4q85jr20nsf6n5b48j118l9hr88vijn22ikad4wsp";
+  };
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp -v $(find . -name '*Narrow*.ttf') $out/share/fonts/truetype
+
+    mkdir -p "$out/doc/${name}"
+    cp -v AUTHORS ChangeLog COPYING License.txt README "$out/doc/${name}" || true
+  '';
+
+  inherit (liberationsansnarrow) meta;
+}
diff --git a/pkgs/data/fonts/liberationsansnarrow/default.nix b/pkgs/data/fonts/liberationsansnarrow/default.nix
new file mode 100644
index 00000000000..6a5e81cd3c7
--- /dev/null
+++ b/pkgs/data/fonts/liberationsansnarrow/default.nix
@@ -0,0 +1,39 @@
+{stdenv, fetchurl, fontforge, pythonPackages, python}:
+
+stdenv.mkDerivation rec {
+  pname = "liberationsansnarrow";
+  version = "1.07.3";
+  name = "${pname}";
+
+  src = fetchurl {
+    url = "https://fedorahosted.org/releases/l/i/liberation-fonts/liberation-fonts-ttf-${version}.tar.gz";
+    sha256 = "0qkr7n97jmj4q85jr20nsf6n5b48j118l9hr88vijn22ikad4wsp";
+  };
+
+  buildInputs = [ fontforge pythonPackages.fonttools python ];
+
+  installPhase = ''
+    mkdir -p $out/share/fonts/truetype
+    cp -v $(find . -name '*Narrow*.ttf') $out/share/fonts/truetype
+
+    mkdir -p "$out/doc/${name}"
+    cp -v AUTHORS ChangeLog COPYING License.txt README "$out/doc/${name}" || true
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Liberation Sans Narrow Font Family is a replacement for Arial Narrow";
+    longDescription = ''
+      Liberation Sans Narrow is a font originally created by Ascender
+      Inc and licensed to Oracle Corporation under a GPLv2 license. It is
+      metrically compatible with the commonly used Arial Narrow fonts
+      on Microsoft systems. It is no longer distributed with the
+      latest versions of the Liberation Fonts, as Red Hat has changed the
+      license to the Open Font License.
+    '';
+
+    license = licenses.gpl2;
+    homepage = https://fedorahosted.org/liberation-fonts/;
+    maintainers = [ maintainers.leenaars
+    ];
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.18/default.nix b/pkgs/desktops/gnome-3/3.18/default.nix
index d0a113ff0a4..78a892ebe3f 100644
--- a/pkgs/desktops/gnome-3/3.18/default.nix
+++ b/pkgs/desktops/gnome-3/3.18/default.nix
@@ -3,7 +3,7 @@
 let
 
   pkgsFun = overrides:
-    let 
+    let
       self = self_ // overrides;
       self_ = with self; {
 
@@ -35,7 +35,7 @@ let
     gnome-clocks gnome-music gnome-tweak-tool gnome-photos
     nautilus-sendto dconf-editor vinagre gnome-weather gnome-logs
     gnome-maps gnome-characters gnome-calendar accerciser gnome-nettool
-    gnome-getting-started-docs
+    gnome-getting-started-docs gnome-software gnome-packagekit
   ];
 
   gamesPackages = with gnome3; [ swell-foop lightsoff iagno
@@ -79,7 +79,7 @@ let
   dconf = callPackage ./core/dconf { };
   dconf-editor = callPackage ./core/dconf-editor { };
 
-  empathy = callPackage ./core/empathy { 
+  empathy = callPackage ./core/empathy {
     webkitgtk = webkitgtk24x;
     clutter-gst = pkgs.clutter-gst;
   };
@@ -360,13 +360,13 @@ let
 
   california = callPackage ./misc/california { };
 
-  geary = callPackage ./misc/geary { 
+  geary = callPackage ./misc/geary {
     webkitgtk = webkitgtk24x;
   };
 
   gfbgraph = callPackage ./misc/gfbgraph { };
 
-  gitg = callPackage ./misc/gitg { 
+  gitg = callPackage ./misc/gitg {
     webkitgtk = webkitgtk24x;
   };
 
@@ -383,13 +383,17 @@ let
   gpaste = callPackage ./misc/gpaste { };
 
   pidgin-im-gnome-shell-extension = callPackage ./misc/pidgin { };
-  
+
   gtkhtml = callPackage ./misc/gtkhtml { };
 
   pomodoro = callPackage ./misc/pomodoro { };
 
   gnome-video-effects = callPackage ./misc/gnome-video-effects { };
 
+  gnome-software = callPackage ./misc/gnome-software { };
+
+  gnome-packagekit = callPackage ./misc/gnome-packagekit { };
+
     };
   in self; # pkgsFun
 
diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-packagekit/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gnome-packagekit/default.nix
new file mode 100644
index 00000000000..99cf939fb50
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-packagekit/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3, libxslt, packagekit
+, fontconfig, libcanberra_gtk3, libnotify, wrapGAppsHook, dbus_glib, dbus_libs }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-packagekit-${version}";
+  version = "3.18.0";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-packagekit/3.18/${name}.tar.xz";
+    sha256 = "0a7ww807b77yjf6l8s2ycpxx813lyncwaxq227jckphazpq65a50";
+  };
+
+  NIX_CFLAGS_COMPILE = "-I${dbus_glib.dev}/include/dbus-1.0 -I${dbus_libs.dev}/include/dbus-1.0";
+
+  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+  buildInputs = [ libxslt gnome3.gtk packagekit fontconfig
+                  libcanberra_gtk3 libnotify dbus_glib dbus_libs ];
+
+  meta = with stdenv.lib; {
+    homepage = https://www.freedesktop.org/software/PackageKit/;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    description = "Tools for installing software on the GNOME desktop using PackageKit";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.18/misc/gnome-software/default.nix b/pkgs/desktops/gnome-3/3.18/misc/gnome-software/default.nix
new file mode 100644
index 00000000000..51efc0446ef
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.18/misc/gnome-software/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3, wrapGAppsHook, packagekit
+, appstream-glib, libsoup, polkit, attr, acl, libyaml, isocodes }:
+
+stdenv.mkDerivation rec {
+  name = "gnome-software-${version}";
+  version = "3.18.3";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/gnome-software/3.18/${name}.tar.xz";
+    sha256 = "0ywvjmn0cwr4kv2l6ic80ac7js7hpsp3g127cj7h256iaqgsaxnc";
+  };
+
+  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+  buildInputs = [ gnome3.gtk packagekit appstream-glib libsoup
+                  gnome3.gsettings_desktop_schemas gnome3.gnome_desktop
+                  polkit attr acl libyaml ];
+  propagatedBuildInputs = [ isocodes ];
+
+  postInstall = ''
+    mkdir -p $out/share/xml/
+    ln -s ${isocodes}/share/xml/iso-codes $out/share/xml/iso-codes
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://www.freedesktop.org/software/PackageKit/;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    description = "GNOME Software lets you install and update applications and system extensions.";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.20/apps/evolution/src.nix b/pkgs/desktops/gnome-3/3.20/apps/evolution/src.nix
index c68ee65cb8b..9c55a6b60e2 100644
--- a/pkgs/desktops/gnome-3/3.20/apps/evolution/src.nix
+++ b/pkgs/desktops/gnome-3/3.20/apps/evolution/src.nix
@@ -1,10 +1,11 @@
 # Autogenerated by maintainers/scripts/gnome.sh update
 
-fetchurl: {
-  name = "evolution-3.20.2";
+fetchurl: rec {
+  major = "3.20";
+  name = "evolution-${major}.4";
 
   src = fetchurl {
-    url = mirror://gnome/sources/evolution/3.20/evolution-3.20.2.tar.xz;
-    sha256 = "66fa6e18c4e6a29c44870d5786e4dbb82507a8254bca9e27e802625081fca630";
+    url = "mirror://gnome/sources/evolution/${major}/${name}.tar.xz";
+    sha256 = "1g1nai6jz0irz94d06vx8gbwbzdp7r53qjxvjfhdqhlhnhy76a9c";
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.20/core/evolution-data-server/src.nix b/pkgs/desktops/gnome-3/3.20/core/evolution-data-server/src.nix
index 82ea796c3b0..cdb3dacf7ab 100644
--- a/pkgs/desktops/gnome-3/3.20/core/evolution-data-server/src.nix
+++ b/pkgs/desktops/gnome-3/3.20/core/evolution-data-server/src.nix
@@ -1,10 +1,11 @@
 # Autogenerated by maintainers/scripts/gnome.sh update
 
-fetchurl: {
-  name = "evolution-data-server-3.20.2";
+fetchurl: rec {
+  major = "3.20";
+  name = "evolution-data-server-${major}.4";
 
   src = fetchurl {
-    url = mirror://gnome/sources/evolution-data-server/3.20/evolution-data-server-3.20.2.tar.xz;
-    sha256 = "8cdc74b08f1404f5df4b8cf5ccc4999a3e70a1db9ce472f71b623266941ffad9";
+    url = "mirror://gnome/sources/evolution-data-server/${major}/${name}.tar.xz";
+    sha256 = "03h81dnk34b3xf2065rymr1jd7as4dmpd89hyf380c5np36f6l7j";
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.20/core/gnome-online-accounts/src.nix b/pkgs/desktops/gnome-3/3.20/core/gnome-online-accounts/src.nix
index 7680208c27a..4c263d9d2d6 100644
--- a/pkgs/desktops/gnome-3/3.20/core/gnome-online-accounts/src.nix
+++ b/pkgs/desktops/gnome-3/3.20/core/gnome-online-accounts/src.nix
@@ -1,10 +1,11 @@
 # Autogenerated by maintainers/scripts/gnome.sh update
 
-fetchurl: {
-  name = "gnome-online-accounts-3.20.1";
+fetchurl: rec {
+  major = "3.20";
+  name = "gnome-online-accounts-${major}.2";
 
   src = fetchurl {
-    url = mirror://gnome/sources/gnome-online-accounts/3.20/gnome-online-accounts-3.20.1.tar.xz;
-    sha256 = "c37aebc1e12f31f5516d33a354181e4d202a07da4f7d3a95b0da8cf0028c0c93";
+    url = "mirror://gnome/sources/gnome-online-accounts/${major}/${name}.tar.xz";
+    sha256 = "1pf1rn1i7dqll9ph6scg2g281njx5pq6z0wyj9493m474nfmsmab";
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.20/core/gnome-session/src.nix b/pkgs/desktops/gnome-3/3.20/core/gnome-session/src.nix
index 28d8496a354..06c40b6c2cf 100644
--- a/pkgs/desktops/gnome-3/3.20/core/gnome-session/src.nix
+++ b/pkgs/desktops/gnome-3/3.20/core/gnome-session/src.nix
@@ -1,10 +1,11 @@
 # Autogenerated by maintainers/scripts/gnome.sh update
 
-fetchurl: {
-  name = "gnome-session-3.20.1";
+fetchurl: rec {
+  major = "3.20";
+  name = "gnome-session-${major}.2";
 
   src = fetchurl {
-    url = mirror://gnome/sources/gnome-session/3.20/gnome-session-3.20.1.tar.xz;
-    sha256 = "2ae9f53dc74f851222fbefbe0dc08db0a78cc76ceeb156f92ebd4d40fd038913";
+    url = "mirror://gnome/sources/gnome-session/${major}/${name}.tar.xz";
+    sha256 = "1npnjm6wirz2v0liv7n23ivp2w0y1q230qcdb681hhzmp7h9fpq2";
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.20/core/gnome-software/default.nix b/pkgs/desktops/gnome-3/3.20/core/gnome-software/default.nix
new file mode 100644
index 00000000000..7c258e9cf21
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.20/core/gnome-software/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3, wrapGAppsHook, packagekit
+, appstream-glib, libsoup, polkit, attr, acl, libyaml, isocodes, gtkspell3
+, json_glib }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+  buildInputs = [ gnome3.gtk packagekit appstream-glib libsoup
+                  gnome3.gsettings_desktop_schemas gnome3.gnome_desktop
+		  gtkspell3 json_glib
+                  polkit attr acl libyaml ];
+  propagatedBuildInputs = [ isocodes ];
+
+  postInstall = ''
+    mkdir -p $out/share/xml/
+    ln -s ${isocodes}/share/xml/iso-codes $out/share/xml/iso-codes
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://www.freedesktop.org/software/PackageKit/;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    description = "GNOME Software lets you install and update applications and system extensions.";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.20/core/gnome-software/src.nix b/pkgs/desktops/gnome-3/3.20/core/gnome-software/src.nix
new file mode 100644
index 00000000000..4d377903cc1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.20/core/gnome-software/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-software-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-software/3.20/gnome-software-3.20.0.tar.xz;
+    sha256 = "0w0bp29fm13a235gq8vylihzjfxx20ri46w4w2syaw0cixxihbix";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.20/default.nix b/pkgs/desktops/gnome-3/3.20/default.nix
index fe122d75e97..6e7b16e7733 100644
--- a/pkgs/desktops/gnome-3/3.20/default.nix
+++ b/pkgs/desktops/gnome-3/3.20/default.nix
@@ -3,7 +3,7 @@
 let
 
   pkgsFun = overrides:
-    let 
+    let
       self = self_ // overrides;
       self_ = with self; {
 
@@ -35,7 +35,7 @@ let
     gnome-clocks gnome-music gnome-tweak-tool gnome-photos
     nautilus-sendto dconf-editor vinagre gnome-weather gnome-logs
     gnome-maps gnome-characters gnome-calendar accerciser gnome-nettool
-    gnome-getting-started-docs
+    gnome-getting-started-docs gnome-packagekit gnome-software
   ];
 
   gamesPackages = with gnome3; [ swell-foop lightsoff iagno
@@ -149,6 +149,8 @@ let
 
   gnome_settings_daemon = callPackage ./core/gnome-settings-daemon { };
 
+  gnome-software = callPackage ./core/gnome-software { };
+
   gnome-system-log = callPackage ./core/gnome-system-log { };
 
   gnome-system-monitor = callPackage ./core/gnome-system-monitor { };
@@ -359,13 +361,13 @@ let
 
   california = callPackage ./misc/california { };
 
-  geary = callPackage ./misc/geary { 
+  geary = callPackage ./misc/geary {
     webkitgtk = webkitgtk24x;
   };
 
   gfbgraph = callPackage ./misc/gfbgraph { };
 
-  gitg = callPackage ./misc/gitg { 
+  gitg = callPackage ./misc/gitg {
     webkitgtk = webkitgtk24x;
   };
 
@@ -393,6 +395,8 @@ let
 
   gnome-video-effects = callPackage ./misc/gnome-video-effects { };
 
+  gnome-packagekit = callPackage ./misc/gnome-packagekit { };
+
     };
   in self; # pkgsFun
 
diff --git a/pkgs/desktops/gnome-3/3.20/games/gnome-sudoku/src.nix b/pkgs/desktops/gnome-3/3.20/games/gnome-sudoku/src.nix
index 2a83f89bb9b..8cc9731e370 100644
--- a/pkgs/desktops/gnome-3/3.20/games/gnome-sudoku/src.nix
+++ b/pkgs/desktops/gnome-3/3.20/games/gnome-sudoku/src.nix
@@ -1,10 +1,11 @@
 # Autogenerated by maintainers/scripts/gnome.sh update
 
-fetchurl: {
-  name = "gnome-sudoku-3.20.2";
+fetchurl: rec {
+  major = "3.20";
+  name = "gnome-sudoku-${major}.4";
 
   src = fetchurl {
-    url = mirror://gnome/sources/gnome-sudoku/3.20/gnome-sudoku-3.20.2.tar.xz;
-    sha256 = "9c7e737686e88c20e83ca366bfc0a20194b7fe4af7c74ab752d98f0af1df3553";
+    url = "mirror://gnome/sources/gnome-sudoku/${major}/${name}.tar.xz";
+    sha256 = "1hw6r0yfg60ynp4gxnqm6zrsklzn0d6lb88vybdbifzrlaww8xwh";
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/default.nix b/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/default.nix
new file mode 100644
index 00000000000..ee3dd60e59a
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3, libxslt, packagekit
+, fontconfig, libcanberra_gtk3, libnotify, wrapGAppsHook, dbus_glib, dbus_libs }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  NIX_CFLAGS_COMPILE = "-I${dbus_glib.dev}/include/dbus-1.0 -I${dbus_libs.dev}/include/dbus-1.0";
+
+  nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ];
+  buildInputs = [ libxslt gnome3.gtk packagekit fontconfig
+                  libcanberra_gtk3 libnotify dbus_glib dbus_libs ];
+
+  meta = with stdenv.lib; {
+    homepage = https://www.freedesktop.org/software/PackageKit/;
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    description = "Tools for installing software on the GNOME desktop using PackageKit";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/src.nix b/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/src.nix
new file mode 100644
index 00000000000..71de360f24f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.20/misc/gnome-packagekit/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gnome-packagekit-3.20.0";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gnome-packagekit/3.20/gnome-packagekit-3.20.0.tar.xz;
+    sha256 = "0wf5r0qrdlalbr73fpfaapq61vlya3nwygsv4wm2bxaf56v5sjmq";
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.20/misc/gspell/src.nix b/pkgs/desktops/gnome-3/3.20/misc/gspell/src.nix
index 3758936d175..248e3915152 100644
--- a/pkgs/desktops/gnome-3/3.20/misc/gspell/src.nix
+++ b/pkgs/desktops/gnome-3/3.20/misc/gspell/src.nix
@@ -1,10 +1,10 @@
 fetchurl: rec {
   major = "1.0";
-  minor = "0";
+  minor = "3";
   name = "gspell-${major}.${minor}";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gspell/${major}/${name}.tar.xz";
-    sha256 = "1nkpy005qyrfdklrjnvx5xksd3dv27fmn48wi12q8c8whxy2al3a";
+    sha256 = "1m8v4rqaxjsblccc3nnirkbkzgqm90vfpzp3x08lkqriqvk0anfr";
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.20/misc/pidgin/default.nix b/pkgs/desktops/gnome-3/3.20/misc/pidgin/default.nix
index 64f7920d9af..e3f6bca10a4 100644
--- a/pkgs/desktops/gnome-3/3.20/misc/pidgin/default.nix
+++ b/pkgs/desktops/gnome-3/3.20/misc/pidgin/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, glib }:
 
 stdenv.mkDerivation rec {
-  version = "1.0";
+  version = "1.0.1";
   basename = "pidgin-im-gnome-shell-extension";
   name = "${basename}-${version}";
 
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
     owner = "muffinmad";
     repo = "${basename}";
     rev = "v${version}";
-    sha256 = "0vj4w9qqx9gads24w3f6v6mfh5va28bp8rc4w7lz0vhp7njmy1yy";
+    sha256 = "1567s2sfqig4jw0nrn134f5vkx0yq31q044grv3xk4vpl1f3z2lr";
   };
 
   buildInputs = [ glib ];
diff --git a/pkgs/desktops/kde-5/applications/ark/default.nix b/pkgs/desktops/kde-5/applications/ark/default.nix
index 331c8c647ca..0af13b645e1 100644
--- a/pkgs/desktops/kde-5/applications/ark/default.nix
+++ b/pkgs/desktops/kde-5/applications/ark/default.nix
@@ -1,44 +1,33 @@
-{ kdeApp
-, lib
-, extra-cmake-modules
-, kdoctools
-, karchive
-, kconfig
-, kcrash
-, kdbusaddons
-, ki18n
-, kiconthemes
-, khtml
-, kio
-, kservice
-, kpty
-, kwidgetsaddons
-, libarchive
-, p7zip
-, unrar
-, unzipNLS
-, zip
-}:
+{
+  kdeApp, lib,
+
+  extra-cmake-modules, kdoctools, makeQtWrapper,
 
-let PATH = lib.makeBinPath [
-      p7zip unrar unzipNLS zip
-    ];
-in
+  karchive, kconfig, kcrash, kdbusaddons, ki18n, kiconthemes, khtml, kio,
+  kservice, kpty, kwidgetsaddons, libarchive,
+
+  # Archive tools
+  p7zip, unrar, unzipNLS, zip
+}:
 
 kdeApp {
   name = "ark";
   nativeBuildInputs = [
-    extra-cmake-modules
-    kdoctools
+    extra-cmake-modules kdoctools makeQtWrapper
   ];
   propagatedBuildInputs = [
     khtml ki18n kio karchive kconfig kcrash kdbusaddons kiconthemes kservice
     kpty kwidgetsaddons libarchive
   ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/ark" \
-        --prefix PATH : "${PATH}"
-  '';
+  postInstall =
+    let
+      PATH = lib.makeBinPath [
+        p7zip unrar unzipNLS zip
+      ];
+    in ''
+      wrapQtProgram "$out/bin/ark" \
+          --prefix PATH : "${PATH}"
+    '';
   meta = {
     license = with lib.licenses; [ gpl2 lgpl3 ];
     maintainers = [ lib.maintainers.ttuegel ];
diff --git a/pkgs/desktops/kde-5/applications/kate.nix b/pkgs/desktops/kde-5/applications/kate.nix
index e368483771f..94faa065592 100644
--- a/pkgs/desktops/kde-5/applications/kate.nix
+++ b/pkgs/desktops/kde-5/applications/kate.nix
@@ -1,29 +1,9 @@
-{ kdeApp
-, lib
-, extra-cmake-modules
-, kdoctools
-, qtscript
-, kactivities
-, kconfig
-, kcrash
-, kguiaddons
-, kiconthemes
-, ki18n
-, kinit
-, kjobwidgets
-, kio
-, kparts
-, ktexteditor
-, kwindowsystem
-, kxmlgui
-, kdbusaddons
-, kwallet
-, plasma-framework
-, kitemmodels
-, knotifications
-, threadweaver
-, knewstuff
-, libgit2
+{
+  kdeApp, lib, makeQtWrapper, extra-cmake-modules, kdoctools,
+  kactivities, kconfig, kcrash, kguiaddons, kiconthemes, ki18n, kinit,
+  kjobwidgets, kio, kparts, ktexteditor, kwindowsystem, kxmlgui, kdbusaddons,
+  kwallet, plasma-framework, kitemmodels, knotifications, qtscript, threadweaver,
+  knewstuff, libgit2
 }:
 
 kdeApp {
@@ -33,8 +13,7 @@ kdeApp {
     maintainers = [ lib.maintainers.ttuegel ];
   };
   nativeBuildInputs = [
-    extra-cmake-modules
-    kdoctools
+    extra-cmake-modules kdoctools makeQtWrapper
   ];
   propagatedBuildInputs = [
     kactivities ki18n kio ktexteditor kwindowsystem plasma-framework qtscript
diff --git a/pkgs/desktops/kde-5/applications/spectacle.nix b/pkgs/desktops/kde-5/applications/spectacle.nix
index 7e324f2b3fc..867c0b53b1e 100644
--- a/pkgs/desktops/kde-5/applications/spectacle.nix
+++ b/pkgs/desktops/kde-5/applications/spectacle.nix
@@ -29,7 +29,7 @@ kdeApp {
     kconfig kcoreaddons kdbusaddons kdeclarative ki18n kio knotifications
     kscreen kwidgetsaddons kwindowsystem kxmlgui libkipi xcb-util-cursor
   ];
-  postFixup = ''
+  postInstall = ''
     wrapQtProgram "$out/bin/spectacle"
   '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/baloo.nix b/pkgs/desktops/kde-5/frameworks/baloo.nix
index f676da0f4c8..825a125c8a7 100644
--- a/pkgs/desktops/kde-5/frameworks/baloo.nix
+++ b/pkgs/desktops/kde-5/frameworks/baloo.nix
@@ -1,22 +1,15 @@
 { kdeFramework, lib, extra-cmake-modules, kauth, kconfig
 , kcoreaddons, kcrash, kdbusaddons, kfilemetadata, ki18n, kidletime
-, kio, lmdb, makeQtWrapper, qtbase, solid
+, kio, lmdb, qtbase, solid
 }:
 
 kdeFramework {
   name = "baloo";
-  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules ];
   propagatedBuildInputs = [
     kauth kconfig kcoreaddons kcrash kdbusaddons kfilemetadata ki18n kio
     kidletime lmdb qtbase solid
   ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/baloo_file"
-    wrapQtProgram "$out/bin/baloo_file_extractor"
-    wrapQtProgram "$out/bin/balooctl"
-    wrapQtProgram "$out/bin/baloosearch"
-    wrapQtProgram "$out/bin/balooshow"
-  '';
   meta = {
     maintainers = [ lib.maintainers.ttuegel ];
   };
diff --git a/pkgs/desktops/kde-5/frameworks/extra-cmake-modules/setup-hook.sh b/pkgs/desktops/kde-5/frameworks/extra-cmake-modules/setup-hook.sh
index aab0625bf61..5363f4e30fd 100644
--- a/pkgs/desktops/kde-5/frameworks/extra-cmake-modules/setup-hook.sh
+++ b/pkgs/desktops/kde-5/frameworks/extra-cmake-modules/setup-hook.sh
@@ -1,22 +1,29 @@
 _ecmSetXdgDirs() {
     addToSearchPathOnce XDG_DATA_DIRS "$1/share"
     addToSearchPathOnce XDG_CONFIG_DIRS "$1/etc/xdg"
-    addToSearchPathOnce NIX_WRAP_XDG_CONFIG_DIRS "$1/etc/xdg"
+    addToSearchPathOnce RUNTIME_XDG_CONFIG_DIRS "$1/etc/xdg"
 }
 
 _ecmSharePaths=( \
+    "appdata" \
+    "applications" \
     "config.cfg" \
+    "dbus-1" \
+    "desktop-directories" \
+    "doc" \
+    "icons" \
     "kconf_update" \
     "kservices5" \
     "kservicetypes5" \
     "knotifications5" \
-    "applications" \
-    "desktop-directories" \
+    "kxmlgui5" \
+    "locale" \
     "mime" \
-    "dbus-1" \
-    "interfaces" \
-    "services" \
-    "system-services" )
+    "polkit-1" \
+    "sounds" \
+    "templates" \
+    "wallpapers" \
+    )
 
 _ecmPropagateNative() {
     for dir in ${_ecmSharePaths[@]}; do
@@ -24,7 +31,7 @@ _ecmPropagateNative() {
             propagateOnce propagatedNativeBuildInputs "$1"
             if [ -z "$crossConfig" ]; then
                 propagateOnce propagatedUserEnvPkgs "$1"
-                addToSearchPathOnce NIX_WRAP_XDG_DATA_DIRS "$1/share"
+                addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share"
             fi
             break
         fi
@@ -38,7 +45,7 @@ _ecmPropagate() {
         if [ -d "$1/share/$dir" ]; then
             propagateOnce propagatedBuildInputs "$1"
             propagateOnce propagatedUserEnvPkgs "$1"
-            addToSearchPathOnce NIX_WRAP_XDG_DATA_DIRS "$1/share"
+            addToSearchPathOnce RUNTIME_XDG_DATA_DIRS "$1/share"
             break
         fi
     done
diff --git a/pkgs/desktops/kde-5/frameworks/kconfig.nix b/pkgs/desktops/kde-5/frameworks/kconfig.nix
index e132afe5988..154329d0e98 100644
--- a/pkgs/desktops/kde-5/frameworks/kconfig.nix
+++ b/pkgs/desktops/kde-5/frameworks/kconfig.nix
@@ -1,16 +1,9 @@
 { kdeFramework, lib
 , extra-cmake-modules
-, makeQtWrapper
 }:
 
 kdeFramework {
   name = "kconfig";
-  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/kreadconfig5"
-    wrapQtProgram "$out/bin/kwriteconfig5"
-  '';
-  meta = {
-    maintainers = [ lib.maintainers.ttuegel ];
-  };
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kconfigwidgets/default.nix b/pkgs/desktops/kde-5/frameworks/kconfigwidgets/default.nix
index 1e6976113de..f507abe2991 100644
--- a/pkgs/desktops/kde-5/frameworks/kconfigwidgets/default.nix
+++ b/pkgs/desktops/kde-5/frameworks/kconfigwidgets/default.nix
@@ -1,15 +1,14 @@
 { kdeFramework, lib, extra-cmake-modules, kauth, kcodecs, kconfig
-, kdoctools, kguiaddons, ki18n, kwidgetsaddons, makeQtWrapper
+, kdoctools, kguiaddons, ki18n, kwidgetsaddons
 }:
 
 kdeFramework {
   name = "kconfigwidgets";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   propagatedBuildInputs = [ kauth kconfig kcodecs kguiaddons ki18n kwidgetsaddons ];
   patches = [ ./0001-qdiriterator-follow-symlinks.patch ];
   postInstall = ''
     moveToOutput "bin/preparetips5" "$dev"
-    wrapQtProgram "$dev/bin/preparetips5"
   '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kcoreaddons.nix b/pkgs/desktops/kde-5/frameworks/kcoreaddons.nix
index 846b187c866..94b4136df3d 100644
--- a/pkgs/desktops/kde-5/frameworks/kcoreaddons.nix
+++ b/pkgs/desktops/kde-5/frameworks/kcoreaddons.nix
@@ -1,4 +1,4 @@
-{ kdeFramework, lib, makeQtWrapper
+{ kdeFramework, lib
 , extra-cmake-modules
 , shared_mime_info
 }:
@@ -6,9 +6,6 @@
 kdeFramework {
   name = "kcoreaddons";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules ];
   propagatedBuildInputs = [ shared_mime_info ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/desktoptojson"
-  '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kdbusaddons.nix b/pkgs/desktops/kde-5/frameworks/kdbusaddons.nix
index d2ceab31d14..eadd645fb99 100644
--- a/pkgs/desktops/kde-5/frameworks/kdbusaddons.nix
+++ b/pkgs/desktops/kde-5/frameworks/kdbusaddons.nix
@@ -1,17 +1,11 @@
 { kdeFramework, lib
 , extra-cmake-modules
-, makeQtWrapper
 , qtx11extras
 }:
 
 kdeFramework {
   name = "kdbusaddons";
-  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  meta = { maintainers = [ lib.maintainers.ttuegel ]; };
+  nativeBuildInputs = [ extra-cmake-modules ];
   propagatedBuildInputs = [ qtx11extras ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/kquitapp5"
-  '';
-  meta = {
-    maintainers = [ lib.maintainers.ttuegel ];
-  };
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kdeclarative.nix b/pkgs/desktops/kde-5/frameworks/kdeclarative.nix
index af9a009b82e..8db1b73c91a 100644
--- a/pkgs/desktops/kde-5/frameworks/kdeclarative.nix
+++ b/pkgs/desktops/kde-5/frameworks/kdeclarative.nix
@@ -1,18 +1,15 @@
 { kdeFramework, lib, extra-cmake-modules, epoxy, kconfig
 , kglobalaccel, kguiaddons, ki18n, kiconthemes, kio, kpackage
-, kwidgetsaddons, kwindowsystem, makeQtWrapper, pkgconfig
+, kwidgetsaddons, kwindowsystem, pkgconfig
 , qtdeclarative
 }:
 
 kdeFramework {
   name = "kdeclarative";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules ];
   propagatedBuildInputs = [
     epoxy kconfig kglobalaccel kguiaddons ki18n kiconthemes kio kpackage
     kwidgetsaddons kwindowsystem qtdeclarative
   ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/kpackagelauncherqml"
-  '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kdesignerplugin.nix b/pkgs/desktops/kde-5/frameworks/kdesignerplugin.nix
index a99587bbf04..8e17a1a60c8 100644
--- a/pkgs/desktops/kde-5/frameworks/kdesignerplugin.nix
+++ b/pkgs/desktops/kde-5/frameworks/kdesignerplugin.nix
@@ -1,4 +1,4 @@
-{ kdeFramework, lib, makeQtWrapper
+{ kdeFramework, lib
 , extra-cmake-modules
 , kcompletion
 , kconfig
@@ -18,12 +18,9 @@
 kdeFramework {
   name = "kdesignerplugin";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   propagatedBuildInputs = [
     kcompletion kconfig kconfigwidgets kcoreaddons kiconthemes kio
     kitemviews kplotting ktextwidgets kwidgetsaddons kxmlgui sonnet
   ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/kgendesignerplugin"
-  '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kdoctools/default.nix b/pkgs/desktops/kde-5/frameworks/kdoctools/default.nix
index 0ed249da9a4..99fc4c7d023 100644
--- a/pkgs/desktops/kde-5/frameworks/kdoctools/default.nix
+++ b/pkgs/desktops/kde-5/frameworks/kdoctools/default.nix
@@ -1,5 +1,5 @@
 { kdeFramework, lib, extra-cmake-modules, docbook_xml_dtd_45
-, docbook5_xsl, karchive, ki18n, makeQtWrapper, perl, perlPackages
+, docbook5_xsl, karchive, ki18n, perl, perlPackages
 }:
 
 kdeFramework {
@@ -7,7 +7,7 @@ kdeFramework {
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
   nativeBuildInputs = [ extra-cmake-modules ];
   propagatedBuildInputs = [ karchive ki18n ];
-  propagatedNativeBuildInputs = [ makeQtWrapper perl perlPackages.URI ];
+  propagatedNativeBuildInputs = [ perl perlPackages.URI ];
   cmakeFlags = [
     "-DDocBookXML4_DTD_DIR=${docbook_xml_dtd_45}/xml/dtd/docbook"
     "-DDocBookXSL_DIR=${docbook5_xsl}/xml/xsl/docbook"
diff --git a/pkgs/desktops/kde-5/frameworks/kglobalaccel.nix b/pkgs/desktops/kde-5/frameworks/kglobalaccel.nix
index 79db990f191..4743d0b8f1b 100644
--- a/pkgs/desktops/kde-5/frameworks/kglobalaccel.nix
+++ b/pkgs/desktops/kde-5/frameworks/kglobalaccel.nix
@@ -5,18 +5,14 @@
 , kcrash
 , kdbusaddons
 , kwindowsystem
-, makeQtWrapper
 , qtx11extras
 }:
 
 kdeFramework {
   name = "kglobalaccel";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules ];
   propagatedBuildInputs = [
     kconfig kcoreaddons kcrash kdbusaddons kwindowsystem qtx11extras
   ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/kglobalaccel5"
-  '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kiconthemes/default.nix b/pkgs/desktops/kde-5/frameworks/kiconthemes/default.nix
index 825b15c8177..6102bb0d4b5 100644
--- a/pkgs/desktops/kde-5/frameworks/kiconthemes/default.nix
+++ b/pkgs/desktops/kde-5/frameworks/kiconthemes/default.nix
@@ -1,5 +1,5 @@
 { kdeFramework, lib, copyPathsToStore
-, extra-cmake-modules, makeQtWrapper
+, extra-cmake-modules
 , karchive, kconfigwidgets, ki18n, breeze-icons, kitemviews, qtsvg
 }:
 
@@ -7,9 +7,6 @@ kdeFramework {
   name = "kiconthemes";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
-  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules ];
   propagatedBuildInputs = [ breeze-icons kconfigwidgets karchive ki18n kitemviews qtsvg ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/kiconfinder5"
-  '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kinit/default.nix b/pkgs/desktops/kde-5/frameworks/kinit/default.nix
index 08901010de8..b965f761e92 100644
--- a/pkgs/desktops/kde-5/frameworks/kinit/default.nix
+++ b/pkgs/desktops/kde-5/frameworks/kinit/default.nix
@@ -1,13 +1,15 @@
-{ kdeFramework, lib, copyPathsToStore, extra-cmake-modules, kconfig, kcrash
-, kdoctools, ki18n, kio, kservice, kwindowsystem, libcap
+{
+  kdeFramework, lib, copyPathsToStore,
+  extra-cmake-modules, kdoctools,
+  kconfig, kcrash, ki18n, kio, kservice, kwindowsystem
 }:
 
 kdeFramework {
   name = "kinit";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules kdoctools libcap.out ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   propagatedBuildInputs = [
-    kconfig kcrash ki18n kio kservice kwindowsystem libcap
+    kconfig kcrash ki18n kio kservice kwindowsystem
   ];
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kinit/kinit-libpath.patch b/pkgs/desktops/kde-5/frameworks/kinit/kinit-libpath.patch
index 47538fbe456..a5c76fca248 100644
--- a/pkgs/desktops/kde-5/frameworks/kinit/kinit-libpath.patch
+++ b/pkgs/desktops/kde-5/frameworks/kinit/kinit-libpath.patch
@@ -1,8 +1,8 @@
-Index: kinit-5.21.0/src/kdeinit/kinit.cpp
+Index: kinit-5.24.0/src/kdeinit/kinit.cpp
 ===================================================================
---- kinit-5.21.0.orig/src/kdeinit/kinit.cpp
-+++ kinit-5.21.0/src/kdeinit/kinit.cpp
-@@ -657,19 +657,16 @@ static pid_t launch(int argc, const char
+--- kinit-5.24.0.orig/src/kdeinit/kinit.cpp
++++ kinit-5.24.0/src/kdeinit/kinit.cpp
+@@ -672,19 +672,16 @@ static pid_t launch(int argc, const char
  
          if (!libpath.isEmpty()) {
              if (libpath_relative) {
diff --git a/pkgs/desktops/kde-5/frameworks/kinit/series b/pkgs/desktops/kde-5/frameworks/kinit/series
index 5faa456366b..576b8a935bf 100644
--- a/pkgs/desktops/kde-5/frameworks/kinit/series
+++ b/pkgs/desktops/kde-5/frameworks/kinit/series
@@ -1 +1,2 @@
 kinit-libpath.patch
+start_kdeinit-path.patch
diff --git a/pkgs/desktops/kde-5/frameworks/kinit/start_kdeinit-path.patch b/pkgs/desktops/kde-5/frameworks/kinit/start_kdeinit-path.patch
new file mode 100644
index 00000000000..fbecf9433f6
--- /dev/null
+++ b/pkgs/desktops/kde-5/frameworks/kinit/start_kdeinit-path.patch
@@ -0,0 +1,13 @@
+Index: kinit-5.24.0/src/start_kdeinit/start_kdeinit_wrapper.c
+===================================================================
+--- kinit-5.24.0.orig/src/start_kdeinit/start_kdeinit_wrapper.c
++++ kinit-5.24.0/src/start_kdeinit/start_kdeinit_wrapper.c
+@@ -23,7 +23,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ 
+-#define EXECUTE CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/start_kdeinit"
++#define EXECUTE "/var/setuid-wrappers/start_kdeinit"
+ 
+ #if KDEINIT_OOM_PROTECT
+ 
diff --git a/pkgs/desktops/kde-5/frameworks/kio/default.nix b/pkgs/desktops/kde-5/frameworks/kio/default.nix
index 7e4317a3f09..cb67c845903 100644
--- a/pkgs/desktops/kde-5/frameworks/kio/default.nix
+++ b/pkgs/desktops/kde-5/frameworks/kio/default.nix
@@ -3,14 +3,14 @@
 , kbookmarks, kcompletion, kconfig, kconfigwidgets, kcoreaddons
 , kdbusaddons, kdoctools, ki18n, kiconthemes, kitemviews
 , kjobwidgets, knotifications, kservice, ktextwidgets, kwallet
-, kwidgetsaddons, kwindowsystem, kxmlgui, makeQtWrapper
+, kwidgetsaddons, kwindowsystem, kxmlgui
 , qtscript, qtx11extras, solid
 }:
 
 kdeFramework {
   name = "kio";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   propagatedBuildInputs = [
     acl karchive kbookmarks kcompletion kconfig kconfigwidgets kcoreaddons
     kdbusaddons ki18n kiconthemes kitemviews kjobwidgets knotifications kservice
@@ -18,10 +18,4 @@ kdeFramework {
     qtx11extras
   ];
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
-  postInstall = ''
-    wrapQtProgram "$out/bin/kcookiejar5"
-    wrapQtProgram "$out/bin/ktelnetservice5"
-    wrapQtProgram "$out/bin/ktrash5"
-    wrapQtProgram "$out/bin/protocoltojson"
-  '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kjs.nix b/pkgs/desktops/kde-5/frameworks/kjs.nix
index 1a8750ea74f..abdc15ce8df 100644
--- a/pkgs/desktops/kde-5/frameworks/kjs.nix
+++ b/pkgs/desktops/kde-5/frameworks/kjs.nix
@@ -1,14 +1,10 @@
 { kdeFramework, lib
 , extra-cmake-modules
 , kdoctools
-, makeQtWrapper
 }:
 
 kdeFramework {
   name = "kjs";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/kjs5"
-  '';
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kjsembed.nix b/pkgs/desktops/kde-5/frameworks/kjsembed.nix
index 7611b831007..95bc02422f1 100644
--- a/pkgs/desktops/kde-5/frameworks/kjsembed.nix
+++ b/pkgs/desktops/kde-5/frameworks/kjsembed.nix
@@ -1,14 +1,10 @@
 { kdeFramework, lib, extra-cmake-modules, kdoctools, ki18n, kjs
-, makeQtWrapper, qtsvg
+, qtsvg
 }:
 
 kdeFramework {
   name = "kjsembed";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   propagatedBuildInputs = [ ki18n kjs qtsvg ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/kjscmd5"
-    wrapQtProgram "$out/bin/kjsconsole"
-  '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kpackage/default.nix b/pkgs/desktops/kde-5/frameworks/kpackage/default.nix
index 874bb380d73..a39a672574b 100644
--- a/pkgs/desktops/kde-5/frameworks/kpackage/default.nix
+++ b/pkgs/desktops/kde-5/frameworks/kpackage/default.nix
@@ -5,16 +5,12 @@
 , kcoreaddons
 , kdoctools
 , ki18n
-, makeQtWrapper
 }:
 
 kdeFramework {
   name = "kpackage";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   propagatedBuildInputs = [ karchive kconfig kcoreaddons ki18n ];
   patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
-  postInstall = ''
-    wrapQtProgram "$out/bin/kpackagetool5"
-  '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/kservice/setup-hook.sh b/pkgs/desktops/kde-5/frameworks/kservice/setup-hook.sh
deleted file mode 100644
index c28e862ff8a..00000000000
--- a/pkgs/desktops/kde-5/frameworks/kservice/setup-hook.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-addServicePkg() {
-    local propagated
-    for dir in "share/kservices5" "share/kservicetypes5"; do
-        if [[ -d "$1/$dir" ]]; then
-            propagated=
-            for pkg in $propagatedBuildInputs; do
-                if [[ "z$pkg" == "z$1" ]]; then
-                    propagated=1
-                    break
-                fi
-            done
-            if [[ -z $propagated ]]; then
-                propagatedBuildInputs="$propagatedBuildInputs $1"
-            fi
-
-            propagated=
-            for pkg in $propagatedUserEnvPkgs; do
-                if [[ "z$pkg" == "z$1" ]]; then
-                    propagated=1
-                    break
-                fi
-            done
-            if [[ -z $propagated ]]; then
-                propagatedUserEnvPkgs="$propagatedUserEnvPkgs $1"
-            fi
-
-            break
-        fi
-    done
-}
-
-envHooks+=(addServicePkg)
-
-local propagated
-for pkg in $propagatedBuildInputs; do
-    if [[ "z$pkg" == "z@out@" ]]; then
-        propagated=1
-        break
-    fi
-done
-if [[ -z $propagated ]]; then
-    propagatedBuildInputs="$propagatedBuildInputs @out@"
-fi
diff --git a/pkgs/desktops/kde-5/frameworks/ktexteditor/default.nix b/pkgs/desktops/kde-5/frameworks/ktexteditor/default.nix
index e1a5e8b2339..a35af2e7fbf 100644
--- a/pkgs/desktops/kde-5/frameworks/ktexteditor/default.nix
+++ b/pkgs/desktops/kde-5/frameworks/ktexteditor/default.nix
@@ -1,5 +1,5 @@
 { kdeFramework, lib, copyPathsToStore
-, extra-cmake-modules, makeQtWrapper, perl
+, extra-cmake-modules, perl
 , karchive, kconfig, kguiaddons, kiconthemes, kparts
 , libgit2
 , qtscript, qtxmlpatterns
@@ -9,7 +9,7 @@
 kdeFramework {
   name = "ktexteditor";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper perl ];
+  nativeBuildInputs = [ extra-cmake-modules perl ];
   propagatedBuildInputs = [
     karchive kconfig kguiaddons ki18n kiconthemes kio kparts libgit2 qtscript
     qtxmlpatterns sonnet
diff --git a/pkgs/desktops/kde-5/frameworks/kwallet.nix b/pkgs/desktops/kde-5/frameworks/kwallet.nix
index 3bb99df39a7..f02c6138df7 100644
--- a/pkgs/desktops/kde-5/frameworks/kwallet.nix
+++ b/pkgs/desktops/kde-5/frameworks/kwallet.nix
@@ -1,18 +1,14 @@
 { kdeFramework, lib, extra-cmake-modules, kconfig, kconfigwidgets
 , kcoreaddons , kdbusaddons, kdoctools, ki18n, kiconthemes
 , knotifications , kservice, kwidgetsaddons, kwindowsystem, libgcrypt
-, makeQtWrapper }:
+}:
 
 kdeFramework {
   name = "kwallet";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   propagatedBuildInputs = [
     kconfig kconfigwidgets kcoreaddons kdbusaddons ki18n kiconthemes
     knotifications kservice kwidgetsaddons kwindowsystem libgcrypt
   ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/kwalletd5"
-    wrapQtProgram "$out/bin/kwallet-query"
-  '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/plasma-framework.nix b/pkgs/desktops/kde-5/frameworks/plasma-framework.nix
index 2a8762c814f..a4138148653 100644
--- a/pkgs/desktops/kde-5/frameworks/plasma-framework.nix
+++ b/pkgs/desktops/kde-5/frameworks/plasma-framework.nix
@@ -2,19 +2,16 @@
 , kconfig, kconfigwidgets, kcoreaddons, kdbusaddons, kdeclarative
 , kdoctools, kglobalaccel, kguiaddons, ki18n, kiconthemes, kio
 , knotifications, kpackage, kservice, kwindowsystem, kxmlgui
-, makeQtWrapper, qtscript, qtx11extras
+, qtscript, qtx11extras
 }:
 
 kdeFramework {
   name = "plasma-framework";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules kdoctools makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   propagatedBuildInputs = [
     kactivities karchive kconfig kconfigwidgets kcoreaddons kdbusaddons
     kdeclarative kglobalaccel kguiaddons ki18n kiconthemes kio knotifications
     kpackage kservice kwindowsystem kxmlgui qtscript qtx11extras
   ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/plasmapkg2"
-  '';
 }
diff --git a/pkgs/desktops/kde-5/frameworks/solid.nix b/pkgs/desktops/kde-5/frameworks/solid.nix
index f1db5c35c10..c4f580fe1c2 100644
--- a/pkgs/desktops/kde-5/frameworks/solid.nix
+++ b/pkgs/desktops/kde-5/frameworks/solid.nix
@@ -1,15 +1,11 @@
 { kdeFramework, lib
 , extra-cmake-modules
-, makeQtWrapper
 , qtdeclarative
 }:
 
 kdeFramework {
   name = "solid";
   meta = { maintainers = [ lib.maintainers.ttuegel ]; };
-  nativeBuildInputs = [ extra-cmake-modules makeQtWrapper ];
+  nativeBuildInputs = [ extra-cmake-modules ];
   propagatedBuildInputs = [ qtdeclarative ];
-  postInstall = ''
-    wrapQtProgram "$out/bin/solid-hardware5"
-  '';
 }
diff --git a/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix b/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix
index bb65e1af937..190003ca5c7 100644
--- a/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix
+++ b/pkgs/desktops/kde-5/plasma/plasma-workspace/default.nix
@@ -1,19 +1,21 @@
-{ plasmaPackage, lib, copyPathsToStore
-, extra-cmake-modules, kdoctools
-, baloo, kactivities, kcmutils, kconfig, kcrash, kdbusaddons, kdeclarative
-, kdelibs4support, kdesu, kglobalaccel, kidletime, kjsembed, knewstuff
-, knotifyconfig, kpackage, krunner, ktexteditor, ktextwidgets, kwallet, kwayland
-, kwin, kxmlrpcclient, libkscreen, libksysguard, networkmanager-qt, phonon
-, plasma-framework, qtquickcontrols, qtscript, qtx11extras, solid
-, isocodes, libdbusmenu, libSM, libXcursor, pam, wayland
+{
+  plasmaPackage, lib, copyPathsToStore,
+
+  extra-cmake-modules, kdoctools,
+
+  baloo, kactivities, kcmutils, kconfig, kcrash, kdbusaddons, kdeclarative,
+  kdelibs4support, kdesu, kglobalaccel, kidletime, kjsembed, knewstuff,
+  knotifyconfig, kpackage, krunner, ktexteditor, ktextwidgets, kwallet, kwayland,
+  kwin, kxmlrpcclient, libkscreen, libksysguard, networkmanager-qt, phonon,
+  plasma-framework, qtquickcontrols, qtscript, qtx11extras, solid, isocodes,
+  libdbusmenu, libSM, libXcursor, pam, wayland
 }:
 
 plasmaPackage {
   name = "plasma-workspace";
 
   nativeBuildInputs = [
-    extra-cmake-modules
-    kdoctools
+    extra-cmake-modules kdoctools
   ];
   buildInputs = [
     baloo kactivities kcmutils kconfig kcrash kdbusaddons kdeclarative
@@ -37,21 +39,4 @@ plasmaPackage {
     rm "$out/lib/libexec/startplasma"
     rm -r "$out/share/wayland-sessions"
   '';
-
-  preFixup = ''
-    wrapQtProgram $out/bin/kcheckrunning
-    wrapQtProgram $out/bin/kcminit
-    wrapQtProgram $out/bin/kcminit_startup
-    wrapQtProgram $out/bin/kdostartupconfig5
-    wrapQtProgram $out/bin/klipper
-    wrapQtProgram $out/bin/krunner
-    wrapQtProgram $out/bin/ksmserver
-    wrapQtProgram $out/bin/ksplashqml
-    wrapQtProgram $out/bin/kstartupconfig5
-    wrapQtProgram $out/bin/kuiserver5
-    wrapQtProgram $out/bin/plasmashell
-    wrapQtProgram $out/bin/plasmawindowed
-    wrapQtProgram $out/bin/systemmonitor
-    wrapQtProgram $out/bin/xembedsniproxy
-  '';
 }
diff --git a/pkgs/desktops/kde-5/plasma/startkde/default.nix b/pkgs/desktops/kde-5/plasma/startkde/default.nix
index 30e986c21b4..516d651cec2 100644
--- a/pkgs/desktops/kde-5/plasma/startkde/default.nix
+++ b/pkgs/desktops/kde-5/plasma/startkde/default.nix
@@ -1,16 +1,15 @@
-{ stdenv, lib, runCommand
-, dbus, qttools, socat
-, gnugrep, gnused
-, kconfig, kinit, kservice
-, plasma-workspace
-, xmessage, xprop, xsetroot
+{
+  stdenv, lib, runCommand, dbus, qttools, socat, gnugrep, gnused, kconfig,
+  kinit, kservice, plasma-workspace, xmessage, xprop, xsetroot, qtbase,
+  qtdeclarative, qtgraphicaleffects, qtquickcontrols, qtscript, qtsvg,
+  qtx11extras, qtxmlpatterns
 }:
 
 let
 
   env = {
     inherit (stdenv) shell;
-    paths = builtins.map (pkg: pkg.out or pkg)
+    bins = builtins.map (pkg: pkg.out or pkg)
       [
         dbus qttools socat
         gnugrep gnused
@@ -18,15 +17,38 @@ let
         plasma-workspace
         xmessage xprop xsetroot
       ];
+    libs = builtins.map (pkg: pkg.out or pkg)
+      [
+        qtbase qtdeclarative qtgraphicaleffects qtquickcontrols
+        qtscript qtsvg qtx11extras qtxmlpatterns
+      ];
   };
 
 in runCommand "startkde" env ''
-  prefix_PATH=
-  for pkg in $paths; do
-    addToSearchPath prefix_PATH "$pkg/bin"
-    addToSearchPath prefix_PATH "$pkg/lib/libexec"
-    addToSearchPath prefix_PATH "$pkg/lib/libexec/kf5"
+
+  # Configure PATH variable
+  suffixPATH=
+  for p in $bins; do
+      addToSearchPath suffixPATH "$p/bin"
+      addToSearchPath suffixPATH "$p/lib/libexec"
+      addToSearchPath suffixPATH "$p/lib/libexec/kf5"
   done
-  substitute ${./startkde.sh} "$out" --subst-var shell --subst-var prefix_PATH
+
+  # Configure Qt search paths
+  QT_PLUGIN_PATH=
+  QML_IMPORT_PATH=
+  QML2_IMPORT_PATH=
+  for p in $libs; do
+      addToSearchPath QT_PLUGIN_PATH "$p/lib/qt5/plugins"
+      addToSearchPath QML_IMPORT_PATH "$p/lib/qt5/imports"
+      addToSearchPath QML2_IMPORT_PATH "$p/lib/qt5/qml"
+  done
+
+  substitute ${./startkde.sh} "$out" \
+      --subst-var shell \
+      --subst-var suffixPATH \
+      --subst-var QT_PLUGIN_PATH \
+      --subst-var QML_IMPORT_PATH \
+      --subst-var QML2_IMPORT_PATH
   chmod +x "$out"
 ''
diff --git a/pkgs/desktops/kde-5/plasma/startkde/startkde.sh b/pkgs/desktops/kde-5/plasma/startkde/startkde.sh
index d839226a456..18cf08081c4 100755
--- a/pkgs/desktops/kde-5/plasma/startkde/startkde.sh
+++ b/pkgs/desktops/kde-5/plasma/startkde/startkde.sh
@@ -1,6 +1,10 @@
 #!@shell@
 
-PATH="@prefix_PATH@:$PATH"
+PATH="$PATH${PATH:+:}@suffixPATH@"
+
+export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}@QT_PLUGIN_PATH@"
+export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}@QML_IMPORT_PATH@"
+export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}@QML2_IMPORT_PATH@"
 
 # The KDE icon cache is supposed to update itself
 # automatically, but it uses the timestamp on the icon
@@ -73,7 +77,7 @@ kcminputrc Mouse cursorTheme 'breeze_cursors'
 kcminputrc Mouse cursorSize ''
 ksplashrc KSplash Theme Breeze
 ksplashrc KSplash Engine KSplashQML
-kdeglobals KScreen ScaleFactor 1
+kdeglobals KScreen ScreenScaleFactors ''
 kcmfonts General forceFontDPI 0
 EOF
 
@@ -153,20 +157,6 @@ xsetroot -cursor_name left_ptr
 dl=$DESKTOP_LOCKED
 unset DESKTOP_LOCKED # Don't want it in the environment
 
-# Make sure that D-Bus is running
-# D-Bus autolaunch is broken
-if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
-    eval $(dbus-launch --sh-syntax --exit-with-session)
-fi
-if qdbus >/dev/null 2>/dev/null; then
-    : # ok
-else
-    echo 'startkde: Could not start D-Bus. Can you call qdbus?'  1>&2
-    test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
-    xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus?"
-    exit 1
-fi
-
 ksplash_pid=
 if test -z "$dl"; then
   # the splashscreen and progress indicator
@@ -205,6 +195,16 @@ done
 
 echo 'startkde: Starting up...'  1>&2
 
+# Make sure that D-Bus is running
+if $qdbus >/dev/null 2>/dev/null; then
+    : # ok
+else
+    echo 'startkde: Could not start D-Bus. Can you call qdbus?'  1>&2
+    test -n "$ksplash_pid" && kill "$ksplash_pid" 2>/dev/null
+    xmessage -geometry 500x100 "Could not start D-Bus. Can you call qdbus?"
+    exit 1
+fi
+
 # Mark that full KDE session is running (e.g. Konqueror preloading works only
 # with full KDE running). The KDE_FULL_SESSION property can be detected by
 # any X client connected to the same X session, even if not launched
@@ -251,7 +251,7 @@ if test -n "$PAM_KWALLET5_LOGIN" ; then
 fi
 
 # At this point all environment variables are set, let's send it to the DBus session server to update the activation environment
-ksyncdbusenv
+dbus-update-activation-environment --systemd --all
 if test $? -ne 0; then
   # Startup error
   echo 'startkde: Could not sync environment to dbus.'  1>&2
@@ -271,6 +271,8 @@ if test $? -ne 0; then
   exit 1
 fi
 
+qdbus org.kde.KSplash /KSplash org.kde.KSplash.setStage kinit
+
 # (NixOS) Run kbuildsycoca5 before starting the user session because things
 # may be missing or moved if they have run nixos-rebuild and it may not be
 # possible for them to start Konsole to run it manually!
diff --git a/pkgs/development/compilers/elm/default.nix b/pkgs/development/compilers/elm/default.nix
index 08f69ba8776..950caeedf53 100644
--- a/pkgs/development/compilers/elm/default.nix
+++ b/pkgs/development/compilers/elm/default.nix
@@ -40,7 +40,7 @@ let
       EOF
     '' + lib.concatStrings cmds;
 
-  hsPkgs = haskell.packages.ghc7103.override {
+  hsPkgs = haskell.packages.ghc801.override {
     overrides = self: super:
       let hlib = haskell.lib;
           elmRelease = import ./packages/release.nix { inherit (self) callPackage; };
diff --git a/pkgs/development/compilers/elm/packages/elm-compiler.nix b/pkgs/development/compilers/elm/packages/elm-compiler.nix
index 8bebdf4315a..dc2a0a12138 100644
--- a/pkgs/development/compilers/elm/packages/elm-compiler.nix
+++ b/pkgs/development/compilers/elm/packages/elm-compiler.nix
@@ -3,15 +3,15 @@
 , fetchgit, filemanip, filepath, HUnit, indents
 , language-ecmascript, language-glsl, mtl, parsec, pretty, process
 , QuickCheck, stdenv, test-framework, test-framework-hunit
-, test-framework-quickcheck2, text, union-find, wl-pprint
+, test-framework-quickcheck2, text, union-find
 }:
 mkDerivation {
   pname = "elm-compiler";
-  version = "0.17";
+  version = "0.17.1";
   src = fetchgit {
     url = "https://github.com/elm-lang/elm-compiler";
-    sha256 = "1vx4jp20nj4s41zsqnwyh80dvg7b7kd9fh6agl99v1xx9d3i6ws1";
-    rev = "c9c7e72c424a13255f8ee84c719f7ef48b689c1a";
+    sha256 = "17y0jlii81mnjywknblcv1nfja51slmwrhz9x8w144b0sblcj0if";
+    rev = "e44deafaf9cbf3749484070f267f03a368711adb";
   };
   isLibrary = true;
   isExecutable = true;
@@ -19,7 +19,7 @@ mkDerivation {
     aeson aeson-pretty ansi-terminal ansi-wl-pprint base binary
     bytestring containers directory edit-distance filepath indents
     language-ecmascript language-glsl mtl parsec pretty process text
-    union-find wl-pprint
+    union-find
   ];
   executableHaskellDepends = [
     aeson base binary directory filepath process text
@@ -29,10 +29,10 @@ mkDerivation {
     bytestring containers directory edit-distance filemanip filepath
     HUnit indents language-ecmascript language-glsl mtl parsec pretty
     process QuickCheck test-framework test-framework-hunit
-    test-framework-quickcheck2 text union-find wl-pprint
+    test-framework-quickcheck2 text union-find
   ];
   jailbreak = true;
   homepage = "http://elm-lang.org";
-  description = "Values to help with elm-package, elm-make, and elm-lang.org";
+  description = "Values to help with elm-package, elm-make, and elm-lang.org.";
   license = stdenv.lib.licenses.bsd3;
 }
diff --git a/pkgs/development/compilers/elm/packages/elm-format.nix b/pkgs/development/compilers/elm/packages/elm-format.nix
index 12550e46a97..4d30c697abd 100644
--- a/pkgs/development/compilers/elm/packages/elm-format.nix
+++ b/pkgs/development/compilers/elm/packages/elm-format.nix
@@ -2,17 +2,16 @@
 , bytestring, containers, directory, edit-distance, fetchgit
 , filemanip, filepath, HUnit, indents, mtl, optparse-applicative
 , parsec, pretty, process, QuickCheck, quickcheck-io
-, regex-applicative, split, stdenv, test-framework
-, test-framework-hunit, test-framework-quickcheck2, text
-, union-find, wl-pprint
+, regex-applicative, split, stdenv, tasty, tasty-golden
+, tasty-hunit, tasty-quickcheck, text, union-find, wl-pprint
 }:
 mkDerivation {
   pname = "elm-format";
-  version = "0.3.1";
+  version = "0.4.0";
   src = fetchgit {
     url = "http://github.com/avh4/elm-format";
-    sha256 = "04kl50kzvjf4i140dlhs6f9fd2wmk6cnvyfamx2xh8vbwbnwrkj4";
-    rev = "0637f3772de2297d12ea35f5b66961e1d827552c";
+    sha256 = "199xh2w5cwcf79a8fv6j8dpk9h8a4cygrf8cfr9p7bvp2wvczibm";
+    rev = "d9cbe65c5f01d21b5a02c2f963aa4c9d3f0539d0";
   };
   isLibrary = false;
   isExecutable = true;
@@ -23,14 +22,24 @@ mkDerivation {
     text
   ];
   testHaskellDepends = [
-    aeson ansi-terminal base binary bytestring containers directory
-    edit-distance filemanip filepath HUnit indents mtl parsec pretty
-    process QuickCheck quickcheck-io regex-applicative split
-    test-framework test-framework-hunit test-framework-quickcheck2 text
-    union-find wl-pprint
+    aeson ansi-terminal ansi-wl-pprint base binary bytestring
+    containers directory edit-distance filemanip filepath HUnit indents
+    mtl optparse-applicative parsec pretty process QuickCheck
+    quickcheck-io regex-applicative split tasty tasty-golden
+    tasty-hunit tasty-quickcheck text union-find wl-pprint
   ];
   jailbreak = true;
   homepage = "http://elm-lang.org";
   description = "A source code formatter for Elm";
   license = stdenv.lib.licenses.bsd3;
+
+  # XXX: I've manually disabled tests, only the following test is failing
+  # ...
+  # ElmFormat.Cli
+  #   format a single file in place:                    OK
+  #   usage instructions:                               FAIL
+  # ...
+  # 1 out of 266 tests failed (0.50s)
+  # Test suite elm-format-tests: FAIL
+  doCheck = false;
 }
diff --git a/pkgs/development/compilers/elm/packages/elm-make.nix b/pkgs/development/compilers/elm/packages/elm-make.nix
index 1fe4acc9e3b..bed7698cfe4 100644
--- a/pkgs/development/compilers/elm/packages/elm-make.nix
+++ b/pkgs/development/compilers/elm/packages/elm-make.nix
@@ -1,22 +1,23 @@
 { mkDerivation, aeson, ansi-terminal, ansi-wl-pprint, base, binary
 , blaze-html, blaze-markup, bytestring, containers, directory
 , elm-compiler, elm-package, fetchgit, filepath, mtl
-, optparse-applicative, stdenv, text, time, raw-strings-qq
+, optparse-applicative, raw-strings-qq, stdenv, text, time
 }:
 mkDerivation {
   pname = "elm-make";
-  version = "0.17";
+  version = "0.17.1";
   src = fetchgit {
     url = "https://github.com/elm-lang/elm-make";
-    sha256 = "0ywi6iq2a3rb8a68ryqpq9y22536aa9k71wy7fcmrd5nwkmpwd2r";
-    rev = "5f7b74567c43eff341048c7caceb247b51cdb8bb";
+    sha256 = "0k9w5gl48lhhr3n2iflf0vkb3w6al0xcbglgiw4fq1ssz3aa7ijw";
+    rev = "0a0a1f52ab04e2d68d60a5798722e1de30b47335";
   };
   isLibrary = false;
   isExecutable = true;
   executableHaskellDepends = [
     aeson ansi-terminal ansi-wl-pprint base binary blaze-html
     blaze-markup bytestring containers directory elm-compiler
-    elm-package filepath mtl optparse-applicative text time raw-strings-qq
+    elm-package filepath mtl optparse-applicative raw-strings-qq text
+    time
   ];
   jailbreak = true;
   homepage = "http://elm-lang.org";
diff --git a/pkgs/development/compilers/elm/packages/elm-package.nix b/pkgs/development/compilers/elm/packages/elm-package.nix
index 7df5516b27a..ef2d4e9c8e7 100644
--- a/pkgs/development/compilers/elm/packages/elm-package.nix
+++ b/pkgs/development/compilers/elm/packages/elm-package.nix
@@ -1,29 +1,32 @@
 { mkDerivation, aeson, aeson-pretty, ansi-wl-pprint, base, binary
-, bytestring, containers, directory, elm-compiler, fetchgit
-, filepath, HTTP, http-client, http-client-tls, http-types, mtl
-, network, optparse-applicative, pretty, stdenv, text, time
-, unordered-containers, vector, zip-archive
+, bytestring, containers, directory, edit-distance, elm-compiler
+, fetchgit, filepath, HTTP, http-client, http-client-tls
+, http-types, mtl, network, optparse-applicative, parallel-io
+, pretty, stdenv, text, time, unordered-containers, vector
+, zip-archive
 }:
 mkDerivation {
   pname = "elm-package";
-  version = "0.17";
+  version = "0.17.1";
   src = fetchgit {
     url = "https://github.com/elm-lang/elm-package";
-    sha256 = "0z86560a2f7w3ywqvzqghgz100z0yn8zsiixkw4lp5168krp4axg";
-    rev = "fc0924210fe5a7c0af543769b1353dbb2ddf2f0c";
+    sha256 = "0dnn871py0pvzxsjjggy5ww2zj9g71c2dcnp38rcr4nbj8yxik85";
+    rev = "9011ccdbced1d06aa60de0e3096e609ef44d26dd";
   };
   isLibrary = true;
   isExecutable = true;
   libraryHaskellDepends = [
-    aeson aeson-pretty base binary bytestring containers directory
-    elm-compiler filepath HTTP http-client http-client-tls http-types
-    mtl network text time unordered-containers vector zip-archive
+    aeson aeson-pretty ansi-wl-pprint base binary bytestring containers
+    directory edit-distance elm-compiler filepath HTTP http-client
+    http-client-tls http-types mtl network parallel-io text time
+    unordered-containers vector zip-archive
   ];
   executableHaskellDepends = [
     aeson aeson-pretty ansi-wl-pprint base binary bytestring containers
-    directory elm-compiler filepath HTTP http-client http-client-tls
-    http-types mtl network optparse-applicative pretty text time
-    unordered-containers vector zip-archive
+    directory edit-distance elm-compiler filepath HTTP http-client
+    http-client-tls http-types mtl network optparse-applicative
+    parallel-io pretty text time unordered-containers vector
+    zip-archive
   ];
   jailbreak = true;
   homepage = "http://github.com/elm-lang/elm-package";
diff --git a/pkgs/development/compilers/elm/packages/elm-reactor-elm.nix b/pkgs/development/compilers/elm/packages/elm-reactor-elm.nix
index a84f9e48ba0..79043012590 100644
--- a/pkgs/development/compilers/elm/packages/elm-reactor-elm.nix
+++ b/pkgs/development/compilers/elm/packages/elm-reactor-elm.nix
@@ -1,22 +1,22 @@
 {
   "elm-lang/virtual-dom" = {
-    version = "1.0.0";
-    sha256 = "0pa8k04g9yfixahsb30j0rbhfh6hwdh7xmm2fvk0hkidw7b4xg57";
+    version = "1.1.0";
+    sha256 = "16g66cvvh85ddciq0ymaqfyq2bcz11pxn0g0dc1wx7bmlqx7q1jz";
   };
   "evancz/elm-markdown" = {
     version = "3.0.0";
     sha256 = "0r3hcim4mpn46ahv1q6sjp6i2viyp7jik6i71xgwmvfb9drns2p6";
   };
   "elm-lang/html" = {
-    version = "1.0.0";
-    sha256 = "16cr01yxkpkmgbgclp2p80nd62a6fjw3qipzjsgksrhwv9vv4gm4";
+    version = "1.1.0";
+    sha256 = "1v7pwxxd81qrfywb4rr199p2i9z77vjkbwjwm5gy1nxdpi8mb50y";
   };
   "elm-lang/svg" = {
-    version = "1.0.0";
-    sha256 = "0c29y6c58x2sq1bl29z1hr5gi2rlza8clk7ssgzmsf4xbvcczbjx";
+    version = "1.1.1";
+    sha256 = "0xzc0fq2kg797km0nq2f52w6xdffrl9l0y5zbkpa72w163zpxkkn";
   };
   "elm-lang/core" = {
-    version = "4.0.0";
-    sha256 = "04qgzgv90qyhjk55yw4szy50h2dqdlm0a2padbgn02yf4bb1b4nw";
+    version = "4.0.2";
+    sha256 = "1qjhfr3gd1qmfvna7iddspmk26v2nmgmgw9m6yyz10ygy3i9mla6";
   };
 }
diff --git a/pkgs/development/compilers/elm/packages/elm-reactor.nix b/pkgs/development/compilers/elm/packages/elm-reactor.nix
index 55b6b9ae416..cf6d33a5acb 100644
--- a/pkgs/development/compilers/elm/packages/elm-reactor.nix
+++ b/pkgs/development/compilers/elm/packages/elm-reactor.nix
@@ -1,22 +1,25 @@
-{ mkDerivation, base, blaze-html, blaze-markup, bytestring, cmdargs
-, directory, elm-compiler, fetchgit, filepath, fsnotify, mtl
-, snap-core, snap-server, stdenv, text, time, transformers
-, websockets, websockets-snap, elm-package, file-embed
+{ mkDerivation, aeson, base, blaze-html, blaze-markup, bytestring
+, cmdargs, containers, directory, elm-compiler, elm-package
+, fetchgit, file-embed, filepath, fsnotify, mtl, process, snap-core
+, snap-server, stdenv, template-haskell, text, time, transformers
+, unordered-containers, utf8-string, websockets, websockets-snap
 }:
 mkDerivation {
   pname = "elm-reactor";
-  version = "0.17";
+  version = "0.17.1";
   src = fetchgit {
     url = "https://github.com/elm-lang/elm-reactor";
-    sha256 = "03lb6fcc5d02gflarxc54l71hbwdb73v423ffjz5hvlha6ixglv7";
-    rev = "4781ad2fbb6cbcde0d659dec293bbed9c847ba71";
+    sha256 = "14kkqskvhkfznpl8cmjlvv3rp6ciqmdbxrmq6f20p3aznvkrdvf8";
+    rev = "7522d7ef379c5a4ffbba11b1be09ed04add08a63";
   };
   isLibrary = false;
   isExecutable = true;
   executableHaskellDepends = [
-    base blaze-html blaze-markup bytestring cmdargs directory
-    elm-compiler filepath fsnotify mtl snap-core snap-server text time
-    transformers websockets websockets-snap elm-package file-embed
+    aeson base blaze-html blaze-markup bytestring cmdargs containers
+    directory elm-compiler elm-package file-embed filepath fsnotify mtl
+    process snap-core snap-server template-haskell text time
+    transformers unordered-containers utf8-string websockets
+    websockets-snap
   ];
   jailbreak = true;
   homepage = "http://elm-lang.org";
diff --git a/pkgs/development/compilers/elm/packages/elm-repl.nix b/pkgs/development/compilers/elm/packages/elm-repl.nix
index 3b17722b91d..e08c295f294 100644
--- a/pkgs/development/compilers/elm/packages/elm-repl.nix
+++ b/pkgs/development/compilers/elm/packages/elm-repl.nix
@@ -2,20 +2,21 @@
 , containers, directory, elm-compiler, elm-package, fetchgit
 , filepath, haskeline, HUnit, mtl, parsec, QuickCheck, stdenv
 , test-framework, test-framework-hunit, test-framework-quickcheck2
+, text
 }:
 mkDerivation {
   pname = "elm-repl";
-  version = "0.17";
+  version = "0.17.1";
   src = fetchgit {
     url = "https://github.com/elm-lang/elm-repl";
-    sha256 = "0bpmkm7q3a0h4hwlbwcnzaqgf6n5p1qw65z8kw84f52s5bndc0wc";
-    rev = "95b4555cff6b6e2a55a4ea3dab00bfb39dfebf0d";
+    sha256 = "0nh2yfr0bi4rg1kak1gjaczpq56y1nii05b5y7hn6n4w651jkm28";
+    rev = "413ac0d4ee43c8542afd3041bbb7b8c903cd3d30";
   };
   isLibrary = false;
   isExecutable = true;
   executableHaskellDepends = [
     base binary bytestring bytestring-trie cmdargs containers directory
-    elm-compiler elm-package filepath haskeline mtl parsec
+    elm-compiler elm-package filepath haskeline mtl parsec text
   ];
   testHaskellDepends = [
     base bytestring bytestring-trie cmdargs directory elm-compiler
@@ -24,6 +25,6 @@ mkDerivation {
   ];
   jailbreak = true;
   homepage = "https://github.com/elm-lang/elm-repl";
-  description = "A REPL for Elm";
+  description = "a REPL for Elm";
   license = stdenv.lib.licenses.bsd3;
 }
diff --git a/pkgs/development/compilers/elm/packages/release.nix b/pkgs/development/compilers/elm/packages/release.nix
index 531da88452f..6817d8e297f 100644
--- a/pkgs/development/compilers/elm/packages/release.nix
+++ b/pkgs/development/compilers/elm/packages/release.nix
@@ -2,7 +2,7 @@
 # Please, do not modify it by hand!
 { callPackage }:
 {
-  version = "0.17";
+  version = "0.17.1";
   packages = {
     elm-compiler = callPackage ./elm-compiler.nix { };
     elm-package = callPackage ./elm-package.nix { };
diff --git a/pkgs/development/compilers/elm/update-elm.rb b/pkgs/development/compilers/elm/update-elm.rb
index e27279604ae..a1f76945cd2 100755
--- a/pkgs/development/compilers/elm/update-elm.rb
+++ b/pkgs/development/compilers/elm/update-elm.rb
@@ -1,19 +1,19 @@
 #!/usr/bin/env ruby
 
 # Take those from https://github.com/elm-lang/elm-platform/blob/master/installers/BuildFromSource.hs
-$elm_version = "0.17"
-$elm_packages = { "elm-compiler" => "0.17",
-                  "elm-package" => "0.17",
-                  "elm-make" => "0.17",
-                  "elm-reactor" => "0.17",
-                  "elm-repl" => "0.17"
+$elm_version = "0.17.1"
+$elm_packages = { "elm-compiler" => "0.17.1",
+                  "elm-package" => "0.17.1",
+                  "elm-make" => "0.17.1",
+                  "elm-reactor" => "0.17.1",
+                  "elm-repl" => "0.17.1"
                 }
 
 for pkg, ver in $elm_packages
-  system "cabal2nix https://github.com/elm-lang/#{pkg} --revision refs/tags/#{ver} --jailbreak > #{pkg}.nix"
+  system "cabal2nix https://github.com/elm-lang/#{pkg} --revision refs/tags/#{ver} --jailbreak > packages/#{pkg}.nix"
 end
 
-File.open("release.nix", 'w') do |file|
+File.open("packages/release.nix", 'w') do |file|
   file.puts "# This file is auto-generated by ./update-elm.rb."
   file.puts "# Please, do not modify it by hand!"
   file.puts "{ callPackage }:"
diff --git a/pkgs/development/compilers/ghc/6.10.2-binary.nix b/pkgs/development/compilers/ghc/6.10.2-binary.nix
index 81bdebdcbd4..2df019bd7f1 100644
--- a/pkgs/development/compilers/ghc/6.10.2-binary.nix
+++ b/pkgs/development/compilers/ghc/6.10.2-binary.nix
@@ -1,4 +1,4 @@
-{stdenv, lib, fetchurl, perl, libedit, ncurses, gmp}:
+{stdenv, lib, fetchurl, perl, libedit, ncurses5, gmp}:
 
 stdenv.mkDerivation rec {
   version = "6.10.2";
@@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
     (if stdenv.isLinux then ''
       find . -type f -perm -0100 \
           -exec patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-          --set-rpath "${libedit}/lib:${ncurses.out}/lib:${gmp.out}/lib" {} \;
+          --set-rpath "${libedit}/lib:${ncurses5.out}/lib:${gmp.out}/lib" {} \;
       for prog in ld ar gcc strip ranlib; do
         find . -name "setup-config" -exec sed -i "s@/usr/bin/$prog@$(type -p $prog)@g" {} \;
       done
diff --git a/pkgs/development/compilers/ghc/7.0.4-binary.nix b/pkgs/development/compilers/ghc/7.0.4-binary.nix
index f0f54252b3f..9b9da4d4f78 100644
--- a/pkgs/development/compilers/ghc/7.0.4-binary.nix
+++ b/pkgs/development/compilers/ghc/7.0.4-binary.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, perl, ncurses, gmp, libiconv}:
+{stdenv, fetchurl, perl, ncurses5, gmp, libiconv}:
 
 stdenv.mkDerivation rec {
   version = "7.0.4";
@@ -62,7 +62,7 @@ stdenv.mkDerivation rec {
     stdenv.lib.optionalString stdenv.isLinux ''
       find . -type f -perm -0100 \
           -exec patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
-          --set-rpath "${ncurses.out}/lib:${gmp.out}/lib" {} \;
+          --set-rpath "${ncurses5.out}/lib:${gmp.out}/lib" {} \;
       sed -i "s|/usr/bin/perl|perl\x00        |" ghc-${version}/ghc/stage2/build/tmp/ghc-stage2
       sed -i "s|/usr/bin/gcc|gcc\x00        |" ghc-${version}/ghc/stage2/build/tmp/ghc-stage2
       for prog in ld ar gcc strip ranlib; do
diff --git a/pkgs/development/compilers/ghc/7.4.2-binary.nix b/pkgs/development/compilers/ghc/7.4.2-binary.nix
index 07137578585..5faae118d8c 100644
--- a/pkgs/development/compilers/ghc/7.4.2-binary.nix
+++ b/pkgs/development/compilers/ghc/7.4.2-binary.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, perl, ncurses, gmp, libiconv, makeWrapper}:
+{stdenv, fetchurl, perl, ncurses5, gmp, libiconv, makeWrapper}:
 
 stdenv.mkDerivation rec {
   version = "7.4.2";
@@ -61,7 +61,7 @@ stdenv.mkDerivation rec {
     # find editline/gmp.
     stdenv.lib.optionalString stdenv.isLinux ''
       mkdir -p "$out/lib"
-      ln -sv "${ncurses.out}/lib/libncurses.so" "$out/lib/libncurses${stdenv.lib.optionalString stdenv.is64bit "w"}.so.5"
+      ln -sv "${ncurses5.out}/lib/libncurses.so" "$out/lib/libncurses${stdenv.lib.optionalString stdenv.is64bit "w"}.so.5"
       find . -type f -perm -0100 \
           -exec patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
           --set-rpath "$out/lib:${gmp.out}/lib" {} \;
diff --git a/pkgs/development/compilers/path64/default.nix b/pkgs/development/compilers/path64/default.nix
deleted file mode 100644
index 694bdc8990f..00000000000
--- a/pkgs/development/compilers/path64/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{stdenv, fetchgit, perl, flex, bison, gmp, mpfr, cmake}:
-
-assert stdenv.system == "x86_64-linux";
-
-stdenv.mkDerivation {
-  name = "path64-2010-07-02";
-
-  src = fetchgit {
-    url = git://github.com/path64/compiler.git;
-    rev = "e17f7f952831bbf1d996";
-    sha256 = "fa1320959e1131557d5f82e98f4621a222ec45e1d6e0e7f271d2c13de4fd0dd1";
-  };
-
-  patchPhase = ''
-    sed -i s,/usr/bin/ld,$(type -P ld), src/driver/phases.c
-    sed -i s,/lib64/ld-linux-x86-64.so.2,${stdenv.cc.libc.out}/lib/ld-linux-x86-64.so.2, src/include/main_defs.h.in
-  '';
-
-  cmakeFlags = ''
-    -DPATH64_ENABLE_HUGEPAGES=ON 
-    -DPATH64_ENABLE_MATHLIBS=ON -DPATH64_ENABLE_OPENMP=ON 
-    -DPATH64_ENABLE_PSCRUNTIME=OFF
-    -DPATH64_ENABLE_PROFILING=OFF -DPATH64_ENABLE_TARGETS=x8664 
-    -DCMAKE_BUILD_TYPE=Debug -DPATH64_ENABLE_FORTRAN=OFF
-    -DPSC_CRT_PATH=${stdenv.cc.libc.out}/lib
-  '';
-
-  makeFlags = "-j4";
-
-  installPhase = ''
-    exit 1; 
-  '';
-
-  buildInputs = [ perl flex bison gmp mpfr cmake ];
-}
diff --git a/pkgs/development/compilers/sbcl/default.nix b/pkgs/development/compilers/sbcl/default.nix
index e9a1624df1d..296f81d271d 100644
--- a/pkgs/development/compilers/sbcl/default.nix
+++ b/pkgs/development/compilers/sbcl/default.nix
@@ -9,11 +9,11 @@
 
 stdenv.mkDerivation rec {
   name    = "sbcl-${version}";
-  version = "1.3.6";
+  version = "1.3.7";
 
   src = fetchurl {
     url    = "mirror://sourceforge/project/sbcl/sbcl/${version}/${name}-source.tar.bz2";
-    sha256 = "1ndha72ji30qkq3rq76sp0yrka0679agg97x9imda2pyv0dsq5zh";
+    sha256 = "0fjdqnb2rsm2vi9794ywp27jr239ddvzc4xfr0dk49jd4v7p2kc5";
   };
 
   patchPhase = ''
diff --git a/pkgs/development/go-modules/libs.json b/pkgs/development/go-modules/libs.json
index 98a9374c4e4..9e1b4369136 100644
--- a/pkgs/development/go-modules/libs.json
+++ b/pkgs/development/go-modules/libs.json
@@ -1602,6 +1602,42 @@
     }
   },
   {
+    "goPackagePath": "github.com/yosssi/ace",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/yosssi/ace",
+      "rev": "71afeb714739f9d5f7e1849bcd4a0a5938e1a70d",
+      "sha256": "15k7ji8m3nqbwhnsvp82j4qa45sgvwv2giliw2xkdwi2g7mfrn8k"
+    }
+  },
+  {
+    "goPackagePath": "github.com/spf13/viper",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/spf13/viper",
+      "rev": "c1ccc378a054ea8d4e38d8c67f6938d4760b53dd",
+      "sha256": "0lpdzalqhqp9pwsg63inkxwjji7m0pp42ryw1499bqbjp97hriq0"
+    }
+  },
+  {
+    "goPackagePath": "github.com/spf13/pflag",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/spf13/pflag",
+      "rev": "367864438f1b1a3c7db4da06a2f55b144e6784e0",
+      "sha256": "03c6654hv4v1fj79i5sri3p9q2afqgicka4nicb6fr4kcfkkgbfp"
+    }
+  },
+  {
+    "goPackagePath": "github.com/spf13/jwalterweatherman",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/spf13/jwalterweatherman",
+      "rev": "33c24e77fb80341fe7130ee7c594256ff08ccc46",
+      "sha256": "1knvzspqzc2bh58q16zggzc8gcabjp5gr7zk4k7nx5ij4092cg0z"
+    }
+  },
+  {
     "goPackagePath": "github.com/fsnotify/fsnotify",
     "fetch": {
       "type": "git",
@@ -1618,5 +1654,167 @@
       "rev": "45c278ab3607870051a2ea9040bb85fcb8557481",
       "sha256": "0620v75wppfd84d95n312wpngcb73cph4q3ivs1h0waljfnsrd5l"
     }
+  },
+  {
+    "goPackagePath": "github.com/magiconair/properties",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/magiconair/properties",
+      "rev": "c265cfa48dda6474e208715ca93e987829f572f8",
+      "sha256": "1ab9ywwsrdq5mvrcwl7m3276y1q4dfwinbv88vgpqwcqai9wkpp3"
+    }
+  },
+  {
+    "goPackagePath": "github.com/bep/inflect",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/bep/inflect",
+      "rev": "b896c45f5af983b1f416bdf3bb89c4f1f0926f69",
+      "sha256": "0drv6in94n7lmap4ajvgqlvdcbpn8alinfdzywzpihvzbx21b3h3"
+    }
+  },
+  {
+    "goPackagePath": "github.com/eknkc/amber",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/eknkc/amber",
+      "rev": "91774f050c1453128146169b626489e60108ec03",
+      "sha256": "1rb8bm35h8a77q4py6r3818cpwh7kpq1kh2ib2rb4i5s7z75ciis"
+    }
+  },
+  {
+    "goPackagePath": "github.com/spf13/afero",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/spf13/afero",
+      "rev": "1a8ecf8b9da1fb5306e149e83128fc447957d2a8",
+      "sha256": "1nrg0gmqnl4h6zjmi4mdhrwnl3l34nzxpq2hsr3nizfvrx5gqbzw"
+    }
+  },
+  {
+    "goPackagePath": "github.com/spf13/cast",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/spf13/cast",
+      "rev": "27b586b42e29bec072fe7379259cc719e1289da6",
+      "sha256": "1y73pfxdvm1bfpghwsfxj8gl4miv6fpzi9azxcknp6rcjn1gmq0x"
+    }
+  },
+  {
+    "goPackagePath": "github.com/spf13/cobra",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/spf13/cobra",
+      "rev": "bc81c21bd0d8be5ba2d6630a505d79d4467566e7",
+      "sha256": "1sp8gl25cjx0yibh6q1i8d5rbxpwaal3z8vz372wfmbz002say8r"
+    }
+  },
+  {
+    "goPackagePath": "github.com/dchest/cssmin",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/dchest/cssmin",
+      "rev": "fb8d9b44afdc258bfff6052d3667521babcb2239",
+      "sha256": "09sdijfx5d05z4cd5k6lhl7k3kbpdf2amzlngv15h5v0fff9qw4s"
+    }
+  },
+  {
+    "goPackagePath": "github.com/spf13/fsync",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/spf13/fsync",
+      "rev": "eefee59ad7de621617d4ff085cf768aab4b919b1",
+      "sha256": "0d56xdczawikyczc12i661qc79dbv4q8ihlj4p20zsjkyxxym59p"
+    }
+  },
+  {
+    "goPackagePath": "github.com/cpuguy83/go-md2man",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/cpuguy83/go-md2man",
+      "rev": "2724a9c9051aa62e9cca11304e7dd518e9e41599",
+      "sha256": "1j2bigs7ixy20cdqd246nxr417md2qcyvkfk3x94992cr88d0vyj"
+    }
+  },
+  {
+    "goPackagePath": "github.com/miekg/mmark",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/miekg/mmark",
+      "rev": "adb5c3e2e9f3e7da9bd25291edda8e66c0045a2a",
+      "sha256": "0fycz17fj37fh95lfshdrfwrgkzi3hl1kgnily0cxc9zwfbap3qa"
+    }
+  },
+  {
+    "goPackagePath": "github.com/spf13/nitro",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/spf13/nitro",
+      "rev": "24d7ef30a12da0bdc5e2eb370a79c659ddccf0e8",
+      "sha256": "143sbpx0jdgf8f8ayv51x6l4jg6cnv6nps6n60qxhx4vd90s6mib"
+    }
+  },
+  {
+    "goPackagePath": "github.com/PuerkitoBio/purell",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/PuerkitoBio/purell",
+      "rev": "1d5d1cfad45d42ec5f81fa8ef23de09cebc6dcc3",
+      "sha256": "12k82576ka21c6572yy2v81kxpjrgf9mffjlz469g3vs0g3nkwlb"
+    }
+  },
+  {
+    "goPackagePath": "github.com/opennota/urlesc",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/opennota/urlesc",
+      "rev": "5fa9ff0392746aeae1c4b37fcc42c65afa7a9587",
+      "sha256": "0dppkmfs0hb5vcqli191x9yss5vvlx29qxjcywhdfirc89rn0sni"
+    }
+  },
+  {
+    "goPackagePath": "github.com/pkg/sftp",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/pkg/sftp",
+      "rev": "d4c18e7ffdc496a38de67dde6e29b2f364afc472",
+      "sha256": "0cnl83k317gxskayfj3xwr4bl0vcbjvlwi3q0vjwvircynb6xscj"
+    }
+  },
+  {
+    "goPackagePath": "github.com/kr/fs",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/kr/fs",
+      "rev": "2788f0dbd16903de03cb8186e5c7d97b69ad387b",
+      "sha256": "1c0fipl4rsh0v5liq1ska1dl83v3llab4k6lm8mvrx9c4dyp71ly"
+    }
+  },
+  {
+    "goPackagePath": "github.com/kyokomi/emoji",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/kyokomi/emoji",
+      "rev": "17c5e7085c9d59630aa578df67f4469481fbe7a9",
+      "sha256": "0qs4mi7z1lghiyiw7s2bz5y959wj9ifmhyqh39xwqk69d690jwlp"
+    }
+  },
+  {
+    "goPackagePath": "github.com/pkg/errors",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/pkg/errors",
+      "rev": "494e70f7620561491c2ca11e185bbef4b70060da",
+      "sha256": "0a0961ixl67vryhnzyzhai357c9n9a7v3vpkpqrh32spn033gjd9"
+    }
+  },
+  {
+    "goPackagePath": "github.com/PuerkitoBio/urlesc",
+    "fetch": {
+      "type": "git",
+      "url": "https://github.com/PuerkitoBio/urlesc",
+      "rev": "5fa9ff0392746aeae1c4b37fcc42c65afa7a9587",
+      "sha256": "0dppkmfs0hb5vcqli191x9yss5vvlx29qxjcywhdfirc89rn0sni"
+    }
   }
 ]
diff --git a/pkgs/development/guile-modules/guile-sdl/default.nix b/pkgs/development/guile-modules/guile-sdl/default.nix
index 4a0f23457ba..94f3418b031 100644
--- a/pkgs/development/guile-modules/guile-sdl/default.nix
+++ b/pkgs/development/guile-modules/guile-sdl/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ guile ];
 
   buildInputs = [
-    SDL SDL_image SDL_ttf SDL_mixer
+    SDL.dev SDL_image SDL_ttf SDL_mixer
   ];
 
   GUILE_AUTO_COMPILE = 0;
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index 29420a3d76a..e11cbf65537 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -242,6 +242,15 @@ self: super: {
         '';
       })) pkgs.libcxx;
 
+  inline-c-cpp = if !pkgs.stdenv.isDarwin
+    then super.inline-c-cpp
+    else addExtraLibrary (overrideCabal super.inline-c-cpp (drv:
+      {
+        postPatch = ''
+          substituteInPlace inline-c-cpp.cabal --replace stdc++ c++
+        '';
+      })) pkgs.libcxx;
+
   # tests don't compile for some odd reason
   jwt = dontCheck super.jwt;
 
diff --git a/pkgs/development/haskell-modules/configuration-hackage2nix.yaml b/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
index 976baab0aa4..b213780ff4b 100644
--- a/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
+++ b/pkgs/development/haskell-modules/configuration-hackage2nix.yaml
@@ -90,6 +90,14 @@ package-maintainers:
   khumba:
     - goatee
     - goatee-gtk
+    - hoppy-docs
+    - hoppy-generator
+    - hoppy-runtime
+    - hoppy-std
+    - qtah-cpp-qt5
+    - qtah-examples
+    - qtah-generator
+    - qtah-qt5
   psibi:
     - path-pieces
     - persistent
diff --git a/pkgs/development/haskell-modules/default.nix b/pkgs/development/haskell-modules/default.nix
index b03293ecfc5..4bc9a2af550 100644
--- a/pkgs/development/haskell-modules/default.nix
+++ b/pkgs/development/haskell-modules/default.nix
@@ -9,8 +9,8 @@ let
   allCabalFiles = pkgs.fetchFromGitHub {
      owner = "commercialhaskell";
      repo = "all-cabal-hashes";
-     rev = "461610ab6f0cf581e186643c037f1981755792d9";
-     sha256 = "0x2577lfd5cbbaivl72273kw93gcmxvbjybk7w4h2ic3zvs1fnvm";
+     rev = "72f1318540eff69544eb8c14a16f630d0c5448b8";
+     sha256 = "1czi1rajk2726mqrw3qp7a43h26acbjw54ll3ns063yzg9hg469m";
    };
 
   inherit (stdenv.lib) fix' extends;
diff --git a/pkgs/development/interpreters/octave/default.nix b/pkgs/development/interpreters/octave/default.nix
index e302f9e55cb..68365b27a44 100644
--- a/pkgs/development/interpreters/octave/default.nix
+++ b/pkgs/development/interpreters/octave/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, gfortran, readline, ncurses, perl, flex, texinfo, qhull
 , libsndfile, libX11, graphicsmagick, pcre, pkgconfig, mesa, fltk
-, fftw, fftwSinglePrec, zlib, curl, qrupdate, openblas
+, fftw, fftwSinglePrec, zlib, curl, qrupdate, openblas, arpack, libwebp
 , qt ? null, qscintilla ? null, ghostscript ? null, llvm ? null, hdf5 ? null,glpk ? null
 , suitesparse ? null, gnuplot ? null, jdk ? null, python ? null
 }:
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ gfortran readline ncurses perl flex texinfo qhull libX11
     graphicsmagick pcre pkgconfig mesa fltk zlib curl openblas libsndfile
-    fftw fftwSinglePrec qrupdate ]
+    fftw fftwSinglePrec qrupdate arpack libwebp ]
     ++ (stdenv.lib.optional (qt != null) qt)
     ++ (stdenv.lib.optional (qscintilla != null) qscintilla)
     ++ (stdenv.lib.optional (ghostscript != null) ghostscript)
@@ -38,9 +38,10 @@ stdenv.mkDerivation rec {
     ++ (stdenv.lib.optional (jdk != null) jdk)
     ++ (stdenv.lib.optional (gnuplot != null) gnuplot)
     ++ (stdenv.lib.optional (python != null) python)
+    ++ (stdenv.lib.optionals (!stdenv.isDarwin) [mesa libX11])
     ;
 
-  doCheck = true;
+  doCheck = !stdenv.isDarwin;
 
   enableParallelBuilding = true;
 
@@ -50,7 +51,9 @@ stdenv.mkDerivation rec {
       "--with-blas=openblas"
       "--with-lapack=openblas"
     ]
-    ++ stdenv.lib.optional openblas.blas64 "--enable-64";
+    ++ stdenv.lib.optional openblas.blas64 "--enable-64"
+    ++ stdenv.lib.optionals stdenv.isDarwin ["--with-x=no"]
+    ;
 
   # Keep a copy of the octave tests detailed results in the output
   # derivation, because someone may care
@@ -67,6 +70,6 @@ stdenv.mkDerivation rec {
     homepage = http://octave.org/;
     license = stdenv.lib.licenses.gpl3Plus;
     maintainers = with stdenv.lib.maintainers; [viric raskin];
-    platforms = with stdenv.lib.platforms; linux;
+    platforms = with stdenv.lib.platforms; linux ++ darwin;
   };
 }
diff --git a/pkgs/development/interpreters/python/2.6/default.nix b/pkgs/development/interpreters/python/2.6/default.nix
index 48712cc21b9..6641eb24b24 100644
--- a/pkgs/development/interpreters/python/2.6/default.nix
+++ b/pkgs/development/interpreters/python/2.6/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2, includeModules ? false
+{ stdenv, fetchurl, zlib ? null, zlibSupport ? true, bzip2, less, includeModules ? false
 , sqlite, tcl, tk, xlibsWrapper, openssl, readline, db, ncurses, gdbm, self, callPackage
 , python26Packages }:
 
@@ -53,6 +53,8 @@ let
     [ bzip2 openssl ]++ optionals includeModules [ db openssl ncurses gdbm readline xlibsWrapper tcl tk sqlite ]
     ++ optional zlibSupport zlib;
 
+  propagatedBuildInputs = [ less ];
+
   mkPaths = paths: {
     C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" paths;
     LIBRARY_PATH = makeLibraryPath paths;
@@ -64,8 +66,8 @@ let
     name = "python${if includeModules then "" else "-minimal"}-${version}";
     pythonVersion = majorVersion;
 
-    inherit majorVersion version src patches buildInputs preConfigure
-            configureFlags;
+    inherit majorVersion version src patches buildInputs propagatedBuildInputs
+            preConfigure configureFlags;
 
     inherit (mkPaths buildInputs) C_INCLUDE_PATH LIBRARY_PATH;
 
diff --git a/pkgs/development/interpreters/python/2.7/default.nix b/pkgs/development/interpreters/python/2.7/default.nix
index e47fc82f4e8..aca88f504a0 100644
--- a/pkgs/development/interpreters/python/2.7/default.nix
+++ b/pkgs/development/interpreters/python/2.7/default.nix
@@ -1,5 +1,6 @@
 { stdenv, fetchurl, self, callPackage, python27Packages
 , bzip2, openssl, gettext
+, less
 
 , includeModules ? false
 
@@ -22,11 +23,11 @@ with stdenv.lib;
 
 let
   majorVersion = "2.7";
-  version = "${majorVersion}.11";
+  version = "${majorVersion}.12";
 
   src = fetchurl {
     url = "http://www.python.org/ftp/python/${version}/Python-${version}.tar.xz";
-    sha256 = "0iiz844riiznsyhhyy962710pz228gmhv8qi3yk4w4jhmx2lqawn";
+    sha256 = "0y7rl603vmwlxm6ilkhc51rx2mfj14ckcz40xxgs0ljnvlhp30yp";
   };
 
   patches =
@@ -108,7 +109,7 @@ let
     ++ optional zlibSupport zlib
     ++ optional stdenv.isDarwin CF;
 
-  propagatedBuildInputs = optional stdenv.isDarwin configd;
+  propagatedBuildInputs = [ less ] ++ optional stdenv.isDarwin configd;
 
   mkPaths = paths: {
     C_INCLUDE_PATH = makeSearchPathOutput "dev" "include" paths;
diff --git a/pkgs/development/interpreters/python/2.7/no-ldconfig.patch b/pkgs/development/interpreters/python/2.7/no-ldconfig.patch
index 10284c7b374..44c38fb2953 100644
--- a/pkgs/development/interpreters/python/2.7/no-ldconfig.patch
+++ b/pkgs/development/interpreters/python/2.7/no-ldconfig.patch
@@ -1,7 +1,8 @@
-diff -ru -x '*~' Python-2.7.11-orig/Lib/ctypes/util.py Python-2.7.11/Lib/ctypes/util.py
---- Python-2.7.11-orig/Lib/ctypes/util.py	2015-12-05 20:46:56.000000000 +0100
-+++ Python-2.7.11/Lib/ctypes/util.py	2016-07-01 14:24:50.714223450 +0200
-@@ -212,31 +212,7 @@
+diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
+index b2c514d..a6eca81 100644
+--- a/Lib/ctypes/util.py
++++ b/Lib/ctypes/util.py
+@@ -207,31 +207,7 @@ elif os.name == "posix":
      else:
  
          def _findSoname_ldconfig(name):
@@ -21,7 +22,7 @@ diff -ru -x '*~' Python-2.7.11-orig/Lib/ctypes/util.py Python-2.7.11/Lib/ctypes/
 -
 -            # XXX assuming GLIBC's ldconfig (with option -p)
 -            expr = r'\s+(lib%s\.[^\s]+)\s+\(%s' % (re.escape(name), abi_type)
--            f = os.popen('/sbin/ldconfig -p 2>/dev/null')
+-            f = os.popen('LC_ALL=C LANG=C /sbin/ldconfig -p 2>/dev/null')
 -            try:
 -                data = f.read()
 -            finally:
@@ -34,10 +35,11 @@ diff -ru -x '*~' Python-2.7.11-orig/Lib/ctypes/util.py Python-2.7.11/Lib/ctypes/
  
          def find_library(name):
              return _findSoname_ldconfig(name) or _get_soname(_findLib_gcc(name))
-diff -ru -x '*~' Python-2.7.11-orig/Lib/uuid.py Python-2.7.11/Lib/uuid.py
---- Python-2.7.11-orig/Lib/uuid.py	2015-12-05 20:47:09.000000000 +0100
-+++ Python-2.7.11/Lib/uuid.py	2016-07-01 14:33:14.360446897 +0200
-@@ -437,57 +437,7 @@
+diff --git a/Lib/uuid.py b/Lib/uuid.py
+index 7432032..9829d18 100644
+--- a/Lib/uuid.py
++++ b/Lib/uuid.py
+@@ -437,57 +437,7 @@ def _netbios_getnode():
          return ((bytes[0]<<40L) + (bytes[1]<<32L) + (bytes[2]<<24L) +
                  (bytes[3]<<16L) + (bytes[4]<<8L) + bytes[5])
  
diff --git a/pkgs/development/interpreters/python/3.3/default.nix b/pkgs/development/interpreters/python/3.3/default.nix
index 8c16995d5cc..8a36e03c784 100644
--- a/pkgs/development/interpreters/python/3.3/default.nix
+++ b/pkgs/development/interpreters/python/3.3/default.nix
@@ -2,6 +2,7 @@
 , bzip2
 , db
 , gdbm
+, less
 , libX11, xproto
 , lzma
 , ncurses
@@ -27,6 +28,11 @@ let
   buildInputs = filter (p: p != null) [
     zlib bzip2 lzma gdbm sqlite db readline ncurses openssl tcl tk libX11 xproto
   ];
+
+  propagatedBuildInputs = [
+    less
+  ];
+
 in
 stdenv.mkDerivation {
   name = "python3-${version}";
@@ -34,6 +40,7 @@ stdenv.mkDerivation {
   inherit majorVersion version;
 
   inherit buildInputs;
+  inherit propagatedBuildInputs;
 
   src = fetchurl {
     url = "http://www.python.org/ftp/python/${version}/Python-${version}.tar.xz";
diff --git a/pkgs/development/interpreters/python/3.4/default.nix b/pkgs/development/interpreters/python/3.4/default.nix
index 1cd7f58e95e..7ea6adc4370 100644
--- a/pkgs/development/interpreters/python/3.4/default.nix
+++ b/pkgs/development/interpreters/python/3.4/default.nix
@@ -2,6 +2,7 @@
 , bzip2
 , db
 , gdbm
+, less
 , libX11, xproto
 , lzma
 , ncurses
@@ -42,6 +43,11 @@ let
     libX11
     xproto
   ] ++ optionals stdenv.isDarwin [ CF configd ];
+
+  propagatedBuildInputs = [
+    less
+  ];
+
 in
 stdenv.mkDerivation {
   name = "python3-${fullVersion}";
@@ -49,6 +55,7 @@ stdenv.mkDerivation {
   inherit majorVersion version;
 
   inherit buildInputs;
+  inherit propagatedBuildInputs;
 
   src = fetchurl {
     url = "http://www.python.org/ftp/python/${version}/Python-${fullVersion}.tar.xz";
diff --git a/pkgs/development/interpreters/python/3.5/default.nix b/pkgs/development/interpreters/python/3.5/default.nix
index e0adad2bae2..21716c87386 100644
--- a/pkgs/development/interpreters/python/3.5/default.nix
+++ b/pkgs/development/interpreters/python/3.5/default.nix
@@ -2,6 +2,7 @@
 , bzip2
 , db
 , gdbm
+, less
 , libX11, xproto
 , lzma
 , ncurses
@@ -42,6 +43,11 @@ let
     libX11
     xproto
   ] ++ optionals stdenv.isDarwin [ CF configd ];
+
+  propagatedBuildInputs = [
+    less
+  ];
+
 in
 stdenv.mkDerivation {
   name = "python3-${fullVersion}";
@@ -49,6 +55,7 @@ stdenv.mkDerivation {
   inherit majorVersion version;
 
   inherit buildInputs;
+  inherit propagatedBuildInputs;
 
   src = fetchurl {
     url = "http://www.python.org/ftp/python/${version}/Python-${fullVersion}.tar.xz";
diff --git a/pkgs/development/interpreters/python/3.6/default.nix b/pkgs/development/interpreters/python/3.6/default.nix
new file mode 100644
index 00000000000..9515e1587d7
--- /dev/null
+++ b/pkgs/development/interpreters/python/3.6/default.nix
@@ -0,0 +1,145 @@
+{ stdenv, fetchurl
+, glibc
+, bzip2
+, db
+, gdbm
+, less
+, libX11, xproto
+, lzma
+, ncurses
+, openssl
+, readline
+, sqlite
+, tcl, tk
+, zlib
+, callPackage
+, self
+, python36Packages
+
+, CF, configd
+}:
+
+assert readline != null -> ncurses != null;
+
+with stdenv.lib;
+
+let
+  majorVersion = "3.6";
+  pythonVersion = majorVersion;
+  version = "${majorVersion}.0a3";
+  fullVersion = "${version}";
+
+  buildInputs = filter (p: p != null) [
+    glibc
+    zlib
+    bzip2
+    lzma
+    gdbm
+    sqlite
+    db
+    readline
+    ncurses
+    openssl
+    tcl
+    tk
+    libX11
+    xproto
+  ] ++ optionals stdenv.isDarwin [ CF configd ];
+
+  propagatedBuildInputs = [
+    less
+  ];
+
+in
+stdenv.mkDerivation {
+  name = "python3-${fullVersion}";
+  pythonVersion = majorVersion;
+  inherit majorVersion version;
+
+  inherit buildInputs;
+  inherit propagatedBuildInputs;
+
+  src = fetchurl {
+    url = "https://www.python.org/ftp/python/${majorVersion}.0/Python-${fullVersion}.tar.xz";
+    sha256 = "08c3598bwihibwca9lwxq923sjq9shvgv3wxv4vkga2n6hf63l1c";
+  };
+
+  NIX_LDFLAGS = optionalString stdenv.isLinux "-lgcc_s";
+
+  prePatch = optionalString stdenv.isDarwin ''
+    substituteInPlace configure --replace '`/usr/bin/arch`' '"i386"'
+  '';
+
+  preConfigure = ''
+    for i in /usr /sw /opt /pkg; do	# improve purity
+      substituteInPlace ./setup.py --replace $i /no-such-path
+    done
+    ${optionalString stdenv.isDarwin ''
+       export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -msse2"
+       export MACOSX_DEPLOYMENT_TARGET=10.6
+     ''}
+
+    substituteInPlace ./Lib/plat-generic/regen --replace "/usr/include" ${glibc}/include
+
+    configureFlagsArray=( --enable-shared --with-threads
+                          CPPFLAGS="${concatStringsSep " " (map (p: "-I${getDev p}/include") buildInputs)}"
+                          LDFLAGS="${concatStringsSep " " (map (p: "-L${getLib p}/lib") buildInputs)}"
+                          LIBS="${optionalString (!stdenv.isDarwin) "-lcrypt"} ${optionalString (ncurses != null) "-lncurses"}"
+                        )
+  '';
+
+  setupHook = ./setup-hook.sh;
+
+  postInstall = ''
+    # needed for some packages, especially packages that backport functionality
+    # to 2.x from 3.x
+    for item in $out/lib/python${majorVersion}/test/*; do
+      if [[ "$item" != */test_support.py* ]]; then
+        rm -rf "$item"
+      else
+        echo $item
+      fi
+    done
+    touch $out/lib/python${majorVersion}/test/__init__.py
+
+    ln -s "$out/include/python${majorVersion}m" "$out/include/python${majorVersion}"
+    paxmark E $out/bin/python${majorVersion}
+  '';
+
+  passthru = rec {
+    zlibSupport = zlib != null;
+    sqliteSupport = sqlite != null;
+    dbSupport = db != null;
+    readlineSupport = readline != null;
+    opensslSupport = openssl != null;
+    tkSupport = (tk != null) && (tcl != null) && (libX11 != null) && (xproto != null);
+    libPrefix = "python${majorVersion}";
+    executable = "python${majorVersion}m";
+    buildEnv = callPackage ../wrapper.nix { python = self; };
+    withPackages = import ../with-packages.nix { inherit buildEnv; pythonPackages = python36Packages; };
+    isPy3 = true;
+    isPy35 = true;
+    is_py3k = true;  # deprecated
+    sitePackages = "lib/${libPrefix}/site-packages";
+    interpreter = "${self}/bin/${executable}";
+  };
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = http://python.org;
+    description = "A high-level dynamically-typed programming language";
+    longDescription = ''
+      Python is a remarkably powerful dynamic programming language that
+      is used in a wide variety of application domains. Some of its key
+      distinguishing features include: clear, readable syntax; strong
+      introspection capabilities; intuitive object orientation; natural
+      expression of procedural code; full modularity, supporting
+      hierarchical packages; exception-based error handling; and very
+      high level dynamic data types.
+    '';
+    license = licenses.psfl;
+    platforms = with platforms; linux ++ darwin;
+    maintainers = with maintainers; [ chaoflow domenkozar cstrahan kragniz ];
+  };
+}
diff --git a/pkgs/development/interpreters/python/3.6/setup-hook.sh b/pkgs/development/interpreters/python/3.6/setup-hook.sh
new file mode 100644
index 00000000000..26a0d57bc87
--- /dev/null
+++ b/pkgs/development/interpreters/python/3.6/setup-hook.sh
@@ -0,0 +1,15 @@
+addPythonPath() {
+    addToSearchPathWithCustomDelimiter : PYTHONPATH $1/lib/python3.6/site-packages
+}
+
+toPythonPath() {
+    local paths="$1"
+    local result=
+    for i in $paths; do
+        p="$i/lib/python3.6/site-packages"
+        result="${result}${result:+:}$p"
+    done
+    echo $result
+}
+
+envHooks+=(addPythonPath)
diff --git a/pkgs/development/libraries/appstream-glib/default.nix b/pkgs/development/libraries/appstream-glib/default.nix
index 14fbcdf7342..e6051552ab7 100644
--- a/pkgs/development/libraries/appstream-glib/default.nix
+++ b/pkgs/development/libraries/appstream-glib/default.nix
@@ -1,19 +1,23 @@
-{ stdenv, fetchurl, pkgconfig, gettext, gtk3, intltool, glib
+{ stdenv, fetchFromGitHub, pkgconfig, gettext, gtk3, intltool, glib
 , gtk_doc, autoconf, automake, libtool, libarchive, libyaml
 , gobjectIntrospection, sqlite, libsoup, gcab, attr, acl, docbook_xsl
+, libuuid, json_glib
 }:
 
 stdenv.mkDerivation rec {
-  name = "appstream-glib-0.3.6";
+  name = "appstream-glib-0.5.11";
 
-  src = fetchurl {
-    url = "https://github.com/hughsie/appstream-glib/archive/appstream_glib_0_3_6.tar.gz";
-    sha256 = "1zdxg9dk9vxw2cs04cswd138di3dysz0hxk4918750hh19s3859c";
+  src = fetchFromGitHub {
+    owner = "hughsie";
+    repo = "appstream-glib";
+    rev = stdenv.lib.replaceStrings ["." "-"] ["_" "_"] name;
+    sha256 = "1rvfncm9z29h70pd718j73cd263g6yyxkxrg7zfzy0gj6wwzvhkh";
   };
 
-  buildInputs = [ glib libtool pkgconfig gtk_doc gettext intltool sqlite libsoup
-                  gcab attr acl docbook_xsl
-                  libarchive libyaml gtk3 autoconf automake gobjectIntrospection ];
+  nativeBuildInputs = [ autoconf automake libtool pkgconfig intltool ];
+  buildInputs = [ glib gtk_doc gettext sqlite libsoup
+                  gcab attr acl docbook_xsl libuuid json_glib
+                  libarchive libyaml gtk3 gobjectIntrospection ];
 
   configureScript = "./autogen.sh";
 
@@ -22,7 +26,6 @@ stdenv.mkDerivation rec {
     homepage    = https://github.com/hughsie/appstream-glib;
     license     = licenses.lgpl21Plus;
     platforms   = platforms.linux;
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = with maintainers; [ lethalman matthewbauer ];
   };
-
 }
diff --git a/pkgs/development/libraries/fltk/default.nix b/pkgs/development/libraries/fltk/default.nix
index 772ea2030c2..99cb8aae323 100644
--- a/pkgs/development/libraries/fltk/default.nix
+++ b/pkgs/development/libraries/fltk/default.nix
@@ -1,6 +1,7 @@
 { stdenv, composableDerivation, fetchurl, pkgconfig, xlibsWrapper, inputproto, libXi
 , freeglut, mesa, libjpeg, zlib, libXinerama, libXft, libpng
 , cfg ? {}
+, darwin, libtiff, freetype
 }:
 
 let inherit (composableDerivation) edf; in
@@ -21,7 +22,10 @@ composableDerivation.composableDerivation {} {
   '';
 
   nativeBuildInputs = [ pkgconfig ];
-  propagatedBuildInputs = [ xlibsWrapper inputproto libXi freeglut ];
+  propagatedBuildInputs = [ inputproto ]
+    ++ (if stdenv.isDarwin
+        then (with darwin.apple_sdk.frameworks; [Cocoa AGL GLUT freetype libtiff])
+        else [ xlibsWrapper libXi freeglut ]);
 
   enableParallelBuilding = true;
 
@@ -55,9 +59,8 @@ composableDerivation.composableDerivation {} {
   meta = {
     description = "A C++ cross-platform lightweight GUI library";
     homepage = http://www.fltk.org;
-    platforms = stdenv.lib.platforms.linux;
+    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
     license = stdenv.lib.licenses.gpl2;
   };
 
 }
-
diff --git a/pkgs/development/libraries/fontconfig/default.nix b/pkgs/development/libraries/fontconfig/default.nix
index f18ea5948f1..6acf1ebce29 100644
--- a/pkgs/development/libraries/fontconfig/default.nix
+++ b/pkgs/development/libraries/fontconfig/default.nix
@@ -68,6 +68,7 @@ stdenv.mkDerivation rec {
     cd "$out/etc/fonts"
     rm conf.d/{50-user,51-local}.conf
     "${libxslt.bin}/bin/xsltproc" --stringparam fontDirectories "${fontbhttf}" \
+      --stringparam fontconfig "$out" \
       --stringparam fontconfigConfigVersion "${configVersion}" \
       --path $out/share/xml/fontconfig \
       ${./make-fonts-conf.xsl} $out/etc/fonts/fonts.conf \
diff --git a/pkgs/development/libraries/fontconfig/make-fonts-conf.xsl b/pkgs/development/libraries/fontconfig/make-fonts-conf.xsl
index dddbbe9e516..b59fcd0187b 100644
--- a/pkgs/development/libraries/fontconfig/make-fonts-conf.xsl
+++ b/pkgs/development/libraries/fontconfig/make-fonts-conf.xsl
@@ -28,6 +28,8 @@
       <!-- /var/cache/fontconfig is useful for non-nixos systems -->
       <cachedir>/var/cache/fontconfig</cachedir>
 
+      <!-- fontconfig distribution conf.d -->
+      <include><xsl:value-of select="$fontconfig" />/etc/fonts/conf.d</include>
       <!-- versioned system-wide config -->
       <include ignore_missing="yes">/etc/fonts/<xsl:value-of select="$fontconfigConfigVersion" />/conf.d</include>
 
diff --git a/pkgs/development/libraries/libinput/default.nix b/pkgs/development/libraries/libinput/default.nix
index a8dc8f357a7..0efee5b94f7 100644
--- a/pkgs/development/libraries/libinput/default.nix
+++ b/pkgs/development/libraries/libinput/default.nix
@@ -3,6 +3,7 @@
 , documentationSupport ? false, doxygen ? null, graphviz ? null # Documentation
 , eventGUISupport ? false, cairo ? null, glib ? null, gtk3 ? null # GUI event viewer support
 , testsSupport ? false, check ? null, valgrind ? null
+, autoconf, automake
 }:
 
 assert documentationSupport -> doxygen != null && graphviz != null;
@@ -32,13 +33,16 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkgconfig ];
 
-  buildInputs = [ libevdev mtdev libwacom ]
+  buildInputs = [ libevdev mtdev libwacom autoconf automake ]
     ++ optionals eventGUISupport [ cairo glib gtk3 ]
     ++ optionals documentationSupport [ doxygen graphviz ]
     ++ optionals testsSupport [ check valgrind ];
 
   propagatedBuildInputs = [ udev ];
 
+  patches = [ ./udev-absolute-path.patch ];
+  patchFlags = [ "-p0" ];
+
   meta = {
     description = "Handles input devices in Wayland compositors and provides a generic X.Org input driver";
     homepage    = http://www.freedesktop.org/wiki/Software/libinput;
diff --git a/pkgs/development/libraries/libinput/udev-absolute-path.patch b/pkgs/development/libraries/libinput/udev-absolute-path.patch
new file mode 100644
index 00000000000..2d3fa966b29
--- /dev/null
+++ b/pkgs/development/libraries/libinput/udev-absolute-path.patch
@@ -0,0 +1,12 @@
+--- configure.ac	2016-05-27 14:00:25.248388226 +0200
++++ configure.ac	2016-05-27 14:01:28.228943416 +0200
+@@ -214,7 +214,8 @@ AM_CONDITIONAL(BUILD_DOCS, [test "x$buil
+ # Used by the udev rules so we can use callouts during testing without
+ # installing everything first. Default is the empty string so the installed
+ # rule will use udev's default path. Override is in udev/Makefile.am
+-AC_SUBST(UDEV_TEST_PATH, "")
++UDEV_TEST_PATH="${UDEV_DIR}/"
++AC_SUBST(UDEV_TEST_PATH)
+ AC_PATH_PROG(SED, [sed])
+ 
+ AC_CONFIG_FILES([Makefile
diff --git a/pkgs/development/libraries/libjpeg-drop/default.nix b/pkgs/development/libraries/libjpeg-drop/default.nix
new file mode 100644
index 00000000000..ed1b5f5bdb0
--- /dev/null
+++ b/pkgs/development/libraries/libjpeg-drop/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, static ? true }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "libjpeg-drop-9b";
+
+  srcs = [
+    (fetchurl {
+      url = http://www.ijg.org/files/jpegsrc.v9b.tar.gz;
+      sha256 = "0lnhpahgdwlrkd41lx6cr90r199f8mc6ydlh7jznj5klvacd63r4";
+    })
+    (fetchurl {
+      url = http://jpegclub.org/droppatch.v9b.tar.gz;
+      sha256 = "022bnvpird7w5pwbfqpq7j7pwja5kp6x9k3sdypcy3g2nwwy2wwk";
+    })
+  ];
+
+  postUnpack = ''
+    rm jpegtran
+    mv jpegtran.c jpeg-9b/jpegtran.c
+    mv transupp.c jpeg-9b/transupp.c
+    mv transupp.h jpeg-9b/transupp.h
+  '';
+
+  configureFlags = []
+    ++ optional static [ "--enable-static" "--disable-shared" ];
+
+  outputs = [ "dev" "out" "man" "bin" ];
+
+  meta = {
+    homepage = http://jpegclub.org/jpegtran/;
+    description = "Experimental lossless crop 'n' drop (cut & paste) patches for libjpeg";
+    license = stdenv.lib.licenses.free;
+  };
+}
diff --git a/pkgs/development/libraries/libmediainfo/default.nix b/pkgs/development/libraries/libmediainfo/default.nix
index 26416dc1ee1..90869a4c8a5 100644
--- a/pkgs/development/libraries/libmediainfo/default.nix
+++ b/pkgs/development/libraries/libmediainfo/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, autoreconfHook, pkgconfig, libzen, zlib }:
 
 stdenv.mkDerivation rec {
-  version = "0.7.86";
+  version = "0.7.87";
   name = "libmediainfo-${version}";
   src = fetchurl {
     url = "http://mediaarea.net/download/source/libmediainfo/${version}/libmediainfo_${version}.tar.xz";
-    sha256 = "14m7cgd93mglc9a4x28pb4yc6nfxhqk7vfryca83vpn80la1lxy0";
+    sha256 = "1gvjvc809mrhpcqr62cihhc6jnwml197xjbgydnzvsghih8dq8s9";
   };
 
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
diff --git a/pkgs/development/libraries/libmsgpack/default.nix b/pkgs/development/libraries/libmsgpack/default.nix
index 5b2c7902c3c..2af7e31c889 100644
--- a/pkgs/development/libraries/libmsgpack/default.nix
+++ b/pkgs/development/libraries/libmsgpack/default.nix
@@ -1,12 +1,12 @@
 { callPackage, fetchFromGitHub, ... } @ args:
 
 callPackage ./generic.nix (args // rec {
-  version = "1.1.0";
+  version = "2.0.0";
 
   src = fetchFromGitHub {
     owner = "msgpack";
     repo = "msgpack-c";
     rev = "cpp-${version}";
-    sha256 = "1hnpnin6gjiilbzfd75871kamfn9grrf53qpbs061sflvz56fddq";
+    sha256 = "189m44pwpcpf7g4yhzfla4djqyp2kl54wxmwfaj94gwgj5s370i7";
   };
 })
diff --git a/pkgs/development/libraries/libtomcrypt/default.nix b/pkgs/development/libraries/libtomcrypt/default.nix
index e960f5ef57f..896c907bbc8 100644
--- a/pkgs/development/libraries/libtomcrypt/default.nix
+++ b/pkgs/development/libraries/libtomcrypt/default.nix
@@ -4,7 +4,7 @@ stdenv.mkDerivation {
   name = "libtomcrypt-1.17";
 
   src = fetchurl {
-    url = "http://libtom.org/files/crypt-1.17.tar.bz2";
+    url = "https://github.com/libtom/libtomcrypt/releases/download/1.17/crypt-1.17.tar.bz2";
     sha256 = "e33b47d77a495091c8703175a25c8228aff043140b2554c08a3c3cd71f79d116";
   };
 
diff --git a/pkgs/development/libraries/libtommath/default.nix b/pkgs/development/libraries/libtommath/default.nix
index d76237e141d..8e9b79b39d3 100644
--- a/pkgs/development/libraries/libtommath/default.nix
+++ b/pkgs/development/libraries/libtommath/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl, libtool}:
 
 stdenv.mkDerivation {
-  name = "libtommath-0.39";
+  name = "libtommath-1.0";
   
   src = fetchurl {
-    url = http://math.libtomcrypt.com/files/ltm-0.39.tar.bz2;
-    sha256 = "1kjx8rrw62nanzc5qp8fj6r3ybhw8ca60ahkyb70f10aiij49zs2";
+    url = https://github.com/libtom/libtommath/releases/download/v1.0/ltm-1.0.tar.xz;
+    sha256 = "0v5mpd8zqjfs2hr900w1mxifz23xylyjdqyx1i1wl7q9xvwpsflr";
   };
 
   buildInputs = [libtool];
diff --git a/pkgs/development/libraries/libui/default.nix b/pkgs/development/libraries/libui/default.nix
new file mode 100644
index 00000000000..5fabd127580
--- /dev/null
+++ b/pkgs/development/libraries/libui/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchgit, cmake, pkgconfig, gtk3 }:
+
+stdenv.mkDerivation rec {
+  version = "3.1.a";
+  name = "libui-${version}";
+  src  = fetchgit {
+    url    = "https://github.com/andlabs/libui.git";
+    rev    = "6ebdc96b93273c3cedf81159e7843025caa83058";
+    sha256 = "1lpbfa298c61aarlzgp7vghrmxg1274pzxh1j9isv8x758gk6mfn";
+  };
+
+  buildInputs = [ cmake pkgconfig gtk3 ];
+
+  installPhase = ''
+    mkdir -p $out
+    mv ./out/libui.so.0 $out/libui.so.0
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.";
+    homepage    = https://github.com/andlabs/libui;
+    platforms   = platforms.linux;
+    license     = licenses.mit;
+  };
+}
diff --git a/pkgs/development/libraries/ncurses/default.nix b/pkgs/development/libraries/ncurses/default.nix
index 7133634f2eb..c1037a81c85 100644
--- a/pkgs/development/libraries/ncurses/default.nix
+++ b/pkgs/development/libraries/ncurses/default.nix
@@ -1,15 +1,14 @@
 { lib, stdenv, fetchurl, pkgconfig
 
+, abiVersion
 , mouseSupport ? false
 , unicode ? true
 
 , gpm
 }:
 let
-  inherit (stdenv) isDarwin;
-  abiVersion = if isDarwin then "5" else "6";
-  version = if isDarwin then "5.9" else "6.0";
-  sha256 = if isDarwin
+  version = if abiVersion == "5" then "5.9" else "6.0";
+  sha256 = if abiVersion == "5"
     then "0fsn7xis81za62afan0vvm38bvgzg5wfmv1m86flqcj0nj7jjilh"
     else "0q3jck7lna77z5r42f13c4xglc7azd19pxfrjrpgp2yf615w4lgm";
 in
@@ -21,7 +20,7 @@ stdenv.mkDerivation rec {
     inherit sha256;
   };
 
-  patches = [ ./clang.patch ];
+  patches = [ ./clang.patch ] ++ lib.optional (abiVersion == "5" && stdenv.cc.isGNU) ./gcc-5.patch;
 
   outputs = [ "dev" "out" "man" ];
   setOutputFlags = false; # some aren't supported
diff --git a/pkgs/development/libraries/ncurses/gcc-5.patch b/pkgs/development/libraries/ncurses/gcc-5.patch
new file mode 100644
index 00000000000..2448229b88e
--- /dev/null
+++ b/pkgs/development/libraries/ncurses/gcc-5.patch
@@ -0,0 +1,46 @@
+https://bugs.gentoo.org/545114
+
+extracted from the upstream change (which had many unrelated commits in one)
+
+From 97bb4678dc03e753290b39bbff30ba2825df9517 Mon Sep 17 00:00:00 2001
+From: "Thomas E. Dickey" <dickey@invisible-island.net>
+Date: Sun, 7 Dec 2014 03:10:09 +0000
+Subject: [PATCH] ncurses 5.9 - patch 20141206
+
++ modify MKlib_gen.sh to work around change in development version of
+  gcc introduced here:
+	  https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
+	  https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00236.html
+  (reports by Marcus Shawcroft, Maohui Lei).
+
+diff --git a/ncurses/base/MKlib_gen.sh b/ncurses/base/MKlib_gen.sh
+index d8cc3c9..b91398c 100755
+--- a/ncurses/base/MKlib_gen.sh
++++ b/ncurses/base/MKlib_gen.sh
+@@ -474,11 +474,22 @@ sed -n -f $ED1 \
+ 	-e 's/gen_$//' \
+ 	-e 's/  / /g' >>$TMP
+ 
++cat >$ED1 <<EOF
++s/  / /g
++s/^ //
++s/ $//
++s/P_NCURSES_BOOL/NCURSES_BOOL/g
++EOF
++
++# A patch discussed here:
++#	https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
++# introduces spurious #line markers.  Work around that by ignoring the system's
++# attempt to define "bool" and using our own symbol here.
++sed -e 's/bool/P_NCURSES_BOOL/g' $TMP > $ED2
++cat $ED2 >$TMP
++
+ $preprocessor $TMP 2>/dev/null \
+-| sed \
+-	-e 's/  / /g' \
+-	-e 's/^ //' \
+-	-e 's/_Bool/NCURSES_BOOL/g' \
++| sed -f $ED1 \
+ | $AWK -f $AW2 \
+ | sed -f $ED3 \
+ | sed \
diff --git a/pkgs/development/libraries/qrupdate/default.nix b/pkgs/development/libraries/qrupdate/default.nix
index aaa9ab8a61a..89cf865be25 100644
--- a/pkgs/development/libraries/qrupdate/default.nix
+++ b/pkgs/development/libraries/qrupdate/default.nix
@@ -28,7 +28,9 @@ stdenv.mkDerivation {
 
   buildFlags = [ "lib" "solib" ];
 
-  installTargets = "install";
+  installTargets = if stdenv.isDarwin
+                   then ["install-staticlib" "install-shlib"]
+                   else "install";
 
   buildInputs = [ gfortran openblas ];
 }
diff --git a/pkgs/development/libraries/qt-3/default.nix b/pkgs/development/libraries/qt-3/default.nix
index 28271a7a0a0..fbe63fd45f6 100644
--- a/pkgs/development/libraries/qt-3/default.nix
+++ b/pkgs/development/libraries/qt-3/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation {
   setupHook = ./setup-hook.sh;
 
   src = fetchurl {
-    url = ftp://ftp.trolltech.com/qt/source/qt-x11-free-3.3.8.tar.bz2;
+    url = http://download.qt.io/archive/qt/3/qt-x11-free-3.3.8.tar.bz2;
     sha256 = "0jd4g3bwkgk2s4flbmgisyihm7cam964gzb3pawjlkhas01zghz8";
   };
 
@@ -41,14 +41,14 @@ stdenv.mkDerivation {
     -I${xextproto}/include
     ${if openglSupport then "-dlopen-opengl
       -L${mesa}/lib -I${mesa}/include
-      -L${libXmu}/lib -I${libXmu}/include" else ""}
+      -L${libXmu.out}/lib -I${libXmu.dev}/include" else ""}
     ${if threadSupport then "-thread" else "-no-thread"}
-    ${if xrenderSupport then "-xrender -L${libXrender}/lib -I${libXrender}/include" else "-no-xrender"}
+    ${if xrenderSupport then "-xrender -L${libXrender.out}/lib -I${libXrender.dev}/include" else "-no-xrender"}
     ${if xrandrSupport then "-xrandr
-      -L${libXrandr}/lib -I${libXrandr}/include
+      -L${libXrandr.out}/lib -I${libXrandr.dev}/include
       -I${randrproto}/include" else "-no-xrandr"}
-    ${if xineramaSupport then "-xinerama -L${libXinerama}/lib -I${libXinerama}/include" else "-no-xinerama"}
-    ${if cursorSupport then "-L${libXcursor}/lib -I${libXcursor}/include" else ""}
+    ${if xineramaSupport then "-xinerama -L${libXinerama.out}/lib -I${libXinerama.dev}/include" else "-no-xinerama"}
+    ${if cursorSupport then "-L${libXcursor.out}/lib -I${libXcursor.dev}/include" else ""}
     ${if mysqlSupport then "-qt-sql-mysql -L${mysql.lib}/lib/mysql -I${mysql.lib}/include/mysql" else ""}
     ${if xftSupport then "-xft
       -L${libXft.out}/lib -I${libXft.dev}/include
diff --git a/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh b/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh
index 3b537430371..b0d0bec9e3f 100644
--- a/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh
+++ b/pkgs/development/libraries/qt-5/5.5/make-qt-wrapper.sh
@@ -2,11 +2,11 @@ wrapQtProgram() {
     local prog="$1"
     shift
     wrapProgram "$prog" \
-        --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \
-        --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \
-        --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \
-        --prefix XDG_CONFIG_DIRS : "$NIX_WRAP_XDG_CONFIG_DIRS" \
-        --prefix XDG_DATA_DIRS : "$NIX_WRAP_XDG_DATA_DIRS" \
+        --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \
+        --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \
+        --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \
+        --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \
+        --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \
         "$@"
 }
 
@@ -16,11 +16,11 @@ makeQtWrapper() {
     shift
     shift
     makeWrapper "$old" "$new" \
-        --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \
-        --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \
-        --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \
-        --prefix XDG_CONFIG_DIRS : "$NIX_WRAP_XDG_CONFIG_DIRS" \
-        --prefix XDG_DATA_DIRS : "$NIX_WRAP_XDG_DATA_DIRS" \
+        --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \
+        --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \
+        --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \
+        --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \
+        --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \
         "$@"
 }
 
@@ -29,10 +29,8 @@ _makeQtWrapperSetup() {
     export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}${!outputLib}/lib/qt5/plugins"
     export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}${!outputLib}/lib/qt5/imports"
     export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}${!outputLib}/lib/qt5/qml"
-    export XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg"
-    export XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputLib}/share"
-    export NIX_WRAP_XDG_CONFIG_DIRS="$NIX_WRAP_XDG_CONFIG_DIRS${NIX_WRAP_XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg"
-    export NIX_WRAP_XDG_DATA_DIRS="$NIX_WRAP_XDG_DATA_DIRS${NIX_WRAP_XDG_DATA_DIRS:+:}${!outputLib}/share"
+    export RUNTIME_XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputBin}/share"
+    export RUNTIME_XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputBin}/etc/xdg"
 }
 
 prePhases+=(_makeQtWrapperSetup)
diff --git a/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh b/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh
index 5401a71bc4c..696b4ea8dad 100644
--- a/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh
+++ b/pkgs/development/libraries/qt-5/5.5/qmake-hook.sh
@@ -1,50 +1,16 @@
-if [[ -z "$QMAKE" ]]; then
-
-_qtLinkDependencyDir() {
-    @lndir@/bin/lndir -silent "$1/$2" "$qtOut/$2"
-    if [ -n "$NIX_QT_SUBMODULE" ]; then
-        find "$1/$2" -printf "$2/%P\n" >> "$out/nix-support/qt-inputs"
-    fi
-}
-
-_qtLinkModule() {
-    if [ -d "$1/mkspecs" ]; then
-        # $1 is a Qt module
-        _qtLinkDependencyDir "$1" mkspecs
-
-        for dir in bin include lib share; do
-            if [ -d "$1/$dir" ]; then
-                _qtLinkDependencyDir "$1" "$dir"
-            fi
-        done
-    fi
-}
-
-_qtRmModules() {
-    cat "$out/nix-support/qt-inputs" | while read file; do
-      if [ -h "$out/$file" ]; then
-        rm "$out/$file"
-      fi
-    done
-
-    cat "$out/nix-support/qt-inputs" | while read file; do
-      if [ -d "$out/$file" ]; then
-        rmdir --ignore-fail-on-non-empty -p "$out/$file"
-      fi
-    done
+qmakeConfigurePhase() {
+    runHook preConfigure
 
-    rm "$out/nix-support/qt-inputs"
-}
+    qmake PREFIX=$out $qmakeFlags
 
-_qtRmQmake() {
-    rm "$qtOut/bin/qmake" "$qtOut/bin/qt.conf"
+    runHook postConfigure
 }
 
-_qtSetQmakePath() {
-    export PATH="$qtOut/bin${PATH:+:}$PATH"
-}
+if [ -z "$dontUseQmakeConfigure" -a -z "$configurePhase" ]; then
+    configurePhase=qmakeConfigurePhase
+fi
 
-_qtMultioutModuleDevs() {
+_qtModuleMultioutDevsPre() {
     # We cannot simply set these paths in configureFlags because libQtCore retains
     # references to the paths it was built with.
     moveToOutput "bin" "${!outputDev}"
@@ -53,12 +19,14 @@ _qtMultioutModuleDevs() {
     # The destination directory must exist or moveToOutput will do nothing
     mkdir -p "${!outputDev}/share"
     moveToOutput "share/doc" "${!outputDev}"
+}
 
+_qtModuleMultioutDevsPost() {
     # Move libtool archives and qmake project files to $dev/lib
     if [ "z${!outputLib}" != "z${!outputDev}" ]; then
         pushd "${!outputLib}"
         if [ -d "lib" ]; then
-            find lib \( -name '*.a' -o -name '*.la' -o -name '*.prl' -print0 \) | \
+            find lib \( -name '*.a' -o -name '*.la' -o -name '*.prl' \) -print0 | \
                 while read -r -d $'\0' file; do
                     mkdir -p "${!outputDev}/$(dirname "$file")"
                     mv "${!outputLib}/$file" "${!outputDev}/$file"
@@ -68,53 +36,7 @@ _qtMultioutModuleDevs() {
     fi
 }
 
-_qtRmQtOut() {
-    rm -fr "$qtOut"
-}
-
-qmakeConfigurePhase() {
-    runHook preConfigure
-
-    qmake PREFIX=$out $qmakeFlags
-
-    runHook postConfigure
-}
-
-qtOut=""
-if [[ -z "$NIX_QT_SUBMODULE" ]]; then
-    qtOut=`mktemp -d`
-else
-    qtOut=$out
-fi
-
-mkdir -p "$qtOut/bin" "$qtOut/mkspecs" "$qtOut/include" "$qtOut/nix-support" "$qtOut/lib" "$qtOut/share"
-
-cp "@qt_dev@/bin/qmake" "$qtOut/bin"
-cat >"$qtOut/bin/qt.conf" <<EOF
-[Paths]
-Prefix = $qtOut
-Plugins = lib/qt5/plugins
-Imports = lib/qt5/imports
-Qml2Imports = lib/qt5/qml
-Documentation = share/doc/qt5
-EOF
-
-export QMAKE="$qtOut/bin/qmake"
-
-envHooks+=(_qtLinkModule)
-# Set PATH to find qmake first in a preConfigure hook
-# It must run after all the envHooks!
-postHooks+=(_qtSetQmakePath)
-
-if [ -z "$dontUseQmakeConfigure" -a -z "$configurePhase" ]; then
-    configurePhase=qmakeConfigurePhase
-fi
-
 if [ -n "$NIX_QT_SUBMODULE" ]; then
-    postInstallHooks+=(_qtRmQmake _qtRmModules)
-    preFixupHooks+=(_qtMultioutModuleDevs)
-else
-    postInstallHooks+=(_qtRmQtOut)
-fi
-
+    preFixupHooks+=(_qtModuleMultioutDevsPre)
+    postFixupHooks+=(_qtModuleMultioutDevsPost)
 fi
diff --git a/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix b/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
index f3badc24244..fcd87016307 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtbase/default.nix
@@ -276,6 +276,7 @@ stdenv.mkDerivation {
       fixQtModuleCMakeConfig "Xml"
     '';
 
+  inherit lndir;
   setupHook = ./setup-hook.sh;
 
   enableParallelBuilding = true;
diff --git a/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh b/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh
index a9c4fbc855f..6d8989281eb 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh
+++ b/pkgs/development/libraries/qt-5/5.5/qtbase/setup-hook.sh
@@ -24,11 +24,10 @@ propagateOnce() {
     addToSearchPathOnceWithCustomDelimiter ' ' "$@"
 }
 
-_qtPropagateRuntimeDependencies() {
+_qtPropagate() {
     for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
         if [ -d "$1/$dir" ]; then
             propagateOnce propagatedBuildInputs "$1"
-            propagateOnce propagatedUserEnvPkgs "$1"
             break
         fi
     done
@@ -37,7 +36,23 @@ _qtPropagateRuntimeDependencies() {
     addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
 }
 
-envHooks+=(_qtPropagateRuntimeDependencies)
+crossEnvHooks+=(_qtPropagate)
+
+_qtPropagateNative() {
+    for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
+        if [ -d "$1/$dir" ]; then
+            propagateOnce propagatedNativeBuildInputs "$1"
+            break
+        fi
+    done
+    if [ -z "$crossConfig" ]; then
+        addToSearchPathOnce QT_PLUGIN_PATH "$1/lib/qt5/plugins"
+        addToSearchPathOnce QML_IMPORT_PATH "$1/lib/qt5/imports"
+        addToSearchPathOnce QML2_IMPORT_PATH "$1/lib/qt5/qml"
+    fi
+}
+
+envHooks+=(_qtPropagateNative)
 
 _qtMultioutDevs() {
     # This is necessary whether the package is a Qt module or not
@@ -50,3 +65,107 @@ if [[ -z "$NIX_QT_PIC" ]]; then
     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE${NIX_CFLAGS_COMPILE:+ }-fPIC"
     export NIX_QT_PIC=1
 fi
+
+_qtSetCMakePrefix() {
+    export CMAKE_PREFIX_PATH="$NIX_QT5_TMP${CMAKE_PREFIX_PATH:+:}${CMAKE_PREFIX_PATH}"
+}
+
+_qtRmTmp() {
+    if [ -z "$NIX_QT_SUBMODULE" ]; then
+        rm -fr "$NIX_QT5_TMP"
+    else
+        cat "$NIX_QT5_TMP/nix-support/qt-inputs" | while read file; do
+            if [ ! -d "$NIX_QT5_TMP/$file" ]; then
+                rm -f "$NIX_QT5_TMP/$file"
+            fi
+        done
+
+        cat "$NIX_QT5_TMP/nix-support/qt-inputs" | while read dir; do
+            if [ -d "$NIX_QT5_TMP/$dir" ]; then
+                rmdir --ignore-fail-on-non-empty -p "$NIX_QT5_TMP/$dir"
+            fi
+        done
+
+        rm "$NIX_QT5_TMP/nix-support/qt-inputs"
+    fi
+}
+
+_qtSetQmakePath() {
+    export PATH="$NIX_QT5_TMP/bin${PATH:+:}$PATH"
+}
+
+if [ -z "$NIX_QT5_TMP" ]; then
+    if [ -z "$NIX_QT_SUBMODULE" ]; then
+        NIX_QT5_TMP=$(mktemp -d)
+    else
+        NIX_QT5_TMP=$out
+    fi
+    postInstallHooks+=(_qtRmTmp)
+
+    mkdir -p "$NIX_QT5_TMP/nix-support"
+    for subdir in bin include lib mkspecs share; do
+        mkdir "$NIX_QT5_TMP/$subdir"
+        echo "$subdir/" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
+    done
+
+    postHooks+=(_qtSetCMakePrefix)
+
+    cp "@dev@/bin/qmake" "$NIX_QT5_TMP/bin"
+    echo "bin/qmake" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
+
+    cat >"$NIX_QT5_TMP/bin/qt.conf" <<EOF
+[Paths]
+Prefix = $NIX_QT5_TMP
+Plugins = lib/qt5/plugins
+Imports = lib/qt5/imports
+Qml2Imports = lib/qt5/qml
+Documentation = share/doc/qt5
+EOF
+    echo "bin/qt.conf" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
+
+    export QMAKE="$NIX_QT5_TMP/bin/qmake"
+
+    # Set PATH to find qmake first in a preConfigure hook
+    # It must run after all the envHooks!
+    preConfigureHooks+=(_qtSetQmakePath)
+fi
+
+qt5LinkModuleDir() {
+    if [ -d "$1/$2" ]; then
+        @lndir@/bin/lndir -silent "$1/$2" "$NIX_QT5_TMP/$2"
+        find "$1/$2" -printf "$2/%P\n" >> "$NIX_QT5_TMP/nix-support/qt-inputs"
+    fi
+}
+
+NIX_QT5_MODULES="${NIX_QT5_MODULES}${NIX_QT5_MODULES:+:}@out@"
+NIX_QT5_MODULES_DEV="${NIX_QT5_MODULES_DEV}${NIX_QT5_MODULES_DEV:+:}@dev@"
+
+_qtLinkAllModules() {
+    IFS=: read -a modules <<< $NIX_QT5_MODULES
+    for module in ${modules[@]}; do
+        qt5LinkModuleDir "$module" "lib"
+    done
+
+    IFS=: read -a modules <<< $NIX_QT5_MODULES_DEV
+    for module in ${modules[@]}; do
+        qt5LinkModuleDir "$module" "bin"
+        qt5LinkModuleDir "$module" "include"
+        qt5LinkModuleDir "$module" "lib"
+        qt5LinkModuleDir "$module" "mkspecs"
+        qt5LinkModuleDir "$module" "share"
+    done
+}
+
+preConfigureHooks+=(_qtLinkAllModules)
+
+_qtFixCMakePaths() {
+    find "${!outputLib}" -name "*.cmake" | while read file; do
+        substituteInPlace "$file" \
+            --subst-var-by NIX_OUT "${!outputLib}" \
+            --subst-var-by NIX_DEV "${!outputDev}"
+    done
+}
+
+if [ -n "$NIX_QT_SUBMODULE" ]; then
+    postInstallHooks+=(_qtFixCMakePaths)
+fi
diff --git a/pkgs/development/libraries/qt-5/5.5/qtlocation.nix b/pkgs/development/libraries/qt-5/5.5/qtlocation.nix
index 0e2ad8bafb3..bd11d4816ff 100644
--- a/pkgs/development/libraries/qt-5/5.5/qtlocation.nix
+++ b/pkgs/development/libraries/qt-5/5.5/qtlocation.nix
@@ -4,7 +4,6 @@ qtSubmodule {
   name = "qtlocation";
   qtInputs = [ qtbase qtmultimedia ];
   postFixup = ''
-    fixQtModuleCMakeConfig "Location"
     fixQtModuleCMakeConfig "Positioning"
   '';
 }
diff --git a/pkgs/development/libraries/qt-5/5.6/make-qt-wrapper.sh b/pkgs/development/libraries/qt-5/5.6/make-qt-wrapper.sh
index 3b537430371..b0d0bec9e3f 100644
--- a/pkgs/development/libraries/qt-5/5.6/make-qt-wrapper.sh
+++ b/pkgs/development/libraries/qt-5/5.6/make-qt-wrapper.sh
@@ -2,11 +2,11 @@ wrapQtProgram() {
     local prog="$1"
     shift
     wrapProgram "$prog" \
-        --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \
-        --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \
-        --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \
-        --prefix XDG_CONFIG_DIRS : "$NIX_WRAP_XDG_CONFIG_DIRS" \
-        --prefix XDG_DATA_DIRS : "$NIX_WRAP_XDG_DATA_DIRS" \
+        --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \
+        --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \
+        --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \
+        --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \
+        --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \
         "$@"
 }
 
@@ -16,11 +16,11 @@ makeQtWrapper() {
     shift
     shift
     makeWrapper "$old" "$new" \
-        --prefix QT_PLUGIN_PATH : "$QT_PLUGIN_PATH" \
-        --prefix QML_IMPORT_PATH : "$QML_IMPORT_PATH" \
-        --prefix QML2_IMPORT_PATH : "$QML2_IMPORT_PATH" \
-        --prefix XDG_CONFIG_DIRS : "$NIX_WRAP_XDG_CONFIG_DIRS" \
-        --prefix XDG_DATA_DIRS : "$NIX_WRAP_XDG_DATA_DIRS" \
+        --set QT_PLUGIN_PATH "$QT_PLUGIN_PATH" \
+        --set QML_IMPORT_PATH "$QML_IMPORT_PATH" \
+        --set QML2_IMPORT_PATH "$QML2_IMPORT_PATH" \
+        --prefix XDG_DATA_DIRS : "$RUNTIME_XDG_DATA_DIRS" \
+        --prefix XDG_CONFIG_DIRS : "$RUNTIME_XDG_CONFIG_DIRS" \
         "$@"
 }
 
@@ -29,10 +29,8 @@ _makeQtWrapperSetup() {
     export QT_PLUGIN_PATH="$QT_PLUGIN_PATH${QT_PLUGIN_PATH:+:}${!outputLib}/lib/qt5/plugins"
     export QML_IMPORT_PATH="$QML_IMPORT_PATH${QML_IMPORT_PATH:+:}${!outputLib}/lib/qt5/imports"
     export QML2_IMPORT_PATH="$QML2_IMPORT_PATH${QML2_IMPORT_PATH:+:}${!outputLib}/lib/qt5/qml"
-    export XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg"
-    export XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputLib}/share"
-    export NIX_WRAP_XDG_CONFIG_DIRS="$NIX_WRAP_XDG_CONFIG_DIRS${NIX_WRAP_XDG_CONFIG_DIRS:+:}${!outputLib}/etc/xdg"
-    export NIX_WRAP_XDG_DATA_DIRS="$NIX_WRAP_XDG_DATA_DIRS${NIX_WRAP_XDG_DATA_DIRS:+:}${!outputLib}/share"
+    export RUNTIME_XDG_DATA_DIRS="$XDG_DATA_DIRS${XDG_DATA_DIRS:+:}${!outputBin}/share"
+    export RUNTIME_XDG_CONFIG_DIRS="$XDG_CONFIG_DIRS${XDG_CONFIG_DIRS:+:}${!outputBin}/etc/xdg"
 }
 
 prePhases+=(_makeQtWrapperSetup)
diff --git a/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh b/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh
index 8d1a453787f..6d8989281eb 100644
--- a/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh
+++ b/pkgs/development/libraries/qt-5/5.6/qtbase/setup-hook.sh
@@ -28,7 +28,6 @@ _qtPropagate() {
     for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
         if [ -d "$1/$dir" ]; then
             propagateOnce propagatedBuildInputs "$1"
-            propagateOnce propagatedUserEnvPkgs "$1"
             break
         fi
     done
@@ -43,9 +42,6 @@ _qtPropagateNative() {
     for dir in "lib/qt5/plugins" "lib/qt5/qml" "lib/qt5/imports"; do
         if [ -d "$1/$dir" ]; then
             propagateOnce propagatedNativeBuildInputs "$1"
-            if [ -z "$crossConfig" ]; then
-                propagateOnce propagatedUserEnvPkgs "$1"
-            fi
             break
         fi
     done
diff --git a/pkgs/development/libraries/tk/generic.nix b/pkgs/development/libraries/tk/generic.nix
index c3bab0b2f86..934bfa6a9e9 100644
--- a/pkgs/development/libraries/tk/generic.nix
+++ b/pkgs/development/libraries/tk/generic.nix
@@ -17,9 +17,11 @@ stdenv.mkDerivation {
     "--with-tcl=${tcl}/lib"
   ];
 
-  buildInputs = [ pkgconfig tcl libXft ]
+  buildInputs = [ pkgconfig ]
     ++ stdenv.lib.optional stdenv.isDarwin fontconfig;
 
+  propagatedBuildInputs = [ tcl libXft ];
+
   NIX_CFLAGS_LINK = if stdenv.isDarwin then "-lfontconfig" else null;
 
   inherit tcl;
diff --git a/pkgs/development/libraries/unittest-cpp/default.nix b/pkgs/development/libraries/unittest-cpp/default.nix
new file mode 100644
index 00000000000..e0ce2ab224e
--- /dev/null
+++ b/pkgs/development/libraries/unittest-cpp/default.nix
@@ -0,0 +1,26 @@
+{stdenv, fetchFromGitHub, cmake}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "unittest-cpp-${version}";
+  version = "1.6.1";
+
+  src = fetchFromGitHub {
+    owner = "unittest-cpp";
+    repo = "unittest-cpp";
+    rev = "v${version}";
+    sha256 = "1sva2bm90z4vmwwvp0af82f7p4sdq5j2jjqzhs2ppihdkggn62d1";
+  };
+
+  buildInputs = [cmake];
+
+  doCheck = false;
+
+  meta = {
+    homepage = "https://github.com/unittest-cpp/unittest-cpp";
+    description = "Lightweight unit testing framework for C++";
+    license = licenses.mit;
+    maintainers = [maintainers.tohl];
+  };
+}
diff --git a/pkgs/development/libraries/webkitgtk/2.4.nix b/pkgs/development/libraries/webkitgtk/2.4.nix
index cc7644f742d..e6e61e0482c 100644
--- a/pkgs/development/libraries/webkitgtk/2.4.nix
+++ b/pkgs/development/libraries/webkitgtk/2.4.nix
@@ -15,7 +15,7 @@ assert stdenv.isDarwin -> !enableCredentialStorage;
 with stdenv.lib;
 stdenv.mkDerivation rec {
   name = "webkitgtk-${version}";
-  version = "2.4.9";
+  version = "2.4.11";
 
   meta = with stdenv.lib; {
     description = "Web content rendering engine, GTK+ port";
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "http://webkitgtk.org/releases/${name}.tar.xz";
-    sha256 = "0r651ar3p0f8zwl7764kyimxk5hy88cwy116pv8cl5l8hbkjkpxg";
+    sha256 = "1xsvnvyvlywwyf6m9ainpsg87jkxjmd37q6zgz9cxb7v3c2ym2jq";
   };
 
   CC = "cc";
@@ -46,6 +46,7 @@ stdenv.mkDerivation rec {
 
   configureFlags = with stdenv.lib; [
     "--disable-geolocation"
+    "--disable-jit"
     (optionalString enableIntrospection "--enable-introspection")
   ] ++ optional withGtk2 [
     "--with-gtk=2.0"
diff --git a/pkgs/development/r-modules/default.nix b/pkgs/development/r-modules/default.nix
index c7eeb431bb6..92b3dc3c71c 100644
--- a/pkgs/development/r-modules/default.nix
+++ b/pkgs/development/r-modules/default.nix
@@ -1137,18 +1137,7 @@ let
     "choroplethr" # depends on broken package acs
     "acs" # broken build
     "spray" # depends on broken package partitions
-    "simmr" # depends on broken package rjags
-    "morse" # depends on broken package rjags
-    "gemtc" # depends on broken package rjags
-    "EasyMARK" # depends on broken package rjags
-    "PVAClone" # depends on broken package rjags
-    "sharx" # depends on broken package rjags
-    "dcmle" # depends on broken package rjags
-    "dclone" # depends on broken package rjags
-    "CNVrd2" # depends on broken package rjags
-    "bayescount" # depends on broken package rjags
-    "BANOVA" # depends on broken package rjags
-    "rjags" # broken build
+    "CNVrd2" # broken build
     "proteoQC" # depends on broken package rTANDEM
     "PGA" # depends on broken package rTANDEM
     "MBESS" # depends on broken package OpenMx
@@ -1211,13 +1200,11 @@ let
     "ARTool" # depends on broken package nlopt
     "AssetPricing" # broken build
     "AtelieR" # broken build
-    "auRoc" # depends on broken package rjags
+    "auRoc" # depends on broken package MBESS
     "AutoModel" # depends on broken package car
     "bamdit" # broken build
-    "BANOVA" # broken build
     "bapred" # depends on broken package lme4
     "bartMachine" # depends on broken package nlopt
-    "bayescount" # broken build
     "bayesDem" # depends on broken package nlopt
     "bayesLife" # depends on broken package nlopt
     "BayesMed" # broken build
@@ -1283,7 +1270,6 @@ let
     "covmat" # depends on broken package VIM
     "cplexAPI" # build is broken
     "cquad" # depends on broken package car
-    "crmPack" # depends on broken package rjags
     "CrypticIBDcheck" # depends on broken package nlopt
     "ctsem" # depends on broken package OpenMx
     "cudaBayesreg" # build is broken
@@ -1293,7 +1279,7 @@ let
     "datafsm" # depends on broken package caret
     "dbConnect" # broken build
     "DBKGrad" # depends on broken package rpanel
-    "dcmle" # broken build
+    #"dcmle" # broken build
     "ddst" # broken build
     "Deducer" # depends on broken package nlopt
     "DeducerExtras" # depends on broken package nlopt
@@ -1318,7 +1304,6 @@ let
     "drsmooth" # depends on broken package nlopt
     "dynlm" # depends on broken package nlopt
     "easyanova" # depends on broken package nlopt
-    "EasyMARK" # broken build
     "ecd" # depends on broken package polynom
     "edge" # depends on broken package nlopt
     "eeptools" # depends on broken package nlopt
@@ -1370,7 +1355,6 @@ let
     "gcmr" # depends on broken package nlopt
     "GDAtools" # depends on broken package nlopt
     "gdtools" # broken build
-    "gemtc" # broken build
     "GENE_E" # depends on broken package rhdf5
     "GENESIS" # broken build
     "genridge" # depends on broken package nlopt
@@ -1499,7 +1483,6 @@ let
     "mlVAR" # depends on broken package nlopt
     "MM" # broken build
     "mongolite" # build is broken
-    "morse" # broken build
     "mosaic" # depends on broken package nlopt
     "mpoly" # broken build
     "mRMRe" # broken build
@@ -1577,7 +1560,6 @@ let
     "PSAboot" # depends on broken package nlopt
     "ptw" # depends on broken nloptr
     "PurBayes" # broken build
-    "PVAClone" # broken build
     "pvca" # depends on broken package nlopt
     "PythonInR" # broken build
     "QFRM" # broken build
@@ -1664,7 +1646,6 @@ let
     "Rgnuplot" # broken build
     "rhdf5" # build is broken
     "rjade" # depends on broken package V8
-    "rjags" # broken build
     "rJPSGCS" # build is broken
     "rLindo" # build is broken
     "RLRsim" # depends on broken package lme4
@@ -1724,10 +1705,8 @@ let
     "seqHMM" # depends on broken package nloptr
     "seqTools" # build is broken
     "SharpeR" # broken build
-    "sharx" # broken build
     "shinyTANDEM" # depends on broken package rTANDEM
     "SIBER" # broken build
-    "simmr" # broken build
     "simPop" # depends on broken package VIM
     "simr" # depends on broken package lme4
     "SJava" # broken build
diff --git a/pkgs/development/tools/analysis/cppcheck/default.nix b/pkgs/development/tools/analysis/cppcheck/default.nix
index 778aaa90cbe..31d62bdae19 100644
--- a/pkgs/development/tools/analysis/cppcheck/default.nix
+++ b/pkgs/development/tools/analysis/cppcheck/default.nix
@@ -1,15 +1,13 @@
 { stdenv, fetchurl, libxslt, docbook_xsl, docbook_xml_dtd_45 }:
 
-let
-  pname = "cppcheck";
-in
 stdenv.mkDerivation rec {
+  pname = "cppcheck";
+  version = "1.74";
   name = "${pname}-${version}";
-  version = "1.73";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${name}.tar.bz2";
-    sha256 = "0l7yslf311h3kidi91q4zhqj3f3vsjp1gb2z50y20423fda87xin";
+    sha256 = "0m62byiprabm1m3mc4r2w54p7qyhgi8msipnpm66ychr8rz2yny0";
   };
 
   nativeBuildInputs = [ libxslt docbook_xsl docbook_xml_dtd_45 ];
@@ -27,8 +25,8 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "A static analysis tool for C/C++ code";
     longDescription = ''
-      Check C/C++ code for memory leaks, mismatching
-      allocation-deallocation, buffer overruns and more.
+      Check C/C++ code for memory leaks, mismatching allocation-deallocation,
+      buffer overruns and more.
     '';
     homepage = http://cppcheck.sourceforge.net/;
     license = licenses.gpl3Plus;
diff --git a/pkgs/development/tools/continuous-integration/jenkins/default.nix b/pkgs/development/tools/continuous-integration/jenkins/default.nix
index cbc2b76d8ac..01d1c97ba96 100644
--- a/pkgs/development/tools/continuous-integration/jenkins/default.nix
+++ b/pkgs/development/tools/continuous-integration/jenkins/default.nix
@@ -2,16 +2,16 @@
 
 stdenv.mkDerivation rec {
   name = "jenkins-${version}";
-  version = "2.3";
+  version = "2.13";
 
   src = fetchurl {
     url = "http://mirrors.jenkins-ci.org/war/${version}/jenkins.war";
-    sha256 = "0x59dbvh6y25ki5jy51djbfbhf8g2j3yd9f3n66f7bkdfw8p78g1";
+    sha256 = "0rb3spml2c7cd34zjjc5mwsdcnwmcbcdc784nl8cczayiwz8nq3p";
   };
 
   buildCommand = ''
-    mkdir -p "$out/lib"
-    cp "$src" "$out/lib/jenkins.war"
+    mkdir -p "$out/webapps"
+    cp "$src" "$out/webapps/jenkins.war"
   '';
 
   meta = with stdenv.lib; {
@@ -19,6 +19,6 @@ stdenv.mkDerivation rec {
     homepage = http://jenkins-ci.org;
     license = licenses.mit;
     platforms = platforms.all;
-    maintainers = [ maintainers.coconnor ];
+    maintainers = with maintainers; [ coconnor fpletz ];
   };
 }
diff --git a/pkgs/development/tools/doctl/default.nix b/pkgs/development/tools/doctl/default.nix
new file mode 100644
index 00000000000..4a7d1bf87e3
--- /dev/null
+++ b/pkgs/development/tools/doctl/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "doctl-${version}";
+  version = "1.3.1";
+  rev = "a57555c195d06bc7aa5037af77fde0665ad1231f";
+  goPackagePath = "github.com/digitalocean/doctl";
+
+  src = fetchFromGitHub {
+    owner = "digitalocean";
+    repo = "doctl";
+    rev = "${rev}";
+    sha256 = "03z652fw0a628gv666w8vpi05a4sdilvs1j5scjhcbi82zsbkvma";
+  };
+
+  meta = {
+    description = "A command line tool for DigitalOcean services";
+    homepage = "https://github.com/digitalocean/doctl";
+    license = stdenv.lib.licenses.asl20;
+    platforms = stdenv.lib.platforms.all;
+    maintainers = [ stdenv.lib.maintainers.siddharthist ];
+  };
+}
diff --git a/pkgs/development/tools/mypy-lang/default.nix b/pkgs/development/tools/mypy-lang/default.nix
index d5baf994944..ebce2b86c1f 100644
--- a/pkgs/development/tools/mypy-lang/default.nix
+++ b/pkgs/development/tools/mypy-lang/default.nix
@@ -2,14 +2,14 @@
 
 python35Packages.buildPythonApplication rec {
   name = "mypy-lang-${version}";
-  version = "0.4.2";
+  version = "0.4.3";
 
   # Tests not included in pip package.
   doCheck = false;
 
   src = fetchurl {
     url = "mirror://pypi/m/mypy-lang/${name}.tar.gz";
-    sha256 = "12vwgzbpv0n403dvzas5ckw0f62slqk5j3024y65hi9n95r34rws";
+    sha256 = "11d8195xg8hksyh2qapbv66jvjgfpjwkc61nwljcfq9si144f2nb";
   };
 
   propagatedBuildInputs = with python35Packages; [ lxml ];
diff --git a/pkgs/development/tools/scalafmt/default.nix b/pkgs/development/tools/scalafmt/default.nix
index 0a4855bdcb8..e434f381067 100644
--- a/pkgs/development/tools/scalafmt/default.nix
+++ b/pkgs/development/tools/scalafmt/default.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, unzip, jre }:
 
 stdenv.mkDerivation rec {
-  version = "0.2.5";
+  version = "0.2.11";
   baseName = "scalafmt";
   name = "${baseName}-${version}";
 
   src = fetchurl {
     url = "https://github.com/olafurpg/scalafmt/releases/download/v${version}/${baseName}.tar.gz";
-    sha256 = "07l95xdwgdbdfa91pg1sds82aw3c60gxzdcvdhhhk6a7zwrl73cp";
+    sha256 = "044n00mhrdxij1kc8wplvni7pf8lnninxrsm9v41gicbk73cm2q8";
   };
 
   unpackPhase = "tar xvzf $src";
diff --git a/pkgs/development/tools/vagrant/default.nix b/pkgs/development/tools/vagrant/default.nix
index c970b319a94..6dfbb6978db 100644
--- a/pkgs/development/tools/vagrant/default.nix
+++ b/pkgs/development/tools/vagrant/default.nix
@@ -4,7 +4,7 @@
 assert stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux";
 
 let
-  version = "1.8.1";
+  version = "1.8.4";
   rake = buildRubyGem {
     inherit ruby;
     gemName = "rake";
@@ -20,12 +20,12 @@ stdenv.mkDerivation rec {
     if stdenv.system == "x86_64-linux" then
       fetchurl {
         url    = "https://releases.hashicorp.com/vagrant/${version}/vagrant_${version}_x86_64.deb";
-        sha256 = "0gb999ql4kfxd9473cx3xn6a11094dm4iyrx1dzd9v2sygh1l3pd";
+        sha256 = "fd38d8e00e494a617201facb42fc2cac627e5021db15e91c2a041eac6a2d8208";
       }
     else
       fetchurl {
         url    = "https://releases.hashicorp.com/vagrant/${version}/vagrant_${version}_i686.deb";
-        sha256 = "1nzg6i9i270xgaih381q096lb23rwxkif4ba9j62y3zjmj6az4xf";
+        sha256 = "555351717cacaa8660821df8988cc40a39923b06b698fca6bb90621008aab06f";
       };
 
   meta = with stdenv.lib; {
@@ -97,12 +97,12 @@ stdenv.mkDerivation rec {
 
   preFixup = ''
     # 'hide' the template file from shebang-patching
-    chmod -x $out/opt/vagrant/embedded/gems/gems/bundler-1.10.6/lib/bundler/templates/Executable
+    chmod -x $out/opt/vagrant/embedded/gems/gems/bundler-1.12.5/lib/bundler/templates/Executable
     chmod -x $out/opt/vagrant/embedded/gems/gems/vagrant-${version}/plugins/provisioners/salt/bootstrap-salt.sh
   '';
 
   postFixup = ''
-    chmod +x $out/opt/vagrant/embedded/gems/gems/bundler-1.10.6/lib/bundler/templates/Executable
+    chmod +x $out/opt/vagrant/embedded/gems/gems/bundler-1.12.5/lib/bundler/templates/Executable
     chmod +x $out/opt/vagrant/embedded/gems/gems/vagrant-${version}/plugins/provisioners/salt/bootstrap-salt.sh
   '';
 }
diff --git a/pkgs/development/web/nodejs/nodejs.nix b/pkgs/development/web/nodejs/nodejs.nix
index cae7648e6e9..debc571ea41 100644
--- a/pkgs/development/web/nodejs/nodejs.nix
+++ b/pkgs/development/web/nodejs/nodejs.nix
@@ -52,7 +52,7 @@ in stdenv.mkDerivation {
     description = "Event-driven I/O framework for the V8 JavaScript engine";
     homepage = http://nodejs.org;
     license = licenses.mit;
-    maintainers = [ maintainers.goibhniu maintainers.havvy maintainers.gilligan ];
+    maintainers = [ maintainers.goibhniu maintainers.havvy maintainers.gilligan maintainers.cko ];
     platforms = platforms.linux ++ platforms.darwin;
   };
 }
diff --git a/pkgs/development/web/nodejs/v5.nix b/pkgs/development/web/nodejs/v5.nix
index 12d0dca4503..2398ae4e739 100644
--- a/pkgs/development/web/nodejs/v5.nix
+++ b/pkgs/development/web/nodejs/v5.nix
@@ -4,9 +4,9 @@
 }@args:
 
 import ./nodejs.nix (args // rec {
-  version = "5.11.1";
+  version = "5.12.0";
   src = fetchurl {
     url = "http://nodejs.org/dist/v${version}/node-v${version}.tar.xz";
-    sha256 = "07v60mhswj77m7516zakj3p1py7ixa5jbgj0m7zlr9vygrrc66zi";
+    sha256 = "4f926373f11f2a25156eee1804ec012eb912c42e5d34fc2909889da22efdadfe";
   };
 })
diff --git a/pkgs/games/commandergenius/default.nix b/pkgs/games/commandergenius/default.nix
new file mode 100644
index 00000000000..007167dc696
--- /dev/null
+++ b/pkgs/games/commandergenius/default.nix
@@ -0,0 +1,54 @@
+{ lib, stdenv, fetchFromGitHub, SDL2, SDL2_image, pkgconfig
+, libvorbis, libogg, mesa, boost, curl, zlib, cmake }:
+
+
+stdenv.mkDerivation rec {
+  name = "commandergenius-${version}";
+  version = "194beta";
+
+  src = fetchFromGitHub {
+    owner = "gerstrong";
+    repo = "Commander-Genius";
+    rev = "v${version}";
+    sha256 = "0qxqzlmadxklrhxilbqj7y94fmbv0byj6vgpl59lb77lgs4y4x47";
+  };
+
+  buildInputs = [ SDL2 SDL2_image pkgconfig libvorbis libogg mesa boost curl zlib cmake ];
+
+  patchPhase = ''
+    cat >> lib/GsKit/CMakeLists.txt <<EOF
+    execute_process(COMMAND sdl2-config --cflags
+      OUTPUT_VARIABLE CFLAGS)
+    string(REGEX REPLACE "^-I" "" CFLAGS2 \''${CFLAGS})
+    string(REGEX REPLACE " .*" "" SDLINC \''${CFLAGS2})
+    INCLUDE_DIRECTORIES(\''${SDLINC})
+    EOF
+  '';
+
+  configurePhase = ''
+    cmake -DUSE_SDL2=yes -DBUILD_TARGET=LINUX -DCMAKE_INSTALL_PREFIX:PATH=$out -DCPACK_PACKAGE_INSTALL_DIRECTORY=$out
+    sed -i 's_/usr/share_$out_g' cmake_install.cmake
+    sed -i 's_/usr/share_$out_g' src/cmake_install.cmake
+  '';
+
+  installTargets = [ ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp src/CGeniusExe $out/bin
+  '';
+
+  meta = {
+    description = "Modern Interpreter for the Commander Keen Games";
+    longdescription = ''
+      Commander Genius is an open-source clone of
+      Commander Keen which allows you to play
+      the games, and some of the mods
+      made for it. All of the original data files
+      are required to do so
+    '';
+    homepage = "https://github.com/gerstrong/Commander-Genius";
+    maintainers = with stdenv.lib.maintainers; [ hce ]; 
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/pkgs/games/d1x-rebirth/default.nix b/pkgs/games/d1x-rebirth/default.nix
index ab8c76680d4..1b587331371 100644
--- a/pkgs/games/d1x-rebirth/default.nix
+++ b/pkgs/games/d1x-rebirth/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = http://www.dxx-rebirth.com/;
     description = "Source Port of the Descent 1 engine";
-    license = stdenv.lib.licenses.mit;
+    license = stdenv.lib.licenses.unfree;
     platforms = with stdenv.lib.platforms; linux;
     maintainers = with stdenv.lib.maintainers; [viric];
   };
diff --git a/pkgs/games/d2x-rebirth/default.nix b/pkgs/games/d2x-rebirth/default.nix
index 58df972257e..05d73a4eafe 100644
--- a/pkgs/games/d2x-rebirth/default.nix
+++ b/pkgs/games/d2x-rebirth/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = http://www.dxx-rebirth.com/;
     description = "Source Port of the Descent 2 engine";
-    license = stdenv.lib.licenses.mit;
+    license = stdenv.lib.licenses.unfree;
     platforms = with stdenv.lib.platforms; linux;
     maintainers = with stdenv.lib.maintainers; [viric];
   };
diff --git a/pkgs/misc/emulators/ppsspp/default.nix b/pkgs/misc/emulators/ppsspp/default.nix
index 68fb7105078..3f02304c0d4 100644
--- a/pkgs/misc/emulators/ppsspp/default.nix
+++ b/pkgs/misc/emulators/ppsspp/default.nix
@@ -22,6 +22,8 @@ stdenv.mkDerivation rec{
   buildInputs = [ zlib libpng pkgconfig qt4 qmake4Hook ]
                 ++ (if withGamepads then [ SDL ] else [ ]);
 
+  qmakeFlags = [ "PPSSPPQt.pro" ];
+
   preConfigure = "cd Qt";
   installPhase = "mkdir -p $out/bin && cp ppsspp $out/bin";
 
diff --git a/pkgs/misc/themes/adapta/default.nix b/pkgs/misc/themes/adapta/default.nix
index 96c43af8485..7fe968a582b 100644
--- a/pkgs/misc/themes/adapta/default.nix
+++ b/pkgs/misc/themes/adapta/default.nix
@@ -1,13 +1,13 @@
-{ stdenv, fetchFromGitHub, autoreconfHook, gtk-engine-murrine }:
+{ stdenv, fetchFromGitHub, autoreconfHook, sass, inkscape, glib, which, gtk-engine-murrine }:
 
 stdenv.mkDerivation rec {
   name = "adapta-gtk-theme-${version}";
-  version = "3.21.2";
+  version = "3.21.3.68";
 
   meta = with stdenv.lib; {
     description = "An adaptive GTK+ theme based on Material Design";
     homepage = "https://github.com/tista500/Adapta";
-    license = licenses.gpl2;
+    license = with licenses; [ gpl2 cc-by-sa-30 ];
     platforms = platforms.linux;
     maintainers = [ maintainers.SShrike ];
   };
@@ -15,13 +15,15 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "tista500";
     repo = "Adapta";
-    rev = "c48da995abc46087c22b05d2cdb0975d10774641";
-    sha256 = "17w9nsrwqwgafswyvhc5h8ld2ggi96ix5fjv6yf1hfz3l1ln9qg7";
+    rev = version;
+    sha256 = "0wwsmsyxfdgsc7fj1kn4r9zsgs09prizwkjljmirwrfdm6j3387p";
   };
 
   preferLocalBuild = true;
   buildInputs = [ gtk-engine-murrine ];
-  nativeBuildInputs = [ autoreconfHook ];
+  nativeBuildInputs = [ autoreconfHook sass inkscape glib.dev which ];
+
+  postPatch = "patchShebangs .";
 
   configureFlags = "--enable-chrome --disable-unity";
 }
diff --git a/pkgs/misc/themes/blackbird/default.nix b/pkgs/misc/themes/blackbird/default.nix
index 2104f6da876..0b907f747a8 100644
--- a/pkgs/misc/themes/blackbird/default.nix
+++ b/pkgs/misc/themes/blackbird/default.nix
@@ -1,25 +1,20 @@
-{ stdenv, fetchFromGitHub, gtk-engine-murrine }:
+{ stdenv, fetchFromGitHub, autoreconfHook, gtk-engine-murrine }:
 
 stdenv.mkDerivation rec {
   pname = "Blackbird";
-  version = "2016-04-10";
+  version = "2016-07-04";
   name = "${pname}-${version}";
 
   src = fetchFromGitHub {
     repo = "${pname}";
     owner = "shimmerproject";
-    rev = "e9f780993c957e3349f97b0e2e6fabdc36ccefb0";
-    sha256 = "00fdd63lnb2gmsn6cbdkanvh3rvz48jg08gmzg372byhj70m63hi";
+    rev = "ab4a30ee5110c59241b739e7c54956c3244e5b2a";
+    sha256 = "1qy32n21bqq3zwn9di01fbiqv67cqr9n7jmbpcmn9v8yb5p572w3";
   };
 
-  buildInputs = [ gtk-engine-murrine ];
-  
-  dontBuild = true;
+  nativeBuildInputs = [ autoreconfHook ];
 
-  installPhase = ''
-    mkdir -p $out/share/themes/${pname}
-    cp -a * $out/share/themes/${pname}/
-  '';
+  buildInputs = [ gtk-engine-murrine ];
 
   meta = {
     description = "Dark Desktop Suite for Gtk, Xfce and Metacity";
diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix
index 3134aa0eeba..b06f609bffa 100644
--- a/pkgs/misc/vim-plugins/default.nix
+++ b/pkgs/misc/vim-plugins/default.nix
@@ -173,11 +173,11 @@ rec {
   };
 
   Syntastic = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "Syntastic-2016-07-08";
+    name = "Syntastic-2016-07-16";
     src = fetchgit {
       url = "git://github.com/scrooloose/syntastic";
-      rev = "87f3e80b443870ce821f82dd1b3dba5bd66b51b2";
-      sha256 = "09prhzp58470naj8ws2m1pjgj1h675jsiyc6vmfdjsqk6ly2ypg0";
+      rev = "8ab7705b21cbe5f1c70750dee89bf8b711890a82";
+      sha256 = "1gk12lzyqgjh4qzq46m3i70h4xzf9whgdahigf6nr0yqxd6w90rw";
     };
     dependencies = [];
 
@@ -206,11 +206,11 @@ rec {
   };
 
   The_NERD_Commenter = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "The_NERD_Commenter-2016-06-10";
+    name = "The_NERD_Commenter-2016-07-14";
     src = fetchgit {
       url = "git://github.com/scrooloose/nerdcommenter";
-      rev = "e2d47bec2662d5fcd324d17e22dc37f38c97bf2d";
-      sha256 = "099i7jksdp4c4m7imv96xji4lbjscdns37fsr2qgn7zw5pjgjbw4";
+      rev = "c3d6a2069bb0286c9633fbbffb4983797f7b8822";
+      sha256 = "0xwnx8ggqpik9jnyb4a69v7z789ffrfnxc3frl644x7bhndgaa1v";
     };
     dependencies = [];
 
@@ -365,11 +365,11 @@ rec {
   };
 
   deoplete-nvim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "deoplete-nvim-2016-07-10";
+    name = "deoplete-nvim-2016-07-14";
     src = fetchgit {
       url = "git://github.com/Shougo/deoplete.nvim";
-      rev = "8102bbb73f942b232b6bcc00b8699fbe3b3f370c";
-      sha256 = "083056maiscxyyln09659qv3c7kayps2vm697p459yyhfyir742f";
+      rev = "e3cb71b4053041dffb250733bd9531814bfa4af9";
+      sha256 = "1wz3q1020f8vb7s9nncdgji045iz2nlqp59j06gbli9cjvgfhg60";
     };
     dependencies = [];
 
@@ -398,22 +398,22 @@ rec {
   };
 
   vim-css-color = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-css-color-2016-06-12";
+    name = "vim-css-color-2016-07-14";
     src = fetchgit {
       url = "git://github.com/ap/vim-css-color";
-      rev = "ba98bd138ee15dbf6b6dc3b7080c0e65e0657c76";
-      sha256 = "0l76yqd3cvdm41dx720skbphwqsza51xaf7vi8jlknsqnrb6z1kf";
+      rev = "86dff1b9c2a549994042c4548a47514350c25b6d";
+      sha256 = "1wzkcprn6sky03v6yg0dkijmdva3jszrpwzbld1744m8ylbdgf0i";
     };
     dependencies = [];
 
   };
 
   neomake = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "neomake-2016-07-11";
+    name = "neomake-2016-07-16";
     src = fetchgit {
       url = "git://github.com/benekastah/neomake";
-      rev = "14e894edc35d17b927e5540ceb6d101bbda9f51c";
-      sha256 = "1ccgfvvxsl213zlgf801yxwg51kpi5z37z175w4gh9cj8953mgxh";
+      rev = "5560a4dd58a47a0af2ae128d707e822b54c55c72";
+      sha256 = "01l7ws2m3pm90q5985rrpc7rqcgv93ypg3swy1n1sfn0m0vm1a4l";
     };
     dependencies = [];
 
@@ -485,6 +485,17 @@ rec {
 
   };
 
+  elm-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
+    name = "elm-vim-2016-06-22";
+    src = fetchgit {
+      url = "git://github.com/elmcast/elm-vim";
+      rev = "6527c8a9e1d1af31c81e60b6b40bf3316c7fbdf2";
+      sha256 = "0aj1cd5dy7z48lf6vzg76r787hgs4z5f11bczvvs1h99qik1rgbc";
+    };
+    dependencies = [];
+
+  };
+
   vim-localvimrc = buildVimPluginFrom2Nix { # created by nix#NixDerivation
     name = "vim-localvimrc-2016-06-06";
     src = fetchgit {
@@ -519,11 +530,11 @@ rec {
   };
 
   vim-go = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-go-2016-07-07";
+    name = "vim-go-2016-07-14";
     src = fetchgit {
       url = "git://github.com/fatih/vim-go";
-      rev = "ab01e7e5a6bf858c1f519a831a4db1d978b92298";
-      sha256 = "1g76hasdyncjds6yl38dkb5nwp6sb8aqzp9d7xxhwarlnnihj1la";
+      rev = "789de8e4e8c505c3058f407750165f0148ea1d02";
+      sha256 = "0hnq3abl6qvwk9rynk8pmi8slfikdaxf5irrx0xvddp38giydws1";
     };
     dependencies = [];
 
@@ -585,11 +596,11 @@ rec {
   };
 
   idris-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "idris-vim-2016-01-29";
+    name = "idris-vim-2016-07-15";
     src = fetchgit {
       url = "git://github.com/idris-hackers/idris-vim";
-      rev = "e1711749f5078f5a9fa53cd15a37627ea9d239f2";
-      sha256 = "0mbywk1mwbx3hjzrv7ypp5m800xjj08hxlfmd0piljg41xwkgk5q";
+      rev = "aeca73e9432c21da6eb35fceaef957f191b3d56a";
+      sha256 = "1q38sf4dabirhrr3i89p271ixap90im0x3pf39s3fc9jmb3m2jm8";
     };
     dependencies = [];
 
@@ -651,11 +662,11 @@ rec {
   };
 
   vim-orgmode = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-orgmode-2016-07-08";
+    name = "vim-orgmode-2016-07-12";
     src = fetchgit {
       url = "git://github.com/jceb/vim-orgmode";
-      rev = "54057d58888ad29672cd0cd782be5fc8b1a3a709";
-      sha256 = "134dsnfpkzq9gd3d8b9pvy7c5yvy9yxjyvidg927ha1lpilf4kp9";
+      rev = "e76c0f07e9193e08df2b8eeb95ef6240b494797f";
+      sha256 = "00ys1qf8hbigrdxshs5xvg662xcd6qaiw2g1nr21pfs682qdjsyf";
     };
     dependencies = [];
 
@@ -794,11 +805,11 @@ rec {
   };
 
   vimtex = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vimtex-2016-07-10";
+    name = "vimtex-2016-07-16";
     src = fetchgit {
       url = "git://github.com/lervag/vimtex";
-      rev = "c16bd147092bfe7ac63f39cd449f36e14e42e948";
-      sha256 = "18p7vmas0754r9n227v68wry285vr4y90v3kxcnn9hl60xxb3ba9";
+      rev = "8dd4ed77dbd547a819b1220aa2e298e0ae6e5643";
+      sha256 = "0n5zbhgf0ks0b166p94m7i3cfkh6v2zc6srci0rp45byi4mwpddz";
     };
     dependencies = [];
 
@@ -908,11 +919,11 @@ rec {
   };
 
   vim-racer = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-racer-2016-06-27";
+    name = "vim-racer-2016-07-14";
     src = fetchgit {
       url = "git://github.com/racer-rust/vim-racer";
-      rev = "a72b26bb25cb65be29fd1912e9344eaa860fce5e";
-      sha256 = "01xg6mmnlx5l37rsb7w0dbgy36pd6zyq7gcigdbj0pgqd39w30fv";
+      rev = "ea2a41ddc3e1e504a542f6add0f6f2c10d97a099";
+      sha256 = "1vwxs9mqcvp3haqyx0si5hiw61vg2s2hm1alipb5s69sb38f047s";
     };
     dependencies = [];
 
@@ -930,11 +941,33 @@ rec {
   };
 
   rust-vim = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "rust-vim-2016-06-21";
+    name = "rust-vim-2016-07-16";
     src = fetchgit {
       url = "git://github.com/rust-lang/rust.vim";
-      rev = "5dd7ab99103c05a56e059b39ad9f63274d2ae72e";
-      sha256 = "0az35kfcpavz6sbh6mf0mmv7mp5zbnqmnljpmlm1srn6rr9rah2q";
+      rev = "a4d6fb2ab526ccc93a6a321a2425a234f9f7665f";
+      sha256 = "1i2sf5p4d9gfr3hk6nrjar0rz85dmhwgf82d5yfqqmlgil0bljds";
+    };
+    dependencies = [];
+
+  };
+
+  neoformat = buildVimPluginFrom2Nix { # created by nix#NixDerivation
+    name = "neoformat-2016-05-25";
+    src = fetchgit {
+      url = "git://github.com/sbdchd/neoformat";
+      rev = "d74e8d5b338219fe2ab6e8b5bfdaaf653101ed21";
+      sha256 = "0yiq519x99vhl217504pv57lpfwz916r1fq0m3mr33pv0g1kx6c5";
+    };
+    dependencies = [];
+
+  };
+
+  vim-polyglot = buildVimPluginFrom2Nix { # created by nix#NixDerivation
+    name = "vim-polyglot-2016-07-05";
+    src = fetchgit {
+      url = "git://github.com/sheerun/vim-polyglot";
+      rev = "1422f7a75ce0b382d601238c5979b04473b9021e";
+      sha256 = "0jqb75lrf75br9wg95cxcy3aal1bk929881gy4ly1n0r6fv96yz1";
     };
     dependencies = [];
 
@@ -952,11 +985,11 @@ rec {
   };
 
   neosnippet-snippets = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "neosnippet-snippets-2016-06-26";
+    name = "neosnippet-snippets-2016-07-14";
     src = fetchgit {
       url = "git://github.com/shougo/neosnippet-snippets";
-      rev = "17219351bcbec3708295c72c8280471eed12b8fe";
-      sha256 = "08lrqsl9cqkx42llgv0mc54nsmdrv68bpzip2snr58klaj444nir";
+      rev = "4d25b4352738ecf34e56701d0172d80daa3bd287";
+      sha256 = "01lai1gvf30iagh9f7av69ywfzw43vy2igwil882rgnri84y4zjb";
     };
     dependencies = [];
 
@@ -1113,11 +1146,11 @@ rec {
   };
 
   youcompleteme = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "youcompleteme-2016-07-11";
+    name = "youcompleteme-2016-07-12";
     src = fetchgit {
       url = "git://github.com/valloric/youcompleteme";
-      rev = "c44489af16de6ae86294de7dd194bd6e53adaf1e";
-      sha256 = "1m8m6wyics1mlxcxzq83ql8l4vd16cfbhc418vmxflx3178ifr36";
+      rev = "d5610e577c0f1f0bb8bb22d8bbbd25be11327391";
+      sha256 = "1c2001ywj0zczhpzm5iahyb6rg7yjbgljqpnwfr9f7fa3y363cgk";
     };
     dependencies = [];
     buildInputs = [
@@ -1126,8 +1159,11 @@ rec {
       llvmPackages.llvm
     ] ++ stdenv.lib.optional stdenv.isDarwin Cocoa;
 
-    propagatedBuildInputs = [
-      rustracerd
+    propagatedBuildInputs = stdenv.lib.optional (!stdenv.isDarwin) rustracerd;
+
+    patches = [
+      ./patches/youcompleteme/1-top-cmake.patch
+      ./patches/youcompleteme/2-ycm-cmake.patch
     ];
 
     buildPhase = ''
@@ -1302,11 +1338,11 @@ rec {
   };
 
   deoplete-jedi = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "deoplete-jedi-2016-07-10";
+    name = "deoplete-jedi-2016-07-12";
     src = fetchgit {
       url = "git://github.com/zchee/deoplete-jedi";
-      rev = "e7f0a94ea64b86d2b4946d30b6cedb38133d6603";
-      sha256 = "05j1lfqxagndglyh337b6v2l4zmpa9fwrkgr0g4kk1s6f0lmla2b";
+      rev = "3eee7e801723d9c174d801b94b2c2ddcee43ac56";
+      sha256 = "0z8766wgam2s2vwp9a3xi9cl5c3sb99iadinzy7c348wx004nkxq";
     };
     dependencies = [];
 
@@ -1499,11 +1535,11 @@ rec {
   };
 
   vim-addon-async = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-addon-async-2016-06-15";
+    name = "vim-addon-async-2016-07-12";
     src = fetchgit {
       url = "git://github.com/MarcWeber/vim-addon-async";
-      rev = "4fcdf0c8a0da8b9dc2d5ad25e2cf7692cfbc10f3";
-      sha256 = "1qa8ivh93ln30jbdwm9xg50yinvysvhricrkfjgg4v5nvk5sxj5n";
+      rev = "b14414215b394a0ef887ea301085ae4b80012e38";
+      sha256 = "1gr0rjn1vwqv4p51yb0s65gnpy1r0533lfy5nqbg20j4687yxls5";
     };
     dependencies = ["vim-addon-signs"];
 
@@ -1741,11 +1777,11 @@ rec {
   };
 
   vim-gitgutter = buildVimPluginFrom2Nix { # created by nix#NixDerivation
-    name = "vim-gitgutter-2016-06-27";
+    name = "vim-gitgutter-2016-07-12";
     src = fetchgit {
       url = "git://github.com/airblade/vim-gitgutter";
-      rev = "b5f23e986747a6f4b1dc1196d2a5bd3dc7c8c2b6";
-      sha256 = "0z3f4yamkv3fmqnrr00j86xwrrfv199fiabpjqnk583b5kcbn90j";
+      rev = "26c6b549f287b8ae348eda083e7c77f79f4de28b";
+      sha256 = "1jrz0vqd580y7psszq31jk4v4jdh2cvqvxgcy347simpc5ap16hs";
     };
     dependencies = [];
 
diff --git a/pkgs/misc/vim-plugins/patches/youcompleteme/1-top-cmake.patch b/pkgs/misc/vim-plugins/patches/youcompleteme/1-top-cmake.patch
new file mode 100644
index 00000000000..fddf91b1c57
--- /dev/null
+++ b/pkgs/misc/vim-plugins/patches/youcompleteme/1-top-cmake.patch
@@ -0,0 +1,14 @@
+
+--- ./third_party/ycmd/cpp/CMakeLists.txt
++++ ./third_party/ycmd/cpp/CMakeLists.txt
+@@ -121,8 +121,8 @@
+     set( CPP11_AVAILABLE true )
+   endif()
+ elseif( COMPILER_IS_CLANG )
+-  set( CPP11_AVAILABLE true )
+-  set( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11" )
++  #set( CPP11_AVAILABLE true )
++  #  set( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD "c++11" )
+   set( CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++" )
+ endif()
+ 
diff --git a/pkgs/misc/vim-plugins/patches/youcompleteme/2-ycm-cmake.patch b/pkgs/misc/vim-plugins/patches/youcompleteme/2-ycm-cmake.patch
new file mode 100644
index 00000000000..a1c4b1b39a4
--- /dev/null
+++ b/pkgs/misc/vim-plugins/patches/youcompleteme/2-ycm-cmake.patch
@@ -0,0 +1,36 @@
+--- ./third_party/ycmd/cpp/ycm/CMakeLists.txt
++++ ./third_party/ycmd/cpp/ycm/CMakeLists.txt
+@@ -335,7 +335,7 @@
+       COMMAND ${CMAKE_COMMAND} -E copy "${LIBCLANG_TARGET}" "$<TARGET_FILE_DIR:${PROJECT_NAME}>"
+     )
+ 
+-    if( APPLE )
++  #if( APPLE )
+       # In OS X El Capitan, Apple introduced System Integrity Protection.
+       # Amongst other things, this introduces features to the dynamic loader
+       # (dyld) which cause it to "sanitise" (and complain about) embedded
+@@ -354,15 +354,15 @@
+       # simply strip the rpath entry from the dylib.  There's no way any
+       # @executable_path that python might have could be in any way useful to
+       # libclang.dylib, so this seems perfectly safe.
+-      get_filename_component( LIBCLANG_TAIL ${LIBCLANG_TARGET} NAME )
+-      add_custom_command( TARGET ${PROJECT_NAME}
+-                          POST_BUILD
+-                          COMMAND install_name_tool
+-                          "-delete_rpath"
+-                          "@executable_path/../lib"
+-                          "$<TARGET_FILE_DIR:${PROJECT_NAME}>/${LIBCLANG_TAIL}"
+-                        )
+-    endif()
++      #    get_filename_component( LIBCLANG_TAIL ${LIBCLANG_TARGET} NAME )
++      #add_custom_command( TARGET ${PROJECT_NAME}
++      #                    POST_BUILD
++      #                    COMMAND install_name_tool
++      #                    "-delete_rpath"
++      #                    "@executable_path/../lib"
++      #                    "$<TARGET_FILE_DIR:${PROJECT_NAME}>/${LIBCLANG_TAIL}"
++      #                  )
++      # endif()
+   endif()
+ endif()
+ 
diff --git a/pkgs/misc/vim-plugins/vim-plugin-names b/pkgs/misc/vim-plugins/vim-plugin-names
index b2a2a542bf5..bc040271cd9 100644
--- a/pkgs/misc/vim-plugins/vim-plugin-names
+++ b/pkgs/misc/vim-plugins/vim-plugin-names
@@ -21,6 +21,7 @@
 "ghcmod"
 "github:Chiel92/vim-autoformat"
 "github:LnL7/vim-nix"
+"github:sbdchd/neoformat"
 "github:Shougo/deoplete.nvim"
 "github:ajh17/Spacegray.vim"
 "github:alvan/vim-closetag"
@@ -32,6 +33,7 @@
 "github:ctrlpvim/ctrlp.vim"
 "github:digitaltoad/vim-jade"
 "github:eagletmt/neco-ghc"
+"github:elmcast/elm-vim"
 "github:embear/vim-localvimrc"
 "github:enomsg/vim-haskellConcealPlus"
 "github:esneider/YUNOcommit.vim"
@@ -73,6 +75,7 @@
 "github:racer-rust/vim-racer"
 "github:raichoo/purescript-vim"
 "github:rust-lang/rust.vim"
+"github:sheerun/vim-polyglot"
 "github:shougo/neocomplete.vim"
 "github:shougo/neosnippet-snippets"
 "github:shougo/neosnippet.vim"
diff --git a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme
index eb7f6bedf49..4b81be5205b 100644
--- a/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme
+++ b/pkgs/misc/vim-plugins/vim2nix/additional-nix-code/youcompleteme
@@ -4,8 +4,11 @@
       llvmPackages.llvm
     ] ++ stdenv.lib.optional stdenv.isDarwin Cocoa;
 
-    propagatedBuildInputs = [
-      rustracerd
+    propagatedBuildInputs = stdenv.lib.optional (!stdenv.isDarwin) rustracerd;
+
+    patches = [
+      ./patches/youcompleteme/1-top-cmake.patch
+      ./patches/youcompleteme/2-ycm-cmake.patch
     ];
 
     buildPhase = ''
diff --git a/pkgs/os-specific/linux/busybox/default.nix b/pkgs/os-specific/linux/busybox/default.nix
index ec374d9b1d3..182b8c01c39 100644
--- a/pkgs/os-specific/linux/busybox/default.nix
+++ b/pkgs/os-specific/linux/busybox/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, musl
+{ stdenv, lib, fetchurl, glibc, musl
 , enableStatic ? false
 , enableMinimal ? false
 , useMusl ? false
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
 
     CONFIG_LFS y
 
-    ${stdenv.lib.optionalString enableStatic ''
+    ${lib.optionalString enableStatic ''
       CONFIG_STATIC y
     ''}
 
@@ -66,10 +66,12 @@ stdenv.mkDerivation rec {
     EOF
 
     make oldconfig
-  '' + stdenv.lib.optionalString useMusl ''
+  '' + lib.optionalString useMusl ''
     makeFlagsArray+=("CC=gcc -isystem ${musl}/include -B${musl}/lib -L${musl}/lib")
   '';
 
+  buildInputs = lib.optionals (enableStatic && !useMusl) [ glibc glibc.static ];
+
   crossAttrs = {
     extraCrossConfig = ''
       CONFIG_CROSS_COMPILER_PREFIX "${stdenv.cross.config}-"
diff --git a/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix b/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix
index 992d42e2e12..8e0f807e08e 100644
--- a/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix
+++ b/pkgs/os-specific/linux/firmware/firmware-linux-nonfree/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   name = "firmware-linux-nonfree-${version}";
-  version = "2016-05-18";
+  version = "2016-07-12";
 
   # This repo is built by merging the latest versions of
   # http://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/
@@ -14,8 +14,8 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "wkennington";
     repo = "linux-firmware";
-    rev = "19495832c6899bd811874439376d513290773c31";
-    sha256 = "1700a24sfw6xa3q3r8aa5wfhydgix83m57plpfirdmc9qr4isrr0";
+    rev = "cccb6a0da98372bd66787710249727ad6b0aaf72";
+    sha256 = "1c7h8i37nbyy37zqhybxd3y6aqabfv4nrdkjg789w67mdnn6hka0";
   };
 
   preInstall = ''
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
     homepage = http://packages.debian.org/sid/firmware-linux-nonfree;
     license = licenses.unfreeRedistributableFirmware;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ wkennington ];
+    maintainers = with maintainers; [ wkennington fpletz ];
     priority = 6; # give precedence to kernel firmware
   };
 
diff --git a/pkgs/os-specific/linux/fnotifystat/default.nix b/pkgs/os-specific/linux/fnotifystat/default.nix
new file mode 100644
index 00000000000..5708ed7c4df
--- /dev/null
+++ b/pkgs/os-specific/linux/fnotifystat/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "fnotifystat-${version}";
+  version = "0.01.14";
+  src = fetchurl {
+    url = "http://kernel.ubuntu.com/~cking/tarballs/fnotifystat/fnotifystat-${version}.tar.gz";
+    sha256 = "1cc3w94v8b4nfpkgr33gfzxpwaf43brqyc0fla9p70gk3hxjqzi5";
+  };
+  installFlags = [ "DESTDIR=$(out)" ];
+  postInstall = ''
+    mv $out/usr/* $out
+    rm -r $out/usr
+  '';
+  meta = with lib; {
+    description = "File activity monitoring tool";
+    homepage = http://kernel.ubuntu.com/~cking/fnotifystat/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ womfoo ];
+  };
+}
diff --git a/pkgs/os-specific/linux/forkstat/default.nix b/pkgs/os-specific/linux/forkstat/default.nix
new file mode 100644
index 00000000000..3a253003e8e
--- /dev/null
+++ b/pkgs/os-specific/linux/forkstat/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "forkstat-${version}";
+  version = "0.01.13";
+  src = fetchurl {
+    url = "http://kernel.ubuntu.com/~cking/tarballs/forkstat/forkstat-${version}.tar.gz";
+    sha256 = "12dmqpv0q3x166sya93rhcj7vs4868x7y7lwfwv9l54hhirpamhq";
+  };
+  installFlags = [ "DESTDIR=$(out)" ];
+  postInstall = ''
+    mv $out/usr/* $out
+    rm -r $out/usr
+  '';
+  meta = with lib; {
+    description = "Process fork/exec/exit monitoring tool";
+    homepage = http://kernel.ubuntu.com/~cking/forkstat/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ womfoo ];
+  };
+}
diff --git a/pkgs/os-specific/linux/lightum/default.nix b/pkgs/os-specific/linux/lightum/default.nix
index 0ef447ed924..3eaf4363195 100644
--- a/pkgs/os-specific/linux/lightum/default.nix
+++ b/pkgs/os-specific/linux/lightum/default.nix
@@ -18,6 +18,11 @@ stdenv.mkDerivation {
     systemd
   ];
 
+  patchPhase = ''
+    substituteInPlace Makefile \
+      --replace "libsystemd-login" "libsystemd"
+  '';
+
   installPhase = ''
     make install prefix=$out bindir=$out/bin docdir=$out/share/doc \
       mandir=$out/share/man INSTALL="install -c" INSTALLDATA="install -c -m 644"
diff --git a/pkgs/os-specific/linux/lxc/default.nix b/pkgs/os-specific/linux/lxc/default.nix
index eda1863ec97..f15f72ca5bc 100644
--- a/pkgs/os-specific/linux/lxc/default.nix
+++ b/pkgs/os-specific/linux/lxc/default.nix
@@ -12,11 +12,11 @@ in
 with stdenv.lib;
 stdenv.mkDerivation rec {
   name = "lxc-${version}";
-  version = "2.0.1";
+  version = "2.0.3";
 
   src = fetchurl {
     url = "https://linuxcontainers.org/downloads/lxc/lxc-${version}.tar.gz";
-    sha256 = "0l4fs6ckvip5akfa0vbjfk34ddvcv0c84mmpj9yrcfl67qwn31z9";
+    sha256 = "1mp83r1v9bcxjl7a441sm6plipj8aglhnmkxczp3jinlrnh41pw2";
   };
 
   nativeBuildInputs = [
diff --git a/pkgs/os-specific/linux/powerstat/default.nix b/pkgs/os-specific/linux/powerstat/default.nix
new file mode 100644
index 00000000000..9604a67ddd9
--- /dev/null
+++ b/pkgs/os-specific/linux/powerstat/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "powerstat-${version}";
+  version = "0.02.10";
+  src = fetchurl {
+    url = "http://kernel.ubuntu.com/~cking/tarballs/powerstat/powerstat-${version}.tar.gz";
+    sha256 = "11n2k20h27j7m8j0l524w23xlkjhapsb3ml1qpx1si7gf0pkglcl";
+  };
+  installFlags = [ "DESTDIR=$(out)" ];
+  postInstall = ''
+    mv $out/usr/* $out
+    rm -r $out/usr
+  '';
+  meta = with lib; {
+    description = "Laptop power measuring tool";
+    homepage = http://kernel.ubuntu.com/~cking/powerstat/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ womfoo ];
+  };
+}
diff --git a/pkgs/os-specific/linux/smemstat/default.nix b/pkgs/os-specific/linux/smemstat/default.nix
new file mode 100644
index 00000000000..a38c819bc6f
--- /dev/null
+++ b/pkgs/os-specific/linux/smemstat/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, lib, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "smemstat-${version}";
+  version = "0.01.14";
+  src = fetchurl {
+    url = "http://kernel.ubuntu.com/~cking/tarballs/smemstat/smemstat-${version}.tar.gz";
+    sha256 = "0qkpbg0n40d8m9jzf3ylpdp65zzs344zbjn8khha4plbwg00ijrw";
+  };
+  installFlags = [ "DESTDIR=$(out)" ];
+  postInstall = ''
+    mv $out/usr/* $out
+    rm -r $out/usr
+  '';
+  meta = with lib; {
+    description = "Memory usage monitoring tool";
+    homepage = http://kernel.ubuntu.com/~cking/smemstat/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ womfoo ];
+  };
+}
diff --git a/pkgs/servers/emby/default.nix b/pkgs/servers/emby/default.nix
index b9cc038479d..1d9d9772706 100644
--- a/pkgs/servers/emby/default.nix
+++ b/pkgs/servers/emby/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "emby-${version}";
-  version = "3.0.5985";
+  version = "3.0.5986";
 
   src = fetchurl {
     url = "https://github.com/MediaBrowser/Emby/archive/${version}.tar.gz";
-    sha256 = "16p8qr9pf6ww6xdfbsqamnpk70i4dadz30lnvliyxaaslggjbh4b";
+    sha256 = "0lccyvwk9pm9vn3fg4pa9956f4xn6fcqzlyj8rkxgwf7avzibxix";
   };
 
   propagatedBuildInputs = with pkgs; [
diff --git a/pkgs/servers/etcd/default.nix b/pkgs/servers/etcd/default.nix
index 782d7001dee..2c76dfc8e31 100644
--- a/pkgs/servers/etcd/default.nix
+++ b/pkgs/servers/etcd/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   name = "etcd-${version}";
-  version = "2.3.0";
+  version = "2.3.7";
   rev = "v${version}";
   
   goPackagePath = "github.com/coreos/etcd";
@@ -11,7 +11,7 @@ buildGoPackage rec {
     inherit rev;
     owner = "coreos";
     repo = "etcd";
-    sha256 = "1cchlhsdbbqal145cvdiq7rzqqi131iq7z0r2hmzwx414k04wyn7";
+    sha256 = "07rdnhcpnvnkxj5pqacxz669rzn5vw2i1zmf6dd4nv7wpfscdw9f";
   };
 
   goDeps = ./deps.json;
diff --git a/pkgs/servers/http/nginx/default.nix b/pkgs/servers/http/nginx/generic.nix
index bf8abd2c027..b1d70907e28 100644
--- a/pkgs/servers/http/nginx/default.nix
+++ b/pkgs/servers/http/nginx/generic.nix
@@ -3,17 +3,17 @@
 , withStream ? false
 , modules ? []
 , hardening ? true
+, version, sha256, ...
 }:
 
 with stdenv.lib;
 
-stdenv.mkDerivation rec {
+stdenv.mkDerivation {
   name = "nginx-${version}";
-  version = "1.10.1";
 
   src = fetchurl {
     url = "http://nginx.org/download/nginx-${version}.tar.gz";
-    sha256 = "00d8hxj8453c7989qd7z4f1mjp0k3ib8k29i1qyf11b4ar35ilqz";
+    inherit sha256;
   };
 
 
diff --git a/pkgs/servers/http/nginx/mainline.nix b/pkgs/servers/http/nginx/mainline.nix
new file mode 100644
index 00000000000..6e4c49abc5b
--- /dev/null
+++ b/pkgs/servers/http/nginx/mainline.nix
@@ -0,0 +1,6 @@
+{ callPackage, ... }@args:
+
+callPackage ./generic.nix (args // {
+  version = "1.11.2";
+  sha256 = "02khwad28ar2jjdfssysx262bgwgirm9967gnfhw9ga7wvipncm0";
+})
diff --git a/pkgs/servers/http/nginx/unstable.upstream b/pkgs/servers/http/nginx/mainline.upstream
index 7bb02549959..7bb02549959 100644
--- a/pkgs/servers/http/nginx/unstable.upstream
+++ b/pkgs/servers/http/nginx/mainline.upstream
diff --git a/pkgs/servers/http/nginx/stable.nix b/pkgs/servers/http/nginx/stable.nix
new file mode 100644
index 00000000000..e677b181bb5
--- /dev/null
+++ b/pkgs/servers/http/nginx/stable.nix
@@ -0,0 +1,6 @@
+{ callPackage, ... } @ args:
+
+callPackage ./generic.nix (args // {
+  version = "1.10.1";
+  sha256 = "00d8hxj8453c7989qd7z4f1mjp0k3ib8k29i1qyf11b4ar35ilqz";
+})
diff --git a/pkgs/servers/http/nginx/default.upstream b/pkgs/servers/http/nginx/stable.upstream
index c2013901743..c2013901743 100644
--- a/pkgs/servers/http/nginx/default.upstream
+++ b/pkgs/servers/http/nginx/stable.upstream
diff --git a/pkgs/servers/monitoring/grafana/default.nix b/pkgs/servers/monitoring/grafana/default.nix
index 28bf83a247f..884785699a6 100644
--- a/pkgs/servers/monitoring/grafana/default.nix
+++ b/pkgs/servers/monitoring/grafana/default.nix
@@ -1,7 +1,8 @@
-{ lib, buildGoPackage, fetchurl, fetchFromGitHub }:
+{ lib, buildGoPackage, fetchurl, fetchFromGitHub, phantomjs2 }:
 
 buildGoPackage rec {
-  version = "3.0.1";
+  version = "3.1.0";
+  ts = "1468321182";
   name = "grafana-v${version}";
   goPackagePath = "github.com/grafana/grafana";
 
@@ -9,19 +10,20 @@ buildGoPackage rec {
     rev = "v${version}";
     owner = "grafana";
     repo = "grafana";
-    sha256 = "1zykgf8xq7m040d4yljcbz23gh8ppaqnxj50ncj1cjyi5k88i3i9";
+    sha256 = "1p3qp3p4wsb7m2lvdcrc1wz5mxqwqsj5xfqp28hkbfdqh3lblh42";
   };
 
   srcStatic = fetchurl {
-    url = "https://grafanarel.s3.amazonaws.com/builds/grafana-${version}-.linux-x64.tar.gz";
-    sha256 = "14wq2cbf4djnwbbyfbhnwmwqpfh5g4yp1dckg5zzf2109ymkjrqd";
+    url = "https://grafanarel.s3.amazonaws.com/builds/grafana-${version}-${ts}.linux-x64.tar.gz";
+    sha256 = "174w0bx5cqriy77dyk9xsnmdskykzmgbyjczwb5kkp6j8vp7b0fs";
   };
 
   preBuild = "export GOPATH=$GOPATH:$NIX_BUILD_TOP/go/src/${goPackagePath}/Godeps/_workspace";
   postInstall = ''
     tar -xvf $srcStatic
     mkdir -p $bin/share/grafana
-    mv grafana-*/{public,conf} $bin/share/grafana/
+    mv grafana-*/{public,conf,vendor} $bin/share/grafana/
+    ln -sf ${phantomjs2}/bin/phantomjs $bin/share/grafana/vendor/phantomjs/phantomjs
   '';
 
   meta = with lib; {
diff --git a/pkgs/servers/monitoring/prometheus/alertmanager.nix b/pkgs/servers/monitoring/prometheus/alertmanager.nix
index 330a528ef2f..55ac38f2e37 100644
--- a/pkgs/servers/monitoring/prometheus/alertmanager.nix
+++ b/pkgs/servers/monitoring/prometheus/alertmanager.nix
@@ -2,8 +2,8 @@
 
 buildGoPackage rec {
   name = "alertmanager-${version}";
-  version = "0.1.0";
-  rev = "${version}";
+  version = "0.3.0";
+  rev = "v${version}";
 
   goPackagePath = "github.com/prometheus/alertmanager";
 
@@ -11,7 +11,7 @@ buildGoPackage rec {
     inherit rev;
     owner = "prometheus";
     repo = "alertmanager";
-    sha256 = "1ya465bns6cj2lqbipmfm13wz8kxii5h9mm7lc0ba1xv26xx5zs7";
+    sha256 = "0ychc2qvn3lzs4rg5f5sslil7clvcpzclcmfj83qjqp8krpg72b5";
   };
 
   # Tests exist, but seem to clash with the firewall.
diff --git a/pkgs/servers/monitoring/prometheus/collectd-exporter.nix b/pkgs/servers/monitoring/prometheus/collectd-exporter.nix
index bcb1889224c..dc9b6fd843e 100644
--- a/pkgs/servers/monitoring/prometheus/collectd-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/collectd-exporter.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   name = "collectd-exporter-${version}";
-  version = "0.1.0";
+  version = "0.3.1";
   rev = version;
 
   goPackagePath = "github.com/prometheus/collectd_exporter";
@@ -11,14 +11,14 @@ buildGoPackage rec {
     inherit rev;
     owner = "prometheus";
     repo = "collectd_exporter";
-    sha256 = "165zsdn0lffb6fvxz75szmm152a6wmia5skb96k1mv59qbmn9fi1";
+    sha256 = "1p0kb7c8g0r0sp5a6xrx8vnwbw14hhwlqzk4n2xx2y8pvnbivajz";
   };
 
   goDeps = ./collectd-exporter_deps.json;
 
   meta = with stdenv.lib; {
     description = "Relay server for exporting metrics from collectd to Prometheus";
-    homepage = https://github.com/prometheus/alertmanager;
+    homepage = https://github.com/prometheus/collectd_exporter;
     license = licenses.asl20;
     maintainers = with maintainers; [ benley ];
     platforms = platforms.unix;
diff --git a/pkgs/servers/monitoring/prometheus/default.nix b/pkgs/servers/monitoring/prometheus/default.nix
index 1fbcd50d733..ad9143ec33f 100644
--- a/pkgs/servers/monitoring/prometheus/default.nix
+++ b/pkgs/servers/monitoring/prometheus/default.nix
@@ -2,8 +2,8 @@
 
 buildGoPackage rec {
   name = "prometheus-${version}";
-  version = "0.17.0";
-  rev = "${version}";
+  version = "1.0.0";
+  rev = "v${version}";
 
   goPackagePath = "github.com/prometheus/prometheus";
 
@@ -11,7 +11,7 @@ buildGoPackage rec {
     inherit rev;
     owner = "prometheus";
     repo = "prometheus";
-    sha256 = "176198krna2i37dfhwsqi7m36sqn175yiny6n52vj27mc9s8ggzx";
+    sha256 = "0wb6aj2019b2bkaai94mxdy8gr6gs7jpkm7ms8h9n2ms041gdsff";
   };
 
   docheck = true;
diff --git a/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix b/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix
index 7de99ecd395..f2afd2aa273 100644
--- a/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/haproxy-exporter.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   name = "haproxy_exporter-${version}";
-  version = "0.4.0";
+  version = "0.7.0";
   rev = version;
 
   goPackagePath = "github.com/prometheus/haproxy_exporter";
@@ -11,7 +11,7 @@ buildGoPackage rec {
     inherit rev;
     owner = "prometheus";
     repo = "haproxy_exporter";
-    sha256 = "0cwls1d4hmzjkwc50mjkxjb4sa4q6yq581wlc5sg9mdvl6g91zxr";
+    sha256 = "1jkijdawmnj5yps0yaj47nyfmcah0krwmqsjvicm3sl0dhwmac4w";
   };
 
   goDeps = ./haproxy-exporter_deps.json;
diff --git a/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix b/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix
index f7256287955..64a9e6cc28e 100644
--- a/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/mysqld-exporter.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   name = "mysqld_exporter-${version}";
-  version = "0.1.0";
+  version = "0.8.1";
   rev = version;
 
   goPackagePath = "github.com/prometheus/mysqld_exporter";
@@ -11,7 +11,7 @@ buildGoPackage rec {
     inherit rev;
     owner = "prometheus";
     repo = "mysqld_exporter";
-    sha256 = "10xnyxyb6saz8pq3ijp424hxy59cvm1b5c9zcbw7ddzzkh1f6jd9";
+    sha256 = "0pwf2vii9n9zgad1lxgw28c2743yc9c3qc03516fiwvlqc1cpddr";
   };
 
   goDeps = ./mysqld-exporter_deps.json;
diff --git a/pkgs/servers/monitoring/prometheus/nginx-exporter.nix b/pkgs/servers/monitoring/prometheus/nginx-exporter.nix
index c3b25e2fcc5..9adfdda1d07 100644
--- a/pkgs/servers/monitoring/prometheus/nginx-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/nginx-exporter.nix
@@ -4,7 +4,7 @@ buildGoPackage rec {
   name = "nginx_exporter-${version}";
   version = "20160524-${stdenv.lib.strings.substring 0 7 rev}";
   rev = "2cf16441591f6b6e58a8c0439dcaf344057aea2b";
-  
+
   goPackagePath = "github.com/discordianfish/nginx_exporter";
 
   src = fetchgit {
diff --git a/pkgs/servers/monitoring/prometheus/node-exporter.nix b/pkgs/servers/monitoring/prometheus/node-exporter.nix
index a5dd161b55e..161b56c1d2d 100644
--- a/pkgs/servers/monitoring/prometheus/node-exporter.nix
+++ b/pkgs/servers/monitoring/prometheus/node-exporter.nix
@@ -2,21 +2,20 @@
 
 buildGoPackage rec {
   name = "node_exporter-${version}";
-  version = "0.11.0";
+  version = "0.12.0";
   rev = version;
-  
+
   goPackagePath = "github.com/prometheus/node_exporter";
 
   src = fetchFromGitHub {
     inherit rev;
     owner = "prometheus";
     repo = "node_exporter";
-    sha256 = "149fs9yxnbiyd4ww7bxsv730mcskblpzb3cs4v12jnq2v84a4kk4";
+    sha256 = "0ih8w9ji0fw1smsi45jgvrpqfzm3f5bvk9q3nwrl0my5xkksnr8g";
   };
 
-  goDeps = ./node-exporter_deps.json;
-
-  doCheck = true;
+  # FIXME: megacli test fails
+  doCheck = false;
 
   meta = with stdenv.lib; {
     description = "Prometheus exporter for machine metrics";
diff --git a/pkgs/servers/monitoring/prometheus/node-exporter_deps.json b/pkgs/servers/monitoring/prometheus/node-exporter_deps.json
deleted file mode 100644
index 68020e73b1c..00000000000
--- a/pkgs/servers/monitoring/prometheus/node-exporter_deps.json
+++ /dev/null
@@ -1,18 +0,0 @@
-[
-  {
-    "include": "../../libs.json",
-    "packages": [
-      "github.com/soundcloud/go-runit",
-      "github.com/beevik/ntp",
-      "github.com/prometheus/client_golang",
-      "github.com/prometheus/client_model",
-      "bitbucket.org/ww/goautoneg",
-      "github.com/Sirupsen/logrus",
-      "github.com/beorn7/perks",
-      "github.com/matttproud/golang_protobuf_extensions",
-      "github.com/prometheus/log",
-      "github.com/golang/protobuf",
-      "github.com/prometheus/procfs"
-    ]
-  }
-]
diff --git a/pkgs/servers/monitoring/prometheus/pushgateway.nix b/pkgs/servers/monitoring/prometheus/pushgateway.nix
index a1944608ce0..65dda2403fc 100644
--- a/pkgs/servers/monitoring/prometheus/pushgateway.nix
+++ b/pkgs/servers/monitoring/prometheus/pushgateway.nix
@@ -2,16 +2,16 @@
 
 buildGoPackage rec {
   name = "pushgateway-${version}";
-  version = "0.1.1";
+  version = "0.3.0";
   rev = version;
-  
+
   goPackagePath = "github.com/prometheus/pushgateway";
 
   src = fetchFromGitHub {
     inherit rev;
     owner = "prometheus";
     repo = "pushgateway";
-    sha256 = "17q5z9msip46wh3vxcsq9lvvhbxg75akjjcr2b29zrky8bp2m230";
+    sha256 = "1bj0s4s3gbcnlp2z2yx7jf3jx14cdg2v4pr0yciai0g6jwwg63hd";
   };
 
   goDeps = ./pushgateway_deps.json;
diff --git a/pkgs/servers/monitoring/prometheus/statsd-bridge.nix b/pkgs/servers/monitoring/prometheus/statsd-bridge.nix
index 0d9f0bb9885..935692bfa2e 100644
--- a/pkgs/servers/monitoring/prometheus/statsd-bridge.nix
+++ b/pkgs/servers/monitoring/prometheus/statsd-bridge.nix
@@ -2,16 +2,16 @@
 
 buildGoPackage rec {
   name = "statsd_bridge-${version}";
-  version = "0.1.0";
+  version = "0.3.0";
   rev = version;
-  
+
   goPackagePath = "github.com/prometheus/statsd_bridge";
 
   src = fetchFromGitHub {
     inherit rev;
     owner = "prometheus";
-    repo = "statsd_bridge";
-    sha256 = "1fndpmd1k0a3ar6f7zpisijzc60f2dng5399nld1i1cbmd8jybjr";
+    repo = "statsd_exporter";
+    sha256 = "1gg9v224n05khcwy27637w3rwh0cymm7hx6bginfxd7730rmpp2r";
   };
 
   goDeps = ./statsd-bridge_deps.json;
diff --git a/pkgs/servers/plex/default.nix b/pkgs/servers/plex/default.nix
index 50fc85d48b3..f31971bf4c1 100644
--- a/pkgs/servers/plex/default.nix
+++ b/pkgs/servers/plex/default.nix
@@ -5,13 +5,13 @@
 
 let
   plexpkg = if enablePlexPass then {
-    version = "0.9.16.5.1966";
-    vsnHash = "81a3bf0";
-    sha256 = "1sgdd3r067j9ysfp90wjx6zi01s00wzgzs27l8xdlsbnvjr8zmf8";
+    version = "1.0.1.2396";
+    vsnHash = "c094d0d";
+    sha256 = "0bhbpaj88989zn1q590mkcqshcpir87yiac9x1dl0afzpxj09lcz";
   } else {
-    version = "0.9.16.4.1911";
-    vsnHash = "ee6e505";
-    sha256 = "0lq0lcynmc09d0whynb0x2zgd39dp7z7k86ndgm2clay3zbzqpfd";
+    version = "1.0.0.2261";
+    vsnHash = "a17e99e";
+    sha256 = "14li33ni6aaa1qwvc02a066k52s1qwhpv55prvlmq3m5jm3iv0lr";
   };
 
 in stdenv.mkDerivation rec {
diff --git a/pkgs/servers/sonarr/default.nix b/pkgs/servers/sonarr/default.nix
new file mode 100644
index 00000000000..91e292944a6
--- /dev/null
+++ b/pkgs/servers/sonarr/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, mono, libmediainfo, sqlite, makeWrapper, ... }:
+
+stdenv.mkDerivation rec {
+  name = "sonarr-${version}";
+  version = "2.0.0.4230";
+
+  src = fetchurl {
+    url = "http://download.sonarr.tv/v2/master/mono/NzbDrone.master.${version}.mono.tar.gz";
+    sha256 = "16nx0v5hpqlwna2hzpcpzvm7qc361yjxbqnwz5bfnnkb0h7ik5m6";
+  };
+
+  buildInputs = [
+    makeWrapper
+  ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -r * $out/bin/
+
+    makeWrapper "${mono}/bin/mono" $out/bin/NzbDrone \
+      --add-flags "$out/bin/NzbDrone.exe" \
+      --prefix LD_LIBRARY_PATH ':' "${sqlite.out}/lib" \
+      --prefix LD_LIBRARY_PATH ':' "${libmediainfo}/lib"
+  '';
+
+  meta = {
+    description = "Smart PVR for newsgroup and bittorrent users";
+    homepage = https://sonarr.tv/;
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.fadenb ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/shells/oh-my-zsh/default.nix b/pkgs/shells/oh-my-zsh/default.nix
index 5a1c74fe442..5bb3b1de7ed 100644
--- a/pkgs/shells/oh-my-zsh/default.nix
+++ b/pkgs/shells/oh-my-zsh/default.nix
@@ -7,12 +7,12 @@
 
 stdenv.mkDerivation rec {
   name = "oh-my-zsh-git-${version}";
-  version = "2016-07-05";
+  version = "2016-07-15";
 
   src = fetchgit {
     url = "https://github.com/robbyrussell/oh-my-zsh";
-    rev = "644bc641ad48c74c88631d79d48ec9b6f3f5a3e5";
-    sha256 = "1lmblfcd68pnc38bn6yjqs7sap5qinj37xv881a1rx4q0w38an07";
+    rev = "96a2092e377139fbcd95d7b7ac703b740daa22f6";
+    sha256 = "0v3hzpfj98mfz0y06qch2hf14iz0vpb9pfysw8hc4mnp0jzh5vz1";
   };
 
   phases = "installPhase";
diff --git a/pkgs/tools/archivers/p7zip/default.nix b/pkgs/tools/archivers/p7zip/default.nix
index 63487b46034..7c952a8f729 100644
--- a/pkgs/tools/archivers/p7zip/default.nix
+++ b/pkgs/tools/archivers/p7zip/default.nix
@@ -1,14 +1,12 @@
 { stdenv, fetchurl }:
 
-let
-  version = "15.14.1";
-in
 stdenv.mkDerivation rec {
   name = "p7zip-${version}";
+  version = "16.02";
 
   src = fetchurl {
     url = "mirror://sourceforge/p7zip/p7zip_${version}_src_all.tar.bz2";
-    sha256 = "1m15iwglyjpiw82m7dbpykz8s55imch34w20w09l34116vdb97b9";
+    sha256 = "5eb20ac0e2944f6cb9c2d51dd6c4518941c185347d4089ea89087ffdd6e2341f";
   };
 
   preConfigure = ''
diff --git a/pkgs/tools/archivers/xarchiver/default.nix b/pkgs/tools/archivers/xarchiver/default.nix
index ea59cb8319e..507e777a7c3 100644
--- a/pkgs/tools/archivers/xarchiver/default.nix
+++ b/pkgs/tools/archivers/xarchiver/default.nix
@@ -1,18 +1,20 @@
-{ stdenv, fetchurl, gtk2, pkgconfig, intltool }:
+{ stdenv, fetchFromGitHub, gtk, pkgconfig, intltool }:
 
 stdenv.mkDerivation rec {
-  version = "0.5.4";
+  version = "0.5.4.6";
   name = "xarchiver-${version}";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/xarchiver/${name}.tar.bz2";
-    sha256 = "1x1f8m71cvv2p1364rz99iqs2caxj7yrb46aikz6xigwg4wsfgz6";
+  src = fetchFromGitHub {
+    owner = "ib";
+    repo = "xarchiver";
+    rev = "${name}";
+    sha256 = "1w6b4cchd4prswrn981a7bkq44ad51xm2qiwlpzy43ynql14q877";
   };
 
-  buildInputs = [ gtk2 pkgconfig intltool ];
+  buildInputs = [ gtk pkgconfig intltool ];
 
   meta = {
-    description = "GTK+2 only frontend to 7z,zip,rar,tar,bzip2, gzip,arj, lha, rpm and deb (open and extract only)";
+    description = "GTK+ frontend to 7z,zip,rar,tar,bzip2, gzip,arj, lha, rpm and deb (open and extract only)";
     homepage = http://sourceforge.net/projects/xarchiver/;
     maintainers = [ stdenv.lib.maintainers.domenkozar ];
     license = stdenv.lib.licenses.gpl2;
diff --git a/pkgs/tools/graphics/nip2/default.nix b/pkgs/tools/graphics/nip2/default.nix
index e61488e202d..fb88a8c37d4 100644
--- a/pkgs/tools/graphics/nip2/default.nix
+++ b/pkgs/tools/graphics/nip2/default.nix
@@ -1,17 +1,17 @@
 { stdenv, fetchurl, pkgconfig, glib, libxml2, flex, bison, vips, gnome,
-fftw, gsl, goffice_0_8, libgsf }:
+fftw, gsl, goffice, libgsf }:
 
 stdenv.mkDerivation rec {
-  name = "nip2-8.0";
+  name = "nip2-8.3.0";
 
   src = fetchurl {
     url = "http://www.vips.ecs.soton.ac.uk/supported/current/${name}.tar.gz";
-    sha256 = "10ybac0qrz63x1yk1d0gpv9z1vzpadyii2qhrai6lllplzw6jqx7";
+    sha256 = "0vr12gyfvhxx2a28y74lzfg379d1fk0g9isc69k0vdgpn4y1i8aa";
   };
 
   buildInputs =
   [ pkgconfig glib libxml2 flex bison vips
-    gnome.gtk fftw gsl goffice_0_8 libgsf
+    gnome.gtk fftw gsl goffice libgsf
   ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/graphics/vips/default.nix b/pkgs/tools/graphics/vips/default.nix
index 7b0cbc16e11..6ff2ee5cd44 100644
--- a/pkgs/tools/graphics/vips/default.nix
+++ b/pkgs/tools/graphics/vips/default.nix
@@ -4,11 +4,11 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "vips-8.2.2";
+  name = "vips-8.3.1";
 
   src = fetchurl {
     url = "http://www.vips.ecs.soton.ac.uk/supported/current/${name}.tar.gz";
-    sha256 = "12b319aicr129cpi5sixwd3q91y97vwwva6b044zy54px4s8ls0g";
+    sha256 = "01hh1baar2r474kny24fcq6ddshcvq104207mqxnkis0as6pzjq9";
   };
 
   buildInputs =
diff --git a/pkgs/tools/misc/disper/default.nix b/pkgs/tools/misc/disper/default.nix
index 777f7b48675..449f0f20b80 100644
--- a/pkgs/tools/misc/disper/default.nix
+++ b/pkgs/tools/misc/disper/default.nix
@@ -1,14 +1,19 @@
-{stdenv, fetchurl, python}:
+{stdenv, fetchurl, python, xorg, makeWrapper}:
 
 stdenv.mkDerivation rec {
   name = "disper-0.3.1";
 
-  buildInputs = [python];
+  buildInputs = [python makeWrapper];
 
   preConfigure = ''
     export makeFlags="PREFIX=$out"
   '';
 
+  postInstall = ''
+      wrapProgram $out/bin/disper \
+        --prefix "LD_LIBRARY_PATH" : "${xorg.libXrandr.out}/lib:${xorg.libX11.out}/lib"
+  '';
+
   src = fetchurl {
     url = http://ppa.launchpad.net/disper-dev/ppa/ubuntu/pool/main/d/disper/disper_0.3.1.tar.gz;
     sha256 = "1l8brcpfn4iascb454ym0wrv5kqyz4f0h8k6db54nc3zhfwy7vvw";
diff --git a/pkgs/tools/misc/ethtool/default.nix b/pkgs/tools/misc/ethtool/default.nix
index 9ffc4723dfd..363aaf3f389 100644
--- a/pkgs/tools/misc/ethtool/default.nix
+++ b/pkgs/tools/misc/ethtool/default.nix
@@ -1,11 +1,12 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "ethtool-4.5";
+  name = "ethtool-${version}";
+  version = "4.6";
 
   src = fetchurl {
     url = "mirror://kernel/software/network/ethtool/${name}.tar.xz";
-    sha256 = "0fyakzpcrjb7hkaj9ccpcgza7r2im17qzxy9w6xzbiss5hrk8a5v";
+    sha256 = "e90589a9349d008cce8c0510ac4e8878efdc0ddb1b732a9a4cc333b101313415";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/tools/misc/fzf/default.nix b/pkgs/tools/misc/fzf/default.nix
index e8c8d9830c7..6ba2b881784 100644
--- a/pkgs/tools/misc/fzf/default.nix
+++ b/pkgs/tools/misc/fzf/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   name = "fzf-${version}";
-  version = "0.13.2";
+  version = "0.13.3";
   rev = "${version}";
 
   goPackagePath = "github.com/junegunn/fzf";
@@ -11,13 +11,13 @@ buildGoPackage rec {
     inherit rev;
     owner = "junegunn";
     repo = "fzf";
-    sha256 = "12dr0wib2ajs64a8d3l3zmgj2y8rklkc3xrvgscxgiv29lrlmvfz";
+    sha256 = "0mfrlb91akzrj0qpjpaa9bkp6m9z95z56glamry73qy21vbnj58m";
   };
 
   buildInputs = [ ncurses ];
 
   goDeps = ./deps.json;
-  
+
   patchPhase = ''
     sed -i -e "s|expand('<sfile>:h:h').'/bin/fzf'|'$bin/bin/fzf'|" plugin/fzf.vim
     sed -i -e "s|expand('<sfile>:h:h').'/bin/fzf-tmux'|'$bin/bin/fzf-tmux'|" plugin/fzf.vim
@@ -28,4 +28,11 @@ buildGoPackage rec {
     mkdir -p $out/share/vim-plugins
     ln -s $out/share/go/src/github.com/junegunn/fzf $out/share/vim-plugins/${name}
   '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/junegunn/fzf;
+    description = "A command-line fuzzy finder written in Go";
+    license = licenses.mit;
+    platforms = platforms.unix;
+  };
 }
diff --git a/pkgs/tools/misc/gti/default.nix b/pkgs/tools/misc/gti/default.nix
index 39e28073abc..3705dd832e9 100644
--- a/pkgs/tools/misc/gti/default.nix
+++ b/pkgs/tools/misc/gti/default.nix
@@ -11,6 +11,10 @@ stdenv.mkDerivation rec {
     sha256 = "1wki7d61kcmv9s3xayky9cz84qa773x3y1z88y768hq8ifwadcbn";
   };
 
+  prePatch = ''
+    substituteInPlace Makefile --replace gcc cc
+  '';
+
   installPhase = ''
     mkdir -p $out/bin $out/share/man/man6
     cp gti $out/bin
diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix
index b6f55bdcc20..12ecf11517c 100644
--- a/pkgs/tools/misc/youtube-dl/default.nix
+++ b/pkgs/tools/misc/youtube-dl/default.nix
@@ -12,11 +12,11 @@
 buildPythonApplication rec {
 
   name = "youtube-dl-${version}";
-  version = "2016.07.09.2";
+  version = "2016.07.16";
 
   src = fetchurl {
     url = "https://yt-dl.org/downloads/${version}/${name}.tar.gz";
-    sha256 = "0qs99ss1w22apx3n2173j5mly7h0ngfgkkgz07bn30235saf0fd3";
+    sha256 = "017x2hqc2bacypjmn9ac9f91y9y6afydl0z7dich5l627494hvfg";
   };
 
   buildInputs = [ makeWrapper zip pandoc ];
diff --git a/pkgs/tools/networking/ndjbdns/default.nix b/pkgs/tools/networking/ndjbdns/default.nix
index 2a7e996f8db..256f50e5c54 100644
--- a/pkgs/tools/networking/ndjbdns/default.nix
+++ b/pkgs/tools/networking/ndjbdns/default.nix
@@ -1,11 +1,12 @@
 { stdenv, fetchurl, systemd, pkgconfig }:
 
 stdenv.mkDerivation rec {
-  version = "1.05.9";
+  version = "1.06";
   name = "ndjbdns-${version}";
+
   src = fetchurl {
     url = "http://pjp.dgplug.org/ndjbdns/${name}.tar.gz";
-    sha256 = "0gf3hlmr6grcn6dzflf83lqqfp6hk3ldhbc7z0a1rrh059m93ap5";
+    sha256 = "09qi5a9abqm08iqmxj74fzzq9x1w5lzr1jlbzj2hl8hz0g2sgraw";
   };
 
   buildInputs = [ pkgconfig systemd ];
@@ -21,4 +22,4 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
   };
 
-}
\ No newline at end of file
+}
diff --git a/pkgs/tools/networking/openssh/default.nix b/pkgs/tools/networking/openssh/default.nix
index 064745f8855..a0cb0795a26 100644
--- a/pkgs/tools/networking/openssh/default.nix
+++ b/pkgs/tools/networking/openssh/default.nix
@@ -45,6 +45,9 @@ stdenv.mkDerivation rec {
       ./locale_archive.patch
       ./fix-host-key-algorithms-plus.patch
       ./CVE-2015-8325.patch
+
+      # See discussion in https://github.com/NixOS/nixpkgs/pull/16966
+      ./dont_create_privsep_path.patch
     ]
     ++ optional withGssapiPatches gssapiSrc;
 
@@ -66,11 +69,6 @@ stdenv.mkDerivation rec {
     ++ optional stdenv.isDarwin "--disable-libutil"
     ++ optional (!linkOpenssl) "--without-openssl";
 
-  preConfigure = ''
-    configureFlagsArray+=("--with-privsep-path=$out/empty")
-    mkdir -p $out/empty
-  '';
-
   enableParallelBuilding = true;
 
   hardeningEnable = [ "pie" ];
diff --git a/pkgs/tools/networking/openssh/dont_create_privsep_path.patch b/pkgs/tools/networking/openssh/dont_create_privsep_path.patch
new file mode 100644
index 00000000000..b6d432d5c5d
--- /dev/null
+++ b/pkgs/tools/networking/openssh/dont_create_privsep_path.patch
@@ -0,0 +1,11 @@
+diff -ur openssh-7.2p2_orig/Makefile.in openssh-7.2p2/Makefile.in
+--- openssh-7.2p2_orig/Makefile.in	2016-03-09 19:04:48.000000000 +0100
++++ openssh-7.2p2/Makefile.in	2016-07-16 09:56:05.643903293 +0200
+@@ -301,7 +301,6 @@
+ 	$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)5
+ 	$(srcdir)/mkinstalldirs $(DESTDIR)$(mandir)/$(mansubdir)8
+ 	$(srcdir)/mkinstalldirs $(DESTDIR)$(libexecdir)
+-	(umask 022 ; $(srcdir)/mkinstalldirs $(DESTDIR)$(PRIVSEP_PATH))
+ 	$(INSTALL) -m 0755 $(STRIP_OPT) ssh$(EXEEXT) $(DESTDIR)$(bindir)/ssh$(EXEEXT)
+ 	$(INSTALL) -m 0755 $(STRIP_OPT) scp$(EXEEXT) $(DESTDIR)$(bindir)/scp$(EXEEXT)
+ 	$(INSTALL) -m 0755 $(STRIP_OPT) ssh-add$(EXEEXT) $(DESTDIR)$(bindir)/ssh-add$(EXEEXT)
diff --git a/pkgs/tools/networking/proxychains/default.nix b/pkgs/tools/networking/proxychains/default.nix
index 2b85cef70c5..ed19f9d1674 100644
--- a/pkgs/tools/networking/proxychains/default.nix
+++ b/pkgs/tools/networking/proxychains/default.nix
@@ -1,10 +1,13 @@
-{ stdenv, fetchgit } :
-stdenv.mkDerivation {
-  name = "proxychains-4.0.1-head";
-  src = fetchgit {
-    url = https://github.com/haad/proxychains.git;
-    rev = "c9b8ce35b24f9d4e80563242b759dff54867163f";
-    sha256 = "163h3d3lpglbzjadf8a9kfaf0i1ds25r7si6ll6d5khn1835zik5";
+{ stdenv, fetchFromGitHub } :
+stdenv.mkDerivation rec {
+  name = "proxychains-${version}";
+  version = "4.2.0";
+
+  src = fetchFromGitHub {
+    owner = "haad";
+    repo = "proxychains";
+    rev = name;
+    sha256 = "015skh3z1jmm8kxbm3nkqv1w56kcvabdmcbmpwzywxr4xnh3x3pc";
   };
 
   meta = {
diff --git a/pkgs/tools/networking/shncpd/default.nix b/pkgs/tools/networking/shncpd/default.nix
new file mode 100644
index 00000000000..be2bc6a75a1
--- /dev/null
+++ b/pkgs/tools/networking/shncpd/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "shncpd-${version}";
+  version = "2016-06-22";
+
+  src = fetchFromGitHub {
+    owner = "jech";
+    repo = "shncpd";
+    rev = "62ef688db7a6535ce11e66c8c93ab64a1bb09484";
+    sha256 = "1sj7a77isc2jmh7gw2naw9l9366kjx6jb909h7spj7daxdwvji8f";
+  };
+
+  hardeningEnable = [ "pie" ];
+
+  preConfigure = ''
+    makeFlags=( "PREFIX=$out" )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple, stupid and slow HNCP daemon";
+    homepage = https://www.irif.univ-paris-diderot.fr/~jch/software/homenet/shncpd.html;
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.fpletz ];
+  };
+}
diff --git a/pkgs/tools/networking/vtun/default.nix b/pkgs/tools/networking/vtun/default.nix
index b0397149e60..09f48d9fa1a 100644
--- a/pkgs/tools/networking/vtun/default.nix
+++ b/pkgs/tools/networking/vtun/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, openssl, lzo, zlib, yacc, flex }:
+{ stdenv, fetchurl, fetchpatch, openssl, lzo, zlib, yacc, flex }:
 
 stdenv.mkDerivation rec {
   name = "vtun-3.0.3";
@@ -8,7 +8,13 @@ stdenv.mkDerivation rec {
     sha256 = "1jxrxp3klhc8az54d5qn84cbc0vdafg319jh84dxkrswii7vxp39";
   };
 
-  patchPhase = ''
+  patches = [
+    (fetchpatch { url = http://sources.debian.net/data/main/v/vtun/3.0.3-2.2/debian/patches/08-gcc5-inline.patch;
+                 sha256 = "18sys97v2hx6vac5zp3ld7sa6kz4izv3g9dnkm0lflbaxhym2vs1";
+                })
+  ];
+
+  postPatch = ''
     sed -i -e 's/-m 755//' -e 's/-o root -g 0//' Makefile.in
     sed -i '/strip/d' Makefile.in
   '';
diff --git a/pkgs/tools/package-management/packagekit/default.nix b/pkgs/tools/package-management/packagekit/default.nix
index bdd02e58cbb..dbac7be10d7 100644
--- a/pkgs/tools/package-management/packagekit/default.nix
+++ b/pkgs/tools/package-management/packagekit/default.nix
@@ -1,57 +1,54 @@
-{ stdenv, fetchurl, intltool, glib, pkgconfig, polkit, python, sqlite }:
+{ stdenv, fetchFromGitHub, intltool, glib, pkgconfig, polkit, python, sqlite, systemd
+, gobjectIntrospection, vala, gtk_doc, autoreconfHook, autoconf-archive
+, nix, boost
+, enableCommandNotFound ? false
+, enableBashCompletion ? false, bashCompletion ? null }:
+
+with stdenv.lib;
 
 stdenv.mkDerivation rec {
-  name = "packagekit-${version}";
-  version = "1.1.1";
+  name = "packagekit-2016-06-03";
 
-  src = fetchurl {
-    sha256 = "1i6an483vmm6y39szr2alq5vf6kfxhk3j5ca79qrshcj9jjlhcs8";
-    url = "http://www.freedesktop.org/software/PackageKit/releases/PackageKit-${version}.tar.xz";
+  src = fetchFromGitHub {
+    owner = "hughsie";
+    repo = "PackageKit";
+    rev = "99fd83bbb26badf43c6a17a9f0c6dc054c7484c8";
+    sha256 = "0y42vl6r1wh57sbjfkn4khjs78q54wshf4p0v4nly9s7hydxpi6a";
   };
 
-  buildInputs = [ glib polkit python ];
-  propagatedBuildInputs = [ sqlite ];
-  nativeBuildInputs = [ intltool pkgconfig ];
+  buildInputs = [ glib polkit systemd python gobjectIntrospection vala ]
+                  ++ optional enableBashCompletion bashCompletion;
+  propagatedBuildInputs = [ sqlite nix boost ];
+  nativeBuildInputs = [ intltool pkgconfig autoreconfHook autoconf-archive gtk_doc ];
+
+  preAutoreconf = ''
+    gtkdocize
+    intltoolize
+  '';
 
   configureFlags = [
-    "--disable-static"
-    "--disable-python3"
-    "--disable-networkmanager"
-    "--disable-connman"
-    "--disable-systemd"
-    "--disable-bash-completion"
-    "--disable-gstreamer-plugin"
-    "--disable-gtk-module"
-    "--disable-command-not-found"
+    "--enable-systemd"
+    "--enable-nix"
+    "--disable-dummy"
     "--disable-cron"
-    "--disable-daemon-tests"
-    "--disable-alpm"
-    "--disable-aptcc"
-    "--enable-dummy"
-    "--disable-entropy"
-    "--disable-hif"
-    "--disable-pisi"
-    "--disable-poldek"
-    "--disable-portage"
-    "--disable-ports"
-    "--disable-katja"
-    "--disable-urpmi"
-    "--disable-yum"
-    "--disable-zypp"
-  ];
+    "--disable-introspection"
+    "--disable-offline-update"
+    "--localstatedir=/var"
+    "--sysconfdir=/etc"
+    "--with-dbus-sys=$(out)/etc/dbus-1/system.d"
+    "--with-systemdsystemunitdir=$(out)/lib/systemd/system/"
+  ]
+  ++ optional (!enableBashCompletion) "--disable-bash-completion"
+  ++ optional (!enableCommandNotFound) "--disable-command-not-found";
 
   enableParallelBuilding = true;
 
-  preInstall = ''
-    # Don't install anything to e.g. $out/var/cache:
-    for dir in src data; do
-      substituteInPlace $dir/Makefile \
-        --replace " install-data-hook" "" \
-        --replace " install-databaseDATA" ""
-    done
-  '';
+  installFlags = [
+    "sysconfdir=\${out}/etc"
+    "localstatedir=\${TMPDIR}"
+  ];
 
-  meta = with stdenv.lib; {
+  meta = {
     description = "System to facilitate installing and updating packages";
     longDescription = ''
       PackageKit is a system designed to make installing and updating software
@@ -66,6 +63,6 @@ stdenv.mkDerivation rec {
     homepage = http://www.packagekit.org/;
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ nckx ];
+    maintainers = with maintainers; [ nckx matthewbauer ];
   };
 }
diff --git a/pkgs/tools/security/keybase/default.nix b/pkgs/tools/security/keybase/default.nix
new file mode 100644
index 00000000000..87a0596f6f0
--- /dev/null
+++ b/pkgs/tools/security/keybase/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "keybase-${version}";
+  version = "1.0.16";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/keybase/client";
+  subPackages = [ "go/keybase" ];
+
+  dontRenameImports = true;
+
+  src = fetchFromGitHub {
+    owner = "keybase";
+    repo = "client";
+    inherit rev;
+    sha256 = "0p62cqpfgx9b5kfnviqpig27i20yv9bg5mq61am5xrmkp68jk35b";
+  };
+
+  buildFlags = [ "-tags production" ];
+
+  meta = with stdenv.lib; {
+    homepage = https://www.keybase.io/;
+    description = "The Keybase official command-line utility and service.";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ carlsverre ];
+  };
+}
diff --git a/pkgs/tools/security/minisign/default.nix b/pkgs/tools/security/minisign/default.nix
index 373ebc1e6ff..1a573048aa4 100644
--- a/pkgs/tools/security/minisign/default.nix
+++ b/pkgs/tools/security/minisign/default.nix
@@ -1,12 +1,14 @@
-{ stdenv, fetchurl, cmake, libsodium }:
+{ stdenv, fetchFromGitHub, cmake, libsodium }:
 
 stdenv.mkDerivation rec {
   name = "minisign-${version}";
   version = "0.6";
 
-  src = fetchurl {
-    url = "https://github.com/jedisct1/minisign/archive/${version}.tar.gz";
-    sha256 = "029g8ian72fy07k73nf451dw1yggav6crjjc2x6kv4nfpq3pl9pj";
+  src = fetchFromGitHub {
+    repo = "minisign";
+    owner = "jedisct1";
+    rev = version;
+    sha256 = "1m71ngxaij3q1dw602kjgj22y5xfjlxrrkjdmx1v4p36y0n6wl92";
   };
 
   nativeBuildInputs = [ cmake ];
@@ -22,5 +24,6 @@ stdenv.mkDerivation rec {
     homepage = https://jedisct1.github.io/minisign/;
     license = licenses.isc;
     maintainers = with maintainers; [ joachifm ];
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/security/nasty/default.nix b/pkgs/tools/security/nasty/default.nix
index 35bbb3bae48..fb078674ea7 100644
--- a/pkgs/tools/security/nasty/default.nix
+++ b/pkgs/tools/security/nasty/default.nix
@@ -9,6 +9,10 @@ stdenv.mkDerivation rec {
     sha256 = "1dznlxr728k1pgy1kwmlm7ivyl3j3rlvkmq34qpwbwbj8rnja1vn";
   };
 
+  # does not apply cleanly with patchPhase/fetchpatch
+  # https://sources.debian.net/src/nasty/0.6-3/debian/patches/02_add_largefile_support.patch
+  CFLAGS = "-D_FILE_OFFSET_BITS=64";
+
   buildInputs = [ gpgme ];
 
   installPhase = ''
diff --git a/pkgs/tools/security/sslscan/default.nix b/pkgs/tools/security/sslscan/default.nix
index 50cc380b970..f6777a0e979 100644
--- a/pkgs/tools/security/sslscan/default.nix
+++ b/pkgs/tools/security/sslscan/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "sslscan-${version}";
-  version = "1.11.5";
+  version = "1.11.7";
 
   src = fetchurl {
     url = "https://github.com/rbsec/sslscan/archive/${version}-rbsec.tar.gz";
-    sha256 = "0mcg8hyx1r9sq716bw1r554fcsf512khgcms2ixxb1c31ng6lhq6";
+    sha256 = "0wygz2gm9asvhpfy44333y4pkdja1sbr41hc6mhkxg7a4ys8f9qs";
   };
 
   buildInputs = [ openssl ];
diff --git a/pkgs/tools/security/sudo/default.nix b/pkgs/tools/security/sudo/default.nix
index b2af5451b8b..e2c69377df5 100644
--- a/pkgs/tools/security/sudo/default.nix
+++ b/pkgs/tools/security/sudo/default.nix
@@ -4,14 +4,14 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "sudo-1.8.16";
+  name = "sudo-1.8.17p1";
 
   src = fetchurl {
     urls =
       [ "ftp://ftp.sudo.ws/pub/sudo/${name}.tar.gz"
         "ftp://ftp.sudo.ws/pub/sudo/OLD/${name}.tar.gz"
       ];
-    sha256 = "0k86sm9ilhxhvnfwq3092zhfxazj3kddn0y2mirz0nqjqmpq50rd";
+    sha256 = "c690d707fb561b3ecdf6a6de5563bc0b769388eff201c851edbace408bb155cc";
   };
 
   configureFlags = [
diff --git a/pkgs/tools/text/platinum-searcher/default.nix b/pkgs/tools/text/platinum-searcher/default.nix
index 9eae37c6d1a..21a49d493aa 100644
--- a/pkgs/tools/text/platinum-searcher/default.nix
+++ b/pkgs/tools/text/platinum-searcher/default.nix
@@ -2,8 +2,8 @@
 
 buildGoPackage rec {
   name = "the_platinum_searcher-${version}";
-  version = "2.1.1";
-  rev = "v2.1.1";
+  version = "2.1.3";
+  rev = "v2.1.3";
 
   goPackagePath = "github.com/monochromegane/the_platinum_searcher";
 
@@ -11,7 +11,7 @@ buildGoPackage rec {
     inherit rev;
     owner = "monochromegane";
     repo = "the_platinum_searcher";
-    sha256 = "06cs936w3l64ikszcysdm9ijn52kwgi1ffjxkricxbdb677gsk23";
+    sha256 = "09pkdfh7fqn3x4l9zaw5wzk20k7nfdwry7br9vfy3vv3fwv61ynp";
   };
 
   goDeps = ./deps.json;
diff --git a/pkgs/tools/virtualization/nixos-container/default.nix b/pkgs/tools/virtualization/nixos-container/default.nix
new file mode 100644
index 00000000000..0763536533f
--- /dev/null
+++ b/pkgs/tools/virtualization/nixos-container/default.nix
@@ -0,0 +1,17 @@
+{ substituteAll, perl, perlPackages, shadow, utillinux }:
+
+substituteAll {
+    name = "nixos-container";
+    dir = "bin";
+    isExecutable = true;
+    src = ./nixos-container.pl;
+    perl = "${perl}/bin/perl -I${perlPackages.FileSlurp}/lib/perl5/site_perl";
+    su = "${shadow.su}/bin/su";
+    inherit utillinux;
+
+    postInstall = ''
+      t=$out/etc/bash_completion.d
+      mkdir -p $t
+      cp ${./nixos-container-completion.sh} $t/nixos-container
+    '';
+}
diff --git a/nixos/modules/virtualisation/nixos-container-completion.sh b/pkgs/tools/virtualization/nixos-container/nixos-container-completion.sh
index 0fe8ab811a1..0fe8ab811a1 100644
--- a/nixos/modules/virtualisation/nixos-container-completion.sh
+++ b/pkgs/tools/virtualization/nixos-container/nixos-container-completion.sh
diff --git a/nixos/modules/virtualisation/nixos-container.pl b/pkgs/tools/virtualization/nixos-container/nixos-container.pl
index eda57a9751e..eda57a9751e 100755
--- a/nixos/modules/virtualisation/nixos-container.pl
+++ b/pkgs/tools/virtualization/nixos-container/nixos-container.pl
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index ca99598f2ab..86a73864091 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -167,6 +167,8 @@ in
 
   fetchmtn = callPackage ../build-support/fetchmtn (config.fetchmtn or {});
 
+  fetchMavenArtifact = callPackage ../build-support/fetchmavenartifact { };
+
   packer = callPackage ../development/tools/packer { };
 
   fetchpatch = callPackage ../build-support/fetchpatch { };
@@ -2166,6 +2168,8 @@ in
 
   keybase = callPackage ../applications/misc/keybase { };
 
+  keybase-go = callPackage ../tools/security/keybase { };
+
   keychain = callPackage ../tools/misc/keychain { };
 
   keyfuzz = callPackage ../tools/inputmethods/keyfuzz { };
@@ -2888,7 +2892,9 @@ in
 
   p7zip = callPackage ../tools/archivers/p7zip { };
 
-  packagekit = callPackage ../tools/package-management/packagekit { };
+  packagekit = callPackage ../tools/package-management/packagekit {
+    nix = nixUnstable;
+  };
 
   pal = callPackage ../tools/misc/pal { };
 
@@ -3466,6 +3472,8 @@ in
 
   solvespace = callPackage ../applications/graphics/solvespace { };
 
+  sonarr = callPackage ../servers/sonarr { };
+
   sonata = callPackage ../applications/audio/sonata {
     inherit (python3Packages) buildPythonApplication python isPy3k dbus pygobject3 mpd2;
   };
@@ -3913,6 +3921,8 @@ in
 
   udunits = callPackage ../development/libraries/udunits { };
 
+  uemacs = callPackage ../applications/editors/uemacs { };
+
   uhttpmock = callPackage ../development/libraries/uhttpmock { };
 
   uim = callPackage ../tools/inputmethods/uim {
@@ -3927,6 +3937,8 @@ in
 
   units = callPackage ../tools/misc/units { };
 
+  unittest-cpp = callPackage ../development/libraries/unittest-cpp { };
+
   unrar = callPackage ../tools/archivers/unrar { };
 
   xar = callPackage ../tools/compression/xar { };
@@ -4705,8 +4717,6 @@ in
 
   hugs = callPackage ../development/interpreters/hugs { };
 
-  path64 = callPackage ../development/compilers/path64 { };
-
   openjdk7 =
     if stdenv.isDarwin then
       callPackage ../development/compilers/openjdk-darwin { }
@@ -4734,6 +4744,8 @@ in
   jdk = if stdenv.isDarwin then self.jdk7 else self.jdk8;
   jre = if stdenv.isDarwin then self.jre7 else self.jre8;
 
+  openshot-qt = callPackage ../applications/video/openshot-qt { };
+
   oraclejdk = self.jdkdistro true false;
 
   oraclejdk7 = self.oraclejdk7distro true false;
@@ -5733,7 +5745,7 @@ in
     glpk = null;
     suitesparse = null;
     jdk = null;
-    openblas = openblasCompat;
+    openblas = openblas;
   };
   octaveFull = (lowPrio (callPackage ../development/interpreters/octave {
     qt = qt4;
@@ -5808,6 +5820,10 @@ in
     inherit (darwin) CF configd;
     self = python35;
   });
+  python36 = callPackage ../development/interpreters/python/3.6 {
+    inherit (darwin) CF configd;
+    self = python36;
+  };
   pypy = callPackage ../development/interpreters/pypy {
     self = pypy;
   };
@@ -6240,6 +6256,8 @@ in
 
   docutils = pythonPackages.docutils;
 
+  doctl = callPackage ../development/tools/doctl { };
+
   dot2tex = pythonPackages.dot2tex;
 
   doxygen = callPackage ../development/tools/documentation/doxygen {
@@ -6563,6 +6581,8 @@ in
 
   shellcheck = self.haskellPackages.ShellCheck;
 
+  shncpd = callPackage ../tools/networking/shncpd { };
+
   sigrok-cli = callPackage ../development/tools/sigrok-cli { };
 
   simpleTpmPk11 = callPackage ../tools/security/simple-tpm-pk11 { };
@@ -8134,6 +8154,7 @@ in
 
   libjpeg_original = callPackage ../development/libraries/libjpeg { };
   libjpeg_turbo = callPackage ../development/libraries/libjpeg-turbo { };
+  libjpeg_drop = callPackage ../development/libraries/libjpeg-drop { };
   libjpeg = if stdenv.isLinux then self.libjpeg_turbo else self.libjpeg_original; # some problems, both on FreeBSD and Darwin
 
   libjpeg62 = callPackage ../development/libraries/libjpeg/62.nix {
@@ -8386,6 +8407,8 @@ in
 
   libu2f-server = callPackage ../development/libraries/libu2f-server { };
 
+  libui = callPackage ../development/libraries/libui { };
+
   libunity = callPackage ../development/libraries/libunity { };
 
   libunistring = callPackage ../development/libraries/libunistring { };
@@ -8672,7 +8695,9 @@ in
 
   notify-sharp = callPackage ../development/libraries/notify-sharp { };
 
-  ncurses = callPackage ../development/libraries/ncurses { };
+  ncurses5 = callPackage ../development/libraries/ncurses { abiVersion = "5"; };
+  ncurses6 = callPackage ../development/libraries/ncurses { abiVersion = "6"; };
+  ncurses = if stdenv.isDarwin then ncurses5 else ncurses6;
 
   neardal = callPackage ../development/libraries/neardal { };
 
@@ -9845,6 +9870,11 @@ in
     self = python35Packages;
   });
 
+  python36Packages = (callPackage ./python-packages.nix {
+    python = python36;
+    self = python36Packages;
+  });
+
   pypyPackages = callPackage ./python-packages.nix {
     python = pypy;
     self = pypyPackages;
@@ -10156,13 +10186,19 @@ in
 
   neard = callPackage ../servers/neard { };
 
-  nginx = callPackage ../servers/http/nginx {
+  nginx = callPackage ../servers/http/nginx/stable.nix {
     # We don't use `with` statement here on purpose!
     # See https://github.com/NixOS/nixpkgs/pull/10474/files#r42369334
     modules = [ nginxModules.rtmp nginxModules.dav nginxModules.moreheaders ];
   };
-  # nginxUnstable currently points to stable because that's newest:
-  nginxUnstable = nginx;
+
+  nginxMainline = callPackage ../servers/http/nginx/mainline.nix {
+    # We don't use `with` statement here on purpose!
+    # See https://github.com/NixOS/nixpkgs/pull/10474/files#r42369334
+    modules = [ nginxModules.dav nginxModules.moreheaders ];
+  };
+
+  nginxUnstable = nginxMainline;
 
   nginxModules = callPackage ../servers/http/nginx/modules.nix { };
 
@@ -10727,6 +10763,10 @@ in
 
   firejail = callPackage ../os-specific/linux/firejail {};
 
+  fnotifystat = callPackage ../os-specific/linux/fnotifystat { };
+
+  forkstat = callPackage ../os-specific/linux/forkstat { };
+
   freefall = callPackage ../os-specific/linux/freefall {
     inherit (linuxPackages) kernel;
   };
@@ -10828,6 +10868,10 @@ in
 
   openisns = callPackage ../os-specific/linux/open-isns { };
 
+  powerstat = callPackage ../os-specific/linux/powerstat { };
+
+  smemstat = callPackage ../os-specific/linux/smemstat { };
+
   tgt = callPackage ../tools/networking/tgt { };
 
   # -- Linux kernel expressions ------------------------------------------------
@@ -11148,7 +11192,12 @@ in
   linux_grsec_nixos = callPackage ../build-support/grsecurity {
     inherit (lib) overrideDerivation;
     kernel = callPackage ../os-specific/linux/kernel/linux-grsecurity.nix {
-      inherit (self.linux_4_5) kernelPatches;
+      kernelPatches = with self.kernelPatches; [ bridge_stp_helper qat_common_Makefile ]
+        ++ lib.optionals ((platform.kernelArch or null) == "mips")
+        [ kernelPatches.mips_fpureg_emu
+          kernelPatches.mips_fpu_sigill
+          kernelPatches.mips_ext3_n32
+        ];
     };
     grsecPatch = self.kernelPatches.grsecurity_testing;
     kernelPatches = [ self.kernelPatches.grsecurity_nixos_kmod ];
@@ -11809,6 +11858,9 @@ in
   liberation_ttf_binary = callPackage ../data/fonts/redhat-liberation-fonts/binary.nix { };
   liberation_ttf = self.liberation_ttf_binary;
 
+  liberationsansnarrow = callPackage ../data/fonts/liberationsansnarrow { };
+  liberationsansnarrow_binary = callPackage ../data/fonts/liberationsansnarrow/binary.nix { };
+
   libertine = callPackage ../data/fonts/libertine { };
 
   lmmath = callPackage ../data/fonts/lmodern/lmmath.nix {};
@@ -12176,6 +12228,8 @@ in
 
   bibletime = callPackage ../applications/misc/bibletime { };
 
+  bitkeeper = callPackage ../applications/version-management/bitkeeper { };
+
   bitlbee = callPackage ../applications/networking/instant-messengers/bitlbee { };
   bitlbee-plugins = callPackage ../applications/networking/instant-messengers/bitlbee/plugins.nix { };
 
@@ -12747,6 +12801,8 @@ in
 
   evopedia = callPackage ../applications/misc/evopedia { };
 
+  gpg-mdp = callPackage ../applications/misc/gpg-mdp { };
+
   keepassx = callPackage ../applications/misc/keepassx { };
   keepassx2 = callPackage ../applications/misc/keepassx/2.0.nix { };
 
@@ -12891,7 +12947,7 @@ in
   };
 
   firefox-beta-bin-unwrapped = callPackage ../applications/networking/browsers/firefox-bin {
-    channel = "beta";
+    generated = import ../applications/networking/browsers/firefox-bin/beta_sources.nix;
     gconf = pkgs.gnome.GConf;
     inherit (pkgs.gnome) libgnome libgnomeui;
     inherit (pkgs.gnome3) defaultIconTheme;
@@ -12904,20 +12960,6 @@ in
     desktopName = "Firefox Beta";
   };
 
-  firefox-developer-bin-unwrapped = callPackage ../applications/networking/browsers/firefox-bin {
-    channel = "developer";
-    gconf = pkgs.gnome.GConf;
-    inherit (pkgs.gnome) libgnome libgnomeui;
-    inherit (pkgs.gnome3) defaultIconTheme;
-  };
-
-  firefox-developer-bin = self.wrapFirefox firefox-developer-bin-unwrapped {
-    browserName = "firefox";
-    name = "firefox-developer-bin-" +
-      (builtins.parseDrvName firefox-developer-bin-unwrapped.name).version;
-    desktopName = "Firefox Developer Edition";
-  };
-
   firestr = qt5.callPackage ../applications/networking/p2p/firestr
     { boost = boost155;
     };
@@ -13209,6 +13251,8 @@ in
 
   hugin = callPackage ../applications/graphics/hugin { };
 
+  hugo = callPackage ../applications/misc/hugo { };
+
   hydrogen = callPackage ../applications/audio/hydrogen { };
 
   slack = callPackage ../applications/networking/instant-messengers/slack { };
@@ -13810,6 +13854,8 @@ in
 
   pijul = callPackage ../applications/version-management/pijul { };
 
+  planner = callPackage ../applications/office/planner { };
+
   playonlinux = callPackage ../applications/misc/playonlinux {
      stdenv = stdenv_32bit;
   };
@@ -13984,6 +14030,8 @@ in
 
   pcsx2 = callPackage_i686 ../misc/emulators/pcsx2 { };
 
+  pekwm = callPackage ../applications/window-managers/pekwm { };
+
   pencil = callPackage ../applications/graphics/pencil {
     xulrunner = firefox-unwrapped;
   };
@@ -14828,7 +14876,7 @@ in
 
   vym = callPackage ../applications/misc/vym { };
 
-  w3m = callPackage ../applications/networking/browsers/w3m { 
+  w3m = callPackage ../applications/networking/browsers/w3m {
     graphicsSupport = !stdenv.isDarwin;
   };
 
@@ -15309,6 +15357,8 @@ in
 
   cockatrice = qt5.callPackage ../games/cockatrice {  };
 
+  commandergenius = callPackage ../games/commandergenius { };
+
   confd = callPackage ../tools/system/confd { };
 
   construoBase = lowPrio (callPackage ../games/construo {
@@ -16911,6 +16961,8 @@ in
 
   nixos-artwork = callPackage ../data/misc/nixos-artwork { };
 
+  nixos-container = callPackage ../tools/virtualization/nixos-container { };
+
   norwester-font = callPackage ../data/fonts/norwester  {};
 
   nut = callPackage ../applications/misc/nut { };
@@ -17181,6 +17233,10 @@ in
 
   webfs = callPackage ../servers/http/webfs { };
 
+  wikicurses = callPackage ../applications/misc/wikicurses {
+    pythonPackages = python3Packages;
+  };
+
   wineMinimal = callPackage ../misc/emulators/wine {
     wineRelease = config.wine.release or "stable";
     wineBuild = config.wine.build or "wine32";
diff --git a/pkgs/top-level/default.nix b/pkgs/top-level/default.nix
index 8913dc1ef59..87813571d9a 100644
--- a/pkgs/top-level/default.nix
+++ b/pkgs/top-level/default.nix
@@ -6,7 +6,7 @@
 
 
 { # The system (e.g., `i686-linux') for which to build the packages.
-  system ? builtins.currentSystem
+  system
 
 , # The standard environment to use.  Only used for bootstrapping.  If
   # null, the default standard environment is used.
@@ -19,21 +19,8 @@
                && system != "x86_64-solaris"
                && system != "x86_64-kfreebsd-gnu")
 
-, # Allow a configuration attribute set to be passed in as an
-  # argument.  Otherwise, it's read from $NIXPKGS_CONFIG or
-  # ~/.nixpkgs/config.nix.
-  #
-  # [For NixOS (nixos-rebuild), use nixpkgs.config option to set.]
-  config ? let
-      inherit (builtins) getEnv pathExists;
-
-      configFile = getEnv "NIXPKGS_CONFIG";
-      homeDir = getEnv "HOME";
-      configFile2 = homeDir + "/.nixpkgs/config.nix";
-    in
-      if configFile != "" && pathExists configFile then import configFile
-      else if homeDir != "" && pathExists configFile2 then import configFile2
-      else {}
+, # Allow a configuration attribute set to be passed in as an argument.
+  config ? {}
 
 , crossSystem ? null
 , platform ? null
diff --git a/pkgs/top-level/impure.nix b/pkgs/top-level/impure.nix
new file mode 100644
index 00000000000..e9066815927
--- /dev/null
+++ b/pkgs/top-level/impure.nix
@@ -0,0 +1,24 @@
+/* Impure default args for `pkgs/top-level/default.nix`. See that file
+   for the meaning of each argument. */
+
+{ # Fallback: Assume we are building packages for the current (host, in GNU
+  # Autotools parlance) system.
+  system ? builtins.currentSystem
+
+, # Fallback: The contents of the configuration file found at $NIXPKGS_CONFIG or
+  # $HOME/.nixpkgs/config.nix.
+  config ? let
+      inherit (builtins) getEnv pathExists;
+
+      configFile = getEnv "NIXPKGS_CONFIG";
+      homeDir = getEnv "HOME";
+      configFile2 = homeDir + "/.nixpkgs/config.nix";
+    in
+      if configFile != "" && pathExists configFile then import configFile
+      else if homeDir != "" && pathExists configFile2 then import configFile2
+      else {}
+
+, ...
+} @ args:
+
+import ./. (args // { inherit system config; })
diff --git a/pkgs/top-level/make-tarball.nix b/pkgs/top-level/make-tarball.nix
index da3579a6595..b664dceaa95 100644
--- a/pkgs/top-level/make-tarball.nix
+++ b/pkgs/top-level/make-tarball.nix
@@ -40,7 +40,7 @@ releaseTools.sourceTarball rec {
     echo 'abort "Illegal use of <nixpkgs> in Nixpkgs."' > $TMPDIR/barf.nix
 
     # Make sure that Nixpkgs does not use <nixpkgs>
-    if grep -r '<nixpkgs\/' pkgs; then
+    if (find pkgs -type f -name '*.nix' -print | xargs grep '<nixpkgs\/'); then
         echo "Nixpkgs is not allowed to use <nixpkgs> to refer to itself."
         exit 1
     fi
diff --git a/pkgs/top-level/php-packages.nix b/pkgs/top-level/php-packages.nix
index f08117903be..1e042bedb4f 100644
--- a/pkgs/top-level/php-packages.nix
+++ b/pkgs/top-level/php-packages.nix
@@ -209,11 +209,11 @@ let
 
   composer = pkgs.stdenv.mkDerivation rec {
     name = "composer-${version}";
-    version = "1.0.0-alpha11";
+    version = "1.2.0";
 
     src = pkgs.fetchurl {
       url = "https://getcomposer.org/download/${version}/composer.phar";
-      sha256 = "1b41ad352p4296c2j7cdq27wp06w28080bjxnjpmw536scb7yd27";
+      sha256 = "15chwfsqmwmhry3bv13a5y4ih1vzb0j8h1dfd49pnzzd8lai706w";
     };
 
     phases = [ "installPhase" ];
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 21700fe82d1..f8ca093b1bf 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -10,6 +10,7 @@ let
   isPy33 = python.majorVersion == "3.3";
   isPy34 = python.majorVersion == "3.4";
   isPy35 = python.majorVersion == "3.5";
+  isPy36 = python.majorVersion == "3.6";
   isPyPy = python.executable == "pypy";
   isPy3k = strings.substring 0 1 python.majorVersion == "3";
 
@@ -30,6 +31,7 @@ let
     if isPy33 then "python33" else
     if isPy34 then "python34" else
     if isPy35 then "python35" else
+    if isPy36 then "python36" else
     if isPyPy then "pypy" else "";
 
   modules = python.modules or {
@@ -42,7 +44,7 @@ let
 
 in modules // {
 
-  inherit python bootstrapped-pip isPy26 isPy27 isPy33 isPy34 isPy35 isPyPy isPy3k pythonName buildPythonPackage buildPythonApplication;
+  inherit python bootstrapped-pip isPy26 isPy27 isPy33 isPy34 isPy35 isPy36 isPyPy isPy3k pythonName buildPythonPackage buildPythonApplication;
 
   # helpers
 
@@ -4373,6 +4375,12 @@ in modules // {
     propagatedBuildInputs = with self; [ pkgs.libffi pycparser ];
     buildInputs = with self; [ pytest ];
 
+    patchPhase = ''
+      substituteInPlace testing/cffi0/test_ownlib.py --replace "gcc" "cc"
+    '';
+
+    NIX_CFLAGS_COMPILE="-Wno-shift-negative-value";
+
     checkPhase = ''
       py.test
     '';
@@ -7050,6 +7058,27 @@ in modules // {
     };
   };
 
+  jupyterlab = buildPythonPackage rec {
+    name = "jupyterlab-${version}";
+    version = "0.1.1";
+
+    src = pkgs.fetchurl {
+      url = "mirror://pypi/j/jupyterlab/${name}.tar.gz";
+      sha256 = "c1a08f4d1b2bb1bf06db090db30df988a22ffbfa05606e7eb026e364969388da";
+    };
+
+    propagatedBuildInputs = with self; [ notebook ];
+
+    # No tests in archive
+    doCheck = false;
+
+    meta = {
+      description = "Jupyter lab environment notebook server extension.";
+      license = with licenses; [ bsd3 ];
+      homepage = "http://jupyter.org/";
+    };
+  };
+
   lti = let
     self' = (self.override {self = self';}) // {pytest = self.pytest_27;};
     mock_1_0_1 = self'.mock.overrideDerivation (_: rec {
@@ -9332,6 +9361,8 @@ in modules // {
     # Only test dependencies
     buildInputs = with self; [ pkgs.git gevent geventhttpclient pkgs.glibcLocales mock fastimport ];
 
+    doCheck = !stdenv.isDarwin;
+
     meta = {
       description = "Simple Python implementation of the Git file formats and protocols";
       homepage = http://samba.org/~jelmer/dulwich/;
@@ -12390,7 +12421,7 @@ in modules // {
     propagatedBuildInputs = with self; [ pkgs.file ];
 
     patchPhase = ''
-      substituteInPlace magic.py --replace "ctypes.util.find_library('magic')" "'${pkgs.file}/lib/libmagic.so'"
+      substituteInPlace magic.py --replace "ctypes.util.find_library('magic')" "'${pkgs.file}/lib/libmagic.${if stdenv.isDarwin then "dylib" else "so"}'"
     '';
 
     doCheck = false;
@@ -12427,12 +12458,12 @@ in modules // {
 
 
   m2crypto = buildPythonPackage rec {
-    version = "0.23.0";
+    version = "0.24.0";
     name = "m2crypto-${version}";
 
     src = pkgs.fetchurl {
       url = "mirror://pypi/M/M2Crypto/M2Crypto-${version}.tar.gz";
-      sha256 = "1ac3b6eafa5ff7e2a0796675316d7569b28aada45a7ab74042ad089d15a9567f";
+      sha256 = "1s2y0pf2zg7xf4nfwrw7zhwbk615r5a7bgi5wwkwzh6jl50n99c0";
     };
 
     buildInputs = with self; [ pkgs.swig2 pkgs.openssl ];
@@ -20465,14 +20496,19 @@ in modules // {
   });
 
   rpy2 = buildPythonPackage rec {
-    name = "rpy2-2.5.6";
+    name = "rpy2-2.8.2";
     disabled = isPyPy;
     src = pkgs.fetchurl {
       url = "mirror://pypi/r/rpy2/${name}.tar.gz";
-      sha256 = "d0d584c435b5ed376925a95a4525dbe87de7fa9260117e9f208029e0c919ad06";
+      sha256 = "2c1a313df4e64236dcfe1078ce847b8e3c180656c894928d3a4b391aacb9b24c";
     };
     buildInputs = with pkgs; [ readline R pcre lzma bzip2 zlib icu ];
-    propagatedBuildInputs = [ self.singledispatch ];
+    propagatedBuildInputs = with self; [ singledispatch six ];
+
+    # According to manual this is how the testsuite should be invoked
+    checkPhase = ''
+      ${python.interpreter}  -m rpy2.tests
+    '';
     meta = {
       homepage = http://rpy.sourceforge.net/rpy2;
       description = "Python interface to R";