about summary refs log tree commit diff
path: root/nixpkgs/pkgs/applications/networking
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/applications/networking')
-rw-r--r--nixpkgs/pkgs/applications/networking/apache-directory-studio/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/networking/bittorrentsync/1.4.x.nix9
-rw-r--r--nixpkgs/pkgs/applications/networking/bittorrentsync/2.0.x.nix9
-rw-r--r--nixpkgs/pkgs/applications/networking/bittorrentsync/generic.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/brig/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/arora/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/brave/default.nix150
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/browsh/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/browsh/deps.nix272
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix56
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix316
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix154
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/chromium-vaapi.patch117
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/jumbo-sorted.patch11
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/nix_plugin_paths_68.patch61
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch17
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/remove-webp-include-69.patch11
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/patches/widevine.patch16
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/plugins.nix145
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/update.nix271
-rwxr-xr-xnixpkgs/pkgs/applications/networking/browsers/chromium/update.sh4
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix18
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/conkeror/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/dillo/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/elinks/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/elinks/gc-init.patch17
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/eolie/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/falkon/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix995
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix210
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix995
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/firefox.key254
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix995
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox-bin/update.nix91
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix343
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/env_var_for_system_dir.patch6
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/fix-debug.patch77
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/fix-pa-context-connect-retval.patch26
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx65.patch23
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-max-64.patch25
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-min-65.patch25
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix267
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/update.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/firefox/wrapper.nix186
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/google-chrome/default.nix141
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/links2/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/luakit/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/lynx/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/midori/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/esteidfirefoxplugin/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix147
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix106
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/builder.sh4
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/ipc-lazytrace.patch10
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/plugin-linkfix.patch11
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/translation-xgettext-to-intltool.patch16
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix117
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/preload.c60
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.upstream4
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/opera/default.nix125
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/otter/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/palemoon/default.nix122
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/qtchan/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/qutebrowser/default.nix104
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch29
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/surf/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix399
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/default.nix347
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/extensions.nix111
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/uzbl/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/vimb/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/vimprobable2/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix53
-rwxr-xr-xnixpkgs/pkgs/applications/networking/browsers/vivaldi/update.sh39
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/w3m/RAND_egd.libressl.patch11
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/w3m/default.nix99
-rw-r--r--nixpkgs/pkgs/applications/networking/browsers/w3m/no-x11.patch15
-rw-r--r--nixpkgs/pkgs/applications/networking/c14/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/c14/deps.nix1
-rw-r--r--nixpkgs/pkgs/applications/networking/charles/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/networking/cloudflared/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/cloudflared/deps.nix444
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/argo/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/argo/deps.nix687
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/chronos/chronos-deps.nix14
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/chronos/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/chronos/fetch-chronos-deps.sh1672
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/click/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/click/fix_cargo_lock_version.patch13
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/cni/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/cni/plugins.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm-deps.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm2.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve-deps.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/flink/default.nix54
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/habitat/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/hadoop/default.nix155
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/helm/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/helm/deps.nix840
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/helmfile/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/heptio-ark/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/hetzner-kube/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/jx/3321-fix-location-of-thrift.patch36
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/jx/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kanif/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kompose/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kontemplate/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kontemplate/deps.nix111
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kops/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/ksonnet/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kube-router/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubecfg/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubectl/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix77
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubeval/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/kubeval/deps.nix174
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/luigi/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/marathon/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/mesos/default.nix259
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh1359
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/mesos/mesos-deps.nix14
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/mesos/nixos.patch731
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/mesos/rb36610.patch12
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/minikube/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/minishift/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/nomad/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/openshift/default.nix86
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/pachyderm/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/pig/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/spark/default.nix66
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/ssm-agent/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/stern/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/stern/deps.nix336
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/taktuk/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-docs/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/deps.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile2
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock25
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/gemset.nix61
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/data.nix724
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ibm/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.txt25
-rwxr-xr-xnixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all143
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform/default.nix126
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terraform/provider-path.patch16
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/cluster/terragrunt/deps.nix129
-rw-r--r--nixpkgs/pkgs/applications/networking/compactor/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/networking/corebird/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/davmail/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/drive/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/drive/deps.nix192
-rw-r--r--nixpkgs/pkgs/applications/networking/droopy/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/dropbox/cli.nix42
-rw-r--r--nixpkgs/pkgs/applications/networking/dropbox/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/networking/dyndns/cfdyndns/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/enhanced-ctorrent/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/errbot/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/esniper/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/esniper/find-ca-bundle.patch26
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/canto-curses/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/canto-daemon/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/feedreader/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/newsboat/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/rawdog/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/rss2email/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/rssguard/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/feedreaders/rsstail/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/firehol/default.nix108
-rw-r--r--nixpkgs/pkgs/applications/networking/firehol/iprange.nix18
-rw-r--r--nixpkgs/pkgs/applications/networking/flent/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/flent/http-getter.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/flexget/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/ftp/filezilla/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/ftp/taxi/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/gdrive/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/gmailieer/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/gns3/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/gns3/gui.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/gns3/server.nix77
-rw-r--r--nixpkgs/pkgs/applications/networking/google-drive-ocamlfuse/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/gopher/gopher/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/gopher/gopherclient/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/networking/ids/bro/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/ids/daq/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/ids/snort/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/ike/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/SkypeExport/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/amsn/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/baresip/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-discord/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-facebook/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-steam/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/plugins.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/blink/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/blink/pythonpath.patch49
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/centerim/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/coyim/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/ekiga/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/fractal/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/franz/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/freetalk/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/gajim/default.nix70
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/gitter/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/gtmess/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/hipchat/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/jackline/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/jitsi.patch27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/linphone/default.nix58
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/matrique/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix88
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mcabber/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile40
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock109
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/gtk/Gemfile3
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/image_file_cache/Gemfile1
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/photo_support/Gemfile5
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/uitranslator/Gemfile5
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix374
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop9
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/shell.nix18
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/mm/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/nheko/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/oysttyer/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/carbons/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/msn-pecan/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-mra/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-opensteamworks/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-osd/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-skypeweb/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-xmpp-receipts/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-discord/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-facebook/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-hangouts/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-lurch/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-matrix/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-plugin-pack/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-vk-plugin/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-xmpp-http-upload/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/sipe/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/tox-prpl/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/window-merge/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/add-search-path.patch20
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/default.nix81
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/pidgin-makefile.patch64
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/poezio/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pond/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pond/deps.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/profanity/default.nix76
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/packages-osx.patch11
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/undefined-macros.patch40
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/psi-plus/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/psi/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/qtox/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/rambox/bare.nix56
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/rambox/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/rambox/fetchNodeModules.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/rambox/isDev.patch14
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/bare.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/response.varfile13
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/ratox/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/ricochet/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/default.nix150
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/notestsapps.patch106
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/restbed.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-package.json15
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-yarndeps.nix1148
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix77
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-web.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/scudcloud/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/signal-cli/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix112
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/silc-client/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/conference.patch148
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix113
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/slack-term/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix115
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/spectral/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/stride/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/qt-5.11.patch10
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/scons.patch53
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/client.nix148
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/server.nix103
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix18
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/generic.nix148
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telegram/telegram-cli/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telegram/telegram-qml/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/idle/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/salut/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/tensor/default.nix56
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/torchat/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/toxic/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/turses/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/utox/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/vacuum/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/viber/default.nix104
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix53
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/wavebox/default.nix67
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix103
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/deps.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix100
-rwxr-xr-xnixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/update.sh7
-rw-r--r--nixpkgs/pkgs/applications/networking/insync/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/networking/ipfs-cluster/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/ipfs-migrator/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/ipfs-migrator/deps.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/ipfs-migrator/lru-repo-path-fix.patch13
-rw-r--r--nixpkgs/pkgs/applications/networking/ipfs/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/ipget/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/iptraf-ng/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/iptraf/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/bip/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/chatzilla/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/communi/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/epic5/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/glowing-bear/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/hexchat/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/ii/default.nix21
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/irssi/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/irssi/fish/default.nix32
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/irssi/otr/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/konversation/default.nix79
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/quassel/default.nix94
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/qweechat/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/sic/default.nix19
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/default.nix91
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/default.nix17
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/libpath.patch13
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-autosort/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/library-path.patch28
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/libpath.patch16
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/weechat/wrapper.nix80
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/wraith/configure.patch58
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/wraith/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/irc/wraith/dlopen.patch48
-rw-r--r--nixpkgs/pkgs/applications/networking/jmeter/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/jnetmap/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/linssid/0001-unbundled-qwt.patch43
-rw-r--r--nixpkgs/pkgs/applications/networking/linssid/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/afew/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/alpine/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/astroid/default.nix48
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/balsa/default.nix62
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix116
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/mime.patch28
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/imapfilter.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/inboxer/default.nix87
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/lumail/default.nix81
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/mailcheck-Makefile.patch22
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mailnag/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mailpile/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mblaze/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/msgviewer/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/mutt/default.nix96
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/neomutt/default.nix98
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notbit/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notmuch-addrlookup/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notmuch-bower/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notmuch/default.nix89
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notmuch/muchsync.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/notmuch/mutt.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/nylas-mail-bin/default.nix133
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/realpine/default.nix42
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/sup/.bundix/cache4
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/sup/Gemfile9
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/sup/Gemfile.lock41
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/sup/default.nix23
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/sup/gemset.nix126
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/sylpheed/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/default.nix179
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix585
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/default.nix198
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig.patch23
-rw-r--r--nixpkgs/pkgs/applications/networking/mailreaders/trojita/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/networking/modem-manager-gui/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/mpop/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/msmtp/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/msmtp/paths.patch96
-rw-r--r--nixpkgs/pkgs/applications/networking/mumble/default.nix165
-rw-r--r--nixpkgs/pkgs/applications/networking/mumble/mumble-jack-support.patch457
-rw-r--r--nixpkgs/pkgs/applications/networking/mumble/overlay.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/ndppd/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/netperf/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/newsreaders/liferea/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/newsreaders/pan/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/networking/newsreaders/quiterss/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/newsreaders/slrn/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/nextcloud-client/default.nix63
-rw-r--r--nixpkgs/pkgs/applications/networking/nload/default.nix40
-rw-r--r--nixpkgs/pkgs/applications/networking/nntp-proxy/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/offrss/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/omping/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/ostinato/default.nix68
-rw-r--r--nixpkgs/pkgs/applications/networking/ostinato/drone_ini.patch14
-rw-r--r--nixpkgs/pkgs/applications/networking/owamp/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/owncloud-client/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/deluge/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix65
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/firestr/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/firestr/return.patch13
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/freenet/default.nix79
-rwxr-xr-xnixpkgs/pkgs/applications/networking/p2p/freenet/freenetWrapper18
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/frostwire/default.nix94
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/gnunet/default.nix78
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/gnunet/git.nix92
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/ktorrent/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/mldonkey/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/ncdc/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/opentracker/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/qbittorrent/default.nix47
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/retroshare/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/soulseekqt/default.nix73
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/synapse-bt/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/tixati/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/torrential/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/transgui/default.nix75
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/transgui/r988-compile-fix.patch22
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix26
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/transmission-remote-gtk/default.nix36
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/transmission/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/tribler/default.nix81
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/twister/default.nix72
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/vuze/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/p2p/zeronet/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/ping/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/pjsip/default.nix35
-rw-r--r--nixpkgs/pkgs/applications/networking/protocol/default.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/protonmail-bridge/default.nix85
-rw-r--r--nixpkgs/pkgs/applications/networking/protonvpn-cli/default.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/ps2client/default.nix29
-rw-r--r--nixpkgs/pkgs/applications/networking/pyload/beautifulsoup.nix20
-rw-r--r--nixpkgs/pkgs/applications/networking/pyload/default.nix60
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix80
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/citrix-receiver/default.nix215
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/citrix-receiver/wrapper.nix19
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix74
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/freerdp/legacy.nix72
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/putty/default.nix55
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/remmina/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/ssvnc/default.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix57
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix105
-rw-r--r--nixpkgs/pkgs/applications/networking/resilio-sync/default.nix39
-rw-r--r--nixpkgs/pkgs/applications/networking/seafile-client/default.nix37
-rw-r--r--nixpkgs/pkgs/applications/networking/sieve-connect/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/sipcmd/default.nix34
-rw-r--r--nixpkgs/pkgs/applications/networking/siproxd/cheaders.patch14
-rw-r--r--nixpkgs/pkgs/applications/networking/siproxd/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/etherape/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/ettercap/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/kismet/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix124
-rw-r--r--nixpkgs/pkgs/applications/networking/sniffers/wireshark/wireshark-lookup-dumpcap-in-path.patch63
-rw-r--r--nixpkgs/pkgs/applications/networking/sniproxy/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/soapui/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/networking/soulseek/nicotine-plus/default.nix44
-rw-r--r--nixpkgs/pkgs/applications/networking/spideroak/default.nix59
-rw-r--r--nixpkgs/pkgs/applications/networking/ssb/patchwork-classic/default.nix106
-rw-r--r--nixpkgs/pkgs/applications/networking/super-productivity/default.nix105
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/acd_cli/default.nix41
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/backintime/common.nix46
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/backintime/qt4.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/casync/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/desync/default.nix27
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/desync/deps.nix312
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/lsyncd/default.nix43
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/rclone/browser.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/rclone/default.nix38
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/rsync/base.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/rsync/default.nix30
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/rsync/rrsync.nix33
-rw-r--r--nixpkgs/pkgs/applications/networking/sync/unison/default.nix45
-rw-r--r--nixpkgs/pkgs/applications/networking/syncplay/default.nix25
-rw-r--r--nixpkgs/pkgs/applications/networking/syncthing-gtk/default.nix64
-rw-r--r--nixpkgs/pkgs/applications/networking/syncthing-gtk/paths.patch22
-rw-r--r--nixpkgs/pkgs/applications/networking/syncthing/add-stcli-target.patch17
-rw-r--r--nixpkgs/pkgs/applications/networking/syncthing/default.nix107
-rw-r--r--nixpkgs/pkgs/applications/networking/syncthing/deps.nix480
-rw-r--r--nixpkgs/pkgs/applications/networking/tcpkali/default.nix22
-rw-r--r--nixpkgs/pkgs/applications/networking/testssl/default.nix52
-rw-r--r--nixpkgs/pkgs/applications/networking/transporter/default.nix71
-rw-r--r--nixpkgs/pkgs/applications/networking/tsung/default.nix50
-rw-r--r--nixpkgs/pkgs/applications/networking/umurmur/default.nix28
-rw-r--r--nixpkgs/pkgs/applications/networking/vnstat/default.nix31
-rw-r--r--nixpkgs/pkgs/applications/networking/weather/meteo/default.nix51
-rw-r--r--nixpkgs/pkgs/applications/networking/websocketd/default.nix24
-rw-r--r--nixpkgs/pkgs/applications/networking/websocketd/deps.nix12
-rw-r--r--nixpkgs/pkgs/applications/networking/znc/default.nix49
-rw-r--r--nixpkgs/pkgs/applications/networking/znc/modules.nix138
538 files changed, 40272 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/networking/apache-directory-studio/default.nix b/nixpkgs/pkgs/applications/networking/apache-directory-studio/default.nix
new file mode 100644
index 000000000000..05dee5b6154c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/apache-directory-studio/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchurl, xorg, jre, makeWrapper, makeDesktopItem }:
+
+let
+  rpath = stdenv.lib.makeLibraryPath (with xorg; [
+    libXtst
+  ]);
+
+  desktopItem = makeDesktopItem {
+    name = "apache-directory-studio";
+    exec = "ApacheDirectoryStudio";
+    icon = "apache-directory-studio";
+    comment = "Eclipse-based LDAP browser and directory client";
+    desktopName = "Apache Directory Studio";
+    genericName = "Apache Directory Studio";
+    categories = "Java;Network";
+  };
+
+in
+stdenv.mkDerivation rec {
+  name = "apache-directory-studio-${version}";
+  version = "2.0.0.v20170904-M13";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "mirror://apache/directory/studio/${version}/ApacheDirectoryStudio-${version}-linux.gtk.x86_64.tar.gz";
+        sha256 = "1jfnm6m0ijk31r30hhrxxnizk742dm317iny041p29v897rma7aq";
+      }
+    else if stdenv.hostPlatform.system == "i686-linux" then
+      fetchurl {
+        url = "mirror://apache/directory/studio/${version}/ApacheDirectoryStudio-${version}-linux.gtk.x86.tar.gz";
+        sha256 = "1bxmgram42qyhrqkgp5k8770f5mjjdd4c6xl4gj09smiycm1qa4n";
+      }
+    else throw "Unsupported system: ${stdenv.hostPlatform.system}";
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    dest="$out/libexec/ApacheDirectoryStudio"
+    mkdir -p "$dest"
+    cp -r . "$dest"
+
+    mkdir -p "$out/bin"
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        "$dest/ApacheDirectoryStudio"
+    makeWrapper "$dest/ApacheDirectoryStudio" \
+        "$out/bin/ApacheDirectoryStudio" \
+        --prefix PATH : "${jre}/bin" \
+        --prefix LD_LIBRARY_PATH : "${rpath}"
+    install -D icon.xpm "$out/share/pixmaps/apache-directory-studio.xpm"
+    install -D -t "$out/share/applications" ${desktopItem}/share/applications/*
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Eclipse-based LDAP browser and directory client";
+    homepage = "https://directory.apache.org/studio/";
+    license = licenses.asl20;
+    # Upstream supports macOS and Windows too.
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/bittorrentsync/1.4.x.nix b/nixpkgs/pkgs/applications/networking/bittorrentsync/1.4.x.nix
new file mode 100644
index 000000000000..9d57cdaaf20d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/bittorrentsync/1.4.x.nix
@@ -0,0 +1,9 @@
+{ stdenv, fetchurl, ... } @ args:
+
+import ./generic.nix (args // {
+  version = "1.4.111";
+  sha256s = {
+    "x86_64-linux" = "0bw3ds3ndcnkry5mpv645z2bfi5z387bh0f7b35blxq1yv93r83f";
+    "i686-linux"   = "1qwaj7l7nsd4afx7ksb4b1c22mki9qa40803v9x1a8bhbdfhkczk";
+  };
+})
diff --git a/nixpkgs/pkgs/applications/networking/bittorrentsync/2.0.x.nix b/nixpkgs/pkgs/applications/networking/bittorrentsync/2.0.x.nix
new file mode 100644
index 000000000000..d2db3eec26e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/bittorrentsync/2.0.x.nix
@@ -0,0 +1,9 @@
+{ stdenv, fetchurl, ... } @ args:
+
+import ./generic.nix (args // {
+  version = "2.3.8";
+  sha256s = {
+    "x86_64-linux" = "02n5s561cz3mprg682mrbmh3qai42dh64jgi05rqy9s6wgbn66ly";
+    "i686-linux"   = "118qrnxc7gvm30rsz0xfx6dlxmrr0dk5ajrvszhy06ww7xvqhzji";
+  };
+})
diff --git a/nixpkgs/pkgs/applications/networking/bittorrentsync/generic.nix b/nixpkgs/pkgs/applications/networking/bittorrentsync/generic.nix
new file mode 100644
index 000000000000..1075aea8db3a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/bittorrentsync/generic.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, version, sha256s, ... }:
+
+let
+  arch = {
+    "x86_64-linux" = "x64";
+    "i686-linux" = "i386";
+  }.${stdenv.hostPlatform.system} or throwSystem;
+  libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.libc ];
+  throwSystem = throw "Unsupported system: ${stdenv.hostPlatform.system}";
+in
+
+stdenv.mkDerivation rec {
+  name = "btsync-${version}";
+  inherit version;
+
+  src = fetchurl {
+    # annoyingly, downloads for 1.4 and 2.3 do not follow the same URL layout; this is
+    # a simple work-around, in place of overriding the url in the caller.
+    urls = [
+      "https://download-cdn.getsync.com/${version}/linux-${arch}/BitTorrent-Sync_${arch}.tar.gz"
+      "http://syncapp.bittorrent.com/${version}/btsync_${arch}-${version}.tar.gz"
+    ];
+    sha256 = sha256s.${stdenv.hostPlatform.system} or throwSystem;
+  };
+
+  dontStrip = true; # Don't strip, otherwise patching the rpaths breaks
+  sourceRoot = ".";
+
+  installPhase = ''
+    install -D btsync "$out/bin/btsync"
+    patchelf --interpreter "$(< $NIX_CC/nix-support/dynamic-linker)" --set-rpath ${libPath} "$out/bin/btsync"
+  '';
+
+  meta = {
+    description = "Automatically sync files via secure, distributed technology";
+    homepage    = https://www.getsync.com/;
+    license     = stdenv.lib.licenses.unfreeRedistributable;
+    platforms   = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ domenkozar thoughtpolice cwoac ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/brig/default.nix b/nixpkgs/pkgs/applications/networking/brig/default.nix
new file mode 100644
index 000000000000..b86cb7d3dd92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/brig/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "brig-${version}";
+  version = "0.3.0";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/sahib/brig";
+  subPackages = ["."];
+
+  src = fetchFromGitHub {
+    owner = "sahib";
+    repo = "brig";
+    inherit rev;
+    sha256 = "01hpb6cvq8cw21ka74jllggkv5pavc0sbl1207x32gzxslw3gsvy";
+  };
+
+  meta = with stdenv.lib; {
+    description = "File synchronization on top of ipfs with git like interface and FUSE filesystem";
+    homepage = https://github.com/sahib/brig;
+    license = licenses.agpl3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ offline ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/arora/default.nix b/nixpkgs/pkgs/applications/networking/browsers/arora/default.nix
new file mode 100644
index 000000000000..f9d5f01be201
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/arora/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, qt4, qmake4Hook }:
+
+stdenv.mkDerivation rec {
+  name = "arora-${version}";
+  version = "0.11.0";
+
+  src = fetchFromGitHub {
+    owner = "Arora";
+    repo = "arora";
+    rev = version;
+    sha256 = "0wmivgx3mw51rghi6q8fgivpkqc98z2mqmllf7c98ln0wd8rkf3c";
+  };
+
+  buildInputs = [ qt4 ];
+  nativeBuildInputs = [ qmake4Hook ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    platforms = qt4.meta.platforms;
+    maintainers = [ maintainers.phreedom ];
+    description = "A cross-platform Qt4 Webkit browser";
+    homepage = https://github.com/Arora/arora;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix b/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix
new file mode 100644
index 000000000000..de2159849b75
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/brave/default.nix
@@ -0,0 +1,150 @@
+{ stdenv, lib, fetchurl
+, dpkg
+, alsaLib
+, at-spi2-atk
+, at-spi2-core
+, atk
+, cairo
+, cups
+, dbus
+, expat
+, fontconfig
+, freetype
+, gdk_pixbuf
+, glib
+, gnome2
+, gnome3
+, gtk3
+, libuuid
+, libX11
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXrandr
+, libXrender
+, libXScrnSaver
+, libXtst
+, nspr
+, nss
+, pango
+, udev
+, xorg
+, zlib
+, xdg_utils
+, wrapGAppsHook
+}:
+
+let rpath = lib.makeLibraryPath [
+    alsaLib
+    at-spi2-atk
+    at-spi2-core
+    atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk_pixbuf
+    glib
+    gnome2.GConf
+    gtk3
+    libX11
+    libXScrnSaver
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXtst
+    libuuid
+    nspr
+    nss
+    pango
+    udev
+    xdg_utils
+    xorg.libxcb
+    zlib
+];
+
+
+in stdenv.mkDerivation rec {
+    pname = "brave";
+    version = "0.61.50";
+
+    src = fetchurl {
+        url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb";
+        sha256 = "1lbajxnxqkd422rckfjm65pwwzl66v7anq4jrzxi29d5x7abl3c1";
+    };
+
+    dontConfigure = true;
+    dontBuild = true;
+    dontPatchELF = true;
+
+    nativeBuildInputs = [ dpkg wrapGAppsHook ];
+
+    buildInputs = [ glib gnome3.gsettings_desktop_schemas gnome3.adwaita-icon-theme ];
+
+    unpackPhase = "dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner";
+
+    installPhase = ''
+        mkdir -p $out $out/bin
+
+        cp -R usr/share $out
+        cp -R opt/ $out/opt
+
+        export BINARYWRAPPER=$out/opt/brave.com/brave/brave-browser
+
+        # Fix path to bash in $BINARYWRAPPER
+        substituteInPlace $BINARYWRAPPER \
+            --replace /bin/bash ${stdenv.shell}
+
+        ln -sf $BINARYWRAPPER $out/bin/brave
+
+        patchelf \
+            --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+            --set-rpath "${rpath}" $out/opt/brave.com/brave/brave
+
+        # Fix paths
+        substituteInPlace $out/share/applications/brave-browser.desktop \
+            --replace /usr/bin/brave-browser $out/bin/brave
+        substituteInPlace $out/share/gnome-control-center/default-apps/brave-browser.xml \
+            --replace /opt/brave.com $out/opt/brave.com
+        substituteInPlace $out/share/menu/brave-browser.menu \
+            --replace /opt/brave.com $out/opt/brave.com
+        substituteInPlace $out/opt/brave.com/brave/default-app-block \
+            --replace /opt/brave.com $out/opt/brave.com
+
+        # Correct icons location
+        icon_sizes=("16" "22" "24" "32" "48" "64" "128" "256")
+
+        for icon in ''${icon_sizes[*]}
+        do
+            mkdir -p $out/share/icons/hicolor/$icon\x$icon/apps
+            ln -s $out/opt/brave.com/brave/product_logo_$icon.png $out/share/icons/hicolor/$icon\x$icon/apps/brave-browser.png
+        done
+
+        # Replace xdg-settings and xdg-mime
+        ln -sf ${xdg_utils}/bin/xdg-settings $out/opt/brave.com/brave/xdg-settings
+        ln -sf ${xdg_utils}/bin/xdg-mime $out/opt/brave.com/brave/xdg-mime
+    '';
+
+    meta = with stdenv.lib; {
+        homepage = "https://brave.com/";
+        description = "Privacy-oriented browser for Desktop and Laptop computers";
+        longDescription = ''
+          Brave browser blocks the ads and trackers that slow you down,
+          chew up your bandwidth, and invade your privacy. Brave lets you
+          contribute to your favorite creators automatically.
+        '';
+        license = licenses.mpl20;
+        maintainers = [ maintainers.uskudnik ];
+        platforms = [ "x86_64-linux" ];
+    };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/browsh/default.nix b/nixpkgs/pkgs/applications/networking/browsers/browsh/default.nix
new file mode 100644
index 000000000000..a910f1d14bdf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/browsh/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, buildGoPackage, fetchurl, fetchFromGitHub, go-bindata }:
+
+let
+  version = "1.4.13";
+
+  # TODO: must build the extension instead of downloading it. But since it's
+  # literally an asset that is indifferent regardless of the platform, this
+  # might be just enough.
+  webext = fetchurl {
+    url = "https://github.com/browsh-org/browsh/releases/download/v${version}/browsh-${version}-an.fx.xpi";
+    sha256 = "11477z7mva8lwfxsrfxckvgqkxrjhc80czra8cqhpakf0fih1a4g";
+  };
+
+in buildGoPackage rec {
+  inherit version;
+
+  name = "browsh-${version}";
+
+  goPackagePath = "browsh";
+
+  src = fetchFromGitHub {
+    owner = "browsh-org";
+    repo = "browsh";
+    rev = "v${version}";
+    sha256 = "0lvb20zziknlbgy509ccpvlc21sqjc53xar26blmb6sdl6yqkj0w";
+  };
+
+  buildInputs = [ go-bindata ];
+
+  # embed the web extension in a go file and place it where it's supposed to
+  # be. See
+  # https://github.com/browsh-org/browsh/blob/9abc3aaa3f575ca6ec9a483408d9fdfcf76300fa/interfacer/contrib/xpi2bin.sh
+  preBuild = ''
+    xpiprefix="$(mktemp -d)"
+    cp "${webext}" "$xpiprefix/browsh.xpi"
+    go-bindata \
+      -prefix "$xpiprefix" \
+      -pkg browsh \
+      -o "$NIX_BUILD_TOP/go/src/${goPackagePath}/interfacer/src/browsh/webextension.go" \
+      "$xpiprefix/browsh.xpi"
+
+    sed \
+      -e 's:Asset("/browsh.xpi"):Asset("browsh.xpi"):g' \
+      -i "$NIX_BUILD_TOP/go/src/${goPackagePath}/interfacer/src/browsh/firefox.go"
+  '';
+
+  postBuild = ''
+    mv "$NIX_BUILD_TOP/go/bin/src" "$NIX_BUILD_TOP/go/bin/browsh"
+  '';
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "A fully-modern text-based browser, rendering to TTY and browsers";
+    homepage = https://www.brow.sh/;
+    maintainers = [ maintainers.kalbasit ];
+    license = stdenv.lib.licenses.lgpl21;
+    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/browsh/deps.nix b/nixpkgs/pkgs/applications/networking/browsers/browsh/deps.nix
new file mode 100644
index 000000000000..e0eb6600c9be
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/browsh/deps.nix
@@ -0,0 +1,272 @@
+[
+  {
+    goPackagePath  = "github.com/NYTimes/gziphandler";
+    fetch = {
+      type = "git";
+      url = "https://github.com/NYTimes/gziphandler";
+      rev =  "5032c8878b9dd46cfe8c625c0d9b9f258a560ee8";
+      sha256 = "1avn8xb78xmmc61fjycpc81yrkfi42fna8zgzdqba6v7g8gq8a3x";
+    };
+  }
+  {
+    goPackagePath  = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev =  "8991bc29aa16c548c550c7ff78260e27b9ab7c73";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+  {
+    goPackagePath  = "github.com/hpcloud/tail";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hpcloud/tail";
+      rev =  "a1dbeea552b7c8df4b542c66073e393de198a800";
+      sha256 = "0nssmn8j0yavs8099gwb69qpd1k9yd2z28bii6i4y61v0grb6bc2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev =  "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gdamore/encoding";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gdamore/encoding";
+      rev =  "b23993cbb6353f0e6aa98d0ee318a34728f628b9";
+      sha256 = "0d7irqpx2fa9vkxgkhf04yiwazsm10fxh0yk86x5crflhph5fv8a";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gdamore/tcell";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gdamore/tcell";
+      rev =  "de7e78efa4a71b3f36c7154989c529dbdf9ae623";
+      sha256 = "1ly3gqkziw01cb7h64k0wc4myzfcsr9hl7xznxd8k2yqzqvmhljz";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-errors/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-errors/errors";
+      rev =  "a6af135bd4e28680facf08a3d206b454abc877a4";
+      sha256 = "0rznpknk19rxkr7li6dqs52c26pjazp69lh493l4ny4sxn5922lp";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gorilla/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/websocket";
+      rev =  "5ed622c449da6d44c3c8329331ff47a9e5844f71";
+      sha256 = "1yhcwraijdk6lx7f6m9p6i1b3zfh2hq80l1nfpnckfn10gh72aw7";
+    };
+  }
+  {
+    goPackagePath  = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev =  "ef8a98b0bbce4a65b5aa4c368430a80ddc533168";
+      sha256 = "1qalfsc31fra7hcw2lc3s20aj7al62fq3j5fn5kga3mg99b82nyr";
+    };
+  }
+  {
+    goPackagePath  = "github.com/lucasb-eyer/go-colorful";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lucasb-eyer/go-colorful";
+      rev =  "c7842319cf3ac2eff253e8b3ebe15fcc56b6414a";
+      sha256 = "00v2x6qchhi6vv09w29kcyr9i0kq4n4daaj3vk1c4nfj2z7xx5hc";
+    };
+  }
+  {
+    goPackagePath  = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev =  "c2353362d570a7bfa228149c62842019201cfb71";
+      sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev =  "ce7b0b5c7b45a81508558cd1dba6bb1e4ddb51bb";
+      sha256 = "0lc39b6xrxv7h3v3y1kgz49cgi5qxwlygs715aam6ba35m48yi7g";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev =  "f15292f7a699fcc1a38a80977f80a046874ba8ac";
+      sha256 = "0zm3nhdvmj3f8q0vg2sjfw1sm3pwsw0ggz501awz95w99664a8al";
+    };
+  }
+  {
+    goPackagePath  = "github.com/onsi/ginkgo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/ginkgo";
+      rev =  "3774a09d95489ccaa16032e0770d08ea77ba6184";
+      sha256 = "0x0gc89vgq38xhgmi2h22bhr73cf2gmk42g89nz89k8dgg9hhr25";
+    };
+  }
+  {
+    goPackagePath  = "github.com/onsi/gomega";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/gomega";
+      rev =  "b6ea1ea48f981d0f615a154a45eabb9dd466556d";
+      sha256 = "14179j7pj1h2vx60i68x2m6650ldji4xhanhc702i8a8iy7b49ja";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev =  "c2dbbc24a97911339e01bda0b8cabdbd8f13b602";
+      sha256 = "0v1dsqnk5zmn6ir8jgxijx14s47jvijlqfz3aq435snfrgybd5rz";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev =  "816c9085562cd7ee03e7f8188a1cfd942858cded";
+      sha256 = "1ws5crb7c70wdicavl6qr4g03nn6m92zd6wwp9n2ygz5c8rmxh8k";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev =  "792786c7400a136282c1664665ae0a8db921c6c2";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath  = "github.com/shibukawa/configdir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/shibukawa/configdir";
+      rev =  "e180dbdc8da04c4fa04272e875ce64949f38bd3e";
+      sha256 = "0vbma9jkwh0ifz8dk2ssgmy7aiaify63lpa0lah7i4dkkxr94c9z";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev =  "787d034dfe70e44075ccc060d346146ef53270ad";
+      sha256 = "0138rjiacl71h7kvhzinviwvy6qa2m6rflpv9lgqv15hnjvhwvg1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev =  "8965335b8c7107321228e3e3702cab9832751bac";
+      sha256 = "177bk7lq40jbgv9p9r80aydpaccfk8ja3a7jjhfwiwk9r1pa4rr2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev =  "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394";
+      sha256 = "132p84i20b9s5r6fs597lsa6648vd415ch7c0d018vm8smzqpd0h";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev =  "3ebe029320b2676d667ae88da602a5f854788a8a";
+      sha256 = "11yxs0wqy70wj106fkz8r923yg4ncnc2mbw33v48zmlg4a1rasgp";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev =  "d493c32b69b8c6f2377bf30bc4d70267ffbc0793";
+      sha256 = "1jq46790rkjn6c1887wz98dqjk792ij6wnrifzk1maglmfb061hh";
+    };
+  }
+  {
+    goPackagePath  = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev =  "f35b8ab0b5a2cef36673838d662e249dd9c94686";
+      sha256 = "0dlszlshlxbmmfxj5hlwgv3r22x0y1af45gn1vd198nvvs3pnvfs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/ulule/limiter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ulule/limiter";
+      rev =  "af07f8759cbc68c744a15ffbfdabf35f7aff5e3b";
+      sha256 = "1c68vz9r0442lkj206l6k03nssxx3ys8ddg7d2p2brdanfbprzrq";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev =  "a0f8a16cb08c06df97cbdf9c47f4731ba548c33c";
+      sha256 = "1pnvrhi2minkn9mfa9p70b5jnixx8il5yqp08ad1w7kl34c21ma2";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev =  "bd9dbc187b6e1dacfdd2722a87e83093c2d7bd6e";
+      sha256 = "0zj8s3q2fznmap1nfr8pv4hz8xqixmkyhr6slq4baf8rvcb4mvbj";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev =  "0605a8320aceb4207a5fb3521281e17ec2075476";
+      sha256 = "1pak7q9ivwxh5bnjk00pkrs9ri9vmbyccvza56fl6138w397h49j";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-yaml/yaml";
+      rev =  "5420a8b6744d3b0345ab293f6fcba19c978f1183";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix
new file mode 100644
index 000000000000..faa5bc121cb8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix
@@ -0,0 +1,56 @@
+{ stdenv, mkChromiumDerivation, channel }:
+
+with stdenv.lib;
+
+mkChromiumDerivation (base: rec {
+  name = "chromium-browser";
+  packageName = "chromium";
+  buildTargets = [ "mksnapshot" "chrome_sandbox" "chrome" ];
+
+  outputs = ["out" "sandbox"];
+
+  sandboxExecutableName = "__chromium-suid-sandbox";
+
+  installPhase = ''
+    mkdir -p "$libExecPath"
+    cp -v "$buildPath/"*.pak "$buildPath/"*.bin "$libExecPath/"
+    cp -v "$buildPath/icudtl.dat" "$libExecPath/"
+    cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/"
+    cp -v "$buildPath/chrome" "$libExecPath/$packageName"
+
+    if [ -e "$buildPath/libwidevinecdmadapter.so" ]; then
+      cp -v "$buildPath/libwidevinecdmadapter.so" \
+            "$libExecPath/libwidevinecdmadapter.so"
+    fi
+
+    mkdir -p "$sandbox/bin"
+    cp -v "$buildPath/chrome_sandbox" "$sandbox/bin/${sandboxExecutableName}"
+
+    mkdir -vp "$out/share/man/man1"
+    cp -v "$buildPath/chrome.1" "$out/share/man/man1/$packageName.1"
+
+    for icon_file in chrome/app/theme/chromium/product_logo_*[0-9].png; do
+      num_and_suffix="''${icon_file##*logo_}"
+      icon_size="''${num_and_suffix%.*}"
+      expr "$icon_size" : "^[0-9][0-9]*$" || continue
+      logo_output_prefix="$out/share/icons/hicolor"
+      logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps"
+      mkdir -vp "$logo_output_path"
+      cp -v "$icon_file" "$logo_output_path/$packageName.png"
+    done
+  '';
+
+  passthru = { inherit sandboxExecutableName; };
+
+  requiredSystemFeatures = [ "big-parallel" ];
+
+  meta = {
+    description = "An open source web browser from Google";
+    homepage = http://www.chromium.org/;
+    maintainers = with maintainers; [ bendlas ];
+    license = licenses.bsd3;
+    platforms = platforms.linux;
+    hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else [];
+    timeout = 172800; # 48 hours
+  };
+})
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix
new file mode 100644
index 000000000000..49426a8af3b2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix
@@ -0,0 +1,316 @@
+{ stdenv, llvmPackages, gn, ninja, which, nodejs, fetchurl, fetchpatch, gnutar
+
+# default dependencies
+, bzip2, flac, speex, libopus
+, libevent, expat, libjpeg, snappy
+, libpng, libcap
+, xdg_utils, yasm, minizip, libwebp
+, libusb1, pciutils, nss, re2, zlib
+
+, python2Packages, perl, pkgconfig
+, nspr, systemd, kerberos
+, utillinux, alsaLib
+, bison, gperf
+, glib, gtk3, dbus-glib
+, glibc
+, libXScrnSaver, libXcursor, libXtst, libGLU_combined
+, protobuf, speechd, libXdamage, cups
+, ffmpeg, libxslt, libxml2, at-spi2-core
+, jdk
+
+# optional dependencies
+, libgcrypt ? null # gnomeSupport || cupsSupport
+, libva ? null # useVaapi
+
+# package customization
+, enableNaCl ? false
+, enableWideVine ? false
+, useVaapi ? false
+, gnomeSupport ? false, gnome ? null
+, gnomeKeyringSupport ? false, libgnome-keyring3 ? null
+, proprietaryCodecs ? true
+, cupsSupport ? true
+, pulseSupport ? false, libpulseaudio ? null
+
+, upstream-info
+}:
+
+buildFun:
+
+with stdenv.lib;
+
+# see http://www.linuxfromscratch.org/blfs/view/cvs/xsoft/chromium.html
+
+let
+  # The additional attributes for creating derivations based on the chromium
+  # source tree.
+  extraAttrs = buildFun base;
+
+  githubPatch = commit: sha256: fetchpatch {
+    url = "https://github.com/chromium/chromium/commit/${commit}.patch";
+    inherit sha256;
+  };
+
+  mkGnFlags =
+    let
+      # Serialize Nix types into GN types according to this document:
+      # https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/language.md
+      mkGnString = value: "\"${escape ["\"" "$" "\\"] value}\"";
+      sanitize = value:
+        if value == true then "true"
+        else if value == false then "false"
+        else if isList value then "[${concatMapStringsSep ", " sanitize value}]"
+        else if isInt value then toString value
+        else if isString value then mkGnString value
+        else throw "Unsupported type for GN value `${value}'.";
+      toFlag = key: value: "${key}=${sanitize value}";
+    in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs));
+
+  gnSystemLibraries = [
+    "flac" "libwebp" "libxslt" "yasm" "opus" "snappy" "libpng" "zlib"
+    # "libjpeg" # fails with multiple undefined references to chromium_jpeg_*
+    # "re2" # fails with linker errors
+    # "ffmpeg" # https://crbug.com/731766
+    # "harfbuzz-ng" # in versions over 63 harfbuzz and freetype are being built together
+                    # so we can't build with one from system and other from source
+  ];
+
+  opusWithCustomModes = libopus.override {
+    withCustomModes = true;
+  };
+
+  defaultDependencies = [
+    bzip2 flac speex opusWithCustomModes
+    libevent expat libjpeg snappy
+    libpng libcap
+    xdg_utils yasm minizip libwebp
+    libusb1 re2 zlib
+    ffmpeg libxslt libxml2
+    # harfbuzz # in versions over 63 harfbuzz and freetype are being built together
+               # so we can't build with one from system and other from source
+  ];
+
+  # build paths and release info
+  packageName = extraAttrs.packageName or extraAttrs.name;
+  buildType = "Release";
+  buildPath = "out/${buildType}";
+  libExecPath = "$out/libexec/${packageName}";
+
+  versionRange = min-version: upto-version:
+    let inherit (upstream-info) version;
+        result = versionAtLeast version min-version && versionOlder version upto-version;
+        stable-version = (import ./upstream-info.nix).stable.version;
+    in if versionAtLeast stable-version upto-version
+       then warn "chromium: stable version ${stable-version} is newer than a patchset bounded at ${upto-version}. You can safely delete it."
+            result
+       else result;
+
+  base = rec {
+    name = "${packageName}-unwrapped-${version}";
+    inherit (upstream-info) version;
+    inherit packageName buildType buildPath;
+
+    src = upstream-info.main;
+
+    nativeBuildInputs = [
+      ninja which python2Packages.python perl pkgconfig
+      python2Packages.ply python2Packages.jinja2 nodejs
+      gnutar
+    ];
+
+    buildInputs = defaultDependencies ++ [
+      nspr nss systemd
+      utillinux alsaLib
+      bison gperf kerberos
+      glib gtk3 dbus-glib
+      libXScrnSaver libXcursor libXtst libGLU_combined
+      pciutils protobuf speechd libXdamage at-spi2-core
+    ] ++ optional gnomeKeyringSupport libgnome-keyring3
+      ++ optionals gnomeSupport [ gnome.GConf libgcrypt ]
+      ++ optionals cupsSupport [ libgcrypt cups ]
+      ++ optional useVaapi libva
+      ++ optional pulseSupport libpulseaudio
+      ++ optional (versionAtLeast version "72") jdk.jre;
+
+    patches = optional enableWideVine ./patches/widevine.patch ++ [
+      ./patches/nix_plugin_paths_68.patch
+      ./patches/remove-webp-include-69.patch
+      ./patches/jumbo-sorted.patch
+      ./patches/no-build-timestamps.patch
+
+      # Unfortunately, chromium regularly breaks on major updates and
+      # then needs various patches backported in order to be compiled with GCC.
+      # Good sources for such patches and other hints:
+      # - https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/
+      # - https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/chromium
+      # - https://github.com/chromium/chromium/search?q=GCC&s=committer-date&type=Commits
+      #
+      # ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" )
+    ] ++ optionals (useVaapi) [
+      # source: https://aur.archlinux.org/cgit/aur.git/plain/chromium-vaapi.patch?h=chromium-vaapi
+      ./patches/chromium-vaapi.patch
+    ] ++ optionals (!stdenv.cc.isClang && (versionRange "71" "72")) [
+      ( githubPatch "65be571f6ac2f7942b4df9e50b24da517f829eec" "1sqv0aba0mpdi4x4f21zdkxz2cf8ji55ffgbfcr88c5gcg0qn2jh" )
+    ] ++ optional stdenv.isAarch64
+           (if (versionOlder version "71") then
+              fetchpatch {
+                url       = https://raw.githubusercontent.com/OSSystems/meta-browser/e4a667deaaf9a26a3a1aeb355770d1f29da549ad/recipes-browser/chromium/files/aarch64-skia-build-fix.patch;
+                sha256    = "0dkchqair8cy2f5a5p5vi24r9b4d28pgn2bfvm1568lypbjw6iab";
+              }
+            else
+              fetchpatch {
+                url       = https://raw.githubusercontent.com/OSSystems/meta-browser/e4a667deaaf9a26a3a1aeb355770d1f29da549ad/recipes-browser/chromium/files/aarch64-skia-build-fix.patch;
+                postFetch = "substituteInPlace $out --replace __aarch64__ SK_CPU_ARM64";
+                sha256    = "018fbdzyw9rvia8m0qkk5gv8q8gl7x34rrjbn7mi1fgxdsayn22s";
+              }
+            );
+
+    postPatch = ''
+      # We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX
+      substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \
+        --replace \
+          'return sandbox_binary;' \
+          'return base::FilePath(GetDevelSandboxPath());'
+
+      substituteInPlace services/audio/audio_sandbox_hook_linux.cc \
+        --replace \
+          '/usr/share/alsa/' \
+          '${alsaLib}/share/alsa/' \
+        --replace \
+          '/usr/lib/x86_64-linux-gnu/gconv/' \
+          '${glibc}/lib/gconv/' \
+        --replace \
+          '/usr/share/locale/' \
+          '${glibc}/share/locale/'
+
+      sed -i -e 's@"\(#!\)\?.*xdg-@"\1${xdg_utils}/bin/xdg-@' \
+        chrome/browser/shell_integration_linux.cc
+
+      sed -i -e '/lib_loader.*Load/s!"\(libudev\.so\)!"${systemd.lib}/lib/\1!' \
+        device/udev_linux/udev?_loader.cc
+
+      sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \
+        gpu/config/gpu_info_collector_linux.cc
+
+      sed -i -re 's/([^:])\<(isnan *\()/\1std::\2/g' \
+        chrome/browser/ui/webui/engagement/site_engagement_ui.cc
+
+      sed -i -e '/#include/ {
+        i #include <algorithm>
+        :l; n; bl
+      }' gpu/config/gpu_control_list.cc
+
+      # Allow to put extensions into the system-path.
+      sed -i -e 's,/usr,/run/current-system/sw,' chrome/common/chrome_paths.cc
+
+      patchShebangs .
+      # use our own nodejs
+      mkdir -p third_party/node/linux/node-linux-x64/bin
+      ln -s $(which node) third_party/node/linux/node-linux-x64/bin/node
+
+      # remove unused third-party
+      # in third_party/crashpad third_party/zlib contains just a header-adapter
+      for lib in ${toString gnSystemLibraries}; do
+        find -type f -path "*third_party/$lib/*"     \
+            \! -path "*third_party/crashpad/crashpad/third_party/zlib/*"  \
+            \! -path "*third_party/$lib/chromium/*"  \
+            \! -path "*third_party/$lib/google/*"    \
+            \! -path "*base/third_party/icu/*"       \
+            \! -path "*base/third_party/libevent/*"  \
+            \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \
+            -delete
+      done
+    '' + optionalString stdenv.isAarch64 ''
+      substituteInPlace build/toolchain/linux/BUILD.gn \
+        --replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""'
+    '' + optionalString stdenv.cc.isClang ''
+      mkdir -p third_party/llvm-build/Release+Asserts/bin
+      ln -s ${stdenv.cc}/bin/clang              third_party/llvm-build/Release+Asserts/bin/clang
+      ln -s ${stdenv.cc}/bin/clang++            third_party/llvm-build/Release+Asserts/bin/clang++
+      ln -s ${llvmPackages.llvm}/bin/llvm-ar    third_party/llvm-build/Release+Asserts/bin/llvm-ar
+    '';
+
+    gnFlags = mkGnFlags ({
+      linux_use_bundled_binutils = false;
+      use_lld = false;
+      use_gold = true;
+      gold_path = "${stdenv.cc}/bin";
+      is_debug = false;
+      # at least 2X compilation speedup
+      use_jumbo_build = true;
+
+      proprietary_codecs = false;
+      use_sysroot = false;
+      use_gnome_keyring = gnomeKeyringSupport;
+      use_gio = gnomeSupport;
+      enable_nacl = enableNaCl;
+      enable_widevine = enableWideVine;
+      use_cups = cupsSupport;
+
+      treat_warnings_as_errors = false;
+      is_clang = stdenv.cc.isClang;
+      clang_use_chrome_plugins = false;
+      remove_webcore_debug_symbols = true;
+      enable_swiftshader = false;
+      fieldtrial_testing_like_official_build = true;
+
+      # Google API keys, see:
+      #   http://www.chromium.org/developers/how-tos/api-keys
+      # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
+      # please get your own set of keys.
+      google_api_key = "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI";
+      google_default_client_id = "404761575300.apps.googleusercontent.com";
+      google_default_client_secret = "9rIFQjfnkykEmqb6FfjJQD1D";
+    } // optionalAttrs proprietaryCodecs {
+      # enable support for the H.264 codec
+      proprietary_codecs = true;
+      enable_hangout_services_extension = true;
+      ffmpeg_branding = "Chrome";
+    } // optionalAttrs useVaapi {
+      use_vaapi = true;
+    } // optionalAttrs pulseSupport {
+      use_pulseaudio = true;
+      link_pulseaudio = true;
+    } // (extraAttrs.gnFlags or {}));
+
+    configurePhase = ''
+      runHook preConfigure
+
+      # This is to ensure expansion of $out.
+      libExecPath="${libExecPath}"
+      python build/linux/unbundle/replace_gn_files.py \
+        --system-libraries ${toString gnSystemLibraries}
+      ${gn}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt
+
+      # Fail if `gn gen` contains a WARNING.
+      grep -o WARNING gn-gen-outputs.txt && echo "Found gn WARNING, exiting nix build" && exit 1
+
+      runHook postConfigure
+    '';
+
+    buildPhase = let
+      # Build paralelism: on Hydra the build was frequently running into memory
+      # exhaustion, and even other users might be running into similar issues.
+      # -j is halved to avoid memory problems, and -l is slightly increased
+      # so that the build gets slight preference before others
+      # (it will often be on "critical path" and at risk of timing out)
+      buildCommand = target: ''
+        ninja -C "${buildPath}"  \
+          -j$(( ($NIX_BUILD_CORES+1) / 2 )) -l$(( $NIX_BUILD_CORES+1 )) \
+          "${target}"
+        (
+          source chrome/installer/linux/common/installer.include
+          PACKAGE=$packageName
+          MENUNAME="Chromium"
+          process_template chrome/app/resources/manpage.1.in "${buildPath}/chrome.1"
+        )
+      '';
+      targets = extraAttrs.buildTargets or [];
+      commands = map buildCommand targets;
+    in concatStringsSep "\n" commands;
+  };
+
+# Remove some extraAttrs we supplied to the base attributes already.
+in stdenv.mkDerivation (base // removeAttrs extraAttrs [
+  "name" "gnFlags" "buildTargets"
+])
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix
new file mode 100644
index 000000000000..68aee1f98d76
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix
@@ -0,0 +1,154 @@
+{ newScope, config, stdenv, llvmPackages, gcc8Stdenv, llvmPackages_7
+, makeWrapper, makeDesktopItem, ed
+, glib, gtk3, gnome3, gsettings-desktop-schemas
+, libva ? null
+
+# package customization
+, channel ? "stable"
+, enableNaCl ? false
+, gnomeSupport ? false, gnome ? null
+, gnomeKeyringSupport ? false
+, proprietaryCodecs ? true
+, enablePepperFlash ? false
+, enableWideVine ? false
+, useVaapi ? false # test video on radeon, before enabling this
+, cupsSupport ? true
+, pulseSupport ? config.pulseaudio or stdenv.isLinux
+, commandLineArgs ? ""
+}:
+
+let
+  stdenv_ = if stdenv.isAarch64 then gcc8Stdenv else llvmPackages_7.stdenv;
+  llvmPackages_ = if stdenv.isAarch64 then llvmPackages else llvmPackages_7;
+in let
+  stdenv = stdenv_;
+  llvmPackages = llvmPackages_;
+
+  callPackage = newScope chromium;
+
+  chromium = {
+    inherit stdenv llvmPackages;
+
+    upstream-info = (callPackage ./update.nix {}).getChannel channel;
+
+    mkChromiumDerivation = callPackage ./common.nix {
+      inherit enableNaCl gnomeSupport gnome
+              gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport
+              useVaapi
+              enableWideVine;
+    };
+
+    browser = callPackage ./browser.nix { inherit channel; };
+
+    plugins = callPackage ./plugins.nix {
+      inherit enablePepperFlash enableWideVine;
+    };
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "chromium-browser";
+    exec = "chromium %U";
+    icon = "chromium";
+    comment = "An open source web browser from Google";
+    desktopName = "Chromium";
+    genericName = "Web browser";
+    mimeType = stdenv.lib.concatStringsSep ";" [
+      "text/html"
+      "text/xml"
+      "application/xhtml+xml"
+      "x-scheme-handler/http"
+      "x-scheme-handler/https"
+      "x-scheme-handler/ftp"
+      "x-scheme-handler/mailto"
+      "x-scheme-handler/webcal"
+      "x-scheme-handler/about"
+      "x-scheme-handler/unknown"
+    ];
+    categories = "Network;WebBrowser";
+    extraEntries = ''
+      StartupWMClass=chromium-browser
+    '';
+  };
+
+  suffix = if channel != "stable" then "-" + channel else "";
+
+  sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName;
+
+  version = chromium.browser.version;
+
+in stdenv.mkDerivation {
+  name = "chromium${suffix}-${version}";
+  inherit version;
+
+  buildInputs = [
+    makeWrapper ed
+
+    # needed for GSETTINGS_SCHEMAS_PATH
+    gsettings-desktop-schemas glib gtk3
+
+    # needed for XDG_ICON_DIRS
+    gnome3.adwaita-icon-theme
+  ];
+
+  outputs = ["out" "sandbox"];
+
+  buildCommand = let
+    browserBinary = "${chromium.browser}/libexec/chromium/chromium";
+    getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")";
+    libPath = stdenv.lib.makeLibraryPath ([]
+      ++ stdenv.lib.optional useVaapi libva
+    );
+
+  in with stdenv.lib; ''
+    mkdir -p "$out/bin"
+
+    eval makeWrapper "${browserBinary}" "$out/bin/chromium" \
+      --add-flags ${escapeShellArg (escapeShellArg commandLineArgs)} \
+      ${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled}
+
+    ed -v -s "$out/bin/chromium" << EOF
+    2i
+
+    if [ -x "/run/wrappers/bin/${sandboxExecutableName}" ]
+    then
+      export CHROME_DEVEL_SANDBOX="/run/wrappers/bin/${sandboxExecutableName}"
+    else
+      export CHROME_DEVEL_SANDBOX="$sandbox/bin/${sandboxExecutableName}"
+    fi
+
+    export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH:${libPath}"
+
+    # libredirect causes chromium to deadlock on startup
+    export LD_PRELOAD="\$(echo -n "\$LD_PRELOAD" | tr ':' '\n' | grep -v /lib/libredirect\\\\.so$ | tr '\n' ':')"
+
+    export XDG_DATA_DIRS=$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH\''${XDG_DATA_DIRS:+:}\$XDG_DATA_DIRS
+
+    .
+    w
+    EOF
+
+    ln -sv "${chromium.browser.sandbox}" "$sandbox"
+
+    ln -s "$out/bin/chromium" "$out/bin/chromium-browser"
+
+    mkdir -p "$out/share/applications"
+    for f in '${chromium.browser}'/share/*; do # hello emacs */
+      ln -s -t "$out/share/" "$f"
+    done
+    cp -v "${desktopItem}/share/applications/"* "$out/share/applications"
+  '';
+
+  inherit (chromium.browser) packageName;
+  meta = chromium.browser.meta // {
+    broken = if enableWideVine then
+          builtins.trace "WARNING: WideVine is not functional, please only use for testing"
+             true
+        else false;
+  };
+
+  passthru = {
+    inherit (chromium) upstream-info browser;
+    mkDerivation = chromium.mkChromiumDerivation;
+    inherit sandboxExecutableName;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/chromium-vaapi.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/chromium-vaapi.patch
new file mode 100644
index 000000000000..38d77e215516
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/chromium-vaapi.patch
@@ -0,0 +1,117 @@
+From abc7295ca1653c85472916909f0eb76e28e79a58 Mon Sep 17 00:00:00 2001
+From: Akarshan Biswas <akarshan.biswas@gmail.com>
+Date: Thu, 24 Jan 2019 12:45:29 +0530
+Subject: [PATCH] Enable mojo with VDA2 on Linux
+
+---
+ chrome/browser/about_flags.cc                |  8 ++++----
+ chrome/browser/flag_descriptions.cc          |  9 +++++++--
+ chrome/browser/flag_descriptions.h           | 10 ++++++++--
+ gpu/config/software_rendering_list.json      |  3 ++-
+ media/media_options.gni                      |  9 ++++++---
+ media/mojo/services/gpu_mojo_media_client.cc |  4 ++--
+ 6 files changed, 29 insertions(+), 14 deletions(-)
+
+diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
+index 0a84c6ac1..be2aa1d8b 100644
+--- a/chrome/browser/about_flags.cc
++++ b/chrome/browser/about_flags.cc
+@@ -1714,7 +1714,7 @@ const FeatureEntry kFeatureEntries[] = {
+         "disable-accelerated-video-decode",
+         flag_descriptions::kAcceleratedVideoDecodeName,
+         flag_descriptions::kAcceleratedVideoDecodeDescription,
+-        kOsMac | kOsWin | kOsCrOS | kOsAndroid,
++        kOsMac | kOsWin | kOsCrOS | kOsAndroid | kOsLinux,
+         SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedVideoDecode),
+     },
+ #if defined(OS_WIN)
+@@ -2345,12 +2345,12 @@ const FeatureEntry kFeatureEntries[] = {
+      FEATURE_VALUE_TYPE(service_manager::features::kXRSandbox)},
+ #endif  // ENABLE_ISOLATED_XR_SERVICE
+ #endif  // ENABLE_VR
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX)
+     {"disable-accelerated-mjpeg-decode",
+      flag_descriptions::kAcceleratedMjpegDecodeName,
+-     flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS,
++     flag_descriptions::kAcceleratedMjpegDecodeDescription, kOsCrOS | kOsLinux,
+      SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)},
+-#endif  // OS_CHROMEOS
++#endif  // OS_CHROMEOS // OS_LINUX
+     {"v8-cache-options", flag_descriptions::kV8CacheOptionsName,
+      flag_descriptions::kV8CacheOptionsDescription, kOsAll,
+      MULTI_VALUE_TYPE(kV8CacheOptionsChoices)},
+diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
+index 62637e092..86f89fc6e 100644
+--- a/chrome/browser/flag_descriptions.cc
++++ b/chrome/browser/flag_descriptions.cc
+@@ -3085,15 +3085,20 @@ const char kTextSuggestionsTouchBarDescription[] =
+ 
+ #endif
+ 
+-// Chrome OS -------------------------------------------------------------------
++// Chrome OS Linux-------------------------------------------------------------------
+ 
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
+ 
+ const char kAcceleratedMjpegDecodeName[] =
+     "Hardware-accelerated mjpeg decode for captured frame";
+ const char kAcceleratedMjpegDecodeDescription[] =
+     "Enable hardware-accelerated mjpeg decode for captured frame where "
+     "available.";
++#endif
++
++// Chrome OS --------------------------------------------------
++
++#if defined(OS_CHROMEOS)
+ 
+ const char kAllowTouchpadThreeFingerClickName[] = "Touchpad three-finger-click";
+ const char kAllowTouchpadThreeFingerClickDescription[] =
+diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
+index 5dac660bb..6cc4115da 100644
+--- a/chrome/browser/flag_descriptions.h
++++ b/chrome/browser/flag_descriptions.h
+@@ -1846,13 +1846,19 @@ extern const char kPermissionPromptPersistenceToggleDescription[];
+ 
+ #endif  // defined(OS_MACOSX)
+ 
+-// Chrome OS ------------------------------------------------------------------
++// Chrome OS and Linux ------------------------------------------------------------------
+ 
+-#if defined(OS_CHROMEOS)
++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
+ 
+ extern const char kAcceleratedMjpegDecodeName[];
+ extern const char kAcceleratedMjpegDecodeDescription[];
+ 
++#endif // defined(OS_CHROMEOS) || (defined(OS_LINUX) && !defined(OS_ANDROID))
++
++// Chrome OS ------------------------------------------------------------------------
++
++#if defined(OS_CHROMEOS)
++
+ extern const char kAllowTouchpadThreeFingerClickName[];
+ extern const char kAllowTouchpadThreeFingerClickDescription[];
+ 
+diff --git a/gpu/config/software_rendering_list.json b/gpu/config/software_rendering_list.json
+index 65f37b3f1..ae8a1718f 100644
+--- a/gpu/config/software_rendering_list.json
++++ b/gpu/config/software_rendering_list.json
+@@ -371,11 +371,12 @@
+     },
+     {
+       "id": 48,
+-      "description": "Accelerated video decode is unavailable on Linux",
++      "description": "Accelerated VA-API video decode is not supported on NVIDIA platforms",
+       "cr_bugs": [137247],
+       "os": {
+         "type": "linux"
+       },
++      "vendor_id": "0x10de",
+       "features": [
+         "accelerated_video_decode"
+       ]
+-- 
+2.20.1
+
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/jumbo-sorted.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/jumbo-sorted.patch
new file mode 100644
index 000000000000..cdf0f695f761
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/jumbo-sorted.patch
@@ -0,0 +1,11 @@
+--- chromium-70.0.3538.67/build/config/merge_for_jumbo.py.old	2018-10-25 19:15:54.578222230 +0300
++++ chromium-70.0.3538.67/build/config/merge_for_jumbo.py	2018-10-25 19:20:44.397613032 +0300
+@@ -132,6 +132,8 @@
+       assert not inputs
+       continue
+ 
++    inputs.sort()
++    outputs.sort()
+     write_jumbo_files(inputs, outputs, written_input_set, written_output_set)
+ 
+   assert set(args.outputs) == written_output_set, "Did not fill all outputs"
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/nix_plugin_paths_68.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/nix_plugin_paths_68.patch
new file mode 100644
index 000000000000..da6a4c92b460
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/nix_plugin_paths_68.patch
@@ -0,0 +1,61 @@
+diff --git a/chrome/common/chrome_paths.cc b/chrome/common/chrome_paths.cc
+index f4e119d..d9775bd 100644
+--- a/chrome/common/chrome_paths.cc
++++ b/chrome/common/chrome_paths.cc
+@@ -68,21 +68,14 @@ static base::LazyInstance<base::FilePath>
+     g_invalid_specified_user_data_dir = LAZY_INSTANCE_INITIALIZER;
+ 
+ // Gets the path for internal plugins.
+-bool GetInternalPluginsDirectory(base::FilePath* result) {
+-#if defined(OS_MACOSX)
+-  // If called from Chrome, get internal plugins from a subdirectory of the
+-  // framework.
+-  if (base::mac::AmIBundled()) {
+-    *result = chrome::GetFrameworkBundlePath();
+-    DCHECK(!result->empty());
+-    *result = result->Append("Internet Plug-Ins");
+-    return true;
+-  }
+-  // In tests, just look in the module directory (below).
+-#endif
+-
+-  // The rest of the world expects plugins in the module directory.
+-  return base::PathService::Get(base::DIR_MODULE, result);
++bool GetInternalPluginsDirectory(base::FilePath* result,
++                                 const std::string& ident) {
++  std::string full_env = std::string("NIX_CHROMIUM_PLUGIN_PATH_") + ident;
++  const char* value = getenv(full_env.c_str());
++  if (value == NULL)
++      return base::PathService::Get(base::DIR_MODULE, result);
++  else
++      *result = base::FilePath(value);
+ }
+ 
+ // Gets the path for bundled implementations of components. Note that these
+@@ -272,7 +265,7 @@ bool PathProvider(int key, base::FilePath* result) {
+       create_dir = true;
+       break;
+     case chrome::DIR_INTERNAL_PLUGINS:
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "ALL"))
+         return false;
+       break;
+     case chrome::DIR_COMPONENTS:
+@@ -280,7 +273,7 @@ bool PathProvider(int key, base::FilePath* result) {
+         return false;
+       break;
+     case chrome::DIR_PEPPER_FLASH_PLUGIN:
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "PEPPERFLASH"))
+         return false;
+       cur = cur.Append(kPepperFlashBaseDirectory);
+       break;
+@@ -358,7 +351,7 @@ bool PathProvider(int key, base::FilePath* result) {
+         cur = cur.DirName();
+       }
+ #else
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "PNACL"))
+         return false;
+ #endif
+       cur = cur.Append(FILE_PATH_LITERAL("pnacl"));
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch
new file mode 100644
index 000000000000..e06d848095c8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/no-build-timestamps.patch
@@ -0,0 +1,17 @@
+--- chromium-70.0.3538.67/build/compute_build_timestamp.py.orig	2018-11-02 16:00:34.368933077 +0200
++++ chromium-70.0.3538.67/build/compute_build_timestamp.py	2018-11-08 04:06:21.658105129 +0200
+@@ -94,6 +94,14 @@
+       'build_type', help='The type of build', choices=('official', 'default'))
+   args = argument_parser.parse_args()
+ 
++  # I don't trust LASTCHANGE magic, and I definelly want something deterministic here
++  SOURCE_DATE_EPOCH = os.getenv("SOURCE_DATE_EPOCH", None)
++  if SOURCE_DATE_EPOCH is not None:
++    print SOURCE_DATE_EPOCH
++    return 0
++  else:
++    raise RuntimeError("SOURCE_DATE_EPOCH not set")
++
+   # The mtime of the revision in build/util/LASTCHANGE is stored in a file
+   # next to it. Read it, to get a deterministic time close to "now".
+   # That date is then modified as described at the top of the file so that
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/remove-webp-include-69.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/remove-webp-include-69.patch
new file mode 100644
index 000000000000..07572cf7ee94
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/remove-webp-include-69.patch
@@ -0,0 +1,11 @@
+--- a/third_party/blink/renderer/platform/image-encoders/image_encoder.cc
++++ b/third_party/blink/renderer/platform/image-encoders/image_encoder.cc
+@@ -13,7 +13,7 @@
+
+ #include "jpeglib.h"  // for JPEG_MAX_DIMENSION
+
+-#include "third_party/libwebp/src/webp/encode.h"  // for WEBP_MAX_DIMENSION
++#define WEBP_MAX_DIMENSION 16383
+
+ namespace blink {
+
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/widevine.patch b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/widevine.patch
new file mode 100644
index 000000000000..90a13928e3bd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/patches/widevine.patch
@@ -0,0 +1,16 @@
+Minimal WideVine patch from Gentoo:
+
+https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/chromium-widevine-r1.patch
+
+BTS: https://bugs.gentoo.org/show_bug.cgi?id=547630
+
+--- a/third_party/widevine/cdm/stub/widevine_cdm_version.h
++++ b/third_party/widevine/cdm/stub/widevine_cdm_version.h
+@@ -10,6 +10,7 @@
+ 
+ #include "third_party/widevine/cdm/widevine_cdm_common.h"
+ 
++#define WIDEVINE_CDM_VERSION_STRING "unknown"
+ #define WIDEVINE_CDM_AVAILABLE
+ 
+ #endif  // WIDEVINE_CDM_VERSION_H_
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/plugins.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/plugins.nix
new file mode 100644
index 000000000000..e4ec550d60c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/plugins.nix
@@ -0,0 +1,145 @@
+{ stdenv, gcc
+, jshon
+, glib
+, nspr
+, nss
+, fetchzip
+, patchelfUnstable
+, enablePepperFlash ? false
+, enableWideVine ? false
+
+, upstream-info
+}:
+
+with stdenv.lib;
+
+let
+  mkrpath = p: "${makeSearchPathOutput "lib" "lib64" p}:${makeLibraryPath p}";
+
+  # Generate a shell fragment that emits flags appended to the
+  # final makeWrapper call for wrapping the browser's main binary.
+  #
+  # Note that this is shell-escaped so that only the variable specified
+  # by the "output" attribute is substituted.
+  mkPluginInfo = { output ? "out", allowedVars ? [ output ]
+                 , flags ? [], envVars ? {}
+                 }: let
+    shSearch = ["'"] ++ map (var: "@${var}@") allowedVars;
+    shReplace = ["'\\''"] ++ map (var: "'\"\${${var}}\"'") allowedVars;
+    # We need to triple-escape "val":
+    #  * First because makeWrapper doesn't do any quoting of its arguments by
+    #    itself.
+    #  * Second because it's passed to the makeWrapper call separated by IFS but
+    #    not by the _real_ arguments, for example the Widevine plugin flags
+    #    contain spaces, so they would end up as separate arguments.
+    #  * Third in order to be correctly quoted for the "echo" call below.
+    shEsc = val: "'${replaceStrings ["'"] ["'\\''"] val}'";
+    mkSh = val: "'${replaceStrings shSearch shReplace (shEsc val)}'";
+    mkFlag = flag: ["--add-flags" (shEsc flag)];
+    mkEnvVar = key: val: ["--set" (shEsc key) (shEsc val)];
+    envList = mapAttrsToList mkEnvVar envVars;
+    quoted = map mkSh (flatten ((map mkFlag flags) ++ envList));
+  in ''
+    mkdir -p "''$${output}/nix-support"
+    echo ${toString quoted} > "''$${output}/nix-support/wrapper-flags"
+  '';
+
+  widevine = stdenv.mkDerivation {
+    name = "chromium-binary-plugin-widevine";
+
+    src = upstream-info.binary;
+
+    nativeBuildInputs = [ patchelfUnstable ];
+
+    phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ];
+
+    unpackCmd = let
+      chan = if upstream-info.channel == "dev"    then "chrome-unstable"
+        else if upstream-info.channel == "stable" then "chrome"
+        else "chrome-${upstream-info.channel}";
+    in ''
+      mkdir -p plugins
+      ar p "$src" data.tar.xz | tar xJ -C plugins --strip-components=4 \
+        ./opt/google/${chan}/libwidevinecdm.so \
+        ./opt/google/${chan}/libwidevinecdmadapter.so
+    '';
+
+    doCheck = true;
+    checkPhase = ''
+      ! find -iname '*.so' -exec ldd {} + | grep 'not found'
+    '';
+
+    PATCH_RPATH = mkrpath [ gcc.cc glib nspr nss ];
+
+    patchPhase = ''
+      chmod +x libwidevinecdm.so libwidevinecdmadapter.so
+      patchelf --set-rpath "$PATCH_RPATH" libwidevinecdm.so
+      patchelf --set-rpath "$out/lib:$PATCH_RPATH" libwidevinecdmadapter.so
+    '';
+
+    installPhase = let
+      wvName = "Widevine Content Decryption Module";
+      wvDescription = "Playback of encrypted HTML audio/video content";
+      wvMimeTypes = "application/x-ppapi-widevine-cdm";
+      wvModule = "@out@/lib/libwidevinecdmadapter.so";
+      wvInfo = "#${wvName}#${wvDescription};${wvMimeTypes}";
+    in ''
+      install -vD libwidevinecdm.so \
+        "$out/lib/libwidevinecdm.so"
+      install -vD libwidevinecdmadapter.so \
+        "$out/lib/libwidevinecdmadapter.so"
+
+      ${mkPluginInfo {
+        flags = [ "--register-pepper-plugins=${wvModule}${wvInfo}" ];
+        envVars.NIX_CHROMIUM_PLUGIN_PATH_WIDEVINE = "@out@/lib";
+      }}
+    '';
+    
+    meta.platforms = platforms.x86_64;
+  };
+
+  flash = stdenv.mkDerivation rec {
+    name = "flashplayer-ppapi-${version}";
+    version = "32.0.0.156";
+
+    src = fetchzip {
+      url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
+      sha256 = "0mf2p3qk82s2nwz1x8g92434wpdqgnd9jj8w88z4qksa9qhbbfh7";
+      stripRoot = false;
+    };
+
+    patchPhase = ''
+      chmod +x libpepflashplayer.so
+      patchelf --set-rpath "${mkrpath [ gcc.cc ]}" libpepflashplayer.so
+    '';
+
+    doCheck = true;
+    checkPhase = ''
+      ! find -iname '*.so' -exec ldd {} + | grep 'not found'
+    '';
+
+    installPhase = ''
+      flashVersion="$(
+        "${jshon}/bin/jshon" -F manifest.json -e version -u
+      )"
+
+      install -vD libpepflashplayer.so "$out/lib/libpepflashplayer.so"
+
+      ${mkPluginInfo {
+        allowedVars = [ "out" "flashVersion" ];
+        flags = [
+          "--ppapi-flash-path=@out@/lib/libpepflashplayer.so"
+          "--ppapi-flash-version=@flashVersion@"
+        ];
+      }}
+    '';
+
+    dontStrip = true;
+    
+    meta.platforms = platforms.x86_64;
+  };
+
+in {
+  enabled = optional enableWideVine widevine
+         ++ optional enablePepperFlash flash;
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/update.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/update.nix
new file mode 100644
index 000000000000..2334dc6a71e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/update.nix
@@ -0,0 +1,271 @@
+let maybePkgs = import ../../../../../. {}; in
+
+{ stdenv     ? maybePkgs.stdenv
+, runCommand ? maybePkgs.runCommand
+, fetchurl   ? maybePkgs.fetchurl
+, writeText  ? maybePkgs.writeText
+, curl       ? maybePkgs.curl
+, cacert     ? maybePkgs.cacert
+, nix        ? maybePkgs.nix
+}:
+
+let
+  inherit (stdenv) lib;
+
+  sources = if builtins.pathExists ./upstream-info.nix
+            then import ./upstream-info.nix
+            else {};
+
+  bucketURL = "https://commondatastorage.googleapis.com/"
+            + "chromium-browser-official";
+
+  mkVerURL = version: "${bucketURL}/chromium-${version}.tar.xz";
+
+  debURL = "https://dl.google.com/linux/chrome/deb/pool/main/g";
+
+  getDebURL = channelName: version: arch: mirror: let
+    packageSuffix = if channelName == "dev" then "unstable" else channelName;
+    packageName = "google-chrome-${packageSuffix}";
+  in "${mirror}/${packageName}/${packageName}_${version}-1_${arch}.deb";
+
+  # Untrusted mirrors, don't try to update from them!
+  debMirrors = [
+    "http://95.31.35.30/chrome/pool/main/g"
+    "http://mirror.pcbeta.com/google/chrome/deb/pool/main/g"
+    "http://repo.fdzh.org/chrome/deb/pool/main/g"
+  ];
+
+in rec {
+  getChannel = channel: let
+    chanAttrs = builtins.getAttr channel sources;
+  in {
+    inherit channel;
+    inherit (chanAttrs) version;
+
+    main = fetchurl {
+      url = mkVerURL chanAttrs.version;
+      inherit (chanAttrs) sha256;
+    };
+
+    binary = fetchurl (let
+      mkUrls = arch: let
+        mkURLForMirror = getDebURL channel chanAttrs.version arch;
+      in map mkURLForMirror ([ debURL ] ++ debMirrors);
+    in if stdenv.is64bit && chanAttrs ? sha256bin64 then {
+      urls = mkUrls "amd64";
+      sha256 = chanAttrs.sha256bin64;
+    } else if !stdenv.is64bit && chanAttrs ? sha256bin32 then {
+      urls = mkUrls "i386";
+      sha256 = chanAttrs.sha256bin32;
+    } else throw "No Chrome plugins are available for your architecture.");
+  };
+
+  update = let
+    csv2nix = name: src: import (runCommand "${name}.nix" {
+      src = builtins.fetchurl src;
+    } ''
+      esc() { echo "\"$(echo "$1" | sed -e 's/"\\$/\\&/')\""; } # ohai emacs "
+      IFS=, read -r -a headings <<< "$(head -n1 "$src")"
+      echo "[" > "$out"
+      tail -n +2 "$src" | while IFS=, read -r -a line; do
+        echo "  {"
+        for idx in "''${!headings[@]}"; do
+          echo "    $(esc "''${headings[idx]}") = $(esc ''${line[$idx]});"
+        done
+        echo "  }"
+      done >> "$out"
+      echo "]" >> "$out"
+    '');
+
+    channels = lib.fold lib.recursiveUpdate {} (map (attrs: {
+      ${attrs.os}.${attrs.channel} = attrs // {
+        history = let
+          drvName = "omahaproxy-${attrs.os}.${attrs.channel}-info";
+          history = csv2nix drvName "http://omahaproxy.appspot.com/history";
+          cond = h: attrs.os == h.os && attrs.channel == h.channel
+                 && lib.versionOlder h.version attrs.current_version;
+          # Note that this is a *reverse* sort!
+          sorter = a: b: lib.versionOlder b.version a.version;
+          sorted = builtins.sort sorter (lib.filter cond history);
+        in map (lib.flip removeAttrs ["os" "channel"]) sorted;
+        version = attrs.current_version;
+      };
+    }) (csv2nix "omahaproxy-info" "http://omahaproxy.appspot.com/all?csv=1"));
+
+    /*
+      XXX: This is essentially the same as:
+
+        builtins.tryEval (builtins.fetchurl url)
+
+      ... except that tryEval on fetchurl isn't working and doesn't catch
+      errors for fetchurl, so we go for a different approach.
+
+      We only have fixed-output derivations that can have networking access, so
+      we abuse SHA1 and its weaknesses to forge a fixed-output derivation which
+      is not so fixed, because it emits different contents that have the same
+      SHA1 hash.
+
+      Using this method, we can distinguish whether the URL is available or
+      whether it's not based on the actual content.
+
+      So let's use tryEval as soon as it's working with fetchurl in Nix.
+    */
+    tryFetch = url: let
+      # SHA1 hash collisions from https://shattered.io/static/shattered.pdf:
+      collisions = runCommand "sha1-collisions" {
+        outputs = [ "out" "good" "bad" ];
+        base64 = ''
+          QlpoOTFBWSZTWbL5V5MABl///////9Pv///v////+/////HDdK739/677r+W3/75rUNr4
+          Aa/AAAAAAACgEVTRtQDQAaA0AAyGmjTQGmgAAANGgAaMIAYgGgAABo0AAAAAADQAIAGQ0
+          MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk
+          0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIAN
+          GgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRp
+          o0GIGgBoGQAABVTUExEZATTICnkxNR+p6E09JppoyamjGhkm0ammIyaekbUejU9JiGnqZ
+          qaaDxJ6m0JkZMQ2oaYmJ6gxqMyE2TUzJqfItligtJQJfYbl9Zy9QjQuB5mHQRdSSXCCTH
+          MgmSDYmdOoOmLTBJWiCpOhMQYpQlOYpJjn+wQUJSTCEpOMekaFaaNB6glCC0hKEJdHr6B
+          mUIHeph7YxS8WJYyGwgWnMTFJBDFSxSCCYljiEk7HZgJzJVDHJxMgY6tCEIIWgsKSlSZ0
+          S8GckoIIF+551Ro4RCw260VCEpWJSlpWx/PMrLyVoyhWMAneDilBcUIeZ1j6NCkus0qUC
+          Wnahhk5KT4GpWMh3vm2nJWjTL9Qg+84iExBJhNKpbV9tvEN265t3fu/TKkt4rXFTsV+Nc
+          upJXhOhOhJMQQktrqt4K8mSh9M2DAO2X7uXGVL9YQxUtzQmS7uBndL7M6R7vX869VxqPu
+          renSuHYNq1yTXOfNWLwgvKlRlFYqLCs6OChDp0HuTzCWscmGudLyqUuwVGG75nmyZhKpJ
+          yOE/pOZyHyrZxGM51DYIN+Jc8yVJgAykxKCEtW55MlfudLg3KG6TtozalunXrroSxUpVL
+          StWrWLFihMnVpkyZOrQnUrE6xq1CGtJlbAb5ShMbV1CZgqlKC0wCFCpMmUKSEkvFLaZC8
+          wHOCVAlvzaJQ/T+XLb5Dh5TNM67p6KZ4e4ZSGyVENx2O27LzrTIteAreTkMZpW95GS0CE
+          JYhMc4nToTJ0wQhKEyddaLb/rTqmgJSlkpnALxMhlNmuKEpkEkqhKUoEq3SoKUpIQcDgW
+          lC0rYahMmLuPQ0fHqZaF4v2W8IoJ2EhMhYmSw7qql27WJS+G4rUplToFi2rSv0NSrVvDU
+          pltQ8Lv6F8pXyxmFBSxiLSxglNC4uvXVKmAtusXy4YXGX1ixedEvXF1aX6t8adYnYCpC6
+          rW1ZzdZYlCCxKEv8vpbqdSsXl8v1jCQv0KEPxPTa/5rtWSF1dSgg4z4KjfIMNtgwWoWLE
+          sRhKxsSA9ji7V5LRPwtumeQ8V57UtFSPIUmtQdOQfseI2Ly1DMtk4Jl8n927w34zrWG6P
+          i4jzC82js/46Rt2IZoadWxOtMInS2xYmcu8mOw9PLYxQ4bdfFw3ZPf/g2pzSwZDhGrZAl
+          9lqky0W+yeanadC037xk496t0Dq3ctfmqmjgie8ln9k6Q0K1krb3dK9el4Xsu44LpGcen
+          r2eQZ1s1IhOhnE56WnXf0BLWn9Xz15fMkzi4kpVxiTKGEpffErEEMvEeMZhUl6yD1SdeJ
+          YbxzGNM3ak2TAaglLZlDCVnoM6wV5DRrycwF8Zh/fRsdmhkMfAO1duwknrsFwrzePWeMw
+          l107DWzymxdQwiSXx/lncnn75jL9mUzw2bUDqj20LTgtawxK2SlQg1CCZDQMgSpEqLjRM
+          sykM9zbSIUqil0zNk7Nu+b5J0DKZlhl9CtpGKgX5uyp0idoJ3we9bSrY7PupnUL5eWiDp
+          V5mmnNUhOnYi8xyClkLbNmAXyoWk7GaVrM2umkbpqHDzDymiKjetgzTocWNsJ2E0zPcfh
+          t46J4ipaXGCfF7fuO0a70c82bvqo3HceIcRlshgu73seO8BqlLIap2z5jTOY+T2ucCnBt
+          Atva3aHdchJg9AJ5YdKHz7LoA3VKmeqxAlFyEnQLBxB2PAhAZ8KvmuR6ELXws1Qr13Nd1
+          i4nsp189jqvaNzt+0nEnIaniuP1+/UOZdyfoZh57ku8sYHKdvfW/jYSUks+0rK+qtte+p
+          y8jWL9cOJ0fV8rrH/t+85/p1z2N67p/ZsZ3JmdyliL7lrNxZUlx0MVIl6PxXOUuGOeArW
+          3vuEvJ2beoh7SGyZKHKbR2bBWO1d49JDIcVM6lQtu9UO8ec8pOnXmkcponBPLNM2CwZ9k
+          NC/4ct6rQkPkQHMcV/8XckU4UJCy+VeTA==
+        '';
+      } ''
+        echo "$base64" | base64 -d | tar xj
+        mv good.pdf "$good"
+        mv bad.pdf "$bad"
+        touch "$out"
+      '';
+
+      cacheVal = let
+        urlHash = builtins.hashString "sha256" url;
+        timeSlice = builtins.currentTime / 600;
+      in "${urlHash}-${toString timeSlice}";
+
+    in {
+      success = import (runCommand "check-success" {
+        result = stdenv.mkDerivation {
+          name = "tryfetch-${cacheVal}";
+          inherit url;
+
+          outputHash = "d00bbe65d80f6d53d5c15da7c6b4f0a655c5a86a";
+          outputHashMode = "flat";
+          outputHashAlgo = "sha1";
+
+          nativeBuildInputs = [ curl ];
+          preferLocalBuild = true;
+
+          inherit (collisions) good bad;
+
+          buildCommand = ''
+            if SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt" \
+               curl -s -L -f -I "$url" > /dev/null; then
+              cp "$good" "$out"
+            else
+              cp "$bad" "$out"
+            fi
+          '';
+
+          impureEnvVars = lib.fetchers.proxyImpureEnvVars;
+        };
+        inherit (collisions) good;
+      } ''
+        if cmp -s "$result" "$good"; then
+          echo true > "$out"
+        else
+          echo false > "$out"
+        fi
+      '');
+      value = builtins.fetchurl url;
+    };
+
+    fetchLatest = channel: let
+      result = tryFetch (mkVerURL channel.version);
+    in if result.success then result.value else fetchLatest (channel // {
+      version = if channel.history != []
+                then (lib.head channel.history).version
+                else throw "Unfortunately there's no older version than " +
+                           "${channel.version} available for channel " +
+                           "${channel.channel} on ${channel.os}.";
+      history = lib.tail channel.history;
+    });
+
+    getHash = path: import (runCommand "gethash.nix" {
+      inherit path;
+      nativeBuildInputs = [ nix ];
+    } ''
+      sha256="$(nix-hash --flat --base32 --type sha256 "$path")"
+      echo "\"$sha256\"" > "$out"
+    '');
+
+    isLatest = channel: version: let
+      ourVersion = sources.${channel}.version or null;
+    in if ourVersion == null then false
+       else lib.versionOlder version sources.${channel}.version
+         || version == sources.${channel}.version;
+
+    # We only support GNU/Linux right now.
+    linuxChannels = let
+      genLatest = channelName: channel: let
+        newUpstream = {
+          inherit (channel) version;
+          sha256 = getHash (fetchLatest channel);
+        };
+        keepOld = let
+          oldChannel = sources.${channelName};
+        in {
+          inherit (oldChannel) version sha256;
+        } // lib.optionalAttrs (oldChannel ? sha256bin32) {
+          inherit (oldChannel) sha256bin32;
+        } // lib.optionalAttrs (oldChannel ? sha256bin64) {
+          inherit (oldChannel) sha256bin64;
+        };
+      in if isLatest channelName channel.version then keepOld else newUpstream;
+    in lib.mapAttrs genLatest channels.linux;
+
+    getLinuxFlash = channelName: channel: let
+      inherit (channel) version;
+      fetchArch = arch: tryFetch (getDebURL channelName version arch debURL);
+      packages = lib.genAttrs ["i386" "amd64"] fetchArch;
+      isNew = arch: attr: !(builtins.hasAttr attr channel)
+                       && packages.${arch}.success;
+    in channel // lib.optionalAttrs (isNew "i386" "sha256bin32") {
+      sha256bin32 = getHash (packages.i386.value);
+    } // lib.optionalAttrs (isNew "amd64" "sha256bin64") {
+      sha256bin64 = getHash (packages.amd64.value);
+    };
+
+    newChannels = lib.mapAttrs getLinuxFlash linuxChannels;
+
+    dumpAttrs = indent: attrs: let
+      mkVal = val: if lib.isAttrs val then dumpAttrs (indent + 1) val
+                   else "\"${lib.escape ["$" "\\" "\""] (toString val)}\"";
+      mkIndent = level: lib.concatStrings (builtins.genList (_: "  ") level);
+      mkAttr = key: val: "${mkIndent (indent + 1)}${key} = ${mkVal val};\n";
+      attrLines = lib.mapAttrsToList mkAttr attrs;
+    in "{\n" + (lib.concatStrings attrLines) + (mkIndent indent) + "}";
+  in writeText "chromium-new-upstream-info.nix" ''
+    # This file is autogenerated from update.sh in the same directory.
+    ${dumpAttrs 0 newChannels}
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/update.sh b/nixpkgs/pkgs/applications/networking/browsers/chromium/update.sh
new file mode 100755
index 000000000000..ea67a62c107a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/update.sh
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+cd "$(dirname "$0")"
+sp="$(nix-build --builders "" -Q --no-out-link update.nix -A update)"
+cat "$sp" > upstream-info.nix
diff --git a/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix
new file mode 100644
index 000000000000..de83e0e0646c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.nix
@@ -0,0 +1,18 @@
+# This file is autogenerated from update.sh in the same directory.
+{
+  beta = {
+    sha256 = "1lpgkf292f6v6v19zjp1si6vvizixk9192yjx76pq1d790678qrb";
+    sha256bin64 = "028c3gjh5zbxr53wkk3s5jvgwc2fz9cnvnyr58q4la91vyrbjslm";
+    version = "74.0.3729.61";
+  };
+  dev = {
+    sha256 = "15197r2gbx4h7dsasvgz0vcl7mqmj0glc4sip99dw145drwdpmsq";
+    sha256bin64 = "1qf089l5k7l69msrn49z5lkg932n1rgnzgr9yg5ja89arcgynacv";
+    version = "75.0.3753.4";
+  };
+  stable = {
+    sha256 = "1bskjr7yiwvdab1b5mp36y6964xqpgks6dqazm4qifwqvqcw80pb";
+    sha256bin64 = "00ndrqhmnk567sw6xj22m84126qvivq0jzfx0v46ya3kq6ln22gr";
+    version = "73.0.3683.103";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/conkeror/default.nix b/nixpkgs/pkgs/applications/networking/browsers/conkeror/default.nix
new file mode 100644
index 000000000000..be1389c2121f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/conkeror/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchgit, unzip, firefox-esr, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pkgname = "conkeror";
+  version = "1.0.4";
+  name = "${pkgname}-${version}";
+ 
+  src = fetchgit {
+    url = git://repo.or.cz/conkeror.git;
+    rev = "refs/tags/${version}";
+    sha256 = "10c57wqybp9kcjpkb01wxq0h3vafcdb1g5kb4k8sb2zajg59afv8";
+  };
+
+  buildInputs = [ unzip makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/libexec/conkeror
+    cp -r * $out/libexec/conkeror
+
+    makeWrapper ${firefox-esr}/bin/firefox $out/bin/conkeror \
+      --add-flags "-app $out/libexec/conkeror/application.ini"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A keyboard-oriented, customizable, extensible web browser";
+    longDescription = ''
+      Conkeror is a keyboard-oriented, highly-customizable, highly-extensible
+      web browser based on Mozilla XULRunner, written mainly in JavaScript,
+      and inspired by exceptional software such as Emacs and vi. Conkeror
+      features a sophisticated keyboard system, allowing users to run commands
+      and interact with content in powerful and novel ways. It is
+      self-documenting, featuring a powerful interactive help system.
+    '';
+    homepage = http://conkeror.org/;
+    license = with licenses; [ mpl11 gpl2 lgpl21 ];
+    maintainers = with maintainers; [ astsmtl ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/dillo/default.nix b/nixpkgs/pkgs/applications/networking/browsers/dillo/default.nix
new file mode 100644
index 000000000000..671ab03a2e29
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/dillo/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl
+, fltk
+, openssl
+, libjpeg, libpng
+, perl
+, libXcursor, libXi, libXinerama }:
+
+stdenv.mkDerivation rec {
+  version = "3.0.5";
+  name = "dillo-${version}";
+
+  src = fetchurl {
+    url = "https://www.dillo.org/download/${name}.tar.bz2";
+    sha256 = "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv";
+  };
+
+  buildInputs = with stdenv.lib;
+  [ perl fltk openssl libjpeg libpng libXcursor libXi libXinerama ];
+
+  configureFlags = [ "--enable-ssl" ];
+
+  meta = with stdenv.lib; {
+    homepage = https://www.dillo.org/;
+    description = "A fast graphical web browser with a small footprint";
+    longDescription = ''
+      Dillo is a small, fast web browser, tailored for older machines.
+    '';
+    maintainers = [ maintainers.AndersonTorres ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/elinks/default.nix b/nixpkgs/pkgs/applications/networking/browsers/elinks/default.nix
new file mode 100644
index 000000000000..b60454c4a42d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/elinks/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchurl, ncurses, xlibsWrapper, bzip2, zlib, openssl
+, gpm
+, # Incompatible licenses, LGPLv3 - GPLv2
+  enableGuile        ? false,                                         guile ? null
+, enablePython       ? false,                                         python ? null
+, enablePerl         ? (stdenv.hostPlatform == stdenv.buildPlatform), perl ? null
+, enableSpidermonkey ? (stdenv.hostPlatform == stdenv.buildPlatform), spidermonkey_1_8_5 ? null
+}:
+
+assert enableGuile -> guile != null;
+assert enablePython -> python != null;
+
+stdenv.mkDerivation rec {
+  name = "elinks-0.12pre6";
+
+  src = fetchurl {
+    url = http://elinks.or.cz/download/elinks-0.12pre6.tar.bz2;
+    sha256 = "1nnakbi01g7yd3zqwprchh5yp45br8086b0kbbpmnclabcvlcdiq";
+  };
+
+  patches = [ ./gc-init.patch ];
+
+  buildInputs = [ ncurses xlibsWrapper bzip2 zlib openssl spidermonkey_1_8_5 gpm ]
+    ++ stdenv.lib.optional enableGuile guile
+    ++ stdenv.lib.optional enablePython python
+    ++ stdenv.lib.optional enablePerl perl
+    ;
+
+  configureFlags = [
+    "--enable-finger"
+    "--enable-html-highlight"
+    "--enable-gopher"
+    "--enable-cgi"
+    "--enable-bittorrent"
+    "--enable-nntp"
+    "--with-openssl=${openssl.dev}"
+    "--with-bzip2=${bzip2.dev}"
+  ] ++ stdenv.lib.optional enableGuile        "--with-guile"
+    ++ stdenv.lib.optional enablePython       "--with-python"
+    ++ stdenv.lib.optional enablePerl         "--with-perl"
+    ++ stdenv.lib.optional enableSpidermonkey "--with-spidermonkey=${spidermonkey_1_8_5}"
+    ;
+
+  meta = {
+    description = "Full-featured text-mode web browser";
+    homepage = http://elinks.or.cz;
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/elinks/gc-init.patch b/nixpkgs/pkgs/applications/networking/browsers/elinks/gc-init.patch
new file mode 100644
index 000000000000..de06f563d6e6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/elinks/gc-init.patch
@@ -0,0 +1,17 @@
+Fix libgc initialization in the presence of Guile 2.0.
+
+--- elinks-0.12pre5/src/main/main.c	2009-07-07 14:23:17.000000000 +0200
++++ elinks-0.12pre5/src/main/main.c	2011-04-28 23:20:15.000000000 +0200
+@@ -339,6 +339,11 @@ int
+ main(int argc, char *argv[])
+ {
+ #ifdef CONFIG_GC
++	/* Guile 2.x uses libgc too and it initializes it this way, so we
++	 * must make sure to initialize it the same way, or it will just
++	 * segfault.  */
++	GC_all_interior_pointers = 0;
++
+ 	GC_INIT();
+ 	GC_set_warn_proc(gc_warning);
+ #endif
+
diff --git a/nixpkgs/pkgs/applications/networking/browsers/eolie/default.nix b/nixpkgs/pkgs/applications/networking/browsers/eolie/default.nix
new file mode 100644
index 000000000000..e067f3f15eb5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/eolie/default.nix
@@ -0,0 +1,67 @@
+{ stdenv, fetchgit, meson, ninja, pkgconfig
+, python3, gtk3, libsecret, gst_all_1, webkitgtk
+, glib-networking, gtkspell3, hunspell, desktop-file-utils
+, gobject-introspection, wrapGAppsHook }:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "eolie";
+  version = "0.9.60";
+
+  format = "other";
+  doCheck = false;
+
+  src = fetchgit {
+    url = "https://gitlab.gnome.org/World/eolie";
+    rev = "refs/tags/${version}";
+    fetchSubmodules = true;
+    sha256 = "1mhl7p8pwp8lqx5z15r0lx1y4mb2c1gjwy3w6041cyc4hyb91693";
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    gobject-introspection
+    meson
+    ninja
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = with gst_all_1; [
+    glib-networking
+    gobject-introspection
+    gst-libav
+    gst-plugins-base
+    gst-plugins-ugly
+    gstreamer
+    gtk3
+    gtkspell3
+    hunspell
+    libsecret
+    webkitgtk
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    beautifulsoup4
+    pycairo
+    pygobject3
+    python-dateutil
+  ];
+
+  postPatch = ''
+    chmod +x meson_post_install.py
+    patchShebangs meson_post_install.py
+  '';
+
+  preFixup = ''
+    buildPythonPath "$out $propagatedBuildInputs"
+    patchPythonScript "$out/libexec/eolie-sp"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A new GNOME web browser";
+    homepage = https://wiki.gnome.org/Apps/Eolie;
+    license  = licenses.gpl3Plus;
+    maintainers = with maintainers; [ samdroid-apps worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/falkon/default.nix b/nixpkgs/pkgs/applications/networking/browsers/falkon/default.nix
new file mode 100644
index 000000000000..c721a61591a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/falkon/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, lib, fetchFromGitHub, cmake, extra-cmake-modules, pkgconfig, qmake
+, libpthreadstubs, libxcb, libXdmcp
+, qtsvg, qttools, qtwebengine, qtx11extras
+, qtwayland
+, kwallet
+}:
+
+stdenv.mkDerivation rec {
+  name = "falkon-${version}";
+  version = "3.1.0";
+
+  src = fetchFromGitHub {
+    owner  = "KDE";
+    repo   = "falkon";
+    rev    = "v${version}";
+    sha256 = "1w64slh9wpcfi4v7ds9wci1zvwh0dh787ndpi6hd4kmdgnswvsw7";
+  };
+
+  preConfigure = ''
+    export NONBLOCK_JS_DIALOGS=true
+    export KDE_INTEGRATION=true
+    export GNOME_INTEGRATION=false
+    export FALKON_PREFIX=$out
+  '';
+
+  buildInputs = [
+    libpthreadstubs libxcb libXdmcp
+    qtsvg qttools qtwebengine qtx11extras
+    kwallet
+  ] ++ lib.optionals stdenv.isLinux [ qtwayland ];
+
+  nativeBuildInputs = [ cmake extra-cmake-modules pkgconfig qmake qttools ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "QtWebEngine based cross-platform web browser";
+    homepage    = https://community.kde.org/Incubator/Projects/Falkon;
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix
new file mode 100644
index 000000000000..ca295183e221
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/beta_sources.nix
@@ -0,0 +1,995 @@
+{
+  version = "67.0b7";
+  sources = [
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ach/firefox-67.0b7.tar.bz2";
+      locale = "ach";
+      arch = "linux-x86_64";
+      sha512 = "4f640887e38c4c6fd30f8c6bb3d296336a73c9c039c9ebcd0b26080528d5ee2f9ae3e041d107d4dfb2fdc9fbbe50669e8f4332adb02f01e700b24afeb918b0c7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/af/firefox-67.0b7.tar.bz2";
+      locale = "af";
+      arch = "linux-x86_64";
+      sha512 = "75e2d8b31e3a4cfa43893d22d3d6cb274834daebfcc1ac27a7e77cf5404f5ac521362e9b57de7977c9117a6a5d4e1a975403c55d7bd61d5e06aae9d2957bfeba";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/an/firefox-67.0b7.tar.bz2";
+      locale = "an";
+      arch = "linux-x86_64";
+      sha512 = "4018b692d2bad85bb7e2d90416f6ff1b3a61bcb2d352b8d3a6b9771348434b624f923185015bd3bb32786fa83f8ce184a3464a91a80e17dc94113805fdf386ff";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ar/firefox-67.0b7.tar.bz2";
+      locale = "ar";
+      arch = "linux-x86_64";
+      sha512 = "9459917b266241cde076463d100d29bfda4f2da401d261fb2baa87fddffe86a983a5f873983aab5db8a16704d36850608a670da12d9fb93792bdeda7864bdded";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/as/firefox-67.0b7.tar.bz2";
+      locale = "as";
+      arch = "linux-x86_64";
+      sha512 = "78cfd264f164400e76bf1a2935daa97c1e43b65bf057eb1287de07e148238205dfb72c3412437ad42948b9e9d47bc2a2c2f2360ac9255b2f834cc1a62c282678";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ast/firefox-67.0b7.tar.bz2";
+      locale = "ast";
+      arch = "linux-x86_64";
+      sha512 = "ec2ab27cbf93854c995d3d2fafcbd3e121224aac344a058e6c8113a3fedf62650037054967987fde6d035013366f7c5ebd4b179ab37b7c8a8a2fe95490cf80ff";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/az/firefox-67.0b7.tar.bz2";
+      locale = "az";
+      arch = "linux-x86_64";
+      sha512 = "a86a3475738ad39c05db2ec9084032c7b3141882348870ab29e0940a1da0098e548175257d2b656332c23ae0db224a9f12d0c630985c25c0a0ff8d84d00db6df";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/be/firefox-67.0b7.tar.bz2";
+      locale = "be";
+      arch = "linux-x86_64";
+      sha512 = "5d997969f984fb9e9bf5dfbf64b66bf604abab0a4c1d2e53b82990197dd233b7605f3ae294053428a0f8509f0c640771b203d865e2e655fdb9449bdfa9454a97";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/bg/firefox-67.0b7.tar.bz2";
+      locale = "bg";
+      arch = "linux-x86_64";
+      sha512 = "930794602f594588382b959ef54d4ff05cb8ba71d39ecc23934d29e8820bbad8204708392c28185fd97b2eff7cd1a93a7156736675ceb072c4b820cc78be6efe";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/bn-BD/firefox-67.0b7.tar.bz2";
+      locale = "bn-BD";
+      arch = "linux-x86_64";
+      sha512 = "f186acacbe502a620f8b2dbc1ed6fb3d978128af749b8f55efa122cff6ba3702c21361e47fd5a4af33b533a7961ccc13dcb0ed19e2617b244a87c82295f491a7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/bn-IN/firefox-67.0b7.tar.bz2";
+      locale = "bn-IN";
+      arch = "linux-x86_64";
+      sha512 = "fbc97c4a4fa81edeb8b6af71accae9155f7efab2e79a724a671a07adcfa5f0f252faac3a3ec63db452126aa0ac87b2943657e9d18094274ce72995f3f7ea3f35";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/br/firefox-67.0b7.tar.bz2";
+      locale = "br";
+      arch = "linux-x86_64";
+      sha512 = "ded74968f5cb4b9794d1a200fcf378698c5d31bace8b0e39e1c6710d665b7152e77fd565cdd694b8e556857d9415dc6af912c5c44bd5c937baf52cacb33d399d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/bs/firefox-67.0b7.tar.bz2";
+      locale = "bs";
+      arch = "linux-x86_64";
+      sha512 = "b98385274bc71ce17144adbb164e9d42fbac318ea953fd994468cf6066fa0dd5aced6d737da3be21f0e0bdcf30507ecf29f2865941df8b6a6334dcbd4394cfa0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ca/firefox-67.0b7.tar.bz2";
+      locale = "ca";
+      arch = "linux-x86_64";
+      sha512 = "497a623b9e39035337ca67bee7d04399f38eadba23ecb9c354ee848c969746655c693c3fbc00ad5e826ea0d5140dd0ac6ace029c35b56fe3cccf79c8612de68c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/cak/firefox-67.0b7.tar.bz2";
+      locale = "cak";
+      arch = "linux-x86_64";
+      sha512 = "55ed818b0b3acee7416615ddb606f0695f948fa633b44889e1881acd091ac514a57a8678d8830a91bc7097282a2df30396e3f27a0df225b7fb6de458cc5ff832";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/cs/firefox-67.0b7.tar.bz2";
+      locale = "cs";
+      arch = "linux-x86_64";
+      sha512 = "a79c77cf3fad65437e20dc4f086778daac9bd403228ac0efbc1aa5b69216b6aaa91488f5691bd9cb9e27a44b7107342ff3cbe03be73a83a9f449eeb777afcfba";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/cy/firefox-67.0b7.tar.bz2";
+      locale = "cy";
+      arch = "linux-x86_64";
+      sha512 = "da13683201a46d15bb6f6c4ed871459a83894a8d883a743637a978ed202001dda2bf0812f02c193f178023a1229357b394d69e6e902cf76afb27f4929fc6829b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/da/firefox-67.0b7.tar.bz2";
+      locale = "da";
+      arch = "linux-x86_64";
+      sha512 = "9694ffc20872aa9e033255a8c5f8c98b4dad2159aa3dc2bd841240b2c462b519831c5d938d3ba7470c738f3c587ed211367ca1f7a00e225a90744ca330d97e15";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/de/firefox-67.0b7.tar.bz2";
+      locale = "de";
+      arch = "linux-x86_64";
+      sha512 = "0fc81d549c2636d2e58b8f4e9923e6d5d691a64bf2909107735eff9aee6bba0de4d967066fa6937f237939391c86ccca55ae03b8e55513600108bd86ed200899";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/dsb/firefox-67.0b7.tar.bz2";
+      locale = "dsb";
+      arch = "linux-x86_64";
+      sha512 = "ddff938d5a79e9253c6815846b9951d8b64618d5308d8fde620e21492cc4979bb56d88d716861661a50d01f0f020eb1cd6baeeff83436e584b94f80b3e93eb88";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/el/firefox-67.0b7.tar.bz2";
+      locale = "el";
+      arch = "linux-x86_64";
+      sha512 = "099ea9058e26600be8ea8a82cda49a3a76585cb6078bc221a653cc385022ff7991f8b9e02cb7caf7a6562bcc84c00cd7a69c01678d31fa1dc89f2c2659347de3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/en-CA/firefox-67.0b7.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-x86_64";
+      sha512 = "6ebb2c19ed3705834a29f64d79fe8d0cd4c8b5e17ee957e30e11f63399c887491e354a641df37743de9d3a9e4b864efe4b6a2481a029ed545f06932a49da26c9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/en-GB/firefox-67.0b7.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-x86_64";
+      sha512 = "924da12dcde359bb0576f14b75d2114808f495e98903762a960f508ce939b36f35a02f4858042b9be99305c4f505dc7e4427bbe5258c5315efb91c13e9125e3f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/en-US/firefox-67.0b7.tar.bz2";
+      locale = "en-US";
+      arch = "linux-x86_64";
+      sha512 = "d85347fc794383b2c9ce848ec064010e3255cbf471187952d4adaa2f3ae461befd8515b95601a5d7c6c86281c956601408829bb161dbcc6c259686e73eaa7773";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/en-ZA/firefox-67.0b7.tar.bz2";
+      locale = "en-ZA";
+      arch = "linux-x86_64";
+      sha512 = "6c843b8069e7f375d42ffdf7898a1331a9f847676dd0e13f6cec0701ae4ce8c70b415da314889781208d49696af4e291b078bce0d64721010fb269cdbd321bc3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/eo/firefox-67.0b7.tar.bz2";
+      locale = "eo";
+      arch = "linux-x86_64";
+      sha512 = "dd6e0d4d343c479cdcdcaba4947994c45618116f6943f0e9b0c2654de6bb1ab849a99679bd2a5a646ea0f6e0bc7b392f67de2766701bf9151c99d59bec5e2ba3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/es-AR/firefox-67.0b7.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-x86_64";
+      sha512 = "4defc2bd2a7831081ac70b29915087e94eed6659dcb23e961b7200cc6b89feda2c0442fc969fcfee57c537ad487fce6edebca2ac62f356b3c387e1a7d1790d93";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/es-CL/firefox-67.0b7.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-x86_64";
+      sha512 = "c0494964c5bf6d0938dbd78d5b801e000fa6c850d95f629a375e8ea69d58fb7bce8cc38d32b456fb8341230b13eb4eb34b31b59e46b32941281a6283e9d52e7c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/es-ES/firefox-67.0b7.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-x86_64";
+      sha512 = "a4a7f4fd7552ef57c3fec732cf48f6d442ce34cdccf6cd01f713b1468522d33d61c3307b6919df4ea38ba4ab2b1a237147586dbe4052e7084f03ae0f71848389";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/es-MX/firefox-67.0b7.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-x86_64";
+      sha512 = "6de76564a94bd0a61834ca2957ff4e969551d7fe74716d80975c5249f85aeaeb7e0f40d0ed8a5653a237eabaa527de234192b97df1525043148c2eb3246799ba";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/et/firefox-67.0b7.tar.bz2";
+      locale = "et";
+      arch = "linux-x86_64";
+      sha512 = "3406361c8358703e6166bfe19cf690a3b03083e043d9215a88ee9cf923f82064217232622da0286b44b0cd3f9b6ce570e73f06b2f8558096d2c0f97089fbc691";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/eu/firefox-67.0b7.tar.bz2";
+      locale = "eu";
+      arch = "linux-x86_64";
+      sha512 = "e1e3858a11982c22aa2d592343365db0fdf4acf5ae5d366e9f862d550a0e90e383182d6e20a1e85b5af62746f3750ab97269037973575edc8eb2f7e12e8231da";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/fa/firefox-67.0b7.tar.bz2";
+      locale = "fa";
+      arch = "linux-x86_64";
+      sha512 = "e4171bc5e5bfd699eb0a99fc7f7f3783fbbd8c888d506e7cd76bffd1c053056713729c41990cb6cb4433c1f9f964bf00449e682fa953995a21ba2b41e781ed01";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ff/firefox-67.0b7.tar.bz2";
+      locale = "ff";
+      arch = "linux-x86_64";
+      sha512 = "c7dd25f2dd80913eb688ed7eb3e485f3f320e3fedc71bd65ed54b63c48952de065110d084db3e32bb22c9bb315f353280d5a9f396f025464d0b6114f1ce3c4fd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/fi/firefox-67.0b7.tar.bz2";
+      locale = "fi";
+      arch = "linux-x86_64";
+      sha512 = "d8303e66241a4371717ca390a295c16140f6917e8f013e4bcf2e4f21127544ee12989d8e1befe5b907b7bea51ae6b20922b1f68dd645c0677c2c68ce0bc90295";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/fr/firefox-67.0b7.tar.bz2";
+      locale = "fr";
+      arch = "linux-x86_64";
+      sha512 = "a5454f58aa2f5f04e730504d17500d8e5edba8e3f9828d4e9aa07eed872d7f25e8156a337fe384ae523e51a74f86d6e8b306e1184fd8fd8cca71bc6dc5423d06";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/fy-NL/firefox-67.0b7.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-x86_64";
+      sha512 = "83bbe2d56ff8a6ba2b2bdc5550c0d0621bc2f938b2977feb23627be0c38b9f43ed1eec4eb96ca875441fce5d5e0a00bb8ae3c5f6630ad93cf3e4683baf2d7090";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ga-IE/firefox-67.0b7.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-x86_64";
+      sha512 = "9be4bd1576733024fb7374e9b343c200c6a2ada0961ee12b3217413407564d61749707613b5542c5a20d47ec4c9b505aac86a6587f70213e78df5f77cac3c2e5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/gd/firefox-67.0b7.tar.bz2";
+      locale = "gd";
+      arch = "linux-x86_64";
+      sha512 = "77ec579a29ae1ff35565311b38a4f09f0bc37aef54d0287a93dbf757ccef8beaa2cfd736a319b73bdfc6f48f942c9e885a8302a70a9a7844955e8147cd9afb4d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/gl/firefox-67.0b7.tar.bz2";
+      locale = "gl";
+      arch = "linux-x86_64";
+      sha512 = "2e047ae403ac4d043b063387c02fd17e47ead72737caaaa93a04b326b500c1e25b4f3a7d6ae2127b628dff86b31e49f0e500b3685bd945fb223598a584116dfc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/gn/firefox-67.0b7.tar.bz2";
+      locale = "gn";
+      arch = "linux-x86_64";
+      sha512 = "6372fc7499b7a1ee418d267c73ae05f68e03307a647fa90d5f66e3d3fa80bacbaef78b276446855bf3aa5b7979072c69fcfa5f7a07d91bc56f39493c549c3bfa";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/gu-IN/firefox-67.0b7.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-x86_64";
+      sha512 = "5bda58c9d0f14ab1484f8821cc7231186ac11eb610f021df398120d38ed4b0bfd7c2c3b8bacad75f2b35e8ee8d34f95cb56e816c4db8f2f79acca5ec76e02a18";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/he/firefox-67.0b7.tar.bz2";
+      locale = "he";
+      arch = "linux-x86_64";
+      sha512 = "558b5f326e87df3c668458488a6fc6261cc84915d9bf90451c8a426fb973b048279f1e0d2755e4c9bc081df52351e8b70dabf5a8113e07b9fd7e9bfdcc8914fe";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/hi-IN/firefox-67.0b7.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-x86_64";
+      sha512 = "30abd8a9ab1c410f3293c4d70895b98cd0921d95ef8b986f30ffdc0cc273d7b10dd038ffae2658ae209f8625ee4493b467e4cc4b737fbc4a1a1f8ff5341843a4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/hr/firefox-67.0b7.tar.bz2";
+      locale = "hr";
+      arch = "linux-x86_64";
+      sha512 = "052277cdecbda15e260ad9cfbc9ce4e4efaf0391f301cc4870ccdb37320a9829284c41cdf09f908aac13fd745437d8b08bc4d5665aadb72e9af8cd648514271e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/hsb/firefox-67.0b7.tar.bz2";
+      locale = "hsb";
+      arch = "linux-x86_64";
+      sha512 = "d3641686918b38a41eeb3d20d583f4d2a7ae31e40a3c5dcb74acb268eeb5d6a37eee86fe7262277649ebb406d2ff7ed35e20fc8e261a0f7ec230f08b8440f629";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/hu/firefox-67.0b7.tar.bz2";
+      locale = "hu";
+      arch = "linux-x86_64";
+      sha512 = "6b986fbbe8722aa8fe50e0f5bad42d75d7ea11bfec33ff3cae417bb98bda64994e6f7ddadf2e7645d8d2b313908221f68cb1be91957b2542f35355750b408e81";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/hy-AM/firefox-67.0b7.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-x86_64";
+      sha512 = "4f49a55aa4a3f84c3d4d0d21cb59b42d27530baf8df8697b7baf2b3e2bcbd07a80f94ba462d63caab57ffdbcc2bceec6598778e942be353953de28c912ffced5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ia/firefox-67.0b7.tar.bz2";
+      locale = "ia";
+      arch = "linux-x86_64";
+      sha512 = "66cd918c709013c519210cfd7d9e0e7f4f8124de1c39b0f101076d8e75e30e593efa0401c145dcf1591ef86ee78713b83fa32429c9ea3fe2c4190a0ee88bff73";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/id/firefox-67.0b7.tar.bz2";
+      locale = "id";
+      arch = "linux-x86_64";
+      sha512 = "93dac59182acde7c59e9e3c762a4e981652cda78e042849cd3bf5e5d7de4a3f435350c633384b0908ca53210d33974e19dd36d22977094914828f1bb8327b6d3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/is/firefox-67.0b7.tar.bz2";
+      locale = "is";
+      arch = "linux-x86_64";
+      sha512 = "a1020a3f594bb43050120df62faf3fab7c03619b5432f4027eec368fb559f692b9eb25d4eb2f953617db5414a1ad24c7409c963950d03dd1df4d084b66764248";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/it/firefox-67.0b7.tar.bz2";
+      locale = "it";
+      arch = "linux-x86_64";
+      sha512 = "ccfeaead66f61caf73b7c37ced5c7dabe688e1b5994386ee44d740b9e1fde2956b697f638ee7eedb5761bf35a94d82530543f1588b88720e5c07c3d6e10f82bc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ja/firefox-67.0b7.tar.bz2";
+      locale = "ja";
+      arch = "linux-x86_64";
+      sha512 = "e3048bcc92ce62fd5622cdfa96b75abdb35bbbc8e17411bcd7c1d8cf64de9e073989fe2b6f86bb1f56c4c6b398479f1f946a1cdcb563be9cdf1aae63e36e153a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ka/firefox-67.0b7.tar.bz2";
+      locale = "ka";
+      arch = "linux-x86_64";
+      sha512 = "20a66af34848ebcfb266fe5dd8c7a8d663aa8aef543988a5b06e33e4ca8cd9636dac8cc8dd219471e49bb596013d42664fcef4c4e2588e36c4e40ebcba947fdc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/kab/firefox-67.0b7.tar.bz2";
+      locale = "kab";
+      arch = "linux-x86_64";
+      sha512 = "619787bcc7b1a0ca6daccf6e5a555be342c09d7fb6f55c2fea3ca340a1852faab87bfb2af9f6828dd51fb94cc3a799d577f5b0b3561b7039e8fc177ae1bb8df4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/kk/firefox-67.0b7.tar.bz2";
+      locale = "kk";
+      arch = "linux-x86_64";
+      sha512 = "74478792242cb29304c37c7aafcb17783da6c7d7ae75e4307f20640104bb4a9e232c709082d30747a66c4bda87fac4020f9672c99b6858b9b08765f9253b4b73";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/km/firefox-67.0b7.tar.bz2";
+      locale = "km";
+      arch = "linux-x86_64";
+      sha512 = "8c62ada471c71c98344ba08e83593e78c6de6a4f95016fe48e444bb4bb36c727475268ad58adda8212f37229cc1f785df78f3b843e8b55905c661bfdb2a3f334";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/kn/firefox-67.0b7.tar.bz2";
+      locale = "kn";
+      arch = "linux-x86_64";
+      sha512 = "77f8b91894a9c94672f71375bc83692a40771beacffa66ae76624cac2633138280e9a0ca5bd1f9b91373a7c31e26ff7fcc1eb0cd148c8b881890ee374a9dbb67";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ko/firefox-67.0b7.tar.bz2";
+      locale = "ko";
+      arch = "linux-x86_64";
+      sha512 = "ba8129e14fedc719ee60dc382dccec57f6d6bbf010da46d7853d99cf60b2f8cb8f685f2551e8e32e052745de4cdef214f3fce1fad5ecc73e4eb81253f4ae72e9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/lij/firefox-67.0b7.tar.bz2";
+      locale = "lij";
+      arch = "linux-x86_64";
+      sha512 = "c8f093d027bc7ad7b5cc92b4a756ff0fa216607a27e6bff28545d140a8d4730cdb32c4e222ef0998ce3ca3a20c2a11c83d66a88858fc9614dcb65b77926ab89a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/lt/firefox-67.0b7.tar.bz2";
+      locale = "lt";
+      arch = "linux-x86_64";
+      sha512 = "51088c7053b8f0654202b508442f808c0d66498aa80f7bbaa92b4084115ef71f250afdbad1e5957e1c5798ec164f5d86c0d61e7a99dbfd2a1cf2df17f3ad3da9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/lv/firefox-67.0b7.tar.bz2";
+      locale = "lv";
+      arch = "linux-x86_64";
+      sha512 = "7fce010fcade668aeda3a322376e3753f1bffb853559a76c573babd2cd553e032fccc0cc9a71ddb437b8aed87560ff1bdf3458e39d2d81bdc8bc916e8716e9fe";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/mai/firefox-67.0b7.tar.bz2";
+      locale = "mai";
+      arch = "linux-x86_64";
+      sha512 = "8b641a43ec2633ee07c065e33681f81dc36805b13f3221485d1fc4bdb1ffeee4df79d378d1f50720943679030662f89dae42e005a01ab9281aed090c994b0cc8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/mk/firefox-67.0b7.tar.bz2";
+      locale = "mk";
+      arch = "linux-x86_64";
+      sha512 = "2fa98f6d1f35419ae526f062f6742be138daa4715f501d49b5ee2bb7ef63edacee8283245fc2ab81d484b0625a39e58fccc2aa9e255f56f980d37bde86fa57ed";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ml/firefox-67.0b7.tar.bz2";
+      locale = "ml";
+      arch = "linux-x86_64";
+      sha512 = "cdda564dce2c6178f33fb79f26d007fb96b544de3c4d0b5fc67d689cdea1c5b99dceb91f3ab9922c00c725ca8b15eb555c7ec7c661981a2159f7ac1af78474d8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/mr/firefox-67.0b7.tar.bz2";
+      locale = "mr";
+      arch = "linux-x86_64";
+      sha512 = "264be2bd1a0e73a84485419bf80fe04b3ebfe60de588ae6b2b7130ef5867139f285fee577d8bd50b5b161a040ab7d90d3cfc37dc26cd5461d412c667302128b7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ms/firefox-67.0b7.tar.bz2";
+      locale = "ms";
+      arch = "linux-x86_64";
+      sha512 = "b33d82fdb3c566060553986d796f5e3d405d748029efc814af8c412328522d52c5cfbcc52071c75db6453bc4097d7fad8c40ac897822ba7f3b1237c14735e81c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/my/firefox-67.0b7.tar.bz2";
+      locale = "my";
+      arch = "linux-x86_64";
+      sha512 = "696a6e013b998b7525b06d6247ebcf658276eb23fbf82a6beed6264a8ed754df367242ad6b70e36e76f84c86116b8186819ece9c4db8964a531f225e84ccc9fc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/nb-NO/firefox-67.0b7.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-x86_64";
+      sha512 = "7871bb5bb005d8cda4bc8f37029fee266b303335791fef063dacd5b6146631ba50f7396ef7f2874bb90d21c738fe88f8ea470636e229914888a2d9b3f87af228";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ne-NP/firefox-67.0b7.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-x86_64";
+      sha512 = "79b2f7d885b2e06a6a3b66cff07c2f5004494e54fb251631ccf774bc95bd1e006e77f0ebace97401a4137742b3f6664abe8e63ef31b3221ce70ef81a91544d93";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/nl/firefox-67.0b7.tar.bz2";
+      locale = "nl";
+      arch = "linux-x86_64";
+      sha512 = "cb889ade72f02ed026d5363c4ce3858856c2c472b9116f89add41fcc54086deef0c95e16c5cb4dd984534e18167a48330738a2701beb07ab7a316e58fe9e71c7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/nn-NO/firefox-67.0b7.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-x86_64";
+      sha512 = "1969741dda5c2637f6b11eb0d15c3b49b425f440dc37a688d33292b1f4e5742de45c22df0f1097265e0b68b1769405a25f3338519e14284749dac1aedfb455ef";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/oc/firefox-67.0b7.tar.bz2";
+      locale = "oc";
+      arch = "linux-x86_64";
+      sha512 = "ffe7886c6a79dfc496e9a60ccb939b9d3641152ec93036a13eb1e3939d1e497a030b4c0332868673b81fcaf7a1a84ce52ed7f2aa656aff9bcc18fc00bceeeee2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/or/firefox-67.0b7.tar.bz2";
+      locale = "or";
+      arch = "linux-x86_64";
+      sha512 = "227875a863199d30d1a64432249cc9c2692edabec3bf04fccb747f10ba3e4874e1fe8d3ff7164c2d58ae4d49071672082a82b554aaa9da18f0e491dbf7886bf2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/pa-IN/firefox-67.0b7.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-x86_64";
+      sha512 = "127685a93f4ca5c073c480ba2f3ff84d5d5a063671e325feb8620255978121aaf391c4ab759a3ea013847d9e416420bb3a7ef74cd4087f6ff3a6bb16a97e219d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/pl/firefox-67.0b7.tar.bz2";
+      locale = "pl";
+      arch = "linux-x86_64";
+      sha512 = "f8166b5258ef763c91cbe5b917b12405d57dec0d905a35acf534ce6554fb43f08e8c86ee9db012464a11ffd76688c5b0c2b4343367ebf071d1e68aa3ce147891";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/pt-BR/firefox-67.0b7.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-x86_64";
+      sha512 = "ba05cebc862fff1764a8cb2a2d3fcdf542c42e5ed453df7605733750318b8257754a20e9a3aef12e8740d647e7aaf7451e6507beb30abc6b87714d8307c0b777";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/pt-PT/firefox-67.0b7.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-x86_64";
+      sha512 = "7d76b136ede93cdc4d06a9afc645ca74f06eb56d63be7914a696e6f9d1282eb9da5be72535e46a48007115d37334d5bc3a5b4ac954c486a5af8cf94e9bfe1352";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/rm/firefox-67.0b7.tar.bz2";
+      locale = "rm";
+      arch = "linux-x86_64";
+      sha512 = "83ea66dfa3c4674c7f58d18125ff0886d4526740c6c697ff049eb4953179904b868065a053c15ff72308c822513dc523e4706fbd0bfde30eda7fa6802c9f9be9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ro/firefox-67.0b7.tar.bz2";
+      locale = "ro";
+      arch = "linux-x86_64";
+      sha512 = "c00bb8c7e6d1c39d5ceb7d33f967eb1d63f28baca1da07190f4b422049c1f3a4d7162abbbce99d9f5b353e3e04b856e919d438ebaea4be664ce74e92cd0c58fb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ru/firefox-67.0b7.tar.bz2";
+      locale = "ru";
+      arch = "linux-x86_64";
+      sha512 = "c8d26a7ebe38cf9b9d7d3d212100bae71f33db180ed864d342f2446998b0362a7626b704792e76ebabb70f00fb204629585fd30125fff257087dd81e7ac34312";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/si/firefox-67.0b7.tar.bz2";
+      locale = "si";
+      arch = "linux-x86_64";
+      sha512 = "f0cff6dce739353091fc49d20a38c7c8d911e4870aa56688b67a81315d7e2c7802affd333604f2b6bce3d3422e915f74b66e92ab6c3a9bfda91fa06d6dc9fd7f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/sk/firefox-67.0b7.tar.bz2";
+      locale = "sk";
+      arch = "linux-x86_64";
+      sha512 = "ad6039a84f9951a96df13a4fb1210d068d8e9d83aaaaaf4ce5af70641273be598c42be5d7dc04de3ceff19bb821ee0c2e6799aa81fc77b093decbd2342f91afd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/sl/firefox-67.0b7.tar.bz2";
+      locale = "sl";
+      arch = "linux-x86_64";
+      sha512 = "243dd384fc56462e0b9b03ee1e9d128a207482d58c4b86fa5f5cecf103e2f5ee97c6b211f073c57946594a5528182ba2495cf21791272a2cc66ece7059954492";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/son/firefox-67.0b7.tar.bz2";
+      locale = "son";
+      arch = "linux-x86_64";
+      sha512 = "bc929d4d699b382f7452daec9028b2fa25668621a6001a0ab5cc668c582996f6f490ab399d068b3cbda679ca10d416cd6b73ae08352f30e6f8a10586ee4a3433";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/sq/firefox-67.0b7.tar.bz2";
+      locale = "sq";
+      arch = "linux-x86_64";
+      sha512 = "b9700033307e7aabcb54fb198af0119d576de3bcb774338d2cbea8e88c53f8b7031395bc72d5713d5b4268fa5adddd9c00bb010e816064c98371cf0a65d7f9c0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/sr/firefox-67.0b7.tar.bz2";
+      locale = "sr";
+      arch = "linux-x86_64";
+      sha512 = "543df36ac28a266f45f75889227534145803f65b3701d134fb62e507743320fe8f56b078d4f42d193b65b51a06d00f2bb6c9de9599bb66572f0e014d6dbd8b56";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/sv-SE/firefox-67.0b7.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-x86_64";
+      sha512 = "cac64975be8c887b065bba9fe127d25d298893947a8ee957a75ba316ea8695001c498d7e942949f25b3323c7519c163c275710d635b173a75d8dff3ea38879f2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ta/firefox-67.0b7.tar.bz2";
+      locale = "ta";
+      arch = "linux-x86_64";
+      sha512 = "f7e744a20394315e5d5eca04b152546db49546ba8b13e6b99f61f248ed762c207ded2747e89ba73e84b63330d42b006f5c200417ac931f1c46694784eec8d76b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/te/firefox-67.0b7.tar.bz2";
+      locale = "te";
+      arch = "linux-x86_64";
+      sha512 = "1f6580c3744c3aa87e5c0b82d84d97081a6de8db07f6cfb458187f332d7d509a9a3177c51644ccd7a093ead843c92ec371b2e3b01602d7c751415c5b8d8711dc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/th/firefox-67.0b7.tar.bz2";
+      locale = "th";
+      arch = "linux-x86_64";
+      sha512 = "653b3aa5d1e62c1ff8d131d657474527da4711203c45a85e219f85107456d528e6fdba7124c5c303858c8274d585fb555883a5edd60aac58f4504ab69e906f7b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/tr/firefox-67.0b7.tar.bz2";
+      locale = "tr";
+      arch = "linux-x86_64";
+      sha512 = "6b797effabdfe357eb35efbd3631260032d732a7dbc8ebe2963e8e27b2c5db07f55e0e23738eed4f14479b5a0e26abc549843a11cec41297ffc78c2baffacd1e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/uk/firefox-67.0b7.tar.bz2";
+      locale = "uk";
+      arch = "linux-x86_64";
+      sha512 = "e8d0c9271d81cb416e3ddc78e6cdfcb326cdf42baab0beeb938ebc94b469b1071e66497d1f30693b7b90b03dcfa3e0e9826c93c37559cf417303108f540f0b2c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/ur/firefox-67.0b7.tar.bz2";
+      locale = "ur";
+      arch = "linux-x86_64";
+      sha512 = "4a19ce739f4c3afef097123ffb8491ed3f433a661ea06c908c9ccd4f2e06af1e6a599ce4fcb58ed02876bd45ae00c23f8ea3fb28786cb6456b1d2399b6acc70b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/uz/firefox-67.0b7.tar.bz2";
+      locale = "uz";
+      arch = "linux-x86_64";
+      sha512 = "b768bb27409f056818543ff0491f50fd954ccb22a2a17a2eaddcd5f4a5295c0c6d510050659283e70bdfdbcfe145776624111f4ae17c4b28a95b12f98fc31665";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/vi/firefox-67.0b7.tar.bz2";
+      locale = "vi";
+      arch = "linux-x86_64";
+      sha512 = "664e3ca40e13489fc66824639616a605f0a5227ddf4f1f9191204e95a323a64ba9ba1e025787ac669c6eb11ed61c3a70eac686f8a36aedadbd4a8199dcf5380d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/xh/firefox-67.0b7.tar.bz2";
+      locale = "xh";
+      arch = "linux-x86_64";
+      sha512 = "06e70c70539d568814f1bbbe76932d19baa02b4e449566a2c9cda8c67d24305debe01e98b95d8dfa8fee47d1f93dbf4d875dfee0bb20f006a18b2c4689312875";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/zh-CN/firefox-67.0b7.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-x86_64";
+      sha512 = "e167ae10b29a0313ffe6e2c0f9e832b11a4563a0a848d8ce3f3d74d99d0b6060b3d947e8f7779ca9ce93418bb59cc84dddf0183baa295e83a59789e029be7d24";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-x86_64/zh-TW/firefox-67.0b7.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-x86_64";
+      sha512 = "e1213d631b1e7f061829860e468ee57b0188cd5b33cf64c0c3a60ea0ecf2efe041ea0081008883aa15f5a204c78d0e764b84bc76e2f43c85d6710fbc87162dc6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ach/firefox-67.0b7.tar.bz2";
+      locale = "ach";
+      arch = "linux-i686";
+      sha512 = "cc6670bf09ab557ee746e750718871082cd3a2e1bd29d01612edd2e1cf5efcd2314fd806c78f3caf4c22407f8b89dbab014349570e40e20a5707559284fe2b5c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/af/firefox-67.0b7.tar.bz2";
+      locale = "af";
+      arch = "linux-i686";
+      sha512 = "af7c92690c6b6c4f060fa0fb6e07a079e30cfd9cec8776ba10e7486eb58f5beddcb80fee5eca56ca683c1f600f55d49792a0a6251a15d37bb9e032aa7af1fb96";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/an/firefox-67.0b7.tar.bz2";
+      locale = "an";
+      arch = "linux-i686";
+      sha512 = "941f9395026952442df31e69f3c343e27f5b9cabf8bbffb440f0bd9467559f3a725ec7419533191fded2e166f18b140a9eb36fa65fac588f71f8c0e533e2efcf";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ar/firefox-67.0b7.tar.bz2";
+      locale = "ar";
+      arch = "linux-i686";
+      sha512 = "613c2736af5a0ab9f9033a50353286538578c1414f908832e20df51f07e308fbbd5dd6705f60bbe39fe7d945542d0b76d902517b7b56f99bdc28e58f50f7bdfc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/as/firefox-67.0b7.tar.bz2";
+      locale = "as";
+      arch = "linux-i686";
+      sha512 = "04adae89682be2eb9a6f93e65878a80916c572e24b0fc53ac0896272878cce0e8d1395257410cb088d5a20129c76479aaa6387d6f502e7253c16fa765624fcc6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ast/firefox-67.0b7.tar.bz2";
+      locale = "ast";
+      arch = "linux-i686";
+      sha512 = "b169f44b0e7f6361d1181fa6124218949839d43c6b110803b09bbe38a82276f96954e36eb0d8f90d528746f7916b260ed0b0bde45b7c1b372875bc95887b4f13";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/az/firefox-67.0b7.tar.bz2";
+      locale = "az";
+      arch = "linux-i686";
+      sha512 = "1e4b74ed6102b7ba8e8e6f40f3de36788a9654e98b9f56cc0d5a84a83d67909a85c29d93f941cab572687186dec43bda24ee37d46c008b8d21d6760c658184f7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/be/firefox-67.0b7.tar.bz2";
+      locale = "be";
+      arch = "linux-i686";
+      sha512 = "cb6a52927341c5c10bc34126ffcfd40e60201254c18d0a05212c5202eb0e44e31fa19826f635f75280ad310a6a61a0a7c764e4bb84dcc7ff31ffb534797875c8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/bg/firefox-67.0b7.tar.bz2";
+      locale = "bg";
+      arch = "linux-i686";
+      sha512 = "4c7a5083a7b656182fce99238f52c8f197d108d33b40cfdf97ffe477963547a08b8bcc295464adf8ffc40df2f4b5feaa28d25ad294a4a9e7fc0759fb2ab9db7c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/bn-BD/firefox-67.0b7.tar.bz2";
+      locale = "bn-BD";
+      arch = "linux-i686";
+      sha512 = "5626d60a4369b7ba31c2c860c5eb050af60724ece57cd4a1d5b9483660787fb11ec76ba8e4bef78de42850dfd90a44fe36d43f48a738ff271f2fd35a295680ef";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/bn-IN/firefox-67.0b7.tar.bz2";
+      locale = "bn-IN";
+      arch = "linux-i686";
+      sha512 = "d0dcbece3d24ff4c56a7df33414f7795a7fb7b991e26c552340e969349e0b5a3519e95c8465f4ff5dc5a7b9a11dd13b7e730b43130e34afca766912cf6a4a36a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/br/firefox-67.0b7.tar.bz2";
+      locale = "br";
+      arch = "linux-i686";
+      sha512 = "d8d424953af0c782e7c4b17bec49a9dd663d8a0da92cadc8010344c079f81b120573ff64cedbaccb4eb85826e6d7feec12b7e2bc5ec3b508997729fba13c18ac";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/bs/firefox-67.0b7.tar.bz2";
+      locale = "bs";
+      arch = "linux-i686";
+      sha512 = "4da5029faf08b6fdeeb1eac89ebe49f59748c06e77a1ef13d503eb71e33b5362c74474a35f7a907f528dc0f59b78f989df45d8c35e83e6ef971c425fbdb3a0a0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ca/firefox-67.0b7.tar.bz2";
+      locale = "ca";
+      arch = "linux-i686";
+      sha512 = "f990b67201656b18109c6827853bf064d7726fbccde19e5058c7860b2e4b993eccf1925d2a77d4b1c4ef4c3b3fa4f2368c49ee0e67da0405b762ad39edd91f94";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/cak/firefox-67.0b7.tar.bz2";
+      locale = "cak";
+      arch = "linux-i686";
+      sha512 = "f0e6446b82a011513a603e903b910838686db5b771215deb5620c476f51cc27e2f7ec115f876cd710a1255e4edc1bf888afd9f1b370bc8fd5d4a40c3fe99cf3c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/cs/firefox-67.0b7.tar.bz2";
+      locale = "cs";
+      arch = "linux-i686";
+      sha512 = "9a0246263397595b5aaf23b0d73921cd25d57db315717bde934b67aea0ff917869948efdaa25465185f8352ad9e7b1e8f784cbd3d79c04c0f5ab9d34428ceb77";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/cy/firefox-67.0b7.tar.bz2";
+      locale = "cy";
+      arch = "linux-i686";
+      sha512 = "34f72078d377157739b407f685e9c6835539c9e2f535bb52e12141c94b993ac1e389b251f316bc1a3a6d5682c7de9f2484b18e48cc6c39a18add56eff17df0c2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/da/firefox-67.0b7.tar.bz2";
+      locale = "da";
+      arch = "linux-i686";
+      sha512 = "5743b79c209e89dbc9c902dd7609581577765719d1e0148373f85ebcfd3b5a2f225c758033583455353af22314651a7ddbd447b65de7c637b4ccf5eef4401a65";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/de/firefox-67.0b7.tar.bz2";
+      locale = "de";
+      arch = "linux-i686";
+      sha512 = "4f22bf0fa90f9fb4156815fb9cbe0e8380b7b36347f548e34709a38c2b02beb324645f0084148c2b054e2610d8ea0029e68db174cbfff95531d8f339c153bd7a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/dsb/firefox-67.0b7.tar.bz2";
+      locale = "dsb";
+      arch = "linux-i686";
+      sha512 = "3cbf358e86490dc3c466fdf69a9bb6bb2bbbf56059a81bc2e1d551998ec07c319d7e9d467bad61e6e73f06fe2235254fbe7b2690c9f8c426d4e332851ae18f56";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/el/firefox-67.0b7.tar.bz2";
+      locale = "el";
+      arch = "linux-i686";
+      sha512 = "fe632688fcfbf523e9ba3c1c7adb134631900f37dea6381fb41c4a7fce67034c0033417b5ef8c87cb33b303712fc309620844614f8719dfc440ae634c1dc18a0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/en-CA/firefox-67.0b7.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-i686";
+      sha512 = "15a26c6a0ec18625708b0779f00d6831146f5146f7ca0bfe35b00808ce45a3ebf29f129dcaea5d2799feeb1ce7b0055f76f704f448b884a36a354df4467adfbb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/en-GB/firefox-67.0b7.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-i686";
+      sha512 = "5b756fca80fc72c6f3925bf1df427da4a118753bf30641b266c6c392705ec87834c1fc46ac08c1d54d032ddd4abd6fc35a71f47fc89d04c766c094d863daba1e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/en-US/firefox-67.0b7.tar.bz2";
+      locale = "en-US";
+      arch = "linux-i686";
+      sha512 = "00f3682c17fa8276e7f79ffea28b80a59b20063f6a945fe7b81265966cfcd526bf10272cc174aa600e4393c6e5b894b90673dbe170fe571f03412d403dfd630f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/en-ZA/firefox-67.0b7.tar.bz2";
+      locale = "en-ZA";
+      arch = "linux-i686";
+      sha512 = "8fcbc170bb6efa955b577c7071e1c78fdde129508bb47ae2a266d6b79e980f82fb3c615a7453f3eec6db3f9352a4809fff2656c65a64f5bbc4afaf75fbb225d9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/eo/firefox-67.0b7.tar.bz2";
+      locale = "eo";
+      arch = "linux-i686";
+      sha512 = "05915f7e7f38fd0ccb9926ef96fe2641efcd42073d8acd18875a18fe3c63603fabbb66bfd83a24111678f1b38f8ef172c2524afd2a0e4632b8920853ed381751";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/es-AR/firefox-67.0b7.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-i686";
+      sha512 = "bb88d6801b9416b9767488ede19c52d9e9802d895dbfe2bb5408169ef43732e06696243126099e46619a08d8d705df4d66a6cf87ab58ce3cc8dc99fd8949b4cb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/es-CL/firefox-67.0b7.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-i686";
+      sha512 = "495c588e1059ed5d212c707ed5aa74a3aad8a372d11fed0da2f810928d645fee0d7d9aa28f1185ebd9aaa99baf14b1a0fe41e34b9e5aa7e00ecf46f9bc7b78be";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/es-ES/firefox-67.0b7.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-i686";
+      sha512 = "4be53b2d2fbef3ae7f1601b8869cbc57075a998c9847c8ed333ce9def39c3f23b9ebda61f14fb6382fe2aef5bf0a253f43da4d07d8f51080c0505c7c2cfb9e07";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/es-MX/firefox-67.0b7.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-i686";
+      sha512 = "090166a767ba1df247d74116fabaaf90f751c27cf7cf55282cea650e1f10747966aa84e813ae79c891041c3adcc44e165bbccf723d77aa8b9abb6e3957602a69";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/et/firefox-67.0b7.tar.bz2";
+      locale = "et";
+      arch = "linux-i686";
+      sha512 = "56f84137cd9643211ec1de4891261621eeb033aff71704318e69a39d034fe1ded0b3a78a1d98a90878b841e5ea4eceec7e3a3848dc6743a121c8616d216a18ee";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/eu/firefox-67.0b7.tar.bz2";
+      locale = "eu";
+      arch = "linux-i686";
+      sha512 = "91457da7072aa989bb18a35541f85a902cec6d425e583ea907c4ba31a65bfbb5991baae4357e0c1edab5696ec68c79c73e5033aa6fd14f2cf60940133c5eb245";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/fa/firefox-67.0b7.tar.bz2";
+      locale = "fa";
+      arch = "linux-i686";
+      sha512 = "3b29bb2e12c17773d18a157c8c4ef602d80b0e25c9bc399d4d803daa6bbbede64929064ea5daf4f0b0a514b4032801ba3fa8ad8d0dd45ee98a824c2daa852364";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ff/firefox-67.0b7.tar.bz2";
+      locale = "ff";
+      arch = "linux-i686";
+      sha512 = "411b8a922893fb37c05358c5da39b63c4cb8d1697667738bdc139fe2b2ac6f0ddf9b94ad7214a323cab69748990dd3a45effb336352c48eea92f48710ee6c40c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/fi/firefox-67.0b7.tar.bz2";
+      locale = "fi";
+      arch = "linux-i686";
+      sha512 = "526884ed9354b13eb3d2385d597eb43d2ec40ca8f0c106503f3e84a110c00c5da5422124aae2cc05c3e75999d4d50598909bb057a4dcaa389ab6dca726b3c378";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/fr/firefox-67.0b7.tar.bz2";
+      locale = "fr";
+      arch = "linux-i686";
+      sha512 = "fafcf0501a1624f145ba02b08c4e5e4d160af0fd3d9dd13c22726ddd8b40108eda1bbd3322ba84dc2fcf7ceb39593cb85c614efe5833ec32fae767cafad28c0a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/fy-NL/firefox-67.0b7.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-i686";
+      sha512 = "e6d12c42dee42740087121eeaf961d279e121e41ac79187e18fae5bba136ab27888b3b35b6db4899a8a77debdc785dab78c4b4fad08746e0e752b1082978e18c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ga-IE/firefox-67.0b7.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-i686";
+      sha512 = "44db77514fe972772b8331e9c502eb3417a810046046cb8ae48a1eda0984e299a58058a685d81c408b0a72f3172b24bdb57db70d595a2da93b90581d01a5b401";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/gd/firefox-67.0b7.tar.bz2";
+      locale = "gd";
+      arch = "linux-i686";
+      sha512 = "2b65bc81c0c9476b3196f5489eaf2f24502fb4abd585c0b1d9046a63a2bdb0f16a05e928369204ea028cb215a40a68a459c1c5f988c5d6882aa15d1e0a7b5b1c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/gl/firefox-67.0b7.tar.bz2";
+      locale = "gl";
+      arch = "linux-i686";
+      sha512 = "8d4fa0b6177b7926eb9f16c08e4b5f0e430add37622d712d77a2099c63e0fdc21ed9e2b7a72457868d968c1af42b3aa83b22c8f55cc913ce1d5eb913b12d1b2d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/gn/firefox-67.0b7.tar.bz2";
+      locale = "gn";
+      arch = "linux-i686";
+      sha512 = "1bf077f3282702124bbb968057942e2f701157de1b1e678cb55a0280907337952a0c3118ec874d0ca2ec26dc2063769b4cc2a2045e703c1761076e45e6c061cc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/gu-IN/firefox-67.0b7.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-i686";
+      sha512 = "405a61a2c70c26569059bcbbd1723ce378a9d6a40d5373e294c1e5064b503e5b68a42c77bd023920348bbcfc05309605e9ac102a3b1627525fb3ec3fbbc58be9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/he/firefox-67.0b7.tar.bz2";
+      locale = "he";
+      arch = "linux-i686";
+      sha512 = "09d8d4a4eb70ba7da3a7d90d61ebe23f3943b4bd2f06d356b1745e7d9297f1c2160312ed1c8077ddeb88f6ae27c675a5bb5f1f81e19d16c6675a5cf2385ebe0c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/hi-IN/firefox-67.0b7.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-i686";
+      sha512 = "c8c65bda9d1582df1b015425466d6806b41a09f4bf6e0146cc07932abc3e827db4fc89083711102b0716f6325e563d8e7a0a3c25af4f8e8f9bf31bc33a33345e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/hr/firefox-67.0b7.tar.bz2";
+      locale = "hr";
+      arch = "linux-i686";
+      sha512 = "2beffc8293f955476c10de22c8fe45a46ab7769ea8ae85f611ea23c3171ff01dcc2df50907ca876f5d13b299d5b0959d3f1cdfa5153427e116a84a08c05fb144";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/hsb/firefox-67.0b7.tar.bz2";
+      locale = "hsb";
+      arch = "linux-i686";
+      sha512 = "87efee6e2c24a0891193a1e745ab34f397e3c557b8c2e9491d2c935eb24bd221fa562b3f22eff71c1647ab55d87374e70541df0696a12830596dfe8aba23c6bc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/hu/firefox-67.0b7.tar.bz2";
+      locale = "hu";
+      arch = "linux-i686";
+      sha512 = "87732b73fbf821a8912a45cf873d4917dde729cd731d53c0c843d681d92681d395981152f93c1ea8fc415a93053974905fb03fcd6a4f71a7e07b12e0ea1ff9bd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/hy-AM/firefox-67.0b7.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-i686";
+      sha512 = "7dcc8bd376fdf4227ac74b1d24965d70b274975800fbde94682a24de3c1ef8348581be3ad9d0715f16c0c9d8ff4995c31e4d38d99d8aa72a50acbaf8d4888e61";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ia/firefox-67.0b7.tar.bz2";
+      locale = "ia";
+      arch = "linux-i686";
+      sha512 = "806b578c4005107896f6455e53987ab23785c737169a4f553d4e152345f4e77a7014f38a27407a4310288c0e2d08674b349f9f54bcd02c2b3fc7b30b27fc0a17";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/id/firefox-67.0b7.tar.bz2";
+      locale = "id";
+      arch = "linux-i686";
+      sha512 = "3c054ce894b6c61bde78f447095dda8352593da1879572234e10f0edb49fe89a0049f84404d45c6dea0e6e2aa75fd96a606e943260cd83166d447e65ecc435ae";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/is/firefox-67.0b7.tar.bz2";
+      locale = "is";
+      arch = "linux-i686";
+      sha512 = "3e0bc49ba210a864cf083ade56b89d1c78f93b2776cd3d71a1c3c649ecb5053942e9eda9a2d6eab97250268c9177bbb8d81c764860e5fa1a4ccf41f5e540fc0b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/it/firefox-67.0b7.tar.bz2";
+      locale = "it";
+      arch = "linux-i686";
+      sha512 = "f410dfa055193d5ec70807a9374b9c9ec92a9f5484d52f241ea15c35ea60be58e72442949036e153e4adaa0a56c0ef0070fcac13258561b35c6d09c5dc1b3b42";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ja/firefox-67.0b7.tar.bz2";
+      locale = "ja";
+      arch = "linux-i686";
+      sha512 = "b0dd90d9a944cf99d76ac5b2f68c81d90d2dfa4fd544f0bcdf239bf091ae0dc96d5a5b4d190531fe90f38bf0d810bbb75057f70ae8cc090416535821f3630794";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ka/firefox-67.0b7.tar.bz2";
+      locale = "ka";
+      arch = "linux-i686";
+      sha512 = "d7d91f22ed6d4ac25fe67685aaa947fcee5a624b4e501954809d9f2ac3abd150e19aac283636a10456f5d18b20f4a50084ace34bd8eba7a82ddfc0176efe8a7b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/kab/firefox-67.0b7.tar.bz2";
+      locale = "kab";
+      arch = "linux-i686";
+      sha512 = "825c0a1d1dcfe3206567bf24072c27a62e3a90ff839a59ff9402fb669df77a0879ed2d47904081c6c5315d5c8079f7fe4ba0468d8ee10e5f98539fa349e4709e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/kk/firefox-67.0b7.tar.bz2";
+      locale = "kk";
+      arch = "linux-i686";
+      sha512 = "662f37a871ac7b8b897428324ef31752bbe3fe64f319525e77a42d873497decde5153a8ede2de135e79f9e107f0ca014502d27cf11e1d94ccd7e63fb0e7d1da9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/km/firefox-67.0b7.tar.bz2";
+      locale = "km";
+      arch = "linux-i686";
+      sha512 = "ef722c12393f16945fbeea506f3463b37feb555db84558b2a193d810d4eaba0b94380784a2f1f0e8385c1e182a3137d5c11683bf6aa3525805b0383f1da70509";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/kn/firefox-67.0b7.tar.bz2";
+      locale = "kn";
+      arch = "linux-i686";
+      sha512 = "0b17f9793835559512f779e2939344775e8c29e8ff760fb3521e3425e8b306b6dee8de993837f894f55eff57e82756a9335acd35e26ddd5125540ba3037ef8a6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ko/firefox-67.0b7.tar.bz2";
+      locale = "ko";
+      arch = "linux-i686";
+      sha512 = "62e694465b436294aa52919e3184257e096300759da93cbad3cca823c64a6102b7221bbca36dda9eefc4459eb70969dd1141449d4118d5955abc45fcb1b84315";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/lij/firefox-67.0b7.tar.bz2";
+      locale = "lij";
+      arch = "linux-i686";
+      sha512 = "b86473816e14f0af2e916678c0dcfac61c315f8686194f25422d5a0179d7a741b1dd9e53f95ad09b9e59781e0dc179bc3ae598fd763c96811ecb8317903de980";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/lt/firefox-67.0b7.tar.bz2";
+      locale = "lt";
+      arch = "linux-i686";
+      sha512 = "c98e0f2c5270454817688aca95efb7af028ab46835e242348a0977bd6eb350d1cab8583829647d226b149a24ad2c8125b2ccff88f1c29046cef6e05e3081db9a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/lv/firefox-67.0b7.tar.bz2";
+      locale = "lv";
+      arch = "linux-i686";
+      sha512 = "bbc568daccced664a217d962aaedf48123bc123243fa3920c346bab6f85f4ea19ed3664d60a9179797c2089baf15e3dbfc8e2d84e56d2bc40a54f4ecdea2d032";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/mai/firefox-67.0b7.tar.bz2";
+      locale = "mai";
+      arch = "linux-i686";
+      sha512 = "10ff02bd9503c422692f39e27256d7a6cb2c1cd3b2188e493cac9b0158775c7f1c36e733433933b8290a7807ce6d6ae57c9c0ff46e6908300d0fb6e5b8c7f39e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/mk/firefox-67.0b7.tar.bz2";
+      locale = "mk";
+      arch = "linux-i686";
+      sha512 = "dc5438604cd8cec32aee799f03e7776f97ec03f50d473f19ca468fc7bee9c11ff5b92a8b14fbaad218b44c106b39a4dc7ebb63355c80cda4e925694b7635aa17";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ml/firefox-67.0b7.tar.bz2";
+      locale = "ml";
+      arch = "linux-i686";
+      sha512 = "b6de0d78c6202e2677aadcb0792989277585c5626d41d12bc48b982566879b5cf35ad44d8ad05cc6d09b1ee0e063685c87ffe768b6791375505b192016fb328e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/mr/firefox-67.0b7.tar.bz2";
+      locale = "mr";
+      arch = "linux-i686";
+      sha512 = "f8660c94c8316de8ba94f9d5aad35ab3ecca57cb307bb49f5ee5867e3fee12405c210f982f617fceba69b4b8e4ff2c49767d28a00b1ae5643172ec5475512316";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ms/firefox-67.0b7.tar.bz2";
+      locale = "ms";
+      arch = "linux-i686";
+      sha512 = "b11a9c2ec0abc8c623e3d1a13eeae1b184f2b2ff5ad9f8db62a4e5da118da2ea9dc02113d2f1a54246a07c7fc1e041942cdff4e44056e5584815fe0e4d0ad99b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/my/firefox-67.0b7.tar.bz2";
+      locale = "my";
+      arch = "linux-i686";
+      sha512 = "08aab48716713a02d779ea41a1fe7396a199336a84b79c97a4bd8da3201e71e5c1afb48acf731fc9653316b05d53cce0f85a1777fbb7e2f02de7452e137d2727";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/nb-NO/firefox-67.0b7.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-i686";
+      sha512 = "38e7e2153151f40c69712ace80bf9fa23aadc1024a2da2e8b54bc304e97f9cf3f0b93779e194ca7d352ca58234eb056cd9bbc81537f666bd4c406057c88ffdce";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ne-NP/firefox-67.0b7.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-i686";
+      sha512 = "802a0832d0767ef3618690da5a30117b9d41bcc0aeacca32657ecc57c39db1fb495ecbe211a47976803f50f6a314df08ffe7e1b17c436786d98e31e2ff4423f5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/nl/firefox-67.0b7.tar.bz2";
+      locale = "nl";
+      arch = "linux-i686";
+      sha512 = "56616e78daa5c44a2e7cddb64e50cffe0daaba8a245f12d842e6d7657dc22ac030ff98630d2cd1693454fb9859bb62fcd3119affb9cc950ce7d06a1eab123cbd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/nn-NO/firefox-67.0b7.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-i686";
+      sha512 = "245d00bd0517f8b7cfbdc60a04fe37ce491dec9106824c2efeba8ea401e502a1d49c9d5e88ca3b0c712dc74beded5c19b4115922662373ccc3e185802547e7fb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/oc/firefox-67.0b7.tar.bz2";
+      locale = "oc";
+      arch = "linux-i686";
+      sha512 = "b18dce7f515d26ad694370888a9b78710d5ae75e99eff6274ea29bbba7e9c8959013eeef8a20cc2709c318c9cc054b4722ccf0f13bc583963e1b50df84eb4d35";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/or/firefox-67.0b7.tar.bz2";
+      locale = "or";
+      arch = "linux-i686";
+      sha512 = "c4ace90090a9473dbbb14575980e8598f998bbec64db3d9d9f77730ead00698b63f0992b95d82b21e73d0797278a87890a485862df19f0c1c972c31b97a70857";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/pa-IN/firefox-67.0b7.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-i686";
+      sha512 = "3a25e29cc1e05ca625a2f420fb4d027532999fab675ada891d8b8b54c502ad40bad408fda7f8ec9a3269e25948e8a42424b8a2cc7b1e228825106c8da5a34099";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/pl/firefox-67.0b7.tar.bz2";
+      locale = "pl";
+      arch = "linux-i686";
+      sha512 = "cb6631f1dc737157ea0d17552437f2ed5cadc36e390d485390aeaff85fabd11780d3a5d1d9217e2129a53fce30668ca20e68f32470766712c2e767e8a26defb7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/pt-BR/firefox-67.0b7.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-i686";
+      sha512 = "f50a5a71514fdd0c82f9cca78ac67cc984772abd5f9109f60270db64f81f3832e8612ed3b6c23e91642017da9b16eda825fe783ee28eacb29edfa23b1e6c3d04";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/pt-PT/firefox-67.0b7.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-i686";
+      sha512 = "dd99864a07358442c3e97cc889e1a891df6db469f6238c13b36acd6fef38063de5bb307319fdcfd82c91a66a9f67f6170b0a6379f6435020fe30e69884829076";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/rm/firefox-67.0b7.tar.bz2";
+      locale = "rm";
+      arch = "linux-i686";
+      sha512 = "2d8f8a8c4d9398d02adcc9d827b76352b761235ed5c43ea0c4ee5798d19d611e3aeb9fe4f44df874a96a1905bc7c5e9d7f16b85606c62bd4508e5120fb5787e8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ro/firefox-67.0b7.tar.bz2";
+      locale = "ro";
+      arch = "linux-i686";
+      sha512 = "513698be75508cd4f59da1fa8f81b5954b5082c402cde9a263a58dfaca9e27f7aa5dc87eb0d4cf6f15facc2834c6ad121cfb89744c1b00c19181a2f05c31cc1b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ru/firefox-67.0b7.tar.bz2";
+      locale = "ru";
+      arch = "linux-i686";
+      sha512 = "c4cfdf7a472bba06ab3035845c996b54a3e08f5f4cc380fdf8752b5d57aa3dcedd9248aa1e0f92655762e2efed8e8ab1901968d65b66ae565b60404fffd654de";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/si/firefox-67.0b7.tar.bz2";
+      locale = "si";
+      arch = "linux-i686";
+      sha512 = "ba8bef7194359cbe9a1a52af4ea5e8615a3e3688cc0d575c76fda5319684aa336c59e2492ecaf65ecc68939996243fc07f910e3a2c4a36de876130abe100dba0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/sk/firefox-67.0b7.tar.bz2";
+      locale = "sk";
+      arch = "linux-i686";
+      sha512 = "afed2ee53d88d86bf45923cbf00952914c01b6b70909079a25fede7db3cb221433c5957788875a00e5788cf83a24f771399c8ca77661d042fa58de967b8fec55";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/sl/firefox-67.0b7.tar.bz2";
+      locale = "sl";
+      arch = "linux-i686";
+      sha512 = "5482c61f33923473af23ac5819e6fe379c497ee4dbf205fd1df14903bb59c74fa41f2aca9a98116383675848748a992a11cb0fafbfb227b41fd168c071810586";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/son/firefox-67.0b7.tar.bz2";
+      locale = "son";
+      arch = "linux-i686";
+      sha512 = "6b5dc673099a66390dfb9307a93f9852ff8c2e6f4ad42e3ca3988fd53b5bc2fc03f51bd91d1b93cfb4fa7d6f481681182e961e08c84558e14cc19f181189fd60";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/sq/firefox-67.0b7.tar.bz2";
+      locale = "sq";
+      arch = "linux-i686";
+      sha512 = "ef584e79c07fce073e188ff5ad24138c59b764b144a5eb80847142887ac007d47336338e75ef69f1c27063294e2d65cfcf7c49a25ca59b294481463f6add1b9c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/sr/firefox-67.0b7.tar.bz2";
+      locale = "sr";
+      arch = "linux-i686";
+      sha512 = "9ba0eb04dfd9355163baaf446d3b62be4ddaedae82558b5207fcb4ee08c315d1f86606cd917451fc6d2bf1dd33693ded40f66e17aa399a0f33187b038fb0a04e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/sv-SE/firefox-67.0b7.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-i686";
+      sha512 = "4a764e632fff6ebe332e02473a17038ae6fbcff261bfd8ccc109751208002864bbdd9040a0ed706862f57f217b4dbe2e771982837ace14bc11177624d396452a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ta/firefox-67.0b7.tar.bz2";
+      locale = "ta";
+      arch = "linux-i686";
+      sha512 = "b15916fe4d9fd6fc634c98da18de4ab970b52bafa1cda862ad81fbea2713ae40e11a2e472e88dab813cf6e26158cd2bbad118b8bf48061360ce0cd6f3ab8c669";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/te/firefox-67.0b7.tar.bz2";
+      locale = "te";
+      arch = "linux-i686";
+      sha512 = "4f25e30a084e2308739a60513ccbcc4eef516cc61879cb75411b150237164c0093d0fa6edbcdaf4e96815fdb4f7e87e4ea2cee8d60cfd488002b6459530eb682";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/th/firefox-67.0b7.tar.bz2";
+      locale = "th";
+      arch = "linux-i686";
+      sha512 = "0245154e664a10a646fdbb6cea2c565a4830a34caf4ce6eb86508bd96d7c6e95de447d4b023ea28f5937d6506b439f137580e059b9cc149f01b8d7d112caad39";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/tr/firefox-67.0b7.tar.bz2";
+      locale = "tr";
+      arch = "linux-i686";
+      sha512 = "ffc35c836068960c96bbaaf1561c0d7260a190bf01f37c4f256d360747b52cc28d980c9fe63dd2f2a282f148620adcb9b37783e217ae0de10edfae3b08093366";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/uk/firefox-67.0b7.tar.bz2";
+      locale = "uk";
+      arch = "linux-i686";
+      sha512 = "ebca303ac7b6b276596421788e72bea9b473810b5de4c9c6aad1a4631db560e4dbf34f1a938aeafe318c93f2d511ff7330a9400f032e9fcfc04be30baf99cb42";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/ur/firefox-67.0b7.tar.bz2";
+      locale = "ur";
+      arch = "linux-i686";
+      sha512 = "09462bea4096bea32afb94f79e9f20bb5c41f02b35a4429103389d3e8ff898c18ccfddb13db33dda4af8315b6acf76b24008b70bf0d3c8331e6e812fd924290e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/uz/firefox-67.0b7.tar.bz2";
+      locale = "uz";
+      arch = "linux-i686";
+      sha512 = "267c646d61be23f11e4139365b463c746b0adfc5ee7f3248c8f48c093e1706b468e187e574fd12330a8cb5bd062940eb383c9c6d42d0159f12b3eff6933c3a55";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/vi/firefox-67.0b7.tar.bz2";
+      locale = "vi";
+      arch = "linux-i686";
+      sha512 = "4f4aad99ab5ac6ea231f0dd3384487c5577f9025d3e83e6960146435767e3133267495d781b04112c4a4734548d643310c6bcc7b97fa57c917798dc127f8a5a5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/xh/firefox-67.0b7.tar.bz2";
+      locale = "xh";
+      arch = "linux-i686";
+      sha512 = "3c422d7a1089ac4405bea8268d48a56bfffa1c15fcc1362bad00f045200f2deac14bb31985cca2476a226998a55f2f6ffdc27c17a1fb7e28d667770102147fd3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/zh-CN/firefox-67.0b7.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-i686";
+      sha512 = "b7d06b17e5a652c87a2b644be00c3ee6eded4b6a7daf79e7663d6452b7c7e5506971b819296b7c251a17055747e6b310e60ead1ca08490bba8d056df7424942d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/67.0b7/linux-i686/zh-TW/firefox-67.0b7.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-i686";
+      sha512 = "a5ef8efc618641fe7af9fd645388a6942ceabdd6f239c37af7776f753e3703802f707c64925e7a151d4e80acb2a720c4bfd1f8969db053a708616e0191bafa4f";
+    }
+    ];
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix
new file mode 100644
index 000000000000..4262609c66ba
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix
@@ -0,0 +1,210 @@
+{ lib, stdenv, fetchurl, config, wrapGAppsHook
+, alsaLib
+, atk
+, cairo
+, curl
+, cups
+, dbus-glib
+, dbus
+, fontconfig
+, freetype
+, gconf
+, gdk_pixbuf
+, glib
+, glibc
+, gtk2
+, gtk3
+, kerberos
+, libX11
+, libXScrnSaver
+, libxcb
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXinerama
+, libXrender
+, libXt
+, libcanberra-gtk2
+, libgnome
+, libgnomeui
+, libnotify
+, gnome3
+, libGLU_combined
+, nspr
+, nss
+, pango
+, libheimdal
+, libpulseaudio
+, systemd
+, channel
+, generated
+, writeScript
+, writeText
+, xidel
+, coreutils
+, gnused
+, gnugrep
+, gnupg
+, ffmpeg
+, runtimeShell
+, systemLocale ? config.i18n.defaultLocale or "en-US"
+}:
+
+let
+
+  inherit (generated) version sources;
+
+  mozillaPlatforms = {
+    "i686-linux" = "linux-i686";
+    "x86_64-linux" = "linux-x86_64";
+  };
+
+  arch = mozillaPlatforms.${stdenv.hostPlatform.system};
+
+  isPrefixOf = prefix: string:
+    builtins.substring 0 (builtins.stringLength prefix) string == prefix;
+
+  sourceMatches = locale: source:
+      (isPrefixOf source.locale locale) && source.arch == arch;
+
+  policies = {
+    DisableAppUpdate = true;
+  };
+
+  policiesJson = writeText "no-update-firefox-policy.json" (builtins.toJSON { inherit policies; });
+
+  defaultSource = stdenv.lib.findFirst (sourceMatches "en-US") {} sources;
+
+  source = stdenv.lib.findFirst (sourceMatches systemLocale) defaultSource sources;
+
+  name = "firefox-${channel}-bin-unwrapped-${version}";
+
+in
+
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl { inherit (source) url sha512; };
+
+  phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ];
+
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.cc.cc
+      alsaLib
+      (lib.getDev alsaLib)
+      atk
+      cairo
+      curl
+      cups
+      dbus-glib
+      dbus
+      fontconfig
+      freetype
+      gconf
+      gdk_pixbuf
+      glib
+      glibc
+      gtk2
+      gtk3
+      kerberos
+      libX11
+      libXScrnSaver
+      libXcomposite
+      libXcursor
+      libxcb
+      libXdamage
+      libXext
+      libXfixes
+      libXi
+      libXinerama
+      libXrender
+      libXt
+      libcanberra-gtk2
+      libgnome
+      libgnomeui
+      libnotify
+      libGLU_combined
+      nspr
+      nss
+      pango
+      libheimdal
+      libpulseaudio
+      (lib.getDev libpulseaudio)
+      systemd
+      ffmpeg
+    ] + ":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" [
+      stdenv.cc.cc
+    ];
+
+  inherit gtk3;
+
+  buildInputs = [ wrapGAppsHook gtk3 gnome3.adwaita-icon-theme ];
+
+  # "strip" after "patchelf" may break binaries.
+  # See: https://github.com/NixOS/patchelf/issues/10
+  dontStrip = true;
+  dontPatchELF = true;
+
+  patchPhase = ''
+    # Don't download updates from Mozilla directly
+    echo 'pref("app.update.auto", "false");' >> defaults/pref/channel-prefs.js
+  '';
+
+  installPhase =
+    ''
+      mkdir -p "$prefix/usr/lib/firefox-bin-${version}"
+      cp -r * "$prefix/usr/lib/firefox-bin-${version}"
+
+      mkdir -p "$out/bin"
+      ln -s "$prefix/usr/lib/firefox-bin-${version}/firefox" "$out/bin/"
+
+      for executable in \
+        firefox firefox-bin plugin-container \
+        updater crashreporter webapprt-stub
+      do
+        if [ -e "$out/usr/lib/firefox-bin-${version}/$executable" ]; then
+          patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+            "$out/usr/lib/firefox-bin-${version}/$executable"
+        fi
+      done
+
+      find . -executable -type f -exec \
+        patchelf --set-rpath "$libPath" \
+          "$out/usr/lib/firefox-bin-${version}/{}" \;
+
+      # wrapFirefox expects "$out/lib" instead of "$out/usr/lib"
+      ln -s "$out/usr/lib" "$out/lib"
+
+      gappsWrapperArgs+=(--argv0 "$out/bin/.firefox-wrapped")
+
+      # See: https://github.com/mozilla/policy-templates/blob/master/README.md
+      mkdir -p "$out/lib/firefox-bin-${version}/distribution";
+      ln -s ${policiesJson} "$out/lib/firefox-bin-${version}/distribution/policies.json";
+    '';
+
+  passthru.execdir = "/bin";
+  passthru.ffmpegSupport = true;
+  passthru.gssSupport = true;
+  # update with:
+  # $ nix-shell maintainers/scripts/update.nix --argstr package firefox-bin-unwrapped
+  passthru.updateScript = import ./update.nix {
+    inherit stdenv name channel writeScript xidel coreutils gnused gnugrep gnupg curl runtimeShell;
+    baseUrl =
+      if channel == "devedition"
+        then "http://archive.mozilla.org/pub/devedition/releases/"
+        else "http://archive.mozilla.org/pub/firefox/releases/";
+  };
+  meta = with stdenv.lib; {
+    description = "Mozilla Firefox, free web browser (binary package)";
+    homepage = http://www.mozilla.org/firefox/;
+    license = {
+      free = false;
+      url = http://www.mozilla.org/en-US/foundation/trademarks/policy/;
+    };
+    platforms = builtins.attrNames mozillaPlatforms;
+    maintainers = with maintainers; [ garbas ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix
new file mode 100644
index 000000000000..8f1817627bad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/devedition_sources.nix
@@ -0,0 +1,995 @@
+{
+  version = "67.0b7";
+  sources = [
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ach/firefox-67.0b7.tar.bz2";
+      locale = "ach";
+      arch = "linux-x86_64";
+      sha512 = "065f94cf555016d4a4cf87ab48c93ac5dfddf3fe55769b46b008df89a6b8525705e3d1d42f1378b01c4fd84c0c6330fe213a8bbeb968b2062ecfb7fd0d99da14";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/af/firefox-67.0b7.tar.bz2";
+      locale = "af";
+      arch = "linux-x86_64";
+      sha512 = "f41ea86f9d0247f861a3f2f336dfb480706e114beadfd95d907335b6eededea46d4252e8b5f711b73e73dab2af4f189dcd1bc6b5f0430fb65a35b4df6e58b801";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/an/firefox-67.0b7.tar.bz2";
+      locale = "an";
+      arch = "linux-x86_64";
+      sha512 = "f22157f1c04b359dab1cd87e3f18cf2dcaa5bdb8bef504f4492b9be87288a6002a31997885303216572f2000018c4951998a68f9314862b2ea7c4ce7be943085";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ar/firefox-67.0b7.tar.bz2";
+      locale = "ar";
+      arch = "linux-x86_64";
+      sha512 = "51ba06d4ca42fca5d5eb706ce3ec166c08967282d3b66802b11f41814058164ec71f28f8e4dac37affab15179c4e411b8634b42a5cf4693e9fa5186cbf0440f6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/as/firefox-67.0b7.tar.bz2";
+      locale = "as";
+      arch = "linux-x86_64";
+      sha512 = "461afa6427e234f64fd95f8d6901fa4ad6e1a7aca08ac60205f3e27a8af55b0735fa50b0ae460460e842273f4488662133c1ef9d72bd14bbe69450f1c8c13bb0";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ast/firefox-67.0b7.tar.bz2";
+      locale = "ast";
+      arch = "linux-x86_64";
+      sha512 = "45bfaa2fccf2b2441a71ca3c23846e6cc03398e5a48202dd9f2912cca8f9c4623a1cfbe315d81952dcec4e8cda491d9b455a19743c32b278f2641828e0cd82fc";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/az/firefox-67.0b7.tar.bz2";
+      locale = "az";
+      arch = "linux-x86_64";
+      sha512 = "a12c0ee9516e78479413c5e79a43e149632648a83dc88e87b443a4163aae98f554ceac48b456845e881db575a87d9c8d0772546c844ff567d7ea6be1c51597b8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/be/firefox-67.0b7.tar.bz2";
+      locale = "be";
+      arch = "linux-x86_64";
+      sha512 = "756723c6774e76f62f2447724f4c2ca350e94f81dfb9d3e4b64381d3d0e34cc81a7b56868aef1996e97ae13c15f192e83cbfd30a7b171a7536731d9ab9035eef";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/bg/firefox-67.0b7.tar.bz2";
+      locale = "bg";
+      arch = "linux-x86_64";
+      sha512 = "6b548c459ad6d0933733a571f800050b6e416618a0d465acbe251e8899ccb5b3d4b3eef7f46982c9f4f888f2a21aca4f9fcc990615345a6868fa45797f843ad8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/bn-BD/firefox-67.0b7.tar.bz2";
+      locale = "bn-BD";
+      arch = "linux-x86_64";
+      sha512 = "7a97d2daef6459cf2eafc7c7469c827c0fbc3fe241aa2a08865ce3b83b4e667f59371d33fb96e834ad1e6de29040146324359473dcca3c6acd2dd892e4aade64";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/bn-IN/firefox-67.0b7.tar.bz2";
+      locale = "bn-IN";
+      arch = "linux-x86_64";
+      sha512 = "6545354d98ef743017e1b7b951df4f1d7149b9918a2b0e242c10c886cf193a542a8c94f3c98f491b3e5b21ce860cd14cb066a9688b375f435e01aa4b5d9692b8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/br/firefox-67.0b7.tar.bz2";
+      locale = "br";
+      arch = "linux-x86_64";
+      sha512 = "85095550969c5708df47a9f0c67245273fd0c81bf831707ea99d07fd9e679d4ae4c12416b764599826f08329dfe7460c4c4109b21887fe416aec638e6730ca62";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/bs/firefox-67.0b7.tar.bz2";
+      locale = "bs";
+      arch = "linux-x86_64";
+      sha512 = "3eddbcfd63cbf85f74a8f24b7cd1b47390369ffe4f89663178b6bf893fd5feb040c521814b2033a79cfb75ddd0201fce2bc3993715c50eb1a39c6889fe515a53";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ca/firefox-67.0b7.tar.bz2";
+      locale = "ca";
+      arch = "linux-x86_64";
+      sha512 = "ce4e8b99648dea33ed485aa364e99aa2b76afab2119a375c0b1beb6acba52bea6386beccc00db84692817ebbc7cda54bfd39755430ad195f4a409d24b6f9cdde";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/cak/firefox-67.0b7.tar.bz2";
+      locale = "cak";
+      arch = "linux-x86_64";
+      sha512 = "1cb2eaa6c83bb7c8552094f2b40a710b9e00b48fcc9d76b95ae650834e8f4e33b898fd1e3fddf3e4c90997ee9560e1876acee2a763719bdaa2b98913d62bb073";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/cs/firefox-67.0b7.tar.bz2";
+      locale = "cs";
+      arch = "linux-x86_64";
+      sha512 = "b4212d47a104fa1a1905036886285973250c6b7b253c7b8f1d75a02561af2f7a127edc153ee47f1ca386f198d0a79106ae27c4abdfdbad05fcaac5b179aa64a5";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/cy/firefox-67.0b7.tar.bz2";
+      locale = "cy";
+      arch = "linux-x86_64";
+      sha512 = "6238a0f598da4b323a245c7f025e0e67e511c8b07f7f6fa2dee5d7fc232fc9eb21d4a0c00d3b5d9a4912cdbe5fc3f50ed8c4125e7e6cee5337d21580491a31b0";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/da/firefox-67.0b7.tar.bz2";
+      locale = "da";
+      arch = "linux-x86_64";
+      sha512 = "f3e5b994100272063fa50ce90edafc913333902431ac24050b10ad96f686516efca6501260e2201d6fd8a8b835efaa3f478e29a8337040f5274056bca1e4b893";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/de/firefox-67.0b7.tar.bz2";
+      locale = "de";
+      arch = "linux-x86_64";
+      sha512 = "b85685a7119e9b77325cbd3091f447b1ec2a65781b398fdfa0b8ce6c0bee0b40acb67b8922626fe3ded23838e4d760a61b9382671f99ab3d97b2cbeabc180759";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/dsb/firefox-67.0b7.tar.bz2";
+      locale = "dsb";
+      arch = "linux-x86_64";
+      sha512 = "16c488a16b880441e8f24f0dce65a4e311a68fa6f1c6bc137283213be938518371963f2bc4e04d56adac25bee86223018d8701372187a8db81d88f24fa32c26b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/el/firefox-67.0b7.tar.bz2";
+      locale = "el";
+      arch = "linux-x86_64";
+      sha512 = "8bb987cc8f2d0cd5528319530cbdb8efbdf8ccae4164c376ac08dae9e3f94460e73c9295fc7da0a0f88f4bc39f8b9e576e3462edf15c4b794f48571975c9442a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/en-CA/firefox-67.0b7.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-x86_64";
+      sha512 = "b615236a7c24d4d45bdb7286c820df4a96829ad2afea2d2f3ef9f539f5841b5fceb90790226d61db393e7c3b7e626ed0c4898e146dfcbe35d468fef8f18953d4";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/en-GB/firefox-67.0b7.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-x86_64";
+      sha512 = "d658c78001a8dcb6ed58d63205b9a845b55a668299e514fd948245341b2aaf02da7721e7312e763b38b02e8375d20a98abf3d3714f75236fb0bbd3074e08a3ec";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/en-US/firefox-67.0b7.tar.bz2";
+      locale = "en-US";
+      arch = "linux-x86_64";
+      sha512 = "b1911ac01ee72cf64ada7e8b8d983514446f174785927f20c88e15e4394f4aa57f50fa916295e5223cd67cca0c3c8e13488242c10491ff05d66e1439ed38486d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/en-ZA/firefox-67.0b7.tar.bz2";
+      locale = "en-ZA";
+      arch = "linux-x86_64";
+      sha512 = "390815b14e35134377cee24bd5731914cf4ae08f12206f2a3502d12c3e97322763c6c5a9d05a5b0b7f8e85247d5d61999f499c513fa8c3033aa6eb0f22b0eff6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/eo/firefox-67.0b7.tar.bz2";
+      locale = "eo";
+      arch = "linux-x86_64";
+      sha512 = "b80d91463d9be96e29eab4d15ec76952e7c664e30934de1b14d165864962c4aacc2725f08b6e301487c55e386f324a3072c3969bc4f474d7120f2c723d9e76f0";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/es-AR/firefox-67.0b7.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-x86_64";
+      sha512 = "03558cb0909a4f8fb2076b36be023cc768a84de64b3113d9c795e763cb762b68378826d1fc8c30b77f3c0e55d6f3ed6ca2d023b531084548b24c4a9bdd4d41da";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/es-CL/firefox-67.0b7.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-x86_64";
+      sha512 = "45d5284a78cc6f985d3fb68888f9a03b155f924549f43e4364deb87e0dd0c2f9c532e8a0b8062db8d265c810230956533c6b7477d66f5adbce82779f6e55d0df";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/es-ES/firefox-67.0b7.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-x86_64";
+      sha512 = "650c869a200ba5891be7b377030e32ea8e5c5e1bacfbd9028ad6d5909651aca8da7c82b399ad5491b071cebab168cd7ef3f14b00b8af562a02ee5696dd29c249";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/es-MX/firefox-67.0b7.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-x86_64";
+      sha512 = "4fe0d5ee804dcbfd9b99f658af522be71acce6e9a9bf96ecb47bfe8e8327d1bdefe20c70ae474cab3ef7b1007ab339f6ad4ab4250e9f985e885147a039daa83f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/et/firefox-67.0b7.tar.bz2";
+      locale = "et";
+      arch = "linux-x86_64";
+      sha512 = "d3df04eacdc53b02f2a78314f086588983b9ada6855604337e82a5ed1e0046210e2cfd37153570c46dad632ac066bc87e19794898144ee5d78cea0ecef1193e5";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/eu/firefox-67.0b7.tar.bz2";
+      locale = "eu";
+      arch = "linux-x86_64";
+      sha512 = "b0bb4cabb709ea6dd66fcacfe0536e03d9615bf94ede192bb4aa6f84592b94206be039909f46ba37397d9d396b08f8cecea8e07c6b64d8578280026d89dbc6df";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/fa/firefox-67.0b7.tar.bz2";
+      locale = "fa";
+      arch = "linux-x86_64";
+      sha512 = "6dc15ce8ffa1839df3a9aebc160022cb3be335fca06b41ee87190bc4fb8fb78be4b220855b0bee75efc771d1ecab3080116b3440b225f2e15f20536f84f2b111";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ff/firefox-67.0b7.tar.bz2";
+      locale = "ff";
+      arch = "linux-x86_64";
+      sha512 = "367edbbb90d98216d3d5ea457b101e4a0d682e36961c87477be887ae1f7b0dd5efeddd81e12298cab2e9c2e7a9ab1560288263857e79ee7f561a84bec3eadeab";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/fi/firefox-67.0b7.tar.bz2";
+      locale = "fi";
+      arch = "linux-x86_64";
+      sha512 = "3a2ba7291fb2efb95663dc01e488fed254045b9d23f84c896a29273c825cf5f1ec5883aa66d2afa0dbaba3ff6cc9b87f14e845010073d897b8dc275a47260ac3";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/fr/firefox-67.0b7.tar.bz2";
+      locale = "fr";
+      arch = "linux-x86_64";
+      sha512 = "8aec13533118aab96aef3b7e7e23b65a651d5211346c1769f649128a50ae13b2e5827ed6195ce265584dd3f63e956b28689b60f807ceaf63d7bc558d5c5300ce";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/fy-NL/firefox-67.0b7.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-x86_64";
+      sha512 = "593f36d08d2af14243779f8ca8223b9e00809330f4012ede586917e98c875d39fed9aa856caf32f8afc6bf14c47ca6e5db0e0a8c9897767c97e9edd60558d229";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ga-IE/firefox-67.0b7.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-x86_64";
+      sha512 = "a272716be03895e1562373ab93abd0c4eb2ac3e8ad5caa1b868607faf125167157aeb22a652d2edf4148c9096178acecdaaff7dcc13e993914e4e8ba899f31bc";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/gd/firefox-67.0b7.tar.bz2";
+      locale = "gd";
+      arch = "linux-x86_64";
+      sha512 = "3eb05e39c33873a7323cfe966c31cf1ac073edcb37b6aa37e71b58d29e3dea87db8a4d5cddf9bd64e618e2cb2a3a2314ac9e9a5cd23f099fe391dff9bf7d5bd1";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/gl/firefox-67.0b7.tar.bz2";
+      locale = "gl";
+      arch = "linux-x86_64";
+      sha512 = "078113798dde9058778c334b428247c83c95030c35b4964bc1a3b70aeba9d6967338c84f0b88873bc95e2d9cc123eed669dc7cd5345ce81e0ad021ff0e432a49";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/gn/firefox-67.0b7.tar.bz2";
+      locale = "gn";
+      arch = "linux-x86_64";
+      sha512 = "9c5ca6da7eab1cec26ff66649f005b77523ddf325869236a166545c7e0b50522d9023883f831dbc6520396a146e415a458e3528cc96e12d357ae5286dbcc932c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/gu-IN/firefox-67.0b7.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-x86_64";
+      sha512 = "1074f26748385576f096927f230f4363fb28ee21da467392c23f26b912c6bbdea39d0d816ce60c8bae724b294e979f01662e25f9de9d9801c815bf3363bbce8c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/he/firefox-67.0b7.tar.bz2";
+      locale = "he";
+      arch = "linux-x86_64";
+      sha512 = "9533939e4705ea4ab9b111fe4940c1e875824ac53b1856ad18c4a412f9f8d60d1befb3ce363ae128fb74ad1328504e7a34c20906862ff30e3b83f18535a49e1b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/hi-IN/firefox-67.0b7.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-x86_64";
+      sha512 = "af50bc6a8951e51babc5e9c5426205f218dca19833ce65baa6b7898a5b469c41129499d094ef8dc0759f34b09dbf25861dd32d97de934548c2713a81f8c253b7";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/hr/firefox-67.0b7.tar.bz2";
+      locale = "hr";
+      arch = "linux-x86_64";
+      sha512 = "dec21b5d230caf1c1be6e712bd926ed1eb6b74825ae0f07f7c6f39545d0419b71b57c404ecb897d11d9f54f08cebd236dd5d77d9ee1a64a900914fd9158cf4e6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/hsb/firefox-67.0b7.tar.bz2";
+      locale = "hsb";
+      arch = "linux-x86_64";
+      sha512 = "023bde601d59f9daf8daefa1f9894ec43fbb96a7ebe5b31776a288c07105b3ee10b5972c5a676e04062acc81e8d850424b8e7aec6b8ac8d9194284641768934d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/hu/firefox-67.0b7.tar.bz2";
+      locale = "hu";
+      arch = "linux-x86_64";
+      sha512 = "d4fdad7244ba456012e36b64149ef5f3d52b5d139bee585b57a138556ef1f541908a24cd97a1bbd2ef2044852b9c3e7abcf0f634cfcc18a0b44765a3c78126ed";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/hy-AM/firefox-67.0b7.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-x86_64";
+      sha512 = "4443c51211b8d2874e4cc8dff770c87db4291465ac615d087a9852c81b256e47599fe1e87d24d2e3b0145d68e47e8f128158f89bb0d6bd9baa92615e3b79656c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ia/firefox-67.0b7.tar.bz2";
+      locale = "ia";
+      arch = "linux-x86_64";
+      sha512 = "589f94f2b4c873fa43896b57148ca1a7e16038b71476050754a0a0374bf0abe97d9d8ca0208f0101568f9fc1cf441e439817106cc3d68f10a0a075fdd455f89b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/id/firefox-67.0b7.tar.bz2";
+      locale = "id";
+      arch = "linux-x86_64";
+      sha512 = "602f2fc520a61267f3b8ffe011d50b2e3c1abd4af0e805fdd7a1ace4adda69ce00cdc6b0feb26a46360711e6bf49c83bb33e01b0af5222a71456234119cdde5c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/is/firefox-67.0b7.tar.bz2";
+      locale = "is";
+      arch = "linux-x86_64";
+      sha512 = "162b3fa20530f59fe80e347f068bbd8d7d370a23ee2b3f4582c181ace473cdee06e9655ef08dd6bf514df728cd79935368bfab245110b6d143634be252f84e8f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/it/firefox-67.0b7.tar.bz2";
+      locale = "it";
+      arch = "linux-x86_64";
+      sha512 = "6887b97e91954598c0ac214b5c072ccb5669a200b5a38875b6dd1ea546b14de7dad9639c64b4b49d3039fddbae22ae7f58b0cd4f3e243c780a1a65ea831181a0";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ja/firefox-67.0b7.tar.bz2";
+      locale = "ja";
+      arch = "linux-x86_64";
+      sha512 = "194911f101d7eba5a7ec2325a4b4accd27cc26c990255e73d9aaac9a281d40b6bc38091cf7cb138a6ff3ec083639a41b0aa2b005c39f1f89da79526ab3ff2349";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ka/firefox-67.0b7.tar.bz2";
+      locale = "ka";
+      arch = "linux-x86_64";
+      sha512 = "d8804f06b2dfbd57f316695d5dd5350e3057fcb2da4e3831b86b6aeef2e9b558d791f00ada3578ae1c7e51432643814c0394922e128fa8fe9da1604edc84ee1a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/kab/firefox-67.0b7.tar.bz2";
+      locale = "kab";
+      arch = "linux-x86_64";
+      sha512 = "ee49177da5ff8b91458b1de3940494d7ac503b7c1b752fcea2b4d2f66d4bd8dcdcabfc5b898a34528ff02ae170adac3b48db4aed164d955c4e146df9275fe682";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/kk/firefox-67.0b7.tar.bz2";
+      locale = "kk";
+      arch = "linux-x86_64";
+      sha512 = "04db9af4da7b10129d28d9a67dcbb233e2a77815f3bee3a8ab9f139020c0876c99c856b460ebeda07e3a5228e9c3943f75e22ce4f1d8a61ae20c143f7263862c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/km/firefox-67.0b7.tar.bz2";
+      locale = "km";
+      arch = "linux-x86_64";
+      sha512 = "2fdb978f01b44f81041bb3a829504634ddeef593568dc31bfba712d79b96c43d4d4aa95d8a989312cf758d72f54086cfbb0e6a4b1ed705c666b6da2e5b54dc7d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/kn/firefox-67.0b7.tar.bz2";
+      locale = "kn";
+      arch = "linux-x86_64";
+      sha512 = "04686a8b7ff088f1f65087c02c1dddd05005134a6d96d69b649364e4a93db2ae2ab0c1512d37141099d6aa41d6ed51aa26faa942c95cdb3cfb2eeb279d12e99a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ko/firefox-67.0b7.tar.bz2";
+      locale = "ko";
+      arch = "linux-x86_64";
+      sha512 = "a798b80f716300ea8211470db9583e326029eb46da217f9862d7deceb3c8f418f09e9a3a355a7ef0b8da3f502d6714571b7a3a0f0177fa5afc565d3df47b6cfc";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/lij/firefox-67.0b7.tar.bz2";
+      locale = "lij";
+      arch = "linux-x86_64";
+      sha512 = "693ed9d8c28b7401606de9f2c45c93988861f1cd606b5d0d1f9bbff31f367c603f8761b24508ce3d1d5b533a6bd9555a33827b531859262201e6e187e60d5209";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/lt/firefox-67.0b7.tar.bz2";
+      locale = "lt";
+      arch = "linux-x86_64";
+      sha512 = "291dea291f6bf2c9c0373f8c342e000cadd70ae2d4725c833e63bd99a5e0de5b8ced26d445787900086e55201123503ce850f9f3d481dd1fd05dccd5c66153e6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/lv/firefox-67.0b7.tar.bz2";
+      locale = "lv";
+      arch = "linux-x86_64";
+      sha512 = "dca344e94c86ee0ede7f993696484eb576b54a71da7151be9ee40540d9c8c740d399840a5c024156660f2b9d6a73c6f086691df9e3b59dddd653d5a25a8ce1ba";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/mai/firefox-67.0b7.tar.bz2";
+      locale = "mai";
+      arch = "linux-x86_64";
+      sha512 = "ceb2a05d4c051e31fe1969787f4d2ac0e73714e45c233cf40045cd35ad751d84c064afab14ac58bb976140976a29b9da5d40c91c1bacd965624667c5fc62294d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/mk/firefox-67.0b7.tar.bz2";
+      locale = "mk";
+      arch = "linux-x86_64";
+      sha512 = "ee1fa59d256e279c08a4110ec0f14e64f80dd2ca02ff01033bb29f0336e49118c07ec93b0ca8bc318356dc62fd05d9bf3201d9491ac278a8b5a836cf6310fe04";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ml/firefox-67.0b7.tar.bz2";
+      locale = "ml";
+      arch = "linux-x86_64";
+      sha512 = "477d66f1c875c53e678ccd64a666b64fafabb8b9cfc6cbb11dc33a14707d7a90758f8a42a855020f650e59b1f55373208c3cc96b69ecafc7ac3937eeca00c7ff";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/mr/firefox-67.0b7.tar.bz2";
+      locale = "mr";
+      arch = "linux-x86_64";
+      sha512 = "06cfe20c7756d6786a7cd94677f83aa82fb1cbe83245412d087f7ff06372af3dc9ce5d2f5017838d74cfce864e0405c5abec417924feb26fb9b9dd7298f833d0";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ms/firefox-67.0b7.tar.bz2";
+      locale = "ms";
+      arch = "linux-x86_64";
+      sha512 = "d0bbe9e5d7dae906dd7140725873126d4583c7e31f3bf4a3d0a7716f5af46f5b5eb65aef3aee32e010e1a82ef59e279febfafb08458c43fe9e8751dd1ff68e81";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/my/firefox-67.0b7.tar.bz2";
+      locale = "my";
+      arch = "linux-x86_64";
+      sha512 = "073aae70db0f59630c16e13c91db7c2a7fdb8a11ccf56843fabe4d666751e27d369e1d57118a1e385b8586d3024ffb3c90f8f61d7bade807aedd6f74e92640b6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/nb-NO/firefox-67.0b7.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-x86_64";
+      sha512 = "bf4c6affece8d031da249dfd113f1c2f7507a8b4473e03daf5a44e7c0ce71fe6caa4759f78ca954761f90bee06402f7f5b5a9f785c1785f973feb1294947e0d9";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ne-NP/firefox-67.0b7.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-x86_64";
+      sha512 = "16902e80be172af3bc8a2f02821d9e738864f593951619159a0c362cebf0a5827b1f3be9063c1429db8b1ad52aad8923db8053b6367d21bc97333ceda0899d25";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/nl/firefox-67.0b7.tar.bz2";
+      locale = "nl";
+      arch = "linux-x86_64";
+      sha512 = "1ba6650ba4140d4f32391f7e05577379a43ca5ddf064ac86c93c633bc1d78c6c84e6d5c4227577dbbaef4d5bae9173861295805e1cf559ac25fea434db2df578";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/nn-NO/firefox-67.0b7.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-x86_64";
+      sha512 = "860030e55b0c514ec4219ec295a02f2ab344bb87e31292ca4ad11501c02e9eec3f1b82720b7c3d69c043ddc0a53fb9ff3e83b38d4e0443d57849d68bf98b0e05";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/oc/firefox-67.0b7.tar.bz2";
+      locale = "oc";
+      arch = "linux-x86_64";
+      sha512 = "33de39c5c495d0ceb5e1b65fe96458887d0a918681504c7c6a561359e29b82a7026673516a5afaf67717ecc0aedffa8acebc92b4002d160924e87d401e963ca3";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/or/firefox-67.0b7.tar.bz2";
+      locale = "or";
+      arch = "linux-x86_64";
+      sha512 = "a1deaf9593ba66eb3e2e1a019ccc8a3b5c7455b0cd250d6be3708971406148404a3e10f3d67ca5ba39a25c92d27006d1196e11e12f8b8c5cca518d748b5c7841";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/pa-IN/firefox-67.0b7.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-x86_64";
+      sha512 = "35df203d2c9a892b5cc4c9d12c10e7203f466c949f382074f550a45df54f670168713ac096ec085cb835f51f0790c9af2a88786d474a0dbcd6c8041d2a1a1244";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/pl/firefox-67.0b7.tar.bz2";
+      locale = "pl";
+      arch = "linux-x86_64";
+      sha512 = "81b08e3cc5e2b7dba6110ebd455431fc04df6a9bd54e15f5ccac9792b80133d9c8ca4b59746189d5dd752b48e4053ddb30dbfb01f3467617349eff8dd7de35f9";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/pt-BR/firefox-67.0b7.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-x86_64";
+      sha512 = "821bdd23cb73437898dc2fe570ff5a108a2a862b2cfd97d1427cd235761c5d24f6db33dffc32c0080576c72a9f1b2def8c7d398bd3ee354d5097b58731d74ae5";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/pt-PT/firefox-67.0b7.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-x86_64";
+      sha512 = "611b13950d89e3c21a95c726afba58201f4be46bed6c16bf3c732400b15cea50860cbcefd98ad83ee864b8bad9e89e42b2bd075f448ee8d8eed352fdebe176d9";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/rm/firefox-67.0b7.tar.bz2";
+      locale = "rm";
+      arch = "linux-x86_64";
+      sha512 = "53cc28912e17b5302489f0f4a89fc4ab53edc319a8702158ee7ab0a0943b4c619ddb022a5549a0c4ee2912a98f5b695117a991bfde2f10a9036196298334a208";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ro/firefox-67.0b7.tar.bz2";
+      locale = "ro";
+      arch = "linux-x86_64";
+      sha512 = "50c753c9cd79bfe6d9b8564f64d275958b7e44823e4fa5575bbd784ce4cb4f7b1c3c71fa962a8a26f1ecbd1f2a12f108fc7505659be08063d0246ea29488a440";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ru/firefox-67.0b7.tar.bz2";
+      locale = "ru";
+      arch = "linux-x86_64";
+      sha512 = "d739ceef1bc6328ee17187e54e3910e1746d516f2e21f03319863a3d564be6ea348c87a8ea9f302b692c99b16c242578af15788082e121b857a1a089ef0c7549";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/si/firefox-67.0b7.tar.bz2";
+      locale = "si";
+      arch = "linux-x86_64";
+      sha512 = "35a4cd2e1e324a0d8e78b679dc5b55b1bbbe2e73a9b37a65cdb24209d9eee5d52de59b3656f2fb65b6f2513fe4ef70027cfe5e9268a103df95510dc673eedbe7";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/sk/firefox-67.0b7.tar.bz2";
+      locale = "sk";
+      arch = "linux-x86_64";
+      sha512 = "4ce6acf4dbf83010c726988eef0ba90fc1b54aa4213e4c335446d632dc99a4f9646954f45e4ed143a132802f10db8a68a6335ee4f855c65c4adfb02dbeca4443";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/sl/firefox-67.0b7.tar.bz2";
+      locale = "sl";
+      arch = "linux-x86_64";
+      sha512 = "097dadda67b70b58244020b4a747dfb6a9a638552b2387ac3dec1130fab79e156bfbe0e4dc913e1669420dac827ef0efcb639560fd5366f8829e94456b2afb74";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/son/firefox-67.0b7.tar.bz2";
+      locale = "son";
+      arch = "linux-x86_64";
+      sha512 = "c01e0d7d45bdc5eea290c939a906efe18720e4f1fc60dd33afb5252f59c90bf40e227f1392212cfb272efdda6c1ffda14ab617d02332610d0f890f886d053f0e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/sq/firefox-67.0b7.tar.bz2";
+      locale = "sq";
+      arch = "linux-x86_64";
+      sha512 = "68020ac5ad6035fef3d58990718f14cb4175a2962b850b8ba98cb5832a169cb72c4eab9036da693b93faeb601ac0f35ae23b80d748be0dfe4d0414b51571f6e6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/sr/firefox-67.0b7.tar.bz2";
+      locale = "sr";
+      arch = "linux-x86_64";
+      sha512 = "ce18d0ba989949e79cda33eb4ac26a3d7588acbd511e57c9c31ef3a3f8011b7f669cff02e4b0405bb2615c18e600d75824fbd556519dcd09616fe27181f87748";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/sv-SE/firefox-67.0b7.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-x86_64";
+      sha512 = "96008e9c2ec4b8cc3bc646185a502cf26622d3f4f2d9b23ad02a963c5e4e5a1b98c1bc2bba342b0979c4b9e079c22a9130ab322d27d0d469afc02a41e8f3888c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ta/firefox-67.0b7.tar.bz2";
+      locale = "ta";
+      arch = "linux-x86_64";
+      sha512 = "e90c1bcb5326d3823ac6e8c0bbc1d3e98a5911f870d791af42a7f6aa539c95e267eca1248df03567f7e09853178c40c428b3cc04bbaf15553f1cdc028194c60d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/te/firefox-67.0b7.tar.bz2";
+      locale = "te";
+      arch = "linux-x86_64";
+      sha512 = "a5a04abacc8afec69e4d865ed89f0f029b623cf24cf05d275ae79dd292d28e5fa000ee9fde4325144e2a7727d0be5929c9f7c30194eb802b35efcb2101422e84";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/th/firefox-67.0b7.tar.bz2";
+      locale = "th";
+      arch = "linux-x86_64";
+      sha512 = "1bfa1ee19141416707afd13594ad94da0e5ad5bf71ffe098109dd093624531a438df3dc3d4da603821d29e139a007923e367ce6ef55837169b49469ee030e752";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/tr/firefox-67.0b7.tar.bz2";
+      locale = "tr";
+      arch = "linux-x86_64";
+      sha512 = "d89513130852096ec1bd685cf5072456035024e951dc9b6cace23ac8d9d51fba47465c3b76d96810bfbbb651188bc9a5ff082ec58771bacc6c9b1eb46d99ae37";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/uk/firefox-67.0b7.tar.bz2";
+      locale = "uk";
+      arch = "linux-x86_64";
+      sha512 = "382b333159efaa048cfa73d7e11874a00e4f34c48ab38c4263f49184d00e3f35a71cc21d11cb09b0e68c04e714d086aad30b346d91955fcbaeaadd968c29fba6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/ur/firefox-67.0b7.tar.bz2";
+      locale = "ur";
+      arch = "linux-x86_64";
+      sha512 = "a620241d89b926eb1b42646a1d52e75f049191b711cca724ea1b6335ebf8c0773ffebe97cbc355396b21c16b7c322c8346029a64355ebdea2a5eef1e5329754c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/uz/firefox-67.0b7.tar.bz2";
+      locale = "uz";
+      arch = "linux-x86_64";
+      sha512 = "d392eb81144e93fa11b7c85c6defab5eaba7585a93f5fa475531d2be73a65c546f3f88b24cd3370bf301c4f780e60a53bf68bdd480fd4a6785e9c1583e71da47";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/vi/firefox-67.0b7.tar.bz2";
+      locale = "vi";
+      arch = "linux-x86_64";
+      sha512 = "7b4686deba1dd981e398f1bb6f192f828cb1cecccce6715c81cdbf5e89b4727cec214784a1920382e14c1091b20bff0919f74e1da8bfbb1a3568309801bf7a9a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/xh/firefox-67.0b7.tar.bz2";
+      locale = "xh";
+      arch = "linux-x86_64";
+      sha512 = "63cc7b999aae85c46cc60b2cc0747a25e1d0663756938c329fc539a3e8ae04e43224051e066cd05bb38ba351f1ddf868d1651da94c0064d9715e5019b78496e8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/zh-CN/firefox-67.0b7.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-x86_64";
+      sha512 = "1d902bbc7a703e7b541669c7f12427cbc74c01d784383409def1babd9907a93c53c32ee6c52d4c237b79bee69d005226580387a08e3ed51c1d685853637c34b6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-x86_64/zh-TW/firefox-67.0b7.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-x86_64";
+      sha512 = "cf8133b5330c4badbdbca14681226a3298e4bf4844ca2be6208f4fd7d3d209f4215b4a3a1b599d59b449e3c76808d71eec1705bec47c964b219212d4032ba1ca";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ach/firefox-67.0b7.tar.bz2";
+      locale = "ach";
+      arch = "linux-i686";
+      sha512 = "c285920aa77f311451f3eb36991118072afd9d5fe863d88a49fecfb56549f1bada5ac364d457e7158a2c600b216cd5672775f87d85f3aaeb8fe648d19c8b7086";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/af/firefox-67.0b7.tar.bz2";
+      locale = "af";
+      arch = "linux-i686";
+      sha512 = "335452fc21c6b25775b93ccdc1ada7ee9430ba9f4b6b8f6760a00477fc00a2bc1e68f318c0260cb3386dfb6ff5f1780293393f9f700f15b2013186d60735d789";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/an/firefox-67.0b7.tar.bz2";
+      locale = "an";
+      arch = "linux-i686";
+      sha512 = "548e723fad381a772e48d8a60a2bbbf11fce50ca187fbf052d9fe153fe9c6c592769fdba4eb3c4b423ed9775497add0abc1ccf378e13ee4f069531fd0cc03e29";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ar/firefox-67.0b7.tar.bz2";
+      locale = "ar";
+      arch = "linux-i686";
+      sha512 = "08834c2b950ec4fe06fe1fc3eb65e4701c01c08fdd91e59195053ae7638bf807a20346460ac9938590c5625e3e6845bab4205321e8d5e312fca69250eccf8303";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/as/firefox-67.0b7.tar.bz2";
+      locale = "as";
+      arch = "linux-i686";
+      sha512 = "9573895c11a55f34ea6e43e0f072119873a28c85478b144ad4822ce6632b09d2290a87db67957b3c306668ffae0bf2c5703d4e3ecdaf1ae77170dc9e28ffb2e7";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ast/firefox-67.0b7.tar.bz2";
+      locale = "ast";
+      arch = "linux-i686";
+      sha512 = "be780b51079ed16aa62b00e0d116d8507f4cb858a22a5fba1e95d5f38c087b56b66e37a3ae50f4e2b5e5db6a5162762dc6cae94e9c07d263e38c480fabab50dc";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/az/firefox-67.0b7.tar.bz2";
+      locale = "az";
+      arch = "linux-i686";
+      sha512 = "11c28539d558882835eae2c70e1dd72019eeea8892bc0062467e77b6a87208ad8d9ec3ce8b6e58037013f92e495db1bf611ab8e64ac69102c832952a021d018e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/be/firefox-67.0b7.tar.bz2";
+      locale = "be";
+      arch = "linux-i686";
+      sha512 = "2ba110389b2f416aad2d62e0b85ef2b99494be3add97908b8687243968cb44a6ac0057f0ffdb815ad7e93ea1d84e718163fb14839819efd9a4a38375595a9be1";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/bg/firefox-67.0b7.tar.bz2";
+      locale = "bg";
+      arch = "linux-i686";
+      sha512 = "e5793f784fa49d07714f9984a884dcf9685431e37453525f67c0263d991edf380fcd96e956f9d715dc4d32c790b5996ff23d7e759ba5849b91777e20cfea97fb";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/bn-BD/firefox-67.0b7.tar.bz2";
+      locale = "bn-BD";
+      arch = "linux-i686";
+      sha512 = "80670cf579eaa7f7788a90ac4fea4e85a433324eb258d6d922a85585a9bf8fd8e3955343e4707a06e98f1c6ebf7881b0dabf4a9e4a3a8b503c2cb779d7a60c4b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/bn-IN/firefox-67.0b7.tar.bz2";
+      locale = "bn-IN";
+      arch = "linux-i686";
+      sha512 = "bfdcb672b4bae1bb140867e82f3ec1ee8a431d076d337ebd44ba17bf532506672ed6631ee54d80dbfa0b7814b77099fed2de345620a94e14d63e7c59578ee01e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/br/firefox-67.0b7.tar.bz2";
+      locale = "br";
+      arch = "linux-i686";
+      sha512 = "275b32a715d433027b9a7132624358e47d35ac7f81cb43aab21d646aa7938ca7ee26aa67839fecabb556badf5a8bdf6656ff3df5fe9311452b9aa37aee34f98f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/bs/firefox-67.0b7.tar.bz2";
+      locale = "bs";
+      arch = "linux-i686";
+      sha512 = "2684ad81e644ff26985c938fe88433b70e5f007b0fb767e361070376ce10cd81d179c96c500209316e5cd5dc239fb68080fccef04988014ee79caf4d7c480197";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ca/firefox-67.0b7.tar.bz2";
+      locale = "ca";
+      arch = "linux-i686";
+      sha512 = "6cee8b8cf26e38e785387200d84792a01081981b3c2934d2f9d06ef50b26967d0098e1429b1af7cd819618f5079af2a7533060a886be5ff10db0bb108fecc68e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/cak/firefox-67.0b7.tar.bz2";
+      locale = "cak";
+      arch = "linux-i686";
+      sha512 = "a7f3963b020a074006fb6e367ad25b632899d14b915d35e64613a39fd0c185425063e92717bcbcd3138c05ff73e7734a84833c0065ad8655166a50aaee845946";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/cs/firefox-67.0b7.tar.bz2";
+      locale = "cs";
+      arch = "linux-i686";
+      sha512 = "7ecce91b3fd5986aa58b51e24c46d3c689050a41e95bab3136589b660db1ea4509c93cab7bcfaf13b93ff533ddbc584fcdfde60a0b8d4485b937cfab9e98e64c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/cy/firefox-67.0b7.tar.bz2";
+      locale = "cy";
+      arch = "linux-i686";
+      sha512 = "2f402c190177ed0aaf52923d003fe886403ed086d6ffcb0ccde9d0e9384168712da5aa7d7ddcd0730a0d6387a079c699226e039494667affb66d911882f20892";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/da/firefox-67.0b7.tar.bz2";
+      locale = "da";
+      arch = "linux-i686";
+      sha512 = "7235f4293b950fa26aebf81726b00420db83e423a2d423569ed4d7754aee7fcbeae50b442ea831052220d9ed4c84d922b5a4658bb92a5bc6c27f57c4c0fecdb3";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/de/firefox-67.0b7.tar.bz2";
+      locale = "de";
+      arch = "linux-i686";
+      sha512 = "472bd0c3013a9e5b1ef96b30b1f5738a8c9bb63e76673bed6a45aa4c28dde3f1e5ed3cce16d18b47448c92f6129ebe22479480f24b9fa277f1b4ba1155ed11e5";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/dsb/firefox-67.0b7.tar.bz2";
+      locale = "dsb";
+      arch = "linux-i686";
+      sha512 = "b4c8001347555317bf5cbd89e29174700c025eb8f309a472126c572dd5b6c85384263264ed7a8ecda404faf632b9b2a3973a1b948f30c3e3b205bc42d6b17bcc";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/el/firefox-67.0b7.tar.bz2";
+      locale = "el";
+      arch = "linux-i686";
+      sha512 = "de37aa7776c31e28c670fae321d7bde7d4be5024bf5e5494688aae1aae909ffd034b46004b0d816988cfcf03ce9ffa326a503882eebc6ed05a67df0bb3d89d68";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/en-CA/firefox-67.0b7.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-i686";
+      sha512 = "95cbe469dbaa9627163fb989e6b366324a4005ddcddc5255735c95825c6cf116a6af12bbe4d44d1c6b55c824ae00e8b122020f261cd3f9e450cef25147b2bf15";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/en-GB/firefox-67.0b7.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-i686";
+      sha512 = "cbb468eb20d7bc4dfcfa229dc45e0fdbceed9d97830baa000642d7e740f1f28605de57112b54b75b1e08fcdb2a4e03cd7a7fcb3fbeaa4fae84ad57c1e564c506";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/en-US/firefox-67.0b7.tar.bz2";
+      locale = "en-US";
+      arch = "linux-i686";
+      sha512 = "2ae29e73ab8f8dd068b5e09ed78b2473294f0791643adac77e1aa565149138b3e01b605f20f6b2e02a242d44e67bb5e036305631bcebdf2a15fbaf9931f011d8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/en-ZA/firefox-67.0b7.tar.bz2";
+      locale = "en-ZA";
+      arch = "linux-i686";
+      sha512 = "b91e664151d3b2cffba5cf23be229540a72e1499b1329818f416f9437a3141a98de20b5ce17b2ee2b8c7f540e589a4f1bd9a949f03bfcdd8a8c00fe92b0f6cf7";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/eo/firefox-67.0b7.tar.bz2";
+      locale = "eo";
+      arch = "linux-i686";
+      sha512 = "09eadcf32183d49b388d8c8aa1535349814ba42068f8325aa34351b6b4a51ec7e31d070ac836519e9d531bd29981913f5998cd83427b308b68f026cd27ba5fb3";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/es-AR/firefox-67.0b7.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-i686";
+      sha512 = "792b7c4934e4e9cd0ebac9586919bd65a142230c0e88da7eb5e848c05b7a8e5d82a906815f448a4c618f0b068d3512c7170cf0e409cf0111b24a87eb1039dd47";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/es-CL/firefox-67.0b7.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-i686";
+      sha512 = "7729ac7e668023838ebb5790e0fe482f20926308e7701c51d010bc0680605967e7918ff572fd50961d749522fc15d8b48524b6f3b532428f2ad1bb3c341e0369";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/es-ES/firefox-67.0b7.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-i686";
+      sha512 = "14cc974cf9cb588d35c9a426b38d747cdef83334a0f46de482588263e0c4dae0179821dc6dbe938ccf5c17ff8d2952665522e77b9dc7ce5a8a65ff8c2d2b8f12";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/es-MX/firefox-67.0b7.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-i686";
+      sha512 = "0eda6a4240bf8645af0d1f7396155cdf13d73091c5599c76876ecbc45972c3cdc6685d694aba41d42a7f50d49fcf4910a382f1afd210e88bd8b1e219cdf954c6";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/et/firefox-67.0b7.tar.bz2";
+      locale = "et";
+      arch = "linux-i686";
+      sha512 = "6ef2f06a3549fb58bee6ac59f45b7758f40c3b76a16aebf2d2ad2bf602e4510883d0c28c941162e96d3694dff44628770f62682c5278bb09af30933442ac5baf";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/eu/firefox-67.0b7.tar.bz2";
+      locale = "eu";
+      arch = "linux-i686";
+      sha512 = "38b323bdb16931abc8ee01b1e3e19e893d2eb830f55775e52e22cf8975b44eb67420d4b703fdb24cd221728c728b6b8f55d6476c9fb4a22324b9acf422d03d23";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/fa/firefox-67.0b7.tar.bz2";
+      locale = "fa";
+      arch = "linux-i686";
+      sha512 = "3211681e01a02745e800be7e7744b25c12c6c774efc2eb9e9167eb13e55a25512c6f8e9d5203967851310c38b9304d1c4556673ae305b782d274c2e8eec13d8f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ff/firefox-67.0b7.tar.bz2";
+      locale = "ff";
+      arch = "linux-i686";
+      sha512 = "17a867cf3d51f59b740991cc70d235a55dcdec256913a461055c82f461f629e51fde1ff8931f6315507a1ae4f9d7e632e69a06303e720bad0d6ff853ea45f1d7";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/fi/firefox-67.0b7.tar.bz2";
+      locale = "fi";
+      arch = "linux-i686";
+      sha512 = "9cbd9620e6ebbed8e02d3acd35967b1f797ac8ae141de45d4be5bc21b166ce6803b4b667b05de789c23f8326c652b2b978b5681dc84af49798d319019dc9bcf9";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/fr/firefox-67.0b7.tar.bz2";
+      locale = "fr";
+      arch = "linux-i686";
+      sha512 = "e4cace463f0f87532274f1094c7e843eca07100541f300bdd092860dee986a87779e03bb960e4f6a06d652d93d0e667093c516614442277a9106a84cd8d9ca75";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/fy-NL/firefox-67.0b7.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-i686";
+      sha512 = "1cacbe08d3a059ced3397110fff471b5879e3eab9d2391383063638d62792c76432ef58be2b2c7d4e23bb72fa145a175ff228314c768a1fd3bb41b72df990b66";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ga-IE/firefox-67.0b7.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-i686";
+      sha512 = "c38de270ccf6b7ba5caf2ebb986c80a7d35996a3b7087816a2438e5dc8440819501eb08f9810c592c699b101693cea256c5265b37f51433558fade6030ecfc5a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/gd/firefox-67.0b7.tar.bz2";
+      locale = "gd";
+      arch = "linux-i686";
+      sha512 = "57573946f74bce289e14e7b07d4056e3fe2b631480a6fe25d8c844a7e8e39c5be4e065d21540fe53bb798cd35cbc26839cfb238ace6c312c6a1b46e477f6116b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/gl/firefox-67.0b7.tar.bz2";
+      locale = "gl";
+      arch = "linux-i686";
+      sha512 = "816c5bc6f70d211471d469c4c2e8492fbf314419a24be460ba9df68f1548f1051333864220d664214f830fb15bc9e19092de5e070c09dcb938674f93b7b05131";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/gn/firefox-67.0b7.tar.bz2";
+      locale = "gn";
+      arch = "linux-i686";
+      sha512 = "dc09910ccc01bbb19adb3d02ea593dc959912a704d43e23e734ffd9d7f9bd19338832786544dfecf2faede03a9560e10537073208c1c7f23e1078a876c6efa54";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/gu-IN/firefox-67.0b7.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-i686";
+      sha512 = "e2160344d5b59640c454f1387106c775a4c7b230db11b08748a6b5f253af9aee6656cc579068693e37c9c690a5cf21cd999d805c335b83f1b66f5d762387f8fd";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/he/firefox-67.0b7.tar.bz2";
+      locale = "he";
+      arch = "linux-i686";
+      sha512 = "0c2cdf90dcf41e0912eb13e11e0461d007dca9c78449bbbf674e672b47552f3210ffd14b80442781c5746a098098e31756828652cab0e347db020cc37c3f6f6a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/hi-IN/firefox-67.0b7.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-i686";
+      sha512 = "0adb98dd37ddbfba3bc08ce59dd9f401fb00c6c5deb550b1a92baf2f2e42e4ab6aecc0f9ba3d35c57cefa3326f112bff351f4ff9a258369889565e4277445475";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/hr/firefox-67.0b7.tar.bz2";
+      locale = "hr";
+      arch = "linux-i686";
+      sha512 = "86782b71427e4da1c30371e40a16d84b13b24e04358d812a41faa08fe7bf178241d44fa91922058554e959008e276d38dfd61f7389e0c9e44737979486f22718";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/hsb/firefox-67.0b7.tar.bz2";
+      locale = "hsb";
+      arch = "linux-i686";
+      sha512 = "9ba1fe0695fd467d48c1fbe78423f0b91c962524762f1807b5778a9f81c6ff623cc6d4eba618a228ec182414e6e6823447b3992dab43176655fe8f90fc865c79";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/hu/firefox-67.0b7.tar.bz2";
+      locale = "hu";
+      arch = "linux-i686";
+      sha512 = "47d44fca671a44fe085bafc404992ca8c2b3fb2155c178c2cf38860e7105678077125487fcc459da3396157904fe6870e47bfbed09b4eaaddbb404715e2d098b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/hy-AM/firefox-67.0b7.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-i686";
+      sha512 = "72fab75e3cb0df96c2aa101475f1e66e5ad36473b400d4ea3efb1e14b22028a67303228b04fcf39221995ee3b18302d9d447b315c48401b8acd566d815bae60d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ia/firefox-67.0b7.tar.bz2";
+      locale = "ia";
+      arch = "linux-i686";
+      sha512 = "a057c3b8bf87fbda631206a6c2ba1398c18641b92093478f472e818f81dece057234c221322497eee68d33838f5dc99a6cadc92f157aa464802e92f08f7a5f20";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/id/firefox-67.0b7.tar.bz2";
+      locale = "id";
+      arch = "linux-i686";
+      sha512 = "c9165eef8d41c5e72956beccac415fd4695178c465ecd81abe82fbc372826d8823056a1484e01442f883022182818e7c5154441c113519b2a918e1233346001c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/is/firefox-67.0b7.tar.bz2";
+      locale = "is";
+      arch = "linux-i686";
+      sha512 = "b41810b6e4b5f28efe83aee464f5edee0784f24982198fc0b3e333b7a16d816504e8ad558e6298517695f06c3c7f87d7b98ad80e0baa6b10d748c57ec3fa8e5e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/it/firefox-67.0b7.tar.bz2";
+      locale = "it";
+      arch = "linux-i686";
+      sha512 = "a20c21d5249fdcd0e7c2bb62177046ac26fc6b0b87f53ed56511f44798fe6a99737851045de3dcd2f42db689b32853848d25df8cf2a8cf731853fdc23a191a7a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ja/firefox-67.0b7.tar.bz2";
+      locale = "ja";
+      arch = "linux-i686";
+      sha512 = "233574779b07c9173b160760dd1b229305b225e9b9580a680baa31a0f5b6b2133fe3013dd2f4cdabec3a1c930aa1def9f3ae687c4043cc9a4edb83ede83a353c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ka/firefox-67.0b7.tar.bz2";
+      locale = "ka";
+      arch = "linux-i686";
+      sha512 = "b1e3b26e05c527111888b5d683e040873c3dd324bf3d3c143e22abf1e55bfc4b43ccea09fdf05a58dd28710d5624b01529c1e341b963c13895caf2931c7048e4";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/kab/firefox-67.0b7.tar.bz2";
+      locale = "kab";
+      arch = "linux-i686";
+      sha512 = "3f0a5dfe8701ac74fafd654607d40b3a258586bb7791823be84db682a84339ec1f0305212de9efc2754ec90ae7584a05c58c26d370090871af38e5ef8bbb95a2";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/kk/firefox-67.0b7.tar.bz2";
+      locale = "kk";
+      arch = "linux-i686";
+      sha512 = "55a39f67b34b21d3fb31b4dfbbde75af058ba32b1e5f666847d2d053743ae51cf0787a09959fdb8fd27df6daf38f801f7aa2c0c6ac4f64d8ecaac3d893242e5d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/km/firefox-67.0b7.tar.bz2";
+      locale = "km";
+      arch = "linux-i686";
+      sha512 = "e4fbc74ef0df4989b5776d3a5c526f323d2472f5a2460b539c120c54e3c3fb3cb8397e71126fef3cccbbe9326d2346195f08f415c49938dd65f63807894f67b1";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/kn/firefox-67.0b7.tar.bz2";
+      locale = "kn";
+      arch = "linux-i686";
+      sha512 = "5834427a79672c0e7538825e52eff561a7f018e763eab8755e295396f64315de968360ba4a8a039215dc80444d8e465a1d5ba7c11a60694b4ea16e7f0f340a77";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ko/firefox-67.0b7.tar.bz2";
+      locale = "ko";
+      arch = "linux-i686";
+      sha512 = "9761f01f078d2cec24ac785c68c95588de533be04b4ab37184b01c677c98ffd70dbbc1d1550338253dc38edc884d51d134496cef70a05435a838edc0b5068990";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/lij/firefox-67.0b7.tar.bz2";
+      locale = "lij";
+      arch = "linux-i686";
+      sha512 = "4b3bc0acb18d2a2f80a4a469882df2b72594357ef201f337996bbb3315c260ee503030620e9e42a823ebd8cdca531f63e9a94b9f52bfafb83a7cde1e520d0e3e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/lt/firefox-67.0b7.tar.bz2";
+      locale = "lt";
+      arch = "linux-i686";
+      sha512 = "5e9b8361dadc8df55055dbd15f4b2245cdb9acd7ddd7853417451246e59fd4b30b570c30acb2ed078cad3fc239f15218045ec99eb006c8702677ad289e73271e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/lv/firefox-67.0b7.tar.bz2";
+      locale = "lv";
+      arch = "linux-i686";
+      sha512 = "757428fc0c04f757c424da039bef8d7f4653bae24b1532c1bff55305a1f7be8063e9e4a01ea5034f7f2badbb5202bfcb82954cb39438c714dd97ed0b6af07f04";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/mai/firefox-67.0b7.tar.bz2";
+      locale = "mai";
+      arch = "linux-i686";
+      sha512 = "451cb28d1aa9d8898827be4645eb32f49cdea09b493802c78c9b4316b22fef7cd99a46c1c07e2f06e7dec2415abb6bd3cc7b4075e54805a843aee852aeeb19ba";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/mk/firefox-67.0b7.tar.bz2";
+      locale = "mk";
+      arch = "linux-i686";
+      sha512 = "6ce5dc05deb1f2761a8a1d4703522b4b90fa6ceb1d7189818f0b22340d956664af1ec3b92c965bbc46889835e4403e1ba189b3c0bdea92e36a8aaf3061a3625b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ml/firefox-67.0b7.tar.bz2";
+      locale = "ml";
+      arch = "linux-i686";
+      sha512 = "fc9a68806276cbc7e9b3b528d6b93075429aa8759722bac01575680e6f7e94914f51e44ba0968aa841631aa876bcf716a0f9c1cbafdea31adfc0dddf758a80c7";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/mr/firefox-67.0b7.tar.bz2";
+      locale = "mr";
+      arch = "linux-i686";
+      sha512 = "0ecf5e23e5c2bcc32946e3e4672557224e0af6081f8280a9c1f49927bd9dec9b3ce4b445c800a8ae48e75a514e24beb2bc0e760f859bf1f5a6c0cf02c594a6c1";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ms/firefox-67.0b7.tar.bz2";
+      locale = "ms";
+      arch = "linux-i686";
+      sha512 = "1adbb3d092dd0909f5ddaac58240dc587dc819fe8a64e5e5bd3a81ba2d7effb516ade1a37bf437c42803ebb9860b322917ee347b62d4ff1cee503f3432988923";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/my/firefox-67.0b7.tar.bz2";
+      locale = "my";
+      arch = "linux-i686";
+      sha512 = "c7f9549a94b511231bd0cd22e7705cec80548a52eaf8f4af5fc975d18e0ee504a2e7be5b4b06504d66cceab993dff4ecc37e014ddcd051ccd545ef19cffcec5e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/nb-NO/firefox-67.0b7.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-i686";
+      sha512 = "a6129f1dd66cde5a9166ae180ca24d533f7b2ac463eff50276354f0db7eacf28f64d5df587e833342c1968fd3c4a1f9f91861907767e5ed0ff543c37da6925bb";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ne-NP/firefox-67.0b7.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-i686";
+      sha512 = "3281cac33c6dd97b497d2a10e4d4c9c60efd6d138ec9944d0d0e836629c036c7fb0c00cf84e27bd9bb7e443ddb6a69df4485a014930e2ba0a4ad8a224644a9c8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/nl/firefox-67.0b7.tar.bz2";
+      locale = "nl";
+      arch = "linux-i686";
+      sha512 = "b54914b0b065514a0af1f469fd601b76bc8c30087d7a23d5466ab5c8a71e5ec31ff5293ec2b1a621d6c4ad64158144d0f0691682cf974b97cde011701a8a9fa8";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/nn-NO/firefox-67.0b7.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-i686";
+      sha512 = "6790ce0522f6595447a9f3b7419255cab8f4635807f8e67d83095d37c89aeb4eef657aa8c1b9a3aaa436b06484872933e5b0a8a115e43f7fcf17381726653c2e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/oc/firefox-67.0b7.tar.bz2";
+      locale = "oc";
+      arch = "linux-i686";
+      sha512 = "418bef24367b311cd26d05e736b73127538297b5c2a672b9e3e4c2b1f81b92e04564f3722a41fb2fd05d712f7c848248d020a2040843e797f7ec7747fe274b53";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/or/firefox-67.0b7.tar.bz2";
+      locale = "or";
+      arch = "linux-i686";
+      sha512 = "50972ebf6d86827604b066ad175a6a16250225083ae7b66a27690d8c052da84899a382fe80ea7f329b0d79b826375e9a356f5660f0f19b106f9539ca4375d023";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/pa-IN/firefox-67.0b7.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-i686";
+      sha512 = "96a3cf9c11b1d1c77e3d51576229d046072fa44ca035bfae726e1dfcda696b0f78e5ee34a0d8372fc641245f41e685ce716be6a19bdeeafb0dd74a3aca5e089a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/pl/firefox-67.0b7.tar.bz2";
+      locale = "pl";
+      arch = "linux-i686";
+      sha512 = "5edef293b1d8140240d7621503032d6b28ab6ac6c481ee82c0252e7dfa8a24633e00401ad790a80165f8074a289a58125afa29d1133331aa38c6e6a1740b1261";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/pt-BR/firefox-67.0b7.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-i686";
+      sha512 = "f294b7fb5e2f2277ea5985e7441e9515a434ae45ec45b40e590e469720cedece0b5475e7f5249b8dd4aaf1d1dbf76a2150aa9a5bf53dc1e81042b9ebbd1956b9";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/pt-PT/firefox-67.0b7.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-i686";
+      sha512 = "76e69887b1f6aad40164db1c7129ec0b80052dcb039a3e70ce7b5829d1f01e4a4006c028474cf101e59af61c0889f54f00351bdf94aed5d7929ffaa26625239f";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/rm/firefox-67.0b7.tar.bz2";
+      locale = "rm";
+      arch = "linux-i686";
+      sha512 = "07a18b9c089cbd64eb4baca99a76cfe2358e2bc5b3e8e63e7ebff64c801218774fe6c50cdfad0d5317963db74d79fc7d65000ee68b87f31700ab54249e73c39c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ro/firefox-67.0b7.tar.bz2";
+      locale = "ro";
+      arch = "linux-i686";
+      sha512 = "f9412dc6fe36f9c36d36c1ec3f9ea757a9401d0f111c2b95332c0c2fc64308969764d06df39c57ae457b924214c841843b9d64d42020920d83fffcfe2cb18834";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ru/firefox-67.0b7.tar.bz2";
+      locale = "ru";
+      arch = "linux-i686";
+      sha512 = "da5cc7a67b119d1b454ab5a6597bf697ec95411f32680971ad9ca0882d74b8008ca84d72878271379a7404ccba4f04b00f9d606ac157323d6cd33646bacea313";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/si/firefox-67.0b7.tar.bz2";
+      locale = "si";
+      arch = "linux-i686";
+      sha512 = "31713c81b82debe496f6b94799f81f68390b5c8fef96024a5baa8e54ffc39d39fcd820683873abf3b6456b5e789e2b882a6f0dba9a64e145a79782013fef74b5";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/sk/firefox-67.0b7.tar.bz2";
+      locale = "sk";
+      arch = "linux-i686";
+      sha512 = "0475c5ddde2f150fe2c2a62d6d62db80084f7bf37ec191e2b976d6fd5a0a0169d7c557cd1cf9ab56b0f666b84bea8a6d51510320e8aa75096b654b6b335be26a";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/sl/firefox-67.0b7.tar.bz2";
+      locale = "sl";
+      arch = "linux-i686";
+      sha512 = "771f9c7a404a2a2cbcc754fbd26ed5a47d093da522c8270526f1ba31b0535a669beb7325d81b38f6667b8cf982c95cb5a8528bb80fe32b8e2770d45b1b3d2311";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/son/firefox-67.0b7.tar.bz2";
+      locale = "son";
+      arch = "linux-i686";
+      sha512 = "b283f759743e0298bc9c0dbc82c524a6e997754cdf9aa57792ada118631635bd673559275e9e6cd270e49ecae57587082290d66f023f9dcbe1fe0ec5d2649644";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/sq/firefox-67.0b7.tar.bz2";
+      locale = "sq";
+      arch = "linux-i686";
+      sha512 = "698a5dfe611fb2956d319b81b09886ebe511ad2f1e99bd6970de31498ed8f016edc3d136a9c3aeae42367cef09639b5ae9a22539560fc394bf93bc83d1344e3b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/sr/firefox-67.0b7.tar.bz2";
+      locale = "sr";
+      arch = "linux-i686";
+      sha512 = "a9c3b24129df77638866d9cd72afa5f72dd6181355174e40e0cf8ac2c1a1da87c9a60565e6d97863e50e14a76ccfe0110194ce2547f8297bcd89bf8cade4f24e";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/sv-SE/firefox-67.0b7.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-i686";
+      sha512 = "e71cc0f01b4a9e279810523dcf98b43a9ef82a64769ee7cfde94896d0caed75a0bfda07cad1f0120d44b738f48a0998d090deb49a7e9395cfd0150e18d292c2c";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ta/firefox-67.0b7.tar.bz2";
+      locale = "ta";
+      arch = "linux-i686";
+      sha512 = "5c7948e1db8a8523591cfa598cf2b1971f01d7b8a79baeb932aee2aaa8ba8230aecf783bf7be8b27312599b8a59abceedd07cfa5e140e9107289e717efd77894";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/te/firefox-67.0b7.tar.bz2";
+      locale = "te";
+      arch = "linux-i686";
+      sha512 = "01c2e2103faa9b2bd22c6b3a9604433350095a8bcee430007114c440b765f091dd3adc28119c24c9024d70fdff1256220305ac8b4f66182e6fa9e5dd35c7c20d";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/th/firefox-67.0b7.tar.bz2";
+      locale = "th";
+      arch = "linux-i686";
+      sha512 = "9782614b88612fb1bc669dc26a61d266fbf1a8613e3ad3cd1193482985c05f182343589589c24ff016ce4dd1c63c755348dbdb6a699cb2f093ea00f7a629e573";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/tr/firefox-67.0b7.tar.bz2";
+      locale = "tr";
+      arch = "linux-i686";
+      sha512 = "4dacea29f57f6acedf30231d08d86d53afb88b055195a0c11a9f4e2598460900b3b20be4aa22a8fd5794de3f636a575a0e55815621dbeac4a2f7854399915767";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/uk/firefox-67.0b7.tar.bz2";
+      locale = "uk";
+      arch = "linux-i686";
+      sha512 = "3b92fc3c99366d332261c8cfe57a04fcbf285b5d5976e60da29a0844a30e9e15b1441cebfb8bda6dfc048f95ec233ee099042285effccd2d9fa10dc572b03e2b";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/ur/firefox-67.0b7.tar.bz2";
+      locale = "ur";
+      arch = "linux-i686";
+      sha512 = "0194916cd60f933c5a8ac7738487b90584e2881cd45f51aa1fa81ccd410b0596623bdb880226247a943910add37342e54cccc9bd250e2091cadf871f26931ea4";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/uz/firefox-67.0b7.tar.bz2";
+      locale = "uz";
+      arch = "linux-i686";
+      sha512 = "579779fe27dd2d30a5fe2498eba0e9227f0322f3533837dee60240cbfe98b68ba2b696984a110dd42f4a5b3c12110f61e33c38f7f489fa69a5c1c38280932466";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/vi/firefox-67.0b7.tar.bz2";
+      locale = "vi";
+      arch = "linux-i686";
+      sha512 = "d7f8699f2f172725095bacb2a7a9dda73d131933d308420a938b49a7cbdc0cb56e957573f9f8c46a909cc07184f848e98713390b1eea816e97cb6f4007179902";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/xh/firefox-67.0b7.tar.bz2";
+      locale = "xh";
+      arch = "linux-i686";
+      sha512 = "4201fd07a57086607501c193ccab243a6a6e1758d349895ed1fcd3ef1142b450da16285881b9319bb63afe7f622e5cb7dbf68db27d17c6f21ab94920d5c8a305";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/zh-CN/firefox-67.0b7.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-i686";
+      sha512 = "d0a35927d7fd6b6f72b21ad6c15533af13a478d8465f1eb39ef9ddf1dfeaf5653d097e59de410f97453f9b545b97b9b82f22973366efc3b03aff7603594f7edf";
+    }
+    { url = "http://archive.mozilla.org/pub/devedition/releases/67.0b7/linux-i686/zh-TW/firefox-67.0b7.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-i686";
+      sha512 = "f01bccf18cec3f201a9a69e167543de472d7dde86304539d6c17f093468d5197b0230ef4280a0b7af8d5a264485a69667fd81b458d85ab0bc7175aa80667d419";
+    }
+    ];
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/firefox.key b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/firefox.key
new file mode 100644
index 000000000000..bd27ce85c94f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/firefox.key
@@ -0,0 +1,254 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----

+Version: SKS 1.1.5

+Comment: Hostname: keyserver.mozilla.org

+

+mQINBFWpQAQBEAC+9wVlwGLy8ILCybLesuB3KkHHK+Yt1F1PJaI30X448ttGzxCzPQpH6BoA

+73uzcTReVjfCFGvM4ij6qVV2SNaTxmNBrL1uVeEUsCuGduDUQMQYRGxRtWq5rCH48LnltKPa

+mPiEBzrgFL3i5bYEUHO7M0lATEknG7Iaz697K/ssHREZfuucB4GNxXMgswZ7GTZO3VBDVEw5

+GwU3sUvww93TwMC29lIPCux445AxZPKr5sOVEsEndUB2oDMsSAoS/dZcl8F4otqfR1pXg618

+cU06omvq5yguWLDRV327BLmezYK0prD3P+7qwEp8MTVmxlbkrClS5j5pR47FrJGdyupNKqLz

+K+7hok5kBxhsdMsdTZLd4tVRjXf04isVO3iFFf/GKuwscOi1+ZYeB3l3sAqgFUWnjbpbHxfs

+lTmo7BgvmjZvAH5ZasaewF3wA06biCDJdcSkC9GmFPmN5DS5/Dkjwfj8+dZAttuSKfmQQnyp

+UPaJ2sBublnJ6INpvYgsEZjV6CFG1EiDJDPu2Zxap8ep0iRMbBBZnpfZTn7SKAcurDJptxin

+CRclTcdOdi1iSZ35LZW0R2FKNnGL33u1IhxU9HRLw3XuljXCOZ84RLn6M+PBc1eZsuv1TA+M

+n111yD3uDv/u/edZ/xeJccF6bYcMvUgRRZh0sgZ0ZT4b0Q6YcQARAQABtC9Nb3ppbGxhIFNv

+ZnR3YXJlIFJlbGVhc2VzIDxyZWxlYXNlQG1vemlsbGEuY29tPohGBBARAgAGBQJVrP9LAAoJ

+EHYlQD1/DRWxU2QAoOOFRbkbIU1zKP2i3jy/6VKHkYEgAJ9N6f9Gmjm1/vtSrvjjlxWzzQQr

+kIhGBBARAgAGBQJVrTrjAAoJEMNOV0fiPdZ3BbkAoJUNHEqNv9dioaGMEIpiFtDjEm44AJ9U

+inMTfAYsL9yb15SdJWe/56VCcoheBBARCAAGBQJWBldjAAoJEAJasBBrF+oerNYA/13MQehk

+3AfkljGi252/cU6i1VOFpCuOeT7lK2c5unGcAP0WZjIDJgaHijtrF4MKCZbUnz37Vxm0OcU8

+qcGkYUwHi4heBBARCgAGBQJVrSz+AAoJEPCp59zTnkUulAYA/31nYhIpb7sVigone8OvFO19

+xtkR9/vy5+iKeYCVlvZtAP9rZ85ymuNYNqX06t+ruDqG2RfdUhJ6aD5IND+KD5ve7IkBHAQQ

+AQIABgUCVaz9fgAKCRCzxalYUIpD8muMB/sH58bMSzzF9zTXRropldw7Vbj9VrRD7NyoX4Ol

+DArtvdLqgPm0JUoP2gXINeSuVPpOfC676yVnBEMjIfqEjq09vcbwayS+Ncx4vQh2BmzDUNLE

+3SlnRn2bEWr9SQL/pOYUDUgmY5a0UIf/WKtBapsPE+Zan51ezYSEfxDNfUpA4T2/9iWwJ2ZO

+y0yIfLdHyvumuyiekJrfrMaF4L9Q0OnJwp1PwkvN4IVwhZeYDtIJN4nRcJK5LrwU7B97uef2

+hqBBll7/qCHl5y4Khb0csFanIg+pQLPUJdIiYtzoFtlgykB61pxqtU9rqGKW02JzEUT8DdPU

+XxmMBy6A8oGeBRH/iQEcBBABAgAGBQJVrRdcAAoJEGVzgtv/JREKQJgH/3nD/3/SumL7nG2g

+7Y1HQqWphUbn40XWvjZcHq3uBUn1QYXeZ5X56SANLM2t+uirGnNaZXW3cxEl5IyZVLbmcLWE

+BlVAcp2Bf3FXFbdJK59f+M+y2+jZT9feTyrw+EtLoiGTxgkLdJyMyI0xGmQhMx5V1ex1CxhZ

+K2JPjzCVYriBI0wIbmKi90YNMQoSsdMhYmX9bHl6XWS9TCDWsqj25FLYJL+WeVXpjO0NjRwE

+E6pc/qldeJYG5Vbf0snGxIerXe+l5D8Yd4PEAnpj58+5pXeoGYZn3WjX8eTFMAEU+QhLKWQ+

+j/Y8Kijge7fUxnSNBZ2KEnuDN/4Hv/DrCFLv14CJARwEEAECAAYFAlWtZVoACgkQ5DJ8bD4C

+mcBzsAf/RMqDdVHggQHc0/YLt1f/vY9Y7QQ6HwnDrtcNxxErSVcMguD8K6Oxir0TMSh+/YuZ

+AW8K4KSgEURwZqz4na8/eOxj8bluNmlcAseQDHswqU6CyB95Woy3BocihH7L0eDXZOMzsa33

+vRQHBMioLxIbpnVtVbFR1z7tmyfjcOrzP32xo5QoPoczKX26luMBjAvbw1FC0is2INnmUSYM

+4uH7iFZuXGPFYxcAqODqy5ys3MoPa4oZ71d0HoiRil1+s0Y+2ByddZ19pE2TXp4ZXNYNUj/2

+aRj8b4sTjR4rqhHIx/vfoK+VCNy/skFUZOyPdbbymE0stTRSJ1gr9CZLcBWYF4kBHAQQAQIA

+BgUCVcFZcAAKCRCJFz+VfFX5XqApB/938p+CJiDRnh2o7eDWnjSyAu7FWmWGkOQnjI/kraKx

+1vojsYnKRXD6mjq1QJ8Hsp4taJnLQjcokNTUiST4m/e4ZJExPWuJKkwlralWGH6NpqYcgWPa

+jSYb0eYQC4YqS0kfyzolrHdKI8Y4NGEU7yy5zsHwWkHt/mpNQMrYnXwyWdIrc03X/OXo51dJ

+yshJDRw3InREyBblFJcLvArNHz219wMrXAicPytw4wfPpVrmDx6GrZcI8q8ECWCjwSXXv7hR

+pEuFLSy5XPhMc+wYBJjNlUoiFBAF/7zENd3rMn9SCQLiIFYe0ubmO+bpeGy7TizbxOaCIfgU

+ouyy0BQXNuJBiQEcBBABAgAGBQJV0hrqAAoJEK18uZ+CSLoPzEIH/1D6sJMNAJtZCRGhJXvv

+6SYhv4pUVNyDF9FnUvRsovliojoe4IkuBTWKhPGrxbiD5IO/izr38shqNhhm9JE2/SQZHObY

+Pi+lyfDKbJgImTNxmS4F7JHnRLr37VxK1sVvuNkynJnqvCcp1g5xwNIx1rKcka3iuqJj6toM

+8XQfgsTHH1rUkWHbUV3QwNzXm+yhFm2s6QzxBooPzmFn8AY7CXD4pvcMR+M0Zy+e42nngd8l

+zRnmTBVig4pRq0GCMulFG+XjeVQZFpoIIxo2k1lczbRmGttONdGWSjxBUxReoTbSwM3C/50N

+robycGQgY0gd6LGtWtU8/uEfklEy2NluxYWJARwEEAEIAAYFAlWtAUYACgkQVu5xjc4OFUs0

+OAf+LM0dyyvUFGdXfJDpP2xMknXzsHAXWFEtH5jein58mv6dD3fTVcCouo1vMQH3WFFSLYZv

+wtNnHGrSBqFbNKqZ0ATQ5tcYaWsSZ+MVJJMXJDXFG/Oihg1nNOM33VdfV0RGPKP1I4cEROxm

+s3TUFkHW3cSCgMzs8I1OxfSoLrm6da8EN+2ct2InqzdQL2yisyTyrdmXoNpwXDxApKYkvVHQ

+4+9eJI5m0ZAr0mBjIeJdATcw4/lIVKTrV7UhrChxiffYJcz4SSC1crmr+2Fzw53CyAsAmYal

+UHep3Yr05oQ4oJRX9X3VrY/yELHwwxXaxCAdwwHbbXAMhZsPk9Mc20J6BokBHAQQAQgABgUC

+Va0isQAKCRCj1lIXO3Y+j6ZeB/91Q9/qr5oMWgOMsix8kflBLw2f/t+tRR0SWDw90bG1npJB

+6nq5Hl+Bz4/A4SWFTFrrrlZi1Enjn1FYBiZuHaSQ/+loYF/2dbQDbBKShfIk3J0lxqfKPAfK

+opRsEuxckC8YW1thGxt5eQQ8zkJoqBFTBzwiXOj3/ncJkX9q9krgUlfTSVmrT9nx0hjyNQQX

+rghsmBtpR7WCS7G7vNRGCNUorhtviUvL+ze1F7TTSGspVsVxo2ghmz5WT/cD9MV1gcVjojYm

+ksh5JIl39jCHr9hl8aRId/OfzsN+TKuBcpAxDkm9BCAps7oY8FlLKDFZTtHa000AkodKHT88

+nwnvKuqPiQEcBBABCAAGBQJVrTkDAAoJEPbQ92HczOykK9YH/0MARo3HlYXeS2bDqM/lwK/r

+QcPCCyYke6wbICjncbCOjgXHqG/lBhClNs7hp/7gqkUaR7H5tmeI4lalP40mSHHnnFvMD3Tc

+yhn350igK0bgrjWQDaYxhKlHT3vIXd/C24/vRSAxmqIKbP+IoXOyt2GMTQq8GOm2dgYRaTkw

+yHnGWnMaibctX8D4oCYR0/D4YJqPkfqobf8+1ZfP5GaMbSxE/Jwdo0kJa4vPjEzFXbygAbnc

+apzdwN6zgel2zh885rz7B7vIpMr/Y7eV85Q68qdyyhLe8cL8Y18YPzpFf+/PZNbgYxouafvn

+FwBhPQwg0gUF/+1eM3UE2ua+saSTGduJARwEEAEKAAYFAlWtCVsACgkQM0LhtmejiGMovwf8

+CfYJHNbwiwSMUoP4n7FrmElhBtxvlbnCMZKz08v+lFsfS3wU1LUN69GqirfF0vkQRSlSBp7n

+iCLHQCfSoqHMLgxF0P2xgXLjaYM/t/rxXDawJmW18G04dqFrtCPZTbwMT2PsPHTiWQdaN0e5

+0lXk9Vo+l6VbwQMg4zH7icZadeJgQooxFalHYFVXUVeex9t8/YdanFVrHFa3tao6azBTSUkJ

+vZtIu14SfxigDWIIwsx0xpVfJf3a/xC6HY3Q1a3NeBz3i6DwaK5wYqijZKl0WVdULKyqU98o

+F6y0mUv3d2o/p07Cqgeo6xxMkHqu83OLa2a0C7tYPLgL4EFc2FtikYkCHAQQAQIABgUCVaz7

+KAAKCRCWO3gxCjexfKxrD/4npm1rB7+pPlotbqK37Mur7egPbVSAzVNU/zUKPAuGUeP3C64Y

+N77ETx1kDuS+meAqMDHFc9Bf8HivPbtj6QcK96U5KstbmSh1Ow9YiQtxJgxGjg/CzREgZAFc

+jy0MhoklyPsFhv07s6MLOJMSM/krEN5nqjifQ0WdmTk02FLoHVWcLdjfgMiPiSjGbU3k7luv

+jPyRNzk831szE5mfa74rEYh4TBklse+2uB4DFQ/3oHZ1Sj6OBK6ujmNKQjIP7Cl+jmjr7+QK

+0OJcRaj/8AckDA5qXTZACh1S2syCDDMnX0V+dTxGCIoWOK+tt9mLohMzpEeD4NIX4qdpbbCR

+zeYZMHSomyBIsbA6B+/ftDE7W1N0/FtJ9adkkCynKULvh2CH5c5hgOOL22M+2spnywRoeJRU

+WU7hBM5OUH3JjA4Tu4j/cwp7dD7QzZrzmC9f5LQJ3OelejvVowWPQd3/tky4o1q6wlmFqAcA

+gtu97UwgBOSR9sJPGDlt1iC91UYAiBQQAA7ya8uXUS84mCQwTlr8j+YrowvEHK4IxpPREytT

+1LzzV/4Am4ndDFtujy83QjL0qaIIim1xIwoEosd4yidhpczw7f3b9dQpuBIFeQuhM7JsxP4t

+mE7S6k6GlEmqa3INPVaPGnsUGS7+xSMlcJXLtimPCSQvFma9YiGV5vtLy4kCHAQQAQIABgUC

+Vaz8uAAKCRASy06X4H5n0dg0D/9QoxIh9LRt1jor7OHG4xKUjKiXxn/KeQNlJnxI55dlWIvJ

+EJGheFjaDomzKBYuxmm2Ejx+eV5CHDLUYsLFYwWf8+JGOP75Ueglgr8A0/bdsL63KX6NP2DC

+g8XR4Z1aeei3WMY7p/qMWpqbQoAv9c3p49Ss2jSNuthWsRR6vbQ9iwze2oaUaA44WKQyhhbC

+wBU4SHYjlKCLqIBh/HXZFhZ4rDfuWgPBKvYU1nnOPF0jJRCco3Vgx3T9F+LZ3zo5UPt1Xapr

+3hMVS9iaJyl1w4z2miApUaZuHPuWKuO4CJ1GF1mS5T6vG8gB3Ts5zdtBF2xQIkCz+SM7vW/2

+i/82oq6P8EuLHEhrQPR4oTjXIvXdEJ9kgbjqcj8Xk+8teEOnuwh6iEhay9i/bf0D3Jd+roFN

+5dnWPxhOVjzrI3fwlK1/ylsZYqUYBEzt7Wj0MdhjeKssI5YICcqYXXjBttMw4B7DZXPFXzz3

+kHB56jZ/II4YUjpLO85Jo5A9SV+aIqa0mvCt6DvVWy/rhfxfoUdqNlhX11gkVLaA7xxgn/Nq

+POf+h5hVO2mwWkmart9YHKMZ3ukCdke65ITL/nsYSm2ZhG7OYjaCfu9jPWtkBstOEWyT9q4J

+TdViR7wN3eMefEG6rb49rxOYvGJu+cTVkp3SCpl0w1j+tPj4tkj7ENzPMXdnuYkCHAQQAQIA

+BgUCVa0s4gAKCRCKsTKWOgZTeuMyEACKOySKAd/xDcPcHg7Prvdws04Z8DIR0dY2qUlbRVx2

+jTmIXyry63CqbOJFbDg9uk5x0+lSotvrWtZ+NKSrg9VM6vyV4cc2P9rhqIBi3wO2elzAmpOa

+S2KKOjQ+2fS/xqh91ElJUu09xXQXJ0vMrqgui+zN1YBDiJV0WOmm90Mm2NPiihcWZmBmDorO

+qMQabwbjBLi0yUVHgAlkilY3mAB4tmEKDeN+4pYSAAhXAll9U+nyoVMgwMJscZyazOp4MqMb

+mFjyr4p5AGzv+OOJtjtCNKT6oW9Y+URLY0YKeOsPk0v5PlbQCVBlLeSBsNZudKav/Gvo7Mvz

+5uLTcneBFb+haYIiXO/FQm4uBHkzdNFLgaph81Wzh62AhbtBlfBOj/lbzN3k/xRwo64QU+2Z

+9GOhFlhjfROquY70FCQcspwNuqCdZybnkdpF2Qrr6Pi0qKR/Xb9Vd7PW0/gKQdwwlYTiDemg

+A21mYeJrYw873/7U/+kLFRvmPAEX4IOIOEN6XVjxvu78REi6CmXxOoYnH4aRSXDRyi1nsGjB

+43AtfAMMNCUigDgFP4sUsZAG1RAoxBhOsO/g9S5wx8H3rKITCXDjQh2SYeBwHFcU03EMcyzE

+QhbZNighN+aRKGIibteRxISiKU+kcWaHolemeo6wGF87QXEpJaQ2OwIoIxQYvDDmQokCHAQQ

+AQgABgUCVaz/8QAKCRA/8xuvEEv54t06D/9n1Nyn2QSUN1mXd7pomoaka+I2ogDbQpu9iuFq

+bkqfcH3UuG8yTKlPp9lYDBs0IEfG85Js6iVxJIultocrcDmOyDkyEsnYbdel/tn3X4yqD8eI

+6ImRoCE+gnQ3LoEIHuODfJoosM/jAHANs4fsla4/u5CZDXaaq7pYXGiTt7ndsfmLiCa7dAg7

+bVFfJagsnL/VjlfeWM9nW01rDL9LPxSN4tq7ZKXWZDonFZYJ4unsK/Cn6Pqco4Wb+FUOWCcW

+t8in1pgeNHZ9WnAgXG999/3iCbbQTLB6uVwY4Ax5P7VApnLVXV6QFVf7bN1DxE8kZk+pfLGc

+uD1LJSF0skE80M17kAt+iV+fam8EYzeGdG6cY6w+srndaMaq9ddiHIiQkR35SjJAGnrNRj8o

+oUr/vKOBnFfuwJLA2MOUVPZ8HWB+WXW8qhihw9CXa38Hdt4o5knMGRIyTWEF0TQDtRGQ6his

+VBN3OxJRXBj7/QgCG/GoYpweGKcsMU43p57TzbnXVVUytJsLFyexOGNzrUIxgDVPEvTUnNvd

+AihNZPdbW3YdFkP9pdwOyDpQwebXELUx1kp4ql0laueex4L1v+0a6rDYQeK1gOq5UGY+THRS

+gB2xsHl5zeryfgnjlUkUlxKuumz+9FI2fRtSpxmWllJkRF2oFMGRuLPGAWe8nHvfgkuGVokC

+HAQQAQgABgUCVa0bowAKCRCVY0f2+/OkFWKREACZ9TOmzvY6mrfWVEdldcYPj8cU/1LJhGdb

+No5YYMx+A72nchxGXepHA65OEK+f6rFMeZFPwpQPy6Sj3MhT623H/PECfeG87WcLOyJbfc3i

+9T5jvxS+ztG6abYI2J/50oMvjUWdWkDX3VvdPc0ZZ+KC+oHvx9a/9Yki48m4CEKglgVsrRW/

+b9AXZQCj07bB0GjQQtkqY/m1Z8m4ttzxfO7OBo/jHNF2An4/4gUDirXNDj0UdB5FYFJaTEUC

+neIj2x0fk1r4u6na8tINhiZ0M7IgjnDlBD5jwzvwG+3kYE6TnYp9Mfeg2MPC13tp7jrJatLL

+utrOzvmSVLGLXbkh9w+v+vx7qO3TxZUNlFqTmYs+vI2V/9j7KYV7Ttoind6Io7X9ImnYrvd8

+JOyVcO3867MplKnrnqHJvFStE+JcHEcw5aRw+WVmoFd/obGc34V3K62T977QQGOkrTYDEdje

+KADfjXXZkZMZc0IvzLBOJ1XB45+PKqJYCcJJS8Xr55+NGCDaaUPWDpkNGIqmX2n9kYROMKG6

+uWkZIqG0JlZkga3THSJIvLiy6uoOvDC4GoQ9JnTwpGv6r1Hwcg+4DCOrYKOoPKMMU24vHx2F

+tRRUgCXtr2cmi2ymHlUrtz8EXS4tblic8lixcbvPUqLEvbJ2gfWQvjXNd1whYE/wfvI9WBTE

+IokCHAQQAQgABgUCVa0b3wAKCRC8FzAbSRs/IQhXEADiKbCnsN/+Plllxn6SQHACEU75ackx

++Q02XiD/u+wUptYUGmJi4aaW9f6mgzedOxYK4S+/dCiFtkcYlL+FjaR0C7G6tMjrDgW+8nQC

+TPUNQA0gX2B8n06a7Zmdv3EbV/PIJJwTNSBp/dqKbvPKnRquOOpH+ayZ3awKOq/LlWBErbW1

+gB+FabN0lCe0iUIQTF9OH3GC4QsMtIrePueBmVrVPcHATV2Vw9UPqX1uX/tlXm5eai06oVT7

+V0FwUbg0o1eacblNXvHciHpe33zZIKkGBWwSjDVcU9/SN+U8GfoMYmyCma4iN3KaCklpzBkJ

+iQZtNKPAB5KJti8LDUxFi2sJd3sqWaZDGFhO+/PKhBKpqIhAzx1ppd11zLgh0eg6gQlXN8D8

+ELISRvQqGGNNZdChEFdzGElg5SMfmeEd37OaX4wceLLV0v7EA0doHMVo0enFhSwU3Ywtwxbi

+ukKc7H/ylG7+jvntjY+z7KktRsY/FkklrbrNhddMBQMMSAQUUz1GJ+6NUKmzXjqxFuuh3OAh

+qNzhJyABZWQcNMph+rogEslkenwoHV9gWRWtS3CMybJkKkbsWpYhMZNY6hFtgCwida7NPs83

+69v+yTTE6TU/NIlXUKYIf2LMqtOpEBTjaN3jKpUi5DeE3zBeh6iVKUrfCXbt8O0rYQPNWGSW

++MZ2t4kCHAQQAQgABgUCVvA4GwAKCRBE9G4UbQI5XfS9D/9XPK7jg0lmsNZ2sDIyeAw5n6oh

+SR5F20ocTMAVeXqN7VkvJdNpIqHJa13EP408DgTy9BsSptym/OQGE6B82BU7FZTEL6eMHnGG

+Dg+5ktx9+b73xLedzK75ti6ED+QuA4kDYcvW8hASht0zRcmFUzwbtuEopJ1Lk1R3oFLwCAov

+lhduC45nANWrTK5U+D1U2obl5PAvx+9mEfgvojlGH/C/WD74W+cQZFH7t4+muRzamckLyPft

+nTxjNF/lpYIm7z0QOwvzBYj+PJ09wYueK00RE5+i9Ff8DrjtVSXsziQvSjJuUlv0kVvM8r3t

+h4zBBNRhA4cinwqxhgqO4G+r2r9Gv0M2nKKOnWmyF+MSIRnhgONOQZe5a7kQxKVWkLicS2IG

+UpPeQyTWaqZzYXsD+Dm6DXD57vYTURtUkwO0CDONzT5XiS1HG1MZrw+V/Jai4HAvpF5WkTJX

+Pc1Lv75BxJj3wOAw4MzEWCCdr/N/dt5/+ULpEaSQfIg4L4iEj6rvabQyN0KbOxIDx+pPQ81i

+zfj36wIrDqhyCNIdmVH/yARltkL4XDEl/pt7Y3t6jqFhy057lektowClWcPeq3DoL0LFYnjN

+PpYvIjRIAXdhaYiAu2ViF8WdGzQ5tFeI7u3PQUG5NcPe+WOPOru3wMMrUhLgLHkCdNkjivP7

+9qIPSTkCGYkCHAQQAQgABgUCVvA48gAKCRC3hu8lqKOJoLRMEACmlyePsyE5CH7JALOWPDjT

+f+ERbn+JUTKF+QS0XyWclA/BIK8qmGWfgH38T9nocFnkw17D3GP8msv8ll+T4TzW9Kz9+GCU

+JcHzdsWj99npyeqG5tw+VfJctIBjsnX3mf4N0idvNrkAG5olbpR5UdsYYz62HstLqxibOg4z

+WhTyYvO6CjnszZrRJk0TYZON4cXN14WYq2OTrMaElx0My8o1qVBnK58pIRzv72PmvQqUk5Zj

+hUyp9gxjqqCJDz0hVK61ZuGP6iKK8KCLTfSxeat05LAbz8aC58qlg5DVktevHOjBgnTa8B7B

+gJ7bQ9PLMa3lF4H1eSiR9+8ecpzEfGHILoeIDIYH7z7J/S0mTgV3u5brOMYO+mE9CEfps85t

+VVoyJrIR8mGEdtE2YmdQpdFzYIYvRfq9tnXZjVsAAsC20Smw0LnjhYzAt9QJwZ9pFMXUTg6l

+C5xT+6LNrEY+JR3wC16q36bcbCNj0cBv1A3x6OI5OQfpexhLPDgoDiI+qozJIdj8MzJ8W6KU

+1Z3yb3dqACk77yv37rGO6uduSHnSti26c/cUIy6XZBbXBdobE9O3tr8hwvTQ1FXBmYnBrdiz

+U6tgxEA5czRC9HOkdk6y6ocbjmONpF6MxkpJAvTMk7IqC2/hisbV9x4utla+7tmNZU137QGc

+aK2AGQablVAy4YkCHAQQAQgABgUCVvCMigAKCRCkhaDtUbi3xAU7D/9gUPZSJ8pbZV9TLaKD

+57Bc7B78HNV/B438ib4dI33iihMTBHnCB1giPE9X54QoV8ASxrO/xveS1kkj78jERqUcED6Z

+HhMLb9SWs6CxUKdMdgovnIlFUc+t05D5mb6STi+zNihwO0JI+n79qhETy73WLpC7RR0aMx7z

+Ycbqp3NWPptcf1kVGJZGx+QbEHfVye98T5pkH5Wp+7LSlup6AldQT/oifxdGxLXbECTnwozR

+vyMpAaphoEHrET1YOmKnmw/Jyi6DLpTb3XvSf5Tntzr7HklCEcL9FvYCoHxiXWawLhuPhSyr

+FYeYtF1ypmzTgaJWyuTZ8sN9J+y7Tbchk/I6FpX+3YoTgPCcC7hv1Krs803N/3KuyBEvhzg7

+NYRikzO3fxXlBG0RMm+662E7KlERU24izbWhGiYwl34+MaxrIO4oDvF79LEN7y0+SjL4V0B9

+689d+HI1ZfS9O1xkOlW6y0QyagOzsTOUF12s2mWydFmipbYnIwsSsu6Nzk3yO4M+qYABJXJ3

+tIFQPTd7xqmPNlJ8mFtmzHDhb3Pv6sRNFLLujYM9cJpuNMbAHWdohz1bjBT9pZQ3zWpll5wo

+tUvGmJd6hTAXdUgmZ7lh7Uq6axClMmiLe1WYntcNpb04PyyEm2+GU5x123UTiSX2LGKa4t+H

+NSM8nJL8BJiGk80xVIkCHAQQAQoABgUCVa0OAwAKCRDDvTXkbdRdpVR+D/4/37e8WqKOHNPt

+eQu42sj0ZOfcqyVMA9TQ578F0s9MwoQuqfVhXGSWevOctuMv2qTBjBfFjkdPrKR5L4LNAgMs

+u1epHU0DPcRZUCbh1P7GpolmZ8KgnjT5Wpl1AcuOCaP08VMrt/e/JndTHp6btn6HsLVtryNh

+lL7oaeYbDr6/ovHNGHVIVSZgGP9f4Y8FiDpyfKav71vYLBMxtzM7lc3eFT1S10XhSW6k+8S5

+XldYWkLDriRXDE85C+9QndpOoQaIICp3ye3JVnUxa1qhvsYj9uPt1M6hKiBSoXdplrB+hQc+

+nqLNN3jxpGdmGmwrjtjqMhocMIguEqgARJOek3XKOppEhu+IcnJgU4edARJNLsBauiVBWY/6

+mZOFlZq6H48tVyziS2n/oIpi+aCc/fQeGs9zMTtFUohPfYtTcy9PecXMOYpSu4p4tQ07oucn

+xfBkRUgTdM5VwX7YwTcRwp9XhHACUEGBhrwMH8Iz+sK2jLF3FhJGkef1vFs0vqSf4I8DBFkY

+AKF848YyEcGHeINQloi3v0Kr2PpBxlRh+GPWwi++QPKXQFzlTiyVtMzoo/lpmAWUJwj0dbAb

+H/mohtvWtA1WPHC2JRZ52JLThhpDrK3t//Jdt2WHE91cMx7/2B0PK4O8/j7UVlsOJXpVPsGX

+5SFCeTB/iS4JtIwWN275zIkCMwQQAQgAHRYhBFnKni0qMx3iUaokJ18Dx2fCR6TVBQJZDvZC

+AAoJEF8Dx2fCR6TVoGkQAIjqaQ7tpdhDJ6ORNtLIt0TsWg0jg2rpoq+9Au36+UYBMuBJ3Py/

+tAsZ3cqQlig7lJiQqOuQZkbg1vcY4Kdad7AGa8Kq3sLn8h2XUlNU90X0KAwdCTA/YXxODlfU

+CD2hl4vJEoH/FZtfUsaLNHLmz0brKGrWvChq00j5bPfp90KYKqamGb3a4/LG4DHL4lmEBtP+

++YA0YqUQ3laOvKune2YwSGe4nKRarZnFiIn2OnH9w0vKN/x9IMGEtc5MbQVgGtmT5km3DUuX

+MDforshue6c7ao4nMOC96ajkWYZhybqHJgLOrEGPVUkOaEe7s1kx4ye9Ph3w/LXEE8Y8VFiZ

+orkA/8PTtx0M9hrCVkDp0w8YTzFJ9DFutrImuPT6+mNIk+0NQeuDsv492m/JXGLw/LRl97Tm

+HpKME+vDd5NBLo4OShlDKHwPszYcpSJTG9+5++csR95al3tWnuGX9V0/dO1s7Mv0f/z07nLB

+/tL+hEpqqA5aRiGzdx/KOrPZuhCTyfA3b2wvOblwf4A/E1yO7uzPTuSWnx1E14iZuaCPyZPX

+Eh3XSYCLEnQ05jy50uGXCDVR+xiE/5i/L3IxyhJk6zn5GOW5b8Taq5s/dFS3zWiFS6l0zQ1V

+QmJH8jdGLoBFvdVLZoAa1bihLo+nJVPR2RauWnxWoWk1NQoT3l02Lk6DiQI4BBMBAgAiBQJV

+qUAEAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRBht7Um2Y8DU1CqD/9Gvr9Xu4uq

+sjDHRQWSfI0lqxElmFSRjF0awsPXzM7Q1rxV7dCxik4LeiOmpoVTOmqboo2/x5d938q7uPdY

+av2Q+RuNk2CG/LpXku9rgmTE7oszEqQliqKoXajUZ91rw19wrTwYXLgLQvzM3CUAO+Z0yjjf

+za2Yc0ZtNN+3sF5VpGsT3Fb14aYZDaNg6yPFvkyxp0B1lS4rwgL3lkeVQNHeAf0qqF9tBank

+Gj3bgqK/5/YlTM2usb3x46bVBvwX2t4/NnYM5hEnI57inwamX6SiMJc2e2QmBzAnVrXJETrD

+L1HOl4GUJ6hC4tL3Yw2d7515BlSyRNkWhhdRp1/q9t1+ovSe48Ip2X2WF5/VA3ATfQhHKa3p

++EkIV98VCMZ14x9KIIeBwjyJyFBuvOEEIYZHdsAdqf1zYRtD6m6obcBrRiNfoNsYmNY4joDr

+VupI96ksIxVpepXaZkQhplZ1mQ4eOdGtToIl1cb/4PibVgFnBgzrR4mQ27h4wzAwWdGweJZ/

+tuGoqm3C6TwfIganajiPyKqsVFUkRsr9y12EDcfUCUq6D182t/AJ+qE0JIGO73tXTdTbqPTg

+kyf2etnZQQZum3L7w41NvfxZfn+gLrUGDBXwqLjovDJvt8iZTPPyMTzemOHuzf40Iq+9sf5V

+9PXZ/5X9+ymE3cTAbAk9MLd9fbkCDQRVqUD0ARAAr/Prvt+mhVSPjNDPSDrTBVZ/7XLaUZvy

+IVggKa+snJoStrlJGTKKFgDVaYTOE3hP/+0fDdQh97rjr4aRjd4hBbaNj0MzZdoSWYw3yT+/

+nidufmgPus0TIJMVO8I6rl3vgcfW/D3ovNrLW/LjkTuM9a+p+D1J7woCfMSWiFMmOLPKFT7R

+BuY8edCVjyA6RP9K9Gj1sURSeqNaHR9Gr4rW10s+FwUHWxxzbmIWqH0gApQYO6vyND5IMcKO

+BCWQU6Detuq1pQ6dUc+iF+sEz3Rk3C6d4WBBjtkVJSJ0KKan8Q3gJefOCMNhdRQDjZLwbzr4

+bgoAkLbaBFCjiZxWZ6HAdMfSCV8uZQrtMS7b0DUpY0vdH9Htl3JqOOkK9RorYDQBuPdkTYFI

+NsmtWVsFV/LmR891mOF3fBRaoVoMeJVwiZyNlFY+dyWWFzLp+GoTLcQtmuR7OkmOcBGxWSKP

+cZfPqhf4dVQud7bDR2RNfJ1Hqa5kj8Z422sseYDwHf/T9OWWYvLwKGZhlUgpnzO3WCGrd/6E

+VNeC1mKXt4F7BmADov4Rdcrp1mPXiVt7oIxLaS6eBNf2y1TWzjYj5ZFuKqIukDEJfqpwsE5a

+snCw56nae+7luGs8em1J9GEXhWzXG15UVyQJaFwuB1iL8l7VcEQz4ABVrSTUWLLAKDsyqUbq

+2gsAEQEAAYkERAQYAQIADwUCValA9AIbAgUJA8JnAAIpCRBht7Um2Y8DU8FdIAQZAQIABgUC

+ValA9AAKCRAcacTlXpkF2y/FD/oDrZm143Rv9NV9InnVJ0brpqbB7aulFfhR1LDuJ/GjeqGA

+QgJCZdHlzT2pfCXXswUlYzcWEatvGcDkoaB5Ya2qs+6nhBk8pT6XYRrZAtIlKIGrlCqoSBm9

+HXguGv+EIaEECr2z/Funx9so0mP+5aJn65M9u3lPmuAonj6DcHoM07WsfsXvQ4ut3fabFmzi

+lLGeAdEDKIw8Hn3JBUOxUyFrQlOoL4/3qK1TO+cidz/2bATQQyIG2kNOSgHBslU+e6/7sWOQ

+4ufmzm7dEsf197zPXGdXR88LT+d2uU2K4GkCffNUKxZqy9bXxXPwr4JBjxLDQnDvl50GAWjP

+ZAwXEd8Okwl5+8xp0HuZ217WUqT8ib0oUUfwh2H1vrMPRr/46i6O6THpCkV8BWF7axPYIiba

+eYwC4BkjZwK3tIL5ESf2f0xK4hbE3xhMTeqABQHoXd5rQ7SEaUuX7PlQ59fRs0Cz55vH8/o9

+zMm0PN6qmZFvRBeqjnklZcu+ZdP9+CMXt81NMuzIK1X7EfpkUoam8YkYkwcCkRvPZrSHLXZF

+kfnx4jW543dPOfycjnv6hhKyoXD9CBx0ZcOicsYmw9XMilBGD3b8ZdK6RYX4ywKNU6KUdFJj

+XB88+Ynv6QxDit1emMCHA1glzV9/k36iYLEIqgWBiwJeUUIcUqzgnBFtN13cyS6oEACUGUiP

+Kbw3IkgGW19ZyS6FBNfgGIGW0Y82Br0KlCyaXnX0R4+4u2h7kfR9NSnhRhsvRnPIkiZATa7D

++Ew1nfpsDTnti0c6g/gVw9TC/rCyXkkLztRHVcWEBdvnFJTSp2LeFaHSGbvvZfoIGUzyUzoa

+1P98NmRIY1cxBoizVf8729/zAaD4fAslxoK/JsjjDvDUrRHtaNZmUle60Jl/yFFzR3zxb+pJ

+liigoP2rZLt+ipomHJIhoXXWwfkRO9U/egJ8ZUhWEpZvROnaNc9eVct5EBADxL7gHWjlceIz

+4ndI1eE9AdEZDdUZwOfjmK2DcXjFBfZC+jhJXjY0xh3pPKQz90h9DIkM5WDcJPf6ep+MKSd/

+3hI2/JmmscQ+alwN6x6g8zDySMo3APA9cUvEFGe0+CepVcNw03jU4faSrHiMXsUuVGbA2kHa

+YVUfzF5W5GbuHZZlGxoSiq+K+HNG0RJUDa6bkSDvrcJVNw1iUrowP+LLwnNsy5kGuU4evnwc

+oN1w7LVbTPaq4RIaiqvAD33kiA9q//UNKnK4k81z+hRNaWGliyGpgqh+V7MDIqPfT5TMLdH+

+ZjTeuLrNS8KBcc2BmUpSwzdUReTqHmgO5peeIcsvO7GNMFWsgucZiAdIVE/zQv+SfP6jhS+r

+jCPs0eeu5zl8/V+gXFE2wy3jTJEl9bkCDQRZS9m1ARAAvh1Nh4GgjpTFZy7uQRFz5PPXdZTB

+I+Y4hTpF2heoFzZDI6SLyz64Ooglum3ZglQ9ac+ChTSsO36aw4b22kCM9WDmkcl7wf21fG9o

+8gJDVjFjDWbwTWREaKjgS6s/Yb8f9gje/BGySojxynTi3zyTUN94q9dhVjfiQ79UzXZdN9Fy

+yIx2YO5tOo09hTWSZg16oxP47Mj1ATaS6UIrQMcMnOp0kuc6SufXPSWsUA+g2lW0dmHgPvIH

+wUfcjWqT2elF01e9KOFe7im29G6zOS2MRx8cr6KRg/eNWpHh5aI4quRUhYk4Kw4ohQTbs9ed

+0YttS4PMK+sq6xHpb28X6ZgrWnelPY9hfwcR4m7Ot3VQUG8JY9/aTlFCoeTgkhop+MCUI+dJ

+eY8depIa0PTzdEmEWRvPhTTv+CUdZ6v4z5LD6FhP+/5c6FCbcIb89Rp5fa53oYV5/KZf+0DU

+VgmpXFU7J7ZrGgDeU7vIzmwr8kcx0vtsVm1dVwYLACpTaaQPbISQUDM8sEcqKAqD7hWKaxNs

+b2M85L6q2/rnHq4g46yJzdR3b8EH+V9u+mUi9DIljDwcpvw7ReRQ9wPdDWLynnglIeGImbjY

+fr324yaIl4vNORAkbsoCkS/qc5v6MvKvYNle5fzb9S9kCbNZmD9c5/bHPjj9ENeQvzrl2pFh

+6dc1o5cAEQEAAYkEcgQYAQgAJhYhBBTyZoLQkWzdgeN7bWG3tSbZjwNTBQJZS9m1AhsCBQkD

+wmcAAkAJEGG3tSbZjwNTwXQgBBkBCAAdFiEE3OrF2WE1uRxOpnKru769uyTG81UFAllL2bUA

+CgkQu769uyTG81UFUw//bW5T7w2k8ukGfpIcm0gB98VgxKenSCmU6N+Ii0DwcNtzW+pmVWl2

+TbHIXDpvuD69ODWBDMXu6gBkrVzNEsK3uhzGe0tWA+5I7Vke3iEkbll7VRQlIOrw+n5NMvje

+uDqKsMt1gMEEdgRKddYApEAi49vV7XnqkB2lLKfAnf6o/KqPm8MuQ+u0xYanupZCldwdpcx5

+rybj79Es0iO9Gh/+3qOtR6ubOz3Vn78Lc3y6AP9pmtdOI2QX8foGK4hNmgHSP6uPLh/ERC9N

+ir0Lc2hoEhHEkQ8CnEaccp70r03VkEQuMJQJPUyRsGZ/gIm0SAm9JJxWHXJk2/5NUN83pHAX

+0LA4zxtWs4fVW5f8v9eIhFFPTZ4au+/cS9D4GFx4mlY34awcpAzrny2tntGEejY9HSJv4PuF

+ZCmtyS2q61N9EU8yuBwVM9cp5HntzG+OT4HYugtI6ibehM0S1Roy4ETwT+Ns41ffhCwdYMp8

+tzdeksQ35s7rkB9OJHj+q2dkGaV0FQb3FutbSpxbP4zk/dLqyxuivdUPHGtf4W/qklxzCWBg

+0VDFA7PwatmEXRxTjx77RelTY0V7K54dDyVv3Jh2+FzuaQZzzuIhv4gtqHntaqLnYl3h/QNL

+bOTE3ppvn9RUSR983Bd+M3QhbbwZrgG1m+hdUZUmji+wbK0wV0xHNEH+4BAAjbVzdNOs7hMv

+jY1wVDRFjvICVorNdNdU3ELy/9BAoiwOs2+zjDXmsX+3YtdzwKvdpQ24O0TvH4Vo3BkvKkJ7

+5EU7LroAbYQ2423m1MY3eaBslmX7TUJ3XE+k7OZF8AmcftgP4nhC4IQSCtoBc9+ncyGN4da1

+BpYO7b19tO0/HST8GHSrEcU9bGGdimS2eNkSgybA8wF6K0K9yvrpTNSZ7OBVlzQfEn8s70Gy

+zs/d6C/rTA+defnv3AMaciuINSEdFyfYq4wjt5PikvgceMAAkH/z69xTNg+6q3FQt/lyK7xX

+5qPMe2oFyDA1H+Cb/uL7ioo+jXh9gF+0fk8OP2IPzxYhBfulpVtgclmOuaekzaKeIv8NFW7G

+oA9OghziExePxg95OpL/VyQ7PJiAUj1pFovFk5HS6ejVZNEGJ/A5zLc1PBIcr/phu0luqhXA

+hImsZS6858GWQllWULNWw8bX5Blo8AvcfFVdq9iAK7aHN7g45ZR7Ze6qKHDyFv4XWuE/rj9C

+2mM/GAstvU0gGmbo6B1mNGMJuX3Gd3dG8fqFjE77OB2feJyfZ8UeF1nvG1hxlmuD1A5e6/os

+O9V7kjhXKzM2zSO11zHQ/5PlUisoUBjJ/QIK4v9RBNGtbRKso5X9Fke692lVgrdggDJ3j2Qq

+MuTo71rAVDLtxerc+GNq0GI=

+=YjV6

+-----END PGP PUBLIC KEY BLOCK-----

diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix
new file mode 100644
index 000000000000..d60cb4203501
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix
@@ -0,0 +1,995 @@
+{
+  version = "66.0.2";
+  sources = [
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ach/firefox-66.0.2.tar.bz2";
+      locale = "ach";
+      arch = "linux-x86_64";
+      sha512 = "65f92c4efa17af90eee9c44add39c3b3cc0749a334043fbc56d24966979631248de2bc2f9f7978e97482a363528412bf38780d84955d8cd0edc05898dadc30dd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/af/firefox-66.0.2.tar.bz2";
+      locale = "af";
+      arch = "linux-x86_64";
+      sha512 = "06f8e60fda4ce450ffbdaf12dc95cbf3dd8ec7cc6b9bbc8ea76c144e800a17b96fbdbeb31c6f118a50b14ea7f55b5ff125380ce86b4ab2d2bdd05d5ec4e33881";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/an/firefox-66.0.2.tar.bz2";
+      locale = "an";
+      arch = "linux-x86_64";
+      sha512 = "9f3a0c73bcca0445ea9002e46c4d42d8ad2cc06419f663270cfcd4c6a57e1937530e6a1b0302648fcc7a64e5e3b7fe41424e56ba9c81a6726b556630f81165ec";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ar/firefox-66.0.2.tar.bz2";
+      locale = "ar";
+      arch = "linux-x86_64";
+      sha512 = "f9db879e2aedbc09f58a004a6b7e4836da8c0715367335028176c7051b831e5f88c9d7cacea91bcd3ecfe4f0c041f9f8d16c1a27ccffa9a89ed41b7dd3b4c472";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/as/firefox-66.0.2.tar.bz2";
+      locale = "as";
+      arch = "linux-x86_64";
+      sha512 = "3be820595d129db7cbe07d6500c9d9128a55adacf6f1d3d53fdec8d705453d9f94c53ff489de74805237024cd668f2c9568bc67fa2df686c3a4e7544a252b694";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ast/firefox-66.0.2.tar.bz2";
+      locale = "ast";
+      arch = "linux-x86_64";
+      sha512 = "c04842ed940c442549504cb8b26610c00508fa1d7155cd690d43227b343816d8c780282d330ecfc2ce951a486f022adbe18ffa8008aa3a43c89b079af968b466";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/az/firefox-66.0.2.tar.bz2";
+      locale = "az";
+      arch = "linux-x86_64";
+      sha512 = "2deb0ebfa3e2bb74c3c7f80c08b0323d81b38f9399037a3955fbb53e219850a8899ed19aff5b81188c3c8e4bbecb411ad046e0fbb5fe5834d5023935e1e10968";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/be/firefox-66.0.2.tar.bz2";
+      locale = "be";
+      arch = "linux-x86_64";
+      sha512 = "c7012a19e0283cf0b7c45153f078eb9170447c95c62141bb1ea54516e363b11b306e1d7d89f673387ccac727b36caf51ead6dcbae3d290923eb05bc792c06187";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/bg/firefox-66.0.2.tar.bz2";
+      locale = "bg";
+      arch = "linux-x86_64";
+      sha512 = "b9e54ea4d35e4f2d53c8e87e86f1b4d245ca677279ad16ff4d10abb252801245c80666d977993739f14ecc6ee5d80e07abfdd0ebb096c71a65eec4fa7df3bbbc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/bn-BD/firefox-66.0.2.tar.bz2";
+      locale = "bn-BD";
+      arch = "linux-x86_64";
+      sha512 = "bf75162072dfafaebc0c02339d5e2697ebf27615cc7d902c0d2504e986592764293272573d23f5faee12dc253b8ec29fa994106fac21a8fe9f11cacff2b28fc0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/bn-IN/firefox-66.0.2.tar.bz2";
+      locale = "bn-IN";
+      arch = "linux-x86_64";
+      sha512 = "c7bc4d575ab66066c88a5cdfc65cdb958479973ba44a909609aaf71022a427b982918177c2ee80ce692030702191d02408d775d262882809583e2e057a7e7fb4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/br/firefox-66.0.2.tar.bz2";
+      locale = "br";
+      arch = "linux-x86_64";
+      sha512 = "3e929becf7b4ed961c5aef6627e6537b2f9ac71804e206a0a29d7b538dc53a09c7c8b018655846ee16caaa8d704082a5ae25d6b74ab2cf859d78ce58e8ee9617";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/bs/firefox-66.0.2.tar.bz2";
+      locale = "bs";
+      arch = "linux-x86_64";
+      sha512 = "13f7240e1c27a7223e37b1fea9885f75969857857e880cb960059039e39fdd5d22100fd693a213cd5e471aa112ae05a9eef3a5a26d277e2b83286769d1333920";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ca/firefox-66.0.2.tar.bz2";
+      locale = "ca";
+      arch = "linux-x86_64";
+      sha512 = "c9ca70971a8ce500c12fabcb4b13f6ee92d3ea55c7db4936fd5be238217af7541b7d87b6d61355d91ef44a0aa98f584d76e99b80fa42eb43da6da12548170942";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/cak/firefox-66.0.2.tar.bz2";
+      locale = "cak";
+      arch = "linux-x86_64";
+      sha512 = "3496530d20164aaa8af56e72b294d9e68139bf3c8140a7d94647d0deb802f4dea7801643ea08dda69546e8bacecd29ab1bbee7854eddd3c4dd8d931d902f865c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/cs/firefox-66.0.2.tar.bz2";
+      locale = "cs";
+      arch = "linux-x86_64";
+      sha512 = "065e44c11789e2c12bb1a1ae4aa67d986c8e718ee964108d8bb9697050c534ce01ef0d1c9b00eb03b28a55a31ed7ba7741fc7fb692a09c1b8512f4f4f2d77d7e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/cy/firefox-66.0.2.tar.bz2";
+      locale = "cy";
+      arch = "linux-x86_64";
+      sha512 = "824263895aaf97000efe2bd59345ddfb4e3f056fb15f93c7c211f001c3921c83d736b8c03c68fcf7b2a35560b12f6581b0df30e9382ccd3d725839d9385b0f8e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/da/firefox-66.0.2.tar.bz2";
+      locale = "da";
+      arch = "linux-x86_64";
+      sha512 = "8804542db2d736139718e45e5e549be9981469d4e68d7f6ce0a362289f8ab72994983309dfe1c6c0d1d73694b3b9bd726c13c62048397d8c865717596939bda1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/de/firefox-66.0.2.tar.bz2";
+      locale = "de";
+      arch = "linux-x86_64";
+      sha512 = "44e233c9023d574c0c9a24ac12e91311327b513d790efaddc76d46c869ca6297087039201e4b886575509e78cf9c4a6a18cc898d866e85aea5790dfab8674987";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/dsb/firefox-66.0.2.tar.bz2";
+      locale = "dsb";
+      arch = "linux-x86_64";
+      sha512 = "4d5b87e5310655138f3300a0c6aae55bdd7a8bff419ca1798ffabf54340eb61981d48d17ad8bc9ca396271ed8e57afdb4cca0e1954a66daa8588cc2f954b8d44";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/el/firefox-66.0.2.tar.bz2";
+      locale = "el";
+      arch = "linux-x86_64";
+      sha512 = "add0ed575851a65218361802a597fbcd26cfee5fea3bd76f15c32f0045eace55a65158aa56d50039d1fd5866a34fb3eac091c3746f69ef6529fb6fa5abccb095";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/en-CA/firefox-66.0.2.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-x86_64";
+      sha512 = "f02ea6b747a8f3753de493820e21d0b61ab7ca6aa5de7d5b8fbdf9481ccf59d9ce79b3622b10ea13ceddb329d9369a857fbc972932f6b08c25bb9d5177ee4108";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/en-GB/firefox-66.0.2.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-x86_64";
+      sha512 = "0afeab9506114ccc8f64299633e19382c1038cef090d7a257a6cbf2b4d89986111c72b7273c7c803d870d05a9456cc8e761d2527d17220f8d70c97738068936d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/en-US/firefox-66.0.2.tar.bz2";
+      locale = "en-US";
+      arch = "linux-x86_64";
+      sha512 = "ee23f32f5efe24652a21a32e23d39bf3ea566a9833352b99a051e56da2b9156852d36e922e8afd08c4910bb8e921d1a4e0f49d3dd34d7e0b369584572d7e62a2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/en-ZA/firefox-66.0.2.tar.bz2";
+      locale = "en-ZA";
+      arch = "linux-x86_64";
+      sha512 = "1165fe055f78c7cf6f7771869dfe710b7d55836a6ad3c09697252dbd7e79f9f597cb97cf733f1268b59f6823f2d456ec8b0af13fbe3c68cb3df8a08a57bab95d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/eo/firefox-66.0.2.tar.bz2";
+      locale = "eo";
+      arch = "linux-x86_64";
+      sha512 = "d3d5fd7ac3b89e21d857fd94273f1df7c1118f5be25c294b38cbcf0a6594afd51fd58a164df04e93aa991fea44e51c7fc974d44213ebde1f2415cc43cb242af8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/es-AR/firefox-66.0.2.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-x86_64";
+      sha512 = "77332230576e3babcb71b9ca74c14266733fed67a370d7adac8f0bdabaf16358a1ee7188211a3590cfd02a7cbc06e5e125b20f0f68468f3900e94d332a39ef3f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/es-CL/firefox-66.0.2.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-x86_64";
+      sha512 = "0a28e64b356f9deba612365ad615f2a5e5d0654ee20e4361ea7959e791faf60aa116f3bd3e451af88cb6738cb815b78cfd26e44c012d03aa624bad4e1257dd00";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/es-ES/firefox-66.0.2.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-x86_64";
+      sha512 = "90b18eadcfa5099785d0b46203866e575c4f065f9e70d133393caf5a1551c0f3e22051e274875e6b039b310f2b230e8c85af38eea722e50b357ab3eaf338f9e1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/es-MX/firefox-66.0.2.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-x86_64";
+      sha512 = "ae8bb311cae77f2bbb103a2221c42cdb26699c258fe077f0a5871068b66c8ca3cf0df5fdfc6ef58bd5ff91fbebdf519c7f319c9e1a6702cef9fc260c6788fd57";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/et/firefox-66.0.2.tar.bz2";
+      locale = "et";
+      arch = "linux-x86_64";
+      sha512 = "45d48243b86ee2601368ff1a14e918aee4e5f02d3b2e6a8fc2b5f6c97ee76d7b2caad0131863a192651049e099688b3aa27308e121ed49cfc11a012c71978ae5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/eu/firefox-66.0.2.tar.bz2";
+      locale = "eu";
+      arch = "linux-x86_64";
+      sha512 = "9357f45c6c484adafd58a204a233c2620e3493aff2b5a1cae16dd8ca7f73003fb6f6d01bcfa8924c499a3052ac6a5aaeb7dfc0cca3d7a664a12219fd5b57b4e5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/fa/firefox-66.0.2.tar.bz2";
+      locale = "fa";
+      arch = "linux-x86_64";
+      sha512 = "72d81059001c37edcfbc2e994bff4f9c2dff57fff85a562d389789b8752931a898bfa058225b66868e17db9333449399d23f0043b1c4c102a92739f90e61be40";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ff/firefox-66.0.2.tar.bz2";
+      locale = "ff";
+      arch = "linux-x86_64";
+      sha512 = "fdd14ec7cc8be41fcfd9f2013fd9ed032c119a34cba51642fa3c18cd8ae8ac138859218985a6481d0ac5aa974b226b550eec0f99ea1c62ef65da8c17ad019f22";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/fi/firefox-66.0.2.tar.bz2";
+      locale = "fi";
+      arch = "linux-x86_64";
+      sha512 = "fe15c43cff8159abe81ae0f51569d5aa4185d7583d92086491d694792c46b10520f77e187dc75379fbbe432da78d869172502e8b8fd6542f3f4d2641cc6df402";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/fr/firefox-66.0.2.tar.bz2";
+      locale = "fr";
+      arch = "linux-x86_64";
+      sha512 = "9125d6bd70290423cc9913146707a50accd43ac1f05ec58257e41805d7a052fcadb25629926e0b20d53c2553476d58b9691f48f59538e68aa7b661ff655c6ca3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/fy-NL/firefox-66.0.2.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-x86_64";
+      sha512 = "b4d4ef0ecee7e0b0f8b429b7cb48641f6d8fecd89962587e5daee7ad43d18ef99c6a03292624ce634c1630f147626df6dc76713f3f9187b63a4ac501180979d1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ga-IE/firefox-66.0.2.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-x86_64";
+      sha512 = "ec94b0dd54d36a78f7ab05901f22eb93c963b48e57b49253f3a3de6a7fe04de227f856fb82c4414d264143bffab5789a9eb3882f8d2dfa8ed6bc0c7d757e2602";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/gd/firefox-66.0.2.tar.bz2";
+      locale = "gd";
+      arch = "linux-x86_64";
+      sha512 = "e283b895cdcb60d5cab1cdcbf64022306e2f7617b880c386096d800c634469f45543802f489a6160eaf531fb35e744d78b806990a776df27a150f06e479d4297";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/gl/firefox-66.0.2.tar.bz2";
+      locale = "gl";
+      arch = "linux-x86_64";
+      sha512 = "4db9cd8584f30e75e30545803d8dffa935fb75a2f091d20d213f3cf7a55ade3e406d066142d7c4444fe0ef9309f265320caebe07b669c253685c1a0fa4319e91";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/gn/firefox-66.0.2.tar.bz2";
+      locale = "gn";
+      arch = "linux-x86_64";
+      sha512 = "73a5bd92ce989a62f060ae5be5993188b186b26ce3c818b14366d1fd1da09059d02e30ca239a32b74a4cbe2116c3965e5301ce42c2fa08b5af554b399b4cd6e3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/gu-IN/firefox-66.0.2.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-x86_64";
+      sha512 = "628e0460eddc0b748cb6968d096836a9e88e44ea43facde7b2969a7c262ced4aad51d97f335bd3ea26b378c102b131411d1de0322d618ed47025092647f02e99";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/he/firefox-66.0.2.tar.bz2";
+      locale = "he";
+      arch = "linux-x86_64";
+      sha512 = "315ec2d0af7bf39dd4aff5f7f3ed41b24d9726b3b02003d282dee80f7ab785cedab0ee0d47ef004c5b30407b72228bbc84ae21882268ae34210d5e5cdd9a3be6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/hi-IN/firefox-66.0.2.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-x86_64";
+      sha512 = "63edbdae70206aacd70b777e551a2d2af8226c304f3d8c3052436749f71556f4a8f1d11a941f6918878de3d33491a0bbbd198da80780f7aae8a70acd1b8495ea";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/hr/firefox-66.0.2.tar.bz2";
+      locale = "hr";
+      arch = "linux-x86_64";
+      sha512 = "e65fce5ab014392710f9dfd4460db1748cc04f9b36e91d358bea411aec32494717956ff4268c19a3263ee296f52e24a9c9d83cd210f82fb090c1e4df7ac77cf1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/hsb/firefox-66.0.2.tar.bz2";
+      locale = "hsb";
+      arch = "linux-x86_64";
+      sha512 = "c0b164a380f86a90489a201c0e4fe5fed6eb5461a90ebe2b241beb8eeeb6680f10963e589dc52ee1568d9e25989514fbf8ba80c53c1cbb6c2fa931bede95e674";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/hu/firefox-66.0.2.tar.bz2";
+      locale = "hu";
+      arch = "linux-x86_64";
+      sha512 = "6535c5b15f2321d8b69e6c59fd06b5029611e9b06bb4cc967741aa6edd9eba734f84776a35b6c76ea181481c965fcb452fafed80ea07973e9d6d5ce1cea01005";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/hy-AM/firefox-66.0.2.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-x86_64";
+      sha512 = "af9091a8868031fbc840a00bf584f5c8d868db0b308bb7f492a2257a16ac0c52bfac9da77b07bc4a575ca05854e58c8b892d4b989e199b50d66a4cfb5cf2f2dd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ia/firefox-66.0.2.tar.bz2";
+      locale = "ia";
+      arch = "linux-x86_64";
+      sha512 = "50a73f0d3260ba21698c59a1a806e47a8329d2f20bd1983d3201de4c0f85599698b0afb5c42239aa8b88bb3e1becd1eaee26643088f55b51b4c3830bde4828e8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/id/firefox-66.0.2.tar.bz2";
+      locale = "id";
+      arch = "linux-x86_64";
+      sha512 = "e77b80bd36b21bea3c614c4e1b72d41b9fcccd24be0487b98ddb3d94db53ec703cea8103c1d5dd6f037eba8158aa1a3b9f22ae076f7acd9bd8d5b3743c56d7d3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/is/firefox-66.0.2.tar.bz2";
+      locale = "is";
+      arch = "linux-x86_64";
+      sha512 = "9b3ee06f79c82ee4215f5a046102e0da4280e89948f5c15b3b8f7cec512b722f6015ee00fa961f2424fa3eaa9d05eb97bfa4514833c8607f8c856fc1ec15e719";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/it/firefox-66.0.2.tar.bz2";
+      locale = "it";
+      arch = "linux-x86_64";
+      sha512 = "4d03f5c013142361bac168ddc1f1b3195e6e095d281eeea6129d917ccb41007ad7d1c16ac30c49047c3b620ac4e89e6af69fe3ec2b614bb2e6f647e303ee6dd3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ja/firefox-66.0.2.tar.bz2";
+      locale = "ja";
+      arch = "linux-x86_64";
+      sha512 = "5cc48652dc4a23c5fa8f41568cc0a51da5fb6039a5235f6cce79362958b5b7ad0f04ef6d8d832d4d60c39b7802bc87e6e95f2803f2d07a98f7a66ee87e49a2d9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ka/firefox-66.0.2.tar.bz2";
+      locale = "ka";
+      arch = "linux-x86_64";
+      sha512 = "50277cf7e49d986746bf2075db7b4de1fba6a793731a82d7b53669cf9b8bc6a4036413611a20700a5e6cb91fc61be8189f86dc47e61a9c493cba17719f668c11";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/kab/firefox-66.0.2.tar.bz2";
+      locale = "kab";
+      arch = "linux-x86_64";
+      sha512 = "df71955a1ef801b49e86de2be14a9a1cdb325a45a8f9424829fc3333841b9019cc927aff9c7ece78b1e9e7df77f88cd899737dfa856a08e0440a6212acc8b9aa";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/kk/firefox-66.0.2.tar.bz2";
+      locale = "kk";
+      arch = "linux-x86_64";
+      sha512 = "ca589dc0d215d8b470f36b05312ad016c523fe4ebb54e37220ad1322e99b5ebf8a3874bce6d131ad6f7ff1008ff29d23393b347dd216bbb0776077a54f84b664";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/km/firefox-66.0.2.tar.bz2";
+      locale = "km";
+      arch = "linux-x86_64";
+      sha512 = "46d8788fe845ebf00bfb7c69122e74c5345295aecce61d2903cb55fc85830378aff0280c297082f88a681c393c948a07593c402faeb25c2f22c301207087d930";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/kn/firefox-66.0.2.tar.bz2";
+      locale = "kn";
+      arch = "linux-x86_64";
+      sha512 = "97fa909c1d3468c17a122e248758fca50a8979ea7cb964dcfddaa17804abf56b62af730665efdd45e9cf617f4ec3f238e6ffd9977a64ee42eb4dddbcf7fbffe9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ko/firefox-66.0.2.tar.bz2";
+      locale = "ko";
+      arch = "linux-x86_64";
+      sha512 = "56c3d254ff64554180a1fc6e968a653ecbf8e31403f37f211cc9a41fae9a51b21260d5804ab8c6a36c1feb2b479e55b3c568a46609b3bbd56ad05d47c6ecbe76";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/lij/firefox-66.0.2.tar.bz2";
+      locale = "lij";
+      arch = "linux-x86_64";
+      sha512 = "ed2eb3aa60089cbaf3d606959bb8b6f5cc80b0baa466796fa1e2587558bb0e1f62445760f2ecc93f83394a246555660e8fd253dc621ffb3f3ae55817e368d630";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/lt/firefox-66.0.2.tar.bz2";
+      locale = "lt";
+      arch = "linux-x86_64";
+      sha512 = "b22a7db91c29a934dd1ec57bcc77869cd28baa6884e61b25c2b84e4dff5fac9d55e0a7e38f1e8301383644799e5dae8b7fa330d554a9309ef0b58a6bac5ca964";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/lv/firefox-66.0.2.tar.bz2";
+      locale = "lv";
+      arch = "linux-x86_64";
+      sha512 = "77bd42fe4966a7dffdf34470cd5657aba9aee81157a78a98a20b0200d71d11162058dfdb9d5a96f9d6648b0513cea3b5c97c8e59e169fe8e955e81c4578ac3bf";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/mai/firefox-66.0.2.tar.bz2";
+      locale = "mai";
+      arch = "linux-x86_64";
+      sha512 = "c110e1559f8f9972b4696c8ee463f813d5088d1babc62333060debf77eac52e7d5b96733bc82c8ffe22aeccfb30c076bba204dbd87890763f3e538a41e2fa414";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/mk/firefox-66.0.2.tar.bz2";
+      locale = "mk";
+      arch = "linux-x86_64";
+      sha512 = "57cfad52e649aa43add6f3d908c2f45005bb1e6cd298bd7158e4ed62013c0de053169e5f52ef4c4e0c5521a7b952b26a3cee8ebb088ef26f769a76d025f6f9ec";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ml/firefox-66.0.2.tar.bz2";
+      locale = "ml";
+      arch = "linux-x86_64";
+      sha512 = "df9c00947fba8e813895dab7f31d284187482a640d880841093e2638ae04c8f12bd8239a35dfd5d5ede4a219300306ef449295431eaa1e3480510b1e63a7e281";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/mr/firefox-66.0.2.tar.bz2";
+      locale = "mr";
+      arch = "linux-x86_64";
+      sha512 = "4afff5982f466eacb86b1a429e68a17c9cbbb9d7a6e59b3ca7eb33341fec9ce904a4289911a0f39f52d4e8eaa5996c3db97d1887209558238f241847a9f941ad";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ms/firefox-66.0.2.tar.bz2";
+      locale = "ms";
+      arch = "linux-x86_64";
+      sha512 = "ba2b33574bebd9f34a0503f5c651837a3ea278eff635d486f99102e3f25c3130dc496debbd40d7268af3aa37d2b69a7b572eb7b794c44049bde1492e60b2c534";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/my/firefox-66.0.2.tar.bz2";
+      locale = "my";
+      arch = "linux-x86_64";
+      sha512 = "bb5480f0d995512f274eab70ec18160714559f5dc36c937dd4fedea483c2c42964765863c696bf44f1bfd3491b706e14ac223817f1f97553c3968c6c8843a71c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/nb-NO/firefox-66.0.2.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-x86_64";
+      sha512 = "cee130f0e6a4a18612b8e90fddbf923456deea6d8ba452a01b06b03e637c14b4131160f3bddf9f4feee05a5a675150c917e891b02c04a42234cda6229de12122";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ne-NP/firefox-66.0.2.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-x86_64";
+      sha512 = "cc75630facb9471172e2419d0addc02b1afde95fbf43a53afca63bb6af353adc3dcf45ca7199daeb6e2db312c48ccdffe520b09d316f195f614f5922831791ac";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/nl/firefox-66.0.2.tar.bz2";
+      locale = "nl";
+      arch = "linux-x86_64";
+      sha512 = "8e45b9250267a95f583744c94dad0c7bcdc7c00e2dbb1d91efb8b8e56b1f2bff81037936eb840f68e83433590b26a1db18cebbe1dc2ce1f2bae05b65099492d0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/nn-NO/firefox-66.0.2.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-x86_64";
+      sha512 = "689c3ab0d66991573990ff8a3e1e7e7d878addc15609b4cab2b97faff6e8fe44513183f03dd3d23c22795e80e4028f18d2c329cd14f7e7808e784e02a1bc8aff";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/oc/firefox-66.0.2.tar.bz2";
+      locale = "oc";
+      arch = "linux-x86_64";
+      sha512 = "834d098342739e99bbb2ab1dcee997bfcd433d357962e25bc5ecf3026e2f41525c19b9d11ccf2ca0705590d23f8a13ab316f41a90e1d605dfd284421f502a6f1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/or/firefox-66.0.2.tar.bz2";
+      locale = "or";
+      arch = "linux-x86_64";
+      sha512 = "62a696155aa25b6cc62885f15d29988b50b9a4e8d127ff259759b948be0c6b73eb99237116c188b5a46c638525e5890768a6d3978e9a1fad5a1748b917f2ea7b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/pa-IN/firefox-66.0.2.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-x86_64";
+      sha512 = "cc5a35cfba0b96a5d526196b2c56eba9a2cbf75d5bdf564bf85dbc6676849505c62f8e6d8c8a88cc5e6cb7f67d8670878dfe05a074d28bf895790efe7aacf404";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/pl/firefox-66.0.2.tar.bz2";
+      locale = "pl";
+      arch = "linux-x86_64";
+      sha512 = "1549a76ead00ecff081580f1fc77b31c3c7f57aa9d2a7a24231cdfd20f5ec12803ad61b04bfd1693a571f51e18ee9f29d51b5f60361ea5c5fcf7764b04ff102e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/pt-BR/firefox-66.0.2.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-x86_64";
+      sha512 = "fec6c531e4ccdfce86c461744e4ffac4238ccb3c1e4134c09828e3bb171561241f9e683a2cfdb22dc45f674c03b0d59b212a242ac4344be2a74dca7bcc39ccd4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/pt-PT/firefox-66.0.2.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-x86_64";
+      sha512 = "ffb01c1fe171dd86c86617ecf752b196ccf48f6aa117ed86447a741fe82adb00fb908f2f7e01fbea57f6a2cd9c3dc603da47838e61c28a2e1e56a03df9497e80";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/rm/firefox-66.0.2.tar.bz2";
+      locale = "rm";
+      arch = "linux-x86_64";
+      sha512 = "941cb0cf6f67146216553804629001f317f0c3ca4c3cd9525cca819a73aac72b31bf62ed6efc550301b870916f2e697dca6d840d7495c1276a9a031e5c173ef6";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ro/firefox-66.0.2.tar.bz2";
+      locale = "ro";
+      arch = "linux-x86_64";
+      sha512 = "53586bc5d4420435005fdb0f920fd4d7812dbe381119ca2f97c91cf60191c794070f301c4b65903fa3dcdba7045636e868cbda8f3e1e20592c226b38b6a51a84";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ru/firefox-66.0.2.tar.bz2";
+      locale = "ru";
+      arch = "linux-x86_64";
+      sha512 = "efa1e8b1c63dfccb1bcd04c943e21cc7529de39ac710d1224588cb9f6e47bb0d600457e49510deb924bb9de32bb61c4aceb027a803e47c75b40f8b00c95bac69";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/si/firefox-66.0.2.tar.bz2";
+      locale = "si";
+      arch = "linux-x86_64";
+      sha512 = "cf38f59d72961e3adf56ffcdde2cda6923b2fb09fbed09b3eb5b3bc843905773dafcbab858fbf50328e22f7b36c580d1e6ffe4481827cea006f1901fc04c9899";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/sk/firefox-66.0.2.tar.bz2";
+      locale = "sk";
+      arch = "linux-x86_64";
+      sha512 = "e05c3b45a25ac44d3c6b46dcfb9214fb9c2e40453bf041352e10d6790ccc43a9523c541fa0aba473301b4a0298b74e6e74ee399cd65bcdb59dfdd1b2390d3fdd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/sl/firefox-66.0.2.tar.bz2";
+      locale = "sl";
+      arch = "linux-x86_64";
+      sha512 = "2c1728a9f4f2754d8381aae570c61be4806725ed5913e16bec06d871f101454218e9165daf323d496d94ca3ada1e83e69d2b7947641082a70b99f98844d06650";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/son/firefox-66.0.2.tar.bz2";
+      locale = "son";
+      arch = "linux-x86_64";
+      sha512 = "b3752b9ae75efe0c9eca05f17bb5b9d9e62f92c6ed3fe2602c278f0c2c5e2916400eb1b077054612f21e63c0c26752ec2f03cc34820ff95e4e2d8efe66e15804";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/sq/firefox-66.0.2.tar.bz2";
+      locale = "sq";
+      arch = "linux-x86_64";
+      sha512 = "056f6c4a5547057ed8ff3cbaa77d270e5ebb6d315aeabea9d552690eaa6f7c9a5365cddb5c5eedd07b1fcbad64b3bbadc9390c886656650018dd2cb690a29acc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/sr/firefox-66.0.2.tar.bz2";
+      locale = "sr";
+      arch = "linux-x86_64";
+      sha512 = "aa8e8164be5f6c3d40af39807b8f20a4cc5dcbe2230156c60ba92c635b828a40d93918484350e27046464ed67cd3fc4e87ab8bbb0ff4d2594f7d916caa9b6806";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/sv-SE/firefox-66.0.2.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-x86_64";
+      sha512 = "81936ab4ac5f876eea54a833c2f6c447a74ecb3636461b0334f4126f890aac36dfa77eabd9e16e8f9943ff40fc9a862ff2b1e2f3b3ed1eab51a6beb5516f55da";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ta/firefox-66.0.2.tar.bz2";
+      locale = "ta";
+      arch = "linux-x86_64";
+      sha512 = "0537cfad54bec863b83e27a7a36c8fe5126cf704c6a5dcab3d4319a55b27533d66ed98b43a664ee3513b2e8e0cc96fd56126d4045a93db7487e76ecfad967250";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/te/firefox-66.0.2.tar.bz2";
+      locale = "te";
+      arch = "linux-x86_64";
+      sha512 = "1084fa1da0cafd8894659636f7cb14498beac52adc92ab0ae4b9ca1e35517482a39a37d1d4906b4bc6a5a1ecb3c443681705582be5a2aa21745c767b0672078f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/th/firefox-66.0.2.tar.bz2";
+      locale = "th";
+      arch = "linux-x86_64";
+      sha512 = "fa6a5eb637154f9eabd3d5e30eea90d17a2281d65bb25d283a91f36a8db05d615fcc633cc77845e29b898699d9b4c091aaf5d1f81b71aa2d60fc2007040068cd";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/tr/firefox-66.0.2.tar.bz2";
+      locale = "tr";
+      arch = "linux-x86_64";
+      sha512 = "a5df3fb13b78f1cc85bc0881e99390183251c4f8cc108e346bf257a2ca757a6232469e11e8c533b4722cc1381723fae7aa0132e3300bec500ed2c5e5f7070527";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/uk/firefox-66.0.2.tar.bz2";
+      locale = "uk";
+      arch = "linux-x86_64";
+      sha512 = "7925b95cc4ac4b35bfef29d715ae21bf6f98ab7fc99bfda66f3514cc2d67f9a3f327bcb74a8e1545ad20918c8e50488ff0dfea478a08e9f1bc0c5d28cd8c9a35";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/ur/firefox-66.0.2.tar.bz2";
+      locale = "ur";
+      arch = "linux-x86_64";
+      sha512 = "1fd3b03251130cf5b13a98135a5820379c4cf771ba2fabf0ae34d2dbfadca2b5d971c7c0db588fa75ba2594d5c88493961fde59cf743024bc31a7e2aba149b3b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/uz/firefox-66.0.2.tar.bz2";
+      locale = "uz";
+      arch = "linux-x86_64";
+      sha512 = "9baf67bb532ba992d9e28a59348836fcecab10bf793c2504a93822641fbcd3fbdb1922f4ed68cd5ab9783ca2c3a382360eb9eb50889bf3979e7f16b306320c35";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/vi/firefox-66.0.2.tar.bz2";
+      locale = "vi";
+      arch = "linux-x86_64";
+      sha512 = "12afad955cc1674b89af3a8861c3746318fae7e3683ea35e26d3c2f0856c86bb154b860baadecc9d7bedb520e1dea6af0ef73ae420a2b551d5730bfca3c4ed23";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/xh/firefox-66.0.2.tar.bz2";
+      locale = "xh";
+      arch = "linux-x86_64";
+      sha512 = "e9f4f9576e9a0195c6ff8f67cca6bb3794294886ac2a71376c7bf9f8da824b7c15c59d09645e67fdb9f6371142b29d8cf3a45f80039ec405ad1ae837ca105764";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/zh-CN/firefox-66.0.2.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-x86_64";
+      sha512 = "4b1558c2b211f9fb69b8b5f4559f1f35bc547a1ee65ee81ce4d9639b886f765fc97e62070cf39d425dcc8f1fa0d13b7c4dfafc3daf60b660b751d8904f46452d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-x86_64/zh-TW/firefox-66.0.2.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-x86_64";
+      sha512 = "73c4940b6fb87f3f98341bafd894189d9d24357fe3fd1ba28397ffae365f4883933fb759d90a385bb306269376cb2c30b4564e2fd585978ec2fdb73b657e3b18";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ach/firefox-66.0.2.tar.bz2";
+      locale = "ach";
+      arch = "linux-i686";
+      sha512 = "ad20dd3b682f6809f499349fc50131a016fdd424dc87626d151c7b9283d6ed1ef585c829519a434da39ba33a31f6a855628f5e6a950eff89b97465d4d6f97838";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/af/firefox-66.0.2.tar.bz2";
+      locale = "af";
+      arch = "linux-i686";
+      sha512 = "8151ed85053d31956fa8f12e296d5d694066b001f07648845cbacbd206e252fa4bb962f349472475feec99f6a26f30a2fc1e63000664bafff6dc83db7674bd7e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/an/firefox-66.0.2.tar.bz2";
+      locale = "an";
+      arch = "linux-i686";
+      sha512 = "fcb83bf9b222eb5a6d872d6c2b4b7bde7ceb7e97ecf9c908d8dd90a7edb52a10378de453f8ef9643735fdf1bb6459610e77e4c05d14c9c594d94314d707fc222";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ar/firefox-66.0.2.tar.bz2";
+      locale = "ar";
+      arch = "linux-i686";
+      sha512 = "b393dca33c937d282c7658a635808682e1c9829a2c7d567f5e8f854295a9dddbc88971c929ae7ba65acb9cdd7f31f6bb1d8b27fe93c3f74bbd82fde6022ca9d0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/as/firefox-66.0.2.tar.bz2";
+      locale = "as";
+      arch = "linux-i686";
+      sha512 = "d53e0d3f7892fe68434e6f5bfd4e6e894077932c0c757567c15a43495a2372a97015f0a78ad47dabb7b7bd21509373e9d034ec5db3d0ada955ada23bcf860467";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ast/firefox-66.0.2.tar.bz2";
+      locale = "ast";
+      arch = "linux-i686";
+      sha512 = "3ac14d571276b03d4ef74123eeb85a79a422ee9fbd014ec369e0bf7c8efe1d4d3f435897e72a43475e13e0a9ea4a9cfe277455e08bf85d70c2612357ec08a789";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/az/firefox-66.0.2.tar.bz2";
+      locale = "az";
+      arch = "linux-i686";
+      sha512 = "4894d809e0b3db5f01e898e14f396bb4ecb968e5d0129b55ccd3de31c31c50ddaaddd09742e092f4cc62969e70b5e4d821e1a206bd676d98b346e45e1510c3ea";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/be/firefox-66.0.2.tar.bz2";
+      locale = "be";
+      arch = "linux-i686";
+      sha512 = "ac0d6cbd5ce46d1cba9405ad097291ff36038be8631b46703b0ed7fcb93cee6a88664d3c73216f6fc21ff3c16f4c02aae31860d49b9b894aac7b79b01faf720b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/bg/firefox-66.0.2.tar.bz2";
+      locale = "bg";
+      arch = "linux-i686";
+      sha512 = "0c097df8470e5fe5241525662b262fa1f3d088c3a82c596636a2fc79b9a99263717a4cc6b06734e134511f395ee211f95985f287455541f71f09d5522a85807b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/bn-BD/firefox-66.0.2.tar.bz2";
+      locale = "bn-BD";
+      arch = "linux-i686";
+      sha512 = "886bd3d7ede79f0fabba534a07abc26c44f58250f4ec8447b176562cf554aa988f8c88d6f8310cc00f431a9710c4d43a5396312546db1adb81cd40684b83887b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/bn-IN/firefox-66.0.2.tar.bz2";
+      locale = "bn-IN";
+      arch = "linux-i686";
+      sha512 = "5a686bb6a1ffac5473056ecb6c15bfed19f58d118b0b58fe8a058a66eb3ff6ed9793aa5d67eda8357e7652127a887a244d1bb2cf218ba459e18a791b188a13df";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/br/firefox-66.0.2.tar.bz2";
+      locale = "br";
+      arch = "linux-i686";
+      sha512 = "87b7e90a5ab950e428b0a794392b5458e2d7e0e5224982b78ce600adbbf89085e45d6ecf194837e9437465f10e01cd0405d1df99afe90612551af77510514666";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/bs/firefox-66.0.2.tar.bz2";
+      locale = "bs";
+      arch = "linux-i686";
+      sha512 = "80b0dfe3801ec8c979fb0caacccc6409d64b839c40d4ba0ca6fc114e4dd694299197a24b51138c734c0eac85feba9eeeb4ccf187622632db362b8ba4069b0e83";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ca/firefox-66.0.2.tar.bz2";
+      locale = "ca";
+      arch = "linux-i686";
+      sha512 = "7d186f282f82b73433f49bd9f0c3703ecf74d5cbca452ac2469123cd99eaea9f47e0bb46d4f5dba37f291fd0a7bff1136028651118a8b46cb362a5b41ae7e83e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/cak/firefox-66.0.2.tar.bz2";
+      locale = "cak";
+      arch = "linux-i686";
+      sha512 = "9a7c2bc579913f23fa0a9e52c077e52516c66afd5a2319290d8a074e2bce6ec86ec2648f45d810c26e2d60c0a6e1e6ce8c810bc460285eaf268f193e9034faf2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/cs/firefox-66.0.2.tar.bz2";
+      locale = "cs";
+      arch = "linux-i686";
+      sha512 = "1068f4851c0ffcd92cfec959ece7264fdb218920d805dec670c57648e59d10bef3a7df1a4de330bde7d99fc52211ee4f862fc9c414a6f2e096e63d4b9afb789a";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/cy/firefox-66.0.2.tar.bz2";
+      locale = "cy";
+      arch = "linux-i686";
+      sha512 = "1bc1629faef6fc5bfda6f294bcb6b97f120c65b9251128ba7157a36502ae8f22f9bce27cf0a32395f3e2a43e952a8fe2d509ddfc0e6e7f282d30a32310c68493";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/da/firefox-66.0.2.tar.bz2";
+      locale = "da";
+      arch = "linux-i686";
+      sha512 = "b8fd09ae3071742598466eae89d4d038bde1c0a07d1849d9b25269806b64b22371f046ede66e130f6a249e7746d58553c9e79bf918e96a4f22c4d176304ebbab";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/de/firefox-66.0.2.tar.bz2";
+      locale = "de";
+      arch = "linux-i686";
+      sha512 = "226265a47392fc10a9c5638df606bc0cd47403410dd503ea1988dfca29a3c1f6a75ce053e2c604138a453cf5998489396ba5dc173993de5053f9bf0f6dd95996";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/dsb/firefox-66.0.2.tar.bz2";
+      locale = "dsb";
+      arch = "linux-i686";
+      sha512 = "ebe9c8bb5f55ec3915bd1e53ff78005d8799d6ec0e3a7fd940394084aac0cd54fe8852f5e9ecfe63e15efcc48439849c6a8801a8c7127d4bddd880ed4b13b1e7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/el/firefox-66.0.2.tar.bz2";
+      locale = "el";
+      arch = "linux-i686";
+      sha512 = "a54f1c2b0d38268a7517ae5436be6194039926d162e10c8deda35d328ad8b367dbbdeef00e727e504726d5e93bcc04dcb254bf92072022eee1b327735a3bc230";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/en-CA/firefox-66.0.2.tar.bz2";
+      locale = "en-CA";
+      arch = "linux-i686";
+      sha512 = "78bfae33a23334bc262c0f311a6bafd7e1175235311f7e48017173aeecce29d771b2f70223ce6f54bbb08a7796e18ec53c75499c4e6a821bc5890c14339ee3a2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/en-GB/firefox-66.0.2.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-i686";
+      sha512 = "6119e0c74ce896ac4569efeb4660feafb1097162a908a68df0cf33cd5bea2633e85ee2149cbec2ff85bdb1579a055d4776b7d4c2473baadcd9c17a2e9cee1dc5";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/en-US/firefox-66.0.2.tar.bz2";
+      locale = "en-US";
+      arch = "linux-i686";
+      sha512 = "5fadbcdc7d39f21bb8c5051702a1239945e53a058fc61a2fffec0e51c4e31898b0ef5625d51c87612e4fcbf9fc8f3be9e18d6cb86e832d895278965a5c21e034";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/en-ZA/firefox-66.0.2.tar.bz2";
+      locale = "en-ZA";
+      arch = "linux-i686";
+      sha512 = "7abc0ce1d718bdf2d3d1c47449ce4298194b061f6ef35c95577beb1036e5c4a2fc99bdaa145a888bcae0f316034d522a4766c7b1530e7b4b1c9b7a3066d2a771";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/eo/firefox-66.0.2.tar.bz2";
+      locale = "eo";
+      arch = "linux-i686";
+      sha512 = "67100d6438b6b7ca5072ed1cbce1b77387042f01f0fbef87105c535048e44cbe057996e5441879bbbe2066233a638e1b1faf8e880337bc2cc1488893d14a7aff";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/es-AR/firefox-66.0.2.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-i686";
+      sha512 = "4ec1451840a7cabac57feca4d62a572bc3719444f858a07d6b664ec649bd4a2f2f5cd78d9b30663ff1e2f6b0acfce864ecea60850ef4972f3ba00f42b979ecf4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/es-CL/firefox-66.0.2.tar.bz2";
+      locale = "es-CL";
+      arch = "linux-i686";
+      sha512 = "a75fda20a7c8c0ccdd5ab857f62c59b7e843d5f47ce5ea2aafe0459298606f4e66bbcab6e825134b7a35f4f7b217550b8ebcee780cbaebf5bd438fc382fc49d3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/es-ES/firefox-66.0.2.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-i686";
+      sha512 = "76d8438d349e1d52097208000d96e7994ff3fae46e6a3ed6db0977492b4ccd93b49104393779db6f85d5b8303c01bc1d30c93013536b68992b59063a931948b3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/es-MX/firefox-66.0.2.tar.bz2";
+      locale = "es-MX";
+      arch = "linux-i686";
+      sha512 = "34cc6dc8bb07b76e322b3da263be6d91468634a08074da8000ad69a4ef3d93aa281996b5058a24f163db52dad7c73f7264c37bb6905217ddabbf8844076aa934";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/et/firefox-66.0.2.tar.bz2";
+      locale = "et";
+      arch = "linux-i686";
+      sha512 = "84f6514e106ef5457e20d25497a93f44d6968ed3b44d513325926abbb7c3fa36db8c198f71631f28f03afea4d8d1994de07a2aa14fa64693196b4693e1820a6c";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/eu/firefox-66.0.2.tar.bz2";
+      locale = "eu";
+      arch = "linux-i686";
+      sha512 = "dc0713db71626da9224050e3af5f94158002b8eeba4ae0a5f7bcd1e837e4bb1850bc180bf77c35473d6395728397af15eeb0082570e9ef62b3690c73f84cd7dc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/fa/firefox-66.0.2.tar.bz2";
+      locale = "fa";
+      arch = "linux-i686";
+      sha512 = "6634a79d9e3be0050fb4c13a8a39e7316084ee7ef48c32b826954133c516f271672f2b89f91d1e62af7ecdaebe33be3418a8a128b2b0b91388ff18d13e265207";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ff/firefox-66.0.2.tar.bz2";
+      locale = "ff";
+      arch = "linux-i686";
+      sha512 = "b5954d6f5ab4a3fb3c337a67a590513003d781825ff870f8c7a4d10bf73476f017141763f98e433c0f1ba6668f2a76ebcb76bca80e2b73757b3fb2abd98c1ae8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/fi/firefox-66.0.2.tar.bz2";
+      locale = "fi";
+      arch = "linux-i686";
+      sha512 = "2973860cce56da4e81058e565d541fa4f785ab8d567486f992e67d6ae2de60e334fd114adb6b584277ad6c01cd4019b1d1917c709bc1437ecd927c9d7851768b";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/fr/firefox-66.0.2.tar.bz2";
+      locale = "fr";
+      arch = "linux-i686";
+      sha512 = "a3f58d4926dfb07c51b21cb900b654a56aa7bfe238c36eef104d66d72fb52b431a0cd5684fef6b20c8aaa6b89203116d6ed18a5f1ee0fa79879c25b64931fc3d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/fy-NL/firefox-66.0.2.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-i686";
+      sha512 = "c9befd42b54c68f2fbb5cac27b0c84f0d24691999a3d6547b946b574e959ce895a1b7dee37873f9ab19ab1cbe5f1a313d5b9bd251dbf68d50aa009d0a6952f68";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ga-IE/firefox-66.0.2.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-i686";
+      sha512 = "52cdf9616308625a57a56029fcfac0e0a31879b24112a946f219ae86bd72453e04ac8bfb910b387972b398b21e2f26cedb58a6c21867511261946de5bfbc74ae";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/gd/firefox-66.0.2.tar.bz2";
+      locale = "gd";
+      arch = "linux-i686";
+      sha512 = "e1aa8899fd0b14e34d195975fa9fcd08135dd4a9ba51bb315bf906d924ba962ce39e343a412cc2fd9a01a902ee627809512e9fc476c5630d5ae026feefbf84d2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/gl/firefox-66.0.2.tar.bz2";
+      locale = "gl";
+      arch = "linux-i686";
+      sha512 = "bf9746a296fa402d3165bcca29257bf6953c49164dae50611de14fc0244c220d3904b0f24dfc1045849e12c37e30276fee9efe8f6a857833347987fd87c58e71";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/gn/firefox-66.0.2.tar.bz2";
+      locale = "gn";
+      arch = "linux-i686";
+      sha512 = "1d320e4ccc4f2b8108ad1cd4d1427104aa76a5214259b70ccdcd3dc797dabec0839653e310c74967b99c60f017371db71b99aa695fc6dbec0a7a5db16906d987";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/gu-IN/firefox-66.0.2.tar.bz2";
+      locale = "gu-IN";
+      arch = "linux-i686";
+      sha512 = "98854b4e0d44e55c797a79df6a12dd473e70fd030f410944097f7ac3ca3ca50d80768cc627aa55cf8a686b47fa8ee1c15ea9c7ff89f0c4eaf2a1760515372482";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/he/firefox-66.0.2.tar.bz2";
+      locale = "he";
+      arch = "linux-i686";
+      sha512 = "bfcfda4c361ef95c85ee3b90daa2b641cf0846e242d71321662000eb2e0319eccd01f0382df41053e10daf9a9a5cf97972ab00889d6f1eaaa41a83253e2261fe";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/hi-IN/firefox-66.0.2.tar.bz2";
+      locale = "hi-IN";
+      arch = "linux-i686";
+      sha512 = "0fc7933d48d7a648780e7a0aded7912b92749aef7f873338f9eeac6c59e0fe86e997d69886bd2083ea987cf74b176e477ec70a33eafde3aea3f1492da1077c74";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/hr/firefox-66.0.2.tar.bz2";
+      locale = "hr";
+      arch = "linux-i686";
+      sha512 = "0cf72ac981d5a2cbafd3d3b4dccf821d235c5743556703cdf2ba1405181342b29c3830b8693b54757404b8ceb3a51c7f8d1a812a26088f21954c37d308c79fa9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/hsb/firefox-66.0.2.tar.bz2";
+      locale = "hsb";
+      arch = "linux-i686";
+      sha512 = "35d81a78827e8faf1f1f9b939427b2f7198e84aa841cbe2bc764f7531ab26e1e192d539c9818a0b7c8d77bf0dae15ce24bf805f0c7164db509f359be649e1041";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/hu/firefox-66.0.2.tar.bz2";
+      locale = "hu";
+      arch = "linux-i686";
+      sha512 = "1d7b3c5cae0f9478b1a68d3c6e9bf4098a54579872fd38440e9bfd118151efadf35dd8db54441861bf4de11bbaf0358df74f26eebbfbff352de7cbaecd04a091";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/hy-AM/firefox-66.0.2.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-i686";
+      sha512 = "6d36b676b98c749ffc88bf831be7d9be27bd4b435ab32be9b61bf93edf69a3d8ec91a1b6ec2b16d1e5384c6cbea5fe3300e98d6212f5d3260cef121f75e24bc9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ia/firefox-66.0.2.tar.bz2";
+      locale = "ia";
+      arch = "linux-i686";
+      sha512 = "38a4baf9dd145fde8400a2c08f142565c41d6dd63ca4317c759e9dddbc76fdebad588127279b31becd0b4033c3d610fbbc6dee4ad3d23d4bee5c55904a8ef939";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/id/firefox-66.0.2.tar.bz2";
+      locale = "id";
+      arch = "linux-i686";
+      sha512 = "06814d2b227ee60324a1e84a7e41b8fcd8e1b8ac35ffdd34b0d45ba528ca12a3d1fe9a60a14ce5b16fdf795f5c4d31d1825f3addbd8300c76fe0eb60bb29d52f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/is/firefox-66.0.2.tar.bz2";
+      locale = "is";
+      arch = "linux-i686";
+      sha512 = "f1b062932ee0b4ddd7aef3944d1d819e6ec0a2fcf4606ba62bcdbff55b13897a09265632c4f7451f673e82de0359e0dd2e927d3e538f32390d3bf2f0b794ce41";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/it/firefox-66.0.2.tar.bz2";
+      locale = "it";
+      arch = "linux-i686";
+      sha512 = "c4b456da77214a6a8e435bf347ecafa49e3513e0788f750ead5fc17218a5a52809756c02ea0c44d29adc037605b365651eb81eaaada2d21f0235865c1d585e95";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ja/firefox-66.0.2.tar.bz2";
+      locale = "ja";
+      arch = "linux-i686";
+      sha512 = "63f460ece90c5d360060fcbba81db3a62508f915608e393d0610ba1696ee030d81cee4654a25cd1e9e4ef374f3f5c1529d8945c38e10a6552f269beaf2bb71f3";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ka/firefox-66.0.2.tar.bz2";
+      locale = "ka";
+      arch = "linux-i686";
+      sha512 = "12ea4c14139457b125fbd92b6e23c26b178637638d205a7f19c90818f97730bc7a1ea947ced3c3daa79bfded228d8afc9178c0cb885334db7ee30abbcb909beb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/kab/firefox-66.0.2.tar.bz2";
+      locale = "kab";
+      arch = "linux-i686";
+      sha512 = "64f1c0d5a332e1c7d97a6dfc2f3ed71f1824af41d849113daadcaff8cd9bf6b7b630a2b39468a6ac3599fa69be05abec44c9319658728ac2c666d22e0026ea6d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/kk/firefox-66.0.2.tar.bz2";
+      locale = "kk";
+      arch = "linux-i686";
+      sha512 = "a4b75e4fe66d2e0ec08e87fcade8c990aac5f1be28a98f35aaa3f43a7064866ea5ab90a738ec30e7d00dc1111896a3fe3a976b6f97ad1db08177d73fddd60bf9";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/km/firefox-66.0.2.tar.bz2";
+      locale = "km";
+      arch = "linux-i686";
+      sha512 = "026c8356efce7734a392f2fbaf8328f22b3a58e32bc8fd588ba73f7aab5f77cb0de2787db652abdedeaf79ad5c2628a84841f5b08e4477d911ea185f1bfb3fdc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/kn/firefox-66.0.2.tar.bz2";
+      locale = "kn";
+      arch = "linux-i686";
+      sha512 = "a10623c4a3e123ed826129d67fddb74e027274440b7c21cbb2c8adcb50a1b7e486b6cc5f16cc8b07beed3e056d034f35ffd61742fa6e77f001fa6b9e5737d938";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ko/firefox-66.0.2.tar.bz2";
+      locale = "ko";
+      arch = "linux-i686";
+      sha512 = "a598ecf2cd1e6171209cf99fe32e6a9b981ffb92921a738237d1a7c7d575e284943da6cf37b531b3cc5ae3f08e02c2dea0d41a36f94147500977107d4d0f5884";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/lij/firefox-66.0.2.tar.bz2";
+      locale = "lij";
+      arch = "linux-i686";
+      sha512 = "01c8ce34b83bd851d92bfa47c9d79dc04a17fe925a7d14d0a21e6f2dec7b467ac27c3ecbb48c6cd24254f435208123254ba23ed4b7f4230fcd1108efb597aba8";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/lt/firefox-66.0.2.tar.bz2";
+      locale = "lt";
+      arch = "linux-i686";
+      sha512 = "ba92713101a02cbcf0f7851b9bcc623174101ef2c7d974fd6a7e47db812347f4319d5b55404a0d5c00707f3bc1c065ef98e0e7ec5112114bbb0704d10de2be80";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/lv/firefox-66.0.2.tar.bz2";
+      locale = "lv";
+      arch = "linux-i686";
+      sha512 = "eb9cbf6331da0cf7c1af6d1c69f4b832c07879631788cd4caac865fc9884cceb5f63fb63dab024ac4d4d2cde5bd75b90a46e38473e68cfc800bb2326555980b7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/mai/firefox-66.0.2.tar.bz2";
+      locale = "mai";
+      arch = "linux-i686";
+      sha512 = "78e1e89f86e875b31cccec93bc0e85b9c7c9952553724ccb7929cfdc6eaf7f0661d5d40e6d4494528953e30af80a9b83cb16b49ec555fb4556eae8f0e29cccf7";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/mk/firefox-66.0.2.tar.bz2";
+      locale = "mk";
+      arch = "linux-i686";
+      sha512 = "45c965b386a88f1ff266d6aa5b50adff28c5b8c5e60cbaca96133ded59eca8c7a9068179e4ba84ee35a48be949a59a1eb81f1b82beab5eef8fc21ddf5b387db1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ml/firefox-66.0.2.tar.bz2";
+      locale = "ml";
+      arch = "linux-i686";
+      sha512 = "4785519f5fad4d1bcd3f5fdfa219eb0d9373db6d7187b0ccf57056718214206b9d1d73a3fb99f73403bf11bcedec360ec58b22640bd27c15e0ad981516a062c4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/mr/firefox-66.0.2.tar.bz2";
+      locale = "mr";
+      arch = "linux-i686";
+      sha512 = "54523da6bdc639c3a803a161f670185395f3955093cf4dcfce3e209e5c041af7c12098d1d9c7918888cd826d3e2aa63d645f363f5f82b7b6bfb8a845c35b3db0";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ms/firefox-66.0.2.tar.bz2";
+      locale = "ms";
+      arch = "linux-i686";
+      sha512 = "916ecf06b7426bbb7583ae124c9400a8fd505d764fc190a28b906165737cb9e087a96bed97f566459574cb99e96773a1c458a8a3a97d48075aecee4b30d2f7de";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/my/firefox-66.0.2.tar.bz2";
+      locale = "my";
+      arch = "linux-i686";
+      sha512 = "f1afaca5fea61cb66379c4fbaa3d1ef89438984ceeaa3eef687b43d5ab9ac00ae9ff8573289aa6b0cd353a11c784eae188f70dc4b314f45058362540e9cb4d3e";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/nb-NO/firefox-66.0.2.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-i686";
+      sha512 = "1a53aa28d7ad3b7aa88fe3014dec35b9ecf2995fb51e49a88574fcdc2ba08f421654c1c4458ea0ed7a9b1acf8d4c70269fa55f37c8fab92331b593b0b27a0421";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ne-NP/firefox-66.0.2.tar.bz2";
+      locale = "ne-NP";
+      arch = "linux-i686";
+      sha512 = "e9f402763dd04f2eb556ec6101749c1203db89305c3be56bf63931d3ab61230303f3b35718fe0aab896adab22248b8c5ecb973a1784d5ac10ea84c3efa0079d2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/nl/firefox-66.0.2.tar.bz2";
+      locale = "nl";
+      arch = "linux-i686";
+      sha512 = "6c5e493e2b8d6a065c1db11c84850c462a5e5d68e0bbe97903f76dfda6e150a244236524f2bc82ef75850c84a2cbbdc9bebde4d587f24f3065eea071b74189e2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/nn-NO/firefox-66.0.2.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-i686";
+      sha512 = "134ae8ffe1039df99e7eff2ebd5a86639d4b80b4d19b7382b2948ccb910f1bac4372d0a670faa0ffcf47722bea6c980238c00c338b4625adaa37927dabbde416";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/oc/firefox-66.0.2.tar.bz2";
+      locale = "oc";
+      arch = "linux-i686";
+      sha512 = "889ed30b46197a79ab9eeacdb72dac673dd3f584ed23a528ebfb3d2819021f7c08867503086c62a4cf29258a48ea2d370b0480d3096489d1d0596761a05c2b35";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/or/firefox-66.0.2.tar.bz2";
+      locale = "or";
+      arch = "linux-i686";
+      sha512 = "57ad08fa2a598f58480e618d6d78ee691512594dca86d391bf1c9d87c6c06e3bb863b596c1812117c7994e06ec06936d48c81b0cb67750e117740b907ef528a4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/pa-IN/firefox-66.0.2.tar.bz2";
+      locale = "pa-IN";
+      arch = "linux-i686";
+      sha512 = "f4da8860b36a06e8d7ed5e782f10a0181075b7f4ce85f75ce2d9009a2b5ac089b4df208ab29253414c1aba4e4d954866368b7de57b8f71aa894814008135f613";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/pl/firefox-66.0.2.tar.bz2";
+      locale = "pl";
+      arch = "linux-i686";
+      sha512 = "ab449c5f797218f92923abb9bb891ca2b8181f9a858c65515c72808efdf6535e1c0540a74b3038938570f210eca6be446edb2e4dd55e9a5f6e1a55f6d3fe6aeb";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/pt-BR/firefox-66.0.2.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-i686";
+      sha512 = "ce1436189aece0310f4a817bf838b88f5daa85c4c11ab14a93b48a6e7f779dc26c3a8ee5e1a0eb7d09a9d8f856c30ba0196e8ebb6e319883c917f46e7f5f4ecc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/pt-PT/firefox-66.0.2.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-i686";
+      sha512 = "dc07a770cbdfc80a65a48882b3c4a96a74a9771ce75806956cefce7a5748c065b92cfaa066e7a59ff1c78a8584e06aeef96021ab9d22388fede1b824a8740fac";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/rm/firefox-66.0.2.tar.bz2";
+      locale = "rm";
+      arch = "linux-i686";
+      sha512 = "507825359c936c0030440b3ebfafb11e344c0ff1e1b610d23c0d432265c5c5e1de9ce00f69fcbadf87295c4b29be621325a114ed084547bcf6de79e0fd091ac4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ro/firefox-66.0.2.tar.bz2";
+      locale = "ro";
+      arch = "linux-i686";
+      sha512 = "89df1ca413857d9ba492bcfb460d0a9ad8d08ada7064b52a620a1b7534d7e2c063c5bedba6daeb25bd11f10360f4929cb4ae279ae9aca4d9a2d77d9c070cdf4f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ru/firefox-66.0.2.tar.bz2";
+      locale = "ru";
+      arch = "linux-i686";
+      sha512 = "7bcb17030fbb31c5defa72341ec1d4f6194d2c6bb88636ce75ab4b4af387550915a3527aaec12b67bf7993b5bde4ea7087d59c0d46b62c5acde03d162f1fd408";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/si/firefox-66.0.2.tar.bz2";
+      locale = "si";
+      arch = "linux-i686";
+      sha512 = "ab54d6eb2f9e6d964b03c50d524d08e2906a6ee4e2161a516e26bafb4065b67cfe613782f57cfa4fb2e0f04204b62fd013ab6f75596d6f3f9162a24f6126b611";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/sk/firefox-66.0.2.tar.bz2";
+      locale = "sk";
+      arch = "linux-i686";
+      sha512 = "db88ef36e7053594acdf0d46e42e948cfaa5e792e1782f9400343070aed8ace2793e482f25f7e1134ece6ca64ac27023b11888b012d74fc0a0af523a7984cdce";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/sl/firefox-66.0.2.tar.bz2";
+      locale = "sl";
+      arch = "linux-i686";
+      sha512 = "f98af8f8d38bed7b54955536a8d68de4dc49b6a7bf672c4fc9a5ccc85cd41e5299d3ab897cbc794f2427a0c44da5b54b855c4680315ce6d5b13f378381216a7d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/son/firefox-66.0.2.tar.bz2";
+      locale = "son";
+      arch = "linux-i686";
+      sha512 = "e146a52b975fe95e5bc5b832a84ed352310f981ef87fa0ddec60cdd05c630db24f8661504a7854a17d26f68042021c4431e5c4199870fb26a060365d4ee8dfd4";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/sq/firefox-66.0.2.tar.bz2";
+      locale = "sq";
+      arch = "linux-i686";
+      sha512 = "0904eb3aa5ce9fbd51094b751220f33eb20a2eb5eaa1768adbae36d7caa1c9b1d69782e6392fac877297628f0a075bfa8eeac67c96884f40830d10254ff5f6bc";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/sr/firefox-66.0.2.tar.bz2";
+      locale = "sr";
+      arch = "linux-i686";
+      sha512 = "984c046333eae94afbffaf8a8b93dc141f77216fa425e3663656487c36056c45cc922fbd0e7173f6c271e1f7b3a3b07caa9d0a21881e6b9de3a9e86a5330d318";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/sv-SE/firefox-66.0.2.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-i686";
+      sha512 = "55e4fde42ee9b1bfbcf223d8e277101569e914d3e36f74c2dc003a22f1b7f36920a4e7cbb146ee72f6ec4edd90d6e0cf159bd74bd4725232b7e8fb61e9e838f2";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ta/firefox-66.0.2.tar.bz2";
+      locale = "ta";
+      arch = "linux-i686";
+      sha512 = "f4c00470d6bf3adbe864655b87bc40bbe018cd132204bebad3273f5454966540f724cd135fa53adc432c27fc5876245ba5cf0b9fca1887ee37ab572b7a74cb36";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/te/firefox-66.0.2.tar.bz2";
+      locale = "te";
+      arch = "linux-i686";
+      sha512 = "eae9d861788975ebd216d3775273c51dbbb6bfae08eda8bf883609950b1d28de38cb3cc16b48f3f93b15065e2c9b69b882077786398b4ef0794442a3a9377045";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/th/firefox-66.0.2.tar.bz2";
+      locale = "th";
+      arch = "linux-i686";
+      sha512 = "f25178b67d23a6e04b1719c4553eb30bf6e2563c46ccfc42470d1127c59e4740bfb08589c7a2c034efb37d5b7962d10784ea9a131e265706959dfbf02ccb736d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/tr/firefox-66.0.2.tar.bz2";
+      locale = "tr";
+      arch = "linux-i686";
+      sha512 = "9e57dc0338fc84eda2f5aaf4d14e185af061b853e81163b6ee4002e9a7b1dfbd3025d04073d7981e9983de5e27f81e4db3b23397e5083999d3972c02d1fac06f";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/uk/firefox-66.0.2.tar.bz2";
+      locale = "uk";
+      arch = "linux-i686";
+      sha512 = "7658f8a0a3679f1c1575d89aee699cbac41c5c922ace6cc9addffd0cefb5c0e6acd8b12797cf07ab1d75a08c8f3ed179af433ef2c18a9751982fba307340b963";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/ur/firefox-66.0.2.tar.bz2";
+      locale = "ur";
+      arch = "linux-i686";
+      sha512 = "499b74fe1d42e0680c89b9eb2c4ae6cfecbae6a301f531fd9a858a8cff181dc9bf36e879149aa503159dfbf292a8a75c0b62bad75bb196a5b8fb8c10e62f51ff";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/uz/firefox-66.0.2.tar.bz2";
+      locale = "uz";
+      arch = "linux-i686";
+      sha512 = "84eb5a78e66afd9c64ebcd419eaa4272a699a1a0394cb4d45f148b149bbddd6e0d827f62b353d50b09dd0ef6c111278eb7947bd1bebe38dd0da0b6522c9221b1";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/vi/firefox-66.0.2.tar.bz2";
+      locale = "vi";
+      arch = "linux-i686";
+      sha512 = "cd8ec1c51ebf079aeed69f5875549727851f3999a26d75ef4e6b15f70b4a746f8dbe29f2527e37c4b3b4ad2d83972ebb7e4781b4d9304e6d09939684bf13a23d";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/xh/firefox-66.0.2.tar.bz2";
+      locale = "xh";
+      arch = "linux-i686";
+      sha512 = "abfa5c22d001e5f8298b29b53f6864f7ab2745ae474b113fb5ec6fcb3ea2dc27b1c98abfd0e55bc9c0fc0e43be55a362264ee6f7ad2938dc846826ba6e4ab516";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/zh-CN/firefox-66.0.2.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-i686";
+      sha512 = "c9e536e63d06f8a1a94d881008ad5d645cb56fd3acd40ec473ee0f0ddc1957ac567fad96057d27ad00000ac40da06c12f8422f743f37bb9a51ba56de214c13ca";
+    }
+    { url = "http://archive.mozilla.org/pub/firefox/releases/66.0.2/linux-i686/zh-TW/firefox-66.0.2.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-i686";
+      sha512 = "a47432a5f5c7e39ff66c2c832161f3105dea259d15a9151ffee8fec04fad3a6760ee06bd4828f7e361d78a1bf08163f17014e3389936ec60f1babe764d263371";
+    }
+    ];
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/update.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/update.nix
new file mode 100644
index 000000000000..97163ffa7620
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/update.nix
@@ -0,0 +1,91 @@
+{ stdenv
+, name
+, channel
+, writeScript
+, xidel
+, coreutils
+, gnused
+, gnugrep
+, curl
+, gnupg
+, runtimeShell
+, baseName ? "firefox"
+, basePath ? "pkgs/applications/networking/browsers/firefox-bin"
+, baseUrl
+}:
+
+let
+  isBeta =
+    channel != "release";
+
+in writeScript "update-${name}" ''
+  #!${runtimeShell}
+  PATH=${coreutils}/bin:${gnused}/bin:${gnugrep}/bin:${xidel}/bin:${curl}/bin:${gnupg}/bin
+  set -eux
+  pushd ${basePath}
+
+  HOME=`mktemp -d`
+  cat ${./firefox.key} | gpg --import
+
+  tmpfile=`mktemp`
+  url=${baseUrl}
+
+  # retriving latest released version
+  #  - extracts all links from the $url
+  #  - removes . and ..
+  #  - this line remove everything not starting with a number
+  #  - this line sorts everything with semver in mind
+  #  - we remove lines that are mentioning funnelcake
+  #  - this line removes beta version if we are looking for final release
+  #    versions or removes release versions if we are looking for beta
+  #    versions
+  # - this line pick up latest release
+  version=`xidel -s $url --extract "//a" | \
+           sed s"/.$//" | \
+           grep "^[0-9]" | \
+           sort --version-sort | \
+           grep -v "funnelcake" | \
+           grep -e "${if isBeta then "b" else ""}\([[:digit:]]\|[[:digit:]][[:digit:]]\)$" | ${if isBeta then "" else "grep -v \"b\" |"} \
+           tail -1`
+
+  curl --silent -o $HOME/shasums "$url$version/SHA512SUMS"
+  curl --silent -o $HOME/shasums.asc "$url$version/SHA512SUMS.asc"
+  gpgv --keyring=$HOME/.gnupg/pubring.kbx $HOME/shasums.asc $HOME/shasums
+
+  # this is a list of sha512 and tarballs for both arches
+  shasums=`cat $HOME/shasums`
+
+  cat > $tmpfile <<EOF
+  {
+    version = "$version";
+    sources = [
+  EOF
+  for arch in linux-x86_64 linux-i686; do
+    # retriving a list of all tarballs for each arch
+    #  - only select tarballs for current arch
+    #  - only select tarballs for current version
+    #  - rename space with colon so that for loop doesnt
+    #  - inteprets sha and path as 2 lines
+    for line in `echo "$shasums" | \
+                 grep $arch | \
+                 grep "${baseName}-$version.tar.bz2$" | \
+                 tr " " ":"`; do
+      # create an entry for every locale
+      cat >> $tmpfile <<EOF
+      { url = "$url$version/`echo $line | cut -d":" -f3`";
+        locale = "`echo $line | cut -d":" -f3 | sed "s/$arch\///" | sed "s/\/.*//"`";
+        arch = "$arch";
+        sha512 = "`echo $line | cut -d":" -f1`";
+      }
+  EOF
+    done
+  done
+  cat >> $tmpfile <<EOF
+      ];
+  }
+  EOF
+
+  mv $tmpfile ${channel}_sources.nix
+
+  popd
+''
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix
new file mode 100644
index 000000000000..76e80e517e9e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/common.nix
@@ -0,0 +1,343 @@
+{ pname, ffversion, meta, updateScript ? null
+, src, unpackPhase ? null, patches ? []
+, extraNativeBuildInputs ? [], extraConfigureFlags ? [], extraMakeFlags ? []
+, isIceCatLike ? false, icversion ? null
+, isTorBrowserLike ? false, tbversion ? null }:
+
+{ lib, stdenv, pkgconfig, pango, perl, python2, zip, libIDL
+, libjpeg, zlib, dbus, dbus-glib, bzip2, xorg
+, freetype, fontconfig, file, nspr, nss, libnotify
+, yasm, libGLU_combined, sqlite, unzip, makeWrapper
+, hunspell, libevent, libstartup_notification, libvpx
+, icu, libpng, jemalloc, glib
+, autoconf213, which, gnused, cargo, rustc, llvmPackages
+, rust-cbindgen, nodejs, nasm
+, debugBuild ? false
+
+### optionals
+
+## optional libraries
+
+, alsaSupport ? stdenv.isLinux, alsaLib
+, pulseaudioSupport ? stdenv.isLinux, libpulseaudio
+, ffmpegSupport ? true
+, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook
+, gssSupport ? true, kerberos
+, waylandSupport ? gtk3Support, libxkbcommon
+
+## privacy-related options
+
+, privacySupport ? isTorBrowserLike || isIceCatLike
+
+# WARNING: NEVER set any of the options below to `true` by default.
+# Set to `privacySupport` or `false`.
+
+# webrtcSupport breaks the aarch64 build on version >= 60.
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1434589
+, webrtcSupport ? (if lib.versionAtLeast ffversion "60" && stdenv.isAarch64 then false else !privacySupport)
+, geolocationSupport ? !privacySupport
+, googleAPISupport ? geolocationSupport
+, crashreporterSupport ? false
+
+, safeBrowsingSupport ? false
+, drmSupport ? false
+
+# macOS dependencies
+, xcbuild, CoreMedia, ExceptionHandling, Kerberos, AVFoundation, MediaToolbox
+, CoreLocation, Foundation, AddressBook, libobjc, cups, rsync
+
+## other
+
+# As stated by Sylvestre Ledru (@sylvestre) on Nov 22, 2017 at
+# https://github.com/NixOS/nixpkgs/issues/31843#issuecomment-346372756 we
+# have permission to use the official firefox branding.
+#
+# Fur purposes of documentation the statement of @sylvestre:
+# > As the person who did part of the work described in the LWN article
+# > and release manager working for Mozilla, I can confirm the statement
+# > that I made in
+# > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=815006
+# >
+# > @garbas shared with me the list of patches applied for the Nix package.
+# > As they are just for portability and tiny modifications, they don't
+# > alter the experience of the product. In parallel, Rok also shared the
+# > build options. They seem good (even if I cannot judge the quality of the
+# > packaging of the underlying dependencies like sqlite, png, etc).
+# > Therefor, as long as you keep the patch queue sane and you don't alter
+# > the experience of Firefox users, you won't have any issues using the
+# > official branding.
+, enableOfficialBranding ? true
+}:
+
+assert stdenv.cc.libc or null != null;
+
+let
+  flag = tf: x: [(if tf then "--enable-${x}" else "--disable-${x}")];
+
+  default-toolkit = if stdenv.isDarwin then "cairo-cocoa"
+                    else "cairo-gtk${if gtk3Support then "3${lib.optionalString waylandSupport "-wayland"}" else "2"}";
+
+  binaryName = if isIceCatLike then "icecat" else "firefox";
+  binaryNameCapitalized = lib.toUpper (lib.substring 0 1 binaryName) + lib.substring 1 (-1) binaryName;
+
+  browserName = if stdenv.isDarwin then binaryNameCapitalized else binaryName;
+
+  execdir = if stdenv.isDarwin
+            then "/Applications/${binaryNameCapitalized}.app/Contents/MacOS"
+            else "/bin";
+
+  browserVersion = if isIceCatLike then icversion
+                   else if isTorBrowserLike then tbversion
+                   else ffversion;
+
+  browserPatches = [
+    ./env_var_for_system_dir.patch
+  ] ++ patches;
+
+in
+
+stdenv.mkDerivation rec {
+  name = "${pname}-unwrapped-${version}";
+  version = browserVersion;
+
+  inherit src unpackPhase meta;
+
+  patches = browserPatches;
+
+  # Ignore trivial whitespace changes in patches, this fixes compatibility of
+  # ./env_var_for_system_dir.patch with Firefox >=65 without having to track
+  # two patches.
+  patchFlags = [ "-p1" "-l" ];
+
+  buildInputs = [
+    gtk2 perl zip libIDL libjpeg zlib bzip2
+    dbus dbus-glib pango freetype fontconfig xorg.libXi xorg.libXcursor
+    xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file
+    libnotify xorg.pixman yasm libGLU_combined
+    xorg.libXScrnSaver xorg.xorgproto
+    xorg.libXext sqlite unzip makeWrapper
+    libevent libstartup_notification libvpx /* cairo */
+    icu libpng jemalloc glib
+  ]
+  ++ lib.optionals (!isTorBrowserLike) [ nspr nss ]
+  ++ lib.optional (lib.versionOlder ffversion "61") hunspell
+
+  # >= 66 requires nasm for the AV1 lib dav1d
+  # yasm can potentially be removed in future versions
+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1501796
+  # https://groups.google.com/forum/#!msg/mozilla.dev.platform/o-8levmLU80/SM_zQvfzCQAJ
+  ++ lib.optional (lib.versionAtLeast ffversion "66") nasm
+  ++ lib.optional  alsaSupport alsaLib
+  ++ lib.optional  pulseaudioSupport libpulseaudio # only headers are needed
+  ++ lib.optional  gtk3Support gtk3
+  ++ lib.optional  waylandSupport libxkbcommon
+  ++ lib.optional  gssSupport kerberos
+  ++ lib.optional  waylandSupport libxkbcommon
+  ++ lib.optionals stdenv.isDarwin [ CoreMedia ExceptionHandling Kerberos
+                                     AVFoundation MediaToolbox CoreLocation
+                                     Foundation libobjc AddressBook cups ];
+
+  NIX_CFLAGS_COMPILE = [
+    "-I${glib.dev}/include/gio-unix-2.0"
+  ]
+  ++ lib.optionals (!isTorBrowserLike) [
+    "-I${nss.dev}/include/nss"
+  ]
+  ++ lib.optional stdenv.isDarwin [
+    "-isystem ${llvmPackages.libcxx}/include/c++/v1"
+    "-DMAC_OS_X_VERSION_MAX_ALLOWED=MAC_OS_X_VERSION_10_10"
+  ];
+
+  postPatch = lib.optionalString stdenv.isDarwin ''
+    substituteInPlace js/src/jsmath.cpp --replace 'defined(HAVE___SINCOS)' 0
+  '' + lib.optionalString (lib.versionAtLeast ffversion "63.0" && !isTorBrowserLike) ''
+    substituteInPlace third_party/prio/prio/rand.c --replace 'nspr/prinit.h' 'prinit.h'
+  '';
+
+  nativeBuildInputs =
+    [ autoconf213 which gnused pkgconfig perl python2 cargo rustc ]
+    ++ lib.optional gtk3Support wrapGAppsHook
+    ++ lib.optionals stdenv.isDarwin [ xcbuild rsync ]
+    ++ lib.optionals (lib.versionAtLeast ffversion "63.0") [ rust-cbindgen nodejs ]
+    ++ extraNativeBuildInputs;
+
+  preConfigure = ''
+    # remove distributed configuration files
+    rm -f configure
+    rm -f js/src/configure
+    rm -f .mozconfig*
+  '' + (if lib.versionAtLeast ffversion "58"
+  # this will run autoconf213
+  then ''
+    configureScript="$(realpath ./mach) configure"
+  '' else ''
+    make -f client.mk configure-files
+    configureScript="$(realpath ./configure)"
+  '') + lib.optionalString (lib.versionAtLeast ffversion "53") ''
+    export MOZCONFIG=$(pwd)/mozconfig
+
+    # Set C flags for Rust's bindgen program. Unlike ordinary C
+    # compilation, bindgen does not invoke $CC directly. Instead it
+    # uses LLVM's libclang. To make sure all necessary flags are
+    # included we need to look in a few places.
+    # TODO: generalize this process for other use-cases.
+
+    BINDGEN_CFLAGS="$(< ${stdenv.cc}/nix-support/libc-cflags) \
+      $(< ${stdenv.cc}/nix-support/cc-cflags) \
+      ${stdenv.cc.default_cxx_stdlib_compile} \
+      ${lib.optionalString stdenv.cc.isClang "-idirafter ${stdenv.cc.cc}/lib/clang/${lib.getVersion stdenv.cc.cc}/include"} \
+      ${lib.optionalString stdenv.cc.isGNU "-isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc} -isystem ${stdenv.cc.cc}/include/c++/${lib.getVersion stdenv.cc.cc}/$(cc -dumpmachine)"} \
+      $NIX_CFLAGS_COMPILE"
+
+    echo "ac_add_options BINDGEN_CFLAGS='$BINDGEN_CFLAGS'" >> $MOZCONFIG
+  '' + lib.optionalString googleAPISupport ''
+    # Google API key used by Chromium and Firefox.
+    # Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
+    # please get your own set of keys.
+    echo "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI" > $TMPDIR/ga
+    # 60.5+ & 66+ did split the google API key arguments: https://bugzilla.mozilla.org/show_bug.cgi?id=1531176
+    ${if (lib.versionAtLeast ffversion "60.6" && lib.versionOlder ffversion "61") || (lib.versionAtLeast ffversion "66") then ''
+      configureFlagsArray+=("--with-google-location-service-api-keyfile=$TMPDIR/ga")
+      configureFlagsArray+=("--with-google-safebrowsing-api-keyfile=$TMPDIR/ga")
+    '' else ''
+      configureFlagsArray+=("--with-google-api-keyfile=$TMPDIR/ga")
+    ''}
+  '' + lib.optionalString (lib.versionOlder ffversion "58") ''
+    cd obj-*
+  ''
+  # AS=as in the environment causes build failure https://bugzilla.mozilla.org/show_bug.cgi?id=1497286
+  + lib.optionalString (lib.versionAtLeast ffversion "64") ''
+    unset AS
+  '';
+
+  configureFlags = [
+    "--enable-application=browser"
+    "--with-system-jpeg"
+    "--with-system-zlib"
+    "--with-system-bz2"
+    "--with-system-libevent"
+    "--with-system-libvpx"
+    "--with-system-png" # needs APNG support
+    "--with-system-icu"
+    "--enable-system-ffi"
+    "--enable-system-pixman"
+    "--enable-system-sqlite"
+    #"--enable-system-cairo"
+    "--enable-startup-notification"
+    #"--enable-content-sandbox" # TODO: probably enable after 54
+    "--disable-tests"
+    "--disable-necko-wifi" # maybe we want to enable this at some point
+    "--disable-updater"
+    "--enable-jemalloc"
+    "--disable-gconf"
+    "--enable-default-toolkit=${default-toolkit}"
+  ]
+  ++ lib.optional (lib.versionOlder ffversion "64") "--disable-maintenance-service"
+  ++ lib.optional (stdenv.isDarwin && lib.versionAtLeast ffversion "61") "--disable-xcode-checks"
+  ++ lib.optional (lib.versionOlder ffversion "61") "--enable-system-hunspell"
+  ++ lib.optionals (lib.versionAtLeast ffversion "56") [
+    "--with-libclang-path=${llvmPackages.libclang}/lib"
+    "--with-clang-path=${llvmPackages.clang}/bin/clang"
+  ]
+  ++ lib.optionals (lib.versionAtLeast ffversion "57") [
+    "--enable-webrender=build"
+  ]
+
+  # TorBrowser patches these
+  ++ lib.optionals (!isTorBrowserLike) [
+    "--with-system-nspr"
+    "--with-system-nss"
+  ]
+
+  # and wants these
+  ++ lib.optionals isTorBrowserLike ([
+    "--with-tor-browser-version=${tbversion}"
+    "--with-distribution-id=org.torproject"
+    "--enable-signmar"
+    "--enable-verify-mar"
+    "--enable-bundled-fonts"
+  ])
+
+  ++ flag alsaSupport "alsa"
+  ++ flag pulseaudioSupport "pulseaudio"
+  ++ flag ffmpegSupport "ffmpeg"
+  ++ flag gssSupport "negotiateauth"
+  ++ flag webrtcSupport "webrtc"
+  ++ flag crashreporterSupport "crashreporter"
+  ++ lib.optional (!drmSupport) "--disable-eme"
+
+  ++ lib.optionals (lib.versionOlder ffversion "60") ([]
+    ++ flag geolocationSupport "mozril-geoloc"
+    ++ flag safeBrowsingSupport "safe-browsing"
+  )
+
+  ++ (if debugBuild then [ "--enable-debug" "--enable-profiling" ]
+                    else [ "--disable-debug" "--enable-release"
+                           "--enable-optimize"
+                           "--enable-strip" ])
+  ++ lib.optional enableOfficialBranding "--enable-official-branding"
+  ++ extraConfigureFlags;
+
+  # Before 58 we have to run `make -f client.mk configure-files` at
+  # the top level, and then run `./configure` in the obj-* dir (see
+  # above), but in 58 we have to instead run `./mach configure` at the
+  # top level and then run `make` in obj-*. (We can also run the
+  # `make` at the top level in 58, but then we would have to `cd` to
+  # `make install` anyway. This is ugly, but simple.)
+  postConfigure = lib.optionalString (lib.versionAtLeast ffversion "58") ''
+    cd obj-*
+  '';
+
+  preBuild = lib.optionalString isTorBrowserLike ''
+    buildFlagsArray=("MOZ_APP_DISPLAYNAME=Tor Browser")
+  '';
+
+  makeFlags = lib.optionals enableOfficialBranding [
+    "MOZILLA_OFFICIAL=1"
+    "BUILD_OFFICIAL=1"
+  ]
+  ++ extraMakeFlags;
+
+  enableParallelBuilding = true;
+  doCheck = false; # "--disable-tests" above
+
+  installPhase = if stdenv.isDarwin then ''
+    mkdir -p $out/Applications
+    cp -LR dist/${binaryNameCapitalized}.app $out/Applications
+  '' else null;
+
+  postInstall = lib.optionalString stdenv.isLinux ''
+    # Remove SDK cruft. FIXME: move to a separate output?
+    rm -rf $out/share/idl $out/include $out/lib/${binaryName}-devel-*
+
+    # Needed to find Mozilla runtime
+    gappsWrapperArgs+=(--argv0 "$out/bin/.${binaryName}-wrapped")
+  '';
+
+  postFixup = lib.optionalString stdenv.isLinux ''
+    # Fix notifications. LibXUL uses dlopen for this, unfortunately; see #18712.
+    patchelf --set-rpath "${lib.getLib libnotify
+      }/lib:$(patchelf --print-rpath "$out"/lib/${binaryName}*/libxul.so)" \
+        "$out"/lib/${binaryName}*/libxul.so
+  '';
+
+  doInstallCheck = true;
+  installCheckPhase = ''
+    # Some basic testing
+    "$out${execdir}/${browserName}" --version
+  '';
+
+  passthru = {
+    inherit version updateScript;
+    isFirefox3Like = true;
+    inherit isIceCatLike;
+    inherit isTorBrowserLike;
+    gtk = gtk2;
+    inherit nspr;
+    inherit ffmpegSupport;
+    inherit gssSupport;
+    inherit execdir;
+    inherit browserName;
+  } // lib.optionalAttrs gtk3Support { inherit gtk3; };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/env_var_for_system_dir.patch b/nixpkgs/pkgs/applications/networking/browsers/firefox/env_var_for_system_dir.patch
new file mode 100644
index 000000000000..18d31356989a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/env_var_for_system_dir.patch
@@ -0,0 +1,6 @@
+--- a/toolkit/xre/nsXREDirProvider.cpp        2019-02-28 21:00:14.157543388 +0100
++++ b/toolkit/xre/nsXREDirProvider.cpp   2019-02-28 21:01:28.731128320 +0100
+@@ -302 +302,2 @@
+-  rv = NS_NewNativeLocalFile(dirname, false, getter_AddRefs(localDir));
++  const char* pathVar = PR_GetEnv("MOZ_SYSTEM_DIR");
++  rv = NS_NewNativeLocalFile((pathVar && *pathVar) ? nsDependentCString(pathVar) : reinterpret_cast<const nsCString&>(dirname), false, getter_AddRefs(localDir));
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/fix-debug.patch b/nixpkgs/pkgs/applications/networking/browsers/firefox/fix-debug.patch
new file mode 100644
index 000000000000..ba92bbc47403
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/fix-debug.patch
@@ -0,0 +1,77 @@
+
+# HG changeset patch
+# User Michelangelo De Simone <mdesimone@mozilla.com>
+# Date 1479198095 28800
+# Node ID fde6e9ccfc72fbc0fcd93af7a40436b216e7ea1a
+# Parent  687eac6845a77d2cac5505da9c8912885c2a9e57
+Bug 1013882 - TestInterfaceJS should be packaged only if it's available. r=glandium, a=jcristau
+
+MozReview-Commit-ID: IEHesdoU4Sz
+
+diff --git a/b2g/installer/package-manifest.in b/b2g/installer/package-manifest.in
+--- a/b2g/installer/package-manifest.in
++++ b/b2g/installer/package-manifest.in
+@@ -570,17 +570,17 @@
+ @RESPATH@/components/InputMethod.manifest
+ #ifdef MOZ_B2G
+ @RESPATH@/components/inputmethod.xpt
+ #endif
+ 
+ @RESPATH@/components/SystemUpdate.manifest
+ @RESPATH@/components/SystemUpdateManager.js
+ 
+-#ifdef MOZ_DEBUG
++#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
+ @RESPATH@/components/TestInterfaceJS.js
+ @RESPATH@/components/TestInterfaceJS.manifest
+ @RESPATH@/components/TestInterfaceJSMaplike.js
+ #endif
+ 
+ ; Modules
+ @RESPATH@/modules/*
+ 
+diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
+--- a/browser/installer/package-manifest.in
++++ b/browser/installer/package-manifest.in
+@@ -554,17 +554,17 @@
+ @RESPATH@/components/PresentationControlService.js
+ @RESPATH@/components/PresentationDataChannelSessionTransport.js
+ @RESPATH@/components/PresentationDataChannelSessionTransport.manifest
+ 
+ ; InputMethod API
+ @RESPATH@/components/MozKeyboard.js
+ @RESPATH@/components/InputMethod.manifest
+ 
+-#ifdef MOZ_DEBUG
++#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
+ @RESPATH@/components/TestInterfaceJS.js
+ @RESPATH@/components/TestInterfaceJS.manifest
+ @RESPATH@/components/TestInterfaceJSMaplike.js
+ #endif
+ 
+ ; [Extensions]
+ @RESPATH@/components/extensions-toolkit.manifest
+ @RESPATH@/browser/components/extensions-browser.manifest
+diff --git a/mobile/android/installer/package-manifest.in b/mobile/android/installer/package-manifest.in
+--- a/mobile/android/installer/package-manifest.in
++++ b/mobile/android/installer/package-manifest.in
+@@ -381,17 +381,17 @@
+ 
+ @BINPATH@/components/CaptivePortalDetectComponents.manifest
+ @BINPATH@/components/captivedetect.js
+ 
+ #ifdef MOZ_WEBSPEECH
+ @BINPATH@/components/dom_webspeechsynth.xpt
+ #endif
+ 
+-#ifdef MOZ_DEBUG
++#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
+ @BINPATH@/components/TestInterfaceJS.js
+ @BINPATH@/components/TestInterfaceJS.manifest
+ @BINPATH@/components/TestInterfaceJSMaplike.js
+ #endif
+ 
+ @BINPATH@/components/nsAsyncShutdown.manifest
+ @BINPATH@/components/nsAsyncShutdown.js
+ 
+
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/fix-pa-context-connect-retval.patch b/nixpkgs/pkgs/applications/networking/browsers/firefox/fix-pa-context-connect-retval.patch
new file mode 100644
index 000000000000..1c3c32948944
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/fix-pa-context-connect-retval.patch
@@ -0,0 +1,26 @@
+Yep, it's a "return code was ignored" bug.
+diff --git a/media/libcubeb/src/cubeb_pulse.c b/media/libcubeb/src/cubeb_pulse.c
+index aaaaaaaaaaa..bbbbbbbbbbb 100644
+--- a/media/libcubeb/src/cubeb_pulse.c
++++ b/media/libcubeb/src/cubeb_pulse.c
+@@ -473,6 +473,8 @@
+ static int
+ pulse_context_init(cubeb * ctx)
+ {
++  int r;
++
+   if (ctx->context) {
+     assert(ctx->error == 1);
+     pulse_context_destroy(ctx);
+@@ -486,9 +488,9 @@
+   WRAP(pa_context_set_state_callback)(ctx->context, context_state_callback, ctx);
+ 
+   WRAP(pa_threaded_mainloop_lock)(ctx->mainloop);
+-  WRAP(pa_context_connect)(ctx->context, NULL, 0, NULL);
++  r = WRAP(pa_context_connect)(ctx->context, NULL, 0, NULL);
+ 
+-  if (wait_until_context_ready(ctx) != 0) {
++  if (r < 0 || wait_until_context_ready(ctx) != 0) {
+     WRAP(pa_threaded_mainloop_unlock)(ctx->mainloop);
+     pulse_context_destroy(ctx);
+     ctx->context = NULL;
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx65.patch b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx65.patch
new file mode 100644
index 000000000000..7d129dc78f98
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-ffx65.patch
@@ -0,0 +1,23 @@
+diff -ur firefox-65.0-orig/docshell/base/nsAboutRedirector.cpp firefox-65.0/docshell/base/nsAboutRedirector.cpp
+--- firefox-65.0-orig/docshell/base/nsAboutRedirector.cpp       2019-01-23 00:48:28.988747428 +0100
++++ firefox-65.0/docshell/base/nsAboutRedirector.cpp    2019-01-23 00:51:13.378188397 +0100
+@@ -67,8 +67,6 @@
+     {"about", "chrome://global/content/aboutAbout.xhtml", 0},
+     {"addons", "chrome://mozapps/content/extensions/extensions.xul",
+      nsIAboutModule::ALLOW_SCRIPT},
+-    {"buildconfig", "chrome://global/content/buildconfig.html",
+-     nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT},
+     {"checkerboard", "chrome://global/content/aboutCheckerboard.xhtml",
+      nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
+          nsIAboutModule::ALLOW_SCRIPT},
+diff -ur firefox-65.0-orig/toolkit/content/jar.mn firefox-65.0/toolkit/content/jar.mn
+--- firefox-65.0-orig/toolkit/content/jar.mn    2019-01-23 00:48:35.033372506 +0100
++++ firefox-65.0/toolkit/content/jar.mn 2019-01-23 00:50:45.126565924 +0100
+@@ -36,7 +36,6 @@
+    content/global/plugins.css
+    content/global/browser-child.js
+    content/global/browser-content.js
+-*   content/global/buildconfig.html
+    content/global/buildconfig.css
+    content/global/contentAreaUtils.js
+    content/global/datepicker.xhtml
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-max-64.patch b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-max-64.patch
new file mode 100644
index 000000000000..de278152f978
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-max-64.patch
@@ -0,0 +1,25 @@
+diff -ru -x '*~' firefox-55.0.3-orig/docshell/base/nsAboutRedirector.cpp firefox-55.0.3/docshell/base/nsAboutRedirector.cpp
+--- firefox-55.0.3-orig/docshell/base/nsAboutRedirector.cpp	2017-07-31 18:20:51.000000000 +0200
++++ firefox-55.0.3/docshell/base/nsAboutRedirector.cpp	2017-09-26 22:02:00.814151731 +0200
+@@ -36,10 +36,6 @@
+     nsIAboutModule::ALLOW_SCRIPT
+   },
+   {
+-    "buildconfig", "chrome://global/content/buildconfig.html",
+-    nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT
+-  },
+-  {
+     "checkerboard", "chrome://global/content/aboutCheckerboard.xhtml",
+     nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
+       nsIAboutModule::ALLOW_SCRIPT
+diff -ru -x '*~' firefox-55.0.3-orig/toolkit/content/jar.mn firefox-55.0.3/toolkit/content/jar.mn
+--- firefox-55.0.3-orig/toolkit/content/jar.mn	2017-07-31 18:20:52.000000000 +0200
++++ firefox-55.0.3/toolkit/content/jar.mn	2017-09-26 22:01:42.383350314 +0200
+@@ -40,7 +40,6 @@
+    content/global/plugins.css
+    content/global/browser-child.js
+    content/global/browser-content.js
+-*   content/global/buildconfig.html
+    content/global/buildconfig.css
+    content/global/contentAreaUtils.js
+    content/global/datepicker.xhtml
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-min-65.patch b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-min-65.patch
new file mode 100644
index 000000000000..708004781efc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/no-buildconfig-min-65.patch
@@ -0,0 +1,25 @@
+diff --git a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp
+index fe0a5af..3df1e0e 100644
+--- a/docshell/base/nsAboutRedirector.cpp
++++ b/docshell/base/nsAboutRedirector.cpp
+@@ -67,8 +67,6 @@ static const RedirEntry kRedirMap[] = {
+     {"about", "chrome://global/content/aboutAbout.xhtml", 0},
+     {"addons", "chrome://mozapps/content/extensions/extensions.xul",
+      nsIAboutModule::ALLOW_SCRIPT},
+-    {"buildconfig", "chrome://global/content/buildconfig.html",
+-     nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT},
+     {"checkerboard", "chrome://global/content/aboutCheckerboard.xhtml",
+      nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
+          nsIAboutModule::ALLOW_SCRIPT},
+diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
+index 2ec137d..579ef4d 100644
+--- a/toolkit/content/jar.mn
++++ b/toolkit/content/jar.mn
+@@ -36,7 +36,6 @@ toolkit.jar:
+    content/global/plugins.css
+    content/global/browser-child.js
+    content/global/browser-content.js
+-*   content/global/buildconfig.html
+    content/global/buildconfig.css
+    content/global/contentAreaUtils.js
+    content/global/datepicker.xhtml
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix
new file mode 100644
index 000000000000..c985cd8bf29e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/packages.nix
@@ -0,0 +1,267 @@
+{ lib, callPackage, fetchurl, fetchFromGitHub, firefoxCommon, python3 }:
+
+rec {
+
+  firefox = firefoxCommon rec {
+    pname = "firefox";
+    ffversion = "66.0.2";
+    src = fetchurl {
+      url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
+      sha512 = "1dzqzigrwb7q75zlyd74ncic3b39yvziccpgbzh7881lzshj7x6f2r6ssj8ssdkh8lm2ckhjzbn6pf44vlh8ciql9bxb8g8sjpg6ii2";
+    };
+
+    patches = [
+      ./no-buildconfig-ffx65.patch
+    ];
+
+    extraNativeBuildInputs = [ python3 ];
+
+    meta = {
+      description = "A web browser built from Firefox source tree";
+      homepage = http://www.mozilla.com/en-US/firefox/;
+      maintainers = with lib.maintainers; [ eelco andir ];
+      platforms = lib.platforms.unix;
+      license = lib.licenses.mpl20;
+    };
+    updateScript = callPackage ./update.nix {
+      attrPath = "firefox-unwrapped";
+      versionKey = "ffversion";
+    };
+  };
+
+  # Do not remove. This is the last version of Firefox that supports
+  # the old plugins. While this package is unsafe to use for browsing
+  # the web, there are many old useful plugins targeting offline
+  # activities (e.g. ebook readers, syncronous translation, etc) that
+  # will probably never be ported to WebExtensions API.
+  firefox-esr-52 = firefoxCommon rec {
+    pname = "firefox-esr";
+    ffversion = "52.9.0esr";
+    src = fetchurl {
+      url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
+      sha512 = "bfca42668ca78a12a9fb56368f4aae5334b1f7a71966fbba4c32b9c5e6597aac79a6e340ac3966779d2d5563eb47c054ab33cc40bfb7306172138ccbd3adb2b9";
+    };
+
+    patches = [
+      # this one is actually an omnipresent bug
+      # https://bugzilla.mozilla.org/show_bug.cgi?id=1444519
+      ./fix-pa-context-connect-retval.patch
+    ];
+
+    meta = firefox.meta // {
+      description = "A web browser built from Firefox Extended Support Release source tree";
+      knownVulnerabilities = [ "Support ended in August 2018." ];
+    };
+  };
+
+  firefox-esr-60 = firefoxCommon rec {
+    pname = "firefox-esr";
+    ffversion = "60.6.1esr";
+    src = fetchurl {
+      url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
+      sha512 = "3nl3cisn1sw3y6dxnv0bm143dpp091h1s9j7g73qfx5s6sfxl832lan177ikm00ay7fsly251vi1xz17wwicch1himsmhjisnd3ws51";
+    };
+
+    patches = [
+      ./no-buildconfig-ffx65.patch
+
+      # this one is actually an omnipresent bug
+      # https://bugzilla.mozilla.org/show_bug.cgi?id=1444519
+      ./fix-pa-context-connect-retval.patch
+    ];
+
+    meta = firefox.meta // {
+      description = "A web browser built from Firefox Extended Support Release source tree";
+    };
+    updateScript = callPackage ./update.nix {
+      attrPath = "firefox-esr-60-unwrapped";
+      versionSuffix = "esr";
+      versionKey = "ffversion";
+    };
+  };
+
+  firefox-beta = firefoxCommon rec {
+    pname = "firefox";
+    ffversion = "66.0b5";
+    src = fetchurl {
+      url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz";
+      sha512 = "2cnv8pnl220dxqfpcdnwibwidc8b9zg3bj9wkzc83r4cdsfcjy3hqyw01gpc30a4qwbbabsgask3hl3dg7d3d8qqw4c588b00z67mvs";
+    };
+
+    patches = [
+      ./no-buildconfig-ffx65.patch
+    ];
+
+    extraNativeBuildInputs = [ python3 ];
+
+    meta = firefox.meta // {
+      description = "A web browser built from Firefox Beta source tree";
+    };
+    updateScript = callPackage ./update.nix {
+      attrPath = "firefox-beta";
+      versionKey = "ffversion";
+    };
+  };
+
+} // (let
+
+  iccommon = args: firefoxCommon (args // {
+    pname = "icecat";
+    isIceCatLike = true;
+
+    meta = (args.meta or {}) // {
+      description = "The GNU version of the Firefox web browser";
+      longDescription = ''
+        GNUzilla is the GNU version of the Mozilla suite, and GNU
+        IceCat is the GNU version of the Firefox web browser.
+
+        Notable differences from mainline Firefox:
+
+        - entirely free software, no non-free plugins, addons,
+          artwork,
+        - no telemetry, no "studies",
+        - sane privacy and security defaults (for instance, unlike
+          Firefox, IceCat does _zero_ network requests on startup by
+          default, which means that with IceCat you won't need to
+          unplug your Ethernet cable each time you want to create a
+          new browser profile without announcing that action to a
+          bunch of data-hungry corporations),
+        - all essential privacy and security settings can be
+          configured directly from the main screen,
+        - optional first party isolation (like TorBrowser),
+        - comes with HTTPS Everywhere (like TorBrowser), Tor Browser
+          Button (like TorBrowser Bundle), LibreJS, and SpyBlock
+          plugins out of the box.
+
+        This package can be installed together with Firefox and
+        TorBrowser, it will use distinct binary names and profile
+        directories.
+      '';
+      homepage = "https://www.gnu.org/software/gnuzilla/";
+      platforms = lib.platforms.unix;
+      license = with lib.licenses; [ mpl20 gpl3Plus ];
+    };
+  });
+
+in rec {
+
+  icecat = iccommon rec {
+    ffversion = "60.3.0";
+    icversion = "${ffversion}-gnu1";
+
+    src = fetchurl {
+      url = "mirror://gnu/gnuzilla/${ffversion}/icecat-${icversion}.tar.bz2";
+      sha256 = "0icnl64nxcyf7dprpdpygxhabsvyhps8c3ixysj9bcdlj9q34ib1";
+    };
+
+    patches = [
+      ./no-buildconfig.patch
+    ];
+  };
+
+  # Similarly to firefox-esr-52 above.
+  icecat-52 = iccommon rec {
+    ffversion = "52.6.0";
+    icversion = "${ffversion}-gnu1";
+
+    src = fetchurl {
+      url = "mirror://gnu/gnuzilla/${ffversion}/icecat-${icversion}.tar.bz2";
+      sha256 = "09fn54glqg1aa93hnz5zdcy07cps09dbni2b4200azh6nang630a";
+    };
+
+    patches = [
+      # this one is actually an omnipresent bug
+      # https://bugzilla.mozilla.org/show_bug.cgi?id=1444519
+      ./fix-pa-context-connect-retval.patch
+    ];
+
+    meta.knownVulnerabilities = [ "Support ended in August 2018." ];
+  };
+
+}) // (let
+
+  tbcommon = args: firefoxCommon (args // {
+    pname = "tor-browser";
+    isTorBrowserLike = true;
+
+    unpackPhase = ''
+      # fetchFromGitHub produces ro sources, root dir gets a name that
+      # is too long for shebangs. fixing
+      cp -a $src tor-browser
+      chmod -R +w tor-browser
+      cd tor-browser
+
+      # set times for xpi archives
+      find . -exec touch -d'2010-01-01 00:00' {} \;
+    '';
+
+    meta = (args.meta or {}) // {
+      description = "A web browser built from TorBrowser source tree";
+      longDescription = ''
+        This is a version of TorBrowser with bundle-related patches
+        reverted.
+
+        I.e. it's a variant of Firefox with less fingerprinting and
+        some isolation features you can't get with any extensions.
+
+        Or, alternatively, a variant of TorBrowser that works like any
+        other UNIX program and doesn't expect you to run it from a
+        bundle.
+
+        It will use your default Firefox profile if you're not careful
+        even! Be careful!
+
+        It will clash with firefox binary if you install both. But it
+        should not be a problem because you should run browsers in
+        separate users/VMs anyway.
+
+        Create new profile by starting it as
+
+        $ firefox -ProfileManager
+
+        and then configure it to use your tor instance.
+
+        Or just use `tor-browser-bundle` package that packs this
+        `tor-browser` back into a sanely-built bundle.
+      '';
+      homepage = "https://www.torproject.org/projects/torbrowser.html";
+      platforms = lib.platforms.unix;
+      license = with lib.licenses; [ mpl20 bsd3 ];
+    };
+  });
+
+in rec {
+
+  tor-browser-7-5 = (tbcommon rec {
+    ffversion = "52.9.0esr";
+    tbversion = "7.5.6";
+
+    # FIXME: fetchFromGitHub is not ideal, unpacked source is >900Mb
+    src = fetchFromGitHub {
+      owner = "SLNOS";
+      repo  = "tor-browser";
+      # branch "tor-browser-52.9.0esr-7.5-2-slnos"
+      rev   = "95bb92d552876a1f4260edf68fda5faa3eb36ad8";
+      sha256 = "1ykn3yg4s36g2cpzxbz7s995c33ij8kgyvghx38z4i8siaqxdddy";
+    };
+  }).override {
+    gtk3Support = false;
+  };
+
+  tor-browser-8-0 = tbcommon rec {
+    ffversion = "60.6.1esr";
+    tbversion = "8.0.8";
+
+    # FIXME: fetchFromGitHub is not ideal, unpacked source is >900Mb
+    src = fetchFromGitHub {
+      owner = "SLNOS";
+      repo  = "tor-browser";
+      # branch "tor-browser-60.6.1esr-8.0-1-slnos"
+      rev   = "dda14213c550afc522ef0bb0bb1643289c298736";
+      sha256 = "0lj79nczcix9mx6d0isbizg0f8apf6vgkp7r0q7id92691frj7fz";
+    };
+  };
+
+  tor-browser = tor-browser-8-0;
+
+})
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/update.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox/update.nix
new file mode 100644
index 000000000000..0ead6de123aa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/update.nix
@@ -0,0 +1,36 @@
+{ writeScript
+, stdenv
+, lib
+, xidel
+, common-updater-scripts
+, coreutils
+, gnused
+, gnugrep
+, curl
+, attrPath
+, runtimeShell
+, baseUrl ? "http://archive.mozilla.org/pub/firefox/releases/"
+, versionSuffix ? ""
+, versionKey ? "version"
+}:
+
+writeScript "update-${attrPath}" ''
+  #!${runtimeShell}
+  PATH=${lib.makeBinPath [ common-updater-scripts coreutils curl gnugrep gnused xidel ]}
+
+  url=${baseUrl}
+
+  # retriving latest released version
+  #  - extracts all links from the $url
+  #  - extracts lines only with number and dots followed by a slash
+  #  - removes trailing slash
+  #  - sorts everything with semver in mind
+  #  - picks up latest release
+  version=`xidel -s $url --extract "//a" | \
+           grep "^[0-9.]*${versionSuffix}/$" | \
+           sed s/[/]$// | \
+           sort --version-sort | \
+           tail -n 1`
+
+  update-source-version ${attrPath} "$version" "" "" --version-key=${versionKey}
+''
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox/wrapper.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox/wrapper.nix
new file mode 100644
index 000000000000..90df5c40395a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/firefox/wrapper.nix
@@ -0,0 +1,186 @@
+{ stdenv, lib, makeDesktopItem, makeWrapper, lndir, config
+
+## various stuff that can be plugged in
+, flashplayer, hal-flash
+, MPlayerPlugin, ffmpeg, xorg, libpulseaudio, libcanberra-gtk2
+, jrePlugin, icedtea_web
+, bluejeans, djview4, adobe-reader
+, google_talk_plugin, fribid, gnome3/*.gnome-shell*/
+, esteidfirefoxplugin
+, browserpass, chrome-gnome-shell, uget-integrator, plasma-browser-integration, bukubrow
+, udev
+, kerberos
+}:
+
+## configurability of the wrapper itself
+
+browser:
+
+let
+  wrapper =
+    { browserName ? browser.browserName or (builtins.parseDrvName browser.name).name
+    , name ? (browserName + "-" + (builtins.parseDrvName browser.name).version)
+    , desktopName ? # browserName with first letter capitalized
+      (lib.toUpper (lib.substring 0 1 browserName) + lib.substring 1 (-1) browserName)
+    , nameSuffix ? ""
+    , icon ? browserName
+    , extraPlugins ? []
+    , extraNativeMessagingHosts ? []
+    , gdkWayland ? false
+    }:
+
+    assert gdkWayland -> (browser ? gtk3); # Can only use the wayland backend if gtk3 is being used
+
+    let
+      cfg = config.${browserName} or {};
+      enableAdobeFlash = cfg.enableAdobeFlash or false;
+      ffmpegSupport = browser.ffmpegSupport or false;
+      gssSupport = browser.gssSupport or false;
+      jre = cfg.jre or false;
+      icedtea = cfg.icedtea or false;
+      supportsJDK =
+        stdenv.hostPlatform.system == "i686-linux" ||
+        stdenv.hostPlatform.system == "x86_64-linux" ||
+        stdenv.hostPlatform.system == "armv7l-linux" ||
+        stdenv.hostPlatform.system == "aarch64-linux";
+
+      plugins =
+        assert !(jre && icedtea);
+        if builtins.hasAttr "enableVLC" cfg
+        then throw "The option \"${browserName}.enableVLC\" has been removed since Firefox no longer supports npapi plugins"
+        else
+        ([ ]
+          ++ lib.optional enableAdobeFlash flashplayer
+          ++ lib.optional (cfg.enableDjvu or false) (djview4)
+          ++ lib.optional (cfg.enableMPlayer or false) (MPlayerPlugin browser)
+          ++ lib.optional (supportsJDK && jre && jrePlugin ? mozillaPlugin) jrePlugin
+          ++ lib.optional icedtea icedtea_web
+          ++ lib.optional (cfg.enableGoogleTalkPlugin or false) google_talk_plugin
+          ++ lib.optional (cfg.enableFriBIDPlugin or false) fribid
+          ++ lib.optional (cfg.enableGnomeExtensions or false) gnome3.gnome-shell
+          ++ lib.optional (cfg.enableBluejeans or false) bluejeans
+          ++ lib.optional (cfg.enableAdobeReader or false) adobe-reader
+          ++ lib.optional (cfg.enableEsteid or false) esteidfirefoxplugin
+          ++ extraPlugins
+        );
+      nativeMessagingHosts =
+        ([ ]
+          ++ lib.optional (cfg.enableBrowserpass or false) (lib.getBin browserpass)
+          ++ lib.optional (cfg.enableBukubrow or false) bukubrow
+          ++ lib.optional (cfg.enableGnomeExtensions or false) chrome-gnome-shell
+          ++ lib.optional (cfg.enableUgetIntegrator or false) uget-integrator
+          ++ lib.optional (cfg.enablePlasmaBrowserIntegration or false) plasma-browser-integration
+          ++ extraNativeMessagingHosts
+        );
+      libs =   lib.optional stdenv.isLinux udev
+            ++ lib.optional ffmpegSupport ffmpeg
+            ++ lib.optional gssSupport kerberos
+            ++ lib.optionals (cfg.enableQuakeLive or false)
+            (with xorg; [ stdenv.cc libX11 libXxf86dga libXxf86vm libXext libXt alsaLib zlib ])
+            ++ lib.optional (enableAdobeFlash && (cfg.enableAdobeFlashDRM or false)) hal-flash
+            ++ lib.optional (config.pulseaudio or true) libpulseaudio;
+      gtk_modules = [ libcanberra-gtk2 ];
+
+    in stdenv.mkDerivation {
+      inherit name;
+
+      desktopItem = makeDesktopItem {
+        name = browserName;
+        exec = "${browserName}${nameSuffix} %U";
+        inherit icon;
+        comment = "";
+        desktopName = "${desktopName}${nameSuffix}${lib.optionalString gdkWayland " (Wayland)"}";
+        genericName = "Web Browser";
+        categories = "Application;Network;WebBrowser;";
+        mimeType = stdenv.lib.concatStringsSep ";" [
+          "text/html"
+          "text/xml"
+          "application/xhtml+xml"
+          "application/vnd.mozilla.xul+xml"
+          "x-scheme-handler/http"
+          "x-scheme-handler/https"
+          "x-scheme-handler/ftp"
+        ];
+      };
+
+      nativeBuildInputs = [ makeWrapper lndir ];
+      buildInputs = lib.optional (browser ? gtk3) browser.gtk3;
+
+      buildCommand = lib.optionalString stdenv.isDarwin ''
+        mkdir -p $out/Applications
+        cp -R --no-preserve=mode,ownership ${browser}/Applications/${browserName}.app $out/Applications
+        rm -f $out${browser.execdir or "/bin"}/${browserName}
+      '' + ''
+        if [ ! -x "${browser}${browser.execdir or "/bin"}/${browserName}" ]
+        then
+            echo "cannot find executable file \`${browser}${browser.execdir or "/bin"}/${browserName}'"
+            exit 1
+        fi
+
+        makeWrapper "$(readlink -v --canonicalize-existing "${browser}${browser.execdir or "/bin"}/${browserName}")" \
+          "$out${browser.execdir or "/bin"}/${browserName}${nameSuffix}" \
+            --suffix-each MOZ_PLUGIN_PATH ':' "$plugins" \
+            --suffix LD_LIBRARY_PATH ':' "$libs" \
+            --suffix-each GTK_PATH ':' "$gtk_modules" \
+            --suffix-each LD_PRELOAD ':' "$(cat $(filterExisting $(addSuffix /extra-ld-preload $plugins)))" \
+            --prefix-contents PATH ':' "$(filterExisting $(addSuffix /extra-bin-path $plugins))" \
+            --suffix PATH ':' "$out${browser.execdir or "/bin"}" \
+            --set MOZ_APP_LAUNCHER "${browserName}${nameSuffix}" \
+            --set MOZ_SYSTEM_DIR "$out/lib/mozilla" \
+            ${lib.optionalString gdkWayland ''
+              --set GDK_BACKEND "wayland" \
+            ''}${lib.optionalString (browser ? gtk3)
+                ''--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
+                  --suffix XDG_DATA_DIRS : '${gnome3.adwaita-icon-theme}/share'
+                ''
+            }
+
+        if [ -e "${browser}/share/icons" ]; then
+            mkdir -p "$out/share"
+            ln -s "${browser}/share/icons" "$out/share/icons"
+        else
+            for res in 16 32 48 64 128; do
+            mkdir -p "$out/share/icons/hicolor/''${res}x''${res}/apps"
+            icon=( "${browser}/lib/"*"/browser/chrome/icons/default/default''${res}.png" )
+              if [ -e "$icon" ]; then ln -s "$icon" \
+                "$out/share/icons/hicolor/''${res}x''${res}/apps/${browserName}.png"
+              fi
+            done
+        fi
+
+        install -D -t $out/share/applications $desktopItem/share/applications/*
+
+        mkdir -p $out/lib/mozilla
+        for ext in ${toString nativeMessagingHosts}; do
+            lndir -silent $ext/lib/mozilla $out/lib/mozilla
+        done
+
+        # For manpages, in case the program supplies them
+        mkdir -p $out/nix-support
+        echo ${browser} > $out/nix-support/propagated-user-env-packages
+      '';
+
+      preferLocalBuild = true;
+
+      # Let each plugin tell us (through its `mozillaPlugin') attribute
+      # where to find the plugin in its tree.
+      plugins = map (x: x + x.mozillaPlugin) plugins;
+      libs = lib.makeLibraryPath libs + ":" + lib.makeSearchPathOutput "lib" "lib64" libs;
+      gtk_modules = map (x: x + x.gtkModule) gtk_modules;
+
+      passthru = { unwrapped = browser; };
+
+      disallowedRequisites = [ stdenv.cc ];
+
+      meta = browser.meta // {
+        description =
+          browser.meta.description
+          + " (with plugins: "
+          + lib.concatStrings (lib.intersperse ", " (map (x: x.name) plugins))
+          + ")";
+        hydraPlatforms = [];
+        priority = (browser.meta.priority or 0) - 1; # prefer wrapper over the package
+      };
+    };
+in
+  lib.makeOverridable wrapper
diff --git a/nixpkgs/pkgs/applications/networking/browsers/google-chrome/default.nix b/nixpkgs/pkgs/applications/networking/browsers/google-chrome/default.nix
new file mode 100644
index 000000000000..b0ae61c761df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/google-chrome/default.nix
@@ -0,0 +1,141 @@
+{ stdenv, patchelf, makeWrapper
+
+# Linked dynamic libraries.
+, glib, fontconfig, freetype, pango, cairo, libX11, libXi, atk, gconf, nss, nspr
+, libXcursor, libXext, libXfixes, libXrender, libXScrnSaver, libXcomposite, libxcb
+, alsaLib, libXdamage, libXtst, libXrandr, expat, cups
+, dbus, gtk2, gtk3, gdk_pixbuf, gcc-unwrapped, at-spi2-atk, at-spi2-core
+, kerberos
+
+# command line arguments which are always set e.g "--disable-gpu"
+, commandLineArgs ? ""
+
+# Will crash without.
+, systemd
+
+# Loaded at runtime.
+, libexif
+
+# Additional dependencies according to other distros.
+## Ubuntu
+, liberation_ttf, curl, utillinux, xdg_utils, wget
+## Arch Linux.
+, flac, harfbuzz, icu, libpng, libopus, snappy, speechd
+## Gentoo
+, bzip2, libcap
+
+# Which distribution channel to use.
+, channel ? "stable"
+
+# Necessary for USB audio devices.
+, pulseSupport ? true, libpulseaudio ? null
+
+# Only needed for getting information about upstream binaries
+, chromium
+
+, gsettings-desktop-schemas
+, gnome2, gnome3
+}:
+
+with stdenv.lib;
+
+let
+  opusWithCustomModes = libopus.override {
+    withCustomModes = true;
+  };
+
+  version = chromium.upstream-info.version;
+  gtk = if (versionAtLeast version "59.0.0.0") then gtk3 else gtk2;
+  gnome = if (versionAtLeast version "59.0.0.0") then gnome3 else gnome2;
+
+  deps = [
+    glib fontconfig freetype pango cairo libX11 libXi atk gconf nss nspr
+    libXcursor libXext libXfixes libXrender libXScrnSaver libXcomposite libxcb
+    alsaLib libXdamage libXtst libXrandr expat cups
+    dbus gdk_pixbuf gcc-unwrapped.lib
+    systemd
+    libexif
+    liberation_ttf curl utillinux xdg_utils wget
+    flac harfbuzz icu libpng opusWithCustomModes snappy speechd
+    bzip2 libcap at-spi2-atk at-spi2-core
+    kerberos
+  ] ++ optional pulseSupport libpulseaudio
+    ++ [ gtk ];
+
+  suffix = if channel != "stable" then "-" + channel else "";
+
+in stdenv.mkDerivation rec {
+  inherit version;
+
+  name = "google-chrome${suffix}-${version}";
+
+  src = chromium.upstream-info.binary;
+
+  nativeBuildInputs = [ patchelf makeWrapper ];
+  buildInputs = [
+    # needed for GSETTINGS_SCHEMAS_PATH
+    gsettings-desktop-schemas glib gtk
+
+    # needed for XDG_ICON_DIRS
+    gnome.adwaita-icon-theme
+  ];
+
+  unpackPhase = ''
+    ar x $src
+    tar xf data.tar.xz
+  '';
+
+  rpath = makeLibraryPath deps + ":" + makeSearchPathOutput "lib" "lib64" deps;
+  binpath = makeBinPath deps;
+
+  installPhase = ''
+    case ${channel} in
+      beta) appname=chrome-beta      dist=beta     ;;
+      dev)  appname=chrome-unstable  dist=unstable ;;
+      *)    appname=chrome           dist=stable   ;;
+    esac
+
+    exe=$out/bin/google-chrome-$dist
+
+    mkdir -p $out/bin $out/share
+
+    cp -a opt/* $out/share
+    cp -a usr/share/* $out/share
+
+    substituteInPlace $out/share/applications/google-$appname.desktop \
+      --replace /usr/bin/google-chrome-$dist $exe
+    substituteInPlace $out/share/gnome-control-center/default-apps/google-$appname.xml \
+      --replace /opt/google/$appname/google-$appname $exe
+    substituteInPlace $out/share/menu/google-$appname.menu \
+      --replace /opt $out/share \
+      --replace $out/share/google/chrome/google-$appname $exe
+
+    for icon_file in $out/share/google/chrome*/product_logo_*[0-9].png; do
+      num_and_suffix="''${icon_file##*logo_}"
+      icon_size="''${num_and_suffix%.*}"
+      logo_output_prefix="$out/share/icons/hicolor"
+      logo_output_path="$logo_output_prefix/''${icon_size}x''${icon_size}/apps"
+      mkdir -p "$logo_output_path"
+      mv "$icon_file" "$logo_output_path/google-$appname.png"
+    done
+
+    makeWrapper "$out/share/google/$appname/google-$appname" "$exe" \
+      --prefix LD_LIBRARY_PATH : "$rpath" \
+      --prefix PATH            : "$binpath" \
+      --prefix XDG_DATA_DIRS   : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
+      --add-flags ${escapeShellArg commandLineArgs}
+
+    for elf in $out/share/google/$appname/{chrome,chrome-sandbox,nacl_helper}; do
+      patchelf --set-rpath $rpath $elf
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $elf
+    done
+  '';
+
+  meta = {
+    description = "A freeware web browser developed by Google";
+    homepage = https://www.google.com/chrome/browser/;
+    license = licenses.unfree;
+    maintainers = [ maintainers.msteen ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/links2/default.nix b/nixpkgs/pkgs/applications/networking/browsers/links2/default.nix
new file mode 100644
index 000000000000..62be8bbc1d61
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/links2/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl
+, gpm, openssl, pkgconfig, libev # Misc.
+, libpng, libjpeg, libtiff, librsvg # graphic formats
+, bzip2, zlib, xz # Transfer encodings
+, enableFB ? true
+, enableDirectFB ? false, directfb
+, enableX11 ? true, libX11, libXt, libXau # GUI support
+}:
+
+stdenv.mkDerivation rec {
+  version = "2.18";
+  name = "links2-${version}";
+
+  src = fetchurl {
+    url = "${meta.homepage}/download/links-${version}.tar.bz2";
+    sha256 = "0mwhh61klicn2vwk39nc7y4cw4mygzdi2nljn4r0gjbw6jmw3337";
+  };
+
+  buildInputs = with stdenv.lib;
+    [ libev librsvg libpng libjpeg libtiff openssl xz bzip2 zlib ]
+    ++ optionals stdenv.isLinux [ gpm ]
+    ++ optionals enableX11 [ libX11 libXau libXt ]
+    ++ optional enableDirectFB [ directfb ];
+
+  nativeBuildInputs = [ pkgconfig bzip2 ];
+
+  configureFlags = [ "--with-ssl" ]
+    ++ stdenv.lib.optional (enableX11 || enableFB || enableDirectFB) "--enable-graphics"
+    ++ stdenv.lib.optional enableX11 "--with-x"
+    ++ stdenv.lib.optional enableFB "--with-fb"
+    ++ stdenv.lib.optional enableDirectFB "--with-directfb";
+
+  meta = with stdenv.lib; {
+    homepage = http://links.twibright.com/;
+    description = "A small browser with some graphics support";
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/luakit/default.nix b/nixpkgs/pkgs/applications/networking/browsers/luakit/default.nix
new file mode 100644
index 000000000000..60e9c603e29e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/luakit/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchFromGitHub, pkgconfig, wrapGAppsHook
+, help2man, lua5, luafilesystem, luajit, sqlite
+, webkitgtk, gtk3, gst_all_1, glib-networking
+}:
+
+let
+  lualibs = [luafilesystem];
+  getPath       = lib : type : "${lib}/lib/lua/${lua5.luaversion}/?.${type};${lib}/share/lua/${lua5.luaversion}/?.${type}";
+  getLuaPath    = lib : getPath lib "lua";
+  getLuaCPath   = lib : getPath lib "so";
+  luaPath       = stdenv.lib.concatStringsSep ";" (map getLuaPath lualibs);
+  luaCPath      = stdenv.lib.concatStringsSep ";" (map getLuaCPath lualibs);
+
+in stdenv.mkDerivation rec {
+  pname = "luakit";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    owner = "luakit";
+    repo = "luakit";
+    rev = version;
+    sha256 = "05mm76g72fs48410pbij4mw0s3nqji3r7f3mnr2fvhv02xqj05aa";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig help2man wrapGAppsHook
+  ];
+
+  buildInputs = [
+    webkitgtk lua5 luafilesystem luajit sqlite gtk3
+    gst_all_1.gstreamer gst_all_1.gst-plugins-base
+    gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad gst_all_1.gst-plugins-ugly
+    gst_all_1.gst-libav
+    glib-networking # TLS support
+  ];
+
+  preBuild = ''
+    # build-utils/docgen/gen.lua:2: module 'lib.lousy.util' not found
+    # TODO: why is not this the default?
+    LUA_PATH=?.lua
+  '';
+
+  makeFlags = [
+    "DEVELOPMENT_PATHS=0"
+    "USE_LUAJIT=1"
+    "INSTALLDIR=${placeholder "out"}"
+    "PREFIX=${placeholder "out"}"
+    "USE_GTK3=1"
+    "XDGPREFIX=${placeholder "out"}/etc/xdg"
+  ];
+
+  preFixup = let
+    luaKitPath = "$out/share/luakit/lib/?/init.lua;$out/share/luakit/lib/?.lua";
+  in ''
+    gappsWrapperArgs+=(
+      --prefix XDG_CONFIG_DIRS : "$out/etc/xdg"
+      --set LUA_PATH '${luaKitPath};${luaPath};'
+      --set LUA_CPATH '${luaCPath};'
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Fast, small, webkit based browser framework extensible in Lua";
+    homepage    = http://luakit.org;
+    license     = licenses.gpl3;
+    platforms   = platforms.linux; # Only tested linux
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/lynx/default.nix b/nixpkgs/pkgs/applications/networking/browsers/lynx/default.nix
new file mode 100644
index 000000000000..d6b775107d06
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/lynx/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, buildPackages
+, fetchurl, pkgconfig, ncurses, gzip
+, sslSupport ? true, openssl ? null
+, nukeReferences
+}:
+
+assert sslSupport -> openssl != null;
+
+stdenv.mkDerivation rec {
+  name = "lynx-${version}";
+  version = "2.8.9rel.1";
+
+  src = fetchurl {
+    urls = [
+      "ftp://ftp.invisible-island.net/lynx/tarballs/lynx${version}.tar.bz2"
+      "https://invisible-mirror.net/archives/lynx/tarballs/lynx${version}.tar.bz2"
+    ];
+    sha256 = "15cmyyma2kz1hfaa6mwjgli8zwdzq3jv0q2cl6nwzycjfwyijzrq";
+  };
+
+  enableParallelBuilding = true;
+
+  hardeningEnable = [ "pie" ];
+
+  configureFlags = [
+    "--enable-default-colors"
+    "--enable-widec"
+    "--enable-ipv6"
+  ] ++ stdenv.lib.optional sslSupport "--with-ssl";
+
+  depsBuildBuild = [ buildPackages.stdenv.cc ];
+  nativeBuildInputs = [ nukeReferences ]
+    ++ stdenv.lib.optional sslSupport pkgconfig;
+
+  buildInputs = [ ncurses gzip ] ++ stdenv.lib.optional sslSupport openssl.dev;
+
+  # cfg_defs.h captures lots of references to build-only dependencies, derived
+  # from config.cache.
+  postConfigure = ''
+    make cfg_defs.h
+    nuke-refs cfg_defs.h
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A text-mode web browser";
+    homepage = https://lynx.invisible-island.net/;
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/midori/default.nix b/nixpkgs/pkgs/applications/networking/browsers/midori/default.nix
new file mode 100644
index 000000000000..131209033836
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/midori/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, cmake, ninja, pkgconfig, intltool, vala, wrapGAppsHook, gcr, libpeas
+, gtk3, webkitgtk, sqlite, gsettings-desktop-schemas, libsoup, glib-networking, gnome3
+}:
+
+stdenv.mkDerivation rec {
+  pname = "midori";
+  version = "7";
+
+  src = fetchurl {
+    url = "https://github.com/midori-browser/core/releases/download/v${version}/midori-v${version}.0.tar.gz";
+    sha256 = "0ffdnjp55s0ci737vlhxikb2nihghwlb6mjcjzpgpnzi47vjqnwh";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig cmake ninja intltool vala wrapGAppsHook
+  ];
+
+  buildInputs = [
+    gtk3 webkitgtk sqlite gsettings-desktop-schemas gcr
+    (libsoup.override { gnomeSupport = true; }) libpeas
+    glib-networking
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Lightweight WebKitGTK+ web browser";
+    homepage = https://www.midori-browser.org/;
+    license = with licenses; [ lgpl21Plus ];
+    platforms = with platforms; linux;
+    maintainers = with maintainers; [ raskin ramkromberg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix
new file mode 100644
index 000000000000..fa98f2a9e785
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchurl, xorg, gtk2, glib, gdk_pixbuf, dpkg, libXext, libXfixes
+, libXrender, libuuid, libXrandr, libXcomposite, libpulseaudio
+}:
+
+with stdenv.lib;
+
+let
+
+  rpathInstaller = makeLibraryPath
+    [gtk2 glib stdenv.cc.cc];
+
+  rpathPlugin = makeLibraryPath
+    ([ stdenv.cc.cc gtk2 glib xorg.libX11 gdk_pixbuf libXext libXfixes libXrender libXrandr libXcomposite libpulseaudio ] ++ optional (libuuid != null) libuuid);
+
+in
+
+stdenv.mkDerivation rec {
+  name = "bluejeans-${version}";
+
+  version = "2.180.71.8";
+
+  src = fetchurl {
+    url = "https://swdl.bluejeans.com/skinny/bjnplugin_${version}-1_amd64.deb";
+    sha256 = "1fgjgzss0ghk734xpfidazyknfdn11pmyw77pc3wigl83dvx4nb2";
+  };
+
+  unpackPhase = "${dpkg}/bin/dpkg-deb -x $src .";
+
+  installPhase =
+    ''
+      mkdir -p $out
+      cp -R usr/lib $out/
+
+      plugins=$out/lib/mozilla/plugins
+      patchelf \
+        --set-rpath "${rpathPlugin}" \
+        $plugins/npbjnplugin_${version}.so
+
+      patchelf \
+        --set-rpath "${rpathInstaller}" \
+        $plugins/npbjninstallplugin_${version}.so
+    '';
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  passthru.mozillaPlugin = "/lib/mozilla/plugins";
+
+  meta = {
+    homepage = http://bluejeans.com;
+    license = stdenv.lib.licenses.unfree;
+    maintainers = with maintainers; [ ocharles kamilchm ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/esteidfirefoxplugin/default.nix b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/esteidfirefoxplugin/default.nix
new file mode 100644
index 000000000000..48d06d644dda
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/esteidfirefoxplugin/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, gtk2, openssl, pcsclite, pkgconfig, opensc }:
+
+stdenv.mkDerivation rec {
+  version = "3.12.1.1142";
+  name = "esteidfirefoxplugin-${version}";
+
+  src = fetchurl {
+    url = "https://installer.id.ee/media/ubuntu/pool/main/e/esteidfirefoxplugin/esteidfirefoxplugin_3.12.1.1142.orig.tar.xz";
+    sha256 = "0y7759x1xr00p5r3c5wpllcqqnnxh2zi74cmy4m9m690z3ywn0fx";
+  };
+
+  unpackPhase = ''
+    mkdir src
+    tar xf $src -C src
+    cd src
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gtk2 openssl pcsclite opensc ];
+
+  buildPhase = ''
+    sed -i "s|opensc-pkcs11.so|${opensc}/lib/pkcs11/opensc-pkcs11.so|" Makefile 
+    make plugin
+  '';
+
+  installPhase = ''
+    plugins=$out/lib/mozilla/plugins
+    mkdir -p $plugins
+    cp -a npesteid-firefox-plugin.so $plugins/
+    rp=$(patchelf --print-rpath $plugins/npesteid-firefox-plugin.so)
+    patchelf --set-rpath "$rp:${opensc}/lib:${opensc}/lib/pkcs11" $plugins/npesteid-firefox-plugin.so
+  '';
+
+  passthru.mozillaPlugin = "/lib/mozilla/plugins";
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  meta = with stdenv.lib; {
+    description = "Firefox ID card signing plugin";
+    homepage = http://www.id.ee/;
+    license = licenses.lgpl2;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.jagajaga ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix
new file mode 100644
index 000000000000..aa571d175347
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/default.nix
@@ -0,0 +1,147 @@
+{ stdenv
+, lib
+, fetchurl
+, alsaLib
+, atk
+, bzip2
+, cairo
+, curl
+, expat
+, fontconfig
+, freetype
+, gdk_pixbuf
+, glib
+, glibc
+, graphite2
+, gtk2
+, harfbuzz
+, libICE
+, libSM
+, libX11
+, libXau
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXdmcp
+, libXext
+, libXfixes
+, libXi
+, libXinerama
+, libXrandr
+, libXrender
+, libXt
+, libXxf86vm
+, libdrm
+, libffi
+, libglvnd
+, libpng
+, libvdpau
+, libxcb
+, libxshmfence
+, nspr
+, nss
+, pango
+, pcre
+, pixman
+, zlib
+, unzip
+, debug ? false
+
+/* you have to add ~/mm.cfg :
+
+    TraceOutputFileEnable=1
+    ErrorReportingEnable=1
+    MaxWarnings=1
+
+  in order to read the flash trace at ~/.macromedia/Flash_Player/Logs/flashlog.txt
+  Then FlashBug (a FireFox plugin) shows the log as well
+*/
+
+}:
+
+let
+  arch =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      "x86_64"
+    else if stdenv.hostPlatform.system == "i686-linux"   then
+      "i386"
+    else throw "Flash Player is not supported on this platform";
+  lib_suffix =
+      if stdenv.hostPlatform.system == "x86_64-linux" then
+      "64"
+    else
+      "";
+in
+stdenv.mkDerivation rec {
+  name = "flashplayer-${version}";
+  version = "32.0.0.156";
+
+  src = fetchurl {
+    url =
+      if debug then
+        "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_npapi_linux_debug.${arch}.tar.gz"
+      else
+        "https://fpdownload.adobe.com/get/flashplayer/pdc/${version}/flash_player_npapi_linux.${arch}.tar.gz";
+    sha256 =
+      if debug then
+        if arch == "x86_64" then
+          "0h16vdar4p8zj6w57ihll71xjr9sy7hdiq4qwvvqndah5c4ym8xl"
+        else
+          "06l59zid6n4b606254r937cvk95pyymlczadh4cpl6l4xncspdy6"
+      else
+        if arch == "x86_64" then
+          "0b3qssn1fgm2v715l6nksqmwly7j9asgqh9yqjhpp7jsb84bvzk4"
+        else
+          "03qdwrlvs4090s9b9fn2l6g3wsbi6q81jf59s1s5gh7qhi4i0lhy";
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  sourceRoot = ".";
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  preferLocalBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/lib/mozilla/plugins
+    cp -pv libflashplayer.so $out/lib/mozilla/plugins
+
+    mkdir -p $out/bin
+    cp -pv usr/bin/flash-player-properties $out/bin
+
+    mkdir -p $out/lib${lib_suffix}/kde4
+    cp -pv usr/lib${lib_suffix}/kde4/kcm_adobe_flash_player.so $out/lib${lib_suffix}/kde4
+
+    patchelf --set-rpath "$rpath" \
+      $out/lib/mozilla/plugins/libflashplayer.so \
+      $out/lib${lib_suffix}/kde4/kcm_adobe_flash_player.so
+
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      --set-rpath "$rpath" \
+      $out/bin/flash-player-properties
+  '';
+
+  passthru = {
+    mozillaPlugin = "/lib/mozilla/plugins";
+  };
+
+  rpath = lib.makeLibraryPath
+    [ stdenv.cc.cc
+      alsaLib atk bzip2 cairo curl expat fontconfig freetype gdk_pixbuf glib
+      glibc graphite2 gtk2 harfbuzz libICE libSM libX11 libXau libXcomposite
+      libXcursor libXdamage libXdmcp libXext libXfixes libXi libXinerama
+      libXrandr libXrender libXt libXxf86vm libdrm libffi libglvnd libpng
+      libvdpau libxcb libxshmfence nspr nss pango pcre pixman zlib
+    ];
+
+  meta = {
+    description = "Adobe Flash Player browser plugin";
+    homepage = http://www.adobe.com/products/flashplayer/;
+    license = stdenv.lib.licenses.unfree;
+    maintainers = [];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix
new file mode 100644
index 000000000000..0da07f2d2bef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer/standalone.nix
@@ -0,0 +1,106 @@
+{ stdenv
+, lib
+, fetchurl
+, alsaLib
+, atk
+, bzip2
+, cairo
+, curl
+, expat
+, fontconfig
+, freetype
+, gdk_pixbuf
+, glib
+, glibc
+, graphite2
+, gtk2
+, harfbuzz
+, libICE
+, libSM
+, libX11
+, libXau
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXdmcp
+, libXext
+, libXfixes
+, libXi
+, libXinerama
+, libXrandr
+, libXrender
+, libXt
+, libXxf86vm
+, libdrm
+, libffi
+, libglvnd
+, libpng
+, libvdpau
+, libxcb
+, libxshmfence
+, nspr
+, nss
+, pango
+, pcre
+, pixman
+, zlib
+, unzip
+, debug ? false
+}:
+
+stdenv.mkDerivation rec {
+  name = "flashplayer-standalone-${version}";
+  version = "32.0.0.156";
+
+  src = fetchurl {
+    url =
+      if debug then
+        "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux_debug.x86_64.tar.gz"
+      else
+        "https://fpdownload.macromedia.com/pub/flashplayer/updaters/32/flash_player_sa_linux.x86_64.tar.gz";
+    sha256 =
+      if debug then
+        "0fzs2x8yxpykkza1r3yn17hmrdz51c7qigbm5qifvw59q9zl15i9"
+      else
+        "11733155aznijwhnc5wv0v6wmw9g1akbqwl07kx3lam571s8aywr";
+  };
+
+  nativeBuildInputs = [ unzip ];
+
+  sourceRoot = ".";
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  preferLocalBuild = true;
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -pv flashplayer${lib.optionalString debug "debugger"} $out/bin
+
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      --set-rpath "$rpath" \
+      $out/bin/flashplayer${lib.optionalString debug "debugger"}
+  '';
+
+  rpath = lib.makeLibraryPath
+    [ stdenv.cc.cc
+      alsaLib atk bzip2 cairo curl expat fontconfig freetype gdk_pixbuf glib
+      glibc graphite2 gtk2 harfbuzz libICE libSM libX11 libXau libXcomposite
+      libXcursor libXdamage libXdmcp libXext libXfixes libXi libXinerama
+      libXrandr libXrender libXt libXxf86vm libdrm libffi libglvnd libpng
+      libvdpau libxcb libxshmfence nspr nss pango pcre pixman zlib
+    ];
+
+  meta = {
+    description = "Adobe Flash Player standalone executable";
+    homepage = https://www.adobe.com/support/flashplayer/debug_downloads.html;
+    license = stdenv.lib.licenses.unfree;
+    maintainers = [];
+    platforms = [ "x86_64-linux" ];
+    # Application crashed with an unhandled SIGSEGV
+    # Not on all systems, though. Video driver problem?
+    broken = false;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/builder.sh b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/builder.sh
new file mode 100644
index 000000000000..fb36125b3a17
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/builder.sh
@@ -0,0 +1,4 @@
+source $stdenv/setup
+export PREFIX=$out
+configureFlags="--plugin-path=$out/lib/mozilla/plugins"
+genericBuild
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix
new file mode 100644
index 000000000000..30bae8792c2e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, pkgconfig, openssl, glib, libX11, gtk2, gettext, intltool }:
+
+stdenv.mkDerivation rec {
+  name = "fribid-${version}";
+  version = "1.0.4";
+  builder = ./builder.sh;
+
+  src = fetchurl {
+    url = "https://fribid.se/releases/source/${name}.tar.bz2";
+    sha256 = "a679f3a0534d5f05fac10b16b49630a898c0b721cfa24d2c827fa45485476649";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ openssl libX11 gtk2 glib gettext intltool ];
+  patches = [
+    ./translation-xgettext-to-intltool.patch
+    ./plugin-linkfix.patch
+    ./ipc-lazytrace.patch
+    ];
+
+  postPatch = "substituteInPlace plugin/pluginutil.c --replace strndup strndup_";
+
+  passthru.mozillaPlugin = "/lib/mozilla/plugins";
+
+  meta = with stdenv.lib; {
+    description = "A browser plugin to manage Swedish BankID:s";
+    longDescription = ''
+      FriBID is an open source software for the Swedish e-id system
+      called BankID. FriBID also supports processor architectures and
+      Linux/BSD distributions that the official software doesn't
+      support.
+    '';
+    homepage = http://fribid.se;
+    license = with licenses; [ gpl2 mpl10 ];
+    maintainers = [ maintainers.edwtjo ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/ipc-lazytrace.patch b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/ipc-lazytrace.patch
new file mode 100644
index 000000000000..b7d05ddd0ef5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/ipc-lazytrace.patch
@@ -0,0 +1,10 @@
+--- a/plugin/ipc.c	2012-11-14 18:02:43.000000000 +0100
++++ b/plugin/ipc.c	2013-09-21 08:55:39.960265058 +0200
+@@ -74,6 +74,7 @@
+         //close(pipeOut[PIPE_READ_END]);
+
+         execvp(mainBinary, (char *const *)argv);
++        fprintf(stderr, "Wanted signing executable\t<%s>\n", mainBinary);
+         perror(BINNAME ": Failed to execute main binary");
+         exit(1);
+     } else {
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/plugin-linkfix.patch b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/plugin-linkfix.patch
new file mode 100644
index 000000000000..1128381238b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/plugin-linkfix.patch
@@ -0,0 +1,11 @@
+--- a/plugin/Makefile	2013-09-18 13:55:11.091652553 +0200
++++ b/plugin/Makefile	2013-09-18 13:58:27.513618750 +0200
+@@ -60,7 +60,7 @@
+ 	for path in $(NPAPI_PLUGIN_PATHS); do \
+ 	    (../configure --internal--remove-link $(DESTDIR)$$path/libfribidplugin.so $(NPAPI_PLUGIN_LIB) || exit 1) && \
+ 	    install -d $(DESTDIR)$$path && \
+-	    ln -sf $(NPAPI_PLUGIN_LIB) $(DESTDIR)$$path/libfribidplugin.so; \
++	    ln -sf $(DESTDIR)$(NPAPI_PLUGIN_LIB) $(DESTDIR)$$path/libfribidplugin.so; \
+ 	done
+
+ uninstall:
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/translation-xgettext-to-intltool.patch b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/translation-xgettext-to-intltool.patch
new file mode 100644
index 000000000000..dcac4f17928b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/fribid/translation-xgettext-to-intltool.patch
@@ -0,0 +1,16 @@
+--- a/translations/Makefile	2013-09-18 07:25:16.503800613 +0200
++++ b/translations/Makefile	2013-09-18 07:25:29.495869405 +0200
+@@ -38,7 +38,7 @@
+ all: template.pot $(MOFILES)
+
+ template.pot: $(POTFILES) $(DEFINES)
+-	xgettext -k_ -ktranslatable -d $(DOMAIN) --package-name=$(PACKAGENAME) --package-version=$(PACKAGEVERSION) --copyright-holder='YOUR NAME' -o $@ $(POTFILES)
++	intltool-update --gettext-package=$(PACKAGENAME) -o $@ sv
+
+ .po.mo:
+ 	msgfmt $< -o $@
+--- a/translations/POTFILES.in	2013-09-16 20:28:56.766106014 +0200
++++ b/translations/POTFILES.in	2013-09-18 13:15:05.252689648 +0200
+@@ -0,0 +1,2 @@
++client/gtk.c
++client/gtk/sign.glade
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix
new file mode 100644
index 000000000000..71b5161c1e39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/default.nix
@@ -0,0 +1,117 @@
+{ stdenv, fetchurl, libGL, xorg, cairo
+, libpng, gtk2, glib, gdk_pixbuf, fontconfig, freetype, curl
+, dbus-glib, alsaLib, libpulseaudio, systemd, pango
+}:
+
+with stdenv.lib;
+
+let
+
+  baseURL = "http://dl.google.com/linux/talkplugin/deb/pool/main/g/google-talkplugin";
+
+  rpathPlugin = makeLibraryPath
+    [ libGL
+      xorg.libXt
+      xorg.libX11
+      xorg.libXrender
+      cairo
+      libpng
+      gtk2
+      glib
+      fontconfig
+      freetype
+      curl
+    ];
+
+  rpathProgram = makeLibraryPath
+    [ gdk_pixbuf
+      glib
+      gtk2
+      xorg.libX11
+      xorg.libXcomposite
+      xorg.libXfixes
+      xorg.libXrender
+      xorg.libXrandr
+      xorg.libXext
+      stdenv.cc.cc
+      alsaLib
+      libpulseaudio
+      dbus-glib
+      systemd
+      curl
+      pango
+      cairo
+    ];
+
+in
+
+stdenv.mkDerivation rec {
+  name = "google-talk-plugin-${version}";
+
+  # You can get the upstream version and SHA-1 hash from the following URLs:
+  # curl -s http://dl.google.com/linux/talkplugin/deb/dists/stable/main/binary-amd64/Packages | grep -E 'Version|SHA1'
+  # curl -s http://dl.google.com/linux/talkplugin/deb/dists/stable/main/binary-i386/Packages | grep -E 'Version|SHA1'
+  version = "5.41.3.0";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "${baseURL}/google-talkplugin_${version}-1_amd64.deb";
+        sha1 = "0bbc3d6997ba22ce712d93e5bc336c894b54fc81";
+      }
+    else if stdenv.hostPlatform.system == "i686-linux" then
+      fetchurl {
+        url = "${baseURL}/google-talkplugin_${version}-1_i386.deb";
+        sha1 = "6eae0544858f85c68b0cc46d7786e990bd94f139";
+      }
+    else throw "Google Talk does not support your platform.";
+
+  unpackPhase = ''
+    ar p "$src" data.tar.gz | tar xz
+  '';
+
+  installPhase =
+    ''
+      plugins=$out/lib/mozilla/plugins
+      mkdir -p $plugins
+      cp opt/google/talkplugin/*.so $plugins
+
+      for i in libnpgoogletalk.so libppgoogletalk.so libppo1d.so; do
+        patchelf --set-rpath "${makeLibraryPath [ stdenv.cc.cc xorg.libX11 ]}:${stdenv.cc.cc.lib}/lib64" $plugins/$i
+      done
+
+      for i in libgoogletalkremoting.so libnpo1d.so; do
+        patchelf --set-rpath "$out/libexec/google/talkplugin/lib:${rpathPlugin}:${stdenv.cc.cc.lib}/lib64" $plugins/$i
+      done
+
+      mkdir -p $out/libexec/google/talkplugin
+      cp -prd opt/google/talkplugin/{data,GoogleTalkPlugin,locale,remoting24x24.png,windowpicker.glade} $out/libexec/google/talkplugin/
+
+      patchelf \
+        --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath "${rpathProgram}:${stdenv.cc.cc.lib}/lib64" \
+        $out/libexec/google/talkplugin/GoogleTalkPlugin
+
+      # Generate an LD_PRELOAD wrapper to redirect execvp() calls to
+      # /opt/../GoogleTalkPlugin.
+      preload=$out/libexec/google/talkplugin/libpreload.so
+      mkdir -p $(dirname $preload)
+      gcc -shared ${./preload.c} -o $preload -ldl -DOUT=\"$out\" -fPIC
+      echo $preload > $plugins/extra-ld-preload
+
+      # Prevent a dependency on gcc.
+      strip -S $preload
+      patchELF $preload
+    '';
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  passthru.mozillaPlugin = "/lib/mozilla/plugins";
+
+  meta = {
+    homepage = http://www.google.com/chat/video/;
+    license = stdenv.lib.licenses.unfree;
+    maintainers = [ stdenv.lib.maintainers.eelco ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/preload.c b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/preload.c
new file mode 100644
index 000000000000..1e2c31d9527a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/google-talk-plugin/preload.c
@@ -0,0 +1,60 @@
+/* Google Talk Plugin executes a helper program in /opt.  This
+   LD_PRELOAD library intercepts execvp() calls to redirect them to
+   the corresponding location in $out. */
+
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <dlfcn.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <limits.h>
+
+char origDir [] = "/opt/google/talkplugin";
+char realDir [] = OUT "/libexec/google/talkplugin";
+
+const char * rewrite(const char * path, char * buf)
+{
+    if (strncmp(path, origDir, sizeof(origDir) - 1) != 0) return path;
+    if (snprintf(buf, PATH_MAX, "%s%s", realDir, path + sizeof(origDir) - 1) >= PATH_MAX)
+        abort();
+    return buf;
+}
+
+int execvp(const char * path, char * const argv[])
+{
+    int (*_execvp) (const char *, char * const argv[]) = dlsym(RTLD_NEXT, "execvp");
+    char buf[PATH_MAX];
+    return _execvp(rewrite(path, buf), argv);
+}
+
+int open(const char *path, int flags, ...)
+{
+    char buf[PATH_MAX];
+    int (*_open) (const char *, int, mode_t) = dlsym(RTLD_NEXT, "open");
+    mode_t mode = 0;
+    if (flags & O_CREAT) {
+        va_list ap;
+        va_start(ap, flags);
+        mode = va_arg(ap, mode_t);
+        va_end(ap);
+    }
+    return _open(rewrite(path, buf), flags, mode);
+}
+
+int open64(const char *path, int flags, ...)
+{
+    char buf[PATH_MAX];
+    int (*_open64) (const char *, int, mode_t) = dlsym(RTLD_NEXT, "open64");
+    mode_t mode = 0;
+    if (flags & O_CREAT) {
+        va_list ap;
+        va_start(ap, flags);
+        mode = va_arg(ap, mode_t);
+        va_end(ap);
+    }
+    return _open64(rewrite(path, buf), flags, mode);
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix
new file mode 100644
index 000000000000..c6c1d6a334cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, firefox, libX11, xorgproto }:
+
+stdenv.mkDerivation rec {
+  name = "mozplugger-${version}";
+  version = "2.1.6";
+
+  src = fetchurl {
+    url = "http://mozplugger.mozdev.org/files/mozplugger-${version}.tar.gz";
+    sha256 = "1vszkq4kdbaxsrqr2xn9rq6ipza9fngdri79gvjqk3bvsdmg0k19";
+  };
+
+  buildInputs = [ firefox libX11 xorgproto ];
+
+  installPhase = ''
+    mkdir -p "$out/etc" "$out/bin" "$out/lib/mozilla/plugins" "$out/share/man/man7"
+    cp mozpluggerrc "$out/etc"
+    cp mozplugger-{helper,controller,linker,update} "$out/bin"
+    cp mozplugger.so "$out/lib/mozilla/plugins"
+    cp mozplugger.7 "$out/share/man/man7"
+
+    mkdir -p "$out/share/${name}/plugin"
+    ln -s "$out/lib/mozilla/plugins/mozplugger.so" "$out/share/${name}/plugin"
+  '';
+
+  meta = {
+    description = "Mozilla plugin for launching external program for handling in-page objects";
+    homepage = http://mozplugger.mozdev.org/;
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix
new file mode 100644
index 000000000000..a5bfda9f26c9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/mplayerplug-in/default.nix
@@ -0,0 +1,37 @@
+{stdenv, fetchurl, pkgconfig, browser, libXpm, gettext}:
+
+stdenv.mkDerivation rec {
+  name = "mplayerplug-in-3.55";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mplayerplug-in/${name}.tar.gz";
+    sha256 = "0zkvqrzibrbljiccvz3rhbmgifxadlrfjylqpz48jnjx9kggynms";
+  };
+
+  postConfigure =
+    (if browser ? isFirefox3Like then ''
+       # Cause a rebuild of these file from the IDL file, needed for GNU IceCat 3
+       # and Mozilla Firefox 3.
+       # See, e.g., http://article.gmane.org/gmane.comp.mozilla.mplayerplug-in/2104 .
+       rm -f Source/nsIScriptableMplayerPlugin.h
+     ''
+     else "");
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ browser (browser.gtk) libXpm gettext ];
+  
+  installPhase = ''
+    mkdir -p $out/lib/mozilla/plugins
+    cp -p mplayerplug-in*.so mplayerplug-in*.xpt $out/lib/mozilla/plugins
+  '';
+
+  passthru = {
+    mozillaPlugin = "/lib/mozilla/plugins";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A browser plugin that uses mplayer to play digital media from websites";
+    homepage = http://mplayerplug-in.sourceforge.net/;
+    license = with licenses; [ gpl2Plus lgpl2Plus "MPLv1+" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix
new file mode 100644
index 000000000000..fa455eb0b7a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.nix
@@ -0,0 +1,40 @@
+{stdenv, fetchurl, which, pkgconfig, file, glib, gtk2, gtk3, curl, libXt}:
+let
+  srcData = # Generated upstream information 
+  rec {
+    baseName="nspluginwrapper";
+    version="1.4.4";
+    name="${baseName}-${version}";
+    hash="1fxjz9ifhw0drm12havlsl4jpsq1nv930gqa005kgddv5pa99vgj";
+    url="http://nspluginwrapper.org/download/nspluginwrapper-1.4.4.tar.gz";
+  };
+in
+stdenv.mkDerivation rec {
+  inherit (srcData) name version;
+
+  src = fetchurl{
+    inherit (srcData) url;
+    sha256 = srcData.hash;
+  };
+
+  preConfigure = ''
+    sed -e 's@/usr/bin/@@g' -i configure
+    sed -e '/gthread[.]h/d' -i src/npw-player.c
+    export NIX_LDFLAGS="$NIX_LDFLAGS -lgthread-2.0"
+    export configureFlags="$configureFlags --target-cpu=$(uname -m)"
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [which file glib gtk2 gtk3 curl libXt];
+
+  preferLocalBuild = true;
+
+  meta = {
+    description = ''A wrapper to run browser plugins out-of-process'';
+    homepage = http://nspluginwrapper.org/;
+    license = stdenv.lib.licenses.gpl2;
+    platforms = [ "x64_64-linux" "i686-linux" ];
+    maintainers = [ stdenv.lib.maintainers.raskin ];
+    inherit (srcData) version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.upstream b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.upstream
new file mode 100644
index 000000000000..62831613a2e2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/mozilla-plugins/nspluginwrapper/default.upstream
@@ -0,0 +1,4 @@
+name nspluginwrapper
+target default.nix
+url http://nspluginwrapper.org/download/
+version_link /nspluginwrapper-[0-9]+
diff --git a/nixpkgs/pkgs/applications/networking/browsers/opera/default.nix b/nixpkgs/pkgs/applications/networking/browsers/opera/default.nix
new file mode 100644
index 000000000000..07a389af8d61
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/opera/default.nix
@@ -0,0 +1,125 @@
+{ alsaLib
+, atk
+, cairo
+, cups
+, curl
+, dbus
+, dpkg
+, expat
+, fetchurl
+, fontconfig
+, freetype
+, gdk_pixbuf
+, glib
+, gnome2
+, gtk3
+, libX11
+, libxcb
+, libXScrnSaver
+, libXcomposite
+, libXcursor
+, libXdamage
+, libXext
+, libXfixes
+, libXi
+, libXrandr
+, libXrender
+, libXtst
+, libnotify
+, libpulseaudio
+, libuuid
+, nspr
+, nss
+, pango
+, stdenv
+, systemd
+, at-spi2-atk
+}:
+
+let
+
+  mirror = https://get.geo.opera.com/pub/opera/desktop;
+  version = "56.0.3051.99";
+
+  rpath = stdenv.lib.makeLibraryPath [
+
+    # These provide shared libraries loaded when starting. If one is missing,
+    # an error is shown in stderr.
+    alsaLib.out
+    atk.out
+    cairo.out
+    cups
+    curl.out
+    dbus.lib
+    expat.out
+    fontconfig.lib
+    freetype.out
+    gdk_pixbuf.out
+    glib.out
+    gnome2.GConf
+    gtk3.out
+    libX11.out
+    libXScrnSaver.out
+    libXcomposite.out
+    libXcursor.out
+    libXdamage.out
+    libXext.out
+    libXfixes.out
+    libXi.out
+    libXrandr.out
+    libXrender.out
+    libXtst.out
+    libxcb.out
+    libnotify.out
+    libuuid.out
+    nspr.out
+    nss.out
+    pango.out
+    stdenv.cc.cc.lib
+
+    # This is a little tricky. Without it the app starts then crashes. Then it
+    # brings up the crash report, which also crashes. `strace -f` hints at a
+    # missing libudev.so.0.
+    systemd.lib
+
+    # Works fine without this except there is no sound.
+    libpulseaudio.out
+
+    at-spi2-atk
+  ];
+
+in stdenv.mkDerivation {
+
+  name = "opera-${version}";
+
+  src = fetchurl {
+    url = "${mirror}/${version}/linux/opera-stable_${version}_amd64.deb";
+    sha256 = "1mf4lpb66w63kafjni5caq9k3lmsqd85161q29z5lr1s2cx9qqm8";
+  };
+
+  unpackCmd = "${dpkg}/bin/dpkg-deb -x $curSrc .";
+
+  installPhase = ''
+    mkdir --parent $out
+    mv * $out/
+    mv $out/lib/*/opera/*.so $out/lib/
+  '';
+
+  postFixup = ''
+    find $out -executable -type f \
+    | while read f
+      do
+        patchelf \
+          --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          --set-rpath "$out/lib:${rpath}" \
+          "$f"
+      done
+  '';
+
+  meta = {
+    homepage = http://www.opera.com;
+    description = "Web browser";
+    platforms = [ "x86_64-linux" ];
+    license = stdenv.lib.licenses.unfree;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/otter/default.nix b/nixpkgs/pkgs/applications/networking/browsers/otter/default.nix
new file mode 100644
index 000000000000..9a47e18fad12
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/otter/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, cmake, fetchFromGitHub
+, qtbase, qtmultimedia, qtwebengine
+, version ? "1.0.01"
+, sourceSha ? "1jw8bj3lcqngr0mqwvz1gf47qjxbwiyda7x4sm96a6ckga7pcwyb"
+}:
+stdenv.mkDerivation {
+  name = "otter-browser-${version}";
+
+  src = fetchFromGitHub {
+    owner = "OtterBrowser";
+    repo = "otter-browser";
+    rev = "v${version}";
+    sha256 = sourceSha;
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ qtbase qtmultimedia qtwebengine ];
+
+  meta = with stdenv.lib; {
+    homepage = https://otter-browser.org;
+    license = licenses.gpl3Plus;
+    description = "Browser aiming to recreate the best aspects of the classic Opera (12.x) UI using Qt5";
+    maintainers = with maintainers; [ lheckemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/palemoon/default.nix b/nixpkgs/pkgs/applications/networking/browsers/palemoon/default.nix
new file mode 100644
index 000000000000..0d863ae91314
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/palemoon/default.nix
@@ -0,0 +1,122 @@
+{ stdenv, fetchFromGitHub, makeDesktopItem
+, pkgconfig, autoconf213, alsaLib, bzip2, cairo
+, dbus, dbus-glib, file, fontconfig, freetype
+, gstreamer, gst-plugins-base, gst_all_1
+, gtk2, hunspell, icu, libevent, libjpeg, libnotify
+, libstartup_notification, libvpx, makeWrapper, libGLU_combined
+, nspr, nss, pango, perl, python, libpulseaudio, sqlite
+, unzip, xorg, which, yasm, zip, zlib
+}:
+
+stdenv.mkDerivation rec {
+  name = "palemoon-${version}";
+  version = "27.9.4";
+
+  src = fetchFromGitHub {
+    name   = "palemoon-src";
+    owner  = "MoonchildProductions";
+    repo   = "Pale-Moon";
+    rev    = version + "_Release";
+    sha256 = "0ir5gzhw98gfn15x58g1fwi11jd7gysvacqxg1v0jdjhgdl4m5sx";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "palemoon";
+    exec = "palemoon %U";
+    icon = "palemoon";
+    desktopName = "Pale Moon";
+    genericName = "Web Browser";
+    categories = "Application;Network;WebBrowser;";
+    mimeType = stdenv.lib.concatStringsSep ";" [
+      "text/html"
+      "text/xml"
+      "application/xhtml+xml"
+      "application/vnd.mozilla.xul+xml"
+      "x-scheme-handler/http"
+      "x-scheme-handler/https"
+      "x-scheme-handler/ftp"
+    ];
+  };
+
+  buildInputs = [
+    alsaLib bzip2 cairo dbus dbus-glib file fontconfig freetype
+    gst-plugins-base gstreamer gst_all_1.gst-plugins-base gtk2
+    hunspell icu libevent libjpeg libnotify libstartup_notification
+    libvpx makeWrapper libGLU_combined nspr nss pango perl pkgconfig python
+    libpulseaudio sqlite unzip which yasm zip zlib
+  ] ++ (with xorg; [
+    libX11 libXext libXft libXi libXrender libXScrnSaver
+    libXt pixman xorgproto
+  ]);
+
+  enableParallelBuilding = true;
+
+  configurePhase = ''
+    export AUTOCONF=${autoconf213}/bin/autoconf
+    export MOZBUILD_STATE_PATH=$(pwd)/.mozbuild
+    export MOZ_CONFIG=$(pwd)/.mozconfig
+    export builddir=$(pwd)/build
+    mkdir -p $MOZBUILD_STATE_PATH $builddir
+    echo > $MOZ_CONFIG "
+    . $src/build/mozconfig.common
+    ac_add_options --prefix=$out
+    ac_add_options --with-pthreads
+    ac_add_options --enable-application=browser
+    ac_add_options --enable-official-branding
+    ac_add_options --enable-optimize="-O2"
+    ac_add_options --enable-release
+    ac_add_options --enable-devtools
+    ac_add_options --enable-jemalloc
+    ac_add_options --enable-shared-js
+    ac_add_options --enable-strip
+    ac_add_options --disable-tests
+    ac_add_options --disable-installer
+    ac_add_options --disable-updaters
+    "
+  '';
+
+  patchPhase = ''
+    chmod u+w .
+  '';
+
+  hardeningDisable = [ "format" ];
+  
+  buildPhase = ''
+    cd $builddir
+    $src/mach build
+  '';
+
+  installPhase = ''
+    mkdir -p $out/share/applications
+    cp ${desktopItem}/share/applications/* $out/share/applications
+
+    for n in 16 22 24 32 48 256; do
+      size=$n"x"$n
+      mkdir -p $out/share/icons/hicolor/$size/apps
+      cp $src/browser/branding/official/default$n.png \
+         $out/share/icons/hicolor/$size/apps/palemoon.png
+    done
+
+    cd $builddir
+    $src/mach install
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A web browser";
+    longDescription = ''
+      Pale Moon is an Open Source, Goanna-based web browser focusing on
+      efficiency and customization.
+
+      Pale Moon offers you a browsing experience in a browser completely built
+      from its own, independently developed source that has been forked off from
+      Firefox/Mozilla code a number of years ago, with carefully selected
+      features and optimizations to improve the browser's stability and user
+      experience, while offering full customization and a growing collection of
+      extensions and themes to make the browser truly your own.
+    '';
+    homepage    = https://www.palemoon.org/;
+    license     = licenses.mpl20;
+    maintainers = with maintainers; [ rnhmjoj AndersonTorres ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/qtchan/default.nix b/nixpkgs/pkgs/applications/networking/browsers/qtchan/default.nix
new file mode 100644
index 000000000000..df956addf5cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/qtchan/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, fetchpatch, qt, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "qtchan-${version}";
+  version = "0.100";
+
+  src = fetchFromGitHub {
+    owner  = "siavash119";
+    repo   = "qtchan";
+    rev    = "v${version}";
+    sha256 = "0n94jd6b1y8v6x5lkinr9rzm4bjg9xh9m7zj3j73pgq829gpmj3a";
+  };
+
+  patches = [
+    (fetchpatch {
+      url = https://github.com/siavash119/qtchan/commit/718abeee5cf4aca8c99b35b26f43909362a29ee6.patch;
+      sha256 = "11b72l5njvfsyapd479hp4yfvwwb1mhq3f077hwgg0waz5l7n00z";
+    })
+  ];
+
+  enableParallelBuilding = true;
+  nativeBuildInputs = [ qt.qmake makeWrapper ];
+  buildInputs = [ qt.qtbase ];
+
+  qmakeFlags = [ "CONFIG-=app_bundle" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp qtchan $out/bin
+  '';
+
+  preFixup = ''
+    wrapProgram $out/bin/qtchan \
+      --suffix QT_PLUGIN_PATH : ${qt.qtbase.bin}/${qt.qtbase.qtPluginPrefix}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "4chan browser in qt5";
+    homepage    = "https://github.com/siavash119/qtchan";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ chiiruno ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/default.nix b/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/default.nix
new file mode 100644
index 000000000000..b6ccfdd921db
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/default.nix
@@ -0,0 +1,104 @@
+{ stdenv, lib, fetchurl, fetchzip, python3Packages
+, makeWrapper, wrapGAppsHook, qtbase, glib-networking
+, asciidoc, docbook_xml_dtd_45, docbook_xsl, libxml2
+, libxslt, gst_all_1 ? null
+, withPdfReader        ? true
+, withMediaPlayback    ? true
+}:
+
+assert withMediaPlayback -> gst_all_1 != null;
+
+let
+  pdfjs = let
+    version = "1.10.100";
+  in
+  fetchzip rec {
+    name = "pdfjs-${version}";
+    url = "https://github.com/mozilla/pdf.js/releases/download/v${version}/${name}-dist.zip";
+    sha256 = "04df4cf6i6chnggfjn6m1z9vb89f01a0l9fj5rk21yr9iirq9rkq";
+    stripRoot = false;
+  };
+
+in python3Packages.buildPythonApplication rec {
+  pname = "qutebrowser";
+  version = "1.6.1";
+
+  # the release tarballs are different from the git checkout!
+  src = fetchurl {
+    url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${pname}-${version}.tar.gz";
+    sha256 = "1sckfp9l2jgg29p2p4vmd0g7yzbldimqy0a0jvf488yp47qj310p";
+  };
+
+  # Needs tox
+  doCheck = false;
+
+  buildInputs = [
+    qtbase
+    glib-networking
+  ] ++ lib.optionals withMediaPlayback (with gst_all_1; [
+    gst-plugins-base gst-plugins-good
+    gst-plugins-bad gst-plugins-ugly gst-libav
+  ]);
+
+  nativeBuildInputs = [
+    makeWrapper wrapGAppsHook asciidoc
+    docbook_xml_dtd_45 docbook_xsl libxml2 libxslt
+  ];
+
+  propagatedBuildInputs = with python3Packages; [
+    pyyaml pyqt5 jinja2 pygments
+    pypeg2 cssutils pyopengl attrs
+    # scripts and userscripts libs
+    tldextract beautifulsoup4
+    pyreadability pykeepass stem
+  ];
+
+  patches = [
+    ./fix-restart.patch
+  ];
+
+  postPatch = ''
+    substituteInPlace qutebrowser/app.py --subst-var-by qutebrowser "$out/bin/qutebrowser"
+
+    sed -i "s,/usr/share/,$out/share/,g" qutebrowser/utils/standarddir.py
+  '' + lib.optionalString withPdfReader ''
+    sed -i "s,/usr/share/pdf.js,${pdfjs},g" qutebrowser/browser/pdfjs.py
+  '';
+
+  postBuild = ''
+    a2x -f manpage doc/qutebrowser.1.asciidoc
+  '';
+
+  postInstall = ''
+    install -Dm644 doc/qutebrowser.1 "$out/share/man/man1/qutebrowser.1"
+    install -Dm644 misc/qutebrowser.desktop \
+        "$out/share/applications/qutebrowser.desktop"
+
+    # Install icons
+    for i in 16 24 32 48 64 128 256 512; do
+        install -Dm644 "icons/qutebrowser-''${i}x''${i}.png" \
+            "$out/share/icons/hicolor/''${i}x''${i}/apps/qutebrowser.png"
+    done
+    install -Dm644 icons/qutebrowser.svg \
+        "$out/share/icons/hicolor/scalable/apps/qutebrowser.svg"
+
+    # Install scripts
+    sed -i "s,/usr/bin/,$out/bin/,g" scripts/open_url_in_instance.sh
+    install -Dm755 -t "$out/share/qutebrowser/scripts/" $(find scripts -type f)
+    install -Dm755 -t "$out/share/qutebrowser/userscripts/" misc/userscripts/*
+
+    # Patch python scripts
+    buildPythonPath "$out $propagatedBuildInputs"
+    scripts=$(grep -rl python "$out"/share/qutebrowser/{user,}scripts/)
+    for i in $scripts; do
+      patchPythonScript "$i"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage    = https://github.com/The-Compiler/qutebrowser;
+    description = "Keyboard-focused browser with a minimal GUI";
+    license     = licenses.gpl3Plus;
+    maintainers = with maintainers; [ jagajaga rnhmjoj ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch b/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch
new file mode 100644
index 000000000000..56f6bcebf280
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/qutebrowser/fix-restart.patch
@@ -0,0 +1,29 @@
+diff --git a/qutebrowser/app.py b/qutebrowser/app.py
+index 2b6896b76..ee05f379d 100644
+--- a/qutebrowser/app.py
++++ b/qutebrowser/app.py
+@@ -555,22 +555,8 @@ class Quitter:
+                 args: The commandline as a list of strings.
+                 cwd: The current working directory as a string.
+         """
+-        if os.path.basename(sys.argv[0]) == 'qutebrowser':
+-            # Launched via launcher script
+-            args = [sys.argv[0]]
+-            cwd = None
+-        elif hasattr(sys, 'frozen'):
+-            args = [sys.executable]
+-            cwd = os.path.abspath(os.path.dirname(sys.executable))
+-        else:
+-            args = [sys.executable, '-m', 'qutebrowser']
+-            cwd = os.path.join(
+-                os.path.abspath(os.path.dirname(qutebrowser.__file__)), '..')
+-            if not os.path.isdir(cwd):
+-                # Probably running from a python egg. Let's fallback to
+-                # cwd=None and see if that works out.
+-                # See https://github.com/qutebrowser/qutebrowser/issues/323
+-                cwd = None
++        args = ['@qutebrowser@']
++        cwd = None
+ 
+         # Add all open pages so they get reopened.
+         page_args = []
diff --git a/nixpkgs/pkgs/applications/networking/browsers/surf/default.nix b/nixpkgs/pkgs/applications/networking/browsers/surf/default.nix
new file mode 100644
index 000000000000..3a7612bb0fbc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/surf/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl
+, pkgconfig, wrapGAppsHook
+, glib, glib-networking, gsettings-desktop-schemas, gtk, libsoup, webkitgtk
+, patches ? null
+}:
+
+stdenv.mkDerivation rec {
+  name = "surf-${version}";
+  version = "2.0";
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/surf/surf-${version}.tar.gz";
+    sha256 = "07cmajyafljigy10d21kkyvv5jf3hxkx06pz3rwwk3y3c9x4rvps";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
+  buildInputs = [ glib glib-networking gsettings-desktop-schemas gtk libsoup webkitgtk ];
+
+  inherit patches;
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    description = "A simple web browser based on WebKit/GTK+";
+    longDescription = ''
+      Surf is a simple web browser based on WebKit/GTK+. It is able to display
+      websites and follow links. It supports the XEmbed protocol which makes it
+      possible to embed it in another application. Furthermore, one can point
+      surf to another URI by setting its XProperties.
+    '';
+    homepage = https://surf.suckless.org;
+    license = licenses.mit;
+    platforms = webkitgtk.meta.platforms;
+    maintainers = with maintainers; [ joachifm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix b/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
new file mode 100644
index 000000000000..283c63dcd6fc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
@@ -0,0 +1,399 @@
+{ stdenv
+, fetchurl
+, makeDesktopItem
+
+# Common run-time dependencies
+, zlib
+
+# libxul run-time dependencies
+, atk
+, cairo
+, dbus
+, dbus-glib
+, fontconfig
+, freetype
+, gdk_pixbuf
+, glib
+, gtk3
+, libxcb
+, libX11
+, libXext
+, libXrender
+, libXt
+, pango
+
+, audioSupport ? mediaSupport
+, pulseaudioSupport ? false
+, libpulseaudio
+, apulse
+
+# Media support (implies audio support)
+, mediaSupport ? false
+, ffmpeg
+
+, gmp
+
+# Pluggable transport dependencies
+, python27
+
+# Wrapper runtime
+, coreutils
+, glibcLocales
+, gnome3
+, runtimeShell
+, shared-mime-info
+, gsettings-desktop-schemas
+
+# Whether to disable multiprocess support to work around crashing tabs
+# TODO: fix the underlying problem instead of this terrible work-around
+, disableContentSandbox ? true
+
+# Extra preferences
+, extraPrefs ? ""
+
+# For meta
+, tor-browser-bundle
+}:
+
+with stdenv.lib;
+
+let
+  libPath = makeLibraryPath libPkgs;
+
+  libPkgs = [
+    atk
+    cairo
+    dbus
+    dbus-glib
+    fontconfig
+    freetype
+    gdk_pixbuf
+    glib
+    gtk3
+    libxcb
+    libX11
+    libXext
+    libXrender
+    libXt
+    pango
+    stdenv.cc.cc
+    stdenv.cc.libc
+    zlib
+  ]
+  ++ optionals pulseaudioSupport [ libpulseaudio ]
+  ++ optionals mediaSupport [
+    ffmpeg
+  ];
+
+  # Library search path for the fte transport
+  fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ];
+
+  # Upstream source
+  version = "8.0.8";
+
+  lang = "en-US";
+
+  srcs = {
+    "x86_64-linux" = fetchurl {
+      urls = [
+        "https://github.com/TheTorProject/gettorbrowser/releases/download/v${version}/tor-browser-linux64-${version}_${lang}.tar.xz"
+        "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz"
+      ];
+      sha256 = "14ckbhfiyv01cxnd98iihfz7xvrgcd5k4j7pn9ag4a6xb2l80sxi";
+    };
+
+    "i686-linux" = fetchurl {
+      urls = [
+        "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz"
+        "https://github.com/TheTorProject/gettorbrowser/releases/download/v${version}/tor-browser-linux32-${version}_${lang}.tar.xz"
+      ];
+      sha256 = "0g9sd104b6xnbl2j3gbq1ga6j2h0x3jccays0gpbd235bxpjs39a";
+    };
+  };
+in
+
+stdenv.mkDerivation rec {
+  name = "tor-browser-bundle-bin-${version}";
+  inherit version;
+
+  src = srcs."${stdenv.hostPlatform.system}" or (throw "unsupported system: ${stdenv.hostPlatform.system}");
+
+  preferLocalBuild = true;
+  allowSubstitutes = false;
+
+  desktopItem = makeDesktopItem {
+    name = "torbrowser";
+    exec = "tor-browser";
+    icon = "torbrowser";
+    desktopName = "Tor Browser";
+    genericName = "Web Browser";
+    comment = meta.description;
+    categories = "Network;WebBrowser;Security;";
+  };
+
+  buildCommand = ''
+    # For convenience ...
+    TBB_IN_STORE=$out/share/tor-browser
+    interp=$(< $NIX_CC/nix-support/dynamic-linker)
+
+    # Unpack & enter
+    mkdir -p "$TBB_IN_STORE"
+    tar xf "${src}" -C "$TBB_IN_STORE" --strip-components=2
+    pushd "$TBB_IN_STORE"
+
+    # Set ELF interpreter
+    for exe in firefox.real TorBrowser/Tor/tor ; do
+      echo "Setting ELF interpreter on $exe ..." >&2
+      patchelf --set-interpreter "$interp" "$exe"
+    done
+
+    # firefox is a wrapper that checks for a more recent libstdc++ & appends it to the ld path
+    mv firefox.real firefox
+
+    # The final libPath.  Note, we could split this into firefoxLibPath
+    # and torLibPath for accuracy, but this is more convenient ...
+    libPath=${libPath}:$TBB_IN_STORE:$TBB_IN_STORE/TorBrowser/Tor
+
+    # apulse uses a non-standard library path.  For now special-case it.
+    ${optionalString (audioSupport && !pulseaudioSupport) ''
+      libPath=${apulse}/lib/apulse:$libPath
+    ''}
+
+    # Fixup paths to pluggable transports.
+    sed -i TorBrowser/Data/Tor/torrc-defaults \
+        -e "s,./TorBrowser,$TBB_IN_STORE/TorBrowser,g"
+
+    # Fixup obfs transport.  Work around patchelf failing to set
+    # interpreter for pre-compiled Go binaries by invoking the interpreter
+    # directly.
+    sed -i TorBrowser/Data/Tor/torrc-defaults \
+        -e "s|\(ClientTransportPlugin obfs2,obfs3,obfs4,scramblesuit\) exec|\1 exec $interp|" \
+
+    # Fixup fte transport
+    #
+    # Note: the script adds its dirname to search path automatically
+    sed -i TorBrowser/Tor/PluggableTransports/fteproxy.bin \
+        -e "s,/usr/bin/env python,${python27.interpreter},"
+
+    patchelf --set-rpath "${fteLibPath}" TorBrowser/Tor/PluggableTransports/fte/cDFA.so
+
+    # Prepare for autoconfig.
+    #
+    # See https://developer.mozilla.org/en-US/Firefox/Enterprise_deployment
+    cat >defaults/pref/autoconfig.js <<EOF
+    //
+    pref("general.config.filename", "mozilla.cfg");
+    pref("general.config.obscure_value", 0);
+    EOF
+
+    # Hard-coded Firefox preferences.
+    cat >mozilla.cfg <<EOF
+    // First line must be a comment
+
+    // Always update via Nixpkgs
+    lockPref("app.update.auto", false);
+    lockPref("app.update.enabled", false);
+    lockPref("extensions.update.autoUpdateDefault", false);
+    lockPref("extensions.update.enabled", false);
+    lockPref("extensions.torbutton.versioncheck_enabled", false);
+
+    // User should never change these.  Locking prevents these
+    // values from being written to prefs.js, avoiding Store
+    // path capture.
+    lockPref("extensions.torlauncher.torrc-defaults_path", "$TBB_IN_STORE/TorBrowser/Data/Tor/torrc-defaults");
+    lockPref("extensions.torlauncher.tor_path", "$TBB_IN_STORE/TorBrowser/Tor/tor");
+
+    // Reset pref that captures store paths.
+    clearPref("extensions.xpiState");
+
+    // Stop obnoxious first-run redirection.
+    lockPref("noscript.firstRunRedirection", false);
+
+    // Insist on using IPC for communicating with Tor
+    //
+    // Defaults to creating \$TBB_HOME/TorBrowser/Data/Tor/{socks,control}.socket
+    lockPref("extensions.torlauncher.control_port_use_ipc", true);
+    lockPref("extensions.torlauncher.socks_port_use_ipc", true);
+
+    // Optionally disable multiprocess support.  We always set this to ensure that
+    // toggling the pref takes effect.
+    lockPref("browser.tabs.remote.autostart.2", ${if disableContentSandbox then "false" else "true"});
+
+    // Allow sandbox access to sound devices if using ALSA directly
+    ${if (audioSupport && !pulseaudioSupport) then ''
+      pref("security.sandbox.content.write_path_whitelist", "/dev/snd/");
+    '' else ''
+      clearPref("security.sandbox.content.write_path_whitelist");
+    ''}
+
+    ${optionalString (extraPrefs != "") ''
+      ${extraPrefs}
+    ''}
+    EOF
+
+    # Hard-code path to TBB fonts; see also FONTCONFIG_FILE in
+    # the wrapper below.
+    FONTCONFIG_FILE=$TBB_IN_STORE/TorBrowser/Data/fontconfig/fonts.conf
+    sed -i "$FONTCONFIG_FILE" \
+        -e "s,<dir>fonts</dir>,<dir>$TBB_IN_STORE/fonts</dir>,"
+
+    # Preload extensions by moving into the runtime instead of storing under the
+    # user's profile directory.
+    mv "$TBB_IN_STORE/TorBrowser/Data/Browser/profile.default/extensions/"* \
+      "$TBB_IN_STORE/browser/extensions"
+
+    # Hard-code paths to geoip data files.  TBB resolves the geoip files
+    # relative to torrc-defaults_path but if we do not hard-code them
+    # here, these paths end up being written to the torrc in the user's
+    # state dir.
+    cat >>TorBrowser/Data/Tor/torrc-defaults <<EOF
+    GeoIPFile $TBB_IN_STORE/TorBrowser/Data/Tor/geoip
+    GeoIPv6File $TBB_IN_STORE/TorBrowser/Data/Tor/geoip6
+    EOF
+
+    WRAPPER_XDG_DATA_DIRS=${concatMapStringsSep ":" (x: "${x}/share") [
+      gnome3.adwaita-icon-theme
+      shared-mime-info
+    ]}
+    WRAPPER_XDG_DATA_DIRS+=":"${concatMapStringsSep ":" (x: "${x}/share/gsettings-schemas/${x.name}") [
+      glib
+      gsettings-desktop-schemas
+      gtk3
+    ]};
+
+    # Generate wrapper
+    mkdir -p $out/bin
+    cat > "$out/bin/tor-browser" << EOF
+    #! ${runtimeShell}
+    set -o errexit -o nounset
+
+    PATH=${makeBinPath [ coreutils ]}
+    export LC_ALL=C
+    export LOCALE_ARCHIVE=${glibcLocales}/lib/locale/locale-archive
+
+    # Enter local state directory.
+    REAL_HOME=\$HOME
+    TBB_HOME=\''${TBB_HOME:-''${XDG_DATA_HOME:-\$REAL_HOME/.local/share}/tor-browser}
+    HOME=\$TBB_HOME
+
+    mkdir -p "\$HOME"
+    cd "\$HOME"
+
+    # Initialize empty TBB local state directory hierarchy.  We
+    # intentionally mirror the layout that TBB would see if executed from
+    # the unpacked bundle dir.
+    mkdir -p "\$HOME/TorBrowser" "\$HOME/TorBrowser/Data"
+
+    # Initialize the Tor data directory.
+    mkdir -p "\$HOME/TorBrowser/Data/Tor"
+
+    # TBB will fail if ownership is too permissive
+    chmod 0700 "\$HOME/TorBrowser/Data/Tor"
+
+    # Initialize the browser profile state.  Note that the only data
+    # copied from the Store payload is the initial bookmark file, which is
+    # never updated once created.  All other files under user's profile
+    # dir are generated by TBB.
+    mkdir -p "\$HOME/TorBrowser/Data/Browser/profile.default"
+    cp -u --no-preserve=mode,owner "$TBB_IN_STORE/TorBrowser/Data/Browser/profile.default/bookmarks.html" \
+      "\$HOME/TorBrowser/Data/Browser/profile.default/bookmarks.html"
+
+    # Clear out some files that tend to capture store references but are
+    # easily generated by firefox at startup.
+    rm -f "\$HOME/TorBrowser/Data/Browser/profile.default"/{compatibility.ini,extensions.ini,extensions.json}
+
+    ${optionalString pulseaudioSupport ''
+      # Figure out some envvars for pulseaudio
+      : "\''${XDG_RUNTIME_DIR:=/run/user/\$(id -u)}"
+      : "\''${XDG_CONFIG_HOME:=\$REAL_HOME/.config}"
+      : "\''${PULSE_SERVER:=\$XDG_RUNTIME_DIR/pulse/native}"
+      : "\''${PULSE_COOKIE:=\$XDG_CONFIG_HOME/pulse/cookie}"
+    ''}
+
+    # Font cache files capture store paths; clear them out on the off
+    # chance that TBB would continue using old font files.
+    rm -rf "\$HOME/.cache/fontconfig"
+
+    # Lift-off
+    #
+    # XAUTHORITY and DISPLAY are required for TBB to work at all.
+    #
+    # DBUS_SESSION_BUS_ADDRESS is inherited to avoid auto-launch; to
+    # prevent that, set it to an empty/invalid value prior to running
+    # tor-browser.
+    #
+    # PULSE_SERVER is necessary for audio playback.
+    #
+    # Setting FONTCONFIG_FILE is required to make fontconfig read the TBB
+    # fonts.conf; upstream uses FONTCONFIG_PATH, but FC_DEBUG=1024
+    # indicates the system fonts.conf being used instead.
+    #
+    # XDG_DATA_DIRS is set to prevent searching system dirs (looking for .desktop & icons)
+    exec env -i \
+      TZ=":" \
+      TZDIR="\''${TZDIR:-}" \
+      LOCALE_ARCHIVE="\$LOCALE_ARCHIVE" \
+      \
+      TMPDIR="\''${TMPDIR:-/tmp}" \
+      HOME="\$HOME" \
+      XAUTHORITY="\''${XAUTHORITY:-}" \
+      DISPLAY="\$DISPLAY" \
+      DBUS_SESSION_BUS_ADDRESS="\$DBUS_SESSION_BUS_ADDRESS" \
+      \
+      XDG_DATA_HOME="\$HOME/.local/share" \
+      XDG_DATA_DIRS="$WRAPPER_XDG_DATA_DIRS" \
+      \
+      PULSE_SERVER="\''${PULSE_SERVER:-}" \
+      PULSE_COOKIE="\''${PULSE_COOKIE:-}" \
+      \
+      APULSE_PLAYBACK_DEVICE="\''${APULSE_PLAYBACK_DEVICE:-plug:dmix}" \
+      \
+      TOR_SKIP_LAUNCH="\''${TOR_SKIP_LAUNCH:-}" \
+      TOR_CONTROL_PORT="\''${TOR_CONTROL_PORT:-}" \
+      TOR_SOCKS_PORT="\''${TOR_SOCKS_PORT:-}" \
+      \
+      FONTCONFIG_FILE="$FONTCONFIG_FILE" \
+      \
+      LD_LIBRARY_PATH="$libPath" \
+      \
+      "$TBB_IN_STORE/firefox" \
+        --class "Tor Browser" \
+        -no-remote \
+        -profile "\$HOME/TorBrowser/Data/Browser/profile.default" \
+        "\''${@}"
+    EOF
+    chmod +x $out/bin/tor-browser
+
+    # Easier access to docs
+    mkdir -p $out/share/doc
+    ln -s $TBB_IN_STORE/TorBrowser/Docs $out/share/doc/tor-browser
+
+    # Install .desktop item
+    mkdir -p $out/share/applications
+    cp $desktopItem/share/applications"/"* $out/share/applications
+    sed -i $out/share/applications/torbrowser.desktop \
+        -e "s,Exec=.*,Exec=$out/bin/tor-browser," \
+        -e "s,Icon=.*,Icon=web-browser,"
+
+    # Check installed apps
+    echo "Checking bundled Tor ..."
+    LD_LIBRARY_PATH=$libPath $TBB_IN_STORE/TorBrowser/Tor/tor --version >/dev/null
+
+    echo "Checking tor-browser wrapper ..."
+    DISPLAY="" XAUTHORITY="" DBUS_SESSION_BUS_ADDRESS="" TBB_HOME=$(mktemp -d) \
+      $out/bin/tor-browser --version >/dev/null
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tor Browser Bundle built by torproject.org";
+    longDescription = tor-browser-bundle.meta.longDescription;
+    homepage = https://www.torproject.org/;
+    platforms = attrNames srcs;
+    maintainers = with maintainers; [ offline matejc doublec thoughtpolice joachifm ];
+    hydraPlatforms = [];
+    # MPL2.0+, GPL+, &c.  While it's not entirely clear whether
+    # the compound is "libre" in a strict sense (some components place certain
+    # restrictions on redistribution), it's free enough for our purposes.
+    license = licenses.free;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/default.nix b/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/default.nix
new file mode 100644
index 000000000000..2c6940e037cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/default.nix
@@ -0,0 +1,347 @@
+{ stdenv
+, fetchgit
+, fetchurl
+, symlinkJoin
+
+, tor
+, tor-browser-unwrapped
+
+# Wrapper runtime
+, coreutils
+, hicolor-icon-theme
+, shared-mime-info
+, noto-fonts
+, noto-fonts-emoji
+
+# Audio support
+, audioSupport ? mediaSupport
+, apulse
+
+# Media support (implies audio support)
+, mediaSupport ? false
+, ffmpeg
+
+, gmp
+
+# Extensions, common
+, zip
+
+# HTTPS Everywhere
+, git
+, libxml2 # xmllint
+, python27
+, python27Packages
+, rsync
+
+# Pluggable transports
+, obfsproxy
+
+# Customization
+, extraPrefs ? ""
+, extraExtensions ? [ ]
+}:
+
+with stdenv.lib;
+
+let
+  tor-browser-build_src = fetchgit {
+    url = "https://git.torproject.org/builders/tor-browser-build.git";
+    rev = "refs/tags/tbb-7.5a5-build5";
+    sha256 = "0j37mqldj33fnzghxifvy6v8vdwkcz0i4z81prww64md5s8qcsa9";
+  };
+
+  firefoxExtensions = import ./extensions.nix {
+    inherit stdenv fetchurl fetchgit zip
+      git libxml2 python27 python27Packages rsync;
+  };
+
+  bundledExtensions = with firefoxExtensions; [
+    https-everywhere
+    noscript
+    torbutton
+    tor-launcher
+  ] ++ extraExtensions;
+
+  fontsEnv = symlinkJoin {
+    name = "tor-browser-fonts";
+    paths = [ noto-fonts noto-fonts-emoji ];
+  };
+
+  fontsDir = "${fontsEnv}/share/fonts";
+
+  mediaLibPath = makeLibraryPath [
+    ffmpeg
+  ];
+in
+stdenv.mkDerivation rec {
+  name = "tor-browser-bundle-${version}";
+  version = tor-browser-unwrapped.version;
+
+  buildInputs = [ tor-browser-unwrapped tor ];
+
+  unpackPhase = ":";
+
+  buildPhase = ":";
+
+  # The following creates a customized firefox distribution.  For
+  # simplicity, we copy the entire base firefox runtime, to work around
+  # firefox's annoying insistence on resolving the installation directory
+  # relative to the real firefox executable.  A little tacky and
+  # inefficient but it works.
+  installPhase = ''
+    TBBUILD=${tor-browser-build_src}/projects/tor-browser
+    TBDATA_PATH=TorBrowser-Data
+
+    self=$out/lib/tor-browser
+    mkdir -p $self && cd $self
+
+    TBDATA_IN_STORE=$self/$TBDATA_PATH
+
+    cp -dR ${tor-browser-unwrapped}/lib"/"*"/"* .
+    chmod -R +w .
+
+    # Prepare for autoconfig
+    cat >defaults/pref/autoconfig.js <<EOF
+    pref("general.config.filename", "mozilla.cfg");
+    pref("general.config.obscure_value", 0);
+    EOF
+
+    # Hardcoded configuration
+    cat >mozilla.cfg <<EOF
+    // First line must be a comment
+
+    // Always update via Nixpkgs
+    lockPref("app.update.auto", false);
+    lockPref("app.update.enabled", false);
+    lockPref("extensions.update.autoUpdateDefault", false);
+    lockPref("extensions.update.enabled", false);
+    lockPref("extensions.torbutton.updateNeeded", false);
+    lockPref("extensions.torbutton.versioncheck_enabled", false);
+
+    // Where to find the Nixpkgs tor executable & config
+    lockPref("extensions.torlauncher.tor_path", "${tor}/bin/tor");
+    lockPref("extensions.torlauncher.torrc-defaults_path", "$TBDATA_IN_STORE/torrc-defaults");
+
+    // Captures store paths
+    clearPref("extensions.xpiState");
+    clearPref("extensions.bootstrappedAddons");
+
+    // Insist on using IPC for communicating with Tor
+    lockPref("extensions.torlauncher.control_port_use_ipc", true);
+    lockPref("extensions.torlauncher.socks_port_use_ipc", true);
+
+    // Allow sandbox access to sound devices if using ALSA directly
+    ${if audioSupport then ''
+      pref("security.sandbox.content.write_path_whitelist", "/dev/snd/");
+    '' else ''
+      clearPref("security.sandbox.content.write_path_whitelist");
+    ''}
+
+    // User customization
+    ${extraPrefs}
+    EOF
+
+    # Preload extensions
+    find ${toString bundledExtensions} -name '*.xpi' -exec ln -s -t browser/extensions '{}' '+'
+
+    # Copy bundle data
+    bundlePlatform=linux
+    bundleData=$TBBUILD/Bundle-Data
+
+    mkdir -p $TBDATA_PATH
+    cat \
+      $bundleData/$bundlePlatform/Data/Tor/torrc-defaults \
+      >> $TBDATA_PATH/torrc-defaults
+    cat \
+      $bundleData/$bundlePlatform/Data/Browser/profile.default/preferences/extension-overrides.js \
+      $bundleData/PTConfigs/bridge_prefs.js \
+      >> defaults/pref/extension-overrides.js
+
+    # Configure geoip
+    #
+    # tor-launcher insists on resolving geoip data relative to torrc-defaults
+    # (and passes them directly on the tor command-line).
+    #
+    # Write the paths into torrc-defaults anyway, otherwise they'll be
+    # captured in the runtime torrc.
+    ln -s -t $TBDATA_PATH ${tor.geoip}/share/tor/geoip{,6}
+    cat >>$TBDATA_PATH/torrc-defaults <<EOF
+    GeoIPFile $TBDATA_IN_STORE/geoip
+    GeoIPv6File $TBDATA_IN_STORE/geoip6
+    EOF
+
+    # Configure pluggable transports
+    cat >>$TBDATA_PATH/torrc-defaults <<EOF
+    ClientTransportPlugin obfs2,obfs3 exec ${obfsproxy}/bin/obfsproxy managed
+    EOF
+
+    # Hard-code path to TBB fonts; xref: FONTCONFIG_FILE in the wrapper below
+    sed $bundleData/$bundlePlatform/Data/fontconfig/fonts.conf \
+        -e "s,<dir>fonts</dir>,<dir>${fontsDir}</dir>," \
+        > $TBDATA_PATH/fonts.conf
+
+    # Generate a suitable wrapper
+    wrapper_PATH=${makeBinPath [ coreutils ]}
+    wrapper_XDG_DATA_DIRS=${concatMapStringsSep ":" (x: "${x}/share") [
+      hicolor-icon-theme
+      shared-mime-info
+    ]}
+
+    ${optionalString audioSupport ''
+      # apulse uses a non-standard library path ...
+      wrapper_LD_LIBRARY_PATH=${apulse}/lib/apulse''${wrapper_LD_LIBRARY_PATH:+:$wrapper_LD_LIBRARY_PATH}
+    ''}
+
+    ${optionalString mediaSupport ''
+      wrapper_LD_LIBRARY_PATH=${mediaLibPath}''${wrapper_LD_LIBRARY_PATH:+:$wrapper_LD_LIBRARY_PATH}
+    ''}
+
+    mkdir -p $out/bin
+    cat >$out/bin/tor-browser <<EOF
+    #! ${stdenv.shell} -eu
+
+    umask 077
+
+    PATH=$wrapper_PATH
+
+    readonly THE_HOME=\$HOME
+    TBB_HOME=\''${TBB_HOME:-\''${XDG_DATA_HOME:-\$HOME/.local/share}/tor-browser}
+    if [[ \''${TBB_HOME:0:1} != / ]] ; then
+      TBB_HOME=\$PWD/\$TBB_HOME
+    fi
+    readonly TBB_HOME
+
+    # Basic sanity check: never want to vomit directly onto user's homedir
+    if [[ "\$TBB_HOME" = "\$THE_HOME" ]] ; then
+      echo 'TBB_HOME=\$HOME; refusing to run' >&2
+      exit 1
+    fi
+
+    mkdir -p "\$TBB_HOME"
+
+    HOME=\$TBB_HOME
+    cd "\$HOME"
+
+    # Re-init XDG basedir envvars
+    XDG_CACHE_HOME=\$HOME/.cache
+    XDG_CONFIG_HOME=\$HOME/.config
+    XDG_DATA_HOME=\$HOME/.local/share
+
+    # Initialize empty TBB runtime state directory hierarchy.  Mirror the
+    # layout used by the official TBB, to avoid the hassle of working
+    # against the assumptions made by tor-launcher & co.
+    mkdir -p "\$HOME/TorBrowser" "\$HOME/TorBrowser/Data"
+
+    # Initialize the Tor data directory.
+    mkdir -p "\$HOME/TorBrowser/Data/Tor"
+
+    # TBB fails if ownership is too permissive
+    chmod 0700 "\$HOME/TorBrowser/Data/Tor"
+
+    # Initialize the browser profile state.  Expect TBB to generate all data.
+    mkdir -p "\$HOME/TorBrowser/Data/Browser/profile.default"
+
+    # Files that capture store paths; re-generated by firefox at startup
+    rm -rf "\$HOME/TorBrowser/Data/Browser/profile.default"/{compatibility.ini,extensions.ini,extensions.json,startupCache}
+
+    # Clear out fontconfig caches
+    rm -f "\$HOME/.cache/fontconfig/"*.cache-*
+
+    # Lift-off!
+    #
+    # TZ is set to avoid stat()ing /etc/localtime over and over ...
+    #
+    # DBUS_SESSION_BUS_ADDRESS is inherited to avoid auto-launching a new
+    # dbus instance; to prevent using the session bus, set the envvar to
+    # an empty/invalid value prior to running tor-browser.
+    #
+    # FONTCONFIG_FILE is required to make fontconfig read the TBB
+    # fonts.conf; upstream uses FONTCONFIG_PATH, but FC_DEBUG=1024
+    # indicates the system fonts.conf being used instead.
+    #
+    # HOME, TMPDIR, XDG_*_HOME are set as a form of soft confinement;
+    # ideally, tor-browser should not write to any path outside TBB_HOME
+    # and should run even under strict confinement to TBB_HOME.
+    #
+    # XDG_DATA_DIRS is set to prevent searching system directories for
+    # mime and icon data.
+    #
+    # PULSE_{SERVER,COOKIE} is necessary for audio playback w/pulseaudio
+    #
+    # APULSE_PLAYBACK_DEVICE is for audio playback w/o pulseaudio (no capture yet)
+    #
+    # TOR_* is for using an external tor instance
+    #
+    # Parameters lacking a default value below are *required* (enforced by
+    # -o nounset).
+    exec env -i \
+      LD_LIBRARY_PATH=$wrapper_LD_LIBRARY_PATH \
+      \
+      TZ=":" \
+      \
+      DISPLAY="\$DISPLAY" \
+      XAUTHORITY="\$XAUTHORITY" \
+      DBUS_SESSION_BUS_ADDRESS="\$DBUS_SESSION_BUS_ADDRESS" \
+      \
+      HOME="\$HOME" \
+      TMPDIR="\$XDG_CACHE_HOME/tmp" \
+      XDG_CONFIG_HOME="\$XDG_CONFIG_HOME" \
+      XDG_DATA_HOME="\$XDG_DATA_HOME" \
+      XDG_CACHE_HOME="\$XDG_CACHE_HOME" \
+      XDG_RUNTIME_DIR="\$HOME/run" \
+      \
+      XDG_DATA_DIRS="$wrapper_XDG_DATA_DIRS" \
+      \
+      FONTCONFIG_FILE="$TBDATA_IN_STORE/fonts.conf" \
+      \
+      APULSE_PLAYBACK_DEVICE="\''${APULSE_PLAYBACK_DEVICE:-plug:dmix}" \
+      \
+      TOR_SKIP_LAUNCH="\''${TOR_SKIP_LAUNCH:-}" \
+      TOR_CONTROL_PORT="\''${TOR_CONTROL_PORT:-}" \
+      TOR_SOCKS_PORT="\''${TOR_SOCKS_PORT:-}" \
+      \
+      $self/firefox \
+        -no-remote \
+        -profile "\$HOME/TorBrowser/Data/Browser/profile.default" \
+        "\$@"
+    EOF
+    chmod +x $out/bin/tor-browser
+
+    echo "Syntax checking wrapper ..."
+    bash -n $out/bin/tor-browser
+
+    echo "Checking wrapper ..."
+    DISPLAY="" XAUTHORITY="" DBUS_SESSION_BUS_ADDRESS="" TBB_HOME=$(mktemp -d) \
+    $out/bin/tor-browser -version >/dev/null
+  '';
+
+  passthru.execdir = "/bin";
+  meta = with stdenv.lib; {
+    description = "An unofficial version of the Tor Browser Bundle, built from source";
+    longDescription = ''
+      Tor Browser Bundle is a bundle of the Tor daemon, Tor Browser (heavily patched version of
+      Firefox), several essential extensions for Tor Browser, and some tools that glue those
+      together with a convenient UI.
+
+      `tor-browser-bundle-bin` package is the official version built by torproject.org patched with
+      `patchelf` to work under nix and with bundled scripts adapted to the read-only nature of
+      the `/nix/store`.
+
+      `tor-browser-bundle` package is the version built completely from source. It reuses the `tor`
+      package for the tor daemon, `firefoxPackages.tor-browser` package for the tor-browser, and
+      builds all the extensions from source.
+
+      Note that `tor-browser-bundle` package is not only built from source, but also bundles Tor
+      Browser differently from the official `tor-browser-bundle-bin` implementation. The official
+      Tor Browser is not a normal UNIX program and is heavily patched for its use in the Tor Browser
+      Bundle (which `tor-browser-bundle-bin` package then has to work around for the read-only
+      /nix/store). Meanwhile, `firefoxPackages.tor-browser` reverts all those patches, allowing
+      `firefoxPackages.tor-browser` to be used independently of the bundle, and then implements what
+      `tor-browser-bundle` needs for the bundling using a much simpler patch. See the
+      longDescription and expression of the `firefoxPackages.tor-browser` package for more info.
+    '';
+    inherit (tor-browser-unwrapped.meta) homepage platforms license;
+    hydraPlatforms = [ ];
+    maintainers = with maintainers; [ joachifm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/extensions.nix b/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/extensions.nix
new file mode 100644
index 000000000000..86c2f53b9add
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/tor-browser-bundle/extensions.nix
@@ -0,0 +1,111 @@
+{ stdenv
+, fetchgit
+, fetchurl
+
+# common
+, zip
+
+# HTTPS Everywhere
+, git
+, libxml2 # xmllint
+, python27
+, python27Packages
+, rsync
+}:
+
+{
+  https-everywhere = stdenv.mkDerivation rec {
+    name = "https-everywhere-${version}";
+    version = "2017.10.4";
+
+    extid = "https-everywhere-eff@eff.org";
+
+    src = fetchgit {
+      url = "https://git.torproject.org/https-everywhere.git";
+      rev = "refs/tags/${version}";
+      sha256 = "1g7971xygnhagnb25xjdf6mli6091ai9igx42d0ww88g8i0cqfzj";
+      fetchSubmodules = true; # for translations, TODO: remove
+    };
+
+    nativeBuildInputs = [
+      git
+      libxml2 # xmllint
+      python27
+      python27Packages.lxml
+      rsync
+      zip
+    ];
+
+    buildPhase = ''
+      $shell ./makexpi.sh ${version} --no-recurse
+    '';
+
+    installPhase = ''
+      install -m 444 -D pkg/https-everywhere-$version-eff.xpi "$out/$extid.xpi"
+    '';
+  };
+
+  noscript = stdenv.mkDerivation rec {
+    name = "noscript-${version}";
+    version = "5.1.2";
+
+    extid = "{73a6fe31-595d-460b-a920-fcc0f8843232}";
+
+    src = fetchurl {
+      url = "https://secure.informaction.com/download/releases/noscript-${version}.xpi";
+      sha256 = "1fzspdiwhjabwz1yxb3gzj7giz9jbc1xxm65i93rvhzcp537cs42";
+    };
+
+    unpackPhase = ":";
+
+    installPhase = ''
+      install -m 444 -D $src "$out/$extid.xpi"
+    '';
+  };
+
+  torbutton = stdenv.mkDerivation rec {
+    name = "torbutton-${version}";
+    version = "1.9.8.1";
+
+    extid = "torbutton@torproject.org";
+
+    src = fetchgit {
+      url = "https://git.torproject.org/torbutton.git";
+      rev = "refs/tags/${version}";
+      sha256 = "1amp0c9ky0a7fsa0bcbi6n6ginw7s2g3an4rj7kvc1lxmrcsm65l";
+    };
+
+    nativeBuildInputs = [ zip ];
+
+    buildPhase = ''
+      $shell ./makexpi.sh
+    '';
+
+    installPhase = ''
+      install -m 444 -D pkg/torbutton-$version.xpi "$out/$extid.xpi"
+    '';
+  };
+
+  tor-launcher = stdenv.mkDerivation rec {
+    name = "tor-launcher-${version}";
+    version = "0.2.13";
+
+    extid = "tor-launcher@torproject.org";
+
+    src = fetchgit {
+      url = "https://git.torproject.org/tor-launcher.git";
+      rev = "refs/tags/${version}";
+      sha256 = "1f98v88y2clwvjiw77kxqc9cacp5h0489a540nc2wmsx7vnskrq0";
+    };
+
+    nativeBuildInputs = [ zip ];
+
+    buildPhase = ''
+      make package
+    '';
+
+    installPhase = ''
+      install -m 444 -D pkg/tor-launcher-$version.xpi "$out/$extid.xpi"
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/uzbl/default.nix b/nixpkgs/pkgs/applications/networking/browsers/uzbl/default.nix
new file mode 100644
index 000000000000..1d08895f1b01
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/uzbl/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, pkgconfig, python3, makeWrapper
+, webkitgtk, glib-networking, gsettings-desktop-schemas, python2Packages
+}:
+# This package needs python3 during buildtime,
+# but Python 2 + packages during runtime.
+
+stdenv.mkDerivation rec {
+  name = "uzbl-${version}";
+  version = "0.9.0";
+
+  meta = with stdenv.lib; {
+    description = "Tiny externally controllable webkit browser";
+    homepage    = "http://uzbl.org/";
+    license     = licenses.gpl3;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ raskin dgonyeo ];
+  };
+
+  src = fetchurl {
+    name = "uzbl-v${version}.tar.gz";
+    url = "https://github.com/uzbl/uzbl/archive/v${version}.tar.gz";
+    sha256 = "0iskhv653fdm5raiidimh9fzlsw28zjqx7b5n3fl1wgbj6yz074k";
+  };
+
+  preConfigure = ''
+    makeFlags="$makeFlags PREFIX=$out"
+    makeFlags="$makeFlags PYINSTALL_EXTRA=--prefix=$out"
+    mkdir -p $out/${python3.sitePackages}/
+    export PYTHONPATH=$PYTHONPATH:$out/${python3.sitePackages}
+  '';
+
+  preFixup = ''
+    for f in $out/bin/*; do
+      wrapProgram $f \
+        --prefix GIO_EXTRA_MODULES : "${glib-networking.out}/lib/gio/modules" \
+        --prefix PYTHONPATH : "$PYTHONPATH" \
+        --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:$out/share"
+    done
+  '';
+
+  nativeBuildInputs = [ pkgconfig python3 makeWrapper ];
+
+  buildInputs = [ gsettings-desktop-schemas webkitgtk ];
+  propagatedBuildInputs = with python2Packages; [ pygtk six ];
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/vimb/default.nix b/nixpkgs/pkgs/applications/networking/browsers/vimb/default.nix
new file mode 100644
index 000000000000..cc9bc38bc4db
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/vimb/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, pkgconfig, libsoup, webkitgtk, gtk3, glib-networking
+, gsettings-desktop-schemas, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  name = "vimb-${version}";
+  version = "3.3.0";
+
+  src = fetchFromGitHub {
+    owner = "fanglingsu";
+    repo = "vimb";
+    rev = version;
+    sha256 = "1qg18z2gnsli9qgrqfhqfrsi6g9mcgr90w8yab28nxrq4aha6brf";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook pkgconfig ];
+  buildInputs = [ gtk3 libsoup webkitgtk glib-networking gsettings-desktop-schemas ];
+
+  makeFlags = [ "PREFIX=${placeholder "out"}" ];
+
+  meta = {
+    description = "A Vim-like browser";
+    longDescription = ''
+      A fast and lightweight vim like web browser based on the webkit web
+      browser engine and the GTK toolkit. Vimb is modal like the great vim
+      editor and also easily configurable during runtime. Vimb is mostly
+      keyboard driven and does not detract you from your daily work.
+    '';
+    homepage = https://fanglingsu.github.io/vimb/;
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.rickynils ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/vimprobable2/default.nix b/nixpkgs/pkgs/applications/networking/browsers/vimprobable2/default.nix
new file mode 100644
index 000000000000..678f226816a8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/vimprobable2/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, makeWrapper, glib-networking, gtk2, libsoup, libX11, perl,
+  pkgconfig, webkitgtk, gsettings-desktop-schemas }:
+
+stdenv.mkDerivation rec {
+  version = "1.4.2";
+  name = "vimprobable2-${version}";
+  src = fetchurl {
+    url = "mirror://sourceforge/vimprobable/vimprobable2_${version}.tar.bz2";
+    sha256 = "13jdximksh9r3cgd2f8vms0pbsn3x0gxvyqdqiw16xp5fmdx5kzr";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ makeWrapper gtk2 libsoup libX11 perl webkitgtk gsettings-desktop-schemas ];
+
+  hardeningDisable = [ "format" ];
+
+  installFlags = "PREFIX=/ DESTDIR=$(out)";
+
+  preFixup = ''
+    wrapProgram "$out/bin/vimprobable2" \
+      --prefix GIO_EXTRA_MODULES : "${glib-networking.out}/lib/gio/modules" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = {
+    description = ''
+      Vimprobable is a web browser that behaves like the Vimperator plugin
+      available for Mozilla Firefox
+    '';
+    longDescription = ''
+      Vimprobable is a web browser that behaves like the Vimperator plugin
+      available for Mozilla Firefox. It is based on the WebKit engine (using
+      GTK bindings). The goal of Vimprobable is to build a completely
+      keyboard-driven, efficient and pleasurable browsing-experience. Its
+      featureset might be considered "minimalistic", but not as minimalistic as
+      being completely featureless.
+    '';
+    homepage = https://sourceforge.net/apps/trac/vimprobable;
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.aforemny ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix
new file mode 100644
index 000000000000..9537f1365bd1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/default.nix
@@ -0,0 +1,86 @@
+{ stdenv, fetchurl, zlib, libX11, libXext, libSM, libICE
+, libXfixes, libXt, libXi, libXcursor, libXScrnSaver, libXcomposite, libXdamage, libXtst, libXrandr
+, alsaLib, dbus, cups, libexif, ffmpeg, systemd
+, freetype, fontconfig, libXft, libXrender, libxcb, expat
+, libuuid
+, gstreamer, gst-plugins-base, libxml2
+, glib, gtk3, pango, gdk_pixbuf, cairo, atk, at-spi2-atk, at-spi2-core, gnome2
+, nss, nspr
+, patchelf, makeWrapper
+, proprietaryCodecs ? false, vivaldi-ffmpeg-codecs ? null
+}:
+
+stdenv.mkDerivation rec {
+  name = "${product}-${version}";
+  product = "vivaldi";
+  version = "2.3.1440.60-1";
+
+  src = fetchurl {
+    url = "https://downloads.vivaldi.com/stable/${product}-stable_${version}_amd64.deb";
+    sha256 = "1vw4lyqs87cw7v1jy3dcsgnb56s61zl21q95a3kiavqw7412sips";
+  };
+
+  unpackPhase = ''
+    ar vx ${src}
+    tar -xvf data.tar.xz
+  '';
+
+  nativeBuildInputs = [ patchelf makeWrapper ];
+
+  buildInputs = [
+    stdenv.cc.cc stdenv.cc.libc zlib libX11 libXt libXext libSM libICE libxcb
+    libXi libXft libXcursor libXfixes libXScrnSaver libXcomposite libXdamage libXtst libXrandr
+    atk at-spi2-atk at-spi2-core alsaLib dbus cups gtk3 gdk_pixbuf libexif ffmpeg systemd
+    freetype fontconfig libXrender libuuid expat glib nss nspr
+    gstreamer libxml2 gst-plugins-base pango cairo gnome2.GConf
+  ] ++ stdenv.lib.optional proprietaryCodecs vivaldi-ffmpeg-codecs;
+
+  libPath = stdenv.lib.makeLibraryPath buildInputs
+    + stdenv.lib.optionalString (stdenv.is64bit)
+      (":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" buildInputs)
+    + ":$out/opt/vivaldi/lib";
+
+  buildPhase = ''
+    echo "Patching Vivaldi binaries"
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${libPath}" \
+      opt/vivaldi/vivaldi-bin
+  '' + stdenv.lib.optionalString proprietaryCodecs ''
+    sed -i '/^VIVALDI_FFMPEG_FOUND/ a \
+    checkffmpeg "${vivaldi-ffmpeg-codecs}/lib/libffmpeg.so"' opt/vivaldi/vivaldi
+  '' + ''
+    echo "Finished patching Vivaldi binaries"
+  '';
+
+  dontPatchELF = true;
+  dontStrip    = true;
+
+  installPhase = ''
+    mkdir -p "$out"
+    cp -r opt "$out"
+    mkdir "$out/bin"
+    ln -s "$out/opt/vivaldi/vivaldi" "$out/bin/vivaldi"
+    mkdir -p "$out/share"
+    cp -r usr/share/{applications,xfce4} "$out"/share
+    substituteInPlace "$out"/share/applications/*.desktop \
+      --replace /usr/bin/vivaldi-stable "$out"/bin/vivaldi
+    local d
+    for d in 16 22 24 32 48 64 128 256; do
+      mkdir -p "$out"/share/icons/hicolor/''${d}x''${d}/apps
+      ln -s \
+        "$out"/opt/vivaldi/product_logo_''${d}.png \
+        "$out"/share/icons/hicolor/''${d}x''${d}/apps/vivaldi.png
+    done
+    wrapProgram "$out/bin/vivaldi" \
+      --suffix XDG_DATA_DIRS : ${gtk3}/share/gsettings-schemas/${gtk3.name}/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Browser for our Friends, powerful and personal";
+    homepage    = "https://vivaldi.com";
+    license     = licenses.unfree;
+    maintainers = with maintainers; [ otwieracz nequissimus ];
+    platforms   = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix
new file mode 100644
index 000000000000..ec2646440b31
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/ffmpeg-codecs.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchurl
+, dbus-glib, gtk3, libexif, libXScrnSaver, ninja, nss
+, pciutils, pkgconfig, python2, xdg_utils, gn, at-spi2-core
+}:
+
+stdenv.mkDerivation rec {
+  name = "${product}-${version}";
+  product = "vivaldi-ffmpeg-codecs";
+  version = "72.0.3626.122";
+
+  src = fetchurl {
+    url = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${version}.tar.xz";
+    sha512 = "1477g5dgi4m0zbiqwm9w6jqkmjfmgjlbl3qs9ljldx8bif8my1jbz4hzws954aqxyxdbf5rjpvmrrqqppk5347prvsyl37rbsndaaqf";
+  };
+
+  buildInputs = [ ];
+
+  nativeBuildInputs = [
+    gtk3 libexif libXScrnSaver ninja nss pciutils python2 xdg_utils gn
+    pkgconfig dbus-glib at-spi2-core.dev
+  ];
+
+  patches = [
+  ];
+
+  configurePhase = ''
+    runHook preConfigure
+
+    local args="ffmpeg_branding=\"ChromeOS\" proprietary_codecs=true enable_hevc_demuxing=true use_gnome_keyring=false use_sysroot=false use_gold=false use_allocator=\"none\" linux_use_bundled_binutils=false fatal_linker_warnings=false treat_warnings_as_errors=false enable_nacl=false enable_nacl_nonsfi=false is_clang=false clang_use_chrome_plugins=false is_component_build=true is_debug=false symbol_level=0 use_custom_libcxx=false use_lld=false use_jumbo_build=false"
+    gn gen out/Release -v --args="$args"
+
+    runHook postConfigure
+  '';
+
+  buildPhase = ''
+    ninja -C out/Release -v libffmpeg.so
+  '';
+
+  dontStrip = true;
+
+  installPhase = ''
+    mkdir -p "$out/lib"
+    cp out/Release/libffmpeg.so "$out/lib/libffmpeg.so"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Additional support for proprietary codecs for Vivaldi";
+    homepage    = "https://ffmpeg.org/";
+    license     = licenses.lgpl21;
+    maintainers = with maintainers; [ lluchs ];
+    platforms   = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/vivaldi/update.sh b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/update.sh
new file mode 100755
index 000000000000..0b1787176399
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/vivaldi/update.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p libarchive curl common-updater-scripts
+
+set -eu -o pipefail
+
+cd "$(dirname "${BASH_SOURCE[0]}")"
+root=../../../../..
+export NIXPKGS_ALLOW_UNFREE=1
+
+version() {
+	(cd "$root" && nix-instantiate --eval --strict -A "$1.version" | tr -d '"')
+}
+
+vivaldi_version_old=$(version vivaldi)
+vivaldi_version=$(curl -sS https://vivaldi.com/download/ | sed -rne 's/.*vivaldi-stable_([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+-[0-9]+)_amd64\.deb.*/\1/p')
+
+if [[ "$vivaldi_version" = "$vivaldi_version_old" ]]; then
+	echo "nothing to do, vivaldi $vivaldi_version is current"
+	exit
+fi
+
+# Download vivaldi and save hash and file path.
+url="https://downloads.vivaldi.com/stable/vivaldi-stable_${vivaldi_version}_amd64.deb"
+mapfile -t prefetch < <(nix-prefetch-url --print-path "$url")
+hash=${prefetch[0]}
+path=${prefetch[1]}
+
+echo "vivaldi: $vivaldi_version_old -> $vivaldi_version"
+echo "$path"
+(cd "$root" && update-source-version vivaldi "$vivaldi_version" "$hash")
+
+# Check vivaldi-ffmpeg-codecs version.
+chromium_version_old=$(version vivaldi-ffmpeg-codecs)
+chromium_version=$(bsdtar xOf "$path" data.tar.xz | bsdtar xOf - ./opt/vivaldi/vivaldi-bin | strings | grep '^[0-9]\{2,\}\.[0-9]\+\.[0-9]\{4,\}\+\.[0-9]\+$')
+
+if [[ "$chromium_version" != "$chromium_version_old" ]]; then
+	echo "vivaldi-ffmpeg-codecs: $chromium_version_old -> $chromium_version"
+	(cd "$root" && update-source-version vivaldi-ffmpeg-codecs "$chromium_version")
+fi
diff --git a/nixpkgs/pkgs/applications/networking/browsers/w3m/RAND_egd.libressl.patch b/nixpkgs/pkgs/applications/networking/browsers/w3m/RAND_egd.libressl.patch
new file mode 100644
index 000000000000..49dd417d1c39
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/w3m/RAND_egd.libressl.patch
@@ -0,0 +1,11 @@
+--- a/url.c  2014-07-14 12:31:30.476563116 +0200
++++ b/url.c   2014-07-14 12:32:16.364918248 +0200
+@@ -268,7 +268,7 @@ init_PRNG()
+     if (RAND_status())
+ 	return;
+     if ((file = RAND_file_name(buffer, sizeof(buffer)))) {
+-#ifdef USE_EGD
++#if defined(USE_EGD) && defined(HAVE_SSL_RAND_EGD)
+ 	if (RAND_egd(file) > 0)
+ 	    return;
+ #endif
diff --git a/nixpkgs/pkgs/applications/networking/browsers/w3m/default.nix b/nixpkgs/pkgs/applications/networking/browsers/w3m/default.nix
new file mode 100644
index 000000000000..c1fa364a2d23
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/w3m/default.nix
@@ -0,0 +1,99 @@
+{ stdenv, fetchFromGitHub, fetchpatch
+, ncurses, boehmgc, gettext, zlib
+, sslSupport ? true, openssl ? null
+, graphicsSupport ? !stdenv.isDarwin, imlib2 ? null
+, x11Support ? graphicsSupport, libX11 ? null
+, mouseSupport ? !stdenv.isDarwin, gpm-ncurses ? null
+, perl, man, pkgconfig, buildPackages, w3m
+}:
+
+assert sslSupport -> openssl != null;
+assert graphicsSupport -> imlib2 != null;
+assert x11Support -> graphicsSupport && libX11 != null;
+assert mouseSupport -> gpm-ncurses != null;
+
+with stdenv.lib;
+
+let
+  mktable = buildPackages.stdenv.mkDerivation rec {
+    name = "w3m-mktable";
+    inherit (w3m) src;
+    nativeBuildInputs = [ pkgconfig boehmgc ];
+    makeFlags = [ "mktable" ];
+    installPhase = ''
+      install -D mktable $out/bin/mktable
+    '';
+  };
+in stdenv.mkDerivation rec {
+  name = "w3m-0.5.3+git20180125";
+
+  src = fetchFromGitHub {
+    owner = "tats";
+    repo = "w3m";
+    rev = "v0.5.3+git20180125";
+    sha256 = "0dafdfx1yhrvhbqzslkcapj09dvf64m2jadz3wl2icni0k4msq90";
+  };
+
+  NIX_LDFLAGS = optionalString stdenv.isSunOS "-lsocket -lnsl";
+
+  # we must set these so that the generated files (e.g. w3mhelp.cgi) contain
+  # the correct paths.
+  PERL = "${perl}/bin/perl";
+  MAN = "${man}/bin/man";
+
+  makeFlags = [ "AR=${stdenv.cc.bintools.targetPrefix}ar" ];
+
+  patches = [
+    ./RAND_egd.libressl.patch
+    (fetchpatch {
+      name = "https.patch";
+      url = "https://aur.archlinux.org/cgit/aur.git/plain/https.patch?h=w3m-mouse&id=5b5f0fbb59f674575e87dd368fed834641c35f03";
+      sha256 = "08skvaha1hjyapsh8zw5dgfy433mw2hk7qy9yy9avn8rjqj7kjxk";
+    })
+  ] ++ optional (graphicsSupport && !x11Support) [ ./no-x11.patch ];
+
+  postPatch = optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+    ln -s ${mktable}/bin/mktable mktable
+    # stop make from recompiling mktable
+    sed -ie 's!mktable.*:.*!mktable:!' Makefile.in
+  '';
+
+  nativeBuildInputs = [ pkgconfig gettext ];
+  buildInputs = [ ncurses boehmgc zlib ]
+    ++ optional sslSupport openssl
+    ++ optional mouseSupport gpm-ncurses
+    ++ optional graphicsSupport imlib2
+    ++ optional x11Support libX11;
+
+  postInstall = optionalString graphicsSupport ''
+    ln -s $out/libexec/w3m/w3mimgdisplay $out/bin
+  '';
+
+  hardeningDisable = [ "format" ];
+
+  configureFlags =
+    [ "--with-ssl=${openssl.dev}" "--with-gc=${boehmgc.dev}" ]
+    ++ optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
+      "ac_cv_func_setpgrp_void=yes"
+    ]
+    ++ optional graphicsSupport "--enable-image=${optionalString x11Support "x11,"}fb";
+
+  preConfigure = ''
+    substituteInPlace ./configure --replace "/lib /usr/lib /usr/local/lib /usr/ucblib /usr/ccslib /usr/ccs/lib /lib64 /usr/lib64" /no-such-path
+    substituteInPlace ./configure --replace /usr /no-such-path
+  '';
+
+  enableParallelBuilding = false;
+
+  # for w3mimgdisplay
+  # see: https://bbs.archlinux.org/viewtopic.php?id=196093
+  LIBS = optionalString x11Support "-lX11";
+
+  meta = {
+    homepage = http://w3m.sourceforge.net/;
+    description = "A text-mode web browser";
+    maintainers = [ maintainers.cstrahan ];
+    platforms = stdenv.lib.platforms.unix;
+    license = stdenv.lib.licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/browsers/w3m/no-x11.patch b/nixpkgs/pkgs/applications/networking/browsers/w3m/no-x11.patch
new file mode 100644
index 000000000000..83b3e96821f5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/browsers/w3m/no-x11.patch
@@ -0,0 +1,15 @@
+Forget about X11 in fb module.
+This breaks w3mimgdisplay under X11, but removes X11 dependency it in pure fb.
+diff --git a/w3mimg/fb/fb_imlib2.c b/w3mimg/fb/fb_imlib2.c
+index ea36637..d3d7bc3 100644
+--- a/w3mimg/fb/fb_imlib2.c
++++ b/w3mimg/fb/fb_imlib2.c
+@@ -3,7 +3,7 @@
+                 fb_imlib2.c 0.3 Copyright (C) 2002, hito
+  **************************************************************************/
+ 
+-#include <X11/Xlib.h>
++#define X_DISPLAY_MISSING
+ #include <Imlib2.h>
+ #include "fb.h"
+ #include "fb_img.h"
diff --git a/nixpkgs/pkgs/applications/networking/c14/default.nix b/nixpkgs/pkgs/applications/networking/c14/default.nix
new file mode 100644
index 000000000000..242abc2ece79
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/c14/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "c14-cli-${version}";
+  version = "0.3";
+
+  goPackagePath = "github.com/online-net/c14-cli";
+
+  src = fetchFromGitHub {
+    owner = "online-net";
+    repo = "c14-cli";
+    rev = "${version}";
+    sha256 = "0b1piviy6vvdbak8y8bc24rk3c1fi67vv3352pmnzvrhsar2r5yf";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "C14 is designed for data archiving & long-term backups.";
+    homepage = https://www.online.net/en/c14;
+    license = licenses.mit;
+    maintainers = with maintainers; [ apeyroux ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/c14/deps.nix b/nixpkgs/pkgs/applications/networking/c14/deps.nix
new file mode 100644
index 000000000000..fe51488c7066
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/c14/deps.nix
@@ -0,0 +1 @@
+[]
diff --git a/nixpkgs/pkgs/applications/networking/charles/default.nix b/nixpkgs/pkgs/applications/networking/charles/default.nix
new file mode 100644
index 000000000000..98d4e25ef872
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/charles/default.nix
@@ -0,0 +1,68 @@
+{
+stdenv
+, makeWrapper
+, makeDesktopItem
+, fetchurl
+, jre
+}:
+
+let
+  generic = { version, sha256, ... }@attrs:
+  let
+    desktopItem = makeDesktopItem {
+      categories = "Network;Development;WebDevelopment;Java;";
+      desktopName = "Charles";
+      exec = "charles %F";
+      genericName  = "Web Debugging Proxy";
+      icon = "charles-proxy";
+      mimeType = "application/x-charles-savedsession;application/x-charles-savedsession+xml;application/x-charles-savedsession+json;application/har+json;application/vnd.tcpdump.pcap;application/x-charles-trace";
+      name = "Charles";
+      startupNotify = "true";
+    };
+
+    attrs' = builtins.removeAttrs attrs ["version" "sha256"];
+    in stdenv.mkDerivation rec {
+      name = "charles-${version}";
+      inherit version;
+
+      src = fetchurl {
+        url = "https://www.charlesproxy.com/assets/release/${version}/charles-proxy-${version}.tar.gz";
+        inherit sha256;
+      };
+      buildInputs = [ makeWrapper ];
+
+      installPhase = ''
+        makeWrapper ${jre}/bin/java $out/bin/charles \
+          --add-flags "-Xmx1024M -Dcharles.config='~/.charles.config' -jar $out/share/java/charles.jar"
+
+        for fn in lib/*.jar; do
+          install -D -m644 $fn $out/share/java/$(basename $fn)
+        done
+
+        mkdir -p $out/share/applications
+        ln -s ${desktopItem}/share/applications/* $out/share/applications/
+
+        mkdir -p $out/share/icons
+        cp -r icon $out/share/icons/hicolor
+      '';
+
+      meta = with stdenv.lib; {
+        description = "Web Debugging Proxy";
+        homepage = https://www.charlesproxy.com/;
+        maintainers = [ maintainers.kalbasit ];
+        license = stdenv.lib.licenses.unfree;
+        platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
+      };
+    };
+
+in rec {
+  charles4 = (generic {
+    version = "4.2.7";
+    sha256 = "1nycw3wpbfwj4ijjaq5k0f4xipj8j605fs0yjzgl66gmv7r583rd";
+  });
+  charles3 = (generic {
+    version = "3.12.3";
+    sha256 = "13zk82ny1w5zd9qcs9qkq0kdb22ni5byzajyshpxdfm4zv6p32ss";
+  });
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/cloudflared/default.nix b/nixpkgs/pkgs/applications/networking/cloudflared/default.nix
new file mode 100644
index 000000000000..fd047147e01a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cloudflared/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name    = "cloudflared-${version}";
+  version = "2018.10.3";
+
+  goPackagePath = "github.com/cloudflare/cloudflared";
+
+  src = fetchFromGitHub {
+    owner  = "cloudflare";
+    repo   = "cloudflared";
+    rev    = "41916365b689bf2cc1446ea5717e4d26cc8aed43"; # untagged
+    sha256 = "109bhnmvlvj3ag9vw090fy202z8aaqr1rakhn8v550wwy30h9zkf";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "CloudFlare Argo Tunnel daemon (and DNS-over-HTTPS client)";
+    homepage    = https://www.cloudflare.com/products/argo-tunnel;
+    license     = licenses.unfree;
+    platforms   = platforms.unix;
+    maintainers = [ maintainers.thoughtpolice ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cloudflared/deps.nix b/nixpkgs/pkgs/applications/networking/cloudflared/deps.nix
new file mode 100644
index 000000000000..da7f509378dd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cloudflared/deps.nix
@@ -0,0 +1,444 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "github.com/BurntSushi/toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/toml";
+      rev =  "b26d9c308763d68093482582cea63d69be07a0f0";
+      sha256 = "0k7v2i1d2d6si8gswn83qb84czhhia53v2wdy33yz9ppdidxk0ry";
+    };
+  }
+  {
+    goPackagePath  = "github.com/beorn7/perks";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beorn7/perks";
+      rev =  "3a771d992973f24aa725d07868b467d1ddfceafb";
+      sha256 = "1l2lns4f5jabp61201sh88zf3b0q793w4zdgp9nll7mmfcxxjif3";
+    };
+  }
+  {
+    goPackagePath  = "github.com/certifi/gocertifi";
+    fetch = {
+      type = "git";
+      url = "https://github.com/certifi/gocertifi";
+      rev =  "deb3ae2ef2610fde3330947281941c562861188b";
+      sha256 = "1xy09y1fdfcny1z09hd4493w1acj5min9z2sx4gfpshc80icrmr6";
+    };
+  }
+  {
+    goPackagePath  = "github.com/cloudflare/brotli-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cloudflare/brotli-go";
+      rev =  "18c9f6c67e3dfc12e0ddaca748d2887f97a7ac28";
+      sha256 = "10112y4k8qing552n0df9w33cgminrzm6g3x7ng0vgin4sv59785";
+    };
+  }
+  {
+    goPackagePath  = "github.com/coredns/coredns";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coredns/coredns";
+      rev =  "992e7928c7c258628d2b13b769acc86781b9faea";
+      sha256 = "0mvlkca11ikwzii0p7g5a2z3gn1xrp7qmmjwklp4i52lbnsawzv0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/coreos/go-oidc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/go-oidc";
+      rev =  "a93f71fdfe73d2c0f5413c0565eea0af6523a6df";
+      sha256 = "00pmmky0y9a9l767xn16xlf52h81j4869n6j0xql79rybp6xc1f3";
+    };
+  }
+  {
+    goPackagePath  = "github.com/coreos/go-systemd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/go-systemd";
+      rev =  "39ca1b05acc7ad1220e09f133283b8859a8b71ab";
+      sha256 = "1kzqrrzqspa5qm7kwslxl3m16lqzns23c24rv474ajzwmj3ixmx1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/coreos/pkg";
+    fetch = {
+      type = "git";
+      url = "https://github.com/coreos/pkg";
+      rev =  "97fdf19511ea361ae1c100dd393cc47f8dcfa1e1";
+      sha256 = "1srn87wih25l09f75483hnxsr8fc6rq3bk7w1x8125ym39p6mg21";
+    };
+  }
+  {
+    goPackagePath  = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev =  "346938d642f2ec3594ed81d874461961cd0faa76";
+      sha256 = "0d4jfmak5p6lb7n2r6yvf5p1zcw0l8j74kn55ghvr7zr7b7axm6c";
+    };
+  }
+  {
+    goPackagePath  = "github.com/elgs/gosqljson";
+    fetch = {
+      type = "git";
+      url = "https://github.com/elgs/gosqljson";
+      rev =  "027aa4915315a0b2825c0f025cea347829b974fa";
+      sha256 = "14i45m1y505acvsk4l725bp8p9w3mcg49khz9hxkzg3afg7nc5gq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/equinox-io/equinox";
+    fetch = {
+      type = "git";
+      url = "https://github.com/equinox-io/equinox";
+      rev =  "f24972fa72facf59d05c91c848b65eac38815915";
+      sha256 = "1d3620g1kxyzn8b3py2471qp8ssyzm1qnpbap9gxrmg8912wiww1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/facebookgo/grace";
+    fetch = {
+      type = "git";
+      url = "https://github.com/facebookgo/grace";
+      rev =  "75cf19382434e82df4dd84953f566b8ad23d6e9e";
+      sha256 = "15chyvgv5y59w9x2asm0vh29cmmcji7f5vxvv8gqcr15nkyi61q0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/flynn/go-shlex";
+    fetch = {
+      type = "git";
+      url = "https://github.com/flynn/go-shlex";
+      rev =  "3f9db97f856818214da2e1057f8ad84803971cff";
+      sha256 = "1j743lysygkpa2s2gii2xr32j7bxgc15zv4113b0q9jhn676ysia";
+    };
+  }
+  {
+    goPackagePath  = "github.com/getsentry/raven-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/getsentry/raven-go";
+      rev =  "ed7bcb39ff10f39ab08e317ce16df282845852fa";
+      sha256 = "0pqggcjbia9sidxqxnyd5z5k44iswxaqss3qvkka8bfm082kczij";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang-collections/collections";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang-collections/collections";
+      rev =  "604e922904d35e97f98a774db7881f049cd8d970";
+      sha256 = "04g0xc1bs4aphc2rcj9knah2shmck500qagnazy4mg052b84ggwm";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev =  "b4deda0973fb4c70b50d226b1af49f3da59f5265";
+      sha256 = "0ya4ha7m20bw048m1159ppqzlvda4x0vdprlbk5sdgmy74h3xcdq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/uuid";
+      rev =  "064e2069ce9c359c118179501254f67d7d37ba24";
+      sha256 = "1b1ibx3rbiv7xwa9kz4b4zpp1fza5cjnn8v6749b4vrkjjmp3rqb";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gorilla/context";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/context";
+      rev =  "08b5f424b9271eedf6f9f0ce86cb9396ed337a42";
+      sha256 = "03p4hn87vcmfih0p9w663qbx9lpsf7i7j3lc7yl7n84la3yz63m4";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gorilla/mux";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/mux";
+      rev =  "e3702bed27f0d39777b0b37b664b6280e8ef8fbf";
+      sha256 = "0pvzm23hklxysspnz52mih6h1q74vfrdhjfm1l3sa9r8hhqmmld2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gorilla/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/websocket";
+      rev =  "ea4d1f681babbce9545c9c5f3d5194a789c89f5b";
+      sha256 = "1bhgs2542qs49p1dafybqxfs2qc072xv41w5nswyrknwyjxxs2a1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/grpc-ecosystem/grpc-opentracing";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc-ecosystem/grpc-opentracing";
+      rev =  "8e809c8a86450a29b90dcc9efbf062d0fe6d9746";
+      sha256 = "1yz3gxhdipmi63n32y5srwx7p254k3fm8y64cimkb1gz7sw99nxw";
+    };
+  }
+  {
+    goPackagePath  = "github.com/jonboulle/clockwork";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jonboulle/clockwork";
+      rev =  "2eee05ed794112d45db504eb05aa693efd2b8b09";
+      sha256 = "1pqxhsdavbp1n5grgyx2j6ylvql2fzn2cvpsgkc8li69dil7sibl";
+    };
+  }
+  {
+    goPackagePath  = "github.com/lib/pq";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lib/pq";
+      rev =  "90697d60dd844d5ef6ff15135d0203f65d2f53b8";
+      sha256 = "0hb4bfsk8g5473yzbf3lzrb373xicakjznkf0v085xgimz991i9r";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev =  "167de6bfdfba052fa6b2d3664c8f5272e23c9072";
+      sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev =  "0360b2af4f38e8d38c7fce2a9f4e702702d73a39";
+      sha256 = "06w45aqz2a6yrk25axbly2k5wmsccv8cspb94bfmz4izvw8h927n";
+    };
+  }
+  {
+    goPackagePath  = "github.com/matttproud/golang_protobuf_extensions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matttproud/golang_protobuf_extensions";
+      rev =  "c12348ce28de40eed0136aa2b644d0ee0650e56c";
+      sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mholt/caddy";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mholt/caddy";
+      rev =  "d3b731e9255b72d4571a5aac125634cf1b6031dc";
+      sha256 = "1183cfaryw7m3hvngzv87w80pc9vp3369sjyz7a0dlbr39jip1r0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/miekg/dns";
+    fetch = {
+      type = "git";
+      url = "https://github.com/miekg/dns";
+      rev =  "5a2b9fab83ff0f8bfc99684bd5f43a37abe560f1";
+      sha256 = "1vmgkpmwlqg6pwrpvjbn4h4al6af5fjvwwnacyv18hvlfd3fyfmx";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev =  "3864e76763d94a6df2f9960b16a20a33da9f9a66";
+      sha256 = "1n8vya16l60i5jms43yb8fzdgwvqa2q926p5wkg3lbrk8pxy1nv0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/opentracing/opentracing-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/opentracing/opentracing-go";
+      rev =  "1949ddbfd147afd4d964a9f00b24eb291e0e7c38";
+      sha256 = "0i0ghg94dg8lk05mw5n23983wq04yjvkjmdkc9z5y1f3508938h9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev =  "645ef00459ed84a119197bfb8d8205042c6df63d";
+      sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev =  "792786c7400a136282c1664665ae0a8db921c6c2";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/client_golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_golang";
+      rev =  "967789050ba94deca04a5e84cce8ad472ce313c1";
+      sha256 = "1djwz6shmyx5kbp9b1pim3kncq2jwn3qhbx4b0b4lq7msww76hpz";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/client_model";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_model";
+      rev =  "99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c";
+      sha256 = "19y4ywsivhpxj7ikf2j0gm9k3cmyw37qcbfi78n526jxcc7kw998";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/common";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/common";
+      rev =  "7600349dcfe1abd18d72d3a1770870d9800a7801";
+      sha256 = "0lsp94dqpj35dny4m4x15kg4wgwawlm3in7cnpajkkacgyxagk5f";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/procfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/procfs";
+      rev =  "ae68e2d4c00fed4943b5f6698d504a5fe083da8a";
+      sha256 = "04sar4k99w8nvq3kwx6chz0mbp4s6xfjfxww7aqfd950xgs2jv5f";
+    };
+  }
+  {
+    goPackagePath  = "github.com/rifflock/lfshook";
+    fetch = {
+      type = "git";
+      url = "https://github.com/rifflock/lfshook";
+      rev =  "bf539943797a1f34c1f502d07de419b5238ae6c6";
+      sha256 = "0hns4zidw8g3s5l9dyl894fnyjr0a5xgdvx26rnal9jrn4n6z835";
+    };
+  }
+  {
+    goPackagePath  = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev =  "c155da19408a8799da419ed3eeb0cb5db0ad5dbc";
+      sha256 = "0g5z7al7kky11ai2dhac6gkp3b5pxsvx72yj3xg4wg3265gbn7yz";
+    };
+  }
+  {
+    goPackagePath  = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev =  "f35b8ab0b5a2cef36673838d662e249dd9c94686";
+      sha256 = "0dlszlshlxbmmfxj5hlwgv3r22x0y1af45gn1vd198nvvs3pnvfs";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev =  "a49355c7e3f8fe157a85be2f77e6e269a0f89602";
+      sha256 = "020q1laxjx5kcmnqy4wmdb63zhb0lyq6wpy40axhswzg2nd21s44";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev =  "32a936f46389aa10549d60bd7833e54b01685d09";
+      sha256 = "0f24khgx6s7idpnmwgkml4qyrqwkvdjd18aapn5rmybyhmrb57j7";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev =  "1d60e4601c6fd243af51cc01ddf169918a5407ca";
+      sha256 = "046jlanz2lkxq1r57x9bl6s4cvfqaic6p2xybsj8mq1120jv4rs6";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev =  "ce36f3865eeb42541ce3f87f32f8462c5687befa";
+      sha256 = "0dkmxn48l9g7w1247c473qlacfkfp8wyan54k9cbi79icdp65jja";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev =  "f21a4dfb5e38f5895301dc265a8def02365cc3d0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+  {
+    goPackagePath  = "google.golang.org/genproto";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-genproto";
+      rev =  "ff3583edef7de132f219f0efc00e097cabcc0ec0";
+      sha256 = "0bpzxk85fgvznmdf9356nzh8riqhwzcil9r2a955rbfn27lh4lmy";
+    };
+  }
+  {
+    goPackagePath  = "google.golang.org/grpc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc/grpc-go";
+      rev =  "168a6198bcb0ef175f7dacec0b8691fc141dc9b8";
+      sha256 = "0d8vj372ri55mrqfc0rhjl3albp5ykwfjhda1s5cgm5n40v70pr3";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/urfave/cli.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cbranch/cli";
+      rev =  "d604b6ffeee878fbf084fd2761466b6649989cee";
+      sha256 = "16csqipw5vrbb91m9w9g72jlxlrhcyxa79fz6fjp6803znmjdpk2";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-yaml/yaml";
+      rev =  "5420a8b6744d3b0345ab293f6fcba19c978f1183";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+    };
+  }
+  {
+    goPackagePath  = "zombiezen.com/go/capnproto2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/zombiezen/go-capnproto2";
+      rev =  "7cfd211c19c7f5783c695f3654efa46f0df259c3";
+      sha256 = "0nzw3g8xpxyzwqqv3ja0iznd0j18l1rwagwhf9sinwdjjgmh51sy";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/argo/default.nix b/nixpkgs/pkgs/applications/networking/cluster/argo/default.nix
new file mode 100644
index 000000000000..647261a138f2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/argo/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "argo-${version}";
+  version = "2.2.1";
+
+  src = fetchFromGitHub {
+    owner = "argoproj";
+    repo = "argo";
+    rev = "v${version}";
+    sha256 = "0x3aizwbqkg2712021wcq4chmwjhw2df702wbr6zd2a2cdypwb67";
+  };
+
+  goDeps = ./deps.nix;
+  goPackagePath = "github.com/argoproj/argo";
+
+  meta = with lib; {
+    description = "Container native workflow engine for Kubernetes";
+    homepage = https://github.com/argoproj/argo;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ groodt ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/argo/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/argo/deps.nix
new file mode 100644
index 000000000000..ace7ecd21b33
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/argo/deps.nix
@@ -0,0 +1,687 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "cloud.google.com/go";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/gocloud";
+      rev =  "64a2037ec6be8a4b0c1d1f706ed35b428b989239";
+      sha256 = "149v3ci17g6wd2pm18mzcncq5qpl9hwdjnz3rlbn5rfidyn46la1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Knetic/govaluate";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Knetic/govaluate";
+      rev =  "9aa49832a739dcd78a5542ff189fb82c3e423116";
+      sha256 = "12klijhq4fckzbhv0cwygbazj6lvhmdqksha9y6jgfmwzv51kwv5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/PuerkitoBio/purell";
+    fetch = {
+      type = "git";
+      url = "https://github.com/PuerkitoBio/purell";
+      rev =  "0bcb03f4b4d0a9428594752bd2a3b9aa0a9d4bd4";
+      sha256 = "0vsxyn1fbm7g873b8kf3hcsgqgncb5nmfq3zfsc35a9yhzarka91";
+    };
+  }
+  {
+    goPackagePath  = "github.com/PuerkitoBio/urlesc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/PuerkitoBio/urlesc";
+      rev =  "de5bf2ad457846296e2031421a34e2568e304e35";
+      sha256 = "0n0srpqwbaan1wrhh2b7ysz543pjs1xw2rghvqyffg9l0g8kzgcw";
+    };
+  }
+  {
+    goPackagePath  = "github.com/argoproj/pkg";
+    fetch = {
+      type = "git";
+      url = "https://github.com/argoproj/pkg";
+      rev =  "1aa3e0c55668da17703adba5c534fff6930db589";
+      sha256 = "0lr1dimm443qq3zzcrpialvxq9bl8pb3317zn34gmf1sycqh4iii";
+    };
+  }
+  {
+    goPackagePath  = "github.com/beorn7/perks";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beorn7/perks";
+      rev =  "3a771d992973f24aa725d07868b467d1ddfceafb";
+      sha256 = "1l2lns4f5jabp61201sh88zf3b0q793w4zdgp9nll7mmfcxxjif3";
+    };
+  }
+  {
+    goPackagePath  = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev =  "346938d642f2ec3594ed81d874461961cd0faa76";
+      sha256 = "0d4jfmak5p6lb7n2r6yvf5p1zcw0l8j74kn55ghvr7zr7b7axm6c";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/spdystream";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/spdystream";
+      rev =  "bc6354cbbc295e925e4c611ffe90c1f287ee54db";
+      sha256 = "08746a15snvmax6cnzn2qy7cvsspxbsx97vdbjpdadir3pypjxya";
+    };
+  }
+  {
+    goPackagePath  = "github.com/dustin/go-humanize";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dustin/go-humanize";
+      rev =  "9f541cc9db5d55bce703bd99987c9d5cb8eea45e";
+      sha256 = "1kqf1kavdyvjk7f8kx62pnm7fbypn9z1vbf8v2qdh3y7z7a0cbl3";
+    };
+  }
+  {
+    goPackagePath  = "github.com/emicklei/go-restful";
+    fetch = {
+      type = "git";
+      url = "https://github.com/emicklei/go-restful";
+      rev =  "3eb9738c1697594ea6e71a7156a9bb32ed216cf0";
+      sha256 = "1zqcjhg4q7788hyrkhwg4b6r1vc4qnzbw8c5j994mr18x42brxzg";
+    };
+  }
+  {
+    goPackagePath  = "github.com/emirpasic/gods";
+    fetch = {
+      type = "git";
+      url = "https://github.com/emirpasic/gods";
+      rev =  "f6c17b524822278a87e3b3bd809fec33b51f5b46";
+      sha256 = "1zhkppqzy149fp561pif8d5d92jd9chl3l9z4yi5f8n60ibdmmjf";
+    };
+  }
+  {
+    goPackagePath  = "github.com/evanphx/json-patch";
+    fetch = {
+      type = "git";
+      url = "https://github.com/evanphx/json-patch";
+      rev =  "afac545df32f2287a079e2dfb7ba2745a643747e";
+      sha256 = "1d90prf8wfvndqjn6nr0k405ykia5vb70sjw4ywd49s9p3wcdyn8";
+    };
+  }
+  {
+    goPackagePath  = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev =  "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath  = "github.com/ghodss/yaml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ghodss/yaml";
+      rev =  "c7ce16629ff4cd059ed96ed06419dd3856fd3577";
+      sha256 = "10cyv1gy3zwwkr04kk8cvhifb7xddakyvnk5s13yfcqj9hcjz8d1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-ini/ini";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-ini/ini";
+      rev =  "358ee7663966325963d4e8b2e1fbd570c5195153";
+      sha256 = "1zr51xaka7px1pmfndm12fvg6a3cr24kg77j28zczbfcc6h339gy";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-openapi/jsonpointer";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-openapi/jsonpointer";
+      rev =  "3a0015ad55fa9873f41605d3e8f28cd279c32ab2";
+      sha256 = "02an755ashhckqwxyq2avgn8mm4qq3hxda2jsj1a3bix2gkb45v7";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-openapi/jsonreference";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-openapi/jsonreference";
+      rev =  "3fb327e6747da3043567ee86abd02bb6376b6be2";
+      sha256 = "0zwsrmqqcihm0lj2pc18cpm7wnn1dzwr4kvrlyrxf0lnn7dsdsbm";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-openapi/spec";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-openapi/spec";
+      rev =  "bce47c9386f9ecd6b86f450478a80103c3fe1402";
+      sha256 = "0agys8v5rkfyinvmjd8hzgwvb20hnqninwkxwqkwbbsnakhi8shk";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-openapi/swag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-openapi/swag";
+      rev =  "2b0bd4f193d011c203529df626a65d63cb8a79e8";
+      sha256 = "14c998wkycmy69jhjqkrah8acrr9xfam1dxbzl0lf4s2ghwn7bdn";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev =  "636bf0302bc95575d69441b25a2603156ffdddf1";
+      sha256 = "1525pq7r6h3s8dncvq8gxi893p2nq8dxpzvq0nfl5b4p6mq0v1c2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/glog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/glog";
+      rev =  "23def4e6c14b4da8ac2ed8007337bc5eb5007998";
+      sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev =  "b4deda0973fb4c70b50d226b1af49f3da59f5265";
+      sha256 = "0ya4ha7m20bw048m1159ppqzlvda4x0vdprlbk5sdgmy74h3xcdq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/gofuzz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/gofuzz";
+      rev =  "24818f796faf91cd76ec7bddd72458fbced7a6c1";
+      sha256 = "0cq90m2lgalrdfrwwyycrrmn785rgnxa3l3vp9yxkvnv88bymmlm";
+    };
+  }
+  {
+    goPackagePath  = "github.com/googleapis/gnostic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/googleapis/gnostic";
+      rev =  "7c663266750e7d82587642f65e60bc4083f1f84e";
+      sha256 = "0yh3ckd7m0r9h50wmxxvba837d0wb1k5yd439zq4p1kpp4390z12";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gorilla/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/websocket";
+      rev =  "ea4d1f681babbce9545c9c5f3d5194a789c89f5b";
+      sha256 = "1bhgs2542qs49p1dafybqxfs2qc072xv41w5nswyrknwyjxxs2a1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/hashicorp/golang-lru";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/golang-lru";
+      rev =  "0fb14efe8c47ae851c0034ed7a448854d3d34cf3";
+      sha256 = "0vg4yn3088ym4sj1d34kr13lp4v5gya7r2nxshp2bz70n46fsqn2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/howeyc/gopass";
+    fetch = {
+      type = "git";
+      url = "https://github.com/howeyc/gopass";
+      rev =  "bf9dde6d0d2c004a008c27aaee91170c786f6db8";
+      sha256 = "1jxzyfnqi0h1fzlsvlkn10bncic803bfhslyijcxk55mgh297g45";
+    };
+  }
+  {
+    goPackagePath  = "github.com/imdario/mergo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/imdario/mergo";
+      rev =  "9f23e2d6bd2a77f959b2bf6acdbefd708a83a4a4";
+      sha256 = "1lbzy8p8wv439sqgf0n21q52flf2wbamp6qa1jkyv6an0nc952q7";
+    };
+  }
+  {
+    goPackagePath  = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev =  "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+  {
+    goPackagePath  = "github.com/jbenet/go-context";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jbenet/go-context";
+      rev =  "d14ea06fba99483203c19d92cfcd13ebe73135f4";
+      sha256 = "0q91f5549n81w3z5927n4a1mdh220bdmgl42zi3h992dcc4ls0sl";
+    };
+  }
+  {
+    goPackagePath  = "github.com/json-iterator/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/json-iterator/go";
+      rev =  "1624edc4454b8682399def8740d46db5e4362ba4";
+      sha256 = "11wn4hpmrs8bmpvd93wqk49jfbbgylakhi35f9k5qd7jd479ci4s";
+    };
+  }
+  {
+    goPackagePath  = "github.com/kevinburke/ssh_config";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kevinburke/ssh_config";
+      rev =  "9fc7bb800b555d63157c65a904c86a2cc7b4e795";
+      sha256 = "102icrla92zmr5zngipc8c9yfbqhf73zs2w2jq6s7p0gdjifigc8";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mailru/easyjson";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mailru/easyjson";
+      rev =  "03f2033d19d5860aef995fe360ac7d395cd8ce65";
+      sha256 = "0r62ym6m1ijby7nwplq0gdnhak8in63njyisrwhr3xpx9vkira97";
+    };
+  }
+  {
+    goPackagePath  = "github.com/matttproud/golang_protobuf_extensions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matttproud/golang_protobuf_extensions";
+      rev =  "c12348ce28de40eed0136aa2b644d0ee0650e56c";
+      sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
+    };
+  }
+  {
+    goPackagePath  = "github.com/minio/minio-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/minio/minio-go";
+      rev =  "70799fe8dae6ecfb6c7d7e9e048fce27f23a1992";
+      sha256 = "0xvvnny59v4p1y2kbvz90ga5xvc5sq1gc4wv6cym82rdbvgzb2ax";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev =  "58046073cbffe2f25d425fe1331102f55cf719de";
+      sha256 = "0kwflrwsjdsy8vbhyzicc4c2vdi7lhdvn4rarfr18x1qsrb7n1bx";
+    };
+  }
+  {
+    goPackagePath  = "github.com/modern-go/concurrent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/concurrent";
+      rev =  "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94";
+      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/modern-go/reflect2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/reflect2";
+      rev =  "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd";
+      sha256 = "1721y3yr3dpx5dx5ashf063qczk2awy5zjir1jvp1h5hn7qz4i49";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pelletier/go-buffruneio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-buffruneio";
+      rev =  "c37440a7cf42ac63b919c752ca73a85067e05992";
+      sha256 = "0l83p1gg6g5mmhmxjisrhfimhbm71lwn1r2w7d6siwwqm9q08sd2";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev =  "645ef00459ed84a119197bfb8d8205042c6df63d";
+      sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev =  "792786c7400a136282c1664665ae0a8db921c6c2";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/client_golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_golang";
+      rev =  "c5b7fccd204277076155f10851dad72b76a49317";
+      sha256 = "1xqny3147g12n4j03kxm8s9mvdbs3ln6i56c655mybrn9jjy48kd";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/client_model";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_model";
+      rev =  "5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f";
+      sha256 = "04psf81l9fjcwascsys428v03fx4fi894h7fhrj2vvcz723q57k0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/common";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/common";
+      rev =  "c7de2306084e37d54b8be01f3541a8464345e9a5";
+      sha256 = "11dqfm2d0m4sjjgyrnayman96g59x2apmvvqby9qmww2qj2k83ig";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/procfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/procfs";
+      rev =  "05ee40e3a273f7245e8777337fc7b46e533a9a92";
+      sha256 = "0f6fnczxa42b9rys2h3l0m8fy3x5hrhaq707vq0lbx5fcylw8lis";
+    };
+  }
+  {
+    goPackagePath  = "github.com/sergi/go-diff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sergi/go-diff";
+      rev =  "1744e2970ca51c86172c8190fadad617561ed6e7";
+      sha256 = "0swiazj8wphs2zmk1qgq75xza6m19snif94h2m6fi8dqkwqdl7c7";
+    };
+  }
+  {
+    goPackagePath  = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev =  "3e01752db0189b9157070a0e1668a620f9a85da2";
+      sha256 = "029irw2lsbqi944gdrbkwdw0m2794sqni4g21gsnmz142hbzds8c";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev =  "7c4570c3ebeb8129a1f7456d0908a8b676b6f9f1";
+      sha256 = "16amh0prlzqrrbg5j629sg0f688nfzfgn9sair8jyybqampr3wc7";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev =  "583c0c0531f06d5278b7d917446061adc344b5cd";
+      sha256 = "0nr4mdpfhhk94hq4ymn5b2sxc47b29p1akxd8b0hx4dvdybmipb5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/src-d/gcfg";
+    fetch = {
+      type = "git";
+      url = "https://github.com/src-d/gcfg";
+      rev =  "f187355171c936ac84a82793659ebb4936bc1c23";
+      sha256 = "1hrdxlha4kkcpyydmjqd929rmwn5a9xq7arvwhryxppxq7502axk";
+    };
+  }
+  {
+    goPackagePath  = "github.com/stretchr/objx";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/objx";
+      rev =  "477a77ecc69700c7cdeb1fa9e129548e1c1c393c";
+      sha256 = "0iph0qmpyqg4kwv8jsx6a56a7hhqq8swrazv40ycxk9rzr0s8yls";
+    };
+  }
+  {
+    goPackagePath  = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev =  "f35b8ab0b5a2cef36673838d662e249dd9c94686";
+      sha256 = "0dlszlshlxbmmfxj5hlwgv3r22x0y1af45gn1vd198nvvs3pnvfs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/tidwall/gjson";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tidwall/gjson";
+      rev =  "1e3f6aeaa5bad08d777ea7807b279a07885dd8b2";
+      sha256 = "0b0kvpzq0xxk2fq4diy3ab238yjx022s56h5jv1lc9hglds80lnn";
+    };
+  }
+  {
+    goPackagePath  = "github.com/tidwall/match";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tidwall/match";
+      rev =  "1731857f09b1f38450e2c12409748407822dc6be";
+      sha256 = "14nv96h0mjki5q685qx8y331h4yga6hlfh3z9nz6acvnv284q578";
+    };
+  }
+  {
+    goPackagePath  = "github.com/valyala/bytebufferpool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/bytebufferpool";
+      rev =  "e746df99fe4a3986f4d4f79e13c1e0117ce9c2f7";
+      sha256 = "01lqzjddq6kz9v41nkky7wbgk7f1cw036sa7ldz10d82g5klzl93";
+    };
+  }
+  {
+    goPackagePath  = "github.com/valyala/fasttemplate";
+    fetch = {
+      type = "git";
+      url = "https://github.com/valyala/fasttemplate";
+      rev =  "dcecefd839c4193db0d35b88ec65b4c12d360ab0";
+      sha256 = "0kkxn0ad5a36533djh50n9l6wsylmnykridkm91dqlqbjirn7216";
+    };
+  }
+  {
+    goPackagePath  = "github.com/xanzy/ssh-agent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xanzy/ssh-agent";
+      rev =  "640f0ab560aeb89d523bb6ac322b1244d5c3796c";
+      sha256 = "069nlriymqswg52ggiwi60qhwrin9nzhd2g65a7h59z2qbcvk2hy";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev =  "f027049dab0ad238e394a753dba2d14753473a04";
+      sha256 = "026475grqvylk9n2ld4ygaxmzck6v97j48sc2x58jjsmqflnhzld";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev =  "f9ce57c11b242f0f1599cf25c89d8cb02c45295a";
+      sha256 = "1m507gyjd9246cr3inpn6lgv3vnc3i11x4fgz0k0hdxv3cn9dyx2";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev =  "3d292e4d0cdc3a0113e6d207bb137145ef1de42f";
+      sha256 = "0jvivlvx7snacd6abd1prqxa7h1z6b7s6mqahn8lpqlag3asryrl";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev =  "904bdc257025c7b3f43c19360ad3ab85783fad78";
+      sha256 = "1pmj9axkj898bk4i4lny03b3l0zbkpvxj03gyjckliabqimqz0az";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev =  "f21a4dfb5e38f5895301dc265a8def02365cc3d0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/time";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/time";
+      rev =  "fbb02b2291d28baffd63558aa44b4b56f178d650";
+      sha256 = "0jjqcv6rzihlgg4i797q80g1f6ch5diz2kxqh6488gwkb6nds4h4";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev =  "ca6481ae56504398949d597084558e50ad07117a";
+      sha256 = "0pza1pd0wy9r0pf9b9hham9ldr2byyg1slqf8p56dhf8b6j9jw9v";
+    };
+  }
+  {
+    goPackagePath  = "google.golang.org/appengine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/appengine";
+      rev =  "b1f26356af11148e710935ed1ac8a7f5702c7612";
+      sha256 = "1pz202zszg8f35dk5pfhwgcdi3r6dx1l4yk6x6ly7nb4j45zi96x";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/inf.v0";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-inf/inf";
+      rev =  "d2d2541c53f18d2a059457998ce2876cc8e67cbf";
+      sha256 = "00k5iqjcp371fllqxncv7jkf80hn1zww92zm78cclbcn4ybigkng";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/src-d/go-billy.v4";
+    fetch = {
+      type = "git";
+      url = "https://github.com/src-d/go-billy";
+      rev =  "83cf655d40b15b427014d7875d10850f96edba14";
+      sha256 = "18fghcyk69g460px8rvmhmqldkbhw17dpnhg45qwdvaq90b0bkx9";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/src-d/go-git.v4";
+    fetch = {
+      type = "git";
+      url = "https://github.com/src-d/go-git";
+      rev =  "3bd5e82b2512d85becae9677fa06b5a973fd4cfb";
+      sha256 = "1krg24ncckwalmhzs2vlp8rwyk4rfnhfydwg8iw7gaywww2c1wfc";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/warnings.v0";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-warnings/warnings";
+      rev =  "ec4a0fea49c7b46c2aeb0b51aac55779c607e52b";
+      sha256 = "1kzj50jn708cingn7a13c2wdlzs6qv89dr2h4zj8d09647vlnd81";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-yaml/yaml";
+      rev =  "5420a8b6744d3b0345ab293f6fcba19c978f1183";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/api";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/api";
+      rev =  "0f11257a8a25954878633ebdc9841c67d8f83bdb";
+      sha256 = "1y8k0b03ibr8ga9dr91dc2imq2cbmy702a1xqggb97h8lmb6jqni";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/apimachinery";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/apimachinery";
+      rev =  "e386b2658ed20923da8cc9250e552f082899a1ee";
+      sha256 = "0lgwpsvx0gpnrdnkqc9m96xwkifdq50l7cj9rvh03njws4rbd8jz";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/client-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/client-go";
+      rev =  "a312bfe35c401f70e5ea0add48b50da283031dc3";
+      sha256 = "0z360np4iv7jdgacw576gdxbzl8ss810kbqwyrjk39by589rfkl9";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/code-generator";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/code-generator";
+      rev =  "9de8e796a74d16d2a285165727d04c185ebca6dc";
+      sha256 = "09858ykfrd3cyzkkpafzhqs6h7bk3n90s3p52x3axn4f7ikjh7k4";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/gengo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/gengo";
+      rev =  "c42f3cdacc394f43077ff17e327d1b351c0304e4";
+      sha256 = "05vbrqfa96izm5j2q9f4yiyrbyx23nrkj5yv4fhfc7pvwb35iy04";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/kube-openapi";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/kube-openapi";
+      rev =  "e3762e86a74c878ffed47484592986685639c2cd";
+      sha256 = "1n9j08dwnj77iflzj047hrk0zg6nh1m4a5pljjdsvvf3xgka54pz";
+    };
+  }
+]
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/chronos/chronos-deps.nix b/nixpkgs/pkgs/applications/networking/cluster/chronos/chronos-deps.nix
new file mode 100644
index 000000000000..aac0dd10e15a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/chronos/chronos-deps.nix
@@ -0,0 +1,14 @@
+{stdenv, curl}:
+
+stdenv.mkDerivation {
+  name = "chronos-maven-deps";
+  builder = ./fetch-chronos-deps.sh;
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "0mm2sb1p5zz6b0z2s4zhdlix6fafydsxmqjy8zbkwzw4f6lazzyl";
+
+  nativeBuildInputs = [ curl ];
+
+  impureEnvVars = stdenv.lib.fetchers.proxyImpureEnvVars;
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/chronos/default.nix b/nixpkgs/pkgs/applications/networking/cluster/chronos/default.nix
new file mode 100644
index 000000000000..bc9023a222f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/chronos/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, lib, makeWrapper, fetchgit, curl, jdk, maven, nodejs, mesos }:
+
+stdenv.mkDerivation rec {
+  name = "chronos-${version}";
+  version = "286b2ccb8e4695f8e413406ceca85b60d3a87e22";
+
+  src = fetchgit {
+    url = "https://github.com/airbnb/chronos";
+    rev = version;
+    sha256 = "0hrln3ad2g2cq2xqmy5mq32cdxxb9vb6v6jp6kcq03f8km6v3g9c";
+  };
+
+  buildInputs = [ makeWrapper curl jdk maven nodejs mesos ];
+
+  mavenRepo = import ./chronos-deps.nix { inherit stdenv curl; };
+
+  buildPhase = ''
+    ln -s $mavenRepo .m2
+    mvn package -Dmaven.repo.local=$(pwd)/.m2
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,libexec/chronos}
+    cp target/chronos*.jar $out/libexec/chronos/${name}.jar
+
+    makeWrapper ${jdk.jre}/bin/java $out/bin/chronos \
+      --add-flags "-Xmx384m -Xms384m -cp $out/libexec/chronos/${name}.jar com.airbnb.scheduler.Main" \
+      --prefix "MESOS_NATIVE_LIBRARY" : "$MESOS_NATIVE_LIBRARY"
+  '';
+
+  meta = with lib; {
+    homepage    = http://airbnb.github.io/chronos;
+    license     = licenses.asl20;
+    description = "Fault tolerant job scheduler for Mesos which handles dependencies and ISO8601 based schedules";
+    maintainers = with maintainers; [ offline ];
+    platforms   = platforms.unix;
+    broken = true; # doesn't build http://hydra.nixos.org/build/25768319
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/chronos/fetch-chronos-deps.sh b/nixpkgs/pkgs/applications/networking/cluster/chronos/fetch-chronos-deps.sh
new file mode 100644
index 000000000000..2e337076107d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/chronos/fetch-chronos-deps.sh
@@ -0,0 +1,1672 @@
+source $stdenv/setup
+header "fetching Chronos maven repo"
+
+function fetchArtifact {
+  repoPath="$1"
+  echo "fetching $repoPath"
+  mkdir -p $(dirname $out/$repoPath)
+  curl --fail --location --insecure --max-redirs 20 "http://repo.maven.apache.org/maven2/$repoPath" --output "$out/$repoPath" ||
+  curl --fail --location --insecure --max-redirs 20 "https://repository.apache.org/content/repositories/release/$repoPath" --output "$out/$repoPath" ||
+  curl --fail --location --insecure --max-redirs 20 "http://downloads.mesosphere.io/maven/$repoPath" --output "$out/$repoPath"
+}
+
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.pom
+fetchArtifact commons-collections/commons-collections/2.0/commons-collections-2.0.pom
+fetchArtifact commons-collections/commons-collections/2.0/commons-collections-2.0.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.jar.sha1
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.pom
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.jar
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar.sha1
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar
+fetchArtifact commons-collections/commons-collections/2.1/commons-collections-2.1.pom
+fetchArtifact commons-collections/commons-collections/2.1/commons-collections-2.1.pom.sha1
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.jar
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.pom.sha1
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.pom
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.jar.sha1
+fetchArtifact commons-io/commons-io/2.2/commons-io-2.2.pom
+fetchArtifact commons-io/commons-io/2.2/commons-io-2.2.jar
+fetchArtifact commons-io/commons-io/2.2/commons-io-2.2.jar.sha1
+fetchArtifact commons-io/commons-io/2.2/commons-io-2.2.pom.sha1
+fetchArtifact aopalliance/aopalliance/1.0/aopalliance-1.0.jar
+fetchArtifact aopalliance/aopalliance/1.0/aopalliance-1.0.pom.sha1
+fetchArtifact aopalliance/aopalliance/1.0/aopalliance-1.0.pom
+fetchArtifact aopalliance/aopalliance/1.0/aopalliance-1.0.jar.sha1
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.pom
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.jar.sha1
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.pom.sha1
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.jar
+fetchArtifact net/kencochrane/raven/raven-all/4.1.2/raven-all-4.1.2.pom
+fetchArtifact net/kencochrane/raven/raven-all/4.1.2/raven-all-4.1.2.pom.sha1
+fetchArtifact net/kencochrane/raven/raven/4.1.2/raven-4.1.2.jar
+fetchArtifact net/kencochrane/raven/raven/4.1.2/raven-4.1.2.pom
+fetchArtifact net/kencochrane/raven/raven/4.1.2/raven-4.1.2.jar.sha1
+fetchArtifact net/kencochrane/raven/raven/4.1.2/raven-4.1.2.pom.sha1
+fetchArtifact net/kencochrane/raven/raven-getsentry/4.1.2/raven-getsentry-4.1.2.jar.sha1
+fetchArtifact net/kencochrane/raven/raven-getsentry/4.1.2/raven-getsentry-4.1.2.jar
+fetchArtifact net/kencochrane/raven/raven-getsentry/4.1.2/raven-getsentry-4.1.2.pom.sha1
+fetchArtifact net/kencochrane/raven/raven-getsentry/4.1.2/raven-getsentry-4.1.2.pom
+fetchArtifact net/liftweb/lift-markdown_2.11/2.6-M4/lift-markdown_2.11-2.6-M4.jar.sha1
+fetchArtifact net/liftweb/lift-markdown_2.11/2.6-M4/lift-markdown_2.11-2.6-M4.pom
+fetchArtifact net/liftweb/lift-markdown_2.11/2.6-M4/lift-markdown_2.11-2.6-M4.jar
+fetchArtifact net/liftweb/lift-markdown_2.11/2.6-M4/lift-markdown_2.11-2.6-M4.pom.sha1
+fetchArtifact net/java/jvnet-parent/4/jvnet-parent-4.pom
+fetchArtifact net/java/jvnet-parent/4/jvnet-parent-4.pom.sha1
+fetchArtifact net/java/jvnet-parent/1/jvnet-parent-1.pom
+fetchArtifact net/java/jvnet-parent/1/jvnet-parent-1.pom.sha1
+fetchArtifact net/java/jvnet-parent/3/jvnet-parent-3.pom.sha1
+fetchArtifact net/java/jvnet-parent/3/jvnet-parent-3.pom
+fetchArtifact net/alchim31/maven/scala-maven-plugin/3.1.0/scala-maven-plugin-3.1.0.jar.sha1
+fetchArtifact net/alchim31/maven/scala-maven-plugin/3.1.0/scala-maven-plugin-3.1.0.pom.sha1
+fetchArtifact net/alchim31/maven/scala-maven-plugin/3.1.0/scala-maven-plugin-3.1.0.pom
+fetchArtifact net/alchim31/maven/scala-maven-plugin/3.1.0/scala-maven-plugin-3.1.0.jar
+fetchArtifact net/jpountz/lz4/lz4/1.2.0/lz4-1.2.0.jar
+fetchArtifact net/jpountz/lz4/lz4/1.2.0/lz4-1.2.0.pom
+fetchArtifact net/jpountz/lz4/lz4/1.2.0/lz4-1.2.0.jar.sha1
+fetchArtifact net/jpountz/lz4/lz4/1.2.0/lz4-1.2.0.pom.sha1
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.pom
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.pom.sha1
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar.sha1
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom.sha1
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar
+fetchArtifact xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.pom.sha1
+fetchArtifact xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.pom
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom.sha1
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar.sha1
+fetchArtifact io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.pom
+fetchArtifact io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.jar
+fetchArtifact io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.jar.sha1
+fetchArtifact io/dropwizard/metrics/metrics-core/3.1.0/metrics-core-3.1.0.pom.sha1
+fetchArtifact io/dropwizard/metrics/metrics-graphite/3.1.0/metrics-graphite-3.1.0.jar.sha1
+fetchArtifact io/dropwizard/metrics/metrics-graphite/3.1.0/metrics-graphite-3.1.0.jar
+fetchArtifact io/dropwizard/metrics/metrics-graphite/3.1.0/metrics-graphite-3.1.0.pom.sha1
+fetchArtifact io/dropwizard/metrics/metrics-graphite/3.1.0/metrics-graphite-3.1.0.pom
+fetchArtifact io/dropwizard/metrics/metrics-parent/3.1.0/metrics-parent-3.1.0.pom.sha1
+fetchArtifact io/dropwizard/metrics/metrics-parent/3.1.0/metrics-parent-3.1.0.pom
+fetchArtifact io/netty/netty/3.7.0.Final/netty-3.7.0.Final.jar.sha1
+fetchArtifact io/netty/netty/3.7.0.Final/netty-3.7.0.Final.pom
+fetchArtifact io/netty/netty/3.7.0.Final/netty-3.7.0.Final.jar
+fetchArtifact io/netty/netty/3.7.0.Final/netty-3.7.0.Final.pom.sha1
+fetchArtifact io/netty/netty/3.9.0.Final/netty-3.9.0.Final.pom.sha1
+fetchArtifact io/netty/netty/3.9.0.Final/netty-3.9.0.Final.jar
+fetchArtifact io/netty/netty/3.9.0.Final/netty-3.9.0.Final.pom
+fetchArtifact io/netty/netty/3.9.0.Final/netty-3.9.0.Final.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.jar
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.pom
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.jar
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.pom
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.jar
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.pom
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha1
+fetchArtifact log4j/log4j/1.2.12/log4j-1.2.12.pom
+fetchArtifact log4j/log4j/1.2.12/log4j-1.2.12.pom.sha1
+fetchArtifact log4j/log4j/1.2.16/log4j-1.2.16.jar.sha1
+fetchArtifact log4j/log4j/1.2.16/log4j-1.2.16.pom.sha1
+fetchArtifact log4j/log4j/1.2.16/log4j-1.2.16.jar
+fetchArtifact log4j/log4j/1.2.16/log4j-1.2.16.pom
+fetchArtifact log4j/log4j/1.2.17/log4j-1.2.17.pom.sha1
+fetchArtifact log4j/log4j/1.2.17/log4j-1.2.17.jar
+fetchArtifact log4j/log4j/1.2.17/log4j-1.2.17.jar.sha1
+fetchArtifact log4j/log4j/1.2.17/log4j-1.2.17.pom
+fetchArtifact commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom
+fetchArtifact commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar.sha1
+fetchArtifact commons-logging/commons-logging/1.0/commons-logging-1.0.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0/commons-logging-1.0.pom
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
+fetchArtifact commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom
+fetchArtifact commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom.sha1
+fetchArtifact com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.pom.sha1
+fetchArtifact com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar
+fetchArtifact com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar.sha1
+fetchArtifact com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.pom
+fetchArtifact com/google/inject/guice-parent/3.0/guice-parent-3.0.pom.sha1
+fetchArtifact com/google/inject/guice-parent/3.0/guice-parent-3.0.pom
+fetchArtifact com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.pom.sha1
+fetchArtifact com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.jar
+fetchArtifact com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.jar.sha1
+fetchArtifact com/google/inject/extensions/guice-servlet/3.0/guice-servlet-3.0.pom
+fetchArtifact com/google/inject/extensions/extensions-parent/3.0/extensions-parent-3.0.pom.sha1
+fetchArtifact com/google/inject/extensions/extensions-parent/3.0/extensions-parent-3.0.pom
+fetchArtifact com/google/inject/guice/3.0/guice-3.0.jar
+fetchArtifact com/google/inject/guice/3.0/guice-3.0.jar.sha1
+fetchArtifact com/google/inject/guice/3.0/guice-3.0.pom.sha1
+fetchArtifact com/google/inject/guice/3.0/guice-3.0.pom
+fetchArtifact com/google/google/1/google-1.pom
+fetchArtifact com/google/google/1/google-1.pom.sha1
+fetchArtifact com/google/google/5/google-5.pom.sha1
+fetchArtifact com/google/google/5/google-5.pom
+fetchArtifact com/google/collections/google-collections/1.0/google-collections-1.0.pom
+fetchArtifact com/google/collections/google-collections/1.0/google-collections-1.0.pom.sha1
+fetchArtifact com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom
+fetchArtifact com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar.sha1
+fetchArtifact com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar
+fetchArtifact com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.pom.sha1
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom.sha1
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar.sha1
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar
+fetchArtifact com/google/guava/guava-parent/15.0/guava-parent-15.0.pom
+fetchArtifact com/google/guava/guava-parent/15.0/guava-parent-15.0.pom.sha1
+fetchArtifact com/google/guava/guava-parent/13.0.1/guava-parent-13.0.1.pom.sha1
+fetchArtifact com/google/guava/guava-parent/13.0.1/guava-parent-13.0.1.pom
+fetchArtifact com/google/guava/guava-parent/17.0/guava-parent-17.0.pom.sha1
+fetchArtifact com/google/guava/guava-parent/17.0/guava-parent-17.0.pom
+fetchArtifact com/google/guava/guava-parent/16.0.1/guava-parent-16.0.1.pom
+fetchArtifact com/google/guava/guava-parent/16.0.1/guava-parent-16.0.1.pom.sha1
+fetchArtifact com/google/guava/guava-parent/11.0.2/guava-parent-11.0.2.pom
+fetchArtifact com/google/guava/guava-parent/11.0.2/guava-parent-11.0.2.pom.sha1
+fetchArtifact com/google/guava/guava/15.0/guava-15.0.pom.sha1
+fetchArtifact com/google/guava/guava/15.0/guava-15.0.pom
+fetchArtifact com/google/guava/guava/13.0.1/guava-13.0.1.pom
+fetchArtifact com/google/guava/guava/13.0.1/guava-13.0.1.pom.sha1
+fetchArtifact com/google/guava/guava/17.0/guava-17.0.pom
+fetchArtifact com/google/guava/guava/17.0/guava-17.0.pom.sha1
+fetchArtifact com/google/guava/guava/16.0.1/guava-16.0.1.pom.sha1
+fetchArtifact com/google/guava/guava/16.0.1/guava-16.0.1.pom
+fetchArtifact com/google/guava/guava/16.0.1/guava-16.0.1.jar
+fetchArtifact com/google/guava/guava/16.0.1/guava-16.0.1.jar.sha1
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.jar.sha1
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.pom
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.jar
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.pom.sha1
+fetchArtifact com/github/spullara/mustache/java/compiler/0.8.12/compiler-0.8.12.pom
+fetchArtifact com/github/spullara/mustache/java/compiler/0.8.12/compiler-0.8.12.pom.sha1
+fetchArtifact com/github/spullara/mustache/java/compiler/0.8.12/compiler-0.8.12.jar
+fetchArtifact com/github/spullara/mustache/java/compiler/0.8.12/compiler-0.8.12.jar.sha1
+fetchArtifact com/github/spullara/mustache/java/mustache.java/0.8.12/mustache.java-0.8.12.pom
+fetchArtifact com/github/spullara/mustache/java/mustache.java/0.8.12/mustache.java-0.8.12.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-servlets/3.0.2/metrics-servlets-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-servlets/3.0.2/metrics-servlets-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-servlets/3.0.2/metrics-servlets-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-servlets/3.0.2/metrics-servlets-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-annotation/3.0.2/metrics-annotation-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-annotation/3.0.2/metrics-annotation-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-annotation/3.0.2/metrics-annotation-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-annotation/3.0.2/metrics-annotation-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-jvm/3.0.2/metrics-jvm-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-jvm/3.0.2/metrics-jvm-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-jvm/3.0.2/metrics-jvm-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-jvm/3.0.2/metrics-jvm-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-json/3.0.2/metrics-json-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-json/3.0.2/metrics-json-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-json/3.0.2/metrics-json-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-json/3.0.2/metrics-json-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-jersey/3.0.2/metrics-jersey-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-jersey/3.0.2/metrics-jersey-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-jersey/3.0.2/metrics-jersey-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-jersey/3.0.2/metrics-jersey-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-jetty8/3.0.2/metrics-jetty8-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-jetty8/3.0.2/metrics-jetty8-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-jetty8/3.0.2/metrics-jetty8-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-jetty8/3.0.2/metrics-jetty8-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-healthchecks/3.0.2/metrics-healthchecks-3.0.2.jar.sha1
+fetchArtifact com/codahale/metrics/metrics-healthchecks/3.0.2/metrics-healthchecks-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-healthchecks/3.0.2/metrics-healthchecks-3.0.2.jar
+fetchArtifact com/codahale/metrics/metrics-healthchecks/3.0.2/metrics-healthchecks-3.0.2.pom
+fetchArtifact com/codahale/metrics/metrics-parent/3.0.2/metrics-parent-3.0.2.pom.sha1
+fetchArtifact com/codahale/metrics/metrics-parent/3.0.2/metrics-parent-3.0.2.pom
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-base/2.4.1/jackson-jaxrs-base-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-base/2.4.1/jackson-jaxrs-base-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-base/2.4.1/jackson-jaxrs-base-2.4.1.jar
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-base/2.4.1/jackson-jaxrs-base-2.4.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/2.4.1/jackson-jaxrs-json-provider-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/2.4.1/jackson-jaxrs-json-provider-2.4.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/2.4.1/jackson-jaxrs-json-provider-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-json-provider/2.4.1/jackson-jaxrs-json-provider-2.4.1.jar
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-providers/2.4.1/jackson-jaxrs-providers-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/jaxrs/jackson-jaxrs-providers/2.4.1/jackson-jaxrs-providers-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.1/jackson-annotations-2.4.1.jar
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.1/jackson-annotations-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.1/jackson-annotations-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.1/jackson-annotations-2.4.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.0/jackson-annotations-2.4.0.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.4.0/jackson-annotations-2.4.0.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.2.2/jackson-annotations-2.2.2.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-annotations/2.2.2/jackson-annotations-2.2.2.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1/jackson-databind-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1/jackson-databind-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1.1/jackson-databind-2.4.1.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1.1/jackson-databind-2.4.1.1.jar
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1.1/jackson-databind-2.4.1.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.4.1.1/jackson-databind-2.4.1.1.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.2.2/jackson-databind-2.2.2.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-databind/2.2.2/jackson-databind-2.2.2.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.3.0/jackson-core-2.3.0.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.3.0/jackson-core-2.3.0.jar.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.3.0/jackson-core-2.3.0.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.3.0/jackson-core-2.3.0.jar
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.4.1/jackson-core-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.4.1/jackson-core-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.2.2/jackson-core-2.2.2.pom
+fetchArtifact com/fasterxml/jackson/core/jackson-core/2.2.2/jackson-core-2.2.2.pom.sha1
+fetchArtifact com/fasterxml/jackson/jackson-parent/2.4/jackson-parent-2.4.pom
+fetchArtifact com/fasterxml/jackson/jackson-parent/2.4/jackson-parent-2.4.pom.sha1
+fetchArtifact com/fasterxml/jackson/module/jackson-module-scala_2.11/2.4.1/jackson-module-scala_2.11-2.4.1.pom
+fetchArtifact com/fasterxml/jackson/module/jackson-module-scala_2.11/2.4.1/jackson-module-scala_2.11-2.4.1.jar
+fetchArtifact com/fasterxml/jackson/module/jackson-module-scala_2.11/2.4.1/jackson-module-scala_2.11-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/module/jackson-module-scala_2.11/2.4.1/jackson-module-scala_2.11-2.4.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.4.1/jackson-module-jaxb-annotations-2.4.1.jar
+fetchArtifact com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.4.1/jackson-module-jaxb-annotations-2.4.1.pom.sha1
+fetchArtifact com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.4.1/jackson-module-jaxb-annotations-2.4.1.jar.sha1
+fetchArtifact com/fasterxml/jackson/module/jackson-module-jaxb-annotations/2.4.1/jackson-module-jaxb-annotations-2.4.1.pom
+fetchArtifact com/fasterxml/oss-parent/16/oss-parent-16.pom
+fetchArtifact com/fasterxml/oss-parent/16/oss-parent-16.pom.sha1
+fetchArtifact com/fasterxml/oss-parent/11/oss-parent-11.pom.sha1
+fetchArtifact com/fasterxml/oss-parent/11/oss-parent-11.pom
+fetchArtifact com/fasterxml/oss-parent/10/oss-parent-10.pom.sha1
+fetchArtifact com/fasterxml/oss-parent/10/oss-parent-10.pom
+fetchArtifact com/fasterxml/classmate/1.0.0/classmate-1.0.0.pom.sha1
+fetchArtifact com/fasterxml/classmate/1.0.0/classmate-1.0.0.jar
+fetchArtifact com/fasterxml/classmate/1.0.0/classmate-1.0.0.pom
+fetchArtifact com/fasterxml/classmate/1.0.0/classmate-1.0.0.jar.sha1
+fetchArtifact com/datastax/cassandra/cassandra-driver-core/2.1.0/cassandra-driver-core-2.1.0.jar
+fetchArtifact com/datastax/cassandra/cassandra-driver-core/2.1.0/cassandra-driver-core-2.1.0.pom.sha1
+fetchArtifact com/datastax/cassandra/cassandra-driver-core/2.1.0/cassandra-driver-core-2.1.0.pom
+fetchArtifact com/datastax/cassandra/cassandra-driver-core/2.1.0/cassandra-driver-core-2.1.0.jar.sha1
+fetchArtifact com/datastax/cassandra/cassandra-driver-parent/2.1.0/cassandra-driver-parent-2.1.0.pom.sha1
+fetchArtifact com/datastax/cassandra/cassandra-driver-parent/2.1.0/cassandra-driver-parent-2.1.0.pom
+fetchArtifact com/typesafe/sbt/compiler-interface/0.12.0/compiler-interface-0.12.0.pom.sha1
+fetchArtifact com/typesafe/sbt/compiler-interface/0.12.0/compiler-interface-0.12.0-sources.jar
+fetchArtifact com/typesafe/sbt/compiler-interface/0.12.0/compiler-interface-0.12.0.pom
+fetchArtifact com/typesafe/sbt/compiler-interface/0.12.0/compiler-interface-0.12.0-sources.jar.sha1
+fetchArtifact com/typesafe/sbt/sbt-interface/0.12.0/sbt-interface-0.12.0.jar.sha1
+fetchArtifact com/typesafe/sbt/sbt-interface/0.12.0/sbt-interface-0.12.0.jar
+fetchArtifact com/typesafe/sbt/sbt-interface/0.12.0/sbt-interface-0.12.0.pom
+fetchArtifact com/typesafe/sbt/sbt-interface/0.12.0/sbt-interface-0.12.0.pom.sha1
+fetchArtifact com/typesafe/sbt/incremental-compiler/0.12.0/incremental-compiler-0.12.0.jar.sha1
+fetchArtifact com/typesafe/sbt/incremental-compiler/0.12.0/incremental-compiler-0.12.0.pom.sha1
+fetchArtifact com/typesafe/sbt/incremental-compiler/0.12.0/incremental-compiler-0.12.0.jar
+fetchArtifact com/typesafe/sbt/incremental-compiler/0.12.0/incremental-compiler-0.12.0.pom
+fetchArtifact com/typesafe/config/1.2.1/config-1.2.1.pom.sha1
+fetchArtifact com/typesafe/config/1.2.1/config-1.2.1.jar.sha1
+fetchArtifact com/typesafe/config/1.2.1/config-1.2.1.pom
+fetchArtifact com/typesafe/config/1.2.1/config-1.2.1.jar
+fetchArtifact com/typesafe/zinc/zinc/0.1.0/zinc-0.1.0.jar
+fetchArtifact com/typesafe/zinc/zinc/0.1.0/zinc-0.1.0.pom.sha1
+fetchArtifact com/typesafe/zinc/zinc/0.1.0/zinc-0.1.0.pom
+fetchArtifact com/typesafe/zinc/zinc/0.1.0/zinc-0.1.0.jar.sha1
+fetchArtifact com/typesafe/akka/akka-actor_2.11/2.3.6/akka-actor_2.11-2.3.6.pom.sha1
+fetchArtifact com/typesafe/akka/akka-actor_2.11/2.3.6/akka-actor_2.11-2.3.6.jar.sha1
+fetchArtifact com/typesafe/akka/akka-actor_2.11/2.3.6/akka-actor_2.11-2.3.6.pom
+fetchArtifact com/typesafe/akka/akka-actor_2.11/2.3.6/akka-actor_2.11-2.3.6.jar
+fetchArtifact com/thoughtworks/paranamer/paranamer-parent/2.6/paranamer-parent-2.6.pom.sha1
+fetchArtifact com/thoughtworks/paranamer/paranamer-parent/2.6/paranamer-parent-2.6.pom
+fetchArtifact com/thoughtworks/paranamer/paranamer/2.6/paranamer-2.6.pom
+fetchArtifact com/thoughtworks/paranamer/paranamer/2.6/paranamer-2.6.jar.sha1
+fetchArtifact com/thoughtworks/paranamer/paranamer/2.6/paranamer-2.6.pom.sha1
+fetchArtifact com/thoughtworks/paranamer/paranamer/2.6/paranamer-2.6.jar
+fetchArtifact com/sun/jersey/jersey-server/1.18.1/jersey-server-1.18.1.pom
+fetchArtifact com/sun/jersey/jersey-server/1.18.1/jersey-server-1.18.1.jar.sha1
+fetchArtifact com/sun/jersey/jersey-server/1.18.1/jersey-server-1.18.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-server/1.18.1/jersey-server-1.18.1.jar
+fetchArtifact com/sun/jersey/jersey-server/1.17.1/jersey-server-1.17.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-server/1.17.1/jersey-server-1.17.1.pom
+fetchArtifact com/sun/jersey/jersey-servlet/1.18.1/jersey-servlet-1.18.1.jar.sha1
+fetchArtifact com/sun/jersey/jersey-servlet/1.18.1/jersey-servlet-1.18.1.jar
+fetchArtifact com/sun/jersey/jersey-servlet/1.18.1/jersey-servlet-1.18.1.pom
+fetchArtifact com/sun/jersey/jersey-servlet/1.18.1/jersey-servlet-1.18.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-core/1.18.1/jersey-core-1.18.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-core/1.18.1/jersey-core-1.18.1.jar
+fetchArtifact com/sun/jersey/jersey-core/1.18.1/jersey-core-1.18.1.pom
+fetchArtifact com/sun/jersey/jersey-core/1.18.1/jersey-core-1.18.1.jar.sha1
+fetchArtifact com/sun/jersey/jersey-core/1.17.1/jersey-core-1.17.1.pom
+fetchArtifact com/sun/jersey/jersey-core/1.17.1/jersey-core-1.17.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-project/1.18.1/jersey-project-1.18.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-project/1.18.1/jersey-project-1.18.1.pom
+fetchArtifact com/sun/jersey/jersey-project/1.17.1/jersey-project-1.17.1.pom.sha1
+fetchArtifact com/sun/jersey/jersey-project/1.17.1/jersey-project-1.17.1.pom
+fetchArtifact com/sun/jersey/contribs/jersey-guice/1.18.1/jersey-guice-1.18.1.pom.sha1
+fetchArtifact com/sun/jersey/contribs/jersey-guice/1.18.1/jersey-guice-1.18.1.jar.sha1
+fetchArtifact com/sun/jersey/contribs/jersey-guice/1.18.1/jersey-guice-1.18.1.jar
+fetchArtifact com/sun/jersey/contribs/jersey-guice/1.18.1/jersey-guice-1.18.1.pom
+fetchArtifact com/sun/jersey/contribs/jersey-contribs/1.18.1/jersey-contribs-1.18.1.pom
+fetchArtifact com/sun/jersey/contribs/jersey-contribs/1.18.1/jersey-contribs-1.18.1.pom.sha1
+fetchArtifact com/sun/mail/all/1.4.5/all-1.4.5.pom
+fetchArtifact com/sun/mail/all/1.4.5/all-1.4.5.pom.sha1
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.jar
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.pom
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.jar.sha1
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.pom.sha1
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom.sha1
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar.sha1
+fetchArtifact jgraph/jgraph/5.13.0.0/jgraph-5.13.0.0.jar
+fetchArtifact jgraph/jgraph/5.13.0.0/jgraph-5.13.0.0.pom
+fetchArtifact jgraph/jgraph/5.13.0.0/jgraph-5.13.0.0.pom.sha1
+fetchArtifact jgraph/jgraph/5.13.0.0/jgraph-5.13.0.0.jar.sha1
+fetchArtifact asm/asm-parent/3.3.1/asm-parent-3.3.1.pom
+fetchArtifact asm/asm-parent/3.3.1/asm-parent-3.3.1.pom.sha1
+fetchArtifact asm/asm-parent/3.1/asm-parent-3.1.pom.sha1
+fetchArtifact asm/asm-parent/3.1/asm-parent-3.1.pom
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.pom
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.jar
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.pom.sha1
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.jar.sha1
+fetchArtifact asm/asm/3.1/asm-3.1.pom.sha1
+fetchArtifact asm/asm/3.1/asm-3.1.pom
+fetchArtifact jline/jline/0.9.94/jline-0.9.94.pom
+fetchArtifact jline/jline/0.9.94/jline-0.9.94.pom.sha1
+fetchArtifact jline/jline/0.9.94/jline-0.9.94.jar.sha1
+fetchArtifact jline/jline/0.9.94/jline-0.9.94.jar
+fetchArtifact xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.pom
+fetchArtifact xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.pom.sha1
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.pom
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.pom.sha1
+fetchArtifact xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.pom
+fetchArtifact xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.pom.sha1
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.pom
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar.sha1
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.pom.sha1
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.pom.sha1
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.jar
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.pom
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.jar.sha1
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.pom
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.pom.sha1
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom.sha1
+fetchArtifact org/vafer/jdependency/0.9/jdependency-0.9.jar
+fetchArtifact org/vafer/jdependency/0.9/jdependency-0.9.jar.sha1
+fetchArtifact org/vafer/jdependency/0.9/jdependency-0.9.pom
+fetchArtifact org/vafer/jdependency/0.9/jdependency-0.9.pom.sha1
+fetchArtifact org/joda/joda-convert/1.7/joda-convert-1.7.jar.sha1
+fetchArtifact org/joda/joda-convert/1.7/joda-convert-1.7.jar
+fetchArtifact org/joda/joda-convert/1.7/joda-convert-1.7.pom
+fetchArtifact org/joda/joda-convert/1.7/joda-convert-1.7.pom.sha1
+fetchArtifact org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.pom
+fetchArtifact org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.jar.sha1
+fetchArtifact org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.pom.sha1
+fetchArtifact org/mockito/mockito-core/1.9.5/mockito-core-1.9.5.jar
+fetchArtifact org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.jar
+fetchArtifact org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.pom.sha1
+fetchArtifact org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.pom
+fetchArtifact org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.jar.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht-ext/0.9.1/jgrapht-ext-0.9.1.pom.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht-ext/0.9.1/jgrapht-ext-0.9.1.jar
+fetchArtifact org/javabits/jgrapht/jgrapht-ext/0.9.1/jgrapht-ext-0.9.1.pom
+fetchArtifact org/javabits/jgrapht/jgrapht-ext/0.9.1/jgrapht-ext-0.9.1.jar.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht-core/0.9.1/jgrapht-core-0.9.1.pom
+fetchArtifact org/javabits/jgrapht/jgrapht-core/0.9.1/jgrapht-core-0.9.1.jar
+fetchArtifact org/javabits/jgrapht/jgrapht-core/0.9.1/jgrapht-core-0.9.1.jar.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht-core/0.9.1/jgrapht-core-0.9.1.pom.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht/0.9.1/jgrapht-0.9.1.pom.sha1
+fetchArtifact org/javabits/jgrapht/jgrapht/0.9.1/jgrapht-0.9.1.pom
+fetchArtifact org/scala-lang/scala-compiler/2.11.2/scala-compiler-2.11.2.pom
+fetchArtifact org/scala-lang/scala-compiler/2.11.2/scala-compiler-2.11.2.jar.sha1
+fetchArtifact org/scala-lang/scala-compiler/2.11.2/scala-compiler-2.11.2.jar
+fetchArtifact org/scala-lang/scala-compiler/2.11.2/scala-compiler-2.11.2.pom.sha1
+fetchArtifact org/scala-lang/scala-compiler/2.11.0-RC3/scala-compiler-2.11.0-RC3.jar.sha1
+fetchArtifact org/scala-lang/scala-compiler/2.11.0-RC3/scala-compiler-2.11.0-RC3.jar
+fetchArtifact org/scala-lang/scala-compiler/2.11.0-RC3/scala-compiler-2.11.0-RC3.pom.sha1
+fetchArtifact org/scala-lang/scala-compiler/2.11.0-RC3/scala-compiler-2.11.0-RC3.pom
+fetchArtifact org/scala-lang/scala-compiler/2.9.2/scala-compiler-2.9.2.jar
+fetchArtifact org/scala-lang/scala-compiler/2.9.2/scala-compiler-2.9.2.pom.sha1
+fetchArtifact org/scala-lang/scala-compiler/2.9.2/scala-compiler-2.9.2.pom
+fetchArtifact org/scala-lang/scala-compiler/2.9.2/scala-compiler-2.9.2.jar.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar
+fetchArtifact org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.pom
+fetchArtifact org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.pom.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.2/scala-library-2.11.2.pom.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.2/scala-library-2.11.2.jar.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.2/scala-library-2.11.2.pom
+fetchArtifact org/scala-lang/scala-library/2.11.2/scala-library-2.11.2.jar
+fetchArtifact org/scala-lang/scala-library/2.11.0-RC3/scala-library-2.11.0-RC3.pom
+fetchArtifact org/scala-lang/scala-library/2.11.0-RC3/scala-library-2.11.0-RC3.pom.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.0-RC3/scala-library-2.11.0-RC3.jar
+fetchArtifact org/scala-lang/scala-library/2.11.0-RC3/scala-library-2.11.0-RC3.jar.sha1
+fetchArtifact org/scala-lang/scala-library/2.11.0/scala-library-2.11.0.pom
+fetchArtifact org/scala-lang/scala-library/2.11.0/scala-library-2.11.0.pom.sha1
+fetchArtifact org/scala-lang/scala-library/2.9.2/scala-library-2.9.2.pom.sha1
+fetchArtifact org/scala-lang/scala-library/2.9.2/scala-library-2.9.2.pom
+fetchArtifact org/scala-lang/scala-library/2.9.2/scala-library-2.9.2.jar.sha1
+fetchArtifact org/scala-lang/scala-library/2.9.2/scala-library-2.9.2.jar
+fetchArtifact org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.pom.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.pom
+fetchArtifact org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2.jar
+fetchArtifact org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2.jar.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2.pom
+fetchArtifact org/scala-lang/scala-reflect/2.11.2/scala-reflect-2.11.2.pom.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.0-RC3/scala-reflect-2.11.0-RC3.pom.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.0-RC3/scala-reflect-2.11.0-RC3.jar.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.0-RC3/scala-reflect-2.11.0-RC3.pom
+fetchArtifact org/scala-lang/scala-reflect/2.11.0-RC3/scala-reflect-2.11.0-RC3.jar
+fetchArtifact org/scala-lang/scala-reflect/2.11.0/scala-reflect-2.11.0.pom.sha1
+fetchArtifact org/scala-lang/scala-reflect/2.11.0/scala-reflect-2.11.0.pom
+fetchArtifact org/scala-lang/modules/scala-xml_2.11.0-RC3/1.0.1/scala-xml_2.11.0-RC3-1.0.1.pom
+fetchArtifact org/scala-lang/modules/scala-xml_2.11.0-RC3/1.0.1/scala-xml_2.11.0-RC3-1.0.1.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-xml_2.11.0-RC3/1.0.1/scala-xml_2.11.0-RC3-1.0.1.jar
+fetchArtifact org/scala-lang/modules/scala-xml_2.11.0-RC3/1.0.1/scala-xml_2.11.0-RC3-1.0.1.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11.0-RC3/1.0.1/scala-parser-combinators_2.11.0-RC3-1.0.1.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11.0-RC3/1.0.1/scala-parser-combinators_2.11.0-RC3-1.0.1.jar
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11.0-RC3/1.0.1/scala-parser-combinators_2.11.0-RC3-1.0.1.pom
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11.0-RC3/1.0.1/scala-parser-combinators_2.11.0-RC3-1.0.1.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.pom
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.2/scala-parser-combinators_2.11-1.0.2.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.2/scala-parser-combinators_2.11-1.0.2.jar
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.2/scala-parser-combinators_2.11-1.0.2.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-parser-combinators_2.11/1.0.2/scala-parser-combinators_2.11-1.0.2.pom
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.1/scala-xml_2.11-1.0.1.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.1/scala-xml_2.11-1.0.1.pom
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.1/scala-xml_2.11-1.0.1.jar
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.1/scala-xml_2.11-1.0.1.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.pom.sha1
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar.sha1
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.pom
+fetchArtifact org/scala-lang/modules/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar
+fetchArtifact org/scala-sbt/test-interface/1.0/test-interface-1.0.jar.sha1
+fetchArtifact org/scala-sbt/test-interface/1.0/test-interface-1.0.pom.sha1
+fetchArtifact org/scala-sbt/test-interface/1.0/test-interface-1.0.pom
+fetchArtifact org/scala-sbt/test-interface/1.0/test-interface-1.0.jar
+fetchArtifact org/specs2/specs2_2.11.0-RC3/2.3.10/specs2_2.11.0-RC3-2.3.10.jar.sha1
+fetchArtifact org/specs2/specs2_2.11.0-RC3/2.3.10/specs2_2.11.0-RC3-2.3.10.pom.sha1
+fetchArtifact org/specs2/specs2_2.11.0-RC3/2.3.10/specs2_2.11.0-RC3-2.3.10.pom
+fetchArtifact org/specs2/specs2_2.11.0-RC3/2.3.10/specs2_2.11.0-RC3-2.3.10.jar
+fetchArtifact org/specs2/classycle/1.4.3/classycle-1.4.3.jar
+fetchArtifact org/specs2/classycle/1.4.3/classycle-1.4.3.pom
+fetchArtifact org/specs2/classycle/1.4.3/classycle-1.4.3.jar.sha1
+fetchArtifact org/specs2/classycle/1.4.3/classycle-1.4.3.pom.sha1
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.pom
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.jar
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.jar.sha1
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.pom.sha1
+fetchArtifact org/jboss/shrinkwrap/shrinkwrap-bom/1.0.1/shrinkwrap-bom-1.0.1.pom
+fetchArtifact org/jboss/shrinkwrap/shrinkwrap-bom/1.0.1/shrinkwrap-bom-1.0.1.pom.sha1
+fetchArtifact org/jboss/shrinkwrap/descriptors/shrinkwrap-descriptors-bom/2.0.0-alpha-3/shrinkwrap-descriptors-bom-2.0.0-alpha-3.pom.sha1
+fetchArtifact org/jboss/shrinkwrap/descriptors/shrinkwrap-descriptors-bom/2.0.0-alpha-3/shrinkwrap-descriptors-bom-2.0.0-alpha-3.pom
+fetchArtifact org/jboss/shrinkwrap/resolver/shrinkwrap-resolver-bom/1.0.0-beta-7/shrinkwrap-resolver-bom-1.0.0-beta-7.pom
+fetchArtifact org/jboss/shrinkwrap/resolver/shrinkwrap-resolver-bom/1.0.0-beta-7/shrinkwrap-resolver-bom-1.0.0-beta-7.pom.sha1
+fetchArtifact org/jboss/jboss-parent/9/jboss-parent-9.pom.sha1
+fetchArtifact org/jboss/jboss-parent/9/jboss-parent-9.pom
+fetchArtifact org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.pom
+fetchArtifact org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.jar
+fetchArtifact org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.jar.sha1
+fetchArtifact org/jboss/logging/jboss-logging/3.1.3.GA/jboss-logging-3.1.3.GA.pom.sha1
+fetchArtifact org/jboss/arquillian/arquillian-bom/1.0.2.Final/arquillian-bom-1.0.2.Final.pom
+fetchArtifact org/jboss/arquillian/arquillian-bom/1.0.2.Final/arquillian-bom-1.0.2.Final.pom.sha1
+fetchArtifact org/rogach/scallop_2.11/0.9.5/scallop_2.11-0.9.5.jar.sha1
+fetchArtifact org/rogach/scallop_2.11/0.9.5/scallop_2.11-0.9.5.pom
+fetchArtifact org/rogach/scallop_2.11/0.9.5/scallop_2.11-0.9.5.pom.sha1
+fetchArtifact org/rogach/scallop_2.11/0.9.5/scallop_2.11-0.9.5.jar
+fetchArtifact org/scalacheck/scalacheck_2.11.0-RC3/1.11.3/scalacheck_2.11.0-RC3-1.11.3.pom
+fetchArtifact org/scalacheck/scalacheck_2.11.0-RC3/1.11.3/scalacheck_2.11.0-RC3-1.11.3.jar.sha1
+fetchArtifact org/scalacheck/scalacheck_2.11.0-RC3/1.11.3/scalacheck_2.11.0-RC3-1.11.3.jar
+fetchArtifact org/scalacheck/scalacheck_2.11.0-RC3/1.11.3/scalacheck_2.11.0-RC3-1.11.3.pom.sha1
+fetchArtifact org/tinyjee/jgraphx/jgraphx/2.0.0.1/jgraphx-2.0.0.1.jar.sha1
+fetchArtifact org/tinyjee/jgraphx/jgraphx/2.0.0.1/jgraphx-2.0.0.1.pom
+fetchArtifact org/tinyjee/jgraphx/jgraphx/2.0.0.1/jgraphx-2.0.0.1.jar
+fetchArtifact org/tinyjee/jgraphx/jgraphx/2.0.0.1/jgraphx-2.0.0.1.pom.sha1
+fetchArtifact org/hibernate/hibernate-validator/5.1.2.Final/hibernate-validator-5.1.2.Final.jar
+fetchArtifact org/hibernate/hibernate-validator/5.1.2.Final/hibernate-validator-5.1.2.Final.pom
+fetchArtifact org/hibernate/hibernate-validator/5.1.2.Final/hibernate-validator-5.1.2.Final.jar.sha1
+fetchArtifact org/hibernate/hibernate-validator/5.1.2.Final/hibernate-validator-5.1.2.Final.pom.sha1
+fetchArtifact org/hibernate/hibernate-validator-parent/5.1.2.Final/hibernate-validator-parent-5.1.2.Final.pom.sha1
+fetchArtifact org/hibernate/hibernate-validator-parent/5.1.2.Final/hibernate-validator-parent-5.1.2.Final.pom
+fetchArtifact org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.pom.sha1
+fetchArtifact org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.pom
+fetchArtifact org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar
+fetchArtifact org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.pom
+fetchArtifact org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.pom.sha1
+fetchArtifact org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar.sha1
+fetchArtifact org/slf4j/slf4j-api/1.7.6/slf4j-api-1.7.6.pom
+fetchArtifact org/slf4j/slf4j-api/1.7.6/slf4j-api-1.7.6.pom.sha1
+fetchArtifact org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar
+fetchArtifact org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.pom
+fetchArtifact org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.pom.sha1
+fetchArtifact org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar.sha1
+fetchArtifact org/slf4j/jul-to-slf4j/1.7.7/jul-to-slf4j-1.7.7.jar.sha1
+fetchArtifact org/slf4j/jul-to-slf4j/1.7.7/jul-to-slf4j-1.7.7.pom.sha1
+fetchArtifact org/slf4j/jul-to-slf4j/1.7.7/jul-to-slf4j-1.7.7.pom
+fetchArtifact org/slf4j/jul-to-slf4j/1.7.7/jul-to-slf4j-1.7.7.jar
+fetchArtifact org/slf4j/slf4j-parent/1.7.5/slf4j-parent-1.7.5.pom
+fetchArtifact org/slf4j/slf4j-parent/1.7.5/slf4j-parent-1.7.5.pom.sha1
+fetchArtifact org/slf4j/slf4j-parent/1.7.7/slf4j-parent-1.7.7.pom
+fetchArtifact org/slf4j/slf4j-parent/1.7.7/slf4j-parent-1.7.7.pom.sha1
+fetchArtifact org/slf4j/slf4j-parent/1.7.6/slf4j-parent-1.7.6.pom.sha1
+fetchArtifact org/slf4j/slf4j-parent/1.7.6/slf4j-parent-1.7.6.pom
+fetchArtifact org/slf4j/slf4j-parent/1.6.1/slf4j-parent-1.6.1.pom
+fetchArtifact org/slf4j/slf4j-parent/1.6.1/slf4j-parent-1.6.1.pom.sha1
+fetchArtifact org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.jar
+fetchArtifact org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.pom
+fetchArtifact org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.jar.sha1
+fetchArtifact org/slf4j/slf4j-log4j12/1.7.7/slf4j-log4j12-1.7.7.pom.sha1
+fetchArtifact org/apache/xbean/xbean/3.4/xbean-3.4.pom.sha1
+fetchArtifact org/apache/xbean/xbean/3.4/xbean-3.4.pom
+fetchArtifact org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom.sha1
+fetchArtifact org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar.sha1
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.pom
+fetchArtifact org/apache/httpcomponents/httpcomponents-core/4.0.1/httpcomponents-core-4.0.1.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpcomponents-core/4.0.1/httpcomponents-core-4.0.1.pom
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.pom
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.jar.sha1
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.jar
+fetchArtifact org/apache/httpcomponents/httpcomponents-client/4.0.2/httpcomponents-client-4.0.2.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpcomponents-client/4.0.2/httpcomponents-client-4.0.2.pom
+fetchArtifact org/apache/httpcomponents/project/4.0/project-4.0.pom.sha1
+fetchArtifact org/apache/httpcomponents/project/4.0/project-4.0.pom
+fetchArtifact org/apache/httpcomponents/project/4.1/project-4.1.pom
+fetchArtifact org/apache/httpcomponents/project/4.1/project-4.1.pom.sha1
+fetchArtifact org/apache/ant/ant-launcher/1.8.2/ant-launcher-1.8.2.jar.sha1
+fetchArtifact org/apache/ant/ant-launcher/1.8.2/ant-launcher-1.8.2.jar
+fetchArtifact org/apache/ant/ant-launcher/1.8.2/ant-launcher-1.8.2.pom
+fetchArtifact org/apache/ant/ant-launcher/1.8.2/ant-launcher-1.8.2.pom.sha1
+fetchArtifact org/apache/ant/ant/1.8.2/ant-1.8.2.jar
+fetchArtifact org/apache/ant/ant/1.8.2/ant-1.8.2.pom.sha1
+fetchArtifact org/apache/ant/ant/1.8.2/ant-1.8.2.pom
+fetchArtifact org/apache/ant/ant/1.8.2/ant-1.8.2.jar.sha1
+fetchArtifact org/apache/ant/ant-parent/1.8.2/ant-parent-1.8.2.pom.sha1
+fetchArtifact org/apache/ant/ant-parent/1.8.2/ant-parent-1.8.2.pom
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.jar.sha1
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.pom.sha1
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.jar
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.pom
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.pom
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.6/maven-resources-plugin-2.6.jar
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.3/maven-shade-plugin-2.3.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.3/maven-shade-plugin-2.3.jar
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.3/maven-shade-plugin-2.3.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.3/maven-shade-plugin-2.3.pom
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.pom
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.3.2/maven-compiler-plugin-2.3.2.jar
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.jar
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.pom
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.jar
+fetchArtifact org/apache/maven/plugins/maven-antrun-plugin/1.7/maven-antrun-plugin-1.7.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-antrun-plugin/1.7/maven-antrun-plugin-1.7.pom
+fetchArtifact org/apache/maven/plugins/maven-antrun-plugin/1.7/maven-antrun-plugin-1.7.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-antrun-plugin/1.7/maven-antrun-plugin-1.7.jar
+fetchArtifact org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/18/maven-plugins-18.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/18/maven-plugins-18.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/25/maven-plugins-25.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/25/maven-plugins-25.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/23/maven-plugins-23.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-report-plugin/2.14.1/maven-surefire-report-plugin-2.14.1.pom
+fetchArtifact org/apache/maven/plugins/maven-surefire-report-plugin/2.14.1/maven-surefire-report-plugin-2.14.1.jar
+fetchArtifact org/apache/maven/plugins/maven-surefire-report-plugin/2.14.1/maven-surefire-report-plugin-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-report-plugin/2.14.1/maven-surefire-report-plugin-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.14.1/maven-surefire-plugin-2.14.1.jar
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.14.1/maven-surefire-plugin-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.14.1/maven-surefire-plugin-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.14.1/maven-surefire-plugin-2.14.1.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.pom
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.jar
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/1.2/maven-dependency-tree-1.2.pom
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.jar
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.pom
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.pom
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.pom
+fetchArtifact org/apache/maven/shared/maven-filtering/1.1/maven-filtering-1.1.jar
+fetchArtifact org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/9/maven-shared-components-9.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/9/maven-shared-components-9.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/12/maven-shared-components-12.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/12/maven-shared-components-12.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/8/maven-shared-components-8.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/8/maven-shared-components-8.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/15/maven-shared-components-15.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/15/maven-shared-components-15.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/11/maven-shared-components-11.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/11/maven-shared-components-11.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/10/maven-shared-components-10.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/10/maven-shared-components-10.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.jar
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.pom
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.jar
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.jar.sha1
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.jar.sha1
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.jar
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.pom
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.jar
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.pom
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.pom
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.jar
+fetchArtifact org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.jar
+fetchArtifact org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.pom
+fetchArtifact org/apache/maven/shared/maven-shared-utils/0.4/maven-shared-utils-0.4.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.pom
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.5/maven-artifact-manager-2.0.5.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.5/maven-artifact-manager-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.10/maven-artifact-manager-2.0.10.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.10/maven-artifact-manager-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.8/maven-artifact-manager-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.8/maven-artifact-manager-2.0.8.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.2/maven-artifact-manager-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.2/maven-artifact-manager-2.0.2.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.11/maven-artifact-manager-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.11/maven-artifact-manager-2.0.11.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.jar
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-tools/3.2/maven-plugin-tools-3.2.pom
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-tools/3.2/maven-plugin-tools-3.2.pom.sha1
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/maven-plugin-annotations-3.2.pom.sha1
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/maven-plugin-annotations-3.2.jar
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/maven-plugin-annotations-3.2.pom
+fetchArtifact org/apache/maven/plugin-tools/maven-plugin-annotations/3.2/maven-plugin-annotations-3.2.jar.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.5/maven-profile-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.5/maven-profile-2.0.5.pom
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.pom
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.10/maven-profile-2.0.10.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.10/maven-profile-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.8/maven-profile-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.8/maven-profile-2.0.8.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.11/maven-profile-2.0.11.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.11/maven-profile-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.jar
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.pom
+fetchArtifact org/apache/maven/maven-project/2.0.5/maven-project-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.5/maven-project-2.0.5.pom
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.pom
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.10/maven-project-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.10/maven-project-2.0.10.pom
+fetchArtifact org/apache/maven/maven-project/2.0.8/maven-project-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.8/maven-project-2.0.8.pom
+fetchArtifact org/apache/maven/maven-project/2.0.11/maven-project-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.11/maven-project-2.0.11.pom
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.pom
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar
+fetchArtifact org/apache/maven/maven-model/2.0.5/maven-model-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.5/maven-model-2.0.5.pom
+fetchArtifact org/apache/maven/maven-model/2.2.0/maven-model-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.2.0/maven-model-2.2.0.pom
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.pom
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.10/maven-model-2.0.10.pom
+fetchArtifact org/apache/maven/maven-model/2.0.10/maven-model-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.8/maven-model-2.0.8.pom
+fetchArtifact org/apache/maven/maven-model/2.0.8/maven-model-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.11/maven-model-2.0.11.pom
+fetchArtifact org/apache/maven/maven-model/2.0.11/maven-model-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.pom
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire/2.14.1/surefire-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire/2.14.1/surefire-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/surefire-report-parser/2.14.1/surefire-report-parser-2.14.1.jar
+fetchArtifact org/apache/maven/surefire/surefire-report-parser/2.14.1/surefire-report-parser-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/surefire/surefire-report-parser/2.14.1/surefire-report-parser-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/surefire-report-parser/2.14.1/surefire-report-parser-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-junit4/2.14.1/surefire-junit4-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/surefire-junit4/2.14.1/surefire-junit4-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/surefire/surefire-junit4/2.14.1/surefire-junit4-2.14.1.jar
+fetchArtifact org/apache/maven/surefire/surefire-junit4/2.14.1/surefire-junit4-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.14.1/maven-surefire-common-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.14.1/maven-surefire-common-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.14.1/maven-surefire-common-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.14.1/maven-surefire-common-2.14.1.jar
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.14.1/surefire-booter-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.14.1/surefire-booter-2.14.1.jar
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.14.1/surefire-booter-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.14.1/surefire-booter-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/surefire/surefire-api/2.14.1/surefire-api-2.14.1.pom
+fetchArtifact org/apache/maven/surefire/surefire-api/2.14.1/surefire-api-2.14.1.jar
+fetchArtifact org/apache/maven/surefire/surefire-api/2.14.1/surefire-api-2.14.1.jar.sha1
+fetchArtifact org/apache/maven/surefire/surefire-api/2.14.1/surefire-api-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-providers/2.14.1/surefire-providers-2.14.1.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-providers/2.14.1/surefire-providers-2.14.1.pom
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.pom
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.5/maven-repository-metadata-2.0.5.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.5/maven-repository-metadata-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.2.0/maven-repository-metadata-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.2.0/maven-repository-metadata-2.2.0.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.10/maven-repository-metadata-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.10/maven-repository-metadata-2.0.10.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.8/maven-repository-metadata-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.8/maven-repository-metadata-2.0.8.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.2/maven-repository-metadata-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.2/maven-repository-metadata-2.0.2.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.11/maven-repository-metadata-2.0.11.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.11/maven-repository-metadata-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.jar
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.pom
+fetchArtifact org/apache/maven/maven/2.0.5/maven-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.5/maven-2.0.5.pom
+fetchArtifact org/apache/maven/maven/2.2.0/maven-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven/2.2.0/maven-2.2.0.pom
+fetchArtifact org/apache/maven/maven/3.0/maven-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven/3.0/maven-3.0.pom
+fetchArtifact org/apache/maven/maven/2.0.6/maven-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.6/maven-2.0.6.pom
+fetchArtifact org/apache/maven/maven/2.0.10/maven-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.10/maven-2.0.10.pom
+fetchArtifact org/apache/maven/maven/2.0.8/maven-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.8/maven-2.0.8.pom
+fetchArtifact org/apache/maven/maven/2.2.1/maven-2.2.1.pom
+fetchArtifact org/apache/maven/maven/2.2.1/maven-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.2/maven-2.0.2.pom
+fetchArtifact org/apache/maven/maven/2.0.2/maven-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.11/maven-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.11/maven-2.0.11.pom
+fetchArtifact org/apache/maven/maven/2.0.9/maven-2.0.9.pom
+fetchArtifact org/apache/maven/maven/2.0.9/maven-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.5/maven-artifact-2.0.5.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.5/maven-artifact-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.2.0/maven-artifact-2.2.0.pom
+fetchArtifact org/apache/maven/maven-artifact/2.2.0/maven-artifact-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.10/maven-artifact-2.0.10.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.10/maven-artifact-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.8/maven-artifact-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.8/maven-artifact-2.0.8.pom
+fetchArtifact org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom
+fetchArtifact org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.2/maven-artifact-2.0.2.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.2/maven-artifact-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.11/maven-artifact-2.0.11.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.11/maven-artifact-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.jar
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.5/maven-settings-2.0.5.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.5/maven-settings-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.2.0/maven-settings-2.2.0.pom
+fetchArtifact org/apache/maven/maven-settings/2.2.0/maven-settings-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.10/maven-settings-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.10/maven-settings-2.0.10.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.8/maven-settings-2.0.8.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.8/maven-settings-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.11/maven-settings-2.0.11.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.11/maven-settings-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.jar
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.pom
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.pom
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.10/maven-plugin-registry-2.0.10.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.10/maven-plugin-registry-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.8/maven-plugin-registry-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.8/maven-plugin-registry-2.0.8.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.11/maven-plugin-registry-2.0.11.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.11/maven-plugin-registry-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.jar
+fetchArtifact org/apache/maven/maven-parent/7/maven-parent-7.pom
+fetchArtifact org/apache/maven/maven-parent/7/maven-parent-7.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/4/maven-parent-4.pom
+fetchArtifact org/apache/maven/maven-parent/4/maven-parent-4.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/16/maven-parent-16.pom
+fetchArtifact org/apache/maven/maven-parent/16/maven-parent-16.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/22/maven-parent-22.pom
+fetchArtifact org/apache/maven/maven-parent/22/maven-parent-22.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/9/maven-parent-9.pom
+fetchArtifact org/apache/maven/maven-parent/9/maven-parent-9.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/24/maven-parent-24.pom
+fetchArtifact org/apache/maven/maven-parent/24/maven-parent-24.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/13/maven-parent-13.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/13/maven-parent-13.pom
+fetchArtifact org/apache/maven/maven-parent/5/maven-parent-5.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/5/maven-parent-5.pom
+fetchArtifact org/apache/maven/maven-parent/6/maven-parent-6.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/6/maven-parent-6.pom
+fetchArtifact org/apache/maven/maven-parent/21/maven-parent-21.pom
+fetchArtifact org/apache/maven/maven-parent/21/maven-parent-21.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/12/maven-parent-12.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/12/maven-parent-12.pom
+fetchArtifact org/apache/maven/maven-parent/23/maven-parent-23.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/23/maven-parent-23.pom
+fetchArtifact org/apache/maven/maven-parent/8/maven-parent-8.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/8/maven-parent-8.pom
+fetchArtifact org/apache/maven/maven-parent/15/maven-parent-15.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/15/maven-parent-15.pom
+fetchArtifact org/apache/maven/maven-parent/11/maven-parent-11.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/11/maven-parent-11.pom
+fetchArtifact org/apache/maven/maven-parent/10/maven-parent-10.pom
+fetchArtifact org/apache/maven/maven-parent/10/maven-parent-10.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.pom
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.pom
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-2/wagon-1.0-beta-2.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1.0-beta-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1.0-beta-6.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-alpha-6/wagon-1.0-alpha-6.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-alpha-6/wagon-1.0-alpha-6.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.1/maven-reporting-impl-2.1.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.1/maven-reporting-impl-2.1.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.1/maven-reporting-impl-2.1.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.1/maven-reporting-impl-2.1.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.9/maven-reporting-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.9/maven-reporting-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.pom
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.10/maven-plugin-api-2.0.10.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.10/maven-plugin-api-2.0.10.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.8/maven-plugin-api-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.8/maven-plugin-api-2.0.8.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.11/maven-plugin-api-2.0.11.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.11/maven-plugin-api-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.jar
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.pom
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.pom.sha1
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.pom
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.0/doxia-modules-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.0/doxia-modules-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.1.4/doxia-modules-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.1.4/doxia-modules-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.1.2/doxia-modules-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.1.2/doxia-modules-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.4/doxia-decoration-model-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.4/doxia-decoration-model-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.4/doxia-decoration-model-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.4/doxia-decoration-model-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.2/doxia-decoration-model-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.1.2/doxia-decoration-model-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.4/doxia-module-fml-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.4/doxia-module-fml-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.4/doxia-module-fml-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.4/doxia-module-fml-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.2/doxia-module-fml-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.1.2/doxia-module-fml-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.0/doxia-sitetools-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.0/doxia-sitetools-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.1.4/doxia-sitetools-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.1.4/doxia-sitetools-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.1.2/doxia-sitetools-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.1.2/doxia-sitetools-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.4/doxia-core-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.4/doxia-core-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.4/doxia-core-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.4/doxia-core-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.2/doxia-core-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-core/1.1.2/doxia-core-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.4/doxia-logging-api-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.4/doxia-logging-api-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.4/doxia-logging-api-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.4/doxia-logging-api-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.2/doxia-logging-api-1.1.2.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.2/doxia-logging-api-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.2/doxia-logging-api-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.1.2/doxia-logging-api-1.1.2.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-10/doxia-sink-api-1.0-alpha-10.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-10/doxia-sink-api-1.0-alpha-10.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.4/doxia-sink-api-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.4/doxia-sink-api-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.4/doxia-sink-api-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.4/doxia-sink-api-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.2/doxia-sink-api-1.1.2.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.2/doxia-sink-api-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.2/doxia-sink-api-1.1.2.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.1.2/doxia-sink-api-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.4/doxia-module-xhtml-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.4/doxia-module-xhtml-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.4/doxia-module-xhtml-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.4/doxia-module-xhtml-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.2/doxia-module-xhtml-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.1.2/doxia-module-xhtml-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-10/doxia-1.0-alpha-10.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-10/doxia-1.0-alpha-10.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0/doxia-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0/doxia-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.1.4/doxia-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.1.4/doxia-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.1.2/doxia-1.1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.1.2/doxia-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.4/doxia-site-renderer-1.1.4.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.4/doxia-site-renderer-1.1.4.jar
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.4/doxia-site-renderer-1.1.4.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.4/doxia-site-renderer-1.1.4.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.2/doxia-site-renderer-1.1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.1.2/doxia-site-renderer-1.1.2.pom.sha1
+fetchArtifact org/apache/apache/7/apache-7.pom
+fetchArtifact org/apache/apache/7/apache-7.pom.sha1
+fetchArtifact org/apache/apache/4/apache-4.pom
+fetchArtifact org/apache/apache/4/apache-4.pom.sha1
+fetchArtifact org/apache/apache/1/apache-1.pom
+fetchArtifact org/apache/apache/1/apache-1.pom.sha1
+fetchArtifact org/apache/apache/9/apache-9.pom
+fetchArtifact org/apache/apache/9/apache-9.pom.sha1
+fetchArtifact org/apache/apache/14/apache-14.pom.sha1
+fetchArtifact org/apache/apache/14/apache-14.pom
+fetchArtifact org/apache/apache/13/apache-13.pom
+fetchArtifact org/apache/apache/13/apache-13.pom.sha1
+fetchArtifact org/apache/apache/3/apache-3.pom
+fetchArtifact org/apache/apache/3/apache-3.pom.sha1
+fetchArtifact org/apache/apache/5/apache-5.pom
+fetchArtifact org/apache/apache/5/apache-5.pom.sha1
+fetchArtifact org/apache/apache/6/apache-6.pom.sha1
+fetchArtifact org/apache/apache/6/apache-6.pom
+fetchArtifact org/apache/apache/11/apache-11.pom
+fetchArtifact org/apache/apache/11/apache-11.pom.sha1
+fetchArtifact org/apache/apache/10/apache-10.pom
+fetchArtifact org/apache/apache/10/apache-10.pom.sha1
+fetchArtifact org/apache/mesos/mesos/0.20.1/mesos-0.20.1.pom
+fetchArtifact org/apache/mesos/mesos/0.20.1/mesos-0.20.1.pom.sha1
+fetchArtifact org/apache/mesos/mesos/0.20.1/mesos-0.20.1.jar.sha1
+fetchArtifact org/apache/mesos/mesos/0.20.1/mesos-0.20.1.jar
+fetchArtifact org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.pom
+fetchArtifact org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.jar
+fetchArtifact org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.pom.sha1
+fetchArtifact org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.jar.sha1
+fetchArtifact org/apache/curator/apache-curator/2.6.0/apache-curator-2.6.0.pom
+fetchArtifact org/apache/curator/apache-curator/2.6.0/apache-curator-2.6.0.pom.sha1
+fetchArtifact org/apache/curator/curator-framework/2.6.0/curator-framework-2.6.0.pom.sha1
+fetchArtifact org/apache/curator/curator-framework/2.6.0/curator-framework-2.6.0.jar
+fetchArtifact org/apache/curator/curator-framework/2.6.0/curator-framework-2.6.0.pom
+fetchArtifact org/apache/curator/curator-framework/2.6.0/curator-framework-2.6.0.jar.sha1
+fetchArtifact org/apache/curator/curator-client/2.6.0/curator-client-2.6.0.jar
+fetchArtifact org/apache/curator/curator-client/2.6.0/curator-client-2.6.0.jar.sha1
+fetchArtifact org/apache/curator/curator-client/2.6.0/curator-client-2.6.0.pom.sha1
+fetchArtifact org/apache/curator/curator-client/2.6.0/curator-client-2.6.0.pom
+fetchArtifact org/apache/curator/curator-test/2.6.0/curator-test-2.6.0.pom.sha1
+fetchArtifact org/apache/curator/curator-test/2.6.0/curator-test-2.6.0.jar
+fetchArtifact org/apache/curator/curator-test/2.6.0/curator-test-2.6.0.pom
+fetchArtifact org/apache/curator/curator-test/2.6.0/curator-test-2.6.0.jar.sha1
+fetchArtifact org/apache/curator/curator-recipes/2.6.0/curator-recipes-2.6.0.jar.sha1
+fetchArtifact org/apache/curator/curator-recipes/2.6.0/curator-recipes-2.6.0.pom.sha1
+fetchArtifact org/apache/curator/curator-recipes/2.6.0/curator-recipes-2.6.0.pom
+fetchArtifact org/apache/curator/curator-recipes/2.6.0/curator-recipes-2.6.0.jar
+fetchArtifact org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.pom
+fetchArtifact org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar.sha1
+fetchArtifact org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar
+fetchArtifact org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.pom.sha1
+fetchArtifact org/apache/commons/commons-math/2.2/commons-math-2.2.jar.sha1
+fetchArtifact org/apache/commons/commons-math/2.2/commons-math-2.2.pom
+fetchArtifact org/apache/commons/commons-math/2.2/commons-math-2.2.jar
+fetchArtifact org/apache/commons/commons-math/2.2/commons-math-2.2.pom.sha1
+fetchArtifact org/apache/commons/commons-email/1.3.2/commons-email-1.3.2.jar
+fetchArtifact org/apache/commons/commons-email/1.3.2/commons-email-1.3.2.jar.sha1
+fetchArtifact org/apache/commons/commons-email/1.3.2/commons-email-1.3.2.pom.sha1
+fetchArtifact org/apache/commons/commons-email/1.3.2/commons-email-1.3.2.pom
+fetchArtifact org/apache/commons/commons-exec/1.0.1/commons-exec-1.0.1.jar
+fetchArtifact org/apache/commons/commons-exec/1.0.1/commons-exec-1.0.1.pom.sha1
+fetchArtifact org/apache/commons/commons-exec/1.0.1/commons-exec-1.0.1.pom
+fetchArtifact org/apache/commons/commons-exec/1.0.1/commons-exec-1.0.1.jar.sha1
+fetchArtifact org/apache/commons/commons-parent/28/commons-parent-28.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/28/commons-parent-28.pom
+fetchArtifact org/apache/commons/commons-parent/7/commons-parent-7.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/7/commons-parent-7.pom
+fetchArtifact org/apache/commons/commons-parent/22/commons-parent-22.pom
+fetchArtifact org/apache/commons/commons-parent/22/commons-parent-22.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/9/commons-parent-9.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/9/commons-parent-9.pom
+fetchArtifact org/apache/commons/commons-parent/24/commons-parent-24.pom
+fetchArtifact org/apache/commons/commons-parent/24/commons-parent-24.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/17/commons-parent-17.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/17/commons-parent-17.pom
+fetchArtifact org/apache/commons/commons-parent/32/commons-parent-32.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/32/commons-parent-32.pom
+fetchArtifact org/apache/commons/commons-parent/5/commons-parent-5.pom
+fetchArtifact org/apache/commons/commons-parent/5/commons-parent-5.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/18/commons-parent-18.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/18/commons-parent-18.pom
+fetchArtifact org/apache/commons/commons-parent/11/commons-parent-11.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/11/commons-parent-11.pom
+fetchArtifact org/apache/commons/commons-math3/3.2/commons-math3-3.2.pom.sha1
+fetchArtifact org/apache/commons/commons-math3/3.2/commons-math3-3.2.jar.sha1
+fetchArtifact org/apache/commons/commons-math3/3.2/commons-math3-3.2.jar
+fetchArtifact org/apache/commons/commons-math3/3.2/commons-math3-3.2.pom
+fetchArtifact org/codehaus/jackson/jackson-mapper-asl/1.6.1/jackson-mapper-asl-1.6.1.pom
+fetchArtifact org/codehaus/jackson/jackson-mapper-asl/1.6.1/jackson-mapper-asl-1.6.1.jar
+fetchArtifact org/codehaus/jackson/jackson-mapper-asl/1.6.1/jackson-mapper-asl-1.6.1.pom.sha1
+fetchArtifact org/codehaus/jackson/jackson-mapper-asl/1.6.1/jackson-mapper-asl-1.6.1.jar.sha1
+fetchArtifact org/codehaus/jackson/jackson-core-asl/1.6.1/jackson-core-asl-1.6.1.jar
+fetchArtifact org/codehaus/jackson/jackson-core-asl/1.6.1/jackson-core-asl-1.6.1.pom.sha1
+fetchArtifact org/codehaus/jackson/jackson-core-asl/1.6.1/jackson-core-asl-1.6.1.pom
+fetchArtifact org/codehaus/jackson/jackson-core-asl/1.6.1/jackson-core-asl-1.6.1.jar.sha1
+fetchArtifact org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
+fetchArtifact org/codehaus/codehaus-parent/4/codehaus-parent-4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.3/plexus-components-1.3.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.3/plexus-components-1.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.2/plexus-components-1.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.2/plexus-components-1.2.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.12/plexus-components-1.1.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.12/plexus-components-1.1.12.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-20/plexus-containers-1.0-alpha-20.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-20/plexus-containers-1.0-alpha-20.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.4/plexus-containers-1.5.4.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.4/plexus-containers-1.5.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-20/plexus-container-default-1.0-alpha-20.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-20/plexus-container-default-1.0-alpha-20.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.8.1/plexus-compiler-javac-1.8.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.8.1/plexus-compiler-javac-1.8.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.8.1/plexus-compiler-javac-1.8.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.8.1/plexus-compiler-javac-1.8.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compilers/1.8.1/plexus-compilers-1.8.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compilers/1.8.1/plexus-compilers-1.8.1.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.4/plexus-component-annotations-1.5.4.pom
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.4/plexus-component-annotations-1.5.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.1/plexus-interpolation-1.1.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.1/plexus-interpolation-1.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.1/plexus-interpolation-1.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.1/plexus-interpolation-1.1.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.7/plexus-utils-1.5.7.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.7/plexus-utils-1.5.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/1.3/plexus-utils-1.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.3/plexus-utils-1.3.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.2/plexus-utils-1.4.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.2/plexus-utils-1.4.2.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.6/plexus-utils-1.4.6.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.6/plexus-utils-1.4.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.4/plexus-utils-2.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.4/plexus-utils-2.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.1/plexus-utils-2.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/2.1/plexus-utils-2.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.8.1/plexus-compiler-api-1.8.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.8.1/plexus-compiler-api-1.8.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.8.1/plexus-compiler-api-1.8.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.8.1/plexus-compiler-api-1.8.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.jar
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.pom
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.pom
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.8.1/plexus-compiler-manager-1.8.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.8.1/plexus-compiler-manager-1.8.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.8.1/plexus-compiler-manager-1.8.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.8.1/plexus-compiler-manager-1.8.1.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.5/plexus-2.0.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.5/plexus-2.0.5.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.12/plexus-1.0.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.12/plexus-1.0.12.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.3/plexus-3.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.3/plexus-3.3.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom
+fetchArtifact org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom
+fetchArtifact org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.2/plexus-3.2.pom
+fetchArtifact org/codehaus/plexus/plexus/3.2/plexus-3.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom
+fetchArtifact org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom
+fetchArtifact org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.pom
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler/1.8.1/plexus-compiler-1.8.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler/1.8.1/plexus-compiler-1.8.1.pom.sha1
+fetchArtifact org/parboiled/parboiled-java/1.1.4/parboiled-java-1.1.4.pom.sha1
+fetchArtifact org/parboiled/parboiled-java/1.1.4/parboiled-java-1.1.4.pom
+fetchArtifact org/parboiled/parboiled-java/1.1.4/parboiled-java-1.1.4.jar.sha1
+fetchArtifact org/parboiled/parboiled-java/1.1.4/parboiled-java-1.1.4.jar
+fetchArtifact org/parboiled/parboiled-core/1.1.4/parboiled-core-1.1.4.jar
+fetchArtifact org/parboiled/parboiled-core/1.1.4/parboiled-core-1.1.4.jar.sha1
+fetchArtifact org/parboiled/parboiled-core/1.1.4/parboiled-core-1.1.4.pom
+fetchArtifact org/parboiled/parboiled-core/1.1.4/parboiled-core-1.1.4.pom.sha1
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.pom.sha1
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.pom
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar.sha1
+fetchArtifact org/eclipse/aether/aether/0.9.0.M2/aether-0.9.0.M2.pom.sha1
+fetchArtifact org/eclipse/aether/aether/0.9.0.M2/aether-0.9.0.M2.pom
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.11.v20130520/jetty-server-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.11.v20130520/jetty-server-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.15.v20140411/jetty-server-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.15.v20140411/jetty-server-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.15.v20140411/jetty-server-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-server/8.1.15.v20140411/jetty-server-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.11.v20130520/jetty-continuation-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.11.v20130520/jetty-continuation-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.15.v20140411/jetty-continuation-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.15.v20140411/jetty-continuation-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.15.v20140411/jetty-continuation-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-continuation/8.1.15.v20140411/jetty-continuation-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-security/8.1.15.v20140411/jetty-security-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-security/8.1.15.v20140411/jetty-security-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-security/8.1.15.v20140411/jetty-security-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-security/8.1.15.v20140411/jetty-security-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.11.v20130520/jetty-util-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.11.v20130520/jetty-util-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.15.v20140411/jetty-util-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.15.v20140411/jetty-util-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.15.v20140411/jetty-util-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-util/8.1.15.v20140411/jetty-util-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-project/8.1.11.v20130520/jetty-project-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-project/8.1.11.v20130520/jetty-project-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-project/8.1.15.v20140411/jetty-project-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-project/8.1.15.v20140411/jetty-project-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.11.v20130520/jetty-http-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.11.v20130520/jetty-http-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.15.v20140411/jetty-http-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.15.v20140411/jetty-http-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.15.v20140411/jetty-http-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-http/8.1.15.v20140411/jetty-http-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-parent/20/jetty-parent-20.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-parent/20/jetty-parent-20.pom
+fetchArtifact org/eclipse/jetty/jetty-parent/18/jetty-parent-18.pom
+fetchArtifact org/eclipse/jetty/jetty-parent/18/jetty-parent-18.pom.sha1
+fetchArtifact org/eclipse/jetty/orbit/jetty-orbit/1/jetty-orbit-1.pom
+fetchArtifact org/eclipse/jetty/orbit/jetty-orbit/1/jetty-orbit-1.pom.sha1
+fetchArtifact org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar
+fetchArtifact org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.pom.sha1
+fetchArtifact org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.jar.sha1
+fetchArtifact org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.pom
+fetchArtifact org/eclipse/jetty/jetty-servlet/8.1.15.v20140411/jetty-servlet-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-servlet/8.1.15.v20140411/jetty-servlet-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-servlet/8.1.15.v20140411/jetty-servlet-8.1.15.v20140411.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-servlet/8.1.15.v20140411/jetty-servlet-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.11.v20130520/jetty-io-8.1.11.v20130520.pom
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.11.v20130520/jetty-io-8.1.11.v20130520.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.15.v20140411/jetty-io-8.1.15.v20140411.pom
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.15.v20140411/jetty-io-8.1.15.v20140411.pom.sha1
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.15.v20140411/jetty-io-8.1.15.v20140411.jar
+fetchArtifact org/eclipse/jetty/jetty-io/8.1.15.v20140411/jetty-io-8.1.15.v20140411.jar.sha1
+fetchArtifact org/scalaz/scalaz-core_2.11.0-RC3/7.0.6/scalaz-core_2.11.0-RC3-7.0.6.pom.sha1
+fetchArtifact org/scalaz/scalaz-core_2.11.0-RC3/7.0.6/scalaz-core_2.11.0-RC3-7.0.6.pom
+fetchArtifact org/scalaz/scalaz-core_2.11.0-RC3/7.0.6/scalaz-core_2.11.0-RC3-7.0.6.jar
+fetchArtifact org/scalaz/scalaz-core_2.11.0-RC3/7.0.6/scalaz-core_2.11.0-RC3-7.0.6.jar.sha1
+fetchArtifact org/scalaz/scalaz-effect_2.11.0-RC3/7.0.6/scalaz-effect_2.11.0-RC3-7.0.6.jar.sha1
+fetchArtifact org/scalaz/scalaz-effect_2.11.0-RC3/7.0.6/scalaz-effect_2.11.0-RC3-7.0.6.pom.sha1
+fetchArtifact org/scalaz/scalaz-effect_2.11.0-RC3/7.0.6/scalaz-effect_2.11.0-RC3-7.0.6.jar
+fetchArtifact org/scalaz/scalaz-effect_2.11.0-RC3/7.0.6/scalaz-effect_2.11.0-RC3-7.0.6.pom
+fetchArtifact org/scalaz/scalaz-concurrent_2.11.0-RC3/7.0.6/scalaz-concurrent_2.11.0-RC3-7.0.6.jar
+fetchArtifact org/scalaz/scalaz-concurrent_2.11.0-RC3/7.0.6/scalaz-concurrent_2.11.0-RC3-7.0.6.pom
+fetchArtifact org/scalaz/scalaz-concurrent_2.11.0-RC3/7.0.6/scalaz-concurrent_2.11.0-RC3-7.0.6.jar.sha1
+fetchArtifact org/scalaz/scalaz-concurrent_2.11.0-RC3/7.0.6/scalaz-concurrent_2.11.0-RC3-7.0.6.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
+fetchArtifact org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom
+fetchArtifact org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar.sha1
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom
+fetchArtifact org/hamcrest/hamcrest-parent/1.3/hamcrest-parent-1.3.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom
+fetchArtifact org/sonatype/oss/oss-parent/7/oss-parent-7.pom.sha1
+fetchArtifact org/sonatype/oss/oss-parent/7/oss-parent-7.pom
+fetchArtifact org/sonatype/oss/oss-parent/5/oss-parent-5.pom
+fetchArtifact org/sonatype/oss/oss-parent/5/oss-parent-5.pom.sha1
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.pom
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar.sha1
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.pom
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.pom
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.pom
+fetchArtifact org/sonatype/aether/aether-parent/1.7/aether-parent-1.7.pom
+fetchArtifact org/sonatype/aether/aether-parent/1.7/aether-parent-1.7.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-parent/1.4.2/sisu-parent-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-parent/1.4.2/sisu-parent-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject/1.4.2/sisu-inject-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject/1.4.2/sisu-inject-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/inject/guice-plexus/1.4.2/guice-plexus-1.4.2.pom
+fetchArtifact org/sonatype/sisu/inject/guice-plexus/1.4.2/guice-plexus-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/inject/guice-bean/1.4.2/guice-bean-1.4.2.pom
+fetchArtifact org/sonatype/sisu/inject/guice-bean/1.4.2/guice-bean-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar.sha1
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7.pom
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/16/spice-parent-16.pom
+fetchArtifact org/sonatype/spice/spice-parent/16/spice-parent-16.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/17/spice-parent-17.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/17/spice-parent-17.pom
+fetchArtifact org/sonatype/spice/spice-parent/12/spice-parent-12.pom
+fetchArtifact org/sonatype/spice/spice-parent/12/spice-parent-12.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/10/spice-parent-10.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/10/spice-parent-10.pom
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar.sha1
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar.sha1
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar.sha1
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom
+fetchArtifact org/sonatype/forge/forge-parent/4/forge-parent-4.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/4/forge-parent-4.pom
+fetchArtifact org/sonatype/forge/forge-parent/3/forge-parent-3.pom
+fetchArtifact org/sonatype/forge/forge-parent/3/forge-parent-3.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/5/forge-parent-5.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/5/forge-parent-5.pom
+fetchArtifact org/sonatype/forge/forge-parent/6/forge-parent-6.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/6/forge-parent-6.pom
+fetchArtifact org/sonatype/forge/forge-parent/10/forge-parent-10.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/10/forge-parent-10.pom
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.jar.sha1
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.pom.sha1
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.pom
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.jar
+fetchArtifact org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.pom
+fetchArtifact org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.pom.sha1
+fetchArtifact org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar.sha1
+fetchArtifact org/javassist/javassist/3.18.1-GA/javassist-3.18.1-GA.jar
+fetchArtifact org/ow2/asm/asm-parent/5.0.2/asm-parent-5.0.2.pom.sha1
+fetchArtifact org/ow2/asm/asm-parent/5.0.2/asm-parent-5.0.2.pom
+fetchArtifact org/ow2/asm/asm-parent/4.1/asm-parent-4.1.pom
+fetchArtifact org/ow2/asm/asm-parent/4.1/asm-parent-4.1.pom.sha1
+fetchArtifact org/ow2/asm/asm-analysis/5.0.2/asm-analysis-5.0.2.jar
+fetchArtifact org/ow2/asm/asm-analysis/5.0.2/asm-analysis-5.0.2.pom.sha1
+fetchArtifact org/ow2/asm/asm-analysis/5.0.2/asm-analysis-5.0.2.pom
+fetchArtifact org/ow2/asm/asm-analysis/5.0.2/asm-analysis-5.0.2.jar.sha1
+fetchArtifact org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.pom
+fetchArtifact org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.jar
+fetchArtifact org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.pom.sha1
+fetchArtifact org/ow2/asm/asm-analysis/4.1/asm-analysis-4.1.jar.sha1
+fetchArtifact org/ow2/asm/asm/5.0.2/asm-5.0.2.jar.sha1
+fetchArtifact org/ow2/asm/asm/5.0.2/asm-5.0.2.pom.sha1
+fetchArtifact org/ow2/asm/asm/5.0.2/asm-5.0.2.pom
+fetchArtifact org/ow2/asm/asm/5.0.2/asm-5.0.2.jar
+fetchArtifact org/ow2/asm/asm/4.1/asm-4.1.jar.sha1
+fetchArtifact org/ow2/asm/asm/4.1/asm-4.1.pom.sha1
+fetchArtifact org/ow2/asm/asm/4.1/asm-4.1.pom
+fetchArtifact org/ow2/asm/asm/4.1/asm-4.1.jar
+fetchArtifact org/ow2/asm/asm-util/5.0.2/asm-util-5.0.2.pom
+fetchArtifact org/ow2/asm/asm-util/5.0.2/asm-util-5.0.2.jar
+fetchArtifact org/ow2/asm/asm-util/5.0.2/asm-util-5.0.2.pom.sha1
+fetchArtifact org/ow2/asm/asm-util/5.0.2/asm-util-5.0.2.jar.sha1
+fetchArtifact org/ow2/asm/asm-util/4.1/asm-util-4.1.jar
+fetchArtifact org/ow2/asm/asm-util/4.1/asm-util-4.1.pom
+fetchArtifact org/ow2/asm/asm-util/4.1/asm-util-4.1.pom.sha1
+fetchArtifact org/ow2/asm/asm-util/4.1/asm-util-4.1.jar.sha1
+fetchArtifact org/ow2/asm/asm-tree/5.0.2/asm-tree-5.0.2.jar
+fetchArtifact org/ow2/asm/asm-tree/5.0.2/asm-tree-5.0.2.jar.sha1
+fetchArtifact org/ow2/asm/asm-tree/5.0.2/asm-tree-5.0.2.pom
+fetchArtifact org/ow2/asm/asm-tree/5.0.2/asm-tree-5.0.2.pom.sha1
+fetchArtifact org/ow2/asm/asm-tree/4.1/asm-tree-4.1.jar
+fetchArtifact org/ow2/asm/asm-tree/4.1/asm-tree-4.1.pom.sha1
+fetchArtifact org/ow2/asm/asm-tree/4.1/asm-tree-4.1.jar.sha1
+fetchArtifact org/ow2/asm/asm-tree/4.1/asm-tree-4.1.pom
+fetchArtifact org/ow2/asm/asm-commons/5.0.2/asm-commons-5.0.2.pom
+fetchArtifact org/ow2/asm/asm-commons/5.0.2/asm-commons-5.0.2.jar
+fetchArtifact org/ow2/asm/asm-commons/5.0.2/asm-commons-5.0.2.jar.sha1
+fetchArtifact org/ow2/asm/asm-commons/5.0.2/asm-commons-5.0.2.pom.sha1
+fetchArtifact org/ow2/ow2/1.3/ow2-1.3.pom.sha1
+fetchArtifact org/ow2/ow2/1.3/ow2-1.3.pom
+fetchArtifact org/glassfish/web/javax.el/2.2.5/javax.el-2.2.5.jar.sha1
+fetchArtifact org/glassfish/web/javax.el/2.2.5/javax.el-2.2.5.jar
+fetchArtifact org/glassfish/web/javax.el/2.2.5/javax.el-2.2.5.pom
+fetchArtifact org/glassfish/web/javax.el/2.2.5/javax.el-2.2.5.pom.sha1
+fetchArtifact org/pegdown/pegdown/1.2.1/pegdown-1.2.1.jar.sha1
+fetchArtifact org/pegdown/pegdown/1.2.1/pegdown-1.2.1.pom
+fetchArtifact org/pegdown/pegdown/1.2.1/pegdown-1.2.1.pom.sha1
+fetchArtifact org/pegdown/pegdown/1.2.1/pegdown-1.2.1.jar
+fetchArtifact junit/junit/4.11/junit-4.11.jar
+fetchArtifact junit/junit/4.11/junit-4.11.pom
+fetchArtifact junit/junit/4.11/junit-4.11.jar.sha1
+fetchArtifact junit/junit/4.11/junit-4.11.pom.sha1
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.pom
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.jar
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.jar.sha1
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.pom.sha1
+fetchArtifact junit/junit/3.8.2/junit-3.8.2.pom
+fetchArtifact junit/junit/3.8.2/junit-3.8.2.pom.sha1
+fetchArtifact joda-time/joda-time/2.3/joda-time-2.3.pom
+fetchArtifact joda-time/joda-time/2.3/joda-time-2.3.jar.sha1
+fetchArtifact joda-time/joda-time/2.3/joda-time-2.3.jar
+fetchArtifact joda-time/joda-time/2.3/joda-time-2.3.pom.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.pom.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.pom
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom
+fetchArtifact commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom.sha1
+fetchArtifact javax/inject/javax.inject/1/javax.inject-1.pom
+fetchArtifact javax/inject/javax.inject/1/javax.inject-1.jar
+fetchArtifact javax/inject/javax.inject/1/javax.inject-1.jar.sha1
+fetchArtifact javax/inject/javax.inject/1/javax.inject-1.pom.sha1
+fetchArtifact javax/el/javax.el-api/2.2.4/javax.el-api-2.2.4.pom.sha1
+fetchArtifact javax/el/javax.el-api/2.2.4/javax.el-api-2.2.4.jar.sha1
+fetchArtifact javax/el/javax.el-api/2.2.4/javax.el-api-2.2.4.jar
+fetchArtifact javax/el/javax.el-api/2.2.4/javax.el-api-2.2.4.pom
+fetchArtifact javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.pom
+fetchArtifact javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar.sha1
+fetchArtifact javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.pom.sha1
+fetchArtifact javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final.jar
+fetchArtifact javax/mail/mail/1.4.5/mail-1.4.5.pom.sha1
+fetchArtifact javax/mail/mail/1.4.5/mail-1.4.5.jar
+fetchArtifact javax/mail/mail/1.4.5/mail-1.4.5.pom
+fetchArtifact javax/mail/mail/1.4.5/mail-1.4.5.jar.sha1
+fetchArtifact javax/activation/activation/1.1/activation-1.1.pom.sha1
+fetchArtifact javax/activation/activation/1.1/activation-1.1.pom
+fetchArtifact javax/activation/activation/1.1.1/activation-1.1.1.jar.sha1
+fetchArtifact javax/activation/activation/1.1.1/activation-1.1.1.pom
+fetchArtifact javax/activation/activation/1.1.1/activation-1.1.1.jar
+fetchArtifact javax/activation/activation/1.1.1/activation-1.1.1.pom.sha1
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar.sha1
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.pom.sha1
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.pom
+fetchArtifact mesosphere/chaos_2.11/0.6.1/chaos_2.11-0.6.1.jar
+fetchArtifact mesosphere/chaos_2.11/0.6.1/chaos_2.11-0.6.1.pom
+fetchArtifact mesosphere/chaos_2.11/0.6.1/chaos_2.11-0.6.1.jar.sha1
+fetchArtifact mesosphere/chaos_2.11/0.6.1/chaos_2.11-0.6.1.pom.sha1
+fetchArtifact mesosphere/mesos-utils_2.11/0.20.1-1/mesos-utils_2.11-0.20.1-1.jar.sha1
+fetchArtifact mesosphere/mesos-utils_2.11/0.20.1-1/mesos-utils_2.11-0.20.1-1.pom
+fetchArtifact mesosphere/mesos-utils_2.11/0.20.1-1/mesos-utils_2.11-0.20.1-1.pom.sha1
+fetchArtifact mesosphere/mesos-utils_2.11/0.20.1-1/mesos-utils_2.11-0.20.1-1.jar
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.pom
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.jar.sha1
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.pom.sha1
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.jar
diff --git a/nixpkgs/pkgs/applications/networking/cluster/click/default.nix b/nixpkgs/pkgs/applications/networking/cluster/click/default.nix
new file mode 100644
index 000000000000..2c7a026b277e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/click/default.nix
@@ -0,0 +1,29 @@
+{ darwin, fetchFromGitHub, rustPlatform, stdenv }:
+
+with rustPlatform;
+
+buildRustPackage rec {
+  name = "click-${version}";
+  version = "0.3.2";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "databricks";
+    repo = "click";
+    sha256 = "0sbj41kypn637z1w115w2h5v6bxz3y6w5ikgpx3ihsh89lkc19d2";
+  };
+
+  cargoSha256 = "05asqp5312a1g26pvf5hgqhc4kj3iw2hdvml2ycvga33sxb7zm7r";
+
+  patches = [ ./fix_cargo_lock_version.patch ];
+
+  buildInputs = stdenv.lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];
+
+  meta = with stdenv.lib; {
+    description = ''The "Command Line Interactive Controller for Kubernetes"'';
+    homepage = https://github.com/databricks/click;
+    license = [ licenses.asl20 ];
+    maintainers = [ maintainers.mbode ];
+    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/click/fix_cargo_lock_version.patch b/nixpkgs/pkgs/applications/networking/cluster/click/fix_cargo_lock_version.patch
new file mode 100644
index 000000000000..bc4db7ef7c12
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/click/fix_cargo_lock_version.patch
@@ -0,0 +1,13 @@
+diff --git a/Cargo.lock b/Cargo.lock
+index ff80350..c86c6fe 100644
+--- a/Cargo.lock
++++ b/Cargo.lock
+@@ -111,7 +111,7 @@ dependencies = [
+
+ [[package]]
+ name = "click"
+-version = "0.3.1"
++version = "0.3.2"
+ dependencies = [
+  "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
+  "base64 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/nixpkgs/pkgs/applications/networking/cluster/cni/default.nix b/nixpkgs/pkgs/applications/networking/cluster/cni/default.nix
new file mode 100644
index 000000000000..3f342ea04a03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/cni/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, buildGoPackage }:
+
+buildGoPackage rec {
+  name = "cni-${version}";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "containernetworking";
+    repo = "cni";
+    rev = "v${version}";
+    sha256 = "00ajs2r5r2z3l0vqwxrcwhjfc9px12qbcv5vnvs2mdipvvls1y2y";
+  };
+
+  goPackagePath = "github.com/containernetworking/cni";
+
+  buildPhase = ''
+    cd "go/src/${goPackagePath}"
+    patchShebangs build.sh
+    ./build.sh
+  '';
+
+  installPhase = ''
+    install -Dm555 bin/cnitool $bin/bin/cnitool
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Container Network Interface - networking for Linux containers";
+    license = licenses.asl20;
+    homepage = https://github.com/containernetworking/cni;
+    maintainers = with maintainers; [ offline vdemeester ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/cni/plugins.nix b/nixpkgs/pkgs/applications/networking/cluster/cni/plugins.nix
new file mode 100644
index 000000000000..6d50c598de7f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/cni/plugins.nix
@@ -0,0 +1,38 @@
+{ stdenv, lib, fetchFromGitHub, go, removeReferencesTo }:
+
+stdenv.mkDerivation rec {
+  name = "cni-plugins-${version}";
+  version = "0.7.4";
+
+  src = fetchFromGitHub {
+    owner = "containernetworking";
+    repo = "plugins";
+    rev = "v${version}";
+    sha256 = "1sywllwnr6lc812sgkqjdd3y10r82shl88dlnwgnbgzs738q2vp2";
+  };
+
+  buildInputs = [ removeReferencesTo go ];
+
+  buildPhase = ''
+    patchShebangs build.sh
+    export "GOCACHE=$TMPDIR/go-cache"
+    ./build.sh
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv bin/* $out/bin
+  '';
+
+  preFixup = ''
+    find $out/bin -type f -exec remove-references-to -t ${go} '{}' +
+  '';
+
+  meta = with lib; {
+    description = "Some standard networking plugins, maintained by the CNI team";
+    homepage = https://github.com/containernetworking/plugins;
+    license = licenses.asl20;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/default.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/default.nix
new file mode 100644
index 000000000000..876630c559a5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/default.nix
@@ -0,0 +1,33 @@
+# This file was generated by go2nix.
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "machine-${version}";
+  version = "0.16.1";
+
+  goPackagePath = "github.com/docker/machine";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "docker";
+    repo = "machine";
+    sha256 = "0xxzxi5v7ji9j2k7kxhi0ah91lfa7b9rg3nywgx0lkv8dlgp8kmy";
+  };
+
+  postInstall = ''
+    mkdir -p \
+      $bin/share/bash-completion/completions/ \
+      $bin/share/zsh/site-functions/
+
+    cp go/src/github.com/docker/machine/contrib/completion/bash/* $bin/share/bash-completion/completions/
+    cp go/src/github.com/docker/machine/contrib/completion/zsh/* $bin/share/zsh/site-functions/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://docs.docker.com/machine/;
+    description = "Docker Machine is a tool that lets you install Docker Engine on virtual hosts, and manage Docker Engine on the hosts.";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ offline tailhook ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm-deps.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm-deps.nix
new file mode 100644
index 000000000000..e321b2c1b0ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm-deps.nix
@@ -0,0 +1,21 @@
+# This file was generated by go2nix.
+[
+  {
+    goPackagePath = "github.com/docker/machine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/machine";
+      rev = "457c02d06a155827c1c4af9b5ab38c0b6b4e48ea";
+      sha256 = "0hx5bhjc7q9ml6h6d2a5csqg6vqwjj68599q0cccw3pcfrb34gmd";
+    };
+  }
+  {
+    goPackagePath = "github.com/libvirt/libvirt-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/libvirt/libvirt-go";
+      rev = "e9642325d747c353ca7b76b4893d5dbdc81c296f";
+      sha256 = "1822b2kbwyxb2gigbiashcs7v4fsyw7k3sdlqh43ga0l6058fmhl";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm.nix
new file mode 100644
index 000000000000..181663513d3e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm.nix
@@ -0,0 +1,28 @@
+# This file was generated by go2nix.
+{ stdenv, buildGoPackage, fetchFromGitHub, libvirt, pkgconfig }:
+
+buildGoPackage rec {
+  name = "docker-machine-kvm-${version}";
+  version = "0.10.0";
+
+  goPackagePath = "github.com/dhiltgen/docker-machine-kvm";
+  goDeps = ./kvm-deps.nix;
+
+  src = fetchFromGitHub {
+    rev    = "v${version}";
+    owner  = "dhiltgen";
+    repo   = "docker-machine-kvm";
+    sha256 = "0ch4zwb6h7hnr5l3skj1daypvpyms2i666lbnmakpw1fw3zvjmgy";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libvirt ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/dhiltgen/docker-machine-kvm;
+    description = "KVM driver for docker-machine.";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ offline ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm2.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm2.nix
new file mode 100644
index 000000000000..41465766489e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/kvm2.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, libvirt, pkgconfig, minikube }:
+
+buildGoPackage rec {
+  pname = "docker-machine-kvm2";
+  name = "${pname}-${version}";
+  version = minikube.version;
+
+  goPackagePath = "k8s.io/minikube";
+  subPackages = [ "cmd/drivers/kvm" ];
+
+  src = minikube.src;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libvirt ];
+
+  preBuild = ''
+    export buildFlagsArray=(-ldflags="-X k8s.io/minikube/pkg/drivers/kvm/version.VERSION=v${version}")
+  '';
+
+  postInstall = ''
+    mv $bin/bin/kvm $bin/bin/docker-machine-driver-kvm2
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/kubernetes/minikube/blob/master/docs/drivers.md;
+    description = "KVM2 driver for docker-machine.";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ tadfisher ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve-deps.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve-deps.nix
new file mode 100644
index 000000000000..99cb7b98f5cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve-deps.nix
@@ -0,0 +1,21 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/docker/machine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/machine";
+      rev = "5b274558ea6ca822c06dd407a4e774a0105c3f60";
+      sha256 = "1wdq9h4bx7awgclh969gvmcnl9jvgv7ldfklnclh5iv47mi7q22d";
+    };
+  }
+  {
+    goPackagePath = "github.com/zchee/libhyperkit";
+    fetch = {
+      type = "git";
+      url = "https://github.com/zchee/libhyperkit";
+      rev = "1a19a7693fac32b46ec6cdd22da6fbec974447fc";
+      sha256 = "119f5gcl24znwnmi837jk667asd3lirx32jldpd4mbyb3sm9nz24";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve.nix b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve.nix
new file mode 100644
index 000000000000..6b0440eb84ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/docker-machine/xhyve.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, pkgconfig, Hypervisor, vmnet }:
+
+buildGoPackage rec {
+  name = "docker-machine-xhyve-${version}";
+  version = "0.3.3";
+
+  goPackagePath = "github.com/zchee/docker-machine-driver-xhyve";
+  goDeps = ./xhyve-deps.nix;
+
+  src = fetchFromGitHub {
+    rev    = "v${version}";
+    owner  = "zchee";
+    repo   = "docker-machine-driver-xhyve";
+    sha256 = "0rj6pyqp4yv4j28bglqjs95rip5i77vv8mrkmqv1rxrsl3i8aqqy";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ Hypervisor vmnet ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/zchee/docker-machine-driver-xhyve;
+    description = "Xhyve driver for docker-machine.";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ periklis ];
+    platforms = platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/flink/default.nix b/nixpkgs/pkgs/applications/networking/cluster/flink/default.nix
new file mode 100644
index 000000000000..e5f437a89ad9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/flink/default.nix
@@ -0,0 +1,54 @@
+{ stdenv, fetchurl, makeWrapper, jre
+, version ? "1.6" }:
+
+let
+  versionMap = {
+    "1.5" = {
+      flinkVersion = "1.5.5";
+      sha256 = "18wqcqi3gyqd40nspih99gq7ylfs20b35f4dcrspffagwkfp2l4z";
+    };
+    "1.6" = {
+      flinkVersion = "1.6.2";
+      sha256 = "17fsr6yv1ayr7fw0r4pjlbpkn9ypzjs4brqndzr3gbzwrdc44arw";
+    };
+  };
+in
+
+with versionMap.${version};
+
+stdenv.mkDerivation rec {
+  name = "flink-${flinkVersion}";
+
+  src = fetchurl {
+    url = "mirror://apache/flink/${name}/${name}-bin-scala_2.11.tgz";
+    inherit sha256;
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildInputs = [ jre ];
+
+  installPhase = ''
+    rm bin/*.bat
+
+    mkdir -p $out/bin $out/opt/flink
+    mv * $out/opt/flink/
+    makeWrapper $out/opt/flink/bin/flink $out/bin/flink \
+      --prefix PATH : ${jre}/bin
+
+    cat <<EOF >> $out/opt/flink/conf/flink-conf.yaml
+    env.java.home: ${jre}"
+    env.log.dir: /tmp/flink-logs
+    EOF
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A distributed stream processing framework";
+    homepage = https://flink.apache.org;
+    downloadPage = https://flink.apache.org/downloads.html;
+    license = licenses.asl20;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ mbode ];
+    repositories.git = git://git.apache.org/flink.git;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/habitat/default.nix b/nixpkgs/pkgs/applications/networking/cluster/habitat/default.nix
new file mode 100644
index 000000000000..0c210dcc535b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/habitat/default.nix
@@ -0,0 +1,40 @@
+{ lib, fetchFromGitHub, rustPlatform, pkgconfig
+, libsodium, libarchive, openssl }:
+
+with rustPlatform;
+
+buildRustPackage rec {
+  name = "habitat-${version}";
+  version = "0.30.2";
+
+  src = fetchFromGitHub {
+    owner = "habitat-sh";
+    repo = "habitat";
+    rev = version;
+    sha256 = "0pqrm85pd9hqn5fwqjbyyrrfh4k7q9mi9qy9hm8yigk5l8mw44y1";
+  };
+
+  cargoSha256 = "1ahfm5agvabqqqgjsyjb95xxbc7mng1mdyclcakwp1m1qdkxx9p0";
+
+  buildInputs = [ libsodium libarchive openssl ];
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  cargoBuildFlags = ["--package hab"];
+
+  checkPhase = ''
+    runHook preCheck
+    echo "Running cargo test"
+    cargo test --package hab
+    runHook postCheck
+  '';
+
+  meta = with lib; {
+    description = "An application automation framework";
+    homepage = https://www.habitat.sh;
+    license = licenses.asl20;
+    maintainers = [ maintainers.rushmorem ];
+    platforms = [ "x86_64-linux" "x86_64-darwin" ];
+    broken = true; # mark temporary as broken due git dependencies
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/hadoop/default.nix b/nixpkgs/pkgs/applications/networking/cluster/hadoop/default.nix
new file mode 100644
index 000000000000..dfe6513bf0c1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/hadoop/default.nix
@@ -0,0 +1,155 @@
+{ stdenv, fetchurl, makeWrapper, pkgconfig, which, maven, cmake, jre, bash, coreutils, glibc, protobuf2_5, fuse, snappy, zlib, bzip2, openssl }:
+
+let
+  common = { version, sha256, dependencies-sha256, tomcat }:
+    let
+      # compile the hadoop tarball from sources, it requires some patches
+      binary-distributon = stdenv.mkDerivation rec {
+        name = "hadoop-${version}-bin";
+        src = fetchurl {
+          url = "mirror://apache/hadoop/common/hadoop-${version}/hadoop-${version}-src.tar.gz";
+          inherit sha256;
+        };
+
+        postUnpack = stdenv.lib.optionalString (tomcat != null) ''
+          install -D ${tomcat.src} $sourceRoot/hadoop-hdfs-project/hadoop-hdfs-httpfs/downloads/apache-tomcat-${tomcat.version}.tar.gz
+          install -D ${tomcat.src} $sourceRoot/hadoop-common-project/hadoop-kms/downloads/apache-tomcat-${tomcat.version}.tar.gz
+        '';
+
+        # perform fake build to make a fixed-output derivation of dependencies downloaded from maven central (~100Mb in ~3000 files)
+        fetched-maven-deps = stdenv.mkDerivation {
+          name = "hadoop-${version}-maven-deps";
+          inherit src postUnpack nativeBuildInputs buildInputs configurePhase;
+          buildPhase = ''
+            while mvn package -Dmaven.repo.local=$out/.m2 ${mavenFlags} -Dmaven.wagon.rto=5000; [ $? = 1 ]; do
+              echo "timeout, restart maven to continue downloading"
+            done
+          '';
+          # keep only *.{pom,jar,xml,sha1,so,dll,dylib} and delete all ephemeral files with lastModified timestamps inside
+          installPhase = ''find $out/.m2 -type f -regex '.+\(\.lastUpdated\|resolver-status\.properties\|_remote\.repositories\)' -delete'';
+          outputHashAlgo = "sha256";
+          outputHashMode = "recursive";
+          outputHash = dependencies-sha256;
+        };
+
+        nativeBuildInputs = [ maven cmake pkgconfig ];
+        buildInputs = [ fuse snappy zlib bzip2 openssl protobuf2_5 ];
+        # most of the hardcoded pathes are fixed in 2.9.x and 3.0.0, this list of patched files might be reduced when 2.7.x and 2.8.x will be deprecated
+        postPatch = ''
+          for file in hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/HardLink.java \
+                      hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/Shell.java \
+                      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DefaultContainerExecutor.java \
+                      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/DockerContainerExecutor.java \
+                      hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/launcher/ContainerLaunch.java \
+                      hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/MRJobConfig.java; do
+            if [ -f "$file" ]; then
+              substituteInPlace "$file" \
+                --replace '/usr/bin/stat' 'stat' \
+                --replace '/bin/bash'     'bash' \
+                --replace '/bin/ls'       'ls'   \
+                --replace '/bin/mv'       'mv'
+            fi
+          done
+        '';
+        configurePhase = "true"; # do not trigger cmake hook
+        mavenFlags = "-Drequire.snappy -Drequire.bzip2 -DskipTests -Pdist,native -e";
+        buildPhase = ''
+          # 'maven.repo.local' must be writable
+          mvn package --offline -Dmaven.repo.local=$(cp -dpR ${fetched-maven-deps}/.m2 ./ && chmod +w -R .m2 && pwd)/.m2 ${mavenFlags}
+          # remove runtime dependency on $jdk/jre/lib/amd64/server/libjvm.so
+          patchelf --set-rpath ${stdenv.lib.makeLibraryPath [glibc]} hadoop-dist/target/hadoop-${version}/lib/native/libhadoop.so.1.0.0
+          patchelf --set-rpath ${stdenv.lib.makeLibraryPath [glibc]} hadoop-dist/target/hadoop-${version}/lib/native/libhdfs.so.0.0.0
+        '';
+        installPhase = "mv hadoop-dist/target/hadoop-${version} $out";
+      };
+    in
+      stdenv.mkDerivation rec {
+        name = "hadoop-${version}";
+
+        src = binary-distributon;
+
+        nativeBuildInputs = [ makeWrapper ];
+
+        installPhase = ''
+          mkdir -p $out/share/doc/hadoop
+          cp -dpR * $out/
+          mv $out/*.txt $out/share/doc/hadoop/
+
+          #
+          # Do not use `wrapProgram` here, script renaming may result to weird things: http://i.imgur.com/0Xee013.png
+          #
+          mkdir -p $out/bin.wrapped
+          for n in $out/bin/*; do
+            if [ -f "$n" ]; then # only regular files
+              mv $n $out/bin.wrapped/
+              makeWrapper $out/bin.wrapped/$(basename $n) $n \
+                --prefix PATH : "${stdenv.lib.makeBinPath [ which jre bash coreutils ]}" \
+                --prefix JAVA_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ openssl snappy zlib bzip2 ]}" \
+                --set JAVA_HOME "${jre}" \
+                --set HADOOP_PREFIX "$out"
+            fi
+          done
+        '';
+
+        meta = with stdenv.lib; {
+          homepage = "http://hadoop.apache.org/";
+          description = "Framework for distributed processing of large data sets across clusters of computers";
+          license = licenses.asl20;
+
+          longDescription = ''
+            The Apache Hadoop software library is a framework that allows for
+            the distributed processing of large data sets across clusters of
+            computers using a simple programming model. It is designed to
+            scale up from single servers to thousands of machines, each
+            offering local computation and storage. Rather than rely on
+            hardware to deliver high-avaiability, the library itself is
+            designed to detect and handle failures at the application layer,
+            so delivering a highly-availabile service on top of a cluster of
+            computers, each of which may be prone to failures.
+          '';
+          maintainers = with maintainers; [ volth ];
+          platforms = [ "x86_64-linux" ];
+        };
+      };
+
+  tomcat_6_0_48 = rec {
+    version = "6.0.48";
+    src = fetchurl {
+      # do not use "mirror://apache/" here, tomcat-6 is legacy and has been removed from the mirrors
+      url = "https://archive.apache.org/dist/tomcat/tomcat-6/v${version}/bin/apache-tomcat-${version}.tar.gz";
+      sha256 = "1w4jf28g8p25fmijixw6b02iqlagy2rvr57y3n90hvz341kb0bbc";
+    };
+  };
+
+in {
+  hadoop_2_7 = common {
+    version = "2.7.7";
+    sha256 = "1ahv67f3lwak3kbjvnk1gncq56z6dksbajj872iqd0awdsj3p5rf";
+    dependencies-sha256 = "1lsr9nvrynzspxqcamb10d596zlnmnfpxhkd884gdiva0frm0b1r";
+    tomcat = tomcat_6_0_48;
+  };
+  hadoop_2_8 = common {
+    version = "2.8.4";
+    sha256 = "16c3ljhrzibkjn3y1bmjxdgf0kn60l23ay5hqpp7vpbnqx52x68w";
+    dependencies-sha256 = "1j4f461487fydgr5978nnm245ksv4xbvskfr8pbmfhcyss6b7w03";
+    tomcat = tomcat_6_0_48;
+  };
+  hadoop_2_9 = common {
+    version = "2.9.1";
+    sha256 = "0qgmpfbpv7f521fkjy5ldzdb4lwiblhs0hyl8qy041ws17y5x7d7";
+    dependencies-sha256 = "1d5i8jj5y746rrqb9lscycnd7acmxlkz64ydsiyqsh5cdqgy2x7x";
+    tomcat = tomcat_6_0_48;
+  };
+  hadoop_3_0 = common {
+    version = "3.0.3";
+    sha256 = "1vvkci0kx4b48dg0niifn2d3r4wwq8pb3c5z20wy8pqsqrqhlci5";
+    dependencies-sha256 = "1kzkna9ywacm2m1cirj9cyip66bgqjhid2xf9rrhq6g10lhr8j9m";
+    tomcat = null;
+  };
+  hadoop_3_1 = common {
+    version = "3.1.1";
+    sha256 = "04hhdbyd4x1hy0fpy537f8mi0864hww97zap29x7dk1smrffwabd";
+    dependencies-sha256 = "1q63jsxg3d31x0p8hvhpvbly2b07almyzsbhwphbczl3fhlqgiwn";
+    tomcat = null;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/helm/default.nix b/nixpkgs/pkgs/applications/networking/cluster/helm/default.nix
new file mode 100644
index 000000000000..c03af2e9683d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/helm/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  version = "2.11.0";
+  name = "helm-${version}";
+
+  src = fetchFromGitHub {
+    owner = "helm";
+    repo = "helm";
+    rev = "v${version}";
+    sha256 = "1z810a6mxyrrw4i908dip8aqsj95c0kmv6xpb1wwhskg1zmf85wk";
+  };
+
+  goPackagePath = "k8s.io/helm";
+  subPackages = [ "cmd/helm" "cmd/tiller" "cmd/rudder" ];
+
+  goDeps = ./deps.nix;
+
+  # Thsese are the original flags from the helm makefile
+  buildFlagsArray = ''
+    -ldflags=-X k8s.io/helm/pkg/version.Version=v${version}
+    -w
+    -s
+  '';
+
+  preBuild = ''
+    # This is a hack(?) to flatten the dependency tree the same way glide or dep would
+    # Otherwise you'll get errors like
+    # have DeepCopyObject() "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/runtime".Object
+    # want DeepCopyObject() "k8s.io/apimachinery/pkg/runtime".Object
+    rm -rf $NIX_BUILD_TOP/go/src/k8s.io/kubernetes/vendor
+    rm -rf $NIX_BUILD_TOP/go/src/k8s.io/apiextensions-apiserver/vendor
+  '';
+
+  postInstall = ''
+    mkdir -p $bin/share/bash-completion/completions
+    mkdir -p $bin/share/zsh/site-functions
+    $bin/bin/helm completion bash > $bin/share/bash-completion/completions/helm
+    $bin/bin/helm completion zsh > $bin/share/zsh/site-functions/_helm
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/kubernetes/helm;
+    description = "A package manager for kubernetes";
+    license = licenses.asl20;
+    maintainers = [ maintainers.rlupton20 maintainers.edude03 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/helm/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/helm/deps.nix
new file mode 100644
index 000000000000..36bd3406f5bf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/helm/deps.nix
@@ -0,0 +1,840 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "cloud.google.com/go";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/gocloud";
+      rev =  "3b1ae45394a234c385be014e9a488f2bb6eef821";
+      sha256 = "0alb495ql6s02kb6lxcbnlkdcmhixyl8zv11sgrkhsk1bckzh119";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Azure/go-ansiterm";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Azure/go-ansiterm";
+      rev =  "19f72df4d05d31cbe1c56bfc8045c96babff6c7e";
+      sha256 = "0663w5m5qlidpj17s5pqp6rhl0phw7vypf104n04dvdy5nd418ix";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Azure/go-autorest";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Azure/go-autorest";
+      rev =  "1ff28809256a84bb6966640ff3d0371af82ccba4";
+      sha256 = "0sxvj2j1833bqwxvhq3wq3jgq73rnb81pnzvl0x3y1m0hzpaf2zv";
+    };
+  }
+  {
+    goPackagePath  = "github.com/BurntSushi/toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/BurntSushi/toml";
+      rev =  "b26d9c308763d68093482582cea63d69be07a0f0";
+      sha256 = "0k7v2i1d2d6si8gswn83qb84czhhia53v2wdy33yz9ppdidxk0ry";
+    };
+  }
+  {
+    goPackagePath  = "github.com/MakeNowJust/heredoc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/MakeNowJust/heredoc";
+      rev =  "bb23615498cded5e105af4ce27de75b089cbe851";
+      sha256 = "17m780i9afj3sbmcrgwgzarfly4x9376w56qblkqnzdkv6vps22i";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Masterminds/semver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Masterminds/semver";
+      rev =  "517734cc7d6470c0d07130e40fd40bdeb9bcd3fd";
+      sha256 = "1625b5sxpmlz60jw67j1ljfcc09d4lhxg3z6gc4am8s2rrdgwij6";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Masterminds/sprig";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Masterminds/sprig";
+      rev =  "15f9564e7e9cf0da02a48e0d25f12a7b83559aa6";
+      sha256 = "1k5pfx9hxzb70kh73a009ikr3vqlq0jvzvbyvxz9x7a7yc4r5b14";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Masterminds/vcs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Masterminds/vcs";
+      rev =  "3084677c2c188840777bff30054f2b553729d329";
+      sha256 = "1062m73h0pp5d0574lf6px4jsjgywnsbkw50inxx3zal5r185ydm";
+    };
+  }
+  {
+    goPackagePath  = "github.com/PuerkitoBio/purell";
+    fetch = {
+      type = "git";
+      url = "https://github.com/PuerkitoBio/purell";
+      rev =  "8a290539e2e8629dbc4e6bad948158f790ec31f4";
+      sha256 = "1qhsy1nm96b9kb63svkvkqmmw15xg6irwcysisxdgzk64adfwqv1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/PuerkitoBio/urlesc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/PuerkitoBio/urlesc";
+      rev =  "5bd2802263f21d8788851d5305584c82a5c75d7e";
+      sha256 = "15y5r3asvm7196m3nza5xvdvlc2k11p6lfs6hi917hl7r9vgi6mp";
+    };
+  }
+  {
+    goPackagePath  = "github.com/aokoli/goutils";
+    fetch = {
+      type = "git";
+      url = "https://github.com/aokoli/goutils";
+      rev =  "9c37978a95bd5c709a15883b6242714ea6709e64";
+      sha256 = "1c51qgk4pjc8c776h7589c3d14791h86f1yj3ykg4q7vlcf9xrnr";
+    };
+  }
+  {
+    goPackagePath  = "github.com/asaskevich/govalidator";
+    fetch = {
+      type = "git";
+      url = "https://github.com/asaskevich/govalidator";
+      rev =  "7664702784775e51966f0885f5cd27435916517b";
+      sha256 = "1lmynw9vkgrxv7nh60wdywv0nx4gjlkiar433wydhpc2h3m5q968";
+    };
+  }
+  {
+    goPackagePath  = "github.com/beorn7/perks";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beorn7/perks";
+      rev =  "3ac7bf7a47d159a033b107610db8a1b6575507a4";
+      sha256 = "1qc3l4r818xpvrhshh1sisc5lvl9479qspcfcdbivdyh0apah83r";
+    };
+  }
+  {
+    goPackagePath  = "github.com/chai2010/gettext-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chai2010/gettext-go";
+      rev =  "bf70f2a70fb1b1f36d90d671a72795984eab0fcb";
+      sha256 = "0bwjwvjl7zqm7kxram1rzz0ri3h897kiin13ljy9hx3fzz1i9lml";
+    };
+  }
+  {
+    goPackagePath  = "github.com/cpuguy83/go-md2man";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cpuguy83/go-md2man";
+      rev =  "71acacd42f85e5e82f70a55327789582a5200a90";
+      sha256 = "0hmkrq4gdzb6mwllmh4p1y7vrz7hyr8xqagpk9nyr5dhygvnnq2v";
+    };
+  }
+  {
+    goPackagePath  = "github.com/cyphar/filepath-securejoin";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cyphar/filepath-securejoin";
+      rev =  "a261ee33d7a517f054effbf451841abaafe3e0fd";
+      sha256 = "0id32zjb92wm569m29nfrzz5mw9z1glr3klayr6j134pp4h1sgq4";
+    };
+  }
+  {
+    goPackagePath  = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev =  "782f4967f2dc4564575ca782fe2d04090b5faca8";
+      sha256 = "1ypijjawqc0xgmgim42260ibcyclfgfizicz5cbvndw4plqfsswk";
+    };
+  }
+  {
+    goPackagePath  = "github.com/dgrijalva/jwt-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dgrijalva/jwt-go";
+      rev =  "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e";
+      sha256 = "08m27vlms74pfy5z79w67f9lk9zkx6a9jd68k3c4msxy75ry36mp";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/distribution";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/distribution";
+      rev =  "edc3ab29cdff8694dd6feb85cfeb4b5f1b38ed9c";
+      sha256 = "1nqjaq1q6fs3c0avpb02sib0a906xfbk3m74hk2mqjdbyx9y8b4m";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/docker";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/docker";
+      rev =  "4f3616fb1c112e206b88cb7a9922bf49067a7756";
+      sha256 = "0zmsqm1lkwggfqgy2rw34g4g2jlvr6mvcsh65fmpdb30l65iaqzf";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/go-connections";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/go-connections";
+      rev =  "3ede32e2033de7505e6500d6c868c2b9ed9f169d";
+      sha256 = "0v1pkr8apwmhyzbjfriwdrs1ihlk6pw7izm57r24mf9jdmg3fyb0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/go-units";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/go-units";
+      rev =  "9e638d38cf6977a37a8ea0078f3ee75a7cdb2dd1";
+      sha256 = "1sqwvcszxqpv77xf2d8fxvryxphdwj9v8f93231wpnk9kpilhyii";
+    };
+  }
+  {
+    goPackagePath  = "github.com/docker/spdystream";
+    fetch = {
+      type = "git";
+      url = "https://github.com/docker/spdystream";
+      rev =  "449fdfce4d962303d702fec724ef0ad181c92528";
+      sha256 = "1412cpiis971iq1kxrirzirhj2708ispjh0x0dh879b66x8507sl";
+    };
+  }
+  {
+    goPackagePath  = "github.com/evanphx/json-patch";
+    fetch = {
+      type = "git";
+      url = "https://github.com/evanphx/json-patch";
+      rev =  "94e38aa1586e8a6c8a75770bddf5ff84c48a106b";
+      sha256 = "1c9gzc3gb76lm5famc0345y90is1lyffn39bmdr0xk19462f8av5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/exponent-io/jsonpath";
+    fetch = {
+      type = "git";
+      url = "https://github.com/exponent-io/jsonpath";
+      rev =  "d6023ce2651d8eafb5c75bb0c7167536102ec9f5";
+      sha256 = "1qkzaxsjs7yg1672sk67nr119j7jc4751yzgii0j3nbipjv321kc";
+    };
+  }
+  {
+    goPackagePath  = "github.com/fatih/camelcase";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/camelcase";
+      rev =  "f6a740d52f961c60348ebb109adde9f4635d7540";
+      sha256 = "15vb86adns1izvbzjw0lmmzrwlarhbxw5qalhx10vzzdx73wh4ai";
+    };
+  }
+  {
+    goPackagePath  = "github.com/ghodss/yaml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ghodss/yaml";
+      rev =  "73d445a93680fa1a78ae23a5839bad48f32ba1ee";
+      sha256 = "0pg53ky4sy3sp9j4n7vgf1p3gw4nbckwqfldcmmi9rf13kjh0mr7";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-openapi/jsonpointer";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-openapi/jsonpointer";
+      rev =  "46af16f9f7b149af66e5d1bd010e3574dc06de98";
+      sha256 = "0w0fphmdycjzbsm1vppdcjc9aqinkcdzcq3pxikdvdqh5p791gsc";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-openapi/jsonreference";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-openapi/jsonreference";
+      rev =  "13c6e3589ad90f49bd3e3bbe2c2cb3d7a4142272";
+      sha256 = "1fh4xcl9ijww4bdq656sx981d57w2c9zx5148jsxlsg4bsvxmwis";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-openapi/spec";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-openapi/spec";
+      rev =  "1de3e0542de65ad8d75452a595886fdd0befb363";
+      sha256 = "13i9y71fk9vr2abvpsk04k55il32ly3fjinvl1zlamh9mi2mdzf4";
+    };
+  }
+  {
+    goPackagePath  = "github.com/go-openapi/swag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-openapi/swag";
+      rev =  "f3f9494671f93fcff853e3c6e9e948b3eb71e590";
+      sha256 = "13lqn4xqy9vma9aqsjb0fzfzi0q8l6dmg65sjxqdxf3q6gzkvmjy";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gobwas/glob";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gobwas/glob";
+      rev =  "5ccd90ef52e1e632236f7326478d4faa74f99438";
+      sha256 = "0jxk1x806zn5x86342s72dq2qy64ksb3zrvrlgir2avjhwb18n6z";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev =  "c0656edd0d9eab7c66d1eb0c568f9039345796f7";
+      sha256 = "0b943dhx571lhgcs3rqzy0092mi2x5mwy2kl7g8rryhy3r5rzrz9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/glog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/glog";
+      rev =  "44145f04b68cf362d9c4df2182967c2275eaefed";
+      sha256 = "1k7sf6qmpgm0iw81gx2dwggf9di6lgw0n54mni7862hihwfrb5rq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/groupcache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/groupcache";
+      rev =  "02826c3e79038b59d737d3b1c0a1d937f71a4433";
+      sha256 = "0w46bsllddfij66nrg8jbfjsr54birvfww8a2fj9fmgyig5syn2x";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev =  "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9";
+      sha256 = "1ch3czyzq5abl6zm1l0dfsi09xj43ql9jcbmbhfhxz954pw03v3v";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/btree";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/btree";
+      rev =  "7d79101e329e5a3adf994758c578dab82b90c017";
+      sha256 = "1c1hsy5s2pfawg3l9954jmqmy4yc2zp3f7i87m00km2yqgb8xpd0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/gofuzz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/gofuzz";
+      rev =  "44d81051d367757e1c7c6a5a86423ece9afcf63c";
+      sha256 = "0ivq2sl2fv8x0xxrcys27c42s8yq7irgl7lp6l0im9i7ky63nk0i";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/uuid";
+      rev =  "064e2069ce9c359c118179501254f67d7d37ba24";
+      sha256 = "1b1ibx3rbiv7xwa9kz4b4zpp1fza5cjnn8v6749b4vrkjjmp3rqb";
+    };
+  }
+  {
+    goPackagePath  = "github.com/googleapis/gnostic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/googleapis/gnostic";
+      rev =  "0c5108395e2debce0d731cf0287ddf7242066aba";
+      sha256 = "0jf3cp5clli88gpjf24r6wxbkvngnc1kf59d4cgjczsn2wasvsfc";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gophercloud/gophercloud";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gophercloud/gophercloud";
+      rev =  "781450b3c4fcb4f5182bcc5133adb4b2e4a09d1d";
+      sha256 = "0xvapk94p1259k8arvwyvhwvcnzma9vdg12g750cgz2ghkzvfhff";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gosuri/uitable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gosuri/uitable";
+      rev =  "36ee7e946282a3fb1cfecd476ddc9b35d8847e42";
+      sha256 = "1ff68fv9g1df91fwbrcq83ar429gb4fi2vsd22zjmhvmbqx2zkil";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gregjones/httpcache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gregjones/httpcache";
+      rev =  "787624de3eb7bd915c329cba748687a3b22666a6";
+      sha256 = "1zqlg9pkj7r6fqw7wv3ywvbz3bh0hvzifs2scgcraj812q5189w5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/grpc-ecosystem/go-grpc-prometheus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc-ecosystem/go-grpc-prometheus";
+      rev =  "0c1b191dbfe51efdabe3c14b9f6f3b96429e0722";
+      sha256 = "0d7vybd4yy9a9clk03578xdpyhifxsy3qv6iiglrrnblbmpgksjc";
+    };
+  }
+  {
+    goPackagePath  = "github.com/hashicorp/golang-lru";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/golang-lru";
+      rev =  "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4";
+      sha256 = "1z3h4aca31l3qs0inqr5l49vrlycpjm7vq1l9nh1mp0mb2ij0kmp";
+    };
+  }
+  {
+    goPackagePath  = "github.com/huandu/xstrings";
+    fetch = {
+      type = "git";
+      url = "https://github.com/huandu/xstrings";
+      rev =  "3959339b333561bf62a38b424fd41517c2c90f40";
+      sha256 = "0f1jyd80grpr88gwhljx2x0xgsyzw07807n4z4axxxlybh5f0nh1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/imdario/mergo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/imdario/mergo";
+      rev =  "6633656539c1639d9d78127b7d47c622b5d7b6dc";
+      sha256 = "1fffbq1l17i0gynmvcxypl7d9h4v81g5vlimiph5bfgf4sp4db7g";
+    };
+  }
+  {
+    goPackagePath  = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev =  "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+  {
+    goPackagePath  = "github.com/json-iterator/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/json-iterator/go";
+      rev =  "f2b4162afba35581b6d4a50d3b8f34e33c144682";
+      sha256 = "0siqfghsm2lkdwinvg8x5gls3p76rq3cdm59c1r4x0b2mdfhnvcd";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mailru/easyjson";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mailru/easyjson";
+      rev =  "2f5df55504ebc322e4d52d34df6a1f5b503bf26d";
+      sha256 = "0d9m8kyhbawa452vnwn255xxnh6pkp3im0d2310rw1k14nh3yh1p";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev =  "d6bea18f789704b5f83375793155289da36a3c7f";
+      sha256 = "1hnigpn7rjbwd1ircxkyx9hvi0xmxr32b2jdy2jzw6b3jmcnz1fs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/matttproud/golang_protobuf_extensions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matttproud/golang_protobuf_extensions";
+      rev =  "fc2b8d3a73c4867e51861bbdd5ae3c1f0869dd6a";
+      sha256 = "0ajg41h6402big484drvm72wvid1af2sffw0qkzbmpy04lq68ahj";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mitchellh/go-wordwrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-wordwrap";
+      rev =  "ad45545899c7b13c020ea92b2072220eefad42b8";
+      sha256 = "0ny1ddngvwfj3njn7pmqnf3l903lw73ynddw15x8ymp7hidv27v9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/modern-go/concurrent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/concurrent";
+      rev =  "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94";
+      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/modern-go/reflect2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/reflect2";
+      rev =  "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd";
+      sha256 = "1721y3yr3dpx5dx5ashf063qczk2awy5zjir1jvp1h5hn7qz4i49";
+    };
+  }
+  {
+    goPackagePath  = "github.com/opencontainers/go-digest";
+    fetch = {
+      type = "git";
+      url = "https://github.com/opencontainers/go-digest";
+      rev =  "a6d0ee40d4207ea02364bd3b9e8e77b9159ba1eb";
+      sha256 = "1paz3na2xkhi10p5bk7f7gbh5yykfgr9f9i2gcc13rb461yq6fmg";
+    };
+  }
+  {
+    goPackagePath  = "github.com/opencontainers/image-spec";
+    fetch = {
+      type = "git";
+      url = "https://github.com/opencontainers/image-spec";
+      rev =  "372ad780f63454fbbbbcc7cf80e5b90245c13e13";
+      sha256 = "0wajddbm49bfybkab9midilg18zvdvvsffwhkq7bpp7inj4jnsvs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/petar/GoLLRB";
+    fetch = {
+      type = "git";
+      url = "https://github.com/petar/GoLLRB";
+      rev =  "53be0d36a84c2a886ca057d34b6aa4468df9ccb4";
+      sha256 = "01xp3lcamqkvl91jg6ly202gdsgf64j39rkrcqxi6v4pbrcv7hz0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/peterbourgon/diskv";
+    fetch = {
+      type = "git";
+      url = "https://github.com/peterbourgon/diskv";
+      rev =  "5f041e8faa004a95c88a202771f4cc3e991971e6";
+      sha256 = "1mxpa5aad08x30qcbffzk80g9540wvbca4blc1r2qyzl65b8929b";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev =  "645ef00459ed84a119197bfb8d8205042c6df63d";
+      sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev =  "d8ed2627bdf02c080bf22230dbb337003b7aba2d";
+      sha256 = "0w1jp4k4zbnrxh3jvh8fgbjgqpf2hg31pbj8fb32kh26px9ldpbs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/client_golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_golang";
+      rev =  "c5b7fccd204277076155f10851dad72b76a49317";
+      sha256 = "1xqny3147g12n4j03kxm8s9mvdbs3ln6i56c655mybrn9jjy48kd";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/client_model";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_model";
+      rev =  "fa8ad6fec33561be4280a8f0514318c79d7f6cb6";
+      sha256 = "11a7v1fjzhhwsl128znjcf5v7v6129xjgkdpym2lial4lac1dhm9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/common";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/common";
+      rev =  "13ba4ddd0caa9c28ca7b7bffe1dfa9ed8d5ef207";
+      sha256 = "0i6mpcnsawi7f00rfmjfjq8llaplyzq4xrkrawlcgfd762p5hnp8";
+    };
+  }
+  {
+    goPackagePath  = "github.com/prometheus/procfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/procfs";
+      rev =  "65c1f6f8f0fc1e2185eb9863a3bc751496404259";
+      sha256 = "0jfzmr8642hr04naim1maa3wklxvcxklykri2z7k4ayizc974lkq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/russross/blackfriday";
+    fetch = {
+      type = "git";
+      url = "https://github.com/russross/blackfriday";
+      rev =  "300106c228d52c8941d4b3de6054a6062a86dda3";
+      sha256 = "1bcqwb9lk2sijn5q3kqp7sadhh0ysbxlj5bxjspk9yp5bp733cbh";
+    };
+  }
+  {
+    goPackagePath  = "github.com/shurcooL/sanitized_anchor_name";
+    fetch = {
+      type = "git";
+      url = "https://github.com/shurcooL/sanitized_anchor_name";
+      rev =  "10ef21a441db47d8b13ebcc5fd2310f636973c77";
+      sha256 = "1cnbzcf47cn796rcjpph1s64qrabhkv5dn9sbynsy7m9zdwr5f01";
+    };
+  }
+  {
+    goPackagePath  = "github.com/sirupsen/logrus";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sirupsen/logrus";
+      rev =  "89742aefa4b206dcf400792f3bd35b542998eb3b";
+      sha256 = "0hk7fabx59msg2y0iik6xvfp80s73ybrwlcshbm9ds91iqbkcxi6";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev =  "c439c4fa093711d42e1b01acb1235b52004753c1";
+      sha256 = "14v5vhb180yzaknxnm8j4n9jai58b0y2nzrqzpdq7bj9slsga1vd";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev =  "583c0c0531f06d5278b7d917446061adc344b5cd";
+      sha256 = "0nr4mdpfhhk94hq4ymn5b2sxc47b29p1akxd8b0hx4dvdybmipb5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev =  "e3a8ff8ce36581f87a15341206f205b1da467059";
+      sha256 = "179k26lcgafkbjylbhgj2f5pnh52bmv19rr1w95gca944blw8yga";
+    };
+  }
+  {
+    goPackagePath  = "github.com/technosophos/moniker";
+    fetch = {
+      type = "git";
+      url = "https://github.com/technosophos/moniker";
+      rev =  "a5dbd03a2245d554160e3ae6bfdcf969fe58b431";
+      sha256 = "1z273gvbwr09lcxwd10wyvxmxjln93r952sr1w9hqxcgc1f8l3vl";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev =  "49796115aa4b964c318aad4f3084fdb41e9aa067";
+      sha256 = "0pcq2drkzsw585xi6rda8imd7a139prrmvgmv8nz0zgzk6g4dy59";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev =  "1c05540f6879653db88113bc4a2b70aec4bd491f";
+      sha256 = "0h8yqb0vcqgllgydrf9d3rzp83w8wlr8f0nm6r1rwf2qg30pq1pd";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev =  "a6bd8cefa1811bd24b86f8902872e4e8225f74c4";
+      sha256 = "151in8qcf5y97ziavl6b03vgw4r87zqx5kg4vjhjszjbh60cfswp";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev =  "43eea11bc92608addb41b8a406b0407495c106f6";
+      sha256 = "0k9wy278f5753d130p8asva2g573vi6wviwkxwwnpxni118knq1l";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev =  "b19bf474d317b857955b12035d2c5acb57ce8b01";
+      sha256 = "0wc8csaafp0ps9jb2hdk8d6xpyw1axhk1np73h0z17x09zk3ylcr";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/time";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/time";
+      rev =  "f51c12702a4d776e4c1fa9b0fabab841babae631";
+      sha256 = "07wc6g2fvafkr6djsscm0jpbpl4135khhb6kpyx1953hi5d1jvyy";
+    };
+  }
+  {
+    goPackagePath  = "google.golang.org/appengine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/appengine";
+      rev =  "12d5545dc1cfa6047a286d5e853841b6471f4c19";
+      sha256 = "1bv6cjakhi6j3s1bqb3n45qrmvf20qkhwxllvi94jag4i7hd91w8";
+    };
+  }
+  {
+    goPackagePath  = "google.golang.org/genproto";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/go-genproto";
+      rev =  "09f6ed296fc66555a25fe4ce95173148778dfa85";
+      sha256 = "06x5wr7vjsnvv35rpv7jaklilksqbzsbqk8bxababw8vr6avfwki";
+    };
+  }
+  {
+    goPackagePath  = "google.golang.org/grpc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/grpc/grpc-go";
+      rev =  "5ffe3083946d5603a0578721101dc8165b1d5b5f";
+      sha256 = "1ij3sy49xfihwpcpiwd68mlfkrk375kdh6r6jlqka18zalxgpaan";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/inf.v0";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-inf/inf";
+      rev =  "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4";
+      sha256 = "0rf3vwyb8aqnac9x9d6ax7z5526c45a16yjm2pvkijr6qgqz8b82";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/square/go-jose.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/square/go-jose";
+      rev =  "f8f38de21b4dcd69d0413faf231983f5fd6634b1";
+      sha256 = "1bjrs3xq3m2ckfds0l4wqf81311ymm9agipmkllbvkadac156dsa";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-yaml/yaml";
+      rev =  "670d4cfef0544295bc27a114dbac37980d83185a";
+      sha256 = "182x97q4826cpzybkrl8icyx1n6l1z0kspmbz33fh901v10b6322";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/api";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/api";
+      rev =  "2d6f90ab1293a1fb871cf149423ebb72aa7423aa";
+      sha256 = "1cwrwdm104xd3608b1a5mw6a19w45532p647xdwnyn62rw2f08jx";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/apiextensions-apiserver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/apiextensions-apiserver";
+      rev =  "898b0eda132e1aeac43a459785144ee4bf9b0a2e";
+      sha256 = "1zn4i4wfmk3y36n6mqcidgsp4aqzwy5w9749zjl2bfbwzpk81bcp";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/apimachinery";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/apimachinery";
+      rev =  "103fd098999dc9c0c88536f5c9ad2e5da39373ae";
+      sha256 = "04navnpm59d75dhlz07rmay7m2izrf4m0i9xklxzqg7mlk9g20jc";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/apiserver";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/apiserver";
+      rev =  "8b122ec9e3bbab91a262d17a39325e69349dc44d";
+      sha256 = "0qfxjypa10s16sll2a75kn2ddjddr2xsa5rsiaxar3gs5pqvq1h5";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/client-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/client-go";
+      rev =  "59698c7d9724b0f95f9dc9e7f7dfdcc3dfeceb82";
+      sha256 = "0f069d1msdb2x4yvwv0wa3hzanl97csg4hsp1pycxpnqck6qx6qh";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/kube-openapi";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/kube-openapi";
+      rev =  "91cfa479c814065e420cee7ed227db0f63a5854e";
+      sha256 = "0l9yvc7gfa8i4snpv1d13vy03dplzp2jh47rqr3fhiihcz2wx4s7";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/kubernetes";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/kubernetes";
+      rev =  "2e809eed16445fff9dcbfc56e9936cf76ccbdadc";
+      sha256 = "13fzcbjfc5c35gy66nbn1ms63b8bj3g8z7wja0p8dd3yj9lcj68h";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/utils";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/utils";
+      rev =  "258e2a2fa64568210fbd6267cf1d8fd87c3cb86e";
+      sha256 = "1mbw3q03sflrdgj6l7q3frqzb5f78n0m0gzjm228sy1wnm4c3760";
+    };
+  }
+  {
+    goPackagePath  = "vbom.ml/util";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fvbommel/util";
+      rev =  "db5cfe13f5cc80a4990d98e2e1b0707a4d1a5394";
+      sha256 = "1k9c3ihhkrcmhd26pwd62mp2ll7icr2q65i5pkymnfnhhv40p682";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/helmfile/default.nix b/nixpkgs/pkgs/applications/networking/cluster/helmfile/default.nix
new file mode 100644
index 000000000000..73ec998ed8e8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/helmfile/default.nix
@@ -0,0 +1,37 @@
+{ lib, buildGoPackage, fetchFromGitHub, makeWrapper, kubernetes-helm, ... }:
+
+let version = "0.40.1"; in
+
+buildGoPackage {
+  name = "helmfile-${version}";
+
+  src = fetchFromGitHub {
+    owner = "roboll";
+    repo = "helmfile";
+    rev = "v${version}";
+    sha256 = "02ir10070rpayv9s53anldwjy5ggl268shgf085d188wl6vshaiv";
+  };
+
+  goPackagePath = "github.com/roboll/helmfile";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildFlagsArray = ''
+    -ldflags=
+    -X main.Version=${version}
+  '';
+
+  postInstall = ''
+    wrapProgram $bin/bin/helmfile \
+      --prefix PATH : ${lib.makeBinPath [ kubernetes-helm ]}
+  '';
+
+
+  meta = {
+    description = "Deploy Kubernetes Helm charts";
+    homepage = https://github.com/roboll/helmfile;
+    license = lib.licenses.mit;
+    maintainers = with lib.maintainers; [ pneumaticat ];
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/heptio-ark/default.nix b/nixpkgs/pkgs/applications/networking/cluster/heptio-ark/default.nix
new file mode 100644
index 000000000000..cd0ef728f83e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/heptio-ark/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "heptio-ark-${version}";
+  version = "0.10.0";
+
+  goPackagePath = "github.com/heptio/ark";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "heptio";
+    repo = "ark";
+    sha256 = "18h9hvp95va0hyl268gnzciwy1dqmc57bpifbj885870rdfp0ffv";
+  };
+
+  postInstall = "rm $bin/bin/issue-template-gen";
+
+  meta = with stdenv.lib; {
+    description = "A utility for managing disaster recovery, specifically for your Kubernetes cluster resources and persistent volumes";
+    homepage = https://heptio.github.io/ark/;
+    license = licenses.asl20;
+    maintainers = [maintainers.mbode];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/hetzner-kube/default.nix b/nixpkgs/pkgs/applications/networking/cluster/hetzner-kube/default.nix
new file mode 100644
index 000000000000..5eaf1d13d618
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/hetzner-kube/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildGoModule, fetchFromGitHub }:
+
+buildGoModule rec {
+  name = "hetzner-kube-${version}";
+  version = "0.4.1";
+
+  src = fetchFromGitHub {
+    owner = "xetys";
+    repo = "hetzner-kube";
+    rev = "${version}";
+    sha256 = "11202i3340vaz8xh59gwj5x0djcgbzq9jfy2214lcpml71qc85f0";
+  };
+
+  modSha256 = "1j04xyjkz7jcqrs5p5z94jqagrzcxjr9m3lyp8i91c0ymxf5m2g3";
+
+  buildFlagsArray = ''
+    -ldflags=
+    -X github.com/xetys/hetzner-kube/cmd.version=${version}
+  '';
+
+  meta = {
+    description = "A CLI tool for provisioning Kubernetes clusters on Hetzner Cloud";
+    homepage = https://github.com/xetys/hetzner-kube;
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ eliasp ];
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/jx/3321-fix-location-of-thrift.patch b/nixpkgs/pkgs/applications/networking/cluster/jx/3321-fix-location-of-thrift.patch
new file mode 100644
index 000000000000..223d6c6c2477
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/jx/3321-fix-location-of-thrift.patch
@@ -0,0 +1,36 @@
+From 40b8eaacb3a24c466c17c8a65938330d5805b112 Mon Sep 17 00:00:00 2001
+From: "Wael M. Nasreddine" <wael.nasreddine@gmail.com>
+Date: Fri, 8 Mar 2019 14:10:11 -0800
+Subject: [PATCH] chore: fix the location of thrift
+
+Thrift is no longer available at the git.apache.org and it's now
+distributed on GitHub at github.com/apache/thrift.
+
+fixes #3320
+---
+ go.mod | 2 ++
+ go.sum | 1 +
+ 2 files changed, 3 insertions(+)
+
+diff --git a/go.mod b/go.mod
+index 04bcc84cc..e26c4cf1d 100644
+--- a/go.mod
++++ b/go.mod
+@@ -184,3 +184,5 @@ replace k8s.io/metrics => k8s.io/metrics v0.0.0-20181128195641-3954d62a524d
+ replace k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20190122181752-bebe27e40fb7
+
+ replace k8s.io/client-go => k8s.io/client-go v2.0.0-alpha.0.0.20190115164855-701b91367003+incompatible
++
++replace git.apache.org/thrift.git => github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999
+diff --git a/go.sum b/go.sum
+index c9fdf8768..6ed69e69d 100644
+--- a/go.sum
++++ b/go.sum
+@@ -87,6 +87,7 @@ github.com/antham/chyle v1.4.0/go.mod h1:D94Z4aE/ECudyNoTHwkhqu77mjGPZtfPG8dNoeI
+ github.com/antham/envh v1.2.0/go.mod h1:ocIRPHuwwjyBVBtuUJOJc2TYzGg+d23xSAZexl4y9hQ=
+ github.com/antham/strumt v0.0.0-20171215230529-6776189777d3/go.mod h1:sE7EYIUE0nQzPiv5zQAmw2aVkei0j2xmb4gTIIqSFSI=
+ github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ=
++github.com/apache/thrift v0.0.0-20180902110319-2566ecd5d999/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
+ github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
+ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
+ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I=
diff --git a/nixpkgs/pkgs/applications/networking/cluster/jx/default.nix b/nixpkgs/pkgs/applications/networking/cluster/jx/default.nix
new file mode 100644
index 000000000000..88aa8777ee5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/jx/default.nix
@@ -0,0 +1,41 @@
+{ buildGoModule, fetchFromGitHub, lib }:
+
+buildGoModule rec {
+  name = "jx";
+  version = "1.3.967";
+
+  src = fetchFromGitHub {
+    owner = "jenkins-x";
+    repo = "jx";
+    rev = "v${version}";
+    sha256 = "0a25m7sz134kch21bg6l86kvwl4cg6babqf57kqidq6kid1zgdaq";
+  };
+
+  patches = [
+    # https://github.com/jenkins-x/jx/pull/3321
+    ./3321-fix-location-of-thrift.patch
+  ];
+
+  modSha256 = "0ljf0c0c3pc12nmhdbrwflcaj6hs8igzjw5hi6fyhi6n9cy87vac";
+
+  subPackages = [ "cmd/jx" ];
+
+  buildFlagsArray = ''
+    -ldflags=
+    -X github.com/jenkins-x/jx/pkg/version.Version=${version}
+    -X github.com/jenkins-x/jx/pkg/version.Revision=${version}
+  '';
+
+  meta = with lib; {
+    description = "JX is a command line tool for installing and using Jenkins X.";
+    homepage = https://jenkins-x.io;
+    longDescription = ''
+      Jenkins X provides automated CI+CD for Kubernetes with Preview
+      Environments on Pull Requests using Jenkins, Knative Build, Prow,
+      Skaffold and Helm.
+    '';
+    license = licenses.asl20 ;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kanif/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kanif/default.nix
new file mode 100644
index 000000000000..6274168b3da7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kanif/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, perl , taktuk}:
+
+stdenv.mkDerivation rec {
+  version = "1.2.2";
+  name = "kanif-${version}";
+
+  src = fetchurl {
+    url = "https://gforge.inria.fr/frs/download.php/26773/${name}.tar.gz";
+    sha256 = "3f0c549428dfe88457c1db293cfac2a22b203f872904c3abf372651ac12e5879";
+  };
+
+  preBuild = ''
+      substituteInPlace ./kanif --replace "/usr/bin/perl" "${perl}/bin/perl"
+      substituteInPlace ./kanif --replace '$taktuk_command = "taktuk";' '$taktuk_command = "${taktuk}/bin/taktuk";'
+  '';
+
+  meta = {
+    description = "Cluster management and administration swiss army knife";
+    longDescription = ''
+      Kanif is a tool for high performance computing clusters management and
+      administration. It combines the main functionalities of well-known cluster
+      management tools such as c3, pdsh and dsh, and mimics their syntax. It
+      provides three tools to run the same command on several nodes ("parallel
+      ssh", using the 'kash' command), to broadcast the copy of files or
+      directories to several nodes ('kaput' command), and to gather several
+      remote files or directories locally ('kaget' command). It relies on TakTuk
+      for efficiency and scalability.'';
+    homepage = http://taktuk.gforge.inria.fr/kanif;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.bzizou ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kompose/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kompose/default.nix
new file mode 100644
index 000000000000..19194c2d0873
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kompose/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "kompose-${version}";
+  version = "1.18.0";
+
+  goPackagePath = "github.com/kubernetes/kompose";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "kubernetes";
+    repo = "kompose";
+    sha256 = "1hb4bs710n9fghphhfakwg42wjscf136dcr05zwwfg7iyqx2cipc";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A tool to help users who are familiar with docker-compose move to Kubernetes";
+    homepage = https://github.com/kubernetes/kompose;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ thpham vdemeester ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kontemplate/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kontemplate/default.nix
new file mode 100644
index 000000000000..1e03efddc062
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kontemplate/default.nix
@@ -0,0 +1,35 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name          = "kontemplate-${version}";
+  version       = "1.7.0";
+  goPackagePath = "github.com/tazjin/kontemplate";
+  goDeps        = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner  = "tazjin";
+    repo   = "kontemplate";
+    rev    = "v${version}";
+    sha256 = "0vzircajhrfq1nykwpl52cqgzyhy51w4ff7ldpgi95w3a4fz1hzz";
+  };
+
+  meta = with lib; {
+    description      = "Extremely simple Kubernetes resource templates";
+    homepage         = "http://kontemplate.works";
+    downloadPage     = "https://github.com/tazjin/kontemplate/releases";
+    license          = licenses.gpl3;
+    maintainers      = with maintainers; [ mbode tazjin ];
+    platforms        = platforms.unix;
+    repositories.git = git://github.com/tazjin/kontemplate.git;
+
+    longDescription = ''
+      Kontemplate is a simple CLI tool that can take sets of
+      Kubernetes resource files with placeholders and insert values
+      per environment.
+
+      It can be used as a simple way of deploying the same set of
+      resources to different Kubernetes contexts with context-specific
+      configuration.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kontemplate/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/kontemplate/deps.nix
new file mode 100644
index 000000000000..f0a52f5266ef
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kontemplate/deps.nix
@@ -0,0 +1,111 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/Masterminds/semver";
+    fetch = {
+      type   = "git";
+      url    = "https://github.com/Masterminds/semver";
+      rev    = "c84ddcca87bf5a941b138dde832a7e20b0159ad8";
+      sha256 = "1dcfdr018a0yszjpvr3wshvq9cc3kvy95l55si556p617wsn1wan";
+    };
+  }
+  {
+    goPackagePath = "github.com/Masterminds/sprig";
+    fetch = {
+      type   = "git";
+      url    = "https://github.com/Masterminds/sprig";
+      rev    = "77bb58b7f5e10889a1195c21b9e7a96ee166f199";
+      sha256 = "0q4g12f3nvda1skz33qzbbdd2vj3gjfwf361hyzlx20s71brk3bk";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/template";
+    fetch = {
+      type   = "git";
+      url    = "https://github.com/alecthomas/template";
+      rev    = "a0175ee3bccc567396460bf5acd36800cb10c49c";
+      sha256 = "0qjgvvh26vk1cyfq9fadyhfgdj36f1iapbmr5xp6zqipldz8ffxj";
+    };
+  }
+  {
+    goPackagePath = "github.com/alecthomas/units";
+    fetch = {
+      type   = "git";
+      url    = "https://github.com/alecthomas/units";
+      rev    = "2efee857e7cfd4f3d0138cc3cbb1b4966962b93a";
+      sha256 = "1j65b91qb9sbrml9cpabfrcf07wmgzzghrl7809hjjhrmbzri5bl";
+    };
+  }
+  {
+    goPackagePath = "github.com/aokoli/goutils";
+    fetch = {
+      type   = "git";
+      url    = "https://github.com/aokoli/goutils";
+      rev    = "3391d3790d23d03408670993e957e8f408993c34";
+      sha256 = "1yj4yjfwylica31sgj69ygb04p9xxi22kgfxd0j5f58zr8vwww2n";
+    };
+  }
+  {
+    goPackagePath = "github.com/ghodss/yaml";
+    fetch = {
+      type   = "git";
+      url    = "https://github.com/ghodss/yaml";
+      rev    = "e9ed3c6dfb39bb1a32197cb10d527906fe4da4b6";
+      sha256 = "07cf0j3wbsl1gmn175mdgljcarfz4xbqd6pgc7b08a5lcn7zwhjz";
+    };
+  }
+  {
+    goPackagePath = "github.com/google/uuid";
+    fetch = {
+      type   = "git";
+      url    = "https://github.com/google/uuid";
+      rev    = "dec09d789f3dba190787f8b4454c7d3c936fed9e";
+      sha256 = "1hc4w67p6zkh2qk7wm1yrl69jjrjjk615mly5ll4iidn1m4mzi4i";
+    };
+  }
+  {
+    goPackagePath = "github.com/huandu/xstrings";
+    fetch = {
+      type   = "git";
+      url    = "https://github.com/huandu/xstrings";
+      rev    = "7bb0250b58e5c15670406e6f93ffda43281305b1";
+      sha256 = "1fc8q65xvsxpa12p8hcjqap2pf72zqlwpm165js9kwbgm2sf977c";
+    };
+  }
+  {
+    goPackagePath = "github.com/imdario/mergo";
+    fetch = {
+      type   = "git";
+      url    = "https://github.com/imdario/mergo";
+      rev    = "9f23e2d6bd2a77f959b2bf6acdbefd708a83a4a4";
+      sha256 = "1lbzy8p8wv439sqgf0n21q52flf2wbamp6qa1jkyv6an0nc952q7";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type   = "git";
+      url    = "https://go.googlesource.com/crypto";
+      rev    = "de0752318171da717af4ce24d0a2e8626afaeb11";
+      sha256 = "1ps1dl2a5lwr3vbwcy8n4i1v73m567y024sk961fk281phrzp13i";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/alecthomas/kingpin.v2";
+    fetch = {
+      type   = "git";
+      url    = "https://gopkg.in/alecthomas/kingpin.v2";
+      rev    = "947dcec5ba9c011838740e680966fd7087a71d0d";
+      sha256 = "0mndnv3hdngr3bxp7yxfd47cas4prv98sqw534mx7vp38gd88n5r";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type   = "git";
+      url    = "https://gopkg.in/yaml.v2";
+      rev    = "5420a8b6744d3b0345ab293f6fcba19c978f1183";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kops/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kops/default.nix
new file mode 100644
index 000000000000..a521f394ebfb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kops/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, go-bindata }:
+
+buildGoPackage rec {
+  name = "kops-${version}";
+  version = "1.11.1";
+
+  goPackagePath = "k8s.io/kops";
+
+  src = fetchFromGitHub {
+    rev = version;
+    owner = "kubernetes";
+    repo = "kops";
+    sha256 = "0jia8dhawh786grnbpn64hvsdm6wz5p7hqir01q5xxpd1psnzygj";
+  };
+
+  buildInputs = [go-bindata];
+  subPackages = ["cmd/kops"];
+
+  buildFlagsArray = ''
+    -ldflags=
+        -X k8s.io/kops.Version=${version}
+        -X k8s.io/kops.GitVersion=${version}
+  '';
+
+  preBuild = ''
+    (cd go/src/k8s.io/kops
+     go-bindata -o upup/models/bindata.go -pkg models -prefix upup/models/ upup/models/...)
+  '';
+
+  postInstall = ''
+    mkdir -p $bin/share/bash-completion/completions
+    mkdir -p $bin/share/zsh/site-functions
+    $bin/bin/kops completion bash > $bin/share/bash-completion/completions/kops
+    $bin/bin/kops completion zsh > $bin/share/zsh/site-functions/_kops
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Easiest way to get a production Kubernetes up and running";
+    homepage = https://github.com/kubernetes/kops;
+    license = licenses.asl20;
+    maintainers = with maintainers; [offline zimbatm];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/ksonnet/default.nix b/nixpkgs/pkgs/applications/networking/cluster/ksonnet/default.nix
new file mode 100644
index 000000000000..b8bce9315237
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/ksonnet/default.nix
@@ -0,0 +1,23 @@
+{ lib, buildGoPackage, fetchFromGitHub, ... }:
+
+buildGoPackage rec {
+  version = "0.11.0";
+  name = "ksonnet-${version}";
+
+  src = fetchFromGitHub {
+    owner = "ksonnet";
+    repo = "ksonnet";
+    rev = "v${version}";
+    sha256 = "0z7gkgcsiclm72bznmzv5jcgx5rblndcsiqc0r2mwhxhmv19bs04";
+  };
+
+  goPackagePath = "github.com/ksonnet/ksonnet";
+
+  meta = {
+    description = "A CLI-supported framework that streamlines writing and deployment of Kubernetes configurations to multiple clusters";
+    homepage = https://github.com/ksonnet/ksonnet;
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ flokli ];
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kube-router/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kube-router/default.nix
new file mode 100644
index 000000000000..2a43c23e73aa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kube-router/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "kube-router-${version}";
+  version = "0.2.5";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/cloudnativelabs/kube-router";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "cloudnativelabs";
+    repo = "kube-router";
+    sha256 = "1j6q6kg4qj75v2mdy9ivvwq8mx9fpdf0w08959l8imrp5byd56wv";
+  };
+
+  buildFlagsArray = ''
+    -ldflags=
+    -X
+    ${goPackagePath}/pkg/cmd.version=${version}
+    -X
+    ${goPackagePath}/pkg/cmd.buildDate=Nix
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "https://www.kube-router.io/";
+    description = "All-in-one router, firewall and service proxy for Kubernetes";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ colemickens johanot ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubecfg/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubecfg/default.nix
new file mode 100644
index 000000000000..1e16cf1afca1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubecfg/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildGoPackage, fetchFromGitHub, ... }:
+
+let version = "0.9.1"; in
+
+buildGoPackage {
+  name = "kubecfg-${version}";
+
+  src = fetchFromGitHub {
+    owner = "ksonnet";
+    repo = "kubecfg";
+    rev = "v${version}";
+    sha256 = "010k33arxa4spaq923iazsisxgsaj8c7w4z250y9yrch8xxd74bi";
+  };
+
+  goPackagePath = "github.com/ksonnet/kubecfg";
+
+  meta = {
+    description = "A tool for managing Kubernetes resources as code";
+    homepage = https://github.com/ksonnet/kubecfg;
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ benley ];
+    platforms = lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubectl/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubectl/default.nix
new file mode 100644
index 000000000000..4dbd3d38d31d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubectl/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, lib, kubernetes }:
+
+stdenv.mkDerivation {
+  name = "kubectl-${kubernetes.version}";
+
+  # kubectl is currently part of the main distribution but will eventially be
+  # split out (see homepage)
+  src = kubernetes;
+
+  outputs = [ "out" "man" ];
+
+  doBuild = false;
+
+  installPhase = ''
+    mkdir -p \
+      "$out/bin" \
+      "$out/share/bash-completion/completions" \
+      "$out/share/zsh/site-functions" \
+      "$man/share/man/man1"
+
+    cp bin/kubectl $out/bin/kubectl
+
+    cp "${kubernetes.man}/share/man/man1"/kubectl* "$man/share/man/man1"
+
+    $out/bin/kubectl completion bash > $out/share/bash-completion/completions/kubectl
+    $out/bin/kubectl completion zsh > $out/share/zsh/site-functions/_kubectl
+  '';
+
+  meta = kubernetes.meta // {
+    description = "Kubernetes CLI";
+    homepage = "https://github.com/kubernetes/kubectl";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix
new file mode 100644
index 000000000000..ef31898dd0c7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubernetes/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, lib, fetchFromGitHub, removeReferencesTo, which, go, go-bindata, makeWrapper, rsync
+, components ? [
+    "cmd/kubeadm"
+    "cmd/kubectl"
+    "cmd/kubelet"
+    "cmd/kube-apiserver"
+    "cmd/kube-controller-manager"
+    "cmd/kube-proxy"
+    "cmd/kube-scheduler"
+    "test/e2e/e2e.test"
+  ]
+}:
+
+with lib;
+
+stdenv.mkDerivation rec {
+  name = "kubernetes-${version}";
+  version = "1.13.5";
+
+  src = fetchFromGitHub {
+    owner = "kubernetes";
+    repo = "kubernetes";
+    rev = "v${version}";
+    sha256 = "06pf4h76zsqs3dsxr57y9sb9sw48nfyw1x2q1725zww61jfz2a6y";
+  };
+
+  buildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];
+
+  outputs = ["out" "man" "pause"];
+
+  postPatch = ''
+    substituteInPlace "hack/lib/golang.sh" --replace "_cgo" ""
+    substituteInPlace "hack/generate-docs.sh" --replace "make" "make SHELL=${stdenv.shell}"
+    # hack/update-munge-docs.sh only performs some tests on the documentation.
+    # They broke building k8s; disabled for now.
+    echo "true" > "hack/update-munge-docs.sh"
+
+    patchShebangs ./hack
+  '';
+
+  WHAT="${concatStringsSep " " components}";
+
+  postBuild = ''
+    ./hack/generate-docs.sh
+    (cd build/pause && cc pause.c -o pause)
+  '';
+
+  installPhase = ''
+    mkdir -p "$out/bin" "$out/share/bash-completion/completions" "$out/share/zsh/site-functions" "$man/share/man" "$pause/bin"
+
+    cp _output/local/go/bin/* "$out/bin/"
+    cp build/pause/pause "$pause/bin/pause"
+    cp -R docs/man/man1 "$man/share/man"
+
+    cp cluster/addons/addon-manager/namespace.yaml $out/share
+    cp cluster/addons/addon-manager/kube-addons.sh $out/bin/kube-addons
+    patchShebangs $out/bin/kube-addons
+    substituteInPlace $out/bin/kube-addons \
+      --replace /opt/namespace.yaml $out/share/namespace.yaml
+    wrapProgram $out/bin/kube-addons --set "KUBECTL_BIN" "$out/bin/kubectl"
+
+    $out/bin/kubectl completion bash > $out/share/bash-completion/completions/kubectl
+    $out/bin/kubectl completion zsh > $out/share/zsh/site-functions/_kubectl
+  '';
+
+  preFixup = ''
+    find $out/bin $pause/bin -type f -exec remove-references-to -t ${go} '{}' +
+  '';
+
+  meta = {
+    description = "Production-Grade Container Scheduling and Management";
+    license = licenses.asl20;
+    homepage = https://kubernetes.io;
+    maintainers = with maintainers; [johanot offline];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix
new file mode 100644
index 000000000000..9e991b25fc24
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubetail/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, lib, ... }:
+
+stdenv.mkDerivation rec {
+  name = "kubetail-${version}";
+  version = "1.6.7";
+
+  src = fetchFromGitHub {
+    owner = "johanhaleby";
+    repo = "kubetail";
+    rev = "${version}";
+    sha256 = "159162dazcr0gsq9mkwb7sf4psqq5iqqgavy2mc8qnpswdlq3pfc";
+  };
+
+  installPhase = ''
+    install -Dm755 kubetail                 "$out/bin/kubetail"
+    install -Dm755 completion/kubetail.bash "$out/share/bash-completion/completions/kubetail"
+    install -Dm755 completion/kubetail.fish "$out/share/fish/vendor_completions.d/kubetail.fish"
+    install -Dm755 completion/kubetail.zsh  "$out/share/zsh/site-functions/_kubetail"
+  '';
+
+  meta = with lib; {
+    description = "Bash script to tail Kubernetes logs from multiple pods at the same time";
+    longDescription = ''
+      Bash script that enables you to aggregate (tail/follow) logs from
+      multiple pods into one stream. This is the same as running "kubectl logs
+      -f " but for multiple pods.
+    '';
+    homepage = https://github.com/johanhaleby/kubetail;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubeval/default.nix b/nixpkgs/pkgs/applications/networking/cluster/kubeval/default.nix
new file mode 100644
index 000000000000..55a827f9cf92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubeval/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, lib, fetchFromGitHub, buildGoPackage, makeWrapper }:
+
+let
+
+  # Cache schema as a package so network calls are not
+  # necessary at runtime, allowing use in package builds
+  schema = stdenv.mkDerivation rec {
+    name = "kubeval-schema";
+    src = fetchFromGitHub {
+      owner = "garethr";
+      repo = "kubernetes-json-schema";
+      rev = "c7672fd48e1421f0060dd54b6620baa2ab7224ba";
+      sha256 = "0picr3wvjx4qv158jy4f60pl225rm4mh0l97pf8nqi9h9x4x888p";
+    };
+
+    installPhase = ''
+      mkdir -p $out/kubernetes-json-schema/master
+      cp -R . $out/kubernetes-json-schema/master
+    '';
+   };
+
+in
+
+buildGoPackage rec {
+  name = "kubeval-${version}";
+  version = "0.7.3";
+
+  goPackagePath = "github.com/garethr/kubeval";
+  src = fetchFromGitHub {
+    owner = "garethr";
+    repo = "kubeval";
+    rev = version;
+    sha256 = "042v4mc5p80vmk56wp6aw89yiibjnfqn79c0zcd6y179br4gpfnb";
+  };
+  goDeps = ./deps.nix;
+
+  buildInputs = [ makeWrapper ];
+
+  postFixup = "wrapProgram $bin/bin/kubeval --set KUBEVAL_SCHEMA_LOCATION file:///${schema}";
+
+  meta = with lib; {
+    description = "Validate your Kubernetes configuration files";
+    homepage = https://github.com/garethr/kubeval;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ nicknovitski ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/kubeval/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/kubeval/deps.nix
new file mode 100644
index 000000000000..b9565e927ded
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/kubeval/deps.nix
@@ -0,0 +1,174 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev = "5b77d2a35fb0ede96d138fc9a99f5c9b6aef11b4";
+      sha256 = "0v8msvg38r8d1iiq2i5r4xyfx0invhc941kjrsg5gzwvagv55inv";
+    };
+  }
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9";
+      sha256 = "07va9crci0ijlivbb7q57d2rz9h27zgn2fsm60spjsqpdbvyrx4g";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-multierror";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-multierror";
+      rev = "b7773ae218740a7be65057fc60b366a49b538a44";
+      sha256 = "09904bk7ac6qs9dgiv23rziq9h3makb9qg4jvxr71rlydsd7psfd";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168";
+      sha256 = "1qalfsc31fra7hcw2lc3s20aj7al62fq3j5fn5kga3mg99b82nyr";
+    };
+  }
+  {
+    goPackagePath = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev = "c2353362d570a7bfa228149c62842019201cfb71";
+      sha256 = "1a10362wv8a8qwb818wygn2z48lgzch940hvpv81hv8gc747ajxn";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b";
+      sha256 = "1aqk9qr46bwgdc5j7n7als61xvssvyjf4qzfsvhacl4izpygqnw7";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev = "66540cf1fcd2c3aee6f6787dfa32a6ae9a870f12";
+      sha256 = "1n8na0yg90gm0rpifmzrby5r385vvd62cdam3ls7ssy02bjvfw15";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev = "787d034dfe70e44075ccc060d346146ef53270ad";
+      sha256 = "0138rjiacl71h7kvhzinviwvy6qa2m6rflpv9lgqv15hnjvhwvg1";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev = "8965335b8c7107321228e3e3702cab9832751bac";
+      sha256 = "177bk7lq40jbgv9p9r80aydpaccfk8ja3a7jjhfwiwk9r1pa4rr2";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev = "1e58aa3361fd650121dceeedc399e7189c05674a";
+      sha256 = "1d6dy60dw7i2mcab10yp99wi5w28jzhzzf16w4ys6bna7ymndiin";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev = "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394";
+      sha256 = "132p84i20b9s5r6fs597lsa6648vd415ch7c0d018vm8smzqpd0h";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "3ebe029320b2676d667ae88da602a5f854788a8a";
+      sha256 = "11yxs0wqy70wj106fkz8r923yg4ncnc2mbw33v48zmlg4a1rasgp";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev = "b5e8006cbee93ec955a89ab31e0e3ce3204f3736";
+      sha256 = "0y3r6ysi5vn0yq5c7pbl62yg2i64fkv54xgj2jf1hn3v6zzyimis";
+    };
+  }
+  {
+    goPackagePath = "github.com/xeipuuv/gojsonpointer";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xeipuuv/gojsonpointer";
+      rev = "4e3ac2762d5f479393488629ee9370b50873b3a6";
+      sha256 = "13y6iq2nzf9z4ls66bfgnnamj2m3438absmbpqry64bpwjfbsi9q";
+    };
+  }
+  {
+    goPackagePath = "github.com/xeipuuv/gojsonreference";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xeipuuv/gojsonreference";
+      rev = "bd5ef7bd5415a7ac448318e64f11a24cd21e594b";
+      sha256 = "1xby79padc7bmyb8rfbad8wfnfdzpnh51b1n8c0kibch0kwc1db5";
+    };
+  }
+  {
+    goPackagePath = "github.com/xeipuuv/gojsonschema";
+    fetch = {
+      type = "git";
+      url = "https://github.com/xeipuuv/gojsonschema";
+      rev = "9ff6d6c47f3f5de55acc6f464d6e3719b02818ae";
+      sha256 = "0rpkya4lnpv9g33bs0z3vd5dlnadkyq1lg7114nbd73vm878s6sw";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "2d6f6f883a06fc0d5f4b14a81e4c28705ea64c15";
+      sha256 = "1a6x6n1fk5k013w5r4b0bxws1d2fh0s69mbzpi1vkyfpcxabwjhj";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "5c1cf69b5978e5a34c5f9ba09a83e56acc4b7877";
+      sha256 = "03br8p1sb1ffr02l8hyrgcyib7ms0z06wy3v4r1dj2l6q4ghwzfs";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "5420a8b6744d3b0345ab293f6fcba19c978f1183";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/luigi/default.nix b/nixpkgs/pkgs/applications/networking/cluster/luigi/default.nix
new file mode 100644
index 000000000000..aad752643645
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/luigi/default.nix
@@ -0,0 +1,35 @@
+{ lib, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  pname = "luigi";
+  version = "2.8.0";
+
+  src = python3Packages.fetchPypi {
+    inherit pname version;
+    sha256 = "1869lb6flmca6s7ccws7mvyn66nvrqjky40jwf2liv9fg0lp8899";
+  };
+
+  # Relax version constraint
+  postPatch = ''
+    sed -i 's/<2.2.0//' setup.py
+  '';
+
+  propagatedBuildInputs = with python3Packages; [ tornado_4 python-daemon boto3 ];
+
+  # Requires tox, hadoop, and google cloud
+  doCheck = false;
+
+  # This enables accessing modules stored in cwd
+  makeWrapperArgs = ["--prefix PYTHONPATH . :"];
+
+  meta = with lib; {
+    homepage = https://github.com/spotify/luigi;
+    description = "Python package that helps you build complex pipelines of batch jobs";
+    longDescription = ''
+      Luigi handles dependency resolution, workflow management, visualization,
+      handling failures, command line integration, and much more.
+    '';
+    license =  [ licenses.asl20 ];
+    maintainers = [ maintainers.bhipple ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/marathon/default.nix b/nixpkgs/pkgs/applications/networking/cluster/marathon/default.nix
new file mode 100644
index 000000000000..49cac6d50635
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/marathon/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, makeWrapper, jdk, mesos, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "marathon-${version}";
+  version = "1.4.2";
+
+  src = fetchurl {
+    url = "https://downloads.mesosphere.com/marathon/v${version}/marathon-${version}.tgz";
+    sha256 = "6eab65a95c87a989e922aca2b49ba872b50a94e46a8fd4831d1ab41f319d6932";
+  };
+
+  buildInputs = [ makeWrapper jdk mesos ];
+
+  installPhase = ''
+    mkdir -p $out/{bin,libexec/marathon}
+    cp target/scala-*/marathon*.jar $out/libexec/marathon/${name}.jar
+
+    makeWrapper ${jdk.jre}/bin/java $out/bin/marathon \
+      --add-flags "-Xmx512m -jar $out/libexec/marathon/${name}.jar" \
+      --set "MESOS_NATIVE_JAVA_LIBRARY" "$MESOS_NATIVE_JAVA_LIBRARY"
+    '';
+
+  meta = with stdenv.lib; {
+    homepage = https://mesosphere.github.io/marathon;
+    description = "Cluster-wide init and control system for services in cgroups or Docker containers";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ kamilchm kevincox pradeepchhetri ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/mesos/default.nix b/nixpkgs/pkgs/applications/networking/cluster/mesos/default.nix
new file mode 100644
index 000000000000..8cff2494bf8f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/mesos/default.nix
@@ -0,0 +1,259 @@
+{ stdenv, lib, makeWrapper, fetchurl, curl, sasl, openssh
+, unzip, gnutar, jdk, python, wrapPython
+, setuptools, boto, pythonProtobuf, apr, subversion, gzip
+, leveldb, glog, perf, utillinux, libnl, iproute, openssl, libevent
+, ethtool, coreutils, which, iptables, maven
+, bash, autoreconfHook
+, utf8proc, lz4
+, withJava ? !stdenv.isDarwin
+}:
+
+let
+  mavenRepo = import ./mesos-deps.nix { inherit stdenv curl; };
+  # `tar -z` requires gzip on $PATH, so wrap tar.
+  # At some point, we should try to patch mesos so we add gzip to the PATH when
+  # tar is invoked. I think that only needs to be done here:
+  #   src/common/command_utils.cpp
+  # https://github.com/NixOS/nixpkgs/issues/13783
+  tarWithGzip = lib.overrideDerivation gnutar (oldAttrs: {
+    # Original builder is bash 4.3.42 from bootstrap tools, too old for makeWrapper.
+    builder = "${bash}/bin/bash";
+    buildInputs = (oldAttrs.buildInputs or []) ++ [ makeWrapper ];
+    postInstall = (oldAttrs.postInstall or "") + ''
+      wrapProgram $out/bin/tar --prefix PATH ":" "${gzip}/bin"
+    '';
+  });
+
+in stdenv.mkDerivation rec {
+  version = "1.4.1";
+  name = "mesos-${version}";
+
+  enableParallelBuilding = true;
+  dontDisableStatic = true;
+
+  src = fetchurl {
+    url = "mirror://apache/mesos/${version}/${name}.tar.gz";
+    sha256 = "1c7l0rim9ija913gpppz2mcms08ywyqhlzbbspqsi7wwfdd7jwsr";
+  };
+
+  patches = [
+    # https://reviews.apache.org/r/36610/
+    # TODO: is this still needed?
+    ./rb36610.patch
+
+    # see https://github.com/cstrahan/mesos/tree/nixos-${version}
+    ./nixos.patch
+  ];
+  nativeBuildInputs = [
+    autoreconfHook
+  ];
+  buildInputs = [
+    makeWrapper curl sasl
+    python wrapPython boto setuptools leveldb
+    subversion apr glog openssl libevent
+    utf8proc lz4
+  ] ++ lib.optionals stdenv.isLinux [
+    libnl
+  ] ++ lib.optionals withJava [
+    jdk maven
+  ];
+
+  propagatedBuildInputs = [
+    pythonProtobuf
+  ];
+  preConfigure = ''
+    # https://issues.apache.org/jira/browse/MESOS-6616
+    configureFlagsArray+=(
+      "CXXFLAGS=-O2 -Wno-error=strict-aliasing"
+    )
+
+    substituteInPlace 3rdparty/stout/include/stout/jsonify.hpp \
+      --replace '<xlocale.h>' '<locale.h>'
+    # Fix cases where makedev(),major(),minor() are referenced through
+    # <sys/types.h> instead of <sys/sysmacros.h>
+    sed 1i'#include <sys/sysmacros.h>' -i src/linux/fs.cpp
+    sed 1i'#include <sys/sysmacros.h>' -i src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
+    substituteInPlace 3rdparty/stout/include/stout/os/posix/chown.hpp \
+      --subst-var-by chown ${coreutils}/bin/chown
+
+    substituteInPlace 3rdparty/stout/Makefile.am \
+      --replace "-lprotobuf" \
+                "${pythonProtobuf.protobuf}/lib/libprotobuf.a"
+
+    substituteInPlace 3rdparty/stout/include/stout/os/posix/fork.hpp \
+      --subst-var-by sh ${bash}/bin/bash
+
+    substituteInPlace 3rdparty/stout/include/stout/posix/os.hpp \
+      --subst-var-by tar ${tarWithGzip}/bin/tar
+
+    substituteInPlace src/cli/mesos-scp \
+      --subst-var-by scp ${openssh}/bin/scp
+
+    substituteInPlace src/common/command_utils.cpp \
+      --subst-var-by curl      ${curl}/bin/curl \
+      --subst-var-by gzip      ${gzip}/bin/gzip \
+      --subst-var-by sha512sum ${coreutils}/bin/sha512sum \
+      --subst-var-by tar       ${tarWithGzip}/bin/tar
+
+    substituteInPlace src/launcher/fetcher.cpp \
+      --subst-var-by cp    ${coreutils}/bin/cp \
+      --subst-var-by gzip  ${gzip}/bin/gzip \
+      --subst-var-by tar   ${tarWithGzip}/bin/tar \
+      --subst-var-by unzip ${unzip}/bin/unzip
+
+    substituteInPlace src/python/cli/src/mesos/cli.py \
+      --subst-var-by mesos-resolve $out/bin/mesos-resolve
+
+    substituteInPlace src/python/native_common/ext_modules.py.in \
+      --replace "-lprotobuf" \
+                "${pythonProtobuf.protobuf}/lib/libprotobuf.a"
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/gpu/volume.cpp \
+      --subst-var-by cp    ${coreutils}/bin/cp \
+      --subst-var-by which ${which}/bin/which
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/posix/disk.cpp \
+      --subst-var-by du ${coreutils}/bin/du
+
+    substituteInPlace src/slave/containerizer/mesos/provisioner/backends/copy.cpp \
+      --subst-var-by cp ${coreutils}/bin/cp \
+      --subst-var-by rm ${coreutils}/bin/rm
+
+    substituteInPlace src/uri/fetchers/copy.cpp \
+      --subst-var-by cp ${coreutils}/bin/cp
+
+    substituteInPlace src/uri/fetchers/curl.cpp \
+      --subst-var-by curl ${curl}/bin/curl
+
+    substituteInPlace src/uri/fetchers/docker.cpp \
+      --subst-var-by curl ${curl}/bin/curl
+
+    substituteInPlace src/Makefile.am \
+      --subst-var-by mavenRepo ${mavenRepo} \
+      --replace "-lprotobuf" \
+                "${pythonProtobuf.protobuf}/lib/libprotobuf.a"
+
+  '' + lib.optionalString stdenv.isLinux ''
+
+    substituteInPlace src/linux/perf.cpp \
+      --subst-var-by perf ${perf}/bin/perf
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/filesystem/linux.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/filesystem/shared.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/gpu/isolator.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/namespaces/pid.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/network/cni/cni.cpp \
+      --subst-var-by mount ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp \
+      --subst-var-by iptables ${iptables}/bin/iptables
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/network/port_mapping.cpp \
+      --subst-var-by ethtool ${ethtool}/sbin/ethtool \
+      --subst-var-by ip      ${iproute}/bin/ip \
+      --subst-var-by mount   ${utillinux}/bin/mount \
+      --subst-var-by tc      ${iproute}/bin/tc
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/volume/image.cpp \
+      --subst-var-by mount   ${utillinux}/bin/mount
+
+    substituteInPlace src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp \
+      --subst-var-by mount   ${utillinux}/bin/mount
+  '';
+
+  configureFlags = [
+    "--sbindir=\${out}/bin"
+    "--with-apr=${apr.dev}"
+    "--with-svn=${subversion.dev}"
+    "--with-leveldb=${leveldb}"
+    "--with-glog=${glog}"
+    "--enable-optimize"
+    "--disable-python-dependency-install"
+    "--enable-ssl"
+    "--with-ssl=${openssl.dev}"
+    "--enable-libevent"
+    "--with-libevent=${libevent.dev}"
+    "--with-protobuf=${pythonProtobuf.protobuf}"
+    "PROTOBUF_JAR=${mavenRepo}/com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar"
+    (if withJava then "--enable-java" else "--disable-java")
+  ] ++ lib.optionals stdenv.isLinux [
+    "--with-network-isolator"
+    "--with-nl=${libnl.dev}"
+  ];
+
+  postInstall = ''
+    rm -rf $out/var
+    rm $out/bin/*.sh
+
+    # Inspired by: pkgs/development/python-modules/generic/default.nix
+    pushd src/python
+    mkdir -p $out/lib/${python.libPrefix}/site-packages
+    export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+    ${python}/bin/${python.executable} setup.py install \
+      --install-lib=$out/lib/${python.libPrefix}/site-packages \
+      --old-and-unmanageable \
+      --prefix="$out"
+    rm -f "$out/lib/${python.libPrefix}"/site-packages/site.py*
+    popd
+
+    # optional python dependency for mesos cli
+    pushd src/python/cli
+    ${python}/bin/${python.executable} setup.py install \
+      --install-lib=$out/lib/${python.libPrefix}/site-packages \
+      --old-and-unmanageable \
+      --prefix="$out"
+    popd
+  '' + stdenv.lib.optionalString withJava ''
+    mkdir -p $out/share/java
+    cp src/java/target/mesos-*.jar $out/share/java
+
+    MESOS_NATIVE_JAVA_LIBRARY=$out/lib/libmesos${stdenv.hostPlatform.extensions.sharedLibrary}
+
+    mkdir -p $out/nix-support
+    touch $out/nix-support/setup-hook
+    echo "export MESOS_NATIVE_JAVA_LIBRARY=$MESOS_NATIVE_JAVA_LIBRARY" >> $out/nix-support/setup-hook
+    echo "export MESOS_NATIVE_LIBRARY=$MESOS_NATIVE_JAVA_LIBRARY" >> $out/nix-support/setup-hook
+  '';
+
+  postFixup = ''
+    if test -e $out/nix-support/propagated-build-inputs; then
+      ln -s $out/nix-support/propagated-build-inputs $out/nix-support/propagated-user-env-packages
+    fi
+
+    for inputsfile in propagated-build-inputs propagated-native-build-inputs; do
+      if test -e $out/nix-support/$inputsfile; then
+        createBuildInputsPth $inputsfile "$(cat $out/nix-support/$inputsfile)"
+      fi
+    done
+
+    for f in $out/libexec/mesos/python/mesos/*.py; do
+      ${python}/bin/${python.executable} -c "import py_compile; py_compile.compile('$f')"
+    done
+
+    # wrap the python programs
+    for prog in mesos-cat mesos-ps mesos-scp mesos-tail; do
+      wrapProgram "$out/bin/$prog" \
+        --prefix PYTHONPATH ":" "$out/lib/${python.libPrefix}/site-packages"
+      true
+    done
+  '';
+
+  meta = with lib; {
+    homepage    = "http://mesos.apache.org";
+    license     = licenses.asl20;
+    description = "A cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks";
+    maintainers = with maintainers; [ cstrahan kevincox offline ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh b/nixpkgs/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh
new file mode 100644
index 000000000000..cf7318ecb273
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/mesos/fetch-mesos-deps.sh
@@ -0,0 +1,1359 @@
+source $stdenv/setup
+header "fetching Apache Mesos maven repo"
+
+function fetchArtifact {
+  repoPath="$1"
+  echo "Fetching $repoPath"
+  url="http://repo.maven.apache.org/maven2/$repoPath"
+  mkdir -p $(dirname $out/$repoPath)
+  curl --fail --location --insecure --retry 3 --max-redirs 20 "$url" --output "$out/$repoPath"
+}
+
+fetchArtifact org/apache/apache/11/apache-11.pom
+fetchArtifact org/apache/apache/11/apache-11.pom.sha1
+fetchArtifact org/apache/apache/10/apache-10.pom
+fetchArtifact org/apache/apache/10/apache-10.pom.sha1
+fetchArtifact org/apache/apache/7/apache-7.pom
+fetchArtifact org/apache/apache/7/apache-7.pom.sha1
+fetchArtifact org/apache/apache/9/apache-9.pom
+fetchArtifact org/apache/apache/9/apache-9.pom.sha1
+fetchArtifact org/apache/apache/13/apache-13.pom
+fetchArtifact org/apache/apache/13/apache-13.pom.sha1
+fetchArtifact org/apache/apache/3/apache-3.pom
+fetchArtifact org/apache/apache/3/apache-3.pom.sha1
+fetchArtifact org/apache/apache/6/apache-6.pom
+fetchArtifact org/apache/apache/6/apache-6.pom.sha1
+fetchArtifact org/apache/apache/4/apache-4.pom
+fetchArtifact org/apache/apache/4/apache-4.pom.sha1
+fetchArtifact org/apache/apache/2/apache-2.pom
+fetchArtifact org/apache/apache/2/apache-2.pom.sha1
+fetchArtifact org/apache/apache/5/apache-5.pom
+fetchArtifact org/apache/apache/5/apache-5.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-remote-resources-plugin/1.3/maven-remote-resources-plugin-1.3.pom
+fetchArtifact org/apache/maven/plugins/maven-remote-resources-plugin/1.3/maven-remote-resources-plugin-1.3.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-remote-resources-plugin/1.3/maven-remote-resources-plugin-1.3.jar
+fetchArtifact org/apache/maven/plugins/maven-remote-resources-plugin/1.3/maven-remote-resources-plugin-1.3.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/22/maven-plugins-22.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/18/maven-plugins-18.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/18/maven-plugins-18.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/19/maven-plugins-19.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/19/maven-plugins-19.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom
+fetchArtifact org/apache/maven/plugins/maven-plugins/24/maven-plugins-24.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-site-plugin/3.1/maven-site-plugin-3.1.pom
+fetchArtifact org/apache/maven/plugins/maven-site-plugin/3.1/maven-site-plugin-3.1.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-site-plugin/3.1/maven-site-plugin-3.1.jar
+fetchArtifact org/apache/maven/plugins/maven-site-plugin/3.1/maven-site-plugin-3.1.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-source-plugin/2.1.2/maven-source-plugin-2.1.2.pom
+fetchArtifact org/apache/maven/plugins/maven-source-plugin/2.1.2/maven-source-plugin-2.1.2.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-source-plugin/2.1.2/maven-source-plugin-2.1.2.jar
+fetchArtifact org/apache/maven/plugins/maven-source-plugin/2.1.2/maven-source-plugin-2.1.2.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-gpg-plugin/1.4/maven-gpg-plugin-1.4.pom
+fetchArtifact org/apache/maven/plugins/maven-gpg-plugin/1.4/maven-gpg-plugin-1.4.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-gpg-plugin/1.4/maven-gpg-plugin-1.4.jar
+fetchArtifact org/apache/maven/plugins/maven-gpg-plugin/1.4/maven-gpg-plugin-1.4.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
+fetchArtifact org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar
+fetchArtifact org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar
+fetchArtifact org/apache/maven/plugins/maven-resources-plugin/2.5/maven-resources-plugin-2.5.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.5.1/maven-compiler-plugin-2.5.1.pom
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.5.1/maven-compiler-plugin-2.5.1.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.5.1/maven-compiler-plugin-2.5.1.jar
+fetchArtifact org/apache/maven/plugins/maven-compiler-plugin/2.5.1/maven-compiler-plugin-2.5.1.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.12/maven-surefire-plugin-2.12.pom
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.12/maven-surefire-plugin-2.12.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.12/maven-surefire-plugin-2.12.jar
+fetchArtifact org/apache/maven/plugins/maven-surefire-plugin/2.12/maven-surefire-plugin-2.12.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.pom
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.jar
+fetchArtifact org/apache/maven/plugins/maven-jar-plugin/2.4/maven-jar-plugin-2.4.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-javadoc-plugin/2.8.1/maven-javadoc-plugin-2.8.1.pom
+fetchArtifact org/apache/maven/plugins/maven-javadoc-plugin/2.8.1/maven-javadoc-plugin-2.8.1.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-javadoc-plugin/2.8.1/maven-javadoc-plugin-2.8.1.jar
+fetchArtifact org/apache/maven/plugins/maven-javadoc-plugin/2.8.1/maven-javadoc-plugin-2.8.1.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.2/maven-shade-plugin-2.2.pom
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.2/maven-shade-plugin-2.2.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.2/maven-shade-plugin-2.2.jar
+fetchArtifact org/apache/maven/plugins/maven-shade-plugin/2.2/maven-shade-plugin-2.2.jar.sha1
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.pom.sha1
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.jar
+fetchArtifact org/apache/maven/plugins/maven-dependency-plugin/2.8/maven-dependency-plugin-2.8.jar.sha1
+fetchArtifact org/apache/maven/maven-parent/21/maven-parent-21.pom
+fetchArtifact org/apache/maven/maven-parent/21/maven-parent-21.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/16/maven-parent-16.pom
+fetchArtifact org/apache/maven/maven-parent/16/maven-parent-16.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/19/maven-parent-19.pom
+fetchArtifact org/apache/maven/maven-parent/19/maven-parent-19.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/23/maven-parent-23.pom
+fetchArtifact org/apache/maven/maven-parent/23/maven-parent-23.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/5/maven-parent-5.pom
+fetchArtifact org/apache/maven/maven-parent/5/maven-parent-5.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/13/maven-parent-13.pom
+fetchArtifact org/apache/maven/maven-parent/13/maven-parent-13.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/7/maven-parent-7.pom
+fetchArtifact org/apache/maven/maven-parent/7/maven-parent-7.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/6/maven-parent-6.pom
+fetchArtifact org/apache/maven/maven-parent/6/maven-parent-6.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/8/maven-parent-8.pom
+fetchArtifact org/apache/maven/maven-parent/8/maven-parent-8.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/20/maven-parent-20.pom
+fetchArtifact org/apache/maven/maven-parent/20/maven-parent-20.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/10/maven-parent-10.pom
+fetchArtifact org/apache/maven/maven-parent/10/maven-parent-10.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/15/maven-parent-15.pom
+fetchArtifact org/apache/maven/maven-parent/15/maven-parent-15.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/11/maven-parent-11.pom
+fetchArtifact org/apache/maven/maven-parent/11/maven-parent-11.pom.sha1
+fetchArtifact org/apache/maven/maven-parent/9/maven-parent-9.pom
+fetchArtifact org/apache/maven/maven-parent/9/maven-parent-9.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire/2.12/surefire-2.12.pom
+fetchArtifact org/apache/maven/surefire/surefire/2.12/surefire-2.12.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.12/surefire-booter-2.12.pom
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.12/surefire-booter-2.12.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.12/surefire-booter-2.12.jar
+fetchArtifact org/apache/maven/surefire/surefire-booter/2.12/surefire-booter-2.12.jar.sha1
+fetchArtifact org/apache/maven/surefire/surefire-api/2.12/surefire-api-2.12.pom
+fetchArtifact org/apache/maven/surefire/surefire-api/2.12/surefire-api-2.12.pom.sha1
+fetchArtifact org/apache/maven/surefire/surefire-api/2.12/surefire-api-2.12.jar
+fetchArtifact org/apache/maven/surefire/surefire-api/2.12/surefire-api-2.12.jar.sha1
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.12/maven-surefire-common-2.12.pom
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.12/maven-surefire-common-2.12.pom.sha1
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.12/maven-surefire-common-2.12.jar
+fetchArtifact org/apache/maven/surefire/maven-surefire-common/2.12/maven-surefire-common-2.12.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.jar
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.6/maven-plugin-api-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.1/maven-plugin-api-2.0.1.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.1/maven-plugin-api-2.0.1.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.jar
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.9/maven-plugin-api-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.pom
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.jar
+fetchArtifact org/apache/maven/maven-plugin-api/3.0/maven-plugin-api-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.2.1/maven-plugin-api-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.8/maven-plugin-api-2.0.8.pom
+fetchArtifact org/apache/maven/maven-plugin-api/2.0.8/maven-plugin-api-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.6/maven-2.0.6.pom
+fetchArtifact org/apache/maven/maven/2.0.6/maven-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.1/maven-2.0.1.pom
+fetchArtifact org/apache/maven/maven/2.0.1/maven-2.0.1.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.8/maven-2.0.8.pom
+fetchArtifact org/apache/maven/maven/2.0.8/maven-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0/maven-2.0.pom
+fetchArtifact org/apache/maven/maven/2.0/maven-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.9/maven-2.0.9.pom
+fetchArtifact org/apache/maven/maven/2.0.9/maven-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven/3.0/maven-3.0.pom
+fetchArtifact org/apache/maven/maven/3.0/maven-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven/2.2.1/maven-2.2.1.pom
+fetchArtifact org/apache/maven/maven/2.2.1/maven-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven/2.2.0/maven-2.2.0.pom
+fetchArtifact org/apache/maven/maven/2.2.0/maven-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.2/maven-2.0.2.pom
+fetchArtifact org/apache/maven/maven/2.0.2/maven-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven/2.0.5/maven-2.0.5.pom
+fetchArtifact org/apache/maven/maven/2.0.5/maven-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.jar
+fetchArtifact org/apache/maven/maven-model/2.0.6/maven-model-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-model/2.0/maven-model-2.0.pom
+fetchArtifact org/apache/maven/maven-model/2.0/maven-model-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.pom
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar
+fetchArtifact org/apache/maven/maven-model/2.0.9/maven-model-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.pom
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.jar
+fetchArtifact org/apache/maven/maven-model/3.0/maven-model-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.pom
+fetchArtifact org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.8/maven-model-2.0.8.pom
+fetchArtifact org/apache/maven/maven-model/2.0.8/maven-model-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.2.0/maven-model-2.2.0.pom
+fetchArtifact org/apache/maven/maven-model/2.2.0/maven-model-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model/2.0.5/maven-model-2.0.5.pom
+fetchArtifact org/apache/maven/maven-model/2.0.5/maven-model-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.jar
+fetchArtifact org/apache/maven/maven-project/2.0.6/maven-project-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-project/2.0/maven-project-2.0.pom
+fetchArtifact org/apache/maven/maven-project/2.0/maven-project-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.pom
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar
+fetchArtifact org/apache/maven/maven-project/2.0.9/maven-project-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.8/maven-project-2.0.8.pom
+fetchArtifact org/apache/maven/maven-project/2.0.8/maven-project-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.pom
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.jar
+fetchArtifact org/apache/maven/maven-project/2.2.0/maven-project-2.2.0.jar.sha1
+fetchArtifact org/apache/maven/maven-project/2.0.5/maven-project-2.0.5.pom
+fetchArtifact org/apache/maven/maven-project/2.0.5/maven-project-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.jar
+fetchArtifact org/apache/maven/maven-settings/2.0.6/maven-settings-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0/maven-settings-2.0.pom
+fetchArtifact org/apache/maven/maven-settings/2.0/maven-settings-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.jar
+fetchArtifact org/apache/maven/maven-settings/2.0.9/maven-settings-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.pom
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.jar
+fetchArtifact org/apache/maven/maven-settings/3.0/maven-settings-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.8/maven-settings-2.0.8.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.8/maven-settings-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.2.0/maven-settings-2.2.0.pom
+fetchArtifact org/apache/maven/maven-settings/2.2.0/maven-settings-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings/2.0.5/maven-settings-2.0.5.pom
+fetchArtifact org/apache/maven/maven-settings/2.0.5/maven-settings-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.jar
+fetchArtifact org/apache/maven/maven-profile/2.0.6/maven-profile-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0/maven-profile-2.0.pom
+fetchArtifact org/apache/maven/maven-profile/2.0/maven-profile-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.jar
+fetchArtifact org/apache/maven/maven-profile/2.0.9/maven-profile-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.8/maven-profile-2.0.8.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.8/maven-profile-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.pom
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.jar
+fetchArtifact org/apache/maven/maven-profile/2.2.0/maven-profile-2.2.0.jar.sha1
+fetchArtifact org/apache/maven/maven-profile/2.0.5/maven-profile-2.0.5.pom
+fetchArtifact org/apache/maven/maven-profile/2.0.5/maven-profile-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.jar
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.jar
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.9/maven-artifact-manager-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.8/maven-artifact-manager-2.0.8.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.8/maven-artifact-manager-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.jar
+fetchArtifact org/apache/maven/maven-artifact-manager/2.2.0/maven-artifact-manager-2.2.0.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.2/maven-artifact-manager-2.0.2.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.2/maven-artifact-manager-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.5/maven-artifact-manager-2.0.5.pom
+fetchArtifact org/apache/maven/maven-artifact-manager/2.0.5/maven-artifact-manager-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.jar
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.6/maven-repository-metadata-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.jar
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.9/maven-repository-metadata-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.jar
+fetchArtifact org/apache/maven/maven-repository-metadata/3.0/maven-repository-metadata-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.8/maven-repository-metadata-2.0.8.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.8/maven-repository-metadata-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.2.0/maven-repository-metadata-2.2.0.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.2.0/maven-repository-metadata-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.2/maven-repository-metadata-2.0.2.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.2/maven-repository-metadata-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.5/maven-repository-metadata-2.0.5.pom
+fetchArtifact org/apache/maven/maven-repository-metadata/2.0.5/maven-repository-metadata-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.jar
+fetchArtifact org/apache/maven/maven-artifact/2.0.6/maven-artifact-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.8/maven-artifact-2.0.8.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.8/maven-artifact-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.jar
+fetchArtifact org/apache/maven/maven-artifact/2.0.9/maven-artifact-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.pom
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.jar
+fetchArtifact org/apache/maven/maven-artifact/3.0/maven-artifact-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom
+fetchArtifact org/apache/maven/maven-artifact/2.2.1/maven-artifact-2.2.1.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.2.0/maven-artifact-2.2.0.pom
+fetchArtifact org/apache/maven/maven-artifact/2.2.0/maven-artifact-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.2/maven-artifact-2.0.2.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.2/maven-artifact-2.0.2.pom.sha1
+fetchArtifact org/apache/maven/maven-artifact/2.0.5/maven-artifact-2.0.5.pom
+fetchArtifact org/apache/maven/maven-artifact/2.0.5/maven-artifact-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.jar
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.6/maven-plugin-registry-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0/maven-plugin-registry-2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0/maven-plugin-registry-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.jar
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.9/maven-plugin-registry-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.8/maven-plugin-registry-2.0.8.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.0.8/maven-plugin-registry-2.0.8.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.jar
+fetchArtifact org/apache/maven/maven-plugin-registry/2.2.0/maven-plugin-registry-2.2.0.jar.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.jar
+fetchArtifact org/apache/maven/maven-core/2.0.6/maven-core-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-core/2.0/maven-core-2.0.pom
+fetchArtifact org/apache/maven/maven-core/2.0/maven-core-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar
+fetchArtifact org/apache/maven/maven-core/2.0.9/maven-core-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.pom
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.jar
+fetchArtifact org/apache/maven/maven-core/3.0/maven-core-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.jar
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.6/maven-plugin-parameter-documenter-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0/maven-plugin-parameter-documenter-2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0/maven-plugin-parameter-documenter-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.jar
+fetchArtifact org/apache/maven/maven-plugin-parameter-documenter/2.0.9/maven-plugin-parameter-documenter-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.6/maven-reporting-api-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0/maven-reporting-api-2.0.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0/maven-reporting-api-2.0.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/2.0.9/maven-reporting-api-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-api/3.0/maven-reporting-api-3.0.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.6/maven-reporting-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0/maven-reporting-2.0.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0/maven-reporting-2.0.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.9/maven-reporting-2.0.9.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting/2.0.9/maven-reporting-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-exec/1.0.2/maven-reporting-exec-1.0.2.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-exec/1.0.2/maven-reporting-exec-1.0.2.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-exec/1.0.2/maven-reporting-exec-1.0.2.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-exec/1.0.2/maven-reporting-exec-1.0.2.jar.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.pom
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.pom.sha1
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.jar
+fetchArtifact org/apache/maven/reporting/maven-reporting-impl/2.0.5/maven-reporting-impl-2.0.5.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-7/doxia-sink-api-1.0-alpha-7.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0/doxia-sink-api-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.3/doxia-sink-api-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.3/doxia-sink-api-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.3/doxia-sink-api-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.3/doxia-sink-api-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-10/doxia-sink-api-1.0-alpha-10.pom
+fetchArtifact org/apache/maven/doxia/doxia-sink-api/1.0-alpha-10/doxia-sink-api-1.0-alpha-10.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-7/doxia-1.0-alpha-7.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.0/doxia-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0/doxia-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.3/doxia-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.3/doxia-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.2/doxia-1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.2/doxia-1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-10/doxia-1.0-alpha-10.pom
+fetchArtifact org/apache/maven/doxia/doxia/1.0-alpha-10/doxia-1.0-alpha-10.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.3/doxia-logging-api-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.3/doxia-logging-api-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.3/doxia-logging-api-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.3/doxia-logging-api-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.2/doxia-logging-api-1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-logging-api/1.2/doxia-logging-api-1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.3/doxia-core-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-core/1.3/doxia-core-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.3/doxia-core-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-core/1.3/doxia-core-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-core/1.0/doxia-core-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.3/doxia-module-xhtml-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.3/doxia-module-xhtml-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.3/doxia-module-xhtml-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.3/doxia-module-xhtml-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xhtml/1.0/doxia-module-xhtml-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.3/doxia-modules-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.3/doxia-modules-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.0/doxia-modules-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-modules/1.0/doxia-modules-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.3/doxia-module-apt-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.3/doxia-module-apt-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.3/doxia-module-apt-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.3/doxia-module-apt-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-apt/1.0/doxia-module-apt-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.3/doxia-module-xdoc-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.3/doxia-module-xdoc-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.3/doxia-module-xdoc-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.3/doxia-module-xdoc-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-xdoc/1.0/doxia-module-xdoc-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.3/doxia-module-fml-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.3/doxia-module-fml-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.3/doxia-module-fml-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.3/doxia-module-fml-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-module-fml/1.0/doxia-module-fml-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.3/doxia-decoration-model-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.3/doxia-decoration-model-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.3/doxia-decoration-model-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.3/doxia-decoration-model-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.2/doxia-decoration-model-1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.2/doxia-decoration-model-1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-decoration-model/1.0/doxia-decoration-model-1.0.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.3/doxia-sitetools-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.3/doxia-sitetools-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.2/doxia-sitetools-1.2.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.2/doxia-sitetools-1.2.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.0/doxia-sitetools-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-sitetools/1.0/doxia-sitetools-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.3/doxia-site-renderer-1.3.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.3/doxia-site-renderer-1.3.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.3/doxia-site-renderer-1.3.jar
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.3/doxia-site-renderer-1.3.jar.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.pom
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.pom.sha1
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar
+fetchArtifact org/apache/maven/doxia/doxia-site-renderer/1.0/doxia-site-renderer-1.0.jar.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.jar
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.6/maven-error-diagnostics-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0/maven-error-diagnostics-2.0.pom
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0/maven-error-diagnostics-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.pom
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.jar
+fetchArtifact org/apache/maven/maven-error-diagnostics/2.0.9/maven-error-diagnostics-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.jar
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.6/maven-plugin-descriptor-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0/maven-plugin-descriptor-2.0.pom
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0/maven-plugin-descriptor-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.pom
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.jar
+fetchArtifact org/apache/maven/maven-plugin-descriptor/2.0.9/maven-plugin-descriptor-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.pom.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.jar
+fetchArtifact org/apache/maven/maven-monitor/2.0.6/maven-monitor-2.0.6.jar.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0/maven-monitor-2.0.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0/maven-monitor-2.0.pom.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.pom
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.jar
+fetchArtifact org/apache/maven/maven-monitor/2.0.9/maven-monitor-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-artifact-resolver/1.0/maven-artifact-resolver-1.0.pom
+fetchArtifact org/apache/maven/shared/maven-artifact-resolver/1.0/maven-artifact-resolver-1.0.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-artifact-resolver/1.0/maven-artifact-resolver-1.0.jar
+fetchArtifact org/apache/maven/shared/maven-artifact-resolver/1.0/maven-artifact-resolver-1.0.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/12/maven-shared-components-12.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/12/maven-shared-components-12.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/8/maven-shared-components-8.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/8/maven-shared-components-8.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/7/maven-shared-components-7.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/7/maven-shared-components-7.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/16/maven-shared-components-16.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/16/maven-shared-components-16.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/17/maven-shared-components-17.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/15/maven-shared-components-15.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/15/maven-shared-components-15.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/9/maven-shared-components-9.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/9/maven-shared-components-9.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/19/maven-shared-components-19.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/11/maven-shared-components-11.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/11/maven-shared-components-11.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-components/10/maven-shared-components-10.pom
+fetchArtifact org/apache/maven/shared/maven-shared-components/10/maven-shared-components-10.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.0/maven-common-artifact-filters-1.0.pom
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.0/maven-common-artifact-filters-1.0.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.0/maven-common-artifact-filters-1.0.jar
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.0/maven-common-artifact-filters-1.0.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.3/maven-common-artifact-filters-1.3.pom
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.3/maven-common-artifact-filters-1.3.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.3/maven-common-artifact-filters-1.3.jar
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.3/maven-common-artifact-filters-1.3.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.pom
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.jar
+fetchArtifact org/apache/maven/shared/maven-common-artifact-filters/1.4/maven-common-artifact-filters-1.4.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-plugin-testing-harness/1.1/maven-plugin-testing-harness-1.1.pom
+fetchArtifact org/apache/maven/shared/maven-plugin-testing-harness/1.1/maven-plugin-testing-harness-1.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-plugin-testing-harness/1.1/maven-plugin-testing-harness-1.1.jar
+fetchArtifact org/apache/maven/shared/maven-plugin-testing-harness/1.1/maven-plugin-testing-harness-1.1.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-filtering/1.0/maven-filtering-1.0.pom
+fetchArtifact org/apache/maven/shared/maven-filtering/1.0/maven-filtering-1.0.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-filtering/1.0/maven-filtering-1.0.jar
+fetchArtifact org/apache/maven/shared/maven-filtering/1.0/maven-filtering-1.0.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.4/maven-doxia-tools-1.4.pom
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.4/maven-doxia-tools-1.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.4/maven-doxia-tools-1.4.jar
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.4/maven-doxia-tools-1.4.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.pom
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar
+fetchArtifact org/apache/maven/shared/maven-doxia-tools/1.0.2/maven-doxia-tools-1.0.2.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.9/maven-invoker-2.0.9.pom
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.9/maven-invoker-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.9/maven-invoker-2.0.9.jar
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.9/maven-invoker-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.pom
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.jar
+fetchArtifact org/apache/maven/shared/maven-invoker/2.0.11/maven-invoker-2.0.11.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.pom
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.jar
+fetchArtifact org/apache/maven/shared/maven-dependency-tree/2.1/maven-dependency-tree-2.1.jar.sha1
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.pom
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.pom.sha1
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.jar
+fetchArtifact org/apache/maven/shared/file-management/1.2.1/file-management-1.2.1.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.jar
+fetchArtifact org/apache/maven/shared/maven-shared-io/1.1/maven-shared-io-1.1.jar.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.pom
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.pom.sha1
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.jar
+fetchArtifact org/apache/maven/shared/maven-dependency-analyzer/1.4/maven-dependency-analyzer-1.4.jar.sha1
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.pom
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.pom.sha1
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.jar
+fetchArtifact org/apache/maven/maven-toolchain/1.0/maven-toolchain-1.0.jar.sha1
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.pom
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.pom.sha1
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.jar
+fetchArtifact org/apache/maven/maven-toolchain/2.0.9/maven-toolchain-2.0.9.jar.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.pom.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar
+fetchArtifact org/apache/maven/maven-archiver/2.5/maven-archiver-2.5.jar.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.4.2/maven-archiver-2.4.2.pom
+fetchArtifact org/apache/maven/maven-archiver/2.4.2/maven-archiver-2.4.2.pom.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.4.2/maven-archiver-2.4.2.jar
+fetchArtifact org/apache/maven/maven-archiver/2.4.2/maven-archiver-2.4.2.jar.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.3/maven-archiver-2.3.pom
+fetchArtifact org/apache/maven/maven-archiver/2.3/maven-archiver-2.3.pom.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.3/maven-archiver-2.3.jar
+fetchArtifact org/apache/maven/maven-archiver/2.3/maven-archiver-2.3.jar.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.4.1/maven-archiver-2.4.1.pom
+fetchArtifact org/apache/maven/maven-archiver/2.4.1/maven-archiver-2.4.1.pom.sha1
+fetchArtifact org/apache/maven/maven-archiver/2.4.1/maven-archiver-2.4.1.jar
+fetchArtifact org/apache/maven/maven-archiver/2.4.1/maven-archiver-2.4.1.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-ssh/1.0/wagon-ssh-1.0.pom
+fetchArtifact org/apache/maven/wagon/wagon-ssh/1.0/wagon-ssh-1.0.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-ssh/1.0/wagon-ssh-1.0.jar
+fetchArtifact org/apache/maven/wagon/wagon-ssh/1.0/wagon-ssh-1.0.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-providers/1.0/wagon-providers-1.0.pom
+fetchArtifact org/apache/maven/wagon/wagon-providers/1.0/wagon-providers-1.0.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon/1.0/wagon-1.0.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0/wagon-1.0.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1.0-beta-6.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-beta-6/wagon-1.0-beta-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon/1.0-alpha-6/wagon-1.0-alpha-6.pom
+fetchArtifact org/apache/maven/wagon/wagon/1.0-alpha-6/wagon-1.0-alpha-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-ssh-common/1.0/wagon-ssh-common-1.0.pom
+fetchArtifact org/apache/maven/wagon/wagon-ssh-common/1.0/wagon-ssh-common-1.0.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-ssh-common/1.0/wagon-ssh-common-1.0.jar
+fetchArtifact org/apache/maven/wagon/wagon-ssh-common/1.0/wagon-ssh-common-1.0.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0/wagon-provider-api-1.0.pom
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0/wagon-provider-api-1.0.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0/wagon-provider-api-1.0.jar
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0/wagon-provider-api-1.0.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.pom
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.jar
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-beta-6/wagon-provider-api-1.0-beta-6.jar.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.pom
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.pom.sha1
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.jar
+fetchArtifact org/apache/maven/wagon/wagon-provider-api/1.0-alpha-6/wagon-provider-api-1.0-alpha-6.jar.sha1
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.pom
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.jar
+fetchArtifact org/apache/maven/maven-settings-builder/3.0/maven-settings-builder-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.pom
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.jar
+fetchArtifact org/apache/maven/maven-model-builder/3.0/maven-model-builder-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.pom
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.jar
+fetchArtifact org/apache/maven/maven-aether-provider/3.0/maven-aether-provider-3.0.jar.sha1
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.pom
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.pom.sha1
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.jar
+fetchArtifact org/apache/maven/maven-compat/3.0/maven-compat-3.0.jar.sha1
+fetchArtifact org/apache/velocity/velocity/1.7/velocity-1.7.pom
+fetchArtifact org/apache/velocity/velocity/1.7/velocity-1.7.pom.sha1
+fetchArtifact org/apache/velocity/velocity/1.7/velocity-1.7.jar
+fetchArtifact org/apache/velocity/velocity/1.7/velocity-1.7.jar.sha1
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.pom
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.pom.sha1
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.jar
+fetchArtifact org/apache/velocity/velocity/1.5/velocity-1.5.jar.sha1
+fetchArtifact org/apache/velocity/velocity/1.6.2/velocity-1.6.2.pom
+fetchArtifact org/apache/velocity/velocity/1.6.2/velocity-1.6.2.pom.sha1
+fetchArtifact org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.pom
+fetchArtifact org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.pom.sha1
+fetchArtifact org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.jar
+fetchArtifact org/apache/velocity/velocity-tools/2.0/velocity-tools-2.0.jar.sha1
+fetchArtifact org/apache/commons/commons-parent/9/commons-parent-9.pom
+fetchArtifact org/apache/commons/commons-parent/9/commons-parent-9.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/5/commons-parent-5.pom
+fetchArtifact org/apache/commons/commons-parent/5/commons-parent-5.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/7/commons-parent-7.pom
+fetchArtifact org/apache/commons/commons-parent/7/commons-parent-7.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/12/commons-parent-12.pom
+fetchArtifact org/apache/commons/commons-parent/12/commons-parent-12.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/3/commons-parent-3.pom
+fetchArtifact org/apache/commons/commons-parent/3/commons-parent-3.pom.sha1
+fetchArtifact org/apache/commons/commons-parent/17/commons-parent-17.pom
+fetchArtifact org/apache/commons/commons-parent/17/commons-parent-17.pom.sha1
+fetchArtifact org/apache/apache-jar-resource-bundle/1.4/apache-jar-resource-bundle-1.4.jar
+fetchArtifact org/apache/apache-jar-resource-bundle/1.4/apache-jar-resource-bundle-1.4.jar.sha1
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.pom
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.jar
+fetchArtifact org/apache/httpcomponents/httpclient/4.0.2/httpclient-4.0.2.jar.sha1
+fetchArtifact org/apache/httpcomponents/httpcomponents-client/4.0.2/httpcomponents-client-4.0.2.pom
+fetchArtifact org/apache/httpcomponents/httpcomponents-client/4.0.2/httpcomponents-client-4.0.2.pom.sha1
+fetchArtifact org/apache/httpcomponents/project/4.1/project-4.1.pom
+fetchArtifact org/apache/httpcomponents/project/4.1/project-4.1.pom.sha1
+fetchArtifact org/apache/httpcomponents/project/4.0/project-4.0.pom
+fetchArtifact org/apache/httpcomponents/project/4.0/project-4.0.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.pom
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.pom.sha1
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar
+fetchArtifact org/apache/httpcomponents/httpcore/4.0.1/httpcore-4.0.1.jar.sha1
+fetchArtifact org/apache/httpcomponents/httpcomponents-core/4.0.1/httpcomponents-core-4.0.1.pom
+fetchArtifact org/apache/httpcomponents/httpcomponents-core/4.0.1/httpcomponents-core-4.0.1.pom.sha1
+fetchArtifact org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.pom
+fetchArtifact org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.pom.sha1
+fetchArtifact org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.jar
+fetchArtifact org/apache/struts/struts-core/1.3.8/struts-core-1.3.8.jar.sha1
+fetchArtifact org/apache/struts/struts-parent/1.3.8/struts-parent-1.3.8.pom
+fetchArtifact org/apache/struts/struts-parent/1.3.8/struts-parent-1.3.8.pom.sha1
+fetchArtifact org/apache/struts/struts-master/4/struts-master-4.pom
+fetchArtifact org/apache/struts/struts-master/4/struts-master-4.pom.sha1
+fetchArtifact org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.pom
+fetchArtifact org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.pom.sha1
+fetchArtifact org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.jar
+fetchArtifact org/apache/struts/struts-taglib/1.3.8/struts-taglib-1.3.8.jar.sha1
+fetchArtifact org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.pom
+fetchArtifact org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.pom.sha1
+fetchArtifact org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.jar
+fetchArtifact org/apache/struts/struts-tiles/1.3.8/struts-tiles-1.3.8.jar.sha1
+fetchArtifact org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom
+fetchArtifact org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.pom.sha1
+fetchArtifact org/apache/xbean/xbean/3.4/xbean-3.4.pom
+fetchArtifact org/apache/xbean/xbean/3.4/xbean-3.4.pom.sha1
+fetchArtifact org/codehaus/mojo/build-helper-maven-plugin/1.8/build-helper-maven-plugin-1.8.pom
+fetchArtifact org/codehaus/mojo/build-helper-maven-plugin/1.8/build-helper-maven-plugin-1.8.pom.sha1
+fetchArtifact org/codehaus/mojo/build-helper-maven-plugin/1.8/build-helper-maven-plugin-1.8.jar
+fetchArtifact org/codehaus/mojo/build-helper-maven-plugin/1.8/build-helper-maven-plugin-1.8.jar.sha1
+fetchArtifact org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom
+fetchArtifact org/codehaus/mojo/mojo-parent/30/mojo-parent-30.pom.sha1
+fetchArtifact org/codehaus/codehaus-parent/4/codehaus-parent-4.pom
+fetchArtifact org/codehaus/codehaus-parent/4/codehaus-parent-4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.1/plexus-utils-1.4.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.8/plexus-utils-1.5.8.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.6/plexus-utils-1.4.6.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.6/plexus-utils-1.4.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.2/plexus-utils-1.4.2.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.2/plexus-utils-1.4.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.2/plexus-utils-1.2.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.2/plexus-utils-1.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.5/plexus-utils-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.5/plexus-utils-2.0.5.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4/plexus-utils-1.4.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4/plexus-utils-1.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.4/plexus-utils-2.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/2.0.4/plexus-utils-2.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.3/plexus-utils-1.3.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.3/plexus-utils-1.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.10/plexus-utils-1.5.10.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.9/plexus-utils-1.4.9.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.4.9/plexus-utils-1.4.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.6/plexus-utils-1.5.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.7/plexus-utils-1.5.7.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.5.7/plexus-utils-1.5.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.15/plexus-utils-3.0.15.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.10/plexus-utils-3.0.10.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.8/plexus-utils-3.0.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.jar
+fetchArtifact org/codehaus/plexus/plexus-utils/3.0.9/plexus-utils-3.0.9.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-utils/2.1/plexus-utils-2.1.pom
+fetchArtifact org/codehaus/plexus/plexus-utils/2.1/plexus-utils-2.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.11/plexus-1.0.11.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.4/plexus-1.0.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.2/plexus-2.0.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.8/plexus-1.0.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.5/plexus-1.0.5.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.5/plexus-1.0.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.3/plexus-2.0.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.6/plexus-2.0.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.1/plexus-3.1.pom
+fetchArtifact org/codehaus/plexus/plexus/3.1/plexus-3.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom
+fetchArtifact org/codehaus/plexus/plexus/3.0.1/plexus-3.0.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.10/plexus-1.0.10.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.9/plexus-1.0.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.7/plexus-2.0.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/2.0.5/plexus-2.0.5.pom
+fetchArtifact org/codehaus/plexus/plexus/2.0.5/plexus-2.0.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/1.0.12/plexus-1.0.12.pom
+fetchArtifact org/codehaus/plexus/plexus/1.0.12/plexus-1.0.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom
+fetchArtifact org/codehaus/plexus/plexus/3.3.1/plexus-3.3.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.3/plexus-3.3.pom
+fetchArtifact org/codehaus/plexus/plexus/3.3/plexus-3.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus/3.2/plexus-3.2.pom
+fetchArtifact org/codehaus/plexus/plexus/3.2/plexus-3.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9-stable-1/plexus-container-default-1.0-alpha-9-stable-1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.jar
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-9/plexus-container-default-1.0-alpha-9.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.jar
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-30/plexus-container-default-1.0-alpha-30.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-20/plexus-container-default-1.0-alpha-20.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-20/plexus-container-default-1.0-alpha-20.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-15/plexus-container-default-1.0-alpha-15.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.0-alpha-15/plexus-container-default-1.0-alpha-15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0.3/plexus-containers-1.0.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.5/plexus-containers-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.4/plexus-containers-1.5.4.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.5.4/plexus-containers-1.5.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-20/plexus-containers-1.0-alpha-20.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-20/plexus-containers-1.0-alpha-20.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-15/plexus-containers-1.0-alpha-15.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-15/plexus-containers-1.0-alpha-15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom
+fetchArtifact org/codehaus/plexus/plexus-containers/1.0-alpha-16/plexus-containers-1.0-alpha-16.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-6/plexus-interactivity-api-1.0-alpha-6.pom
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-6/plexus-interactivity-api-1.0-alpha-6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-6/plexus-interactivity-api-1.0-alpha-6.jar
+fetchArtifact org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-6/plexus-interactivity-api-1.0-alpha-6.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-7/plexus-archiver-1.0-alpha-7.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.1/plexus-archiver-2.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.0.1/plexus-archiver-2.0.1.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.0.1/plexus-archiver-2.0.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0/plexus-archiver-1.0.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-9/plexus-archiver-1.0-alpha-9.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-9/plexus-archiver-1.0-alpha-9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-9/plexus-archiver-1.0-alpha-9.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/1.0-alpha-9/plexus-archiver-1.0-alpha-9.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.pom
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.jar
+fetchArtifact org/codehaus/plexus/plexus-archiver/2.3/plexus-archiver-2.3.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.6/plexus-components-1.1.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.14/plexus-components-1.1.14.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.15/plexus-components-1.1.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.20/plexus-components-1.1.20.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.20/plexus-components-1.1.20.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.19/plexus-components-1.1.19.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.9/plexus-components-1.1.9.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.9/plexus-components-1.1.9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.18/plexus-components-1.1.18.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.12/plexus-components-1.1.12.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.12/plexus-components-1.1.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.17/plexus-components-1.1.17.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.1.17/plexus-components-1.1.17.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.3/plexus-components-1.3.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.3/plexus-components-1.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-components/1.2/plexus-components-1.2.pom
+fetchArtifact org/codehaus/plexus/plexus-components/1.2/plexus-components-1.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.12/plexus-interpolation-1.12.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.13/plexus-interpolation-1.13.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.15/plexus-interpolation-1.15.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom
+fetchArtifact org/codehaus/plexus/plexus-interpolation/1.11/plexus-interpolation-1.11.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-resources/1.0-alpha-5/plexus-resources-1.0-alpha-5.pom
+fetchArtifact org/codehaus/plexus/plexus-resources/1.0-alpha-5/plexus-resources-1.0-alpha-5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-resources/1.0-alpha-5/plexus-resources-1.0-alpha-5.jar
+fetchArtifact org/codehaus/plexus/plexus-resources/1.0-alpha-5/plexus-resources-1.0-alpha-5.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.pom
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.jar
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.8/plexus-velocity-1.1.8.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.pom
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar
+fetchArtifact org/codehaus/plexus/plexus-velocity/1.1.7/plexus-velocity-1.1.7.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.9.1/plexus-compiler-api-1.9.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.9.1/plexus-compiler-api-1.9.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.9.1/plexus-compiler-api-1.9.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compiler-api/1.9.1/plexus-compiler-api-1.9.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler/1.9.1/plexus-compiler-1.9.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler/1.9.1/plexus-compiler-1.9.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.9.1/plexus-compiler-manager-1.9.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.9.1/plexus-compiler-manager-1.9.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.9.1/plexus-compiler-manager-1.9.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compiler-manager/1.9.1/plexus-compiler-manager-1.9.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.9.1/plexus-compiler-javac-1.9.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.9.1/plexus-compiler-javac-1.9.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.9.1/plexus-compiler-javac-1.9.1.jar
+fetchArtifact org/codehaus/plexus/plexus-compiler-javac/1.9.1/plexus-compiler-javac-1.9.1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-compilers/1.9.1/plexus-compilers-1.9.1.pom
+fetchArtifact org/codehaus/plexus/plexus-compilers/1.9.1/plexus-compilers-1.9.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.2/plexus-io-2.0.2.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.1/plexus-io-2.0.1.pom
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.1/plexus-io-2.0.1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.pom
+fetchArtifact org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.jar
+fetchArtifact org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/1.0-alpha-1/plexus-io-1.0-alpha-1.pom
+fetchArtifact org/codehaus/plexus/plexus-io/1.0-alpha-1/plexus-io-1.0-alpha-1.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/1.0-alpha-1/plexus-io-1.0-alpha-1.jar
+fetchArtifact org/codehaus/plexus/plexus-io/1.0-alpha-1/plexus-io-1.0-alpha-1.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.pom
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.jar
+fetchArtifact org/codehaus/plexus/plexus-io/2.0.6/plexus-io-2.0.6.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-interactivity/1.0-alpha-6/plexus-interactivity-1.0-alpha-6.pom
+fetchArtifact org/codehaus/plexus/plexus-interactivity/1.0-alpha-6/plexus-interactivity-1.0-alpha-6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.4/plexus-component-annotations-1.5.4.pom
+fetchArtifact org/codehaus/plexus/plexus-component-annotations/1.5.4/plexus-component-annotations-1.5.4.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.jar
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.3/plexus-classworlds-2.2.3.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-7/plexus-classworlds-1.2-alpha-7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-6/plexus-classworlds-1.2-alpha-6.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/1.2-alpha-6/plexus-classworlds-1.2-alpha-6.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom
+fetchArtifact org/codehaus/plexus/plexus-classworlds/2.2.2/plexus-classworlds-2.2.2.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.pom
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar
+fetchArtifact org/codehaus/plexus/plexus-i18n/1.0-beta-7/plexus-i18n-1.0-beta-7.jar.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-api/1.0-alpha-15/plexus-component-api-1.0-alpha-15.pom
+fetchArtifact org/codehaus/plexus/plexus-component-api/1.0-alpha-15/plexus-component-api-1.0-alpha-15.pom.sha1
+fetchArtifact org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom
+fetchArtifact org/codehaus/plexus/plexus-component-api/1.0-alpha-16/plexus-component-api-1.0-alpha-16.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/16/spice-parent-16.pom
+fetchArtifact org/sonatype/spice/spice-parent/16/spice-parent-16.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/10/spice-parent-10.pom
+fetchArtifact org/sonatype/spice/spice-parent/10/spice-parent-10.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/17/spice-parent-17.pom
+fetchArtifact org/sonatype/spice/spice-parent/17/spice-parent-17.pom.sha1
+fetchArtifact org/sonatype/spice/spice-parent/12/spice-parent-12.pom
+fetchArtifact org/sonatype/spice/spice-parent/12/spice-parent-12.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/5/forge-parent-5.pom
+fetchArtifact org/sonatype/forge/forge-parent/5/forge-parent-5.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/3/forge-parent-3.pom
+fetchArtifact org/sonatype/forge/forge-parent/3/forge-parent-3.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/10/forge-parent-10.pom
+fetchArtifact org/sonatype/forge/forge-parent/10/forge-parent-10.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/4/forge-parent-4.pom
+fetchArtifact org/sonatype/forge/forge-parent/4/forge-parent-4.pom.sha1
+fetchArtifact org/sonatype/forge/forge-parent/6/forge-parent-6.pom
+fetchArtifact org/sonatype/forge/forge-parent/6/forge-parent-6.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar
+fetchArtifact org/sonatype/plexus/plexus-build-api/0.0.4/plexus-build-api-0.0.4.jar.sha1
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
+fetchArtifact org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar.sha1
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.pom.sha1
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
+fetchArtifact org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar.sha1
+fetchArtifact org/sonatype/oss/oss-parent/6/oss-parent-6.pom
+fetchArtifact org/sonatype/oss/oss-parent/6/oss-parent-6.pom.sha1
+fetchArtifact org/sonatype/oss/oss-parent/7/oss-parent-7.pom
+fetchArtifact org/sonatype/oss/oss-parent/7/oss-parent-7.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.jar
+fetchArtifact org/sonatype/sisu/sisu-inject-plexus/1.4.2/sisu-inject-plexus-1.4.2.jar.sha1
+fetchArtifact org/sonatype/sisu/inject/guice-plexus/1.4.2/guice-plexus-1.4.2.pom
+fetchArtifact org/sonatype/sisu/inject/guice-plexus/1.4.2/guice-plexus-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/inject/guice-bean/1.4.2/guice-bean-1.4.2.pom
+fetchArtifact org/sonatype/sisu/inject/guice-bean/1.4.2/guice-bean-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject/1.4.2/sisu-inject-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject/1.4.2/sisu-inject-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-parent/1.4.2/sisu-parent-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-parent/1.4.2/sisu-parent-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.pom
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
+fetchArtifact org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar.sha1
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7.pom
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7.pom.sha1
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
+fetchArtifact org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar.sha1
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.pom
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.jar
+fetchArtifact org/sonatype/aether/aether-api/1.7/aether-api-1.7.jar.sha1
+fetchArtifact org/sonatype/aether/aether-parent/1.7/aether-parent-1.7.pom
+fetchArtifact org/sonatype/aether/aether-parent/1.7/aether-parent-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.pom
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
+fetchArtifact org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar.sha1
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.pom
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.jar
+fetchArtifact org/sonatype/aether/aether-impl/1.7/aether-impl-1.7.jar.sha1
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.pom
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.pom.sha1
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.jar
+fetchArtifact org/sonatype/aether/aether-spi/1.7/aether-spi-1.7.jar.sha1
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.pom.sha1
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar
+fetchArtifact org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar.sha1
+fetchArtifact org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom
+fetchArtifact org/hamcrest/hamcrest-parent/1.1/hamcrest-parent-1.1.pom.sha1
+fetchArtifact org/beanshell/bsh/2.0b4/bsh-2.0b4.pom
+fetchArtifact org/beanshell/bsh/2.0b4/bsh-2.0b4.pom.sha1
+fetchArtifact org/beanshell/bsh/2.0b4/bsh-2.0b4.jar
+fetchArtifact org/beanshell/bsh/2.0b4/bsh-2.0b4.jar.sha1
+fetchArtifact org/beanshell/beanshell/2.0b4/beanshell-2.0b4.pom
+fetchArtifact org/beanshell/beanshell/2.0b4/beanshell-2.0b4.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.pom
+fetchArtifact org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.jar
+fetchArtifact org/mortbay/jetty/jetty/6.1.25/jetty-6.1.25.jar.sha1
+fetchArtifact org/mortbay/jetty/project/6.1.25/project-6.1.25.pom
+fetchArtifact org/mortbay/jetty/project/6.1.25/project-6.1.25.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty-parent/10/jetty-parent-10.pom
+fetchArtifact org/mortbay/jetty/jetty-parent/10/jetty-parent-10.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty-parent/7/jetty-parent-7.pom
+fetchArtifact org/mortbay/jetty/jetty-parent/7/jetty-parent-7.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.pom
+fetchArtifact org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.pom.sha1
+fetchArtifact org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.jar
+fetchArtifact org/mortbay/jetty/jetty-util/6.1.25/jetty-util-6.1.25.jar.sha1
+fetchArtifact org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.pom
+fetchArtifact org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.pom.sha1
+fetchArtifact org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.jar
+fetchArtifact org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211.jar.sha1
+fetchArtifact org/eclipse/jetty/jetty-parent/14/jetty-parent-14.pom
+fetchArtifact org/eclipse/jetty/jetty-parent/14/jetty-parent-14.pom.sha1
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.pom
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.pom.sha1
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
+fetchArtifact org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar.sha1
+fetchArtifact org/eclipse/aether/aether/0.9.0.M2/aether-0.9.0.M2.pom
+fetchArtifact org/eclipse/aether/aether/0.9.0.M2/aether-0.9.0.M2.pom.sha1
+fetchArtifact org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.pom
+fetchArtifact org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.pom.sha1
+fetchArtifact org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar
+fetchArtifact org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar.sha1
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.pom
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.pom.sha1
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.jar
+fetchArtifact org/objenesis/objenesis/1.0/objenesis-1.0.jar.sha1
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.pom
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.pom.sha1
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.jar
+fetchArtifact org/jdom/jdom/1.1/jdom-1.1.jar.sha1
+fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.pom
+fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.pom.sha1
+fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.jar
+fetchArtifact org/vafer/jdependency/0.7/jdependency-0.7.jar.sha1
+fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.pom
+fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.pom.sha1
+fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar
+fetchArtifact com/google/protobuf/protobuf-java/3.3.0/protobuf-java-3.3.0.jar.sha1
+fetchArtifact com/google/protobuf/protobuf-parent/3.3.0/protobuf-parent-3.3.0.pom
+fetchArtifact com/google/protobuf/protobuf-parent/3.3.0/protobuf-parent-3.3.0.pom.sha1
+fetchArtifact com/google/google/1/google-1.pom
+fetchArtifact com/google/google/1/google-1.pom.sha1
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.pom
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.pom.sha1
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.jar
+fetchArtifact com/google/guava/guava/11.0.2/guava-11.0.2.jar.sha1
+fetchArtifact com/google/guava/guava-parent/11.0.2/guava-parent-11.0.2.pom
+fetchArtifact com/google/guava/guava-parent/11.0.2/guava-parent-11.0.2.pom.sha1
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.pom.sha1
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar
+fetchArtifact com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar.sha1
+fetchArtifact com/google/collections/google-collections/1.0/google-collections-1.0.pom
+fetchArtifact com/google/collections/google-collections/1.0/google-collections-1.0.pom.sha1
+fetchArtifact com/jcraft/jsch/0.1.44-1/jsch-0.1.44-1.pom
+fetchArtifact com/jcraft/jsch/0.1.44-1/jsch-0.1.44-1.pom.sha1
+fetchArtifact com/jcraft/jsch/0.1.44-1/jsch-0.1.44-1.jar
+fetchArtifact com/jcraft/jsch/0.1.44-1/jsch-0.1.44-1.jar.sha1
+fetchArtifact com/thoughtworks/qdox/qdox/1.12/qdox-1.12.pom
+fetchArtifact com/thoughtworks/qdox/qdox/1.12/qdox-1.12.pom.sha1
+fetchArtifact com/thoughtworks/qdox/qdox/1.12/qdox-1.12.jar
+fetchArtifact com/thoughtworks/qdox/qdox/1.12/qdox-1.12.jar.sha1
+fetchArtifact junit/junit/4.10/junit-4.10.pom
+fetchArtifact junit/junit/4.10/junit-4.10.pom.sha1
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.pom
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.pom.sha1
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.jar
+fetchArtifact junit/junit/3.8.1/junit-3.8.1.jar.sha1
+fetchArtifact junit/junit/3.8.2/junit-3.8.2.pom
+fetchArtifact junit/junit/3.8.2/junit-3.8.2.pom.sha1
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.pom.sha1
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar
+fetchArtifact classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar.sha1
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.pom
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.pom.sha1
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.jar
+fetchArtifact classworlds/classworlds/1.1/classworlds-1.1.jar.sha1
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.pom
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.pom.sha1
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.jar
+fetchArtifact commons-cli/commons-cli/1.0/commons-cli-1.0.jar.sha1
+fetchArtifact doxia/doxia-sink-api/1.0-alpha-4/doxia-sink-api-1.0-alpha-4.pom
+fetchArtifact doxia/doxia-sink-api/1.0-alpha-4/doxia-sink-api-1.0-alpha-4.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.pom
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.jar
+fetchArtifact commons-collections/commons-collections/3.1/commons-collections-3.1.jar.sha1
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar
+fetchArtifact commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar.sha1
+fetchArtifact commons-collections/commons-collections/2.0/commons-collections-2.0.pom
+fetchArtifact commons-collections/commons-collections/2.0/commons-collections-2.0.pom.sha1
+fetchArtifact commons-collections/commons-collections/2.1/commons-collections-2.1.pom
+fetchArtifact commons-collections/commons-collections/2.1/commons-collections-2.1.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.pom
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.pom.sha1
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.jar
+fetchArtifact commons-collections/commons-collections/3.2/commons-collections-3.2.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.pom
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.jar
+fetchArtifact commons-lang/commons-lang/2.4/commons-lang-2.4.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.pom
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.jar
+fetchArtifact commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.5/commons-lang-2.5.pom
+fetchArtifact commons-lang/commons-lang/2.5/commons-lang-2.5.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.5/commons-lang-2.5.jar
+fetchArtifact commons-lang/commons-lang/2.5/commons-lang-2.5.jar.sha1
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.pom
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.pom.sha1
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.jar
+fetchArtifact commons-lang/commons-lang/2.6/commons-lang-2.6.jar.sha1
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.pom
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.pom.sha1
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.jar
+fetchArtifact oro/oro/2.0.8/oro-2.0.8.jar.sha1
+fetchArtifact velocity/velocity/1.5/velocity-1.5.pom
+fetchArtifact velocity/velocity/1.5/velocity-1.5.pom.sha1
+fetchArtifact velocity/velocity/1.5/velocity-1.5.jar
+fetchArtifact velocity/velocity/1.5/velocity-1.5.jar.sha1
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.pom.sha1
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar
+fetchArtifact xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar.sha1
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.pom
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.pom.sha1
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar
+fetchArtifact xml-apis/xml-apis/1.3.04/xml-apis-1.3.04.jar.sha1
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.pom
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.pom.sha1
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar
+fetchArtifact xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar.sha1
+fetchArtifact xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.pom
+fetchArtifact xml-apis/xml-apis/2.0.2/xml-apis-2.0.2.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar
+fetchArtifact commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar.sha1
+fetchArtifact commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom
+fetchArtifact commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.1/commons-logging-1.1.pom
+fetchArtifact commons-logging/commons-logging/1.1/commons-logging-1.1.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0/commons-logging-1.0.pom
+fetchArtifact commons-logging/commons-logging/1.0/commons-logging-1.0.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.pom.sha1
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar
+fetchArtifact commons-logging/commons-logging/1.0.4/commons-logging-1.0.4.jar.sha1
+fetchArtifact commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom
+fetchArtifact commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.pom.sha1
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.pom
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.pom.sha1
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.jar
+fetchArtifact commons-codec/commons-codec/1.3/commons-codec-1.3.jar.sha1
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.pom
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.pom.sha1
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.jar
+fetchArtifact commons-codec/commons-codec/1.2/commons-codec-1.2.jar.sha1
+fetchArtifact javax/servlet/servlet-api/2.5/servlet-api-2.5.pom
+fetchArtifact javax/servlet/servlet-api/2.5/servlet-api-2.5.pom.sha1
+fetchArtifact javax/servlet/servlet-api/2.5/servlet-api-2.5.jar
+fetchArtifact javax/servlet/servlet-api/2.5/servlet-api-2.5.jar.sha1
+fetchArtifact javax/servlet/servlet-api/2.3/servlet-api-2.3.pom
+fetchArtifact javax/servlet/servlet-api/2.3/servlet-api-2.3.pom.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.pom
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.pom.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar
+fetchArtifact commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar.sha1
+fetchArtifact commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom
+fetchArtifact commons-beanutils/commons-beanutils/1.6/commons-beanutils-1.6.pom.sha1
+fetchArtifact commons-digester/commons-digester/1.8/commons-digester-1.8.pom
+fetchArtifact commons-digester/commons-digester/1.8/commons-digester-1.8.pom.sha1
+fetchArtifact commons-digester/commons-digester/1.8/commons-digester-1.8.jar
+fetchArtifact commons-digester/commons-digester/1.8/commons-digester-1.8.jar.sha1
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.pom
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.pom.sha1
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.jar
+fetchArtifact commons-digester/commons-digester/1.6/commons-digester-1.6.jar.sha1
+fetchArtifact log4j/log4j/1.2.12/log4j-1.2.12.pom
+fetchArtifact log4j/log4j/1.2.12/log4j-1.2.12.pom.sha1
+fetchArtifact log4j/log4j/1.2.14/log4j-1.2.14.pom
+fetchArtifact log4j/log4j/1.2.14/log4j-1.2.14.pom.sha1
+fetchArtifact log4j/log4j/1.2.14/log4j-1.2.14.jar
+fetchArtifact log4j/log4j/1.2.14/log4j-1.2.14.jar.sha1
+fetchArtifact logkit/logkit/1.0.1/logkit-1.0.1.pom
+fetchArtifact logkit/logkit/1.0.1/logkit-1.0.1.pom.sha1
+fetchArtifact avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.pom
+fetchArtifact avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.pom.sha1
+fetchArtifact commons-chain/commons-chain/1.1/commons-chain-1.1.pom
+fetchArtifact commons-chain/commons-chain/1.1/commons-chain-1.1.pom.sha1
+fetchArtifact commons-chain/commons-chain/1.1/commons-chain-1.1.jar
+fetchArtifact commons-chain/commons-chain/1.1/commons-chain-1.1.jar.sha1
+fetchArtifact commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.pom
+fetchArtifact commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.pom.sha1
+fetchArtifact commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.jar
+fetchArtifact commons-validator/commons-validator/1.3.1/commons-validator-1.3.1.jar.sha1
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.pom
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.pom.sha1
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar
+fetchArtifact commons-validator/commons-validator/1.2.0/commons-validator-1.2.0.jar.sha1
+fetchArtifact dom4j/dom4j/1.1/dom4j-1.1.pom
+fetchArtifact dom4j/dom4j/1.1/dom4j-1.1.pom.sha1
+fetchArtifact dom4j/dom4j/1.1/dom4j-1.1.jar
+fetchArtifact dom4j/dom4j/1.1/dom4j-1.1.jar.sha1
+fetchArtifact sslext/sslext/1.2-0/sslext-1.2-0.pom
+fetchArtifact sslext/sslext/1.2-0/sslext-1.2-0.pom.sha1
+fetchArtifact sslext/sslext/1.2-0/sslext-1.2-0.jar
+fetchArtifact sslext/sslext/1.2-0/sslext-1.2-0.jar.sha1
+fetchArtifact antlr/antlr/2.7.2/antlr-2.7.2.pom
+fetchArtifact antlr/antlr/2.7.2/antlr-2.7.2.pom.sha1
+fetchArtifact antlr/antlr/2.7.2/antlr-2.7.2.jar
+fetchArtifact antlr/antlr/2.7.2/antlr-2.7.2.jar.sha1
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.pom
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.pom.sha1
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.jar
+fetchArtifact commons-io/commons-io/1.4/commons-io-1.4.jar.sha1
+fetchArtifact commons-io/commons-io/1.3.2/commons-io-1.3.2.pom
+fetchArtifact commons-io/commons-io/1.3.2/commons-io-1.3.2.pom.sha1
+fetchArtifact commons-io/commons-io/1.3.2/commons-io-1.3.2.jar
+fetchArtifact commons-io/commons-io/1.3.2/commons-io-1.3.2.jar.sha1
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom.sha1
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar
+fetchArtifact commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar.sha1
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.pom
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.pom.sha1
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.jar
+fetchArtifact asm/asm/3.3.1/asm-3.3.1.jar.sha1
+fetchArtifact asm/asm/3.2/asm-3.2.pom
+fetchArtifact asm/asm/3.2/asm-3.2.pom.sha1
+fetchArtifact asm/asm-parent/3.3.1/asm-parent-3.3.1.pom
+fetchArtifact asm/asm-parent/3.3.1/asm-parent-3.3.1.pom.sha1
+fetchArtifact asm/asm-parent/3.2/asm-parent-3.2.pom
+fetchArtifact asm/asm-parent/3.2/asm-parent-3.2.pom.sha1
+fetchArtifact asm/asm-commons/3.3.1/asm-commons-3.3.1.pom
+fetchArtifact asm/asm-commons/3.3.1/asm-commons-3.3.1.pom.sha1
+fetchArtifact asm/asm-commons/3.3.1/asm-commons-3.3.1.jar
+fetchArtifact asm/asm-commons/3.3.1/asm-commons-3.3.1.jar.sha1
+fetchArtifact asm/asm-commons/3.2/asm-commons-3.2.pom
+fetchArtifact asm/asm-commons/3.2/asm-commons-3.2.pom.sha1
+fetchArtifact asm/asm-tree/3.3.1/asm-tree-3.3.1.pom
+fetchArtifact asm/asm-tree/3.3.1/asm-tree-3.3.1.pom.sha1
+fetchArtifact asm/asm-tree/3.3.1/asm-tree-3.3.1.jar
+fetchArtifact asm/asm-tree/3.3.1/asm-tree-3.3.1.jar.sha1
+fetchArtifact asm/asm-tree/3.2/asm-tree-3.2.pom
+fetchArtifact asm/asm-tree/3.2/asm-tree-3.2.pom.sha1
+fetchArtifact asm/asm-analysis/3.2/asm-analysis-3.2.pom
+fetchArtifact asm/asm-analysis/3.2/asm-analysis-3.2.pom.sha1
+fetchArtifact asm/asm-analysis/3.2/asm-analysis-3.2.jar
+fetchArtifact asm/asm-analysis/3.2/asm-analysis-3.2.jar.sha1
+fetchArtifact asm/asm-util/3.2/asm-util-3.2.pom
+fetchArtifact asm/asm-util/3.2/asm-util-3.2.pom.sha1
+fetchArtifact asm/asm-util/3.2/asm-util-3.2.jar
+fetchArtifact asm/asm-util/3.2/asm-util-3.2.jar.sha1
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.pom.sha1
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar
+fetchArtifact backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar.sha1
+
+stopNest
diff --git a/nixpkgs/pkgs/applications/networking/cluster/mesos/mesos-deps.nix b/nixpkgs/pkgs/applications/networking/cluster/mesos/mesos-deps.nix
new file mode 100644
index 000000000000..1cf819870f4e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/mesos/mesos-deps.nix
@@ -0,0 +1,14 @@
+{stdenv, curl}:
+
+stdenv.mkDerivation {
+  name = "mesos-maven-deps";
+  builder = ./fetch-mesos-deps.sh;
+
+  outputHashAlgo = "sha256";
+  outputHashMode = "recursive";
+  outputHash = "10h0qs7svw0cqjkyxs8z6s3qraa8ga920zfrr59rdlanbwg4klly";
+
+  nativeBuildInputs = [ curl ];
+
+  impureEnvVars = stdenv.lib.fetchers.proxyImpureEnvVars;
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/mesos/nixos.patch b/nixpkgs/pkgs/applications/networking/cluster/mesos/nixos.patch
new file mode 100644
index 000000000000..a6fea024b087
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/mesos/nixos.patch
@@ -0,0 +1,731 @@
+diff --git i/3rdparty/stout/include/stout/os/posix/fork.hpp w/3rdparty/stout/include/stout/os/posix/fork.hpp
+index a29967d..290b98b 100644
+--- i/3rdparty/stout/include/stout/os/posix/fork.hpp
++++ w/3rdparty/stout/include/stout/os/posix/fork.hpp
+@@ -369,7 +369,7 @@ private:
+     if (exec.isSome()) {
+       // Execute the command (via '/bin/sh -c command').
+       const char* command = exec.get().command.c_str();
+-      execlp("sh", "sh", "-c", command, (char*) nullptr);
++      execlp("@sh@", "sh", "-c", command, (char*) nullptr);
+       EXIT(EXIT_FAILURE)
+         << "Failed to execute '" << command << "': " << os::strerror(errno);
+     } else if (wait.isSome()) {
+diff --git i/3rdparty/stout/include/stout/posix/os.hpp w/3rdparty/stout/include/stout/posix/os.hpp
+index 8511dfd..1e7be01 100644
+--- i/3rdparty/stout/include/stout/posix/os.hpp
++++ w/3rdparty/stout/include/stout/posix/os.hpp
+@@ -366,7 +366,7 @@ inline Try<std::set<pid_t>> pids(Option<pid_t> group, Option<pid_t> session)
+ inline Try<Nothing> tar(const std::string& path, const std::string& archive)
+ {
+   Try<std::string> tarOut =
+-    os::shell("tar %s %s %s", "-czf", archive.c_str(), path.c_str());
++    os::shell("@tar@ %s %s %s", "-czf", archive.c_str(), path.c_str());
+ 
+   if (tarOut.isError()) {
+     return Error("Failed to archive " + path + ": " + tarOut.error());
+diff --git i/src/Makefile.am w/src/Makefile.am
+index 68fff14..c572f92 100644
+--- i/src/Makefile.am
++++ w/src/Makefile.am
+@@ -1775,7 +1775,7 @@ if HAS_JAVA
+ 
+ $(MESOS_JAR): $(MESOS_JAR_SOURCE) $(MESOS_JAR_GENERATED) java/mesos.pom
+ 	@echo "Building mesos-$(PACKAGE_VERSION).jar ..."
+-	@cd $(abs_top_builddir)/src/java && $(MVN) -B -f mesos.pom clean package
++	@cd $(abs_top_builddir)/src/java && $(MVN) -B -f mesos.pom -Dmaven.repo.local=@mavenRepo@ clean package
+ 
+ # Convenience library for JNI bindings.
+ # TODO(Charles Reiss): We really should be building the Java library
+diff --git i/src/cli/mesos-scp w/src/cli/mesos-scp
+index a71ab07..1043d1b 100755
+--- i/src/cli/mesos-scp
++++ w/src/cli/mesos-scp
+@@ -19,7 +19,8 @@ if sys.version_info < (2,6,0):
+ 
+ 
+ def scp(host, src, dst):
+-    cmd = 'scp -pr %s %s' % (src, host + ':' + dst)
++    cmd = '@scp@ -pr %s %s' % (src, host + ':' + dst)
++
+     try:
+         process = subprocess.Popen(
+             cmd,
+diff --git i/src/common/command_utils.cpp w/src/common/command_utils.cpp
+index c50be76..388cc53 100644
+--- i/src/common/command_utils.cpp
++++ w/src/common/command_utils.cpp
+@@ -142,7 +142,7 @@ Future<Nothing> tar(
+ 
+   argv.emplace_back(input);
+ 
+-  return launch("tar", argv)
++  return launch("@tar@", argv)
+     .then([]() { return Nothing(); });
+ }
+ 
+@@ -164,7 +164,7 @@ Future<Nothing> untar(
+     argv.emplace_back(directory.get());
+   }
+ 
+-  return launch("tar", argv)
++  return launch("@tar@", argv)
+     .then([]() { return Nothing(); });
+ }
+ 
+@@ -172,7 +172,7 @@ Future<Nothing> untar(
+ Future<string> sha512(const Path& input)
+ {
+ #ifdef __linux__
+-  const string cmd = "sha512sum";
++  const string cmd = "@sha512sum@";
+   vector<string> argv = {
+     cmd,
+     input             // Input file to compute shasum.
+@@ -208,7 +208,7 @@ Future<Nothing> gzip(const Path& input)
+     input
+   };
+ 
+-  return launch("gzip", argv)
++  return launch("@gzip@", argv)
+     .then([]() { return Nothing(); });
+ }
+ 
+@@ -221,7 +221,7 @@ Future<Nothing> decompress(const Path& input)
+     input
+   };
+ 
+-  return launch("gzip", argv)
++  return launch("@gzip@", argv)
+     .then([]() { return Nothing(); });
+ }
+ 
+diff --git i/src/launcher/fetcher.cpp w/src/launcher/fetcher.cpp
+index 42980f5..3aebeed 100644
+--- i/src/launcher/fetcher.cpp
++++ w/src/launcher/fetcher.cpp
+@@ -80,17 +80,17 @@ static Try<bool> extract(
+       strings::endsWith(sourcePath, ".tar.bz2") ||
+       strings::endsWith(sourcePath, ".txz") ||
+       strings::endsWith(sourcePath, ".tar.xz")) {
+-    command = {"tar", "-C", destinationDirectory, "-xf", sourcePath};
++    command = {"@tar@", "-C", destinationDirectory, "-xf", sourcePath};
+   } else if (strings::endsWith(sourcePath, ".gz")) {
+     string pathWithoutExtension = sourcePath.substr(0, sourcePath.length() - 3);
+     string filename = Path(pathWithoutExtension).basename();
+     string destinationPath = path::join(destinationDirectory, filename);
+ 
+-    command = {"gunzip", "-d", "-c"};
++    command = {"@gunzip@", "-d", "-c"};
+     in = Subprocess::PATH(sourcePath);
+     out = Subprocess::PATH(destinationPath);
+   } else if (strings::endsWith(sourcePath, ".zip")) {
+-    command = {"unzip", "-o", "-d", destinationDirectory, sourcePath};
++    command = {"@unzip@", "-o", "-d", destinationDirectory, sourcePath};
+   } else {
+     return false;
+   }
+@@ -193,7 +193,7 @@ static Try<string> copyFile(
+     const string& sourcePath,
+     const string& destinationPath)
+ {
+-  int status = os::spawn("cp", {"cp", sourcePath, destinationPath});
++  int status = os::spawn("cp", {"@cp@", sourcePath, destinationPath});
+ 
+   if (status == -1) {
+     return ErrnoError("Failed to copy '" + sourcePath + "'");
+diff --git i/src/linux/perf.cpp w/src/linux/perf.cpp
+index b301e25..356a2cf 100644
+--- i/src/linux/perf.cpp
++++ w/src/linux/perf.cpp
+@@ -128,7 +128,7 @@ private:
+     // NOTE: The supervisor childhook places perf in its own process group
+     // and will kill the perf process when the parent dies.
+     Try<Subprocess> _perf = subprocess(
+-        "perf",
++        "@perf@",
+         argv,
+         Subprocess::PIPE(),
+         Subprocess::PIPE(),
+diff --git i/src/linux/systemd.cpp w/src/linux/systemd.cpp
+index 6318f48..394d88d 100644
+--- i/src/linux/systemd.cpp
++++ w/src/linux/systemd.cpp
+@@ -196,13 +196,21 @@ bool exists()
+   // This is static as the init system should not change while we are running.
+   static const bool exists = []() -> bool {
+     // (1) Test whether `/sbin/init` links to systemd.
+-    const Result<string> realpath = os::realpath("/sbin/init");
+-    if (realpath.isError() || realpath.isNone()) {
+-      LOG(WARNING) << "Failed to test /sbin/init for systemd environment: "
+-                   << (realpath.isError() ? realpath.error()
+-                                          : "does not exist");
+-
+-      return false;
++    // cstrahan(nixos): first assume we're on NixOS, then try non-NixOS
++    Result<string> realpath = os::realpath("/run/current-system/systemd/lib/systemd/systemd");
++    Result<string> realpathNixOS = realpath;
++    if (realpathNixOS.isError() || realpathNixOS.isNone()) {
++      Result<string> realpathNonNixOS = realpath = os::realpath("/sbin/init");
++      if (realpathNonNixOS.isError() || realpathNonNixOS.isNone()) {
++        LOG(WARNING) << "Failed to test /run/current-system/systemd/lib/systemd/systemd for systemd environment: "
++                     << (realpathNixOS.isError() ? realpathNixOS.error()
++                                                 : "does not exist");
++        LOG(WARNING) << "Failed to test /sbin/init for systemd environment: "
++                     << (realpathNonNixOS.isError() ? realpathNonNixOS.error()
++                                                    : "does not exist");
++
++        return false;
++      }
+     }
+ 
+     CHECK_SOME(realpath);
+@@ -278,6 +286,10 @@ Path hierarchy()
+ 
+ Try<Nothing> daemonReload()
+ {
++  // cstrahan(nixos): should we patch these `systemctl`s?
++  // probably don't want to hard-code a particular systemd store path here,
++  // but if we use /run/current-system/sw/bin/systemctl,
++  // we won't be able to support non-NixOS distros.
+   Try<string> daemonReload = os::shell("systemctl daemon-reload");
+   if (daemonReload.isError()) {
+     return Error("Failed to reload systemd daemon: " + daemonReload.error());
+diff --git i/src/python/cli/src/mesos/cli.py w/src/python/cli/src/mesos/cli.py
+index 4a9b558..c08a8b9 100644
+--- i/src/python/cli/src/mesos/cli.py
++++ w/src/python/cli/src/mesos/cli.py
+@@ -40,7 +40,7 @@ def resolve(master):
+     import subprocess
+ 
+     process = subprocess.Popen(
+-        ['mesos-resolve', master],
++        ['@mesos-resolve@', master],
+         stdin=None,
+         stdout=subprocess.PIPE,
+         stderr=subprocess.PIPE,
+diff --git i/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp w/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
+index 5b630c1..d63ad69 100644
+--- i/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
++++ w/src/slave/containerizer/mesos/isolators/docker/volume/isolator.cpp
+@@ -499,7 +499,7 @@ Future<Option<ContainerLaunchInfo>> DockerVolumeIsolatorProcess::_prepare(
+     // unsafe arbitrary commands).
+     CommandInfo* command = launchInfo.add_pre_exec_commands();
+     command->set_shell(false);
+-    command->set_value("mount");
++    command->set_value("@mount@");
+     command->add_arguments("mount");
+     command->add_arguments("-n");
+     command->add_arguments("--rbind");
+diff --git i/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp w/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
+index d7fe9a8..1361a4e 100644
+--- i/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
++++ w/src/slave/containerizer/mesos/isolators/filesystem/linux.cpp
+@@ -154,9 +154,9 @@ Try<Isolator*> LinuxFilesystemIsolatorProcess::create(const Flags& flags)
+       // here because 'create' will only be invoked during
+       // initialization.
+       Try<string> mount = os::shell(
+-          "mount --bind %s %s && "
+-          "mount --make-private %s && "
+-          "mount --make-shared %s",
++          "@mount@ --bind %s %s && "
++          "@mount@ --make-private %s && "
++          "@mount@ --make-shared %s",
+           workDir->c_str(),
+           workDir->c_str(),
+           workDir->c_str(),
+@@ -175,8 +175,8 @@ Try<Isolator*> LinuxFilesystemIsolatorProcess::create(const Flags& flags)
+       LOG(INFO) << "Making '" << workDir.get() << "' a shared mount";
+ 
+       Try<string> mount = os::shell(
+-          "mount --make-private %s && "
+-          "mount --make-shared %s",
++          "@mount@ --make-private %s && "
++          "@mount@ --make-shared %s",
+           workDir->c_str(),
+           workDir->c_str());
+ 
+@@ -422,7 +422,7 @@ Try<vector<CommandInfo>> LinuxFilesystemIsolatorProcess::getPreExecCommands(
+ 
+     CommandInfo command;
+     command.set_shell(false);
+-    command.set_value("mount");
++    command.set_value("@mount@");
+     command.add_arguments("mount");
+     command.add_arguments("-n");
+     command.add_arguments("--rbind");
+@@ -610,7 +610,7 @@ Try<vector<CommandInfo>> LinuxFilesystemIsolatorProcess::getPreExecCommands(
+     // TODO(jieyu): Consider the mode in the volume.
+     CommandInfo command;
+     command.set_shell(false);
+-    command.set_value("mount");
++    command.set_value("@mount@");
+     command.add_arguments("mount");
+     command.add_arguments("-n");
+     command.add_arguments("--rbind");
+diff --git i/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp w/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
+index 927d95b..576dc63 100644
+--- i/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
++++ w/src/slave/containerizer/mesos/isolators/filesystem/shared.cpp
+@@ -208,7 +208,7 @@ Future<Option<ContainerLaunchInfo>> SharedFilesystemIsolatorProcess::prepare(
+     }
+ 
+     launchInfo.add_pre_exec_commands()->set_value(
+-        "mount -n --bind " + hostPath + " " + volume.container_path());
++        "@mount@ -n --bind " + hostPath + " " + volume.container_path());
+   }
+ 
+   return launchInfo;
+diff --git i/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp w/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
+index 25636b5..33ec315 100644
+--- i/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
++++ w/src/slave/containerizer/mesos/isolators/gpu/isolator.cpp
+@@ -401,7 +401,7 @@ Future<Option<ContainerLaunchInfo>> NvidiaGpuIsolatorProcess::_prepare(
+     }
+ 
+     launchInfo.add_pre_exec_commands()->set_value(
+-      "mount --no-mtab --rbind --read-only " +
++      "@mount@ --no-mtab --rbind --read-only " +
+       volume.HOST_PATH() + " " + target);
+   }
+ 
+diff --git i/src/slave/containerizer/mesos/isolators/gpu/volume.cpp w/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
+index 536a3c7..e2819dd 100644
+--- i/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
++++ w/src/slave/containerizer/mesos/isolators/gpu/volume.cpp
+@@ -274,7 +274,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
+     string path = path::join(hostPath, "bin", binary);
+ 
+     if (!os::exists(path)) {
+-      string command = "which " + binary;
++      string command = "@which@ " + binary;
+       Try<string> which = os::shell(command);
+ 
+       if (which.isSome()) {
+@@ -288,7 +288,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
+                               : "No such file or directory"));
+         }
+ 
+-        command = "cp " + realpath.get() + " " + path;
++        command = "@cp@ " + realpath.get() + " " + path;
+         Try<string> cp = os::shell(command);
+         if (cp.isError()) {
+           return Error("Failed to os::shell '" + command + "': " + cp.error());
+@@ -360,7 +360,7 @@ Try<NvidiaVolume> NvidiaVolume::create()
+             Path(realpath.get()).basename());
+ 
+         if (!os::exists(libraryPath)) {
+-          string command = "cp " + realpath.get() + " " + libraryPath;
++          string command = "@cp@ " + realpath.get() + " " + libraryPath;
+           Try<string> cp = os::shell(command);
+           if (cp.isError()) {
+             return Error("Failed to os::shell '" + command + "':"
+diff --git i/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp w/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
+index 42bc2e1..2f9066e 100644
+--- i/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
++++ w/src/slave/containerizer/mesos/isolators/namespaces/pid.cpp
+@@ -131,7 +131,7 @@ Future<Option<ContainerLaunchInfo>> NamespacesPidIsolatorProcess::prepare(
+   //
+   // TOOD(jieyu): Consider unmount the existing /proc.
+   launchInfo.add_pre_exec_commands()->set_value(
+-      "mount -n -t proc proc /proc -o nosuid,noexec,nodev");
++      "@mount@ -n -t proc proc /proc -o nosuid,noexec,nodev");
+ 
+   return launchInfo;
+ }
+diff --git i/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp w/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
+index fc68f04..267b040 100644
+--- i/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
++++ w/src/slave/containerizer/mesos/isolators/network/cni/cni.cpp
+@@ -205,9 +205,9 @@ Try<Isolator*> NetworkCniIsolatorProcess::create(const Flags& flags)
+       // here because 'create' will only be invoked during
+       // initialization.
+       Try<string> mount = os::shell(
+-          "mount --bind %s %s && "
+-          "mount --make-private %s && "
+-          "mount --make-shared %s",
++          "@mount@ --bind %s %s && "
++          "@mount@ --make-private %s && "
++          "@mount@ --make-shared %s",
+           rootDir->c_str(),
+           rootDir->c_str(),
+           rootDir->c_str(),
+@@ -227,8 +227,8 @@ Try<Isolator*> NetworkCniIsolatorProcess::create(const Flags& flags)
+       LOG(INFO) << "Making '" << rootDir.get() << "' a shared mount";
+ 
+       Try<string> mount = os::shell(
+-          "mount --make-private %s && "
+-          "mount --make-shared %s",
++          "@mount@ --make-private %s && "
++          "@mount@ --make-shared %s",
+           rootDir->c_str(),
+           rootDir->c_str());
+ 
+diff --git i/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp w/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
+index 43cf3e4..94bad8b 100644
+--- i/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
++++ w/src/slave/containerizer/mesos/isolators/network/cni/plugins/port_mapper/port_mapper.cpp
+@@ -301,7 +301,7 @@ Try<Nothing> PortMapper::addPortMapping(
+       # Check if the `chain` exists in the iptable. If it does not
+       # exist go ahead and install the chain in the iptables NAT
+       # table.
+-      iptables -w -t nat --list %s
++      @iptables@ -w -t nat --list %s
+       if [ $? -ne 0 ]; then
+         # NOTE: When we create the chain, there is a possibility of a
+         # race due to which a container launch can fail. This can
+@@ -315,25 +315,25 @@ Try<Nothing> PortMapper::addPortMapping(
+         # since it can happen only when the chain is created the first
+         # time and two commands for creation of the chain are executed
+         # simultaneously.
+-        (iptables -w -t nat -N %s || exit 1)
++        (@iptables@ -w -t nat -N %s || exit 1)
+ 
+         # Once the chain has been installed add a rule in the PREROUTING
+         # chain to jump to this chain for any packets that are
+         # destined to a local address.
+-        (iptables -w -t nat -A PREROUTING \
++        (@iptables@ -w -t nat -A PREROUTING \
+         -m addrtype --dst-type LOCAL -j %s || exit 1)
+ 
+         # For locally generated packets we need a rule in the OUTPUT
+         # chain as well, since locally generated packets directly hit
+         # the output CHAIN, bypassing PREROUTING.
+-        (iptables -w -t nat -A OUTPUT \
++        (@iptables@ -w -t nat -A OUTPUT \
+         ! -d 127.0.0.0/8 -m addrtype \
+         --dst-type LOCAL -j %s || exit 1)
+       fi
+ 
+       # Within the `chain` go ahead and install the DNAT rule, if it
+       # does not exist.
+-      (iptables -w -t nat -C %s || iptables -t nat -A %s))~",
++      (@iptables@ -w -t nat -C %s || @iptables@ -t nat -A %s))~",
+       chain,
+       chain,
+       chain,
+@@ -360,7 +360,7 @@ Try<Nothing> PortMapper::delPortMapping()
+       # The iptables command searches for the DNAT rules with tag
+       # "container_id: <CNI_CONTAINERID>", and if it exists goes ahead
+       # and deletes it.
+-      iptables -w -t nat -S %s | sed "/%s/ s/-A/iptables -w -t nat -D/e")~",
++      @iptables@ -w -t nat -S %s | sed "/%s/ s/-A/@iptables@ -w -t nat -D/e")~",
+       chain,
+       getIptablesRuleTag()).get();
+ 
+diff --git i/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp w/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
+index 57d4ccd..68c9577 100644
+--- i/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
++++ w/src/slave/containerizer/mesos/isolators/network/port_mapping.cpp
+@@ -1394,19 +1394,19 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
+   // Check the availability of a few Linux commands that we will use.
+   // We use the blocking os::shell here because 'create' will only be
+   // invoked during initialization.
+-  Try<string> checkCommandTc = os::shell("tc filter show");
++  Try<string> checkCommandTc = os::shell("@tc@ filter show");
+   if (checkCommandTc.isError()) {
+     return Error("Check command 'tc' failed: " + checkCommandTc.error());
+   }
+ 
+   // NOTE: loopback device always exists.
+-  Try<string> checkCommandEthtool = os::shell("ethtool -k lo");
++  Try<string> checkCommandEthtool = os::shell("@ethtool@ -k lo");
+   if (checkCommandEthtool.isError()) {
+     return Error("Check command 'ethtool' failed: "
+                  + checkCommandEthtool.error());
+   }
+ 
+-  Try<string> checkCommandIp = os::shell("ip link show");
++  Try<string> checkCommandIp = os::shell("@ip@ link show");
+   if (checkCommandIp.isError()) {
+     return Error("Check command 'ip' failed: " + checkCommandIp.error());
+   }
+@@ -1940,9 +1940,9 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
+     // visible. It's OK to use the blocking os::shell here because
+     // 'create' will only be invoked during initialization.
+     Try<string> mount = os::shell(
+-        "mount --bind %s %s && "
+-        "mount --make-slave %s && "
+-        "mount --make-shared %s",
++        "@mount@ --bind %s %s && "
++        "@mount@ --make-slave %s && "
++        "@mount@ --make-shared %s",
+         bindMountRoot->c_str(),
+         bindMountRoot->c_str(),
+         bindMountRoot->c_str(),
+@@ -1959,8 +1959,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
+       // shared mount yet (possibly due to slave crash while preparing
+       // the work directory mount). It's safe to re-do the following.
+       Try<string> mount = os::shell(
+-          "mount --make-slave %s && "
+-          "mount --make-shared %s",
++          "@mount@ --make-slave %s && "
++          "@mount@ --make-shared %s",
+           bindMountRoot->c_str(),
+           bindMountRoot->c_str());
+ 
+@@ -1979,8 +1979,8 @@ Try<Isolator*> PortMappingIsolatorProcess::create(const Flags& flags)
+           // so that they are in different peer groups.
+           if (entry.shared() == bindMountEntry->shared()) {
+             Try<string> mount = os::shell(
+-                "mount --make-slave %s && "
+-                "mount --make-shared %s",
++                "@mount@ --make-slave %s && "
++                "@mount@ --make-shared %s",
+                 bindMountRoot->c_str(),
+                 bindMountRoot->c_str());
+ 
+@@ -3927,6 +3927,8 @@ Try<Nothing> PortMappingIsolatorProcess::removeHostIPFilters(
+ // TODO(jieyu): Use the Subcommand abstraction to remove most of the
+ // logic here. Completely remove this function once we can assume a
+ // newer kernel where 'setns' works for mount namespaces.
++// cstrahan(nixos): this is executed in the container,
++// so we don't want to substitute paths here.
+ string PortMappingIsolatorProcess::scripts(Info* info)
+ {
+   ostringstream script;
+@@ -3937,7 +3939,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   // Mark the mount point PORT_MAPPING_BIND_MOUNT_ROOT() as slave
+   // mount so that changes in the container will not be propagated to
+   // the host.
+-  script << "mount --make-rslave " << bindMountRoot << "\n";
++  script << "@mount@ --make-rslave " << bindMountRoot << "\n";
+ 
+   // Disable IPv6 when IPv6 module is loaded as IPv6 packets won't be
+   // forwarded anyway.
+@@ -3945,7 +3947,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+          << " echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6\n";
+ 
+   // Configure lo and eth0.
+-  script << "ip link set " << lo << " address " << hostMAC
++  script << "@ip@ link set " << lo << " address " << hostMAC
+          << " mtu " << hostEth0MTU << " up\n";
+ 
+   // NOTE: This is mostly a kernel issue: in veth_xmit() the kernel
+@@ -3954,12 +3956,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   // when we receive a packet with a bad checksum. Disabling rx
+   // checksum offloading ensures the TCP layer will checksum and drop
+   // it.
+-  script << "ethtool -K " << eth0 << " rx off\n";
+-  script << "ip link set " << eth0 << " address " << hostMAC << " up\n";
+-  script << "ip addr add " << hostIPNetwork  << " dev " << eth0 << "\n";
++  script << "@ethtool@ -K " << eth0 << " rx off\n";
++  script << "@ip@ link set " << eth0 << " address " << hostMAC << " up\n";
++  script << "@ip@ addr add " << hostIPNetwork  << " dev " << eth0 << "\n";
+ 
+   // Set up the default gateway to match that of eth0.
+-  script << "ip route add default via " << hostDefaultGateway << "\n";
++  script << "@ip@ route add default via " << hostDefaultGateway << "\n";
+ 
+   // Restrict the ephemeral ports that can be used by the container.
+   script << "echo " << info->ephemeralPorts.lower() << " "
+@@ -3988,19 +3990,19 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   }
+ 
+   // Set up filters on lo and eth0.
+-  script << "tc qdisc add dev " << lo << " ingress\n";
+-  script << "tc qdisc add dev " << eth0 << " ingress\n";
++  script << "@tc@ qdisc add dev " << lo << " ingress\n";
++  script << "@tc@ qdisc add dev " << eth0 << " ingress\n";
+ 
+   // Allow talking between containers and from container to host.
+   // TODO(chzhcn): Consider merging the following two filters.
+-  script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
++  script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
+          << " protocol ip"
+          << " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
+          << " flowid ffff:0"
+          << " match ip dst " << hostIPNetwork.address()
+          << " action mirred egress redirect dev " << eth0 << "\n";
+ 
+-  script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
++  script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
+          << " protocol ip"
+          << " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
+          << " flowid ffff:0"
+@@ -4011,7 +4013,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   foreach (const PortRange& range,
+            getPortRanges(info->nonEphemeralPorts + info->ephemeralPorts)) {
+     // Local traffic inside a container will not be redirected to eth0.
+-    script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
++    script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
+            << " protocol ip"
+            << " prio " << Priority(IP_FILTER_PRIORITY, HIGH).get() << " u32"
+            << " flowid ffff:0"
+@@ -4020,7 +4022,7 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+ 
+     // Traffic going to host loopback IP and ports assigned to this
+     // container will be redirected to lo.
+-    script << "tc filter add dev " << eth0 << " parent " << ingress::HANDLE
++    script << "@tc@ filter add dev " << eth0 << " parent " << ingress::HANDLE
+            << " protocol ip"
+            << " prio " << Priority(IP_FILTER_PRIORITY, NORMAL).get() << " u32"
+            << " flowid ffff:0"
+@@ -4032,14 +4034,14 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   }
+ 
+   // Do not forward the ICMP packet if the destination IP is self.
+-  script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
++  script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
+          << " protocol ip"
+          << " prio " << Priority(ICMP_FILTER_PRIORITY, NORMAL).get() << " u32"
+          << " flowid ffff:0"
+          << " match ip protocol 1 0xff"
+          << " match ip dst " << hostIPNetwork.address() << "\n";
+ 
+-  script << "tc filter add dev " << lo << " parent " << ingress::HANDLE
++  script << "@tc@ filter add dev " << lo << " parent " << ingress::HANDLE
+          << " protocol ip"
+          << " prio " << Priority(ICMP_FILTER_PRIORITY, NORMAL).get() << " u32"
+          << " flowid ffff:0"
+@@ -4048,9 +4050,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+          << net::IP::Network::LOOPBACK_V4().address() << "\n";
+ 
+   // Display the filters created on eth0 and lo.
+-  script << "tc filter show dev " << eth0
++  script << "@tc@ filter show dev " << eth0
+          << " parent " << ingress::HANDLE << "\n";
+-  script << "tc filter show dev " << lo
++  script << "@tc@ filter show dev " << lo
+          << " parent " << ingress::HANDLE << "\n";
+ 
+   // If throughput limit for container egress traffic exists, use HTB
+@@ -4062,9 +4064,9 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+   // throughput. TBF requires other parameters such as 'burst' that
+   // HTB already has default values for.
+   if (egressRateLimitPerContainer.isSome()) {
+-    script << "tc qdisc add dev " << eth0 << " root handle "
++    script << "@tc@ qdisc add dev " << eth0 << " root handle "
+            << CONTAINER_TX_HTB_HANDLE << " htb default 1\n";
+-    script << "tc class add dev " << eth0 << " parent "
++    script << "@tc@ class add dev " << eth0 << " parent "
+            << CONTAINER_TX_HTB_HANDLE << " classid "
+            << CONTAINER_TX_HTB_CLASS_ID << " htb rate "
+            << egressRateLimitPerContainer.get().bytes() * 8 << "bit\n";
+@@ -4075,12 +4077,12 @@ string PortMappingIsolatorProcess::scripts(Info* info)
+     // fq_codel, which has a larger buffer and better control on
+     // buffer bloat.
+     // TODO(cwang): Verity that fq_codel qdisc is available.
+-    script << "tc qdisc add dev " << eth0
++    script << "@tc@ qdisc add dev " << eth0
+            << " parent " << CONTAINER_TX_HTB_CLASS_ID << " fq_codel\n";
+ 
+     // Display the htb qdisc and class created on eth0.
+-    script << "tc qdisc show dev " << eth0 << "\n";
+-    script << "tc class show dev " << eth0 << "\n";
++    script << "@tc@ qdisc show dev " << eth0 << "\n";
++    script << "@tc@ class show dev " << eth0 << "\n";
+   }
+ 
+   return script.str();
+diff --git i/src/slave/containerizer/mesos/isolators/posix/disk.cpp w/src/slave/containerizer/mesos/isolators/posix/disk.cpp
+index eb23025..db268ea 100644
+--- i/src/slave/containerizer/mesos/isolators/posix/disk.cpp
++++ w/src/slave/containerizer/mesos/isolators/posix/disk.cpp
+@@ -572,7 +572,7 @@ private:
+     // NOTE: The supervisor childhook will watch the parent process and kill
+     // the 'du' process in case that the parent die.
+     Try<Subprocess> s = subprocess(
+-        "du",
++        "@du@",
+         command,
+         Subprocess::PATH(os::DEV_NULL),
+         Subprocess::PIPE(),
+diff --git i/src/slave/containerizer/mesos/isolators/volume/image.cpp w/src/slave/containerizer/mesos/isolators/volume/image.cpp
+index 35966aa..b62fc86 100644
+--- i/src/slave/containerizer/mesos/isolators/volume/image.cpp
++++ w/src/slave/containerizer/mesos/isolators/volume/image.cpp
+@@ -231,7 +231,7 @@ Future<Option<ContainerLaunchInfo>> VolumeImageIsolatorProcess::_prepare(
+ 
+     CommandInfo* command = launchInfo.add_pre_exec_commands();
+     command->set_shell(false);
+-    command->set_value("mount");
++    command->set_value("@mount@");
+     command->add_arguments("mount");
+     command->add_arguments("-n");
+     command->add_arguments("--rbind");
+diff --git i/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp w/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
+index b321b86..8ed3e78 100644
+--- i/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
++++ w/src/slave/containerizer/mesos/isolators/volume/sandbox_path.cpp
+@@ -265,7 +265,7 @@ Future<Option<ContainerLaunchInfo>> VolumeSandboxPathIsolatorProcess::prepare(
+ 
+       CommandInfo* command = launchInfo.add_pre_exec_commands();
+       command->set_shell(false);
+-      command->set_value("mount");
++      command->set_value("@mount@");
+       command->add_arguments("mount");
+       command->add_arguments("-n");
+       command->add_arguments("--rbind");
+diff --git i/src/slave/containerizer/mesos/provisioner/backends/copy.cpp w/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
+index 69faa03..01a3ed6 100644
+--- i/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
++++ w/src/slave/containerizer/mesos/provisioner/backends/copy.cpp
+@@ -266,7 +266,7 @@ Future<Nothing> CopyBackendProcess::_provision(
+ #endif // __APPLE__ || __FreeBSD__
+ 
+   Try<Subprocess> s = subprocess(
+-      "cp",
++      "@cp@",
+       args,
+       Subprocess::PATH(os::DEV_NULL),
+       Subprocess::PATH(os::DEV_NULL),
+@@ -313,7 +313,7 @@ Future<bool> CopyBackendProcess::destroy(const string& rootfs)
+   vector<string> argv{"rm", "-rf", rootfs};
+ 
+   Try<Subprocess> s = subprocess(
+-      "rm",
++      "@rm@",
+       argv,
+       Subprocess::PATH(os::DEV_NULL),
+       Subprocess::FD(STDOUT_FILENO),
+diff --git i/src/uri/fetchers/copy.cpp w/src/uri/fetchers/copy.cpp
+index 17f69be..831b08a 100644
+--- i/src/uri/fetchers/copy.cpp
++++ w/src/uri/fetchers/copy.cpp
+@@ -97,8 +97,8 @@ Future<Nothing> CopyFetcherPlugin::fetch(
+   VLOG(1) << "Copying '" << uri.path() << "' to '" << directory << "'";
+ 
+ #ifndef __WINDOWS__
+-  const char* copyCommand = "cp";
+-  const vector<string> argv = {"cp", "-a", uri.path(), directory};
++  const char* copyCommand = "@cp@";
++  const vector<string> argv = {"@cp@", "-a", uri.path(), directory};
+ #else // __WINDOWS__
+   const char* copyCommand = os::Shell::name;
+   const vector<string> argv =
+diff --git i/src/uri/fetchers/curl.cpp w/src/uri/fetchers/curl.cpp
+index f34daf2..6a50341 100644
+--- i/src/uri/fetchers/curl.cpp
++++ w/src/uri/fetchers/curl.cpp
+@@ -109,7 +109,7 @@ Future<Nothing> CurlFetcherPlugin::fetch(
+   };
+ 
+   Try<Subprocess> s = subprocess(
+-      "curl",
++      "@curl@",
+       argv,
+       Subprocess::PATH(os::DEV_NULL),
+       Subprocess::PIPE(),
+diff --git i/src/uri/fetchers/docker.cpp w/src/uri/fetchers/docker.cpp
+index 91db13b..82a7fc4 100644
+--- i/src/uri/fetchers/docker.cpp
++++ w/src/uri/fetchers/docker.cpp
+@@ -114,7 +114,7 @@ static Future<http::Response> curl(
+ 
+   // TODO(jieyu): Kill the process if discard is called.
+   Try<Subprocess> s = subprocess(
+-      "curl",
++      "@curl@",
+       argv,
+       Subprocess::PATH(os::DEV_NULL),
+       Subprocess::PIPE(),
+@@ -229,7 +229,7 @@ static Future<int> download(
+ 
+   // TODO(jieyu): Kill the process if discard is called.
+   Try<Subprocess> s = subprocess(
+-      "curl",
++      "@curl@",
+       argv,
+       Subprocess::PATH(os::DEV_NULL),
+       Subprocess::PIPE(),
diff --git a/nixpkgs/pkgs/applications/networking/cluster/mesos/rb36610.patch b/nixpkgs/pkgs/applications/networking/cluster/mesos/rb36610.patch
new file mode 100644
index 000000000000..bee578cc3e93
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/mesos/rb36610.patch
@@ -0,0 +1,12 @@
+diff --git a/src/linux/fs.cpp b/src/linux/fs.cpp
+index 913e233..c2917a6 100644
+--- a/src/linux/fs.cpp
++++ b/src/linux/fs.cpp
+@@ -17,6 +17,7 @@
+ #include <errno.h>
+ #include <stdio.h>
+ #include <string.h>
++#include <syscall.h>
+ 
+ #include <linux/limits.h>
+ #include <linux/unistd.h>
diff --git a/nixpkgs/pkgs/applications/networking/cluster/minikube/default.nix b/nixpkgs/pkgs/applications/networking/cluster/minikube/default.nix
new file mode 100644
index 000000000000..4263abf0771d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/minikube/default.nix
@@ -0,0 +1,74 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, go-bindata, libvirt, qemu
+, gpgme, makeWrapper, vmnet, python
+, docker-machine-kvm, docker-machine-kvm2
+, extraDrivers ? []
+}:
+
+let
+  drivers = stdenv.lib.filter (d: d != null) (extraDrivers
+            ++ stdenv.lib.optionals stdenv.isLinux [ docker-machine-kvm docker-machine-kvm2 ]);
+
+  binPath = drivers
+            ++ stdenv.lib.optionals stdenv.isLinux ([ libvirt qemu ]);
+
+in buildGoPackage rec {
+  pname   = "minikube";
+  name    = "${pname}-${version}";
+  version = "1.0.0";
+
+  kubernetesVersion = "1.14.0";
+
+  goPackagePath = "k8s.io/minikube";
+
+  src = fetchFromGitHub {
+    owner  = "kubernetes";
+    repo   = "minikube";
+    rev    = "v${version}";
+    sha256 = "170iy0h27gkz2hg485rnawdw069gxwgkwsjmfj5yag2kkgl7gxa3";
+  };
+
+  buildInputs = [ go-bindata makeWrapper gpgme ] ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin vmnet;
+  subPackages = [ "cmd/minikube" ] ++ stdenv.lib.optional stdenv.hostPlatform.isDarwin "cmd/drivers/hyperkit";
+
+  preBuild = ''
+    pushd go/src/${goPackagePath} >/dev/null
+
+    go-bindata -nomemcopy -o pkg/minikube/assets/assets.go -pkg assets deploy/addons/...
+
+    VERSION_MAJOR=$(grep "^VERSION_MAJOR" Makefile | sed "s/^.*\s//")
+    VERSION_MINOR=$(grep "^VERSION_MINOR" Makefile | sed "s/^.*\s//")
+    ISO_VERSION=v$VERSION_MAJOR.$VERSION_MINOR.0
+    ISO_BUCKET=$(grep "^ISO_BUCKET" Makefile | sed "s/^.*\s//")
+    KUBERNETES_VERSION=${kubernetesVersion}
+
+    export buildFlagsArray="-ldflags=\
+      -X k8s.io/minikube/pkg/version.version=v${version} \
+      -X k8s.io/minikube/pkg/version.isoVersion=$ISO_VERSION \
+      -X k8s.io/minikube/pkg/version.isoPath=$ISO_BUCKET \
+      -X k8s.io/minikube/vendor/k8s.io/client-go/pkg/version.gitVersion=$KUBERNETES_VERSION \
+      -X k8s.io/minikube/vendor/k8s.io/kubernetes/pkg/version.gitVersion=$KUBERNETES_VERSION"
+
+    popd >/dev/null
+  '';
+
+  postInstall = ''
+    mkdir -p $bin/share/bash-completion/completions/
+    MINIKUBE_WANTUPDATENOTIFICATION=false MINIKUBE_WANTKUBECTLDOWNLOADMSG=false HOME=$PWD $bin/bin/minikube completion bash > $bin/share/bash-completion/completions/minikube
+    mkdir -p $bin/share/zsh/site-functions/
+    MINIKUBE_WANTUPDATENOTIFICATION=false MINIKUBE_WANTKUBECTLDOWNLOADMSG=false HOME=$PWD $bin/bin/minikube completion zsh > $bin/share/zsh/site-functions/_minikube
+  '';
+
+  postFixup = ''
+    wrapProgram $bin/bin/${pname} --prefix PATH : $bin/bin:${stdenv.lib.makeBinPath binPath}
+  '' + stdenv.lib.optionalString stdenv.hostPlatform.isDarwin ''
+    mv $bin/bin/hyperkit $bin/bin/docker-machine-driver-hyperkit
+  '';
+
+  meta = with stdenv.lib; {
+    homepage    = https://github.com/kubernetes/minikube;
+    description = "A tool that makes it easy to run Kubernetes locally";
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ ebzzry copumpkin vdemeester ];
+    platforms   = with platforms; unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/minishift/default.nix b/nixpkgs/pkgs/applications/networking/cluster/minishift/default.nix
new file mode 100644
index 000000000000..a8161ed30771
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/minishift/default.nix
@@ -0,0 +1,67 @@
+{ lib, buildGoPackage, fetchFromGitHub, go-bindata, pkgconfig, makeWrapper
+, glib, gtk3, libappindicator-gtk3, gpgme, openshift, ostree, libselinux, btrfs-progs
+, lvm2, docker-machine-kvm
+}:
+
+let
+  version = "1.33.0";
+
+  # Update these on version bumps according to Makefile
+  centOsIsoVersion = "v1.15.0";
+  openshiftVersion = "v3.11.0";
+
+in buildGoPackage rec {
+  name = "minishift-${version}";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "minishift";
+    repo = "minishift";
+    rev = "v${version}";
+    sha256 = "0n3pj410bgjblv27p55piln0vi618mnyzzswcyfc2v73bfnzrydf";
+  };
+
+  nativeBuildInputs = [ pkgconfig go-bindata makeWrapper ];
+  buildInputs = [ glib gtk3 libappindicator-gtk3 gpgme ostree libselinux btrfs-progs lvm2 ];
+
+  goPackagePath = "github.com/minishift/minishift";
+  subPackages = [ "cmd/minishift" ];
+
+  postPatch = ''
+    # minishift downloads openshift if not found therefore set the cache to /nix/store/...
+    substituteInPlace pkg/minishift/cache/oc_caching.go \
+      --replace 'filepath.Join(oc.MinishiftCacheDir, OC_CACHE_DIR, oc.OpenShiftVersion, runtime.GOOS)' '"${openshift}/bin"' \
+      --replace '"runtime"' ""
+  '';
+
+  buildFlagsArray = ''
+    -ldflags=
+      -X ${goPackagePath}/pkg/version.minishiftVersion=${version}
+      -X ${goPackagePath}/pkg/version.centOsIsoVersion=${centOsIsoVersion}
+      -X ${goPackagePath}/pkg/version.openshiftVersion=${openshiftVersion}
+  '';
+
+  preBuild = ''
+    (cd go/src/github.com/minishift/minishift
+      mkdir -p out/bindata
+      go-bindata -prefix addons -o out/bindata/addon_assets.go -pkg bindata addons/...)
+  '';
+
+  postInstall = ''
+    wrapProgram "$bin/bin/minishift" \
+      --prefix PATH ':' '${lib.makeBinPath [ docker-machine-kvm openshift ]}'
+  '';
+
+  meta = with lib; {
+    description = "Run OpenShift locally";
+    longDescription = ''
+      Minishift is a tool that helps you run OpenShift locally by running
+      a single-node OpenShift cluster inside a VM. You can try out OpenShift
+      or develop with it, day-to-day, on your local host.
+    '';
+    homepage = https://github.com/minishift/minishift;
+    maintainers = with maintainers; [ fpletz vdemeester ];
+    platforms = platforms.linux;
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/nomad/default.nix b/nixpkgs/pkgs/applications/networking/cluster/nomad/default.nix
new file mode 100644
index 000000000000..9e55c2f8a0f3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/nomad/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "nomad-${version}";
+  version = "0.8.7";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/hashicorp/nomad";
+  subPackages = [ "." ];
+
+  src = fetchFromGitHub {
+    owner = "hashicorp";
+    repo = "nomad";
+    inherit rev;
+    sha256 = "0nkqiqkrccfmn7qkbhd48m9m56ix4xb0a3ar0z0pl4sbm25rlj0b";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://www.nomadproject.io/;
+    description = "A Distributed, Highly Available, Datacenter-Aware Scheduler";
+    platforms = platforms.unix;
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ rushmorem pradeepchhetri ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/openshift/default.nix b/nixpkgs/pkgs/applications/networking/cluster/openshift/default.nix
new file mode 100644
index 000000000000..dd57add14af9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/openshift/default.nix
@@ -0,0 +1,86 @@
+{ stdenv, lib, fetchFromGitHub, buildGoPackage, which, go-bindata, rsync, utillinux
+, coreutils, kerberos, clang
+, components ? [
+  "cmd/oc"
+  "cmd/openshift"
+  ]
+}:
+
+with lib;
+
+let
+  version = "3.11.0";
+  ver = stdenv.lib.elemAt (stdenv.lib.splitString "." version);
+  versionMajor = ver 0;
+  versionMinor = ver 1;
+  versionPatch = ver 2;
+  gitCommit = "0cbc58b";
+  # version is in vendor/k8s.io/kubernetes/pkg/version/base.go
+  k8sversion = "v1.11.1";
+  k8sgitcommit = "b1b2997";
+  k8sgitMajor = "0";
+  k8sgitMinor = "1";
+in buildGoPackage rec {
+  name = "openshift-origin-${version}";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "openshift";
+    repo = "origin";
+    rev = "v${version}";
+    sha256 = "06q4v2a1mm6c659ab0rzkqz6b66vx4avqfg0s9xckwhq420lzgka";
+  };
+
+  goPackagePath = "github.com/openshift/origin";
+
+  buildInputs = [ which rsync go-bindata kerberos clang ];
+
+  patchPhase = ''
+    patchShebangs ./hack
+
+    substituteInPlace pkg/oc/clusterup/docker/host/host.go  \
+      --replace 'nsenter --mount=/rootfs/proc/1/ns/mnt findmnt' \
+      'nsenter --mount=/rootfs/proc/1/ns/mnt ${utillinux}/bin/findmnt'
+
+    substituteInPlace pkg/oc/clusterup/docker/host/host.go  \
+      --replace 'nsenter --mount=/rootfs/proc/1/ns/mnt mount' \
+      'nsenter --mount=/rootfs/proc/1/ns/mnt ${utillinux}/bin/mount'
+
+    substituteInPlace pkg/oc/clusterup/docker/host/host.go  \
+      --replace 'nsenter --mount=/rootfs/proc/1/ns/mnt mkdir' \
+      'nsenter --mount=/rootfs/proc/1/ns/mnt ${coreutils}/bin/mkdir'
+  '';
+
+  buildPhase = ''
+    cd go/src/${goPackagePath}
+    # Openshift build require this variables to be set
+    # unless there is a .git folder which is not the case with fetchFromGitHub
+    echo "OS_GIT_VERSION=v${version}" >> os-version-defs
+    echo "OS_GIT_MAJOR=${versionMajor}" >> os-version-defs
+    echo "OS_GIT_MINOR=${versionMinor}" >> os-version-defs
+    echo "OS_GIT_PATCH=${versionPatch}" >> os-version-defs
+    echo "OS_GIT_COMMIT=${gitCommit}" >> os-version-defs
+    echo "KUBE_GIT_VERSION=${k8sversion}" >> os-version-defs
+    echo "KUBE_GIT_COMMIT=${k8sgitcommit}" >> os-version-defs
+    echo "KUBE_GIT_MAJOR=${k8sgitMajor}" >> os-version-defs
+    echo "KUBE_GIT_MINOR=${k8sgitMinor}" >> os-version-defs
+    export OS_VERSION_FILE="os-version-defs"
+    export CC=clang
+    make all WHAT='${concatStringsSep " " components}'
+  '';
+
+  installPhase = ''
+    mkdir -p $bin/bin
+    cp -a "_output/local/bin/$(go env GOOS)/$(go env GOARCH)/"* "$bin/bin/"
+    install -D -t "$bin/etc/bash_completion.d" contrib/completions/bash/*
+    install -D -t "$bin/share/zsh/site-functions" contrib/completions/zsh/*
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Build, deploy, and manage your applications with Docker and Kubernetes";
+    license = licenses.asl20;
+    homepage = http://www.openshift.org;
+    maintainers = with maintainers; [offline bachp moretea];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/pachyderm/default.nix b/nixpkgs/pkgs/applications/networking/cluster/pachyderm/default.nix
new file mode 100644
index 000000000000..618bea36de86
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/pachyderm/default.nix
@@ -0,0 +1,24 @@
+{ lib, fetchFromGitHub, buildGoPackage }:
+
+buildGoPackage rec {
+  name = "pachyderm-${version}";
+  version = "1.8.5";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/pachyderm/pachyderm";
+  subPackages = [ "src/server/cmd/pachctl" ];
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "pachyderm";
+    repo = "pachyderm";
+    sha256 = "1b9x2xn0sxsjid15lnwr79lps8xzf24i7jfl0i48nabdigmi04wp";
+  };
+
+  meta = with lib; {
+    description = "Containerized Data Analytics";
+    homepage = https://github.com/pachyderm/pachyderm;
+    license = licenses.asl20;
+    maintainers = with maintainers; [offline];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/pig/default.nix b/nixpkgs/pkgs/applications/networking/cluster/pig/default.nix
new file mode 100644
index 000000000000..26c39f8cbe21
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/pig/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, makeWrapper, hadoop, jre, bash }:
+
+stdenv.mkDerivation rec {
+
+  name = "pig-0.17.0";
+
+  src = fetchurl {
+    url = "mirror://apache/pig/${name}/${name}.tar.gz";
+    sha256 = "1wwpg0w47f49rnivn2d26vrxgyfl9gpqx3vmzbl5lhx6x5l3fqbd";
+
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out
+    mv * $out
+
+    # no need for the windows batch script
+    rm $out/bin/pig.cmd $out/bin/pig.py
+
+    for n in $out/{bin,sbin}"/"*; do
+      wrapProgram $n \
+        --prefix PATH : "${stdenv.lib.makeBinPath [ jre bash ]}" \
+        --set JAVA_HOME "${jre}" --set HADOOP_PREFIX "${hadoop}"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://pig.apache.org/;
+    description = "High-level language for Apache Hadoop";
+    license = licenses.asl20;
+
+    longDescription = ''
+      Apache Pig is a platform for analyzing large data sets that consists of a
+      high-level language for expressing data analysis programs, coupled with
+      infrastructure for evaluating these programs. The salient property of Pig
+      programs is that their structure is amenable to substantial parallelization,
+      which in turns enables them to handle very large data sets.
+    '';
+
+    platforms = platforms.linux;
+    maintainers = [ maintainers.skeidel ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/spark/default.nix b/nixpkgs/pkgs/applications/networking/cluster/spark/default.nix
new file mode 100644
index 000000000000..6401194eac20
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/spark/default.nix
@@ -0,0 +1,66 @@
+{ stdenv, fetchzip, makeWrapper, jre, pythonPackages, coreutils, hadoop
+, RSupport? true, R
+, mesosSupport ? true, mesos
+, version
+}:
+
+let
+  sha256 = {
+    "1.6.3" = "142hw73wf20d846l83ydx0yg7qj5qxywm4h7qrhwnd7lsy2sbnjf";
+    "2.2.1" = "10nxsf9a6hj1263sxv0cbdqxdb8mb4cl6iqq32ljq9ydvk32s99c";
+  }.${version};
+in
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+
+  name = "spark-${version}";
+
+  src = fetchzip {
+    inherit sha256;
+    url    = "mirror://apache/spark/${name}/${name}-bin-without-hadoop.tgz";
+  };
+
+  buildInputs = [ makeWrapper jre pythonPackages.python pythonPackages.numpy ]
+    ++ optional RSupport R
+    ++ optional mesosSupport mesos;
+
+  untarDir = "${name}-bin-without-hadoop";
+  installPhase = ''
+    mkdir -p $out/{lib/${untarDir}/conf,bin,/share/java}
+    mv * $out/lib/${untarDir}
+
+    sed -e 's/INFO, console/WARN, console/' < \
+       $out/lib/${untarDir}/conf/log4j.properties.template > \
+       $out/lib/${untarDir}/conf/log4j.properties
+
+    cat > $out/lib/${untarDir}/conf/spark-env.sh <<- EOF
+    export JAVA_HOME="${jre}"
+    export SPARK_HOME="$out/lib/${untarDir}"
+    export SPARK_DIST_CLASSPATH=$(${hadoop}/bin/hadoop classpath)
+    export PYSPARK_PYTHON="${pythonPackages.python}/bin/${pythonPackages.python.executable}"
+    export PYTHONPATH="\$PYTHONPATH:$PYTHONPATH"
+    ${optionalString RSupport
+      ''export SPARKR_R_SHELL="${R}/bin/R"
+        export PATH=$PATH:"${R}/bin/R"''}
+    ${optionalString mesosSupport
+      ''export MESOS_NATIVE_LIBRARY="$MESOS_NATIVE_LIBRARY"''}
+    EOF
+
+    for n in $(find $out/lib/${untarDir}/bin -type f ! -name "*.*"); do
+      makeWrapper "$n" "$out/bin/$(basename $n)"
+      substituteInPlace "$n" --replace dirname ${coreutils.out}/bin/dirname
+    done
+    ln -s $out/lib/${untarDir}/lib/spark-assembly-*.jar $out/share/java
+  '';
+
+  meta = {
+    description      = "Apache Spark is a fast and general engine for large-scale data processing";
+    homepage         = "http://spark.apache.org";
+    license          = stdenv.lib.licenses.asl20;
+    platforms        = stdenv.lib.platforms.all;
+    maintainers      = with maintainers; [ thoughtpolice offline kamilchm ];
+    repositories.git = git://git.apache.org/spark.git;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/ssm-agent/default.nix b/nixpkgs/pkgs/applications/networking/cluster/ssm-agent/default.nix
new file mode 100644
index 000000000000..052797db2f3f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/ssm-agent/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, buildGoPackage }:
+
+buildGoPackage rec {
+  name    = "${pname}-${version}";
+  pname   = "amazon-ssm-agent";
+  version = "2.0.633.0";
+
+  goPackagePath = "github.com/aws/${pname}";
+  subPackages   = [ "agent" ];
+
+  src = fetchFromGitHub {
+    rev    = "v${version}";
+    owner  = "aws";
+    repo   = pname;
+    sha256 = "10arshfn2k3m3zzgw8b3xc6ywd0ss73746nq5srh2jir7mjzi4xv";
+  };
+
+  preBuild = ''
+    mv go/src/${goPackagePath}/vendor strange-vendor
+    mv strange-vendor/src go/src/${goPackagePath}/vendor
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Agent to enable remote management of your Amazon EC2 instance configuration";
+    homepage    = "https://github.com/aws/amazon-ssm-agent";
+    license     = licenses.asl20;
+    platforms   = platforms.unix;
+    maintainers = with maintainers; [ copumpkin ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/cluster/stern/default.nix b/nixpkgs/pkgs/applications/networking/cluster/stern/default.nix
new file mode 100644
index 000000000000..bb0f3229ea5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/stern/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, buildPackages, buildGoPackage, fetchFromGitHub }:
+
+let isCrossBuild = stdenv.hostPlatform != stdenv.buildPlatform; in
+
+buildGoPackage rec {
+  name = "stern-${version}";
+  version = "1.10.0";
+
+  goPackagePath = "github.com/wercker/stern";
+
+  src = fetchFromGitHub {
+    owner = "wercker";
+    repo = "stern";
+    rev = "${version}";
+    sha256 = "05wsif0pwh2v4rw4as36f1d9r149zzp2nyc0z4jwnj9nx58nfpll";
+  };
+
+  goDeps = ./deps.nix;
+
+  postInstall =
+    let stern = if isCrossBuild then buildPackages.stern else "$bin"; in
+    ''
+      mkdir -p $bin/share/bash-completion/completions
+      ${stern}/bin/stern --completion bash > $bin/share/bash-completion/completions/stern
+      mkdir -p $bin/share/zsh/site-functions
+      ${stern}/bin/stern --completion zsh > $bin/share/zsh/site-functions/_stern
+    '';
+
+  meta = with lib; {
+    description      = "Multi pod and container log tailing for Kubernetes";
+    homepage         = "https://github.com/wercker/stern";
+    license          = licenses.asl20;
+    maintainers      = with maintainers; [ mbode ];
+    platforms        = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/stern/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/stern/deps.nix
new file mode 100644
index 000000000000..fff5cf8c0de4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/stern/deps.nix
@@ -0,0 +1,336 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "cloud.google.com/go";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/gocloud";
+      rev =  "dfffe386c33fb24c34ee501e5723df5b97b98514";
+      sha256 = "1g681yxz4mmzapzpzxfaz1nhcr1w526793yapfsnxlbs2skap3fy";
+    };
+  }
+  {
+    goPackagePath  = "github.com/Azure/go-autorest";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Azure/go-autorest";
+      rev =  "1ff28809256a84bb6966640ff3d0371af82ccba4";
+      sha256 = "0sxvj2j1833bqwxvhq3wq3jgq73rnb81pnzvl0x3y1m0hzpaf2zv";
+    };
+  }
+  {
+    goPackagePath  = "github.com/dgrijalva/jwt-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dgrijalva/jwt-go";
+      rev =  "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e";
+      sha256 = "08m27vlms74pfy5z79w67f9lk9zkx6a9jd68k3c4msxy75ry36mp";
+    };
+  }
+  {
+    goPackagePath  = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev =  "2d684516a8861da43017284349b7e303e809ac21";
+      sha256 = "1fcfmz4wji3gqmmsdx493r7d101s58hwjalqps6hy25nva5pvmfs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/ghodss/yaml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ghodss/yaml";
+      rev =  "73d445a93680fa1a78ae23a5839bad48f32ba1ee";
+      sha256 = "0pg53ky4sy3sp9j4n7vgf1p3gw4nbckwqfldcmmi9rf13kjh0mr7";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev =  "c0656edd0d9eab7c66d1eb0c568f9039345796f7";
+      sha256 = "0b943dhx571lhgcs3rqzy0092mi2x5mwy2kl7g8rryhy3r5rzrz9";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/glog";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/glog";
+      rev =  "23def4e6c14b4da8ac2ed8007337bc5eb5007998";
+      sha256 = "0jb2834rw5sykfr937fxi8hxi2zy80sj2bdn9b3jb4b26ksqng30";
+    };
+  }
+  {
+    goPackagePath  = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev =  "b4deda0973fb4c70b50d226b1af49f3da59f5265";
+      sha256 = "0ya4ha7m20bw048m1159ppqzlvda4x0vdprlbk5sdgmy74h3xcdq";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/btree";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/btree";
+      rev =  "4030bb1f1f0c35b30ca7009e9ebd06849dd45306";
+      sha256 = "0ba430m9fbnagacp57krgidsyrgp3ycw5r7dj71brgp5r52g82p6";
+    };
+  }
+  {
+    goPackagePath  = "github.com/google/gofuzz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/google/gofuzz";
+      rev =  "24818f796faf91cd76ec7bddd72458fbced7a6c1";
+      sha256 = "0cq90m2lgalrdfrwwyycrrmn785rgnxa3l3vp9yxkvnv88bymmlm";
+    };
+  }
+  {
+    goPackagePath  = "github.com/googleapis/gnostic";
+    fetch = {
+      type = "git";
+      url = "https://github.com/googleapis/gnostic";
+      rev =  "0c5108395e2debce0d731cf0287ddf7242066aba";
+      sha256 = "0jf3cp5clli88gpjf24r6wxbkvngnc1kf59d4cgjczsn2wasvsfc";
+    };
+  }
+  {
+    goPackagePath  = "github.com/gregjones/httpcache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gregjones/httpcache";
+      rev =  "787624de3eb7bd915c329cba748687a3b22666a6";
+      sha256 = "1zqlg9pkj7r6fqw7wv3ywvbz3bh0hvzifs2scgcraj812q5189w5";
+    };
+  }
+  {
+    goPackagePath  = "github.com/imdario/mergo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/imdario/mergo";
+      rev =  "6633656539c1639d9d78127b7d47c622b5d7b6dc";
+      sha256 = "1fffbq1l17i0gynmvcxypl7d9h4v81g5vlimiph5bfgf4sp4db7g";
+    };
+  }
+  {
+    goPackagePath  = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev =  "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+  {
+    goPackagePath  = "github.com/json-iterator/go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/json-iterator/go";
+      rev =  "f2b4162afba35581b6d4a50d3b8f34e33c144682";
+      sha256 = "0siqfghsm2lkdwinvg8x5gls3p76rq3cdm59c1r4x0b2mdfhnvcd";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev =  "167de6bfdfba052fa6b2d3664c8f5272e23c9072";
+      sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev =  "6ca4dbf54d38eea1a992b3c722a76a5d1c4cb25c";
+      sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w";
+    };
+  }
+  {
+    goPackagePath  = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev =  "b8bc1bf767474819792c23f32d8286a45736f1c6";
+      sha256 = "13ry4lylalkh4g2vny9cxwvryslzyzwp9r92z0b10idhdq3wad1q";
+    };
+  }
+  {
+    goPackagePath  = "github.com/modern-go/concurrent";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/concurrent";
+      rev =  "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94";
+      sha256 = "0s0fxccsyb8icjmiym5k7prcqx36hvgdwl588y0491gi18k5i4zs";
+    };
+  }
+  {
+    goPackagePath  = "github.com/modern-go/reflect2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/modern-go/reflect2";
+      rev =  "4b7aa43c6742a2c18fdef89dd197aaae7dac7ccd";
+      sha256 = "1721y3yr3dpx5dx5ashf063qczk2awy5zjir1jvp1h5hn7qz4i49";
+    };
+  }
+  {
+    goPackagePath  = "github.com/petar/GoLLRB";
+    fetch = {
+      type = "git";
+      url = "https://github.com/petar/GoLLRB";
+      rev =  "53be0d36a84c2a886ca057d34b6aa4468df9ccb4";
+      sha256 = "01xp3lcamqkvl91jg6ly202gdsgf64j39rkrcqxi6v4pbrcv7hz0";
+    };
+  }
+  {
+    goPackagePath  = "github.com/peterbourgon/diskv";
+    fetch = {
+      type = "git";
+      url = "https://github.com/peterbourgon/diskv";
+      rev =  "5f041e8faa004a95c88a202771f4cc3e991971e6";
+      sha256 = "1mxpa5aad08x30qcbffzk80g9540wvbca4blc1r2qyzl65b8929b";
+    };
+  }
+  {
+    goPackagePath  = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev =  "816c9085562cd7ee03e7f8188a1cfd942858cded";
+      sha256 = "1ws5crb7c70wdicavl6qr4g03nn6m92zd6wwp9n2ygz5c8rmxh8k";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev =  "a114f312e075f65bf30d6d9a1430113f857e543b";
+      sha256 = "10lmi5ni06yijxg02fcic5b7ycjkia12yma4a4lz8a56j30wykx1";
+    };
+  }
+  {
+    goPackagePath  = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev =  "3ebe029320b2676d667ae88da602a5f854788a8a";
+      sha256 = "11yxs0wqy70wj106fkz8r923yg4ncnc2mbw33v48zmlg4a1rasgp";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev =  "49796115aa4b964c318aad4f3084fdb41e9aa067";
+      sha256 = "0pcq2drkzsw585xi6rda8imd7a139prrmvgmv8nz0zgzk6g4dy59";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev =  "1c05540f6879653db88113bc4a2b70aec4bd491f";
+      sha256 = "0h8yqb0vcqgllgydrf9d3rzp83w8wlr8f0nm6r1rwf2qg30pq1pd";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev =  "a6bd8cefa1811bd24b86f8902872e4e8225f74c4";
+      sha256 = "151in8qcf5y97ziavl6b03vgw4r87zqx5kg4vjhjszjbh60cfswp";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev =  "8e24a49d80f82323e1c4db1b5da3e0f31171a151";
+      sha256 = "0zsdnyb8dy98jw6f9yn6g5gdhaqwk39hqridr0mh4dhwvwvlj724";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev =  "f21a4dfb5e38f5895301dc265a8def02365cc3d0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/time";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/time";
+      rev =  "f51c12702a4d776e4c1fa9b0fabab841babae631";
+      sha256 = "07wc6g2fvafkr6djsscm0jpbpl4135khhb6kpyx1953hi5d1jvyy";
+    };
+  }
+  {
+    goPackagePath  = "google.golang.org/appengine";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/appengine";
+      rev =  "ae0ab99deb4dc413a2b4bd6c8bdd0eb67f1e4d06";
+      sha256 = "1iabxnqgxvvn1239i6fvfl375vlbvhfrc03m1x2rvalmx4d6w9c7";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/inf.v0";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-inf/inf";
+      rev =  "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4";
+      sha256 = "0rf3vwyb8aqnac9x9d6ax7z5526c45a16yjm2pvkijr6qgqz8b82";
+    };
+  }
+  {
+    goPackagePath  = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-yaml/yaml";
+      rev =  "5420a8b6744d3b0345ab293f6fcba19c978f1183";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/api";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/api";
+      rev =  "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6";
+      sha256 = "1dpmd59jlkxgrp5aaf8420344c6nq4kjlc1avgcp7690yrzc50v6";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/apimachinery";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/apimachinery";
+      rev =  "594fc14b6f143d963ea2c8132e09e73fe244b6c9";
+      sha256 = "0xykhpmjgagyb0ac4y0ps4v1s9bd2b1sc0simh48c41a9fk3yvr7";
+    };
+  }
+  {
+    goPackagePath  = "k8s.io/client-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kubernetes/client-go";
+      rev =  "739dd8f9d4801eb23e2bc43423c0b4acaaded29a";
+      sha256 = "15psjmb14rz4kwysim9vfbbylx0khkw29b195rziv1vk202lh28k";
+    };
+  }
+]
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/taktuk/default.nix b/nixpkgs/pkgs/applications/networking/cluster/taktuk/default.nix
new file mode 100644
index 000000000000..c61896d89218
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/taktuk/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, perl }:
+
+stdenv.mkDerivation rec {
+  version = "3.7.7";
+  name = "taktuk-${version}";
+
+  buildInputs = [ perl ];
+
+  src = fetchurl {
+    url = "https://gforge.inria.fr/frs/download.php/33412/${name}.tar.gz";
+    sha256 = "0w0h3ynlcxvq2nzm8hkj20g0805ww3vkw53g0qwj7wvp7p3gcvnr";
+  };
+
+  preBuild = ''
+      substituteInPlace ./taktuk --replace "/usr/bin/perl" "${perl}/bin/perl"
+  '';
+
+  meta = {
+    description = "Efficient, large scale, parallel remote execution of commands";
+    longDescription = ''
+      TakTuk allows one to execute commands in parallel on a potentially large set
+      of remote nodes (using ssh to connect to each node). It is typically used
+      inside high performance computing clusters and grids. It uses an adaptive
+      algorithm to efficiently distribute the work and sets up an interconnection
+      network to transport commands and perform I/Os multiplexing. It doesn't
+      require any specific software on the nodes thanks to a self-propagation
+      algorithm.'';
+    homepage = http://taktuk.gforge.inria.fr/;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.bzizou ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-docs/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-docs/default.nix
new file mode 100644
index 000000000000..2b39cebbbeb0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-docs/default.nix
@@ -0,0 +1,26 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+buildGoPackage rec {
+  name = "${pname}-${version}";
+  pname = "terraform-docs";
+  version = "0.6.0";
+
+  goPackagePath = "github.com/segmentio/${pname}";
+
+  src = fetchFromGitHub {
+    owner  = "segmentio";
+    repo   = pname;
+    rev    = "v${version}";
+    sha256 = "1p6prhjf82qnhf1zwl9h92j4ds5g383a6g9pwwnqbc3wdwy5zx7d";
+  };
+
+  preBuild = ''
+    buildFlagsArray+=("-ldflags" "-X main.version=${version}")
+  '';
+
+  meta = with lib; {
+    description = "A utility to generate documentation from Terraform modules in various output formats";
+    homepage = "https://github.com/segmentio/terraform-docs/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ zimbatm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/default.nix
new file mode 100644
index 000000000000..dd4a36807ea1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, buildGoPackage, fetchFromGitHub}:
+
+buildGoPackage rec {
+  name = "terraform-inventory-${version}";
+  version = "0.7-pre";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/adammck/terraform-inventory";
+
+  subPackages = [ "./" ];
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "adammck";
+    repo = "terraform-inventory";
+    sha256 = "0wwyi2nfyn3wfpmvj8aabn0cjba0lpr5nw3rgd6qdywy7sc3rmb1";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/adammck/terraform-inventory;
+    description = "Terraform state to ansible inventory adapter";
+    platforms = platforms.all;
+    license = licenses.mit;
+    maintainers = with maintainers; [ htr ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/deps.nix
new file mode 100644
index 000000000000..9f7b5e317fe3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-inventory/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "github.com/adammck/venv";
+    fetch = {
+      type = "git";
+      url = "https://github.com/adammck/venv";
+      rev = "8a9c907a37d36a8f34fa1c5b81aaf80c2554a306";
+      sha256 = "1fzk3j4q59kpd2ks2aw8rmic6b123p5mh981cjh0kzs716grc6y8";
+    };
+  }
+  {
+    goPackagePath = "github.com/blang/vfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/blang/vfs";
+      rev = "c14afcac17253ce7418da751ec6b1988790cdc8f";
+      sha256 = "00q5qzxpn9n59nrmrljz4w9lljxvrr8i5j8i8b4iw86j0alcx53b";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile
new file mode 100644
index 000000000000..c4f9a5511de9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'terraform_landscape'
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock
new file mode 100644
index 000000000000..b801fad546df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/Gemfile.lock
@@ -0,0 +1,25 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    colorize (0.8.1)
+    commander (4.4.6)
+      highline (~> 1.7.2)
+    diffy (3.2.1)
+    highline (1.7.10)
+    polyglot (0.3.5)
+    terraform_landscape (0.2.1)
+      colorize (~> 0.7)
+      commander (~> 4.4)
+      diffy (~> 3.0)
+      treetop (~> 1.6)
+    treetop (1.6.10)
+      polyglot (~> 0.3)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  terraform_landscape
+
+BUNDLED WITH
+   1.16.3
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/default.nix
new file mode 100644
index 000000000000..aa5235068505
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/default.nix
@@ -0,0 +1,18 @@
+{ lib, bundlerApp, ruby }:
+let
+  version = (import ./gemset.nix).terraform_landscape.version;
+in bundlerApp {
+  pname = "terraform_landscape";
+
+  inherit ruby;
+  gemdir = ./.;
+  exes = [ "landscape" ];
+
+  meta = with lib; {
+    description = "Improve Terraform's plan output to be easier to read and understand";
+    homepage    = https://github.com/coinbase/terraform-landscape;
+    license     = with licenses; apsl20;
+    maintainers = with maintainers; [ mbode manveru ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/gemset.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/gemset.nix
new file mode 100644
index 000000000000..aa3f5142aa5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-landscape/gemset.nix
@@ -0,0 +1,61 @@
+{
+  colorize = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b";
+      type = "gem";
+    };
+    version = "0.8.1";
+  };
+  commander = {
+    dependencies = ["highline"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11sd2sb0id2dbxkv4pvymdiia1xxhms45kh4nr8mryqybad0fwwf";
+      type = "gem";
+    };
+    version = "4.4.6";
+  };
+  diffy = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg";
+      type = "gem";
+    };
+    version = "3.2.1";
+  };
+  highline = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01ib7jp85xjc4gh4jg0wyzllm46hwv8p0w1m4c75pbgi41fps50y";
+      type = "gem";
+    };
+    version = "1.7.10";
+  };
+  polyglot = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr";
+      type = "gem";
+    };
+    version = "0.3.5";
+  };
+  terraform_landscape = {
+    dependencies = ["colorize" "commander" "diffy" "treetop"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1i93pih7r6zcqpjhsmvkpfkgbh0l66c60i6fkiymq7vy2xd6wnns";
+      type = "gem";
+    };
+    version = "0.2.1";
+  };
+  treetop = {
+    dependencies = ["polyglot"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0g31pijhnv7z960sd09lckmw9h8rs3wmc8g4ihmppszxqm99zpv7";
+      type = "gem";
+    };
+    version = "1.6.10";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/data.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/data.nix
new file mode 100644
index 000000000000..ef0da8e6ff5b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/data.nix
@@ -0,0 +1,724 @@
+# Generated with ./update-all
+{
+  acme =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-acme";
+      version = "1.1.1";
+      sha256  = "0fva2kw82s94r4s4dpk38kcmssmcr71ia9jyg1rqmc00ifilfrzj";
+    };
+  alicloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-alicloud";
+      version = "1.36.0";
+      sha256  = "13rmlsnplcmcxjksm1wizgzlx47h5in5gmqhbm2n6k5ayx4x9ha2";
+    };
+  archive =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-archive";
+      version = "1.2.0";
+      sha256  = "1qargj90nl7r8a1fcsj10fnjirskvbn3gz0dsijqnr432jxs2cvh";
+    };
+  arukas =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-arukas";
+      version = "1.0.0";
+      sha256  = "1v8jzns8czy8navdrabsvc9zk1s9vs1718ngjlx9vs13r3bkm2fc";
+    };
+  atlas =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-atlas";
+      version = "0.1.1";
+      sha256  = "0k73vv14vnjl5qm33w54s5zzi0mmk1kn2zs3qkfq71aqi9ml7d14";
+    };
+  aws =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-aws";
+      version = "2.3.0";
+      sha256  = "0cim14q56xr7hm06d4sy205p4xp1x3kbddb4pw65ck671i55h7ln";
+    };
+  azuread =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-azuread";
+      version = "0.2.0";
+      sha256  = "01aiynw905gbn6dv23971yhwv0kfcbckcqp4f65sypn1l8szqyjg";
+    };
+  azurerm =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-azurerm";
+      version = "1.23.0";
+      sha256  = "11v1832sxnigyiyy4i34mxwn7j18i6iwsff8sqabpa7v9a405ngp";
+    };
+  azurestack =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-azurestack";
+      version = "0.4.0";
+      sha256  = "1c9am0v4aq95k1jblc767vykk76dp0d6z2fvy148ag77cy2jgryc";
+    };
+  bigip =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-bigip";
+      version = "0.12.0";
+      sha256  = "0fmmlx757hph45ffm19zafjfkldg41qkw83vz0jjmvxicza1afbd";
+    };
+  bitbucket =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-bitbucket";
+      version = "1.0.0";
+      sha256  = "0gi8p1q0y8x5y8lqihijkpqs3v152h0q7icv7ixk33xsdcvb418y";
+    };
+  brightbox =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-brightbox";
+      version = "1.0.6";
+      sha256  = "02wbx36kdbxxjwsbbwry3drdx5injllglpsb56dw1fvqymmal7wl";
+    };
+  chef =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-chef";
+      version = "0.1.0";
+      sha256  = "17fppyhxi0rd5v8khw2psdn2hdv5j79hxhinwkzrq5s4iccqk5dw";
+    };
+  circonus =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-circonus";
+      version = "0.2.0";
+      sha256  = "1vcia3p31cgdwjs06k4244bk7ib2qp1f2lhc7hmyhdfi1c8jym45";
+    };
+  clc =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-clc";
+      version = "0.1.0";
+      sha256  = "0gvsjnwk6xkgxai1gxsjf0hsjxbv8d8jg5hq8yd3hjhc6785fgnf";
+    };
+  cloudflare =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-cloudflare";
+      version = "1.12.0";
+      sha256  = "1kq9mbs3if7w9jnsdkj104lvy532lwkd9wr4m0ilh7zql0vm9mpk";
+    };
+  cloudscale =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-cloudscale";
+      version = "1.0.1";
+      sha256  = "0lhzwbm1a2s11s0ahb3vxfvshh385fgy1ficvip4rl31dahhwrav";
+    };
+  cloudstack =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-cloudstack";
+      version = "0.2.0";
+      sha256  = "1v46da55a8a0hnw319swz3pkd62afy7hdwzybxmp48hxh1i6af74";
+    };
+  cobbler =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-cobbler";
+      version = "1.0.1";
+      sha256  = "1z0iijfrbbdrgszvc7jlcr4105zragbc0iq8x48vi24yipqgf5a8";
+    };
+  consul =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-consul";
+      version = "2.2.0";
+      sha256  = "13jwvf7n7238pzvdq9m6vnl9vqa9hkr1mrcf9sa1q9lxkim9ijfk";
+    };
+  datadog =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-datadog";
+      version = "1.7.0";
+      sha256  = "0a7nvq2nhfv2jg6jc83jjg11yzzkiwyifdj5ni76nri82mbhb14q";
+    };
+  digitalocean =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-digitalocean";
+      version = "1.1.0";
+      sha256  = "1w5xslm8939rz13bsiv9hfcl8cyvi03gr0h24c0ybwj8alxmxhb4";
+    };
+  dme =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-dme";
+      version = "0.1.0";
+      sha256  = "1ipqw1sbx0i9rhxawsysrqxvf10z8ra2y86xwd4iz0f12x9drblv";
+    };
+  dns =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-dns";
+      version = "2.0.0";
+      sha256  = "1km0pq1wp0bdccb612z9n0kj9w7hn1yvhk7xszwp2mzs8qmd7flv";
+    };
+  dnsimple =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-dnsimple";
+      version = "0.1.0";
+      sha256  = "0gkd5i69ldm5zn34p3k68aqk798g6g0d60gw7yp316l7mskvrx7h";
+    };
+  docker =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-docker";
+      version = "1.1.1";
+      sha256  = "0bqwdx8hb7bym4hh01a0n1zrgb1081rvn0qawck712wz0jkzv1r3";
+    };
+  dyn =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-dyn";
+      version = "1.1.0";
+      sha256  = "0sx4h3drb230m69lsmafyfd2cfvwnb9gld8s6ky54115kd3nckml";
+    };
+  external =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-external";
+      version = "1.1.0";
+      sha256  = "18gwwcspj31rid0r603z0688nzdwl2nl8wy6hrzw62bx5gy4bdrp";
+    };
+  fastly =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-fastly";
+      version = "0.6.0";
+      sha256  = "1z9qrqcib2rxy8s4glb4ggdkqcq7rwphiclsr1zncyly2n6887yj";
+    };
+  flexibleengine =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-flexibleengine";
+      version = "1.4.0";
+      sha256  = "1gj3y9xw9zzh2fs2i6q0afw591lhy1lvcn80xac4da08r5l3si6g";
+    };
+  github =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-github";
+      version = "1.3.0";
+      sha256  = "1k7816dbpsjjbm3pa6l0qlrxw5hh8z5iwdr8mp1mp5liidhl6bqs";
+    };
+  gitlab =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-gitlab";
+      version = "1.2.0";
+      sha256  = "11j84kyw2lsqsn6ya070hx0k6igb3hhjl8zlnr4q3gpmv51y23qc";
+    };
+  google =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-google";
+      version = "2.3.0";
+      sha256  = "063z08qamy0yx376qh0pxd446kbnp6z1828x6nr7yzh4dw0rzc3s";
+    };
+  google-beta =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-google-beta";
+      version = "2.3.0";
+      sha256  = "120vq5bd092ykv6cc53w9208wfmf2hd8hflas282l4yg0b47gx83";
+    };
+  grafana =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-grafana";
+      version = "1.3.0";
+      sha256  = "1gyma31iv05nfy9jrd8zlkls35fbrxx4nrh56gdgwchv054rxzff";
+    };
+  hcloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-hcloud";
+      version = "1.9.0";
+      sha256  = "08ag1xwn6vj4w8kz37z8hsi8lkvfwkw5n8wjb5c03g9yva1j85yx";
+    };
+  hedvig =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-hedvig";
+      version = "1.0.3";
+      sha256  = "0kqnbd78m4r97b5w7skkpcnhc0bqh2cky7q0inhdhsb7gvivz1b1";
+    };
+  helm =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-helm";
+      version = "0.9.0";
+      sha256  = "1psqabifb1kabg268ca1x4l79z1xga1pr2sf8x9lrd7z856v18l9";
+    };
+  heroku =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-heroku";
+      version = "1.8.0";
+      sha256  = "0gansylgmc8fx9lskpc4dkjjc3v3jxbmcgscbgc4qfiiybxf5j8n";
+    };
+  http =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-http";
+      version = "1.0.1";
+      sha256  = "1bnqrx4xya3lm5wp4byy6npazll6w1g6bv4rawgncswsgx08zqng";
+    };
+  huaweicloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-huaweicloud";
+      version = "1.4.0";
+      sha256  = "018b57cndl72vjlijwvjx64rxjgimcqq1f6dxdny3wj1j4i0h4fi";
+    };
+  icinga2 =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-icinga2";
+      version = "0.2.0";
+      sha256  = "02ladn2w75k35vn8llj3zh9hbpnnnvpm47c9f29zshfs04acwbq0";
+    };
+  ignition =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ignition";
+      version = "1.0.1";
+      sha256  = "1j9rgwrb4bnm8a44rg3d9fry46wlpfkwxxpkpw9y6l24php0qxh8";
+    };
+  influxdb =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-influxdb";
+      version = "1.1.0";
+      sha256  = "1mxvc3pwzgj7r79a5vz8n489xny12wa75zpppgh7948fy8m8b23f";
+    };
+  kubernetes =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-kubernetes";
+      version = "1.5.2";
+      sha256  = "0g1f5cbmzrd46abwd0rdyrf8wj8w9bx1251gf4s9z41adrxjy2lp";
+    };
+  librato =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-librato";
+      version = "0.1.0";
+      sha256  = "0bxadwj5s7bvc4vlymn3w6qckf14hz82r7q98w2nh55sqr52d923";
+    };
+  linode =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-linode";
+      version = "1.5.0";
+      sha256  = "1vp20jxxrzm57z6ldni2rbw9plwws17gpzv3z0ffqa9rijqxh3fr";
+    };
+  local =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-local";
+      version = "1.2.0";
+      sha256  = "1w63ar3cr4095kza400chmmdzdadb1d871pbd14pzghl63nyg4ig";
+    };
+  logentries =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-logentries";
+      version = "1.0.0";
+      sha256  = "04xprkb9zwdjyzmsdf10bgmn8sa8q7jw0izz8lw0cc9hag97qgbq";
+    };
+  logicmonitor =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-logicmonitor";
+      version = "1.2.0";
+      sha256  = "1zir35i8j5w7ra4i7f9k0ghac9b3bar0dy16sqy1kqwbh4ikmhb8";
+    };
+  mailgun =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-mailgun";
+      version = "0.1.0";
+      sha256  = "1hjhjfxqbr43wa248c6hc91lx5b2gdw4vl92l2i6aqp17rbc0wfj";
+    };
+  mysql =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-mysql";
+      version = "1.5.1";
+      sha256  = "0i5s62z3cdg3mhahf09nyw8l2hcx6d7jp3hr3n8rcjwj3ajj8qis";
+    };
+  netlify =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-netlify";
+      version = "0.1.0";
+      sha256  = "1lf66nzqcgzjwvh1lv2jp8gcj6apdanlinci5pri8mgv5r1pv40l";
+    };
+  newrelic =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-newrelic";
+      version = "1.5.0";
+      sha256  = "1if8i435v4nf18hdvwwz3nvlkaf8yjzcxi300blri2xfx95chsxw";
+    };
+  nomad =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-nomad";
+      version = "1.3.0";
+      sha256  = "06kq0qkrgnj7z13xrgb9shid356m55mz0hkdbm4vfz3fx863mvl3";
+    };
+  ns1 =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ns1";
+      version = "1.2.0";
+      sha256  = "0j9xghm84zjfgsmix1gdslr4pnhcf2xmb7n1851a3pmxd851fd9b";
+    };
+  nsxt =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-nsxt";
+      version = "1.1.0";
+      sha256  = "0y9n4acbrjf5n2v8j10qfnz8677gil60by5miz3wd2qpxwgmhhm8";
+    };
+  null =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-null";
+      version = "2.1.0";
+      sha256  = "0hgdg5hl33kx9hzj2y0aqfq32q92b3hbdvx1a391c0miz6rn2k8k";
+    };
+  nutanix =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-nutanix";
+      version = "1.0.0";
+      sha256  = "16nky5ryyjvv7vny18ymxvy20ivwmqw7lagnz48pq8mnwwrp5541";
+    };
+  oci =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-oci";
+      version = "3.20.0-rc1";
+      sha256  = "07z4bl2fz8wvfjznrci6dxigx8ypi2r4w8xk9fv0bpjm0a6pp813";
+    };
+  oneandone =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-oneandone";
+      version = "1.3.0";
+      sha256  = "0c412nqg3k17124i51nn3ffra6gcll904h37h7hyvz97cdblcncn";
+    };
+  opc =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-opc";
+      version = "1.3.2";
+      sha256  = "0fm53xwgpsmfkqavichxb0vq86bqqpsadlyzqz5jafw3aavx91cb";
+    };
+  openstack =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-openstack";
+      version = "1.16.0";
+      sha256  = "1s0fclqclq1rrwz6217jw4qh6bz3zlk6zxsaabxvzbsg4b7vwnrh";
+    };
+  opentelekomcloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-opentelekomcloud";
+      version = "1.7.0";
+      sha256  = "15p5xvl6ryj5silpd2yrmjjh0d4qf89v8x6zbq8x7j351a1fljak";
+    };
+  opsgenie =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-opsgenie";
+      version = "0.1.0";
+      sha256  = "0zs0cl6jl4rijcs6vv5k8k5pyf0zs52dlgqcnb1gzslh8sg5pdkm";
+    };
+  oraclepaas =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-oraclepaas";
+      version = "1.5.0";
+      sha256  = "1vnaqzs7i2kn37sxf1sknxn6j1d24xlckqcvkh9xzi8jrmm4rgvr";
+    };
+  ovh =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ovh";
+      version = "0.3.0";
+      sha256  = "05bzkwa50alh8mpslh64dddp815m8df240w1mmphdmp9rsi6hqp8";
+    };
+  packet =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-packet";
+      version = "1.5.0";
+      sha256  = "0c59f2q8ivdn47f4shy674794aijc7byb6273lfcdaal1gb0mw79";
+    };
+  pagerduty =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-pagerduty";
+      version = "1.2.1";
+      sha256  = "1b0fbzqalcxngnxk51afxkhs82bj68sjakvb28p0im0x1lblxj0n";
+    };
+  panos =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-panos";
+      version = "1.5.1";
+      sha256  = "17w4zkc445bpfq6pqx575y5njsak18yca1y2by4chg9d05inphqd";
+    };
+  postgresql =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-postgresql";
+      version = "0.2.1";
+      sha256  = "025s3wgj1v6iwaliyics33cb5sx4614658z1vxxrxx7xb9pf328w";
+    };
+  powerdns =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-powerdns";
+      version = "0.1.0";
+      sha256  = "1k9xjx2smk6478dsrcnqk1k6r2pddpa9n8aghq5d1a5yhfsq5zzz";
+    };
+  profitbricks =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-profitbricks";
+      version = "1.4.3";
+      sha256  = "19rqqx5ib23nhvz2smh20cii25g09sdi7kg85m4nlbh63gqg86qf";
+    };
+  rabbitmq =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-rabbitmq";
+      version = "1.0.0";
+      sha256  = "1md928243r4c46ihjnavz2375nxnfyhknyc86r9853hwhhyhsx5d";
+    };
+  rancher =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-rancher";
+      version = "1.2.1";
+      sha256  = "1z0gqchb268w5mw0519fbx4126nkxb9kvvay8vjj287yxdpi5grj";
+    };
+  random =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-random";
+      version = "2.1.0";
+      sha256  = "1219128f838szcjgjv6figrmh4r7lhxrr22mf9fpf5a30wi0ssqf";
+    };
+  rightscale =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-rightscale";
+      version = "1.3.0";
+      sha256  = "1brzxyd5hg99x75qh0p707lr9cvqpzx2az1swr624w3rzhjl2ygm";
+    };
+  rundeck =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-rundeck";
+      version = "0.1.0";
+      sha256  = "0rp8cgnp8in52g7zkl2lj42hns0g27m8f7l42lhfnv6n2vv5qxcg";
+    };
+  runscope =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-runscope";
+      version = "0.5.0";
+      sha256  = "0n0m39gaiwhqigjny51a7g36ldik33alimkqqbv6hqyzrhk0qs8h";
+    };
+  scaleway =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-scaleway";
+      version = "1.9.2";
+      sha256  = "0wjkjf4sc3rfxiz3lfw6cfhdn8a7pzmyfw1f2dsp3a6fpa2srbph";
+    };
+  selectel =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-selectel";
+      version = "2.1.0";
+      sha256  = "078pyml9nwv7347yni1h7mjdp8sd4zyccv80mgjn8xh2q208fqpg";
+    };
+  skytap =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-skytap";
+      version = "0.9.0";
+      sha256  = "15p2rfaqw5iab8fkxcxigp7nxvs4gmgr2v8ysfyjz01mgwidd0rq";
+    };
+  softlayer =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-softlayer";
+      version = "0.0.1";
+      sha256  = "1xcg5zm2n1pc3l7ng94k589r7ykv6fxsmr5qn9xmmpdf912rdnfq";
+    };
+  spotinst =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-spotinst";
+      version = "1.9.0";
+      sha256  = "0rpkxg50gkm9ji7s4bl1wz7j1z2iw5jq9n1pfmcs9nk0rl17j77j";
+    };
+  statuscake =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-statuscake";
+      version = "0.2.0";
+      sha256  = "065izach0hq04664hz7rc3gd0r3l06lzwcbj5800zjfv1inp6pxs";
+    };
+  telefonicaopencloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-telefonicaopencloud";
+      version = "1.0.0";
+      sha256  = "1761wkjz3d2458xl7855lxklyxgyk05fddh92rp6975y0ca6xa5m";
+    };
+  template =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-template";
+      version = "2.1.0";
+      sha256  = "1db9gr4f5awryqxq5iahv2xj5p0msd44j3lgklkqw2q3kswlvckr";
+    };
+  tencentcloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-tencentcloud";
+      version = "1.3.0";
+      sha256  = "1pdzzrg4qrsjiv67yr2g6a9l1n9vqi5n4m53kbb1fp04g3s2sw31";
+    };
+  terraform =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-terraform";
+      version = "1.0.2";
+      sha256  = "1aj6g6l68n9kqmxfjlkwwxnac7fhha6wrmvsw4yylf0qyssww75v";
+    };
+  tfe =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-tfe";
+      version = "0.8.1";
+      sha256  = "0an0il8h0ly639z92cc007xjjs3cyk25jkbnkp99kkj0mf760729";
+    };
+  tls =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-tls";
+      version = "1.2.0";
+      sha256  = "0hvj00j8a820j18yi90xzhd635pkffivp1116d84wyqxya5acd4p";
+    };
+  triton =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-triton";
+      version = "0.5.1";
+      sha256  = "1bn5x6nmhfkrzpxhyfclls85l9qqffvzx1xsgcb3368lhwzarn2f";
+    };
+  ucloud =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ucloud";
+      version = "1.4.0";
+      sha256  = "1nl6k2313wwdzpm2n29bab9xs3l00vyhrdl14r82kax6hjm748qm";
+    };
+  ultradns =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-ultradns";
+      version = "0.1.0";
+      sha256  = "0bq2y6bxdax7qnmq6vxh8pz9sqy1r3m05dv7q5dbv2xvba1b88hj";
+    };
+  vault =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-vault";
+      version = "1.6.0";
+      sha256  = "06hykz37yhwhj6fjz2zi5c80mzv8i91kpsr5cdqkc8rnfmcbhzqx";
+    };
+  vcd =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-vcd";
+      version = "2.1.0";
+      sha256  = "0azmjddysl38n58vk94zhm2g7s5aw71gvn83h4n7amf2j7p7ks9j";
+    };
+  vsphere =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-vsphere";
+      version = "1.10.0";
+      sha256  = "039s95afqrcpf6jiprqsqnvlsnxbs5vcqrsgg6pbs52rlwp1ixgw";
+    };
+  yandex =
+    {
+      owner   = "terraform-providers";
+      repo    = "terraform-provider-yandex";
+      version = "0.2.0";
+      sha256  = "0y7pnl47dg83i7r95gy8h1ayilaji2k5i048l5pkavp1yxx9i22g";
+    };
+  matchbox =
+    {
+      owner   = "coreos";
+      repo    = "terraform-provider-matchbox";
+      version = "0.2.3";
+      sha256  = "12vf8krzx79yrsk3lk2k6vwwk1f18617ky7g2yf60bf2x836lg09";
+    };
+  nixos =
+    {
+      owner   = "tweag";
+      repo    = "terraform-provider-nixos";
+      version = "0.0.1";
+      sha256  = "00vz6qjq1pk39iqg4356b8g3c6slla9jifkv2knk46gc9q93q0lf";
+    };
+  secret =
+    {
+      owner   = "tweag";
+      repo    = "terraform-provider-secret";
+      version = "1.0.0";
+      sha256  = "03q78d0g3b4j4213qjlacj1adh7hjwcqcqrwm8c2r2k5w9kb25k0";
+    };
+  segment =
+    {
+      owner   = "ajbosco";
+      repo    = "terraform-provider-segment";
+      version = "0.2.0";
+      sha256  = "0ic5b9djhnb1bs2bz3zdprgy3r55dng09xgc4d9l9fyp85g2amaz";
+    };
+  ansible =
+    {
+      owner   = "nbering";
+      repo    = "terraform-provider-ansible";
+      version = "0.0.4";
+      sha256  = "125a8vbpnahaxxrxj3mp0kj6ajssxnfb6l0spgnf118wg3bvlmw5";
+    };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix
new file mode 100644
index 000000000000..0922bd7b8a9f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/default.nix
@@ -0,0 +1,30 @@
+{ lib
+, buildGoPackage
+, fetchFromGitHub
+, callPackage
+}:
+let
+  list = import ./data.nix;
+
+  toDrv = data:
+    buildGoPackage rec {
+      inherit (data) owner repo version sha256;
+      name = "${repo}-${version}";
+      goPackagePath = "github.com/${owner}/${repo}";
+      subPackages = [ "." ];
+      src = fetchFromGitHub {
+        inherit owner repo sha256;
+        rev = "v${version}";
+      };
+      
+
+      # Terraform allow checking the provider versions, but this breaks
+      # if the versions are not provided via file paths.
+      postBuild = "mv go/bin/${repo}{,_v${version}}";
+    };
+in
+  {
+    gandi = callPackage ./gandi {};
+    ibm = callPackage ./ibm {};
+    libvirt = callPackage ./libvirt {};
+  } // lib.mapAttrs (n: v: toDrv v) list
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix
new file mode 100644
index 000000000000..291698f3065f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchFromGitHub, buildGoPackage }:
+buildGoPackage rec {
+  name = "terraform-provider-gandi-${version}";
+  version = "1.0.0";
+
+  goPackagePath = "github.com/tiramiseb/terraform-provider-gandi";
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "tiramiseb";
+    repo = "terraform-provider-gandi";
+    rev = "v${version}";
+    sha256 = "0byydpqsimvnk11bh9iz8zlxbsmsk65w55pvkp18vjzqrhf4kyfv";
+  };
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postBuild = "mv go/bin/terraform-provider-gandi{,_v${version}}";
+
+  meta = with stdenv.lib; {
+    description = "Terraform provider for the Gandi LiveDNS service.";
+    homepage = "https://github.com/tiramiseb/terraform-provider-gandi";
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ manveru ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix
new file mode 100644
index 000000000000..3d4a3547502d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/gandi/deps.nix
@@ -0,0 +1,21 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/hashicorp/terraform";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/terraform";
+      rev = "27b720113ed5143a870ec151b3b7c9d955a09bc0";
+      sha256 = "1f0hwdf2z68p0ll3pgrx949h09q52gcfaxap0zz52m7px98sfab4";
+    };
+  }
+  {
+    goPackagePath = "github.com/tiramiseb/go-gandi-livedns";
+    fetch = {
+      type = "git";
+      url = "https://github.com/tiramiseb/go-gandi-livedns";
+      rev = "4773a84f8ee7365ed21edc6cd0602aaf93e94e59";
+      sha256 = "1i8s7yclrkhf974vs2splh5symzk0ym54px0bc216bq4ifzkwkqc";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ibm/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ibm/default.nix
new file mode 100644
index 000000000000..fddf13795f3e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/ibm/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+#
+# USAGE:
+# install the following package globally or in nix-shell:
+#
+#   (terraform.withPlugins ( plugins: [ terraform-provider-ibm ]))
+#
+# examples:
+# https://github.com/IBM-Cloud/terraform-provider-ibm/tree/master/examples
+#
+
+buildGoPackage rec {
+  name = "terraform-provider-ibm-${version}";
+  version = "0.11.1";
+
+  goPackagePath = "github.com/terraform-providers/terraform-provider-ibm";
+  subPackages = [ "./" ];
+
+  src = fetchFromGitHub {
+    owner = "IBM-Cloud";
+    repo = "terraform-provider-ibm";
+    sha256 = "1vp1kzadfkacn6c4illxjra8yki1fx7h77b38fixkcvc79mzasmv";
+    rev = "v${version}";
+  };
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postBuild = "mv go/bin/terraform-provider-ibm{,_v${version}}";
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/IBM-Cloud/terraform-provider-ibm;
+    description = "Terraform provider is used to manage IBM Cloud resources.";
+    platforms = platforms.all;
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ jensbin ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix
new file mode 100644
index 000000000000..96b5c8a0fa1f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/libvirt/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, libvirt, pkgconfig, makeWrapper, cdrtools }:
+
+# USAGE:
+# install the following package globally or in nix-shell:
+#
+#   (terraform.withPlugins (p: [p.libvirt]))
+#
+# configuration.nix:
+#
+#   virtualisation.libvirtd.enable = true;
+#
+# terraform-provider-libvirt does not manage pools at the moment:
+#
+#   $ virsh --connect "qemu:///system" pool-define-as default dir - - - - /var/lib/libvirt/images
+#   $ virsh --connect "qemu:///system" pool-start default
+#
+# pick an example from (i.e ubuntu):
+# https://github.com/dmacvicar/terraform-provider-libvirt/tree/master/examples
+
+buildGoPackage rec {
+  name = "terraform-provider-libvirt-${version}";
+  version = "0.5.1";
+
+  goPackagePath = "github.com/dmacvicar/terraform-provider-libvirt";
+
+  src = fetchFromGitHub {
+    owner = "dmacvicar";
+    repo = "terraform-provider-libvirt";
+    rev = "v${version}";
+    sha256 = "0shnj5byqj3qzyqniiy1dcygd8xw1h2bx9z6mgcydw8k64fkm4bw";
+  };
+
+  buildInputs = [ libvirt pkgconfig makeWrapper ];
+
+  # mkisofs needed to create ISOs holding cloud-init data,
+  # and wrapped to terraform via deecb4c1aab780047d79978c636eeb879dd68630
+  propagatedBuildInputs = [ cdrtools ];
+
+  # Terraform allow checking the provider versions, but this breaks
+  # if the versions are not provided via file paths.
+  postBuild = "mv go/bin/terraform-provider-libvirt{,_v${version}}";
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/dmacvicar/terraform-provider-libvirt;
+    description = "Terraform provider for libvirt";
+    platforms = platforms.linux;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ mic92 ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.txt b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.txt
new file mode 100644
index 000000000000..c5d6fda16514
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/providers.txt
@@ -0,0 +1,25 @@
+# lines starting with a # are comments
+
+# The accepted format (double escape all grep expresssions):
+#  <organisation>         [grep-expression] [grep-v-expression]  - include all repositories in the organisation.
+#                                                                   grep-expression:   filter repo matching the expression
+#                                                                   grep-v-expression: filter repo not matching the expression
+#  <organisation>/<repo>                                         - include only the named repository.
+
+# include all terraform-providers
+terraform-providers terraform-provider- terraform-provider-\\(azure-classic\\|scaffolding\\)
+
+# include terraform-provider-matchbox
+coreos/terraform-provider-matchbox
+
+# include terraform-provider-nixos
+tweag/terraform-provider-nixos
+
+# include terraform-provider-secret
+tweag/terraform-provider-secret
+
+# include terraform-provider-segment
+ajbosco/terraform-provider-segment
+
+# include terraform-provider-ansible
+nbering/terraform-provider-ansible
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all
new file mode 100755
index 000000000000..2009d474db7b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform-providers/update-all
@@ -0,0 +1,143 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i bash -p bash coreutils curl jq nix
+# vim: ft=sh sw=2 et
+#
+# This scripts scans the github terraform-providers repo for new releases,
+# generates the corresponding nix code and finally generates an index of
+# all the providers given in ./providers.txt.
+set -euo pipefail
+
+# the maximum number of attempts before giving up inside of GET and prefetch_github
+readonly maxAttempts=30
+
+GET() {
+  local url=$1
+  local retry=1
+  echo "fetching $url" >&2
+  while ! curl -#fL -u "$GITHUB_AUTH" "$url"; do
+    echo "The curl command has failed. Attempt $retry/${maxAttempts}" >&2
+    if [[ "${retry}" -eq "${maxAttempts}" ]]; then
+      exit 1
+    fi
+    retry=$(( retry + 1 ))
+    sleep 5
+  done
+}
+
+get_org_repos() {
+  local org=$1
+  local page=1
+  GET "https://api.github.com/orgs/$org/repos?per_page=100" | jq -r '.[].name'
+}
+
+get_repo_tags() {
+  local owner=$1
+  local repo=$2
+  GET "https://api.github.com/repos/$owner/$repo/git/refs/tags?per_page=100" | \
+    jq -r '.[].ref' | \
+    grep -v 'v\.' | \
+    cut -d '/' -f 3- | \
+    sort --version-sort
+}
+
+prefetch_github() {
+  local owner=$1
+  local repo=$2
+  local rev=$3
+  local retry=1
+  while ! nix-prefetch-url --unpack "https://github.com/$owner/$repo/archive/$rev.tar.gz"; do
+    echo "The nix-prefetch-url command has failed. Attempt $retry/${maxAttempts}" >&2
+    if [[ "${retry}" -eq "${maxAttempts}" ]]; then
+      exit 1
+    fi
+    retry=$(( retry + 1 ))
+    sleep 5
+  done
+}
+
+echo_entry() {
+  local owner=$1
+  local repo=$2
+  local version=${3:1}
+  local sha256=$4
+  cat <<EOF
+{
+  owner   = "$owner";
+  repo    = "$repo";
+  version = "$version";
+  sha256  = "$sha256";
+};
+EOF
+}
+
+indent() { sed 's/^/    /'; }
+
+add_repo() {
+  org="${1}"
+  repo="${2}"
+
+  echo "*** $repo ***"
+  name=$(echo "$repo" | cut -d - -f 3-)
+  last_tag=$(get_repo_tags "$org" "$repo" | tail -1)
+  last_tag_sha256=$(prefetch_github "$org" "$repo" "$last_tag")
+
+  {
+    echo "  $name ="
+    echo_entry "$org" "$repo" "$last_tag" "$last_tag_sha256" | indent
+  } >> data.nix
+}
+
+## Main ##
+
+cd "$(dirname "$0")"
+
+if [[ -z "${GITHUB_AUTH:-}" ]]; then
+  cat <<'HELP'
+Missing the GITHUB_AUTH env. This is required to work around the 60 request
+per hour rate-limit.
+
+Go to https://github.com/settings/tokens and create a new token with the
+"public_repo" scope.
+
+Then `export GITHUB_AUTH=<your user>:<your token>` and run this script again.
+HELP
+  exit 1
+fi
+
+cat <<HEADER > data.nix
+# Generated with ./update-all
+{
+HEADER
+
+while read line; do
+  IFS=' ' read -r -a fields <<< "$line"
+  if [[ "${#fields[@]}" -eq 0 ]]; then
+    continue
+  fi
+
+  if [[ "${fields[0]}" = *"/"* ]]; then
+    org="$(echo "${fields[0]}" | cut -d/ -f1)"
+    repo="$(echo "${fields[0]}" | cut -d/ -f2)"
+    add_repo "${org}" "${repo}"
+  else
+    org="${fields[0]}"
+    repos=$(get_org_repos "$org")
+    if [[ "${#fields[@]}" -ge 2 ]] && [[ -n "${fields[1]}" ]]; then
+      repos="$( echo "${repos[@]}" | grep "${fields[1]}" )"
+    fi
+    if [[ "${#fields[@]}" -eq 3 ]] && [[ -n "${fields[2]}" ]]; then
+      repos="$( echo "${repos[@]}" | grep -v "${fields[2]}" )"
+    fi
+    repos="$( echo "${repos[@]}" | sort )"
+
+    for repo in $repos; do
+      add_repo "$org" "$repo"
+    done
+  fi
+done < <(grep -v '^#\|^$' providers.txt)
+
+cat <<FOOTER >> data.nix
+}
+FOOTER
+
+echo Done.
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terraform/default.nix
new file mode 100644
index 000000000000..fad4a1d06521
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform/default.nix
@@ -0,0 +1,126 @@
+{ stdenv
+, lib
+, buildEnv
+, buildGoPackage
+, fetchFromGitHub
+, makeWrapper
+, runCommand
+, writeText
+, terraform-providers
+}:
+
+let
+  goPackagePath = "github.com/hashicorp/terraform";
+
+  generic = { version, sha256, ... }@attrs:
+    let attrs' = builtins.removeAttrs attrs ["version" "sha256"]; in
+    buildGoPackage ({
+      name = "terraform-${version}";
+
+      inherit goPackagePath;
+
+      src = fetchFromGitHub {
+        owner  = "hashicorp";
+        repo   = "terraform";
+        rev    = "v${version}";
+        inherit sha256;
+      };
+
+      postInstall = ''
+        # remove all plugins, they are part of the main binary now
+        for i in $bin/bin/*; do
+          if [[ $(basename $i) != terraform ]]; then
+            rm "$i"
+          fi
+        done
+      '';
+
+      preCheck = ''
+        export HOME=$TMP
+      '';
+
+      meta = with stdenv.lib; {
+        description = "Tool for building, changing, and versioning infrastructure";
+        homepage = https://www.terraform.io/;
+        license = licenses.mpl20;
+        maintainers = with maintainers; [ zimbatm peterhoeg kalbasit ];
+      };
+    } // attrs');
+
+  pluggable = terraform:
+    let
+      withPlugins = plugins:
+        let
+          actualPlugins = plugins terraform.plugins;
+
+          # Wrap PATH of plugins propagatedBuildInputs, plugins may have runtime dependencies on external binaries
+          wrapperInputs = lib.unique (lib.flatten (lib.catAttrs "propagatedBuildInputs" (builtins.filter (x: x != null) actualPlugins)));
+
+          passthru = {
+            withPlugins = newplugins: withPlugins (x: newplugins x ++ actualPlugins);
+            full = withPlugins lib.attrValues;
+
+            # Ouch
+            overrideDerivation = f: (pluggable (terraform.overrideDerivation f)).withPlugins plugins;
+            overrideAttrs = f: (pluggable (terraform.overrideAttrs f)).withPlugins plugins;
+            override = x: (pluggable (terraform.override x)).withPlugins plugins;
+          };
+        in
+          # Don't bother wrapping unless we actually have plugins, since the wrapper will stop automatic downloading
+          # of plugins, which might be counterintuitive if someone just wants a vanilla Terraform.
+          if actualPlugins == []
+            then terraform.overrideAttrs (orig: { passthru = orig.passthru // passthru; })
+            else lib.appendToName "with-plugins"(stdenv.mkDerivation {
+              inherit (terraform) name;
+              buildInputs = [ makeWrapper ];
+
+              buildCommand = ''
+                mkdir -p $out/bin/
+                makeWrapper "${terraform.bin}/bin/terraform" "$out/bin/terraform" \
+                  --set NIX_TERRAFORM_PLUGIN_DIR "${buildEnv { name = "tf-plugin-env"; paths = actualPlugins; }}/bin" \
+                  --prefix PATH : "${lib.makeBinPath wrapperInputs}"
+              '';
+
+              inherit passthru;
+            });
+    in withPlugins (_: []);
+
+  plugins = removeAttrs terraform-providers ["override" "overrideDerivation" "recurseForDerivations"];
+in rec {
+  terraform_0_11 = pluggable (generic {
+    version = "0.11.13";
+    sha256 = "014d2ibmbp5yc1802ckdcpwqbm5v70xmjdyh5nadn02dfynaylna";
+    patches = [ ./provider-path.patch ];
+    passthru = { inherit plugins; };
+  });
+
+  terraform_0_11-full = terraform_0_11.full;
+
+  terraform_0_12 = pluggable (generic {
+    version = "0.12.0-beta1";
+    sha256 = "0djakf2agbhpfqis4x0lf2i8s1ahvrdyfkcgr6lzp0nsks652rcm";
+    patches = [ ./provider-path.patch ];
+    passthru = { inherit plugins; };
+  });
+
+  # Tests that the plugins are being used. Terraform looks at the specific
+  # file pattern and if the plugin is not found it will try to download it
+  # from the Internet. With sandboxing enable this test will fail if that is
+  # the case.
+  terraform_plugins_test = let
+    mainTf = writeText "main.tf" ''
+      resource "random_id" "test" {}
+    '';
+    terraform = terraform_0_11.withPlugins (p: [ p.random ]);
+    test = runCommand "terraform-plugin-test" { buildInputs = [terraform]; }
+      ''
+        set -e
+        # make it fail outside of sandbox
+        export HTTP_PROXY=http://127.0.0.1:0 HTTPS_PROXY=https://127.0.0.1:0
+        cp ${mainTf} main.tf
+        terraform init
+        touch $out
+      '';
+  in test;
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terraform/provider-path.patch b/nixpkgs/pkgs/applications/networking/cluster/terraform/provider-path.patch
new file mode 100644
index 000000000000..39a69e4a389f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terraform/provider-path.patch
@@ -0,0 +1,16 @@
+diff --git a/command/init.go b/command/init.go
+index 403ca245b..05d98329a 100644
+--- a/command/init.go
++++ b/command/init.go
+@@ -64,6 +64,11 @@ func (c *InitCommand) Run(args []string) int {
+ 		return 1
+ 	}
+ 
++	val, ok := os.LookupEnv("NIX_TERRAFORM_PLUGIN_DIR")
++	if ok {
++		flagPluginPath = append(flagPluginPath, val)
++	}
++
+ 	if len(flagPluginPath) > 0 {
+ 		c.pluginPath = flagPluginPath
+ 		c.getPlugins = false
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix b/nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix
new file mode 100644
index 000000000000..56c30df37c5b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terragrunt/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub, terraform, makeWrapper }:
+
+buildGoPackage rec {
+  name = "terragrunt-${version}";
+  version = "0.17.4";
+
+  goPackagePath = "github.com/gruntwork-io/terragrunt";
+
+  src = fetchFromGitHub {
+    owner  = "gruntwork-io";
+    repo   = "terragrunt";
+    rev    = "v${version}";
+    sha256 = "13hlv0ydmv8gpzgg6bfr7rp89xfw1bkgd0j684armw8zq29cmv3a";
+  };
+
+  goDeps = ./deps.nix;
+
+  buildInputs = [ makeWrapper ];
+
+  preBuild = ''
+    buildFlagsArray+=("-ldflags" "-X main.VERSION=v${version}")
+  '';
+
+  postInstall = ''
+    wrapProgram $bin/bin/terragrunt \
+      --set TERRAGRUNT_TFPATH ${lib.getBin terraform.full}/bin/terraform
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A thin wrapper for Terraform that supports locking for Terraform state and enforces best practices.";
+    homepage = https://github.com/gruntwork-io/terragrunt/;
+    license = licenses.mit;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/cluster/terragrunt/deps.nix b/nixpkgs/pkgs/applications/networking/cluster/terragrunt/deps.nix
new file mode 100644
index 000000000000..8432a8366b7a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/cluster/terragrunt/deps.nix
@@ -0,0 +1,129 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/aws/aws-sdk-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/aws/aws-sdk-go";
+      rev = "25253087ea42da08900c4c1fc34c04bdb4a97d5a";
+      sha256 = "0p6mf53f4l9b26yc4qlm1s7yls73hsw8klyfhmnxhk2mq8k6ix4m";
+    };
+  }
+  {
+    goPackagePath = "github.com/bgentry/go-netrc";
+    fetch = {
+      type = "git";
+      url = "https://github.com/bgentry/go-netrc";
+      rev = "9fd32a8b3d3d3f9d43c341bfe098430e07609480";
+      sha256 = "0dn2h8avgavqdzdqnph8bkhj35bx0wssczry1zdczr22xv650g1l";
+    };
+  }
+  {
+    goPackagePath = "github.com/go-errors/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-errors/errors";
+      rev = "a6af135bd4e28680facf08a3d206b454abc877a4";
+      sha256 = "0rznpknk19rxkr7li6dqs52c26pjazp69lh493l4ny4sxn5922lp";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-cleanhttp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-cleanhttp";
+      rev = "d5fe4b57a186c716b0e00b8c301cbd9b4182694d";
+      sha256 = "1m20y90syky4xr81sm3980jpil81nnpzmi6kv0vjr6p584gl1hn8";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-getter";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-getter";
+      rev = "64040d90d4ab861e7e833d689dc76a0f176d8dec";
+      sha256 = "0g25nx42z6ykd7jqzlrxf161h8lqrpxpddmbspl4w3a84wphhgms";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/go-version";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/go-version";
+      rev = "23480c0665776210b5fbbac6eaaee40e3e6a96b7";
+      sha256 = "056zs67diq3m7skmmq3pnz6wymfcg55dfs5zf86xkfqqpj10kyf7";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev = "f40e974e75af4e271d97ce0fc917af5898ae7bda";
+      sha256 = "1w5w3m40xv85gngw8g1kjbcgah1vl4ardbpg2cxgj1svf80zazxx";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-zglob";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-zglob";
+      rev = "4959821b481786922ac53e7ef25c61ae19fb7c36";
+      sha256 = "0rwkdw143kphpmingsrw1zp030zf3p08f64h347jpdm4lz8z5449";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "b8bc1bf767474819792c23f32d8286a45736f1c6";
+      sha256 = "13ry4lylalkh4g2vny9cxwvryslzyzwp9r92z0b10idhdq3wad1q";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/go-testing-interface";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-testing-interface";
+      rev = "a61a99592b77c9ba629d254a693acffaeb4b7e28";
+      sha256 = "139hq835jpgk9pjg94br9d08nka8bfm7zyw92zxlwrkska4pgigx";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "00c29f56e2386353d58c599509e8dc3801b0d716";
+      sha256 = "1vw8fvhax0d567amgvxr7glcl12lvzg2sbzs007q5k5bbwn1szyb";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "c679ae2cc0cb27ec3293fea7e254e47386f05d69";
+      sha256 = "1rrdn7k83j492rzhqwkh6956sj8m2nbk44d7r1xa9nsn3hfwj691";
+    };
+  }
+  {
+    goPackagePath = "github.com/ulikunitz/xz";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ulikunitz/xz";
+      rev = "0c6b41e72360850ca4f98dc341fd999726ea007f";
+      sha256 = "0a6l7sp67ipxim093qh6fvw8knbxj24l7bj5lykcddi5gwfi78n3";
+    };
+  }
+  {
+    goPackagePath = "github.com/urfave/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/cli";
+      rev = "8e01ec4cd3e2d84ab2fe90d8210528ffbb06d8ff";
+      sha256 = "0cpr10n4ps3gcdbcink71ry9hzhdb5rrcysmylybs8h2lzxqgc1i";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/compactor/default.nix b/nixpkgs/pkgs/applications/networking/compactor/default.nix
new file mode 100644
index 000000000000..48f85c80e0eb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/compactor/default.nix
@@ -0,0 +1,52 @@
+{ autoconf, automake, boost, cbor-diag, cddl, fetchFromGitHub, file, libpcap, libtins, libtool, lzma, openssl, pkgconfig, stdenv, tcpdump, wireshark-cli }:
+
+stdenv.mkDerivation rec {
+  name = "compactor-${version}";
+  version = "0.11.1";
+
+  src = fetchFromGitHub {
+    owner = "dns-stats";
+    repo = "compactor";
+    rev = "${version}";
+    sha256 = "0bd82956nkpdmfj8f05z37hy7f33cd2nfdxr7s9fgz1xi5flnzjc";
+  };
+
+  # cbor-diag, cddl and wireshark-cli are only used for tests.
+  nativeBuildInputs = [ autoconf automake libtool pkgconfig cbor-diag cddl wireshark-cli ];
+  buildInputs = [
+    boost
+    libpcap
+    openssl
+    libtins
+    lzma
+  ];
+
+  patchPhase = ''
+    patchShebangs test-scripts/
+  '';
+
+  preConfigure = ''
+    sh autogen.sh
+    substituteInPlace configure \
+      --replace "/usr/bin/file" "${file}/bin/file"
+  '';
+  CXXFLAGS = "-std=c++11";
+  configureFlags = [
+    "--with-boost-libdir=${boost.out}/lib"
+    "--with-boost=${boost.dev}"
+  ];
+
+  doCheck = true;
+  preCheck = ''
+    substituteInPlace test-scripts/check-live-pcap.sh \
+      --replace "/usr/sbin/tcpdump" "${tcpdump}/bin/tcpdump"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Tools to capture DNS traffic and record it in C-DNS files";
+    homepage    = http://dns-stats.org/;
+    license     = [ licenses.boost licenses.mpl20 licenses.openssl ];
+    maintainers = with maintainers; [ fdns ];
+    platforms   = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/corebird/default.nix b/nixpkgs/pkgs/applications/networking/corebird/default.nix
new file mode 100644
index 000000000000..1ee2c694e0b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/corebird/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchFromGitHub, glib, gtk3, json-glib, sqlite, libsoup, gettext, vala_0_40
+, meson, ninja, pkgconfig, gnome3, gst_all_1, wrapGAppsHook, gobject-introspection
+, glib-networking, python3 }:
+
+stdenv.mkDerivation rec {
+  version = "1.7.4";
+  name = "corebird-${version}";
+
+  src = fetchFromGitHub {
+    owner = "baedert";
+    repo = "corebird";
+    rev = version;
+    sha256 = "0qjffsmg1hm64dgsbkfwzbzy9q4xa1q4fh4h8ni8a2b1p3h80x7n";
+  };
+
+  nativeBuildInputs = [
+    meson ninja vala_0_40 pkgconfig wrapGAppsHook python3
+    gobject-introspection # for setup hook
+  ];
+
+  buildInputs = [
+    glib gtk3 json-glib sqlite libsoup gettext gnome3.dconf gnome3.gspell glib-networking
+  ] ++ (with gst_all_1; [ gstreamer gst-plugins-base gst-plugins-bad (gst-plugins-good.override { gtkSupport = true; }) gst-libav ]);
+
+  postPatch = ''
+    chmod +x data/meson_post_install.py # patchShebangs requires executable file
+    patchShebangs data/meson_post_install.py
+  '';
+
+  meta = {
+    description = "Native Gtk+ Twitter client for the Linux desktop";
+    longDescription = "Corebird is a modern, easy and fun Twitter client.";
+    homepage = https://corebird.baedert.org/;
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.jonafato ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/davmail/default.nix b/nixpkgs/pkgs/applications/networking/davmail/default.nix
new file mode 100644
index 000000000000..589cd04057ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/davmail/default.nix
@@ -0,0 +1,30 @@
+{ fetchurl, stdenv, jre, glib, libXtst, gtk2, makeWrapper, unzip }:
+
+stdenv.mkDerivation rec {
+  pname = "davmail";
+  version = "5.2.0";
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${version}/${pname}-${version}-2961.zip";
+    sha256 = "0jw6sjg7k7zg8ab0srz6cjjj5hnw5ppxx1w35sw055dlg54fh2m5";
+  };
+
+  sourceRoot = ".";
+
+  nativeBuildInputs = [ makeWrapper unzip ];
+
+  installPhase = ''
+    mkdir -p $out/share/davmail
+    cp -vR ./* $out/share/davmail
+    makeWrapper $out/share/davmail/davmail $out/bin/davmail \
+      --prefix PATH : ${jre}/bin \
+      --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ glib gtk2 libXtst ]}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://davmail.sourceforge.net/;
+    description = "A Java application which presents a Microsoft Exchange server as local CALDAV, IMAP and SMTP servers";
+    maintainers = [ maintainers.hinton ];
+    platforms = platforms.all;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/drive/default.nix b/nixpkgs/pkgs/applications/networking/drive/default.nix
new file mode 100644
index 000000000000..34ebc84cea28
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/drive/default.nix
@@ -0,0 +1,25 @@
+{ lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "drive-${version}";
+  version = "0.3.8.1";
+
+  goPackagePath = "github.com/odeke-em/drive";
+  subPackages = [ "cmd/drive" ];
+
+  src = fetchFromGitHub {
+    owner = "odeke-em";
+    repo = "drive";
+    rev = "v${version}";
+    sha256 = "1b9cgc148rg5irg4jas10zv9i2km75x1zin25hld340dmpjcpi82";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    homepage = https://github.com/odeke-em/drive;
+    description = "Google Drive client for the commandline";
+    license = licenses.asl20;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/drive/deps.nix b/nixpkgs/pkgs/applications/networking/drive/deps.nix
new file mode 100644
index 000000000000..ca132288bd69
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/drive/deps.nix
@@ -0,0 +1,192 @@
+# This file was generated by go2nix.
+[
+  {
+    goPackagePath = "cloud.google.com/go";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/gocloud";
+      rev = "7450882a75c8d2600748666d1ed16e0a5afa532d";
+      sha256 = "1hl2lsf9m1imdszf5mww4h6qrcjfdjghwh6l2kqsy85d32vbkjgd";
+    };
+  }
+  {
+    goPackagePath = "github.com/boltdb/bolt";
+    fetch = {
+      type = "git";
+      url = "https://github.com/boltdb/bolt";
+      rev = "074dffcc83e9f421e261526d297cd93f22a34080";
+      sha256 = "1kkmsby74n9czqx4mvng9x1cvnm4qgjl3dp6b4mfmg2b00fwbqnv";
+    };
+  }
+  {
+    goPackagePath = "github.com/cheggaaa/pb";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cheggaaa/pb";
+      rev = "ad4efe000aa550bb54918c06ebbadc0ff17687b9";
+      sha256 = "0w6dl2s0vzb64q85yfy1hd5z2fq2vzwygiwl65is6hwa4vkc7hi3";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "66b8e73f3f5cda9f96b69efd03dd3d7fc4a5cdb8";
+      sha256 = "17lf13ndnai9a6dlmykqkdyzf1z04q7kffs0l7kvd78wpv3l6rm5";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/cache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/cache";
+      rev = "baf8e436bc97557118cb0bf118ab8ac6aeeda381";
+      sha256 = "00nvrnp40w4m1ld89k3s3gwi9qcfjxwi8hnp62zggnvqqyc4fyz1";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/cli-spinner";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/cli-spinner";
+      rev = "610063bb4aeef25f7645b3e6080456655ec0fb33";
+      sha256 = "13wzs2qrxd72ah32ym0ppswhvyimjw5cqaq3q153y68vlvxd048c";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/command";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/command";
+      rev = "91ca5ec5e9a1bc2668b1ccbe0967e04a349e3561";
+      sha256 = "1ghckzr8h99ckagpmb15p61xazdjmf9mjmlym634hsr9vcj84v62";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/exponential-backoff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/exponential-backoff";
+      rev = "96e25d36ae36ad09ac02cbfe653b44c4043a8e09";
+      sha256 = "1as21p2jj8xpahvdxqwsw2i1s3fll14dlc9j192iq7xl1ybwpqs6";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/extractor";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/extractor";
+      rev = "801861aedb854c7ac5e1329e9713023e9dc2b4d4";
+      sha256 = "036zmnqxy48h6mxiwywgxix2p4fqvl4svlmcp734ri2rbq3cmxs1";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/go-utils";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/go-utils";
+      rev = "d915395a7a46a9fe73d93f4daeff5953eeac5ef2";
+      sha256 = "0c1z4vmz69vxak8ldw4qjcgwia5ph969gj80az7a3824gia7zhbh";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/go-uuid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/go-uuid";
+      rev = "b211d769a9aaba5b2b8bdbab5de3c227116f3c39";
+      sha256 = "086l4xmwkjl5qcylcb5iwy9ksk9k5g43xwfbkcgvmhpz5mq3wmz2";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/log";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/log";
+      rev = "cad53c4565a0b0304577bd13f3862350bdc5f907";
+      sha256 = "059c933qjikxlvaywzpzljqnab19svymbv6x32pc7khw156fh48w";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/meddler";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/meddler";
+      rev = "d2b51d2b40e786ab5f810d85e65b96404cf33570";
+      sha256 = "0m0fqrn3kxy4swyk4ja1y42dn1i35rq9j85y11wb222qppy2342x";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/pretty-words";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/pretty-words";
+      rev = "9d37a7fcb4ae6f94b288d371938482994458cecb";
+      sha256 = "1466wjhrg9lhqmzil1vf8qj16fxk32b5kxlcccyw2x6dybqa6pkl";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/semalim";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/semalim";
+      rev = "9c88bf5f9156ed06ec5110a705d41b8580fd96f7";
+      sha256 = "0nq93dcl84cmlvg31rdk281ndlc2452zlh5s7i40hasi0z0kmn1k";
+    };
+  }
+  {
+    goPackagePath = "github.com/odeke-em/statos";
+    fetch = {
+      type = "git";
+      url = "https://github.com/odeke-em/statos";
+      rev = "6f7e4db337bc11fc46d9b0456a93836cbbfe5141";
+      sha256 = "1lijz3cxqxd78sl0nzfgvs675dg7q99jqwvhgisnk9n84ic4ffzj";
+    };
+  }
+  {
+    goPackagePath = "github.com/skratchdot/open-golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/skratchdot/open-golang";
+      rev = "75fb7ed4208cf72d323d7d02fd1a5964a7a9073c";
+      sha256 = "1b67imqbsdvg19vif1q1dfmapxy3v2anagacbql95fwnnw0v8jga";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "5dc8cb4b8a8eb076cbb5a06bc3b8682c15bdbbd3";
+      sha256 = "18c1vpqlj10z1id66hglgnv51d9gwphgsdvxgghc6mcm01f1g5xj";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "6acef71eb69611914f7a30939ea9f6e194c78172";
+      sha256 = "1fcsv50sbq0lpzrhx3m9jw51wa255fsbqjwsx9iszq4d0gysnnvc";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/oauth2";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/oauth2";
+      rev = "1e695b1c8febf17aad3bfa7bf0a819ef94b98ad5";
+      sha256 = "1sfgrc63jwslczkld7bsfipw1jm1rn06228dx0vc5gggd52155ys";
+    };
+  }
+  {
+    goPackagePath = "google.golang.org/api";
+    fetch = {
+      type = "git";
+      url = "https://code.googlesource.com/google-api-go-client";
+      rev = "eb84d1a029af1654777e7ba65c979085305c3e38";
+      sha256 = "0ldmzcx5lxa81lcr39djcvyhd0ls11jlswj5877rinq3505ayf5l";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/droopy/default.nix b/nixpkgs/pkgs/applications/networking/droopy/default.nix
new file mode 100644
index 000000000000..62fe4e2e662e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/droopy/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, fetchFromGitHub, wrapPython }:
+
+with lib;
+
+stdenv.mkDerivation rec {
+  name = "droopy-${version}";
+  version = "20160830";
+
+  src = fetchFromGitHub {
+    owner = "stackp";
+    repo = "Droopy";
+    rev = "7a9c7bc46c4ff8b743755be86a9b29bd1a8ba1d9";
+    sha256 = "03i1arwyj9qpfyyvccl21lbpz3rnnp1hsadvc0b23nh1z2ng9sff";
+  };
+
+  nativeBuildInputs = [ wrapPython ];
+
+  installPhase = ''
+    install -vD droopy $out/bin/droopy
+    install -vD -m 644 man/droopy.1 $out/share/man/man1/droopy.1
+    wrapPythonPrograms
+  '';
+
+  meta = {
+    description = "Mini Web server that let others upload files to your computer";
+    homepage = http://stackp.online.fr/droopy;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.Profpatsch ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/dropbox/cli.nix b/nixpkgs/pkgs/applications/networking/dropbox/cli.nix
new file mode 100644
index 000000000000..f09f685ea739
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/dropbox/cli.nix
@@ -0,0 +1,42 @@
+{ stdenv, pkgconfig, fetchurl, python, dropbox }:
+let
+  version = "2019.02.14";
+  dropboxd = "${dropbox}/bin/dropbox";
+in
+stdenv.mkDerivation {
+  name = "dropbox-cli-${version}";
+
+  src = fetchurl {
+    url = "https://linux.dropboxstatic.com/packages/nautilus-dropbox-${version}.tar.bz2";
+    sha256 = "09yg7q45sycl88l3wq0byz4a9k6sxx3m0r3szinvisfay9wlj35f";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ python ];
+
+  phases = "unpackPhase installPhase";
+
+  installPhase = ''
+    mkdir -p "$out/bin/" "$out/share/applications"
+    cp data/dropbox.desktop "$out/share/applications"
+    cp -a data/icons "$out/share/icons"
+    find "$out/share/icons" -type f \! -name '*.png' -delete
+    substitute "dropbox.in" "$out/bin/dropbox" \
+      --replace '@PACKAGE_VERSION@' ${version} \
+      --replace '@DESKTOP_FILE_DIR@' "$out/share/applications" \
+      --replace '@IMAGEDATA16@' '"too-lazy-to-fix"' \
+      --replace '@IMAGEDATA64@' '"too-lazy-to-fix"'
+    sed -i 's:db_path = .*:db_path = "${dropboxd}":' $out/bin/dropbox
+    chmod +x "$out/bin/"*
+    patchShebangs "$out/bin"
+  '';
+
+  meta = {
+    homepage = http://dropbox.com;
+    description = "Command line client for the dropbox daemon";
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = with stdenv.lib.maintainers; [ the-kenny ];
+    # NOTE: Dropbox itself only works on linux, so this is ok.
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/dropbox/default.nix b/nixpkgs/pkgs/applications/networking/dropbox/default.nix
new file mode 100644
index 000000000000..ce3141f0ef3a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/dropbox/default.nix
@@ -0,0 +1,85 @@
+{ stdenv, lib, buildFHSUserEnv, writeScript, makeDesktopItem }:
+
+let platforms = [ "i686-linux" "x86_64-linux" ]; in
+
+assert lib.elem stdenv.hostPlatform.system platforms;
+
+# Dropbox client to bootstrap installation.
+# The client is self-updating, so the actual version may be newer.
+let
+  version = "63.4.107";
+
+  arch = {
+    "x86_64-linux" = "x86_64";
+    "i686-linux"   = "x86";
+  }.${stdenv.hostPlatform.system};
+
+  installer = "https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.${arch}-${version}.tar.gz";
+in
+
+let
+  desktopItem = makeDesktopItem {
+    name = "dropbox";
+    exec = "dropbox";
+    comment = "Sync your files across computers and to the web";
+    desktopName = "Dropbox";
+    genericName = "File Synchronizer";
+    categories = "Network;FileTransfer;";
+    startupNotify = "false";
+  };
+in
+
+buildFHSUserEnv {
+  name = "dropbox";
+
+  targetPkgs = pkgs: with pkgs; with xorg; [
+    libICE libSM libX11 libXcomposite libXdamage libXext libXfixes libXrender
+    libXxf86vm libxcb xkeyboardconfig
+    curl dbus firefox-bin fontconfig freetype gcc glib gnutar libxml2 libxslt
+    procps zlib mesa libxshmfence libpthreadstubs
+  ];
+
+  extraInstallCommands = ''
+    mkdir -p "$out/share/applications"
+    cp "${desktopItem}/share/applications/"* $out/share/applications
+  '';
+
+  runScript = writeScript "install-and-start-dropbox" ''
+    export BROWSER=firefox
+
+    set -e
+
+    do_install=
+    if ! [ -d "$HOME/.dropbox-dist" ]; then
+        do_install=1
+    else
+        installed_version=$(cat "$HOME/.dropbox-dist/VERSION")
+        latest_version=$(printf "${version}\n$installed_version\n" | sort -rV | head -n 1)
+        if [ "x$installed_version" != "x$latest_version" ]; then
+            do_install=1
+        fi
+    fi
+
+    if [ -n "$do_install" ]; then
+        installer=$(mktemp)
+        # Dropbox is not installed.
+        # Download and unpack the client. If a newer version is available,
+        # the client will update itself when run.
+        curl '${installer}' >"$installer"
+        pkill dropbox || true
+        rm -fr "$HOME/.dropbox-dist"
+        tar -C "$HOME" -x -z -f "$installer"
+        rm "$installer"
+    fi
+
+    exec "$HOME/.dropbox-dist/dropboxd" "$@"
+  '';
+
+  meta = with lib; {
+    description = "Online stored folders (daemon version)";
+    homepage    = http://www.dropbox.com/;
+    license     = licenses.unfree;
+    maintainers = with maintainers; [ ttuegel ];
+    platforms   = [ "i686-linux" "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/dyndns/cfdyndns/default.nix b/nixpkgs/pkgs/applications/networking/dyndns/cfdyndns/default.nix
new file mode 100644
index 000000000000..d1eeaa48bb7b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/dyndns/cfdyndns/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, rustPlatform, makeWrapper, openssl }:
+
+with rustPlatform;
+
+buildRustPackage rec {
+  name = "cfdyndns-${version}";
+  version = "0.0.1";
+  src = fetchFromGitHub {
+    owner = "colemickens";
+    repo = "cfdyndns";
+    rev = "v${version}";
+    sha256 = "1mcdjykrgh0jq6k6y664lai8sbgzk6j7k0r944f43vg63d1jql5b";
+  };
+
+  cargoSha256 = "0k9d6pxsb4gvkqs00g71c1nnz773iccg4vajgn33qdym6m6qsjwy";
+
+  buildInputs = [ makeWrapper openssl ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -p target/release/cfdyndns $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "CloudFlare Dynamic DNS Client";
+    homepage = https://github.com/colemickens/cfdyndns;
+    license = stdenv.lib.licenses.mit;
+    maintainers = with maintainers; [ colemickens ];
+    platforms = with platforms; linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/enhanced-ctorrent/default.nix b/nixpkgs/pkgs/applications/networking/enhanced-ctorrent/default.nix
new file mode 100644
index 000000000000..bb3ab98d1a4c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/enhanced-ctorrent/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  version = "3.3.2";
+  pname = "enhanced-ctorrent-dhn";
+
+  src = fetchurl {
+    url = "http://www.rahul.net/dholmes/ctorrent/ctorrent-dnh3.3.2.tar.gz";
+    sha256 = "0qs8waqwllk56i3yy3zhncy7nsnhmf09a494p5siz4vm2k4ncwy8";
+  };
+
+  # These patches come from Debian and fix CVE-2009-1759.
+  patches = [
+    (fetchpatch {
+      url = "https://sources.debian.org/data/main/c/ctorrent/1.3.4.dnh3.3.2-5/debian/patches/cve-security-fix.diff";
+      sha256 = "1qkzzm8sfspbcs10azmmif4qcr7pr8r38dsa2py84lsjm1yi3kls";
+    })
+    (fetchpatch {
+      url = "https://sources.debian.org/data/main/c/ctorrent/1.3.4.dnh3.3.2-5/debian/patches/FTBFS-fix.diff";
+      sha256 = "1m3zh96xwqjjzsbg62f7kx0miams58nys1f484qhdn870b5x9p06";
+    })
+  ];
+
+  meta = {
+    description = "BitTorrent client written in C++";
+    longDescription = ''
+      CTorrent, a BitTorrent client implemented in C++, with bugfixes and
+      performance enhancements.
+    '';
+    homepage = http://www.rahul.net/dholmes/ctorrent/;
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/errbot/default.nix b/nixpkgs/pkgs/applications/networking/errbot/default.nix
new file mode 100644
index 000000000000..f89b8206dbe6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/errbot/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pythonPackages, glibcLocales }:
+
+pythonPackages.buildPythonApplication rec {
+  name = "errbot-${version}";
+  version = "5.2.0";
+
+  src = fetchurl {
+    url = "mirror://pypi/e/errbot/${name}.tar.gz";
+    sha256 = "0q5fg113s3gnym38d4y5mlnxw6vrm388zw5mlapf7b2zgx34r053";
+  };
+
+  disabled = !pythonPackages.isPy3k;
+
+  LC_ALL = "en_US.utf8";
+
+  postPatch = ''
+    substituteInPlace setup.py \
+      --replace dnspython3 dnspython \
+      --replace 'cryptography<2.1.0' cryptography \
+      --replace 'pyOpenSSL<17.3.0' pyOpenSSL
+  '';
+
+  # tests folder is not included in release
+  doCheck = false;
+
+  buildInputs = [ glibcLocales ];
+  propagatedBuildInputs = with pythonPackages; [
+    webtest bottle threadpool rocket-errbot requests jinja2
+    pyopenssl colorlog Yapsy markdown ansi pygments dnspython pep8
+    daemonize pygments-markdown-lexer telegram irc slackclient
+    sleekxmpp hypchat pytest
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Chatbot designed to be simple to extend with plugins written in Python";
+    homepage = http://errbot.io/;
+    maintainers = with maintainers; [ fpletz globin ];
+    license = licenses.gpl3;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/esniper/default.nix b/nixpkgs/pkgs/applications/networking/esniper/default.nix
new file mode 100644
index 000000000000..87e0584c931e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/esniper/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, openssl, curl, coreutils, gawk, bash, which }:
+
+stdenv.mkDerivation rec {
+  name = "esniper-2.35.0";
+
+   src = fetchurl {
+     url    = "mirror://sourceforge/esniper/${stdenv.lib.replaceStrings ["."] ["-"] name}.tgz";
+     sha256 = "04iwjb42lw90c03125bjdpnm0fp78dmwf2j35r7mah0nwcrlagd9";
+   };
+
+  buildInputs = [ openssl curl ];
+
+  # Add support for CURL_CA_BUNDLE variable.
+  # Fix <https://sourceforge.net/p/esniper/bugs/648/>.
+  patches = [ ./find-ca-bundle.patch ];
+
+  postInstall = ''
+    sed <"frontends/snipe" >"$out/bin/snipe" \
+      -e "2i export PATH=\"$out/bin:${stdenv.lib.makeBinPath [ coreutils gawk bash which ]}:\$PATH\""
+    chmod 555 "$out/bin/snipe"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple, lightweight tool for sniping eBay auctions";
+    homepage    = http://esniper.sourceforge.net;
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ lovek323 peti ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/esniper/find-ca-bundle.patch b/nixpkgs/pkgs/applications/networking/esniper/find-ca-bundle.patch
new file mode 100644
index 000000000000..e4df272a0c9a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/esniper/find-ca-bundle.patch
@@ -0,0 +1,26 @@
+diff -ubr '--exclude=*.o' esniper-2-27-0-orig/http.c esniper-2-27-0-patched/http.c
+--- esniper-2-27-0-orig/http.c	2012-02-06 22:04:06.000000000 +0100
++++ esniper-2-27-0-patched/http.c	2012-07-27 10:54:20.893054646 +0200
+@@ -200,6 +200,9 @@
+ int
+ initCurlStuff(void)
+ {
++	/* Path to OpenSSL bundle file. */
++	const char *ssl_capath=NULL;
++
+ 	/* list for custom headers */
+ 	struct curl_slist *slist=NULL;
+ 
+@@ -241,6 +244,12 @@
+ 	if ((curlrc = curl_easy_setopt(easyhandle, CURLOPT_COOKIEFILE, "")))
+ 		return initCurlStuffFailed();
+ 
++	/* If the environment variable CURL_CA_BUNDLE is set, pass through its
++	 * contents to curl. */
++	if ((ssl_capath = getenv("CURL_CA_BUNDLE")))
++		if ((curlrc = curl_easy_setopt(easyhandle, CURLOPT_CAINFO, ssl_capath)))
++			return initCurlStuffFailed();
++
+ 	slist = curl_slist_append(slist, "Accept: text/*");
+ 	slist = curl_slist_append(slist, "Accept-Language: en");
+ 	slist = curl_slist_append(slist, "Accept-Charset: iso-8859-1,*,utf-8");
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/canto-curses/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/canto-curses/default.nix
new file mode 100644
index 000000000000..36b4732ca2e7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/canto-curses/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, python3Packages, readline, ncurses, canto-daemon }:
+
+python3Packages.buildPythonApplication rec {
+  version = "0.9.9";
+  pname = "canto-curses";
+
+  src = fetchFromGitHub {
+    owner = "themoken";
+    repo = "canto-curses";
+    rev = "v${version}";
+    sha256 = "1vzb9n1j4gxigzll6654ln79lzbrrm6yy0lyazd9kldyl349b8sr";
+  };
+
+  buildInputs = [ readline ncurses canto-daemon ];
+  propagatedBuildInputs = [ canto-daemon ];
+
+  meta = {
+    description = "An ncurses-based console Atom/RSS feed reader";
+    longDescription = ''
+      Canto is an Atom/RSS feed reader for the console that is meant to be
+      quick, concise, and colorful. It's meant to allow you to crank through
+      feeds like you've never cranked before by providing a minimal, yet
+      information packed interface. No navigating menus. No dense blocks of
+      unreadable white text. An interface with almost infinite customization
+      and extensibility using the excellent Python programming language.
+    '';
+    homepage = https://codezen.org/canto-ng/;
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/canto-daemon/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/canto-daemon/default.nix
new file mode 100644
index 000000000000..e700c5634ad6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/canto-daemon/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, python3Packages, }:
+
+python3Packages.buildPythonApplication rec {
+  version = "0.9.7";
+  pname = "canto-daemon";
+
+  src = fetchFromGitHub {
+    owner = "themoken";
+    repo = "canto-next";
+    rev = "v${version}";
+    sha256 = "1si53r8cd4avfc56r315zyrghkppnjd6n125z1agfv59i7hdmk3n";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ feedparser ];
+
+  meta = {
+    description = "Daemon for the canto Atom/RSS feed reader";
+    longDescription = ''
+      Canto is an Atom/RSS feed reader for the console that is meant to be
+      quick, concise, and colorful. It's meant to allow you to crank through
+      feeds like you've never cranked before by providing a minimal, yet
+      information packed interface. No navigating menus. No dense blocks of
+      unreadable white text. An interface with almost infinite customization
+      and extensibility using the excellent Python programming language.
+    '';
+    homepage = https://codezen.org/canto-ng/;
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/feedreader/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/feedreader/default.nix
new file mode 100644
index 000000000000..22b2e2f43c45
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/feedreader/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, fetchpatch, meson, ninja, pkgconfig, vala, gettext, python3
+, appstream-glib, desktop-file-utils, glibcLocales, wrapGAppsHook
+, gtk3, libgee, libpeas, librest, webkitgtk, gsettings-desktop-schemas, hicolor-icon-theme
+, curl, glib, gnome3, gst_all_1, json-glib, libnotify, libsecret, sqlite, gumbo, libxml2
+}:
+
+stdenv.mkDerivation rec {
+  pname = "feedreader";
+  version = "2.8.2";
+
+  src = fetchFromGitHub {
+    owner = "jangernert";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1qm7scrz8xm68zizcfn13ll4ksdd004fahki7gbwqagsr1fg62y8";
+  };
+
+  nativeBuildInputs = [
+    meson ninja pkgconfig vala gettext appstream-glib desktop-file-utils
+    libxml2 python3 wrapGAppsHook
+  ];
+
+  buildInputs = [
+    curl glib json-glib libnotify libsecret sqlite gumbo gtk3
+    libgee libpeas gnome3.libsoup librest webkitgtk gsettings-desktop-schemas
+    gnome3.gnome-online-accounts
+    hicolor-icon-theme # for setup hook
+  ] ++ (with gst_all_1; [
+    gstreamer gst-plugins-base gst-plugins-good
+  ]);
+
+  postPatch = ''
+    patchShebangs meson_post_install.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A modern desktop application designed to complement existing web-based RSS accounts";
+    homepage = https://jangernert.github.io/FeedReader/;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ edwtjo worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/newsboat/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/newsboat/default.nix
new file mode 100644
index 000000000000..8b5f1ce3425c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/newsboat/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, rustPlatform, fetchurl, fetchpatch, stfl, sqlite, curl, gettext, pkgconfig, libxml2, json_c, ncurses
+, asciidoc, docbook_xml_dtd_45, libxslt, docbook_xsl, libiconv, Security, makeWrapper }:
+
+rustPlatform.buildRustPackage rec {
+  name = "newsboat-${version}";
+  version = "2.15";
+
+  src = fetchurl {
+    url = "https://newsboat.org/releases/${version}/${name}.tar.xz";
+    sha256 = "1dqdcp34jmphqf3d8ik0xdhg0s66nd5rky0y8y591nidq29wws6s";
+  };
+
+  cargoSha256 = "05pf020jp20ffmvin6d1g8zbwf1zk03bm1cb99b7iqkk4r54g6dn";
+
+  postPatch = ''
+    substituteInPlace Makefile --replace "|| true" ""
+    # Allow other ncurses versions on Darwin
+    substituteInPlace config.sh \
+      --replace "ncurses5.4" "ncurses"
+  '';
+
+  nativeBuildInputs = [ pkgconfig asciidoc docbook_xml_dtd_45 libxslt docbook_xsl ]
+    ++ stdenv.lib.optional stdenv.isDarwin [ makeWrapper libiconv ];
+
+  buildInputs = [ stfl sqlite curl gettext libxml2 json_c ncurses ]
+    ++ stdenv.lib.optional stdenv.isDarwin Security;
+
+  postBuild = ''
+    make
+  '';
+
+  NIX_CFLAGS_COMPILE = "-Wno-error=sign-compare";
+
+  doCheck = true;
+
+  checkPhase = ''
+    make test
+  '';
+
+  postInstall = ''
+    make prefix="$out" install
+    cp -r contrib $out
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    for prog in $out/bin/*; do
+      wrapProgram "$prog" --prefix DYLD_LIBRARY_PATH : "${stfl}/lib"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage    = https://newsboat.org/;
+    description = "A fork of Newsbeuter, an RSS/Atom feed reader for the text console.";
+    maintainers = with maintainers; [ dotlambda nicknovitski ];
+    license     = licenses.mit;
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/rawdog/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/rawdog/default.nix
new file mode 100644
index 000000000000..6bdaf2ffaf48
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/rawdog/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, python2Packages }:
+
+python2Packages.buildPythonApplication rec {
+  name = "rawdog-${version}";
+  version = "2.23";
+
+  src = fetchurl {
+    url = "https://offog.org/files/${name}.tar.gz";
+    sha256 = "18nyg19mwxyqdnykplkqmzb4n27vvrhvp639zai8f81gg9vdbsjp";
+  };
+
+  propagatedBuildInputs = with python2Packages; [ feedparser ];
+
+  namePrefix = "";
+
+  meta = with stdenv.lib; {
+    homepage = https://offog.org/code/rawdog/;
+    description = "RSS Aggregator Without Delusions Of Grandeur";
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/rss2email/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/rss2email/default.nix
new file mode 100644
index 000000000000..4d17cc8bddd1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/rss2email/default.nix
@@ -0,0 +1,52 @@
+{ pythonPackages, fetchurl, lib, nixosTests }:
+
+with pythonPackages;
+
+buildPythonApplication rec {
+  name = "${pname}-${version}";
+  pname = "rss2email";
+  version = "3.9"; # TODO: on next bump, the manpage will be updated.
+  # Update nixos/modules/services/mail/rss2email.nix to point to it instead of
+  # to the online r2e.1
+
+  propagatedBuildInputs = [ feedparser beautifulsoup4 html2text ];
+
+  src = fetchurl {
+    url = "mirror://pypi/r/rss2email/${name}.tar.gz";
+    sha256 = "02wj9zhmc2ym8ba1i0z9pm1c622z2fj7fxwagnxbvpr1402ahmr5";
+  };
+
+  outputs = [ "out" "man" "doc" ];
+
+  postPatch = ''
+    # sendmail executable is called from PATH instead of sbin by default
+    sed -e 's|/usr/sbin/sendmail|sendmail|' \
+        -i rss2email/config.py
+  '';
+
+  postInstall = ''
+    install -Dm 644 r2e.1 $man/share/man/man1/r2e.1
+    # an alias for better finding the manpage
+    ln -s -T r2e.1 $man/share/man/man1/rss2email.1
+
+    # copy documentation
+    mkdir -p $doc/share/doc/rss2email
+    cp AUTHORS COPYING CHANGELOG README $doc/share/doc/rss2email/
+  '';
+
+  # The tests currently fail, see
+  # https://github.com/rss2email/rss2email/issues/14
+  # postCheck = ''
+  #   env PYTHONPATH=.:$PYTHONPATH python ./test/test.py
+  # '';
+
+  meta = with lib; {
+    description = "A tool that converts RSS/Atom newsfeeds to email.";
+    homepage = https://pypi.python.org/pypi/rss2email;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ jb55 Profpatsch ];
+  };
+  passthru.tests = {
+    smoke-test = nixosTests.rss2email;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/rssguard/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/rssguard/default.nix
new file mode 100644
index 000000000000..297703cde696
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/rssguard/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, qmake, qtwebengine, qttools, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+  pname = "rssguard";
+  version = "3.5.6";
+
+  src = fetchFromGitHub {
+    owner = "martinrotter";
+    repo = pname;
+    rev = version;
+    sha256 = "1pdas7hg3nzykm3qi951fk25c9s6gjb7my82b9xzjn2yd7ks71by";
+  };
+
+  buildInputs =  [ qtwebengine qttools ];
+  nativeBuildInputs = [ qmake wrapGAppsHook ];
+  qmakeFlags = [ "CONFIG+=release" ];
+
+  meta = with stdenv.lib; {
+    description = "Simple RSS/Atom feed reader with online synchronization";
+    longDescription = ''
+      RSS Guard is a simple, light and easy-to-use RSS/ATOM feed aggregator
+      developed using Qt framework and with online feed synchronization support
+      for ownCloud/Nextcloud.
+    '';
+    homepage = https://github.com/martinrotter/rssguard;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jluttine ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/feedreaders/rsstail/default.nix b/nixpkgs/pkgs/applications/networking/feedreaders/rsstail/default.nix
new file mode 100644
index 000000000000..459aee01f43f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/feedreaders/rsstail/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, cppcheck, libmrss }:
+
+stdenv.mkDerivation rec {
+  name = "rsstail-${version}";
+  version = "2.1";
+
+  src = fetchFromGitHub {
+    sha256 = "12p69i3g1fwlw0bds9jqsdmzkid3k5a41w31d227i7vm12wcvjf6";
+    rev = "6f2436185372b3f945a4989406c4b6a934fe8a95";
+    repo = "rsstail";
+    owner = "flok99";
+  };
+
+  buildInputs = [ libmrss ];
+  checkInputs = [ cppcheck ];
+
+  postPatch = ''
+    substituteInPlace Makefile --replace -liconv_hook ""
+  '';
+
+  makeFlags = [ "prefix=$(out)" ];
+  enableParallelBuilding = true;
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    description = "Monitor RSS feeds for new entries";
+    longDescription = ''
+      RSSTail is more or less an RSS reader: it monitors an RSS feed and if it
+      detects a new entry it'll emit only that new entry.
+    '';
+    homepage = http://www.vanheusden.com/rsstail/;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/firehol/default.nix b/nixpkgs/pkgs/applications/networking/firehol/default.nix
new file mode 100644
index 000000000000..335f393bc077
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/firehol/default.nix
@@ -0,0 +1,108 @@
+{ stdenv, lib, fetchFromGitHub, pkgs
+, autoconf, automake, curl, iprange, iproute, ipset, iptables, iputils
+, kmod, nettools, procps, tcpdump, traceroute, utillinux, whois
+
+# If true, just install FireQOS without FireHOL
+, onlyQOS ? false
+}:
+
+stdenv.mkDerivation rec {
+  name = "firehol-${version}";
+  version = "3.1.6";
+
+  src = fetchFromGitHub {
+    owner = "firehol";
+    repo = "firehol";
+    rev = "v${version}";
+    sha256 = "0l7sjpsb300kqv21hawd26a7jszlmafplacpn5lfj64m4yip93fd";
+  };
+
+  patches = [
+    # configure tries to determine if `ping6` or the newer, combined
+    # `ping` is installed by using `ping -6` which would fail.
+    (pkgs.writeText "firehol-ping6.patch"
+      ''
+      --- a/m4/ax_check_ping_ipv6.m4
+      +++ b/m4/ax_check_ping_ipv6.m4
+      @@ -42,16 +42,16 @@ AC_DEFUN([AX_CHECK_PING_IPV6],
+
+           AC_CACHE_CHECK([whether ]PING[ has working -6 option], [ac_cv_ping_6_opt],
+           [
+      -        ac_cv_ping_6_opt=no
+      -        if test -n "$PING"; then
+      -            echo "Trying '$PING -6 -c 1 ::1'" >&AS_MESSAGE_LOG_FD
+      -            $PING -6 -c 1 ::1 > conftest.out 2>&1
+      -            if test "$?" = 0; then
+      -                ac_cv_ping_6_opt=yes
+      -            fi
+      -            cat conftest.out >&AS_MESSAGE_LOG_FD
+      -            rm -f conftest.out
+      -        fi
+      +        ac_cv_ping_6_opt=yes
+      +        #if test -n "$PING"; then
+      +        #    echo "Trying '$PING -6 -c 1 ::1'" >&AS_MESSAGE_LOG_FD
+      +        #    $PING -6 -c 1 ::1 > conftest.out 2>&1
+      +        #    if test "$?" = 0; then
+      +        #        ac_cv_ping_6_opt=yes
+      +        #    fi
+      +        #    cat conftest.out >&AS_MESSAGE_LOG_FD
+      +        #    rm -f conftest.out
+      +        #fi
+           ])
+
+           AS_IF([test "x$ac_cv_ping_6_opt" = "xyes"],[
+      '')
+
+    # put firehol config files in /etc/firehol (not $out/etc/firehol)
+    # to avoid error on startup, see #35114
+    (pkgs.writeText "firehol-sysconfdir.patch"
+      ''
+      --- a/sbin/install.config.in.in
+      +++ b/sbin/install.config.in.in
+      @@ -4 +4 @@
+      -SYSCONFDIR="@sysconfdir_POST@"
+      +SYSCONFDIR="/etc"
+      '')
+
+    # we must quote "$UNAME_CMD", or the dash in /nix/store/...-coreutils-.../bin/uname
+    # will be interpreted as IFS -> error. this might be considered an upstream bug
+    # but only appears when there are dashes in the command path
+    (pkgs.writeText "firehol-uname-command.patch"
+      ''
+      --- a/sbin/firehol
+      +++ b/sbin/firehol
+      @@ -10295,7 +10295,7 @@
+       	kmaj=$1
+       	kmin=$2
+       
+      -	set -- $($UNAME_CMD -r)
+      +	set -- $("$UNAME_CMD" -r)
+       	eval $kmaj=\$1 $kmin=\$2
+       }
+       kernel_maj_min KERNELMAJ KERNELMIN
+      '')
+  ];
+  
+  nativeBuildInputs = [ autoconf automake ];
+  buildInputs = [
+    curl iprange iproute ipset iptables iputils kmod
+    nettools procps tcpdump traceroute utillinux whois
+  ];
+
+  preConfigure = "./autogen.sh";
+  configureFlags = [ "--localstatedir=/var"
+                     "--disable-doc" "--disable-man" ] ++
+                   lib.optional onlyQOS [ "--disable-firehol" ];
+
+  meta = with stdenv.lib; {
+    description = "A firewall for humans";
+    longDescription = ''
+      FireHOL, an iptables stateful packet filtering firewall for humans!
+      FireQOS, a TC based bandwidth shaper for humans!
+    '';
+    homepage = https://firehol.org/;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ geistesk ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/firehol/iprange.nix b/nixpkgs/pkgs/applications/networking/firehol/iprange.nix
new file mode 100644
index 000000000000..bb245928f07c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/firehol/iprange.nix
@@ -0,0 +1,18 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "iprange-${version}";
+  version = "1.0.4";
+
+  src = fetchurl {
+    url = "https://github.com/firehol/iprange/releases/download/v${version}/iprange-${version}.tar.xz";
+    sha256 = "0rymw4ydn09dng34q4g5111706fyppzs2gd5br76frgvfj4x2f71";
+  };
+
+  meta = with stdenv.lib; {
+    description = "manage IP ranges";
+    homepage = https://github.com/firehol/iprange;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ geistesk ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/flent/default.nix b/nixpkgs/pkgs/applications/networking/flent/default.nix
new file mode 100644
index 000000000000..2f97b39da60f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/flent/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub, matplotlib, procps, pyqt5
+, sphinx
+}:
+
+buildPythonApplication rec {
+  pname = "flent";
+  version = "1.2.2";
+  src = fetchFromGitHub {
+    owner = "tohojo";
+    repo = "flent";
+    rev = "v${version}";
+    sha256 = "1llcdakk0nk9xlpjjz7mv4a80yq4sjnbqhaqvyj9m6lbcxgssh2r";
+  };
+
+  buildInputs = [ sphinx ];
+
+  propagatedBuildInputs = [
+    matplotlib
+    procps
+    pyqt5
+  ];
+
+  meta = with stdenv.lib; {
+    description = "The FLExible Network Tester";
+    homepage = https://flent.org;
+    license = licenses.gpl3;
+
+    maintainers = [ maintainers.mmlb ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/flent/http-getter.nix b/nixpkgs/pkgs/applications/networking/flent/http-getter.nix
new file mode 100644
index 000000000000..63c18d6e0929
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/flent/http-getter.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, cmake
+, curl, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "http-getter";
+  version = "unstable-2018-06-06";
+
+  src = fetchFromGitHub {
+    owner = "tohojo";
+    repo = "http-getter";
+    rev = "79bcccce721825a745f089d0c347bbaf2e6e12f4";
+    sha256 = "1zxk52s1h5qx62idil237zdpj8agrry0w1xwkfx05wvv9sw4ld35";
+  };
+
+  buildInputs = [ cmake pkgconfig curl ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/tohojo/http-getter;
+    description = "Simple getter for HTTP URLs using cURL";
+    platforms = platforms.unix;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/flexget/default.nix b/nixpkgs/pkgs/applications/networking/flexget/default.nix
new file mode 100644
index 000000000000..9afc61c3c0c4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/flexget/default.nix
@@ -0,0 +1,67 @@
+{ lib, python3 }:
+
+# Flexget have been a trouble maker in the past,
+# if you see flexget breaking when updating packages, don't worry.
+# The current state is that we have no active maintainers for this package.
+# -- Mic92
+
+let
+  python' = python3.override { inherit packageOverrides; };
+
+  packageOverrides = self: super: {
+    guessit = super.guessit.overridePythonAttrs (old: rec {
+      version = "3.0.3";
+      src = old.src.override {
+        inherit version;
+        sha256 = "1q06b3k31bfb8cxjimpf1rkcrwnc596a9cppjw15minvdangl32r";
+      };
+    });
+  };
+
+in
+
+with python'.pkgs;
+
+buildPythonApplication rec {
+  pname = "FlexGet";
+  version = "2.20.17";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "ed021d8d5c10555dad8dc1cb93c012e17b541fc25fc122b7ca76bb7e53fe82b3";
+  };
+
+  postPatch = ''
+    # remove dependency constraints
+    sed 's/==\([0-9]\.\?\)\+//' -i requirements.txt
+  '';
+
+  # ~400 failures
+  doCheck = false;
+
+  propagatedBuildInputs = [
+    # See https://github.com/Flexget/Flexget/blob/master/requirements.in
+    feedparser sqlalchemy pyyaml
+    beautifulsoup4 html5lib
+    PyRSS2Gen pynzb rpyc jinja2
+    requests dateutil jsonschema
+    pathpy guessit rebulk APScheduler
+    terminaltables colorclass
+    cherrypy flask flask-restful
+    flask-restplus flask-compress
+    flask_login flask-cors
+    pyparsing zxcvbn-python future
+    progressbar
+    # Optional requirements
+    deluge-client
+    # Plugins
+    transmissionrpc
+  ] ++ lib.optional (pythonOlder "3.4") pathlib;
+
+  meta = with lib; {
+    homepage    = https://flexget.com/;
+    description = "Multipurpose automation tool for content like torrents";
+    license     = licenses.mit;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ftp/filezilla/default.nix b/nixpkgs/pkgs/applications/networking/ftp/filezilla/default.nix
new file mode 100644
index 000000000000..49ac1d26dda6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ftp/filezilla/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext
+, pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }:
+
+let version = "3.31.0"; in
+stdenv.mkDerivation {
+  name = "filezilla-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
+    sha256 = "1rfysb8dil35a7bzj2kw0mzzkys39d7yn6ipsbk8l6rkwfvnii8l";
+  };
+
+  configureFlags = [
+    "--disable-manualupdatecheck"
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    dbus gnutls wxGTK30 libidn tinyxml gettext xdg_utils gtk2 sqlite
+    pugixml libfilezilla nettle ];
+
+  meta = with stdenv.lib; {
+    homepage = https://filezilla-project.org/;
+    description = "Graphical FTP, FTPS and SFTP client";
+    license = licenses.gpl2;
+    longDescription = ''
+      FileZilla Client is a free, open source FTP client. It supports
+      FTP, SFTP, and FTPS (FTP over SSL/TLS). The client is available
+      under many platforms, binaries for Windows, Linux and macOS are
+      provided.
+    '';
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ftp/taxi/default.nix b/nixpkgs/pkgs/applications/networking/ftp/taxi/default.nix
new file mode 100644
index 000000000000..25ec5d29613a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ftp/taxi/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub, pantheon, pkgconfig, meson, ninja, python3
+, gtk3, libgee, libsoup, libsecret, gobject-introspection, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "taxi";
+  version = "0.0.1";
+
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "Alecaddd";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "01c552w68576pnsyqbwy3hjhbww6vys3r3s0wxjdiscjqj1aawqg";
+  };
+
+  nativeBuildInputs = [
+    pantheon.vala
+    gobject-introspection
+    meson
+    ninja
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    pantheon.granite
+    libgee
+    gtk3
+    libsecret
+    libsoup
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "The FTP Client that drives you anywhere";
+    homepage    = https://github.com/Alecaddd/taxi;
+    license     = licenses.gpl3Plus;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gdrive/default.nix b/nixpkgs/pkgs/applications/networking/gdrive/default.nix
new file mode 100644
index 000000000000..d5ef1d7beaab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gdrive/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name    = "gdrive-${version}";
+  version = "2.1.0";
+  rev     = "${version}";
+
+  goPackagePath = "github.com/prasmussen/gdrive";
+
+  src = fetchFromGitHub {
+    owner  = "prasmussen";
+    repo   = "gdrive";
+    sha256 = "0ywm4gdmrqzb1a99vg66a641r74p7lglavcpgkm6cc2gdwzjjfg7";
+    inherit rev;
+  };
+
+  meta = with stdenv.lib; {
+    homepage    = https://github.com/prasmussen/gdrive;
+    description = "A command line utility for interacting with Google Drive";
+    platforms   = platforms.unix;
+    license     = licenses.mit;
+    maintainers = [ maintainers.rzetterberg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gmailieer/default.nix b/nixpkgs/pkgs/applications/networking/gmailieer/default.nix
new file mode 100644
index 000000000000..fdd8e004c8b2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gmailieer/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  name = "gmailieer-${version}";
+  version = "0.10";
+
+  src = fetchFromGitHub {
+    owner = "gauteh";
+    repo = "gmailieer";
+    rev = "v${version}";
+    sha256 = "0qv74marzdv99xc2jbzzcwx3b2hm6byjl734h9x42g4mcg5pq9yf";
+  };
+
+  propagatedBuildInputs = with python3Packages; [
+    notmuch
+    oauth2client
+    google_api_python_client
+    tqdm
+  ];
+
+  meta = with stdenv.lib; {
+    description      = "Fast email-fetching and two-way tag synchronization between notmuch and GMail";
+    longDescription  = ''
+      This program can pull email and labels (and changes to labels)
+      from your GMail account and store them locally in a maildir with
+      the labels synchronized with a notmuch database. The changes to
+      tags in the notmuch database may be pushed back remotely to your
+      GMail account.
+    '';
+    homepage         = https://github.com/gauteh/gmailieer;
+    repositories.git = https://github.com/gauteh/gmailieer.git;
+    license          = licenses.gpl3Plus;
+    maintainers      = with maintainers; [ kaiha ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gns3/default.nix b/nixpkgs/pkgs/applications/networking/gns3/default.nix
new file mode 100644
index 000000000000..464722612c7d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gns3/default.nix
@@ -0,0 +1,32 @@
+{ callPackage, stdenv }:
+
+let
+  stableVersion = "2.1.15";
+  previewVersion = "2.2.0a3";
+  addVersion = args:
+    let version = if args.stable then stableVersion else previewVersion;
+        branch = if args.stable then "stable" else "preview";
+    in args // { inherit version branch; };
+  mkGui = args: callPackage (import ./gui.nix (addVersion args)) { };
+  mkServer = args: callPackage (import ./server.nix (addVersion args)) { };
+  guiSrcHash = "116wigkh5kwna00q200yv2wm8dpi4kmsns96iglzwrrl19fk538p";
+  serverSrcHash = "1mqwydxn58v5ddpnsxvf6vgqwhrfm3mwjwf030lv83zmcjhx237q";
+in {
+  guiStable = mkGui {
+    stable = true;
+    sha256Hash = guiSrcHash;
+  };
+  guiPreview = mkGui {
+    stable = false;
+    sha256Hash = "110mghkhanz92p8vfzyh4199mnihb24smxsc44a8v534ds6hww74";
+  };
+
+  serverStable = mkServer {
+    stable = true;
+    sha256Hash = serverSrcHash;
+  };
+  serverPreview = mkServer {
+    stable = false;
+    sha256Hash = "104pvrba7n9gp7mx31xg520cfahcy0vsmbzx23007c50kp0nxc56";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gns3/gui.nix b/nixpkgs/pkgs/applications/networking/gns3/gui.nix
new file mode 100644
index 000000000000..de624d7f6b29
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gns3/gui.nix
@@ -0,0 +1,39 @@
+{ stable, branch, version, sha256Hash }:
+
+{ stdenv, python3Packages, fetchFromGitHub }:
+
+let
+  pythonPackages = python3Packages;
+
+in pythonPackages.buildPythonPackage rec {
+  name = "${pname}-${version}";
+  pname = "gns3-gui";
+
+  src = fetchFromGitHub {
+    owner = "GNS3";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = sha256Hash;
+  };
+
+  propagatedBuildInputs = with pythonPackages; [
+    raven psutil jsonschema # tox for check
+    # Runtime dependencies
+    sip (pyqt5.override { withWebSockets = true; })
+  ] ++ stdenv.lib.optional (!stable) pythonPackages.distro;
+
+  doCheck = false; # Failing
+
+  meta = with stdenv.lib; {
+    description = "Graphical Network Simulator 3 GUI (${branch} release)";
+    longDescription = ''
+      Graphical user interface for controlling the GNS3 network simulator. This
+      requires access to a local or remote GNS3 server (it's recommended to
+      download the official GNS3 VM).
+    '';
+    homepage = https://www.gns3.com/;
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gns3/server.nix b/nixpkgs/pkgs/applications/networking/gns3/server.nix
new file mode 100644
index 000000000000..556d341231f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gns3/server.nix
@@ -0,0 +1,77 @@
+{ stable, branch, version, sha256Hash }:
+
+{ stdenv, python3, fetchFromGitHub, fetchpatch }:
+
+let
+  python = if stable then python3.override {
+    packageOverrides = self: super: {
+      async-timeout = super.async-timeout.overridePythonAttrs (oldAttrs: rec {
+        version = "2.0.1";
+        src = oldAttrs.src.override {
+          inherit version;
+          sha256 = "1l3kg062m02mph6rf9rdv8r5c5n356clxa6b6mrn0i77vk9g9kq0";
+        };
+      });
+      aiohttp = super.aiohttp.overridePythonAttrs (oldAttrs: rec {
+        version = "2.3.10";
+        src = oldAttrs.src.override {
+          inherit version;
+          sha256 = "8adda6583ba438a4c70693374e10b60168663ffa6564c5c75d3c7a9055290964";
+        };
+        propagatedBuildInputs = with self; [ async-timeout attrs chardet multidict yarl idna-ssl ];
+        doCheck = false;
+      });
+      aiohttp-cors = super.aiohttp-cors.overridePythonAttrs (oldAttrs: rec {
+        version = "0.5.3";
+        src = oldAttrs.src.override {
+          inherit version;
+          sha256 = "11b51mhr7wjfiikvj3nc5s8c7miin2zdhl3yrzcga4mbpkj892in";
+        };
+        propagatedBuildInputs = with self; [ aiohttp ]
+          ++ stdenv.lib.optional (pythonOlder "3.5") typing;
+      });
+    };
+  } else python3;
+
+in python.pkgs.buildPythonPackage {
+  pname = "gns3-server";
+  inherit version;
+
+  src = fetchFromGitHub {
+    owner = "GNS3";
+    repo = "gns3-server";
+    rev = "v${version}";
+    sha256 = sha256Hash;
+  };
+
+  postPatch = ''
+    # "typing" is only required for Python 3.4 and breaks Python 3.7:
+    sed -iE "s/.*typing.*//" requirements.txt
+  '';
+
+  propagatedBuildInputs = with python.pkgs; [
+    aiohttp-cors yarl aiohttp multidict
+    jinja2 psutil zipstream raven jsonschema
+    (python.pkgs.callPackage ../../../development/python-modules/prompt_toolkit/1.nix {})
+  ] ++ stdenv.lib.optional (!stable) [ distro async_generator aiofiles ];
+
+  # Requires network access
+  doCheck = false;
+
+  postInstall = ''
+    rm $out/bin/gns3loopback # For Windows only
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Graphical Network Simulator 3 server (${branch} release)";
+    longDescription = ''
+      The GNS3 server manages emulators such as Dynamips, VirtualBox or
+      Qemu/KVM. Clients like the GNS3 GUI control the server using a HTTP REST
+      API.
+    '';
+    homepage = https://www.gns3.com/;
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/google-drive-ocamlfuse/default.nix b/nixpkgs/pkgs/applications/networking/google-drive-ocamlfuse/default.nix
new file mode 100644
index 000000000000..15e0b5a07b43
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/google-drive-ocamlfuse/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, zlib
+, ocaml, dune, ocamlfuse, findlib, gapi_ocaml, ocaml_sqlite3, camlidl }:
+
+stdenv.mkDerivation rec {
+  name = "google-drive-ocamlfuse-${version}";
+  version = "0.7.2";
+
+  src = fetchFromGitHub {
+    owner = "astrada";
+    repo = "google-drive-ocamlfuse";
+    rev = "v${version}";
+    sha256 = "1l6b4bs5x373pw210nl8xal03ns2ib1ls49y64s3lqjfh5wjmnjy";
+  };
+
+  nativeBuildInputs = [ dune ];
+
+  buildInputs = [ zlib ocaml ocamlfuse findlib gapi_ocaml ocaml_sqlite3 camlidl ];
+
+  buildPhase = "jbuilder build @install";
+  installPhase = "mkdir $out && dune install --prefix $out";
+
+  meta = {
+    homepage = http://gdfuse.forge.ocamlcore.org/;
+    description = "A FUSE-based file system backed by Google Drive, written in OCaml";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ obadz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gopher/gopher/default.nix b/nixpkgs/pkgs/applications/networking/gopher/gopher/default.nix
new file mode 100644
index 000000000000..9057fda2e600
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gopher/gopher/default.nix
@@ -0,0 +1,23 @@
+{stdenv, fetchurl, ncurses}:
+
+stdenv.mkDerivation rec {
+  name = "gopher-${version}";
+  version = "3.0.11";
+
+  src = fetchurl {
+    url = "http://gopher.quux.org:70/devel/gopher/Downloads/gopher_${version}.tar.gz";
+    sha256 = "15r7x518wlpfqpd6z0hbdwm8rw8ll8hbpskdqgxxhrmy00aa7w9c";
+  };
+
+  buildInputs = [ ncurses ];
+
+  preConfigure = "export LIBS=-lncurses";
+
+  meta = {
+    homepage = http://gopher.quux.org:70/devel/gopher;
+    description = "A ncurses gopher client";
+    platforms = stdenv.lib.platforms.unix;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ sternenseemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/gopher/gopherclient/default.nix b/nixpkgs/pkgs/applications/networking/gopher/gopherclient/default.nix
new file mode 100644
index 000000000000..d36533fc9e5e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/gopher/gopherclient/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, buildGoPackage, fetchgit, makeWrapper, pkgconfig, qtbase, qtdeclarative, qtwebengine }:
+
+buildGoPackage rec {
+  name = "gopherclient-${version}";
+  version = "2016-10-02";
+  rev = "91c41b5542d08001636708e2a5054521a6004702";
+
+  goPackagePath = "github.com/prologic/gopherclient";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/prologic/gopherclient";
+    sha256 = "0b1gvxhv4zg930hvric9mmbfp0lnww0sqlkkfbzfkif3wz9ni5y9";
+  };
+
+  nativeBuildInputs = [ makeWrapper pkgconfig ];
+
+  buildInputs = [ qtbase qtdeclarative qtwebengine ];
+
+  preBuild = ''
+    # Generate gopherclient resources with genqrc.
+    ln -s ${goPackagePath}/vendor/gopkg.in go/src/
+    GOBIN="$(pwd)" go install -v gopkg.in/qml.v1/cmd/genqrc
+    PATH="$(pwd):$PATH" go generate ${goPackagePath}
+  '';
+
+  NIX_CFLAGS_COMPILE = [
+    # go-qml needs private Qt headers.
+    "-I${qtbase.dev}/include/QtCore/${qtbase.version}"
+  ];
+
+  postInstall = ''
+    # https://github.com/prologic/gopherclient/#usage
+    wrapProgram $bin/bin/gopherclient --prefix GODEBUG , cgocheck=0
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/prologic/gopherclient;
+    description = "Gopher Qt GUI client";
+    license = licenses.mit;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ids/bro/default.nix b/nixpkgs/pkgs/applications/networking/ids/bro/default.nix
new file mode 100644
index 000000000000..f90457ba9379
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ids/bro/default.nix
@@ -0,0 +1,24 @@
+{stdenv, fetchurl, cmake, flex, bison, openssl, libpcap, perl, zlib, file, curl
+, geoip, gperftools, python, swig }:
+
+stdenv.mkDerivation rec {
+  name = "bro-2.5.5";
+
+  src = fetchurl {
+    url = "https://www.bro.org/downloads/${name}.tar.gz";
+    sha256 = "1kvkiq8jjsqryry9jd4vw45pbfb46jly988mq62mv4sd1fqsxwhq";
+  };
+
+  nativeBuildInputs = [ cmake flex bison file ];
+  buildInputs = [ openssl libpcap perl zlib curl geoip gperftools python swig ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Powerful network analysis framework much different from a typical IDS";
+    homepage = https://www.bro.org/;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ pSub ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ids/daq/default.nix b/nixpkgs/pkgs/applications/networking/ids/daq/default.nix
new file mode 100644
index 000000000000..9af105ad52eb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ids/daq/default.nix
@@ -0,0 +1,27 @@
+{stdenv, fetchurl, flex, bison, libpcap, libdnet, libnfnetlink, libnetfilter_queue}:
+
+stdenv.mkDerivation rec {
+  name = "daq-2.2.2";
+
+  src = fetchurl {
+    name = "${name}.tar.gz";
+    url = "https://snort.org/downloads/archive/snort/${name}.tar.gz";
+    sha256 = "0yvzscy7vqj7s5rccza0f7p6awghfm3yaxihx1h57lqspg51in3w";
+  };
+
+  buildInputs = [ flex bison libpcap libdnet libnfnetlink libnetfilter_queue];
+
+  configureFlags = [
+    "--enable-nfq-module=yes"
+    "--with-dnet-includes=${libdnet}/includes"
+    "--with-dnet-libraries=${libdnet}/lib"
+  ];
+
+  meta = {
+    description = "Data AcQuisition library (DAQ), for packet I/O";
+    homepage = https://www.snort.org;
+    maintainers = with stdenv.lib.maintainers; [ aycanirican ];
+    license = stdenv.lib.licenses.gpl2;
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ids/snort/default.nix b/nixpkgs/pkgs/applications/networking/ids/snort/default.nix
new file mode 100644
index 000000000000..0fdfbacb45cf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ids/snort/default.nix
@@ -0,0 +1,35 @@
+{stdenv, fetchurl, libpcap, pcre, libdnet, daq, zlib, flex, bison, makeWrapper}:
+
+stdenv.mkDerivation rec {
+  version = "2.9.11.1";
+  name = "snort-${version}";
+  
+  src = fetchurl {
+    name = "${name}.tar.gz";
+    url = "https://snort.org/downloads/archive/snort/${name}.tar.gz";
+    sha256 = "1ka67zrrhs32c729v4h76mvv2723mij0adxx0iaza2d1qpm3lswz";
+  };
+  
+  buildInputs = [ makeWrapper libpcap pcre libdnet daq zlib flex bison ];
+
+  enableParallelBuilding = true;
+
+  configureFlags = [
+    "--disable-static-daq"
+    "--enable-control-socket"
+    "--with-daq-includes=${daq}/includes"
+    "--with-daq-libraries=${daq}/lib"
+  ]; 
+
+  postInstall = ''
+    wrapProgram $out/bin/snort --add-flags "--daq-dir ${daq}/lib/daq --dynamic-preprocessor-lib-dir $out/lib/snort_dynamicpreprocessor/ --dynamic-engine-lib-dir $out/lib/snort_dynamicengine"
+  '';
+  
+  meta = {
+    description = "Network intrusion prevention and detection system (IDS/IPS)";
+    homepage = https://www.snort.org;
+    maintainers = with stdenv.lib.maintainers; [ aycanirican ];
+    license = stdenv.lib.licenses.gpl2;
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ike/default.nix b/nixpkgs/pkgs/applications/networking/ike/default.nix
new file mode 100644
index 000000000000..7953f35507d1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ike/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, cmake, openssl, libedit, flex, bison, qt4, makeWrapper
+, gcc, nettools, iproute, linuxHeaders }:
+
+# NOTE: use $out/etc/iked.conf as sample configuration and also set: dhcp_file "/etc/iked.dhcp";
+# launch with "iked -f /etc/iked.conf"
+
+# NOTE: my testings reveal that kernels 3.11.10 and 3.12.6 won't let the traffic through the tunnel,
+# so I'm sticking with 3.4
+
+stdenv.mkDerivation rec {
+  name = "ike-2.2.1";
+
+  src = fetchurl {
+    url = "https://www.shrew.net/download/ike/${name}-release.tgz";
+    sha256 = "0fhyr2psd93b0zf7yfb72q3nqnh65mymgq5jpjcsj9jv5kfr6l8y";
+  };
+
+  buildInputs = [ cmake openssl libedit flex bison qt4 makeWrapper nettools iproute ];
+
+  configurePhase = ''
+    mkdir -p $out/{bin,sbin,lib}
+    cmake -DQTGUI=YES -DETCDIR=$out/etc -DLIBDIR=$out/lib -DSBINDIR=$out/sbin -DBINDIR=$out/bin \
+          -DKRNINC="${linuxHeaders}/include/" -DTESTS=YES \
+          -DMANDIR=$out/man -DNATT=YES -DCMAKE_INSTALL_PREFIX:BOOL=$out
+  '';
+
+  buildPhase = ''
+    make
+  '';
+
+  installPhase = ''
+    make install
+    for file in "$out"/bin/* "$out"/sbin/*; do
+        wrapProgram $file --prefix LD_LIBRARY_PATH ":" "$out/lib:${stdenv.lib.makeLibraryPath [ openssl gcc.cc stdenv.cc.libc libedit qt4 ]}"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://www.shrew.net/software;
+    description = "IPsec Client for FreeBSD, NetBSD and many Linux based operating systems";
+    platforms = platforms.unix;
+    maintainers = [ maintainers.domenkozar ];
+    license = licenses.sleepycat;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/SkypeExport/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/SkypeExport/default.nix
new file mode 100644
index 000000000000..163f0ba3f497
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/SkypeExport/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, cmake, boost166 }:
+
+stdenv.mkDerivation rec {
+  name = "SkypeExport-${version}";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "Temptin";
+    repo = "SkypeExport";
+    rev = "v${version}";
+    sha256 = "1ilkh0s3dz5cp83wwgmscnfmnyck5qcwqg1yxp9zv6s356dxnbak";
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ boost166 ];
+
+  preConfigure = "cd src/SkypeExport/_gccbuild/linux";
+  installPhase = "install -Dt $out/bin SkypeExport";
+
+  meta = with stdenv.lib; {
+    description = "Export Skype history to HTML";
+    homepage = https://github.com/Temptin/SkypeExport;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ yegortimoshenko ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/amsn/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/amsn/default.nix
new file mode 100644
index 000000000000..6ff51445718b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/amsn/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchurl, which, tcl, tk, xlibsWrapper, libpng, libjpeg, makeWrapper}:
+
+stdenv.mkDerivation {
+  name = "amsn-0.98.9";
+  src = fetchurl {
+    url = mirror://sourceforge/amsn/amsn-0.98.9-src.tar.gz;
+    sha256 = "0b8ir7spxnsz8f7kvr9f1k91nsy8cb65q6jv2l55b04fl20x4z7r";
+  };
+
+  configureFlags = [
+    "--with-tcl=${tcl}/lib"
+    "--with-tk=${tk}/lib"
+    "--enable-static"
+  ];
+
+  buildInputs = [which tcl tk xlibsWrapper libpng libjpeg makeWrapper];
+
+  postInstall = ''
+    wrapProgram $out/bin/amsn --prefix PATH : ${tk}/bin
+  '';
+
+  meta = {
+    description = "Instant messaging (MSN Messenger clone)";
+    homepage = http://amsn-project.net;
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/baresip/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/baresip/default.nix
new file mode 100644
index 000000000000..8eea9a84cb47
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/baresip/default.nix
@@ -0,0 +1,53 @@
+{stdenv, fetchurl, zlib, openssl, libre, librem, pkgconfig, gst_all_1
+, cairo, mpg123, alsaLib, SDL, libv4l, celt, libsndfile, srtp, ffmpeg
+, gsm, speex, portaudio, spandsp, libuuid, ccache, libvpx
+}:
+stdenv.mkDerivation rec {
+  version = "0.6.1";
+  name = "baresip-${version}";
+  src=fetchurl {
+    url = "http://www.creytiv.com/pub/baresip-${version}.tar.gz";
+    sha256 = "1nfqdhnnnh5g552d8klv61j98arr84b3fbhvynv6y1mxfp5candm";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [zlib openssl libre librem cairo mpg123
+    alsaLib SDL libv4l celt libsndfile srtp ffmpeg gsm speex portaudio spandsp libuuid
+    ccache libvpx
+  ] ++ (with gst_all_1; [ gstreamer gst-libav gst-plugins-base gst-plugins-bad gst-plugins-good ]);
+  makeFlags = [
+    "LIBRE_MK=${libre}/share/re/re.mk"
+    "LIBRE_INC=${libre}/include/re"
+    "LIBRE_SO=${libre}/lib"
+    "LIBREM_PATH=${librem}"
+    ''PREFIX=$(out)''
+    "USE_VIDEO=1"
+    "CCACHE_DISABLE=1"
+
+    "USE_ALSA=1" "USE_AMR=1" "USE_CAIRO=1" "USE_CELT=1"
+    "USE_CONS=1" "USE_EVDEV=1" "USE_FFMPEG=1"  "USE_GSM=1" "USE_GST1=1"
+    "USE_L16=1" "USE_MPG123=1" "USE_OSS=1" "USE_PLC=1" "USE_VPX=1"
+    "USE_PORTAUDIO=1" "USE_SDL=1" "USE_SNDFILE=1" "USE_SPEEX=1"
+    "USE_SPEEX_AEC=1" "USE_SPEEX_PP=1" "USE_SPEEX_RESAMP=1" "USE_SRTP=1"
+    "USE_STDIO=1" "USE_SYSLOG=1" "USE_UUID=1" "USE_V4L2=1" "USE_X11=1"
+
+    "USE_BV32=" "USE_COREAUDIO=" "USE_G711=1" "USE_G722=1" "USE_G722_1="
+    "USE_ILBC=" "USE_OPUS=" "USE_SILK="
+  ]
+  ++ stdenv.lib.optional (stdenv.cc.cc != null) "SYSROOT_ALT=${stdenv.cc.cc}"
+  ++ stdenv.lib.optional (stdenv.cc.libc != null) "SYSROOT=${stdenv.cc.libc}"
+  ;
+
+  NIX_CFLAGS_COMPILE='' -I${librem}/include/rem -I${gsm}/include/gsm
+    -DHAVE_INTTYPES_H -D__GLIBC__
+    -D__need_timeval -D__need_timespec -D__need_time_t '';
+  meta = {
+    homepage = http://www.creytiv.com/baresip.html;
+    platforms = with stdenv.lib.platforms; linux;
+    maintainers = with stdenv.lib.maintainers; [raskin];
+    license = stdenv.lib.licenses.bsd3;
+    inherit version;
+    downloadPage = "http://www.creytiv.com/pub/";
+    updateWalker = true;
+    downloadURLRegexp = "/baresip-.*[.]tar[.].*";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-discord/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-discord/default.nix
new file mode 100644
index 000000000000..bed5b17a5ce5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-discord/default.nix
@@ -0,0 +1,31 @@
+{ fetchFromGitHub, stdenv, bitlbee, autoreconfHook, pkgconfig, glib }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "bitlbee-discord-${version}";
+  version = "0.4.2";
+
+  src = fetchFromGitHub {
+    rev = version;
+    owner = "sm00th";
+    repo = "bitlbee-discord";
+    sha256 = "02pigk2vbz0jdz11f96sygdvp1j762yjn62h124fkcsc070g7a2f";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ bitlbee glib ];
+
+  preConfigure = ''
+    export BITLBEE_PLUGINDIR=$out/lib/bitlbee
+    ./autogen.sh
+  '';
+
+  meta = {
+    description = "Bitlbee plugin for Discord";
+
+    homepage = https://github.com/sm00th/bitlbee-discord;
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.lassulus ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-facebook/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-facebook/default.nix
new file mode 100644
index 000000000000..d6c8fae2b585
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-facebook/default.nix
@@ -0,0 +1,31 @@
+{ fetchFromGitHub, stdenv, bitlbee, autoconf, automake, libtool, pkgconfig, glib, json-glib }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "bitlbee-facebook-${version}";
+  version = "1.2.0";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "bitlbee";
+    repo = "bitlbee-facebook";
+    sha256 = "11068zhb1v55b1x0nhjc4f3p0glccxpcyk5c1630hfdzkj7vyqhn";
+  };
+
+  nativeBuildInputs = [ autoconf automake libtool pkgconfig ];
+
+  buildInputs = [ bitlbee glib json-glib ];
+
+  preConfigure = ''
+    export BITLBEE_PLUGINDIR=$out/lib/bitlbee
+    ./autogen.sh
+  '';
+
+  meta = {
+    description = "The Facebook protocol plugin for bitlbee";
+
+    homepage = https://github.com/bitlbee/bitlbee-facebook;
+    license = licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-steam/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-steam/default.nix
new file mode 100644
index 000000000000..a034827c4ed4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee-steam/default.nix
@@ -0,0 +1,30 @@
+{ fetchFromGitHub, stdenv, bitlbee, autoconf, automake, libtool, pkgconfig, glib, libgcrypt }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  version = "1.4.2";
+  name = "bitlbee-steam-${version}";
+
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    owner = "bitlbee";
+    repo = "bitlbee-steam";
+    sha256 = "121r92mgwv445wwxzh35n19fs5k81ihr0j19k256ia5502b1xxaq";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ bitlbee autoconf automake libtool glib libgcrypt ];
+
+  preConfigure = ''
+    export BITLBEE_PLUGINDIR=$out/lib/bitlbee
+    ./autogen.sh
+  '';
+
+  meta = {
+    description = "Steam protocol plugin for BitlBee";
+
+    homepage = https://github.com/jgeboski/bitlbee-steam;
+    license = licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/default.nix
new file mode 100644
index 000000000000..aefde289db59
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/default.nix
@@ -0,0 +1,58 @@
+{ fetchurl, stdenv, gnutls, glib, pkgconfig, check, libotr, python
+, enableLibPurple ? false, pidgin ? null
+, enablePam ? false, pam ? null
+}:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "bitlbee-3.6";
+
+  src = fetchurl {
+    url = "mirror://bitlbee/src/${name}.tar.gz";
+    sha256 = "0zhhcbcr59sx9h4maf8zamzv2waya7sbsl7w74gbyilvy93dw5cz";
+  };
+
+  nativeBuildInputs = [ pkgconfig ] ++ optional doCheck check;
+
+  buildInputs = [ gnutls glib libotr python ]
+    ++ optional enableLibPurple pidgin
+    ++ optional enablePam pam;
+
+  configureFlags = [
+    "--otr=1"
+    "--ssl=gnutls"
+    "--pidfile=/var/lib/bitlbee/bitlbee.pid"
+  ] ++ optional enableLibPurple "--purple=1"
+    ++ optional enablePam "--pam=1";
+
+  installTargets = [ "install" "install-dev" ];
+
+  doCheck = !enableLibPurple; # Checks fail with libpurple for some reason
+  checkPhase = ''
+    # check flags set VERBOSE=y which breaks the build due overriding a command
+    make check
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "IRC instant messaging gateway";
+
+    longDescription = ''
+      BitlBee brings IM (instant messaging) to IRC clients.  It's a
+      great solution for people who have an IRC client running all the
+      time and don't want to run an additional MSN/AIM/whatever
+      client.
+
+      BitlBee currently supports the following IM networks/protocols:
+      XMPP/Jabber (including Google Talk), MSN Messenger, Yahoo!
+      Messenger, AIM and ICQ.
+    '';
+
+    homepage = https://www.bitlbee.org/;
+    license = licenses.gpl2Plus;
+
+    maintainers = with maintainers; [ pSub ];
+    platforms = platforms.gnu ++ platforms.linux;  # arbitrary choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/plugins.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/plugins.nix
new file mode 100644
index 000000000000..4e05e7cae970
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bitlbee/plugins.nix
@@ -0,0 +1,20 @@
+{ stdenv, bitlbee }:
+
+with stdenv.lib;
+
+plugins:
+
+stdenv.mkDerivation {
+  inherit bitlbee plugins;
+  name = "bitlbee-plugins";
+  buildInputs = [ bitlbee plugins ];
+  phases = [ "installPhase" ];
+  installPhase = ''
+    mkdir -p $out/lib/bitlbee
+    for plugin in $plugins; do
+      for thing in $(ls $plugin/lib/bitlbee); do
+        ln -s $plugin/lib/bitlbee/$thing $out/lib/bitlbee/
+      done
+    done
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/blink/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/blink/default.nix
new file mode 100644
index 000000000000..bbdb2ae79f83
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/blink/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchdarcs, pythonPackages, libvncserver, zlib
+, gnutls, libvpx, makeDesktopItem }:
+
+pythonPackages.buildPythonApplication rec {
+  name = "blink-${version}";
+  version = "3.0.3";
+
+  src = fetchdarcs {
+    url = http://devel.ag-projects.com/repositories/blink-qt;
+    rev = "release-${version}";
+    sha256 = "1vj6zzfvxygz0fzr8bhymcw6j4v8xmr0kba53d6qg285j7hj1bdi";
+  };
+
+  patches = [ ./pythonpath.patch ];
+  postPatch = ''
+    sed -i 's|@out@|'"''${out}"'|g' blink/resources.py
+  '';
+
+  propagatedBuildInputs = with pythonPackages; [ pyqt5_with_qtwebkit cjson sipsimple twisted google_api_python_client ];
+
+  buildInputs = [ pythonPackages.cython zlib libvncserver libvpx ];
+
+  desktopItem = makeDesktopItem {
+    name = "Blink";
+    exec = "blink";
+    comment = meta.description;
+    desktopName = "Blink";
+    icon = "blink";
+    genericName = "Instant Messaging";
+    categories = "Application;Internet;";
+  };
+
+  postInstall = ''
+    wrapProgram $out/bin/blink \
+      --prefix LD_LIBRARY_PATH ":" ${gnutls.out}/lib
+    mkdir -p "$out/share/applications"
+    mkdir -p "$out/share/pixmaps"
+    cp "$desktopItem"/share/applications/* "$out/share/applications"
+    cp "$out"/share/blink/icons/blink.* "$out/share/pixmaps"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://icanblink.com/;
+    description = "A state of the art, easy to use SIP client for Voice, Video and IM";
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/blink/pythonpath.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/blink/pythonpath.patch
new file mode 100644
index 000000000000..0df8bc84ff30
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/blink/pythonpath.patch
@@ -0,0 +1,49 @@
+--- blink-2.0.0/blink/resources.py	2016-03-09 14:39:07.000000000 +0100
++++ blink-2.0.0/blink/resources-patched.py	2016-03-12 21:34:14.965476623 +0100
+@@ -1,7 +1,10 @@
++# Copyright (C) 2010-2013 AG Projects. See LICENSE for details.
++#
+ 
+ """Provide access to Blink's resources"""
+ 
+-import __main__
++__all__ = ['ApplicationData', 'Resources', 'IconManager']
++
+ import imghdr
+ import os
+ import platform
+@@ -19,14 +22,10 @@
+ from blink.util import run_in_gui_thread
+ 
+ 
+-__all__ = ['ApplicationData', 'Resources', 'IconManager']
+-
+-
+ class DirectoryContextManager(unicode):
+     def __enter__(self):
+         self.directory = os.getcwdu()
+         os.chdir(self)
+-
+     def __exit__(self, type, value, traceback):
+         os.chdir(self.directory)
+ 
+@@ -61,18 +60,7 @@
+     @classproperty
+     def directory(cls):
+         if cls._cached_directory is None:
+-            try:
+-                binary_directory = os.path.dirname(os.path.realpath(__main__.__file__))
+-            except AttributeError:
+-                if hasattr(sys, 'frozen'):
+-                    application_directory = os.path.dirname(os.path.realpath(sys.executable))
+-                else:
+-                    application_directory = os.path.realpath('')  # executed in interactive interpreter
+-            else:
+-                if os.path.basename(binary_directory) == 'bin':
+-                    application_directory = os.path.dirname(binary_directory)
+-                else:
+-                    application_directory = binary_directory
++            application_directory = '@out@'
+             if os.path.exists(os.path.join(application_directory, 'resources', 'blink.ui')):
+                 cls._cached_directory = os.path.join(application_directory, 'resources').decode(sys.getfilesystemencoding())
+             else:
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/default.nix
new file mode 100644
index 000000000000..a2ba2f09f764
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/bluejeans/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, rpmextract, patchelf, libnotify, libcap, cairo, pango, fontconfig, udev, dbus
+, gtk2, atk, expat, gdk_pixbuf, freetype, nspr, glib, nss, gconf, libX11, libXrender, libXtst, libXdamage
+, libXi, libXext, libXfixes, libXcomposite, alsaLib, bash
+}:
+
+stdenv.mkDerivation rec {
+  name = "bluejeans-${version}";
+  version = "1.36.9";
+
+  src =
+    fetchurl {
+      url = "https://swdl.bluejeans.com/desktop/linux/1.36/${version}/bluejeans-${version}.x86_64.rpm";
+      sha256 = "0sbv742pzqd2cxn3kq10lfi16jah486i9kyrmi8l1rpb9fhyw2m1";
+    };
+
+  nativeBuildInputs = [ patchelf rpmextract ];
+
+  libPath =
+    stdenv.lib.makeLibraryPath
+       [ libnotify libcap cairo pango fontconfig gtk2 atk expat gdk_pixbuf dbus udev.lib
+         freetype nspr glib stdenv.cc stdenv.cc.cc.lib nss gconf libX11 libXrender libXtst libXdamage
+         libXi libXext libXfixes libXcomposite alsaLib
+       ];
+
+  buildCommand = ''
+    mkdir -p $out/bin/
+    cd $out
+    rpmextract $src
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      opt/bluejeans/bluejeans-bin
+    patchelf \
+      --set-rpath ${libPath} \
+      opt/bluejeans/bluejeans-bin
+    patchelf \
+      --replace-needed libudev.so.0 libudev.so.1 \
+      opt/bluejeans/bluejeans-bin
+    ln -s $out/opt/bluejeans/bluejeans $out/bin/bluejeans
+    substituteInPlace $out/bin/bluejeans \
+      --replace '#!/bin/bash' '#!${bash}/bin/bash'
+    chmod +x $out/bin/bluejeans
+  '';
+
+  meta = {
+    description = "Video, audio, and web conferencing that works together with the collaboration tools you use every day.";
+    license = stdenv.lib.licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/centerim/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/centerim/default.nix
new file mode 100644
index 000000000000..350d09078c41
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/centerim/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl, gnused, openssl, curl, ncurses, libjpeg
+, withGpg ? true, gpgme ? null}:
+
+stdenv.mkDerivation rec {
+  version = "5.0.1";
+  name = "centerim5-${version}";
+
+  src = fetchurl {
+    url = "http://centerim.org/download/cim5/${name}.tar.gz";
+    sha256 = "0viz86jflp684vfginhl6aaw4gh2qvalc25anlwljjl3kkmibklk";
+  };
+
+  CXXFLAGS = "-std=gnu++98";
+
+  buildInputs = [ openssl curl ncurses libjpeg ]
+    ++ stdenv.lib.optional withGpg gpgme;
+
+  preConfigure = ''
+    ${gnused}/bin/sed -i '1,1i#include <stdio.h>' libicq2000/libicq2000/sigslot.h
+  '';
+
+  configureFlags = [
+    "--with-openssl=${openssl.dev}"
+  ];
+
+  meta = {
+    homepage = http://www.centerim.org/;
+    description = "Fork of CenterICQ, a curses instant messaging program";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/coyim/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/coyim/default.nix
new file mode 100644
index 000000000000..e2e94db089da
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/coyim/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, pkgconfig,
+  cairo, gdk_pixbuf, glib, gnome3, wrapGAppsHook, gtk3 }:
+
+buildGoPackage rec {
+  name = "coyim-${version}";
+  version = "0.3.11";
+
+  goPackagePath = "github.com/coyim/coyim";
+
+  src = fetchFromGitHub {
+    owner = "coyim";
+    repo = "coyim";
+    rev = "v${version}";
+    sha256 = "1g8nf56j17rdhhj7pv3ha1rb2mfc0mdvyzl35pgcki08w7iw08j3";
+  };
+
+  nativeBuildInputs = [ pkgconfig wrapGAppsHook glib cairo gdk_pixbuf gtk3 gnome3.adwaita-icon-theme ];
+
+  meta = with stdenv.lib; {
+    description = "a safe and secure chat client";
+    homepage = https://coy.im/;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix
new file mode 100644
index 000000000000..7c2b312c4b34
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, fetchFromGitHub
+, vala, cmake, ninja, wrapGAppsHook, pkgconfig, gettext
+, gobject-introspection, gnome3, glib, gdk_pixbuf, gtk3, glib-networking
+, xorg, libXdmcp, libxkbcommon
+, libnotify, libsoup, libgee
+, libgcrypt
+, epoxy
+, at-spi2-core
+, sqlite
+, dbus
+, gpgme
+, pcre
+, qrencode
+, icu
+ }:
+
+stdenv.mkDerivation rec {
+  name = "dino-unstable-2019-03-07";
+
+  src = fetchFromGitHub {
+    owner = "dino";
+    repo = "dino";
+    rev = "cc7b0aa7bd5b6599159f654fdd8a2fd111e16a3e";
+    sha256 = "1cq62vif92fz38si2bl49qwy4ys9gxdrvzkv25av6c6nwmyih4gv";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [
+    vala
+    cmake
+    ninja
+    pkgconfig
+    wrapGAppsHook
+    gettext
+  ];
+
+  buildInputs = [
+    qrencode
+    gobject-introspection
+    glib-networking
+    glib
+    libgee
+    gnome3.adwaita-icon-theme
+    sqlite
+    gdk_pixbuf
+    gtk3
+    libnotify
+    gpgme
+    libgcrypt
+    libsoup
+    pcre
+    xorg.libxcb
+    xorg.libpthreadstubs
+    libXdmcp
+    libxkbcommon
+    epoxy
+    at-spi2-core
+    dbus
+    icu
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Modern Jabber/XMPP Client using GTK+/Vala";
+    homepage = https://github.com/dino/dino;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.mic92 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix
new file mode 100644
index 000000000000..1eba34423426
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/discord/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchurl, makeDesktopItem, wrapGAppsHook
+, alsaLib, atk, at-spi2-atk, cairo, cups, dbus, expat, fontconfig, freetype, gdk_pixbuf
+, glib, gtk3, libnotify, libX11, libXcomposite, libXcursor, libXdamage, libuuid
+, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst, nspr, nss, libxcb
+, pango, systemd, libXScrnSaver, libcxx, libpulseaudio }:
+
+stdenv.mkDerivation rec {
+
+    pname = "discord";
+    version = "0.0.9";
+
+    src = fetchurl {
+        url = "https://cdn.discordapp.com/apps/linux/${version}/${pname}-${version}.tar.gz";
+        sha256 = "1i0f8id10rh2fx381hx151qckvvh8hbznfsfav8w0dfbd1bransf";
+    };
+
+    nativeBuildInputs = [ wrapGAppsHook ];
+
+    dontWrapGApps = true;
+
+    libPath = stdenv.lib.makeLibraryPath [
+        libcxx systemd libpulseaudio
+        stdenv.cc.cc alsaLib atk at-spi2-atk cairo cups dbus expat fontconfig freetype
+        gdk_pixbuf glib gtk3 libnotify libX11 libXcomposite libuuid
+        libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender
+        libXtst nspr nss libxcb pango systemd libXScrnSaver
+     ];
+
+    installPhase = ''
+        mkdir -p $out/{bin,opt/discord,share/pixmaps}
+        mv * $out/opt/discord
+
+        chmod +x $out/opt/discord/Discord
+        patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
+                 $out/opt/discord/Discord
+
+        wrapProgram $out/opt/discord/Discord \
+          "''${gappsWrapperArgs[@]}" \
+          --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \
+          --prefix LD_LIBRARY_PATH : ${libPath}
+
+        ln -s $out/opt/discord/Discord $out/bin/
+        ln -s $out/opt/discord/discord.png $out/share/pixmaps
+
+        ln -s "${desktopItem}/share/applications" $out/share/
+        '';
+
+    desktopItem = makeDesktopItem {
+      name = pname;
+      exec = "Discord";
+      icon = pname;
+      desktopName = "Discord";
+      genericName = meta.description;
+      categories = "Network;InstantMessaging;";
+    };
+
+    meta = with stdenv.lib; {
+        description = "All-in-one cross-platform voice and text chat for gamers";
+        homepage = https://discordapp.com/;
+        downloadPage = "https://github.com/crmarsh/discord-linux-bugs";
+        license = licenses.unfree;
+        maintainers = [ maintainers.ldesgoui maintainers.MP2E ];
+        platforms = [ "x86_64-linux" ];
+    };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ekiga/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/ekiga/default.nix
new file mode 100644
index 000000000000..7129e0a1e831
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ekiga/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, glib, fetchurl, fetchpatch, cyrus_sasl, gettext, openldap, ptlib, opal, libXv, rarian, intltool
+, perlPackages, evolution-data-server, gnome-doc-utils, avahi, autoreconfHook
+, libsigcxx, gtk2, dbus-glib, libnotify, libXext, xorgproto, gnome3, boost, libsecret
+, pkgconfig, libxml2, unixODBC, db, nspr, nss, zlib
+, libXrandr, which, libxslt, libtasn1, gmp, nettle, sqlite, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "ekiga-4.0.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/ekiga/4.0/${name}.tar.xz";
+    sha256 = "5f4f491c9496cf65ba057a9345d6bb0278f4eca07bcda5baeecf50bfcd9a4a3b";
+  };
+
+  buildInputs = [ cyrus_sasl gettext openldap ptlib opal libXv rarian intltool
+                  evolution-data-server gnome-doc-utils avahi
+                  libsigcxx gtk2 dbus-glib libnotify libXext xorgproto sqlite
+                  gnome3.libsoup glib gnome3.adwaita-icon-theme boost
+                  autoreconfHook pkgconfig libxml2 unixODBC db nspr
+                  nss zlib libsecret libXrandr which libxslt libtasn1
+                  gmp nettle makeWrapper ]
+    ++ (with perlPackages; [ perl XMLParser ]);
+
+  preAutoreconf = ''
+    substituteInPlace configure.ac --replace AM_GCONF_SOURCE_2 ""
+    substituteInPlace configure.ac --replace gnome-icon-theme adwaita-icon-theme
+  '';
+
+  configureFlags = [
+    "--with-ldap-dir=${openldap.dev}"
+    "--with-libsasl2-dir=${cyrus_sasl.dev}"
+    "--with-boost-libdir=${boost.out}/lib"
+    "--disable-gconf"
+  ];
+
+  enableParallelBuilding = true;
+
+  patches = [
+    (fetchpatch { url = https://sources.debian.net/data/main/e/ekiga/4.0.1-7/debian/patches/autofoo.patch;
+      sha256 = "1vyagslws4mm9yfz1m5p1kv9sxmk5lls9vxpm6j72q2ahsgydzx4";
+    })
+    (fetchpatch { url = https://sources.debian.net/data/main/e/ekiga/4.0.1-7/debian/patches/boost.patch;
+      sha256 = "01k0rw8ibrrf9zn9lx6dzbrgy58w089hqxqxqdv9whb65cldlj5s";
+    })
+    (fetchpatch { url = https://src.fedoraproject.org/rpms/ekiga/raw/dbf5f5ba449d22bd79f0394cddb7d4d8a88ec6ac/f/ekiga-4.0.1-libresolv.patch;
+      sha256 = "18wc68im8422ibpa0gkrkgjq41m7hikaha3xqmjs2km45i1cwcaz";
+    })
+  ];
+
+  postInstall = ''
+    wrapProgram "$out"/bin/ekiga \
+      --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "VOIP/Videoconferencing app with full SIP and H.323 support";
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.linux;
+    license = licenses.gpl2Plus;
+  };
+
+  passthru = {
+    updateInfo = {
+      downloadPage = "mirror://gnome/sources/ekiga";
+    };
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/fractal/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/fractal/default.nix
new file mode 100644
index 000000000000..45137aafcaeb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/fractal/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, fetchFromGitLab, meson, ninja, gettext, cargo, rustc, python3, rustPlatform, pkgconfig, gtksourceview
+, hicolor-icon-theme, glib, libhandy, gtk3, libsecret, dbus, openssl, sqlite, gst_all_1, wrapGAppsHook }:
+
+rustPlatform.buildRustPackage rec {
+  version = "4.0.0";
+  name = "fractal-${version}";
+
+  src = fetchFromGitLab {
+    domain = "gitlab.gnome.org";
+    owner = "GNOME";
+    repo = "fractal";
+    rev = version;
+    sha256 = "05q47jdgbi5jz01280msb8gxnbsrgf2jvglfm6k40f1xw4wxkrzy";
+  };
+
+  nativeBuildInputs = [
+    meson ninja pkgconfig gettext cargo rustc python3 wrapGAppsHook
+  ];
+  buildInputs = [
+    glib gtk3 libhandy dbus openssl sqlite gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-bad
+    gtksourceview hicolor-icon-theme libsecret
+  ];
+
+  postPatch = ''
+    patchShebangs scripts/meson_post_install.py
+  '';
+
+  # Don't use buildRustPackage phases, only use it for rust deps setup
+  configurePhase = null;
+  buildPhase = null;
+  checkPhase = null;
+  installPhase = null;
+
+  cargoSha256 = "0hlvdcdzkggc2adggmlxz0yxigwp3320wfav77gddlvfip1f90sw";
+
+  meta = with stdenv.lib; {
+    description = "Matrix group messaging app";
+    homepage = https://gitlab.gnome.org/GNOME/fractal;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/franz/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/franz/default.nix
new file mode 100644
index 000000000000..d33761ba772e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/franz/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchurl, makeWrapper, autoPatchelfHook, dpkg
+, xorg, atk, glib, pango, gdk_pixbuf, cairo, freetype, fontconfig, gtk3
+, gnome2, dbus, nss, nspr, alsaLib, cups, expat, udev, libnotify, xdg_utils }:
+
+let
+  version = "5.0.0-beta.19";
+in stdenv.mkDerivation rec {
+  name = "franz-${version}";
+  src = fetchurl {
+    url = "https://github.com/meetfranz/franz/releases/download/v${version}/franz_${version}_amd64.deb";
+    sha256 = "1b9b8y19iqx8bnax7hbh9rkjfxk8a9gqb1akrcxwwfi46l816gyy";
+  };
+
+  # don't remove runtime deps
+  dontPatchELF = true;
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper dpkg ];
+  buildInputs = (with xorg; [
+    libXi libXcursor libXdamage libXrandr libXcomposite libXext libXfixes
+    libXrender libX11 libXtst libXScrnSaver
+  ]) ++ [
+    gtk3 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus
+    gnome2.GConf nss nspr alsaLib cups expat stdenv.cc.cc
+  ];
+  runtimeDependencies = [ udev.lib libnotify ];
+
+  unpackPhase = "dpkg-deb -x $src .";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -r opt $out
+    ln -s $out/opt/Franz/franz $out/bin
+
+    # provide desktop item and icon
+    cp -r usr/share $out
+    substituteInPlace $out/share/applications/franz.desktop \
+      --replace Exec=\"/opt/Franz/franz\" Exec=franz
+  '';
+
+  postFixup = ''
+    wrapProgram $out/opt/Franz/franz --prefix PATH : ${xdg_utils}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A free messaging app that combines chat & messaging services into one application";
+    homepage = https://meetfranz.com;
+    license = licenses.free;
+    maintainers = [ maintainers.gnidorah ];
+    platforms = ["x86_64-linux"];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/freetalk/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/freetalk/default.nix
new file mode 100644
index 000000000000..2c27853c9442
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/freetalk/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub
+, guile, pkgconfig, glib, loudmouth, gmp, libidn, readline, libtool
+, libunwind, ncurses, curl, jansson, texinfo
+, automake, autoconf
+}:
+
+stdenv.mkDerivation rec {
+  name = "freetalk-${version}";
+  version = "4.1";
+  
+  src = fetchFromGitHub {
+    owner = "GNUFreetalk";
+    repo = "freetalk";
+    rev = "v${version}";
+    sha256 = "09jwk2i8qd8c7wrn9xbqcwm32720dwxis22kf3jpbg8mn6w6i757";
+  };
+
+  preConfigure = ''
+    ./autogen.sh
+  '';
+
+ nativeBuildInputs = [ pkgconfig ];
+ buildInputs = [
+    guile glib loudmouth gmp libidn readline libtool
+    libunwind ncurses curl jansson texinfo
+    autoconf automake
+  ];
+
+  meta = with stdenv.lib; {
+    description =  "Console XMPP client";
+    license = licenses.gpl3Plus ;
+    maintainers = with maintainers; [ raskin ];
+    platforms = platforms.linux;
+    downloadPage = "https://www.gnu.org/software/freetalk/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/gajim/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/gajim/default.nix
new file mode 100644
index 000000000000..8c1af783602a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/gajim/default.nix
@@ -0,0 +1,70 @@
+{ lib, fetchurl, gettext, wrapGAppsHook
+
+# Native dependencies
+, python3, gtk3, gobject-introspection, gnome3
+
+# Test dependencies
+, xvfb_run, dbus
+
+# Optional dependencies
+, enableJingle ? true, farstream, gstreamer, gst-plugins-base, gst-libav, gst-plugins-ugly
+, enableE2E ? true
+, enableSecrets ? true, libsecret
+, enableRST ? true, docutils
+, enableSpelling ? true, gspell
+, enableUPnP ? true, gupnp-igd
+, enableOmemoPluginDependencies ? true
+, extraPythonPackages ? ps: []
+}:
+
+python3.pkgs.buildPythonApplication rec {
+  pname = "gajim";
+  majorVersion = "1.1";
+  version = "${majorVersion}.2";
+
+  src = fetchurl {
+    url = "https://gajim.org/downloads/${majorVersion}/gajim-${version}.tar.bz2";
+    sha256 = "1lx03cgi58z54xb7mhs6bc715lc00w5mpysf9n3q8zgn759fm0rj";
+  };
+
+  postPatch = ''
+    # This test requires network access
+    echo "" > test/integration/test_resolver.py
+  '';
+
+  buildInputs = [
+    gobject-introspection gtk3 gnome3.adwaita-icon-theme
+  ] ++ lib.optionals enableJingle [ farstream gstreamer gst-plugins-base gst-libav gst-plugins-ugly ]
+    ++ lib.optional enableSecrets libsecret
+    ++ lib.optional enableSpelling gspell
+    ++ lib.optional enableUPnP gupnp-igd;
+
+  nativeBuildInputs = [
+    gettext wrapGAppsHook
+  ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    nbxmpp pyasn1 pygobject3 dbus-python pillow cssutils precis-i18n keyring
+  ] ++ lib.optionals enableE2E [ pycrypto python-gnupg ]
+    ++ lib.optional enableRST docutils
+    ++ lib.optionals enableOmemoPluginDependencies [ python-axolotl qrcode ]
+    ++ extraPythonPackages python3.pkgs;
+
+  checkInputs = [ xvfb_run dbus.daemon ];
+
+  checkPhase = ''
+    xvfb-run dbus-run-session \
+      --config-file=${dbus.daemon}/share/dbus-1/session.conf \
+      ${python3.interpreter} setup.py test
+  '';
+
+  meta = {
+    homepage = http://gajim.org/;
+    description = "Jabber client written in PyGTK";
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [ raskin aszlig abbradar ];
+    downloadPage = "http://gajim.org/downloads.php";
+    updateWalker = true;
+    platforms = lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/gitter/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/gitter/default.nix
new file mode 100644
index 000000000000..be911f70f915
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/gitter/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, alsaLib, atk, cairo, cups, dbus, dpkg, expat, fetchurl
+, fontconfig, freetype, gdk_pixbuf, glib, gnome2, gtk3, libX11
+, libXScrnSaver, libXcomposite, libXcursor, libXdamage, libXext, libXfixes
+, libXi, libXrandr, libXrender, libXtst, libappindicator-gtk3, libcxx
+, libnotify, libpulseaudio, libxcb, makeDesktopItem, makeWrapper, nspr, nss
+, nwjs, pango, systemd }:
+
+let gitterDirectorySuffix = "opt/gitter";
+    doELFPatch = target: ''
+      patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} \
+         --set-rpath "$out/${gitterDirectorySuffix}/lib:${libPath}" \
+         $out/${gitterDirectorySuffix}/${target}
+       '';
+   libPath = stdenv.lib.makeLibraryPath [
+     alsaLib atk cairo cups dbus expat fontconfig freetype gdk_pixbuf glib
+     gnome2.GConf gtk3 libX11 libXScrnSaver libXcomposite libXcursor libXdamage
+     libXext libXfixes libXi libXrandr libXrender libXtst libappindicator-gtk3
+     libcxx libnotify libpulseaudio libxcb nspr nss pango stdenv.cc.cc systemd
+  ];
+in stdenv.mkDerivation rec {
+  pname = "gitter";
+  version = "4.1.0";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "https://update.gitter.im/linux64/${pname}_${version}_amd64.deb";
+    sha256 = "1gny9i2pywvczzrs93k8krqn6hwm6c2zg8yr3xmjqs3p88817wbi";
+  };
+
+  nativeBuildInputs = [ makeWrapper dpkg ];
+
+  unpackPhase = "dpkg -x $src .";
+
+  installPhase = ''
+    mkdir -p $out/{bin,opt/gitter,share/pixmaps}
+    mv ./opt/Gitter/linux64/* $out/opt/gitter
+
+    ${doELFPatch "Gitter"}
+    ${doELFPatch "nacl_helper"}
+    ${doELFPatch "minidump_stackwalk"}
+    ${doELFPatch "nwjc"}
+    ${doELFPatch "chromedriver"}
+    ${doELFPatch "payload"}
+
+    patchelf --set-rpath "$out/${gitterDirectorySuffix}/lib:${libPath}" \
+         $out/${gitterDirectorySuffix}/lib/libnw.so
+
+    wrapProgram $out/${gitterDirectorySuffix}/Gitter --prefix LD_LIBRARY_PATH : ${libPath}
+
+    ln -s $out/${gitterDirectorySuffix}/Gitter $out/bin/
+    ln -s $out/${gitterDirectorySuffix}/logo.png $out/share/pixmaps/gitter.png
+    ln -s "${desktopItem}/share/applications" $out/share/
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = pname;
+    exec = "Gitter";
+    icon = pname;
+    desktopName = "Gitter";
+    genericName = meta.description;
+    categories = "Network;InstantMessaging;";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Where developers come to talk";
+    downloadPage = "https://gitter.im/apps";
+    license = licenses.mit;
+    maintainers = [ maintainers.imalison ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/default.nix
new file mode 100644
index 000000000000..8e85be831a01
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/gomuks/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildGo110Package, fetchFromGitHub }:
+
+buildGo110Package rec {
+  name = "gomuks-${version}";
+  version = "2018-07-10";
+
+  goPackagePath = "maunium.net/go/gomuks";
+
+  src = fetchFromGitHub {
+    owner = "tulir";
+    repo = "gomuks";
+    rev = "68db26bcace31297471641fe95f8882e301f5699";
+    sha256 = "0dagdvsvn8nwqsvjbqk1c6gg2q1m40869nayrkwm3ndg2xkfdpm6";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://maunium.net/go/gomuks/;
+    description = "A terminal based Matrix client written in Go";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ tilpner ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/gtmess/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/gtmess/default.nix
new file mode 100644
index 000000000000..3e16a58f54bb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/gtmess/default.nix
@@ -0,0 +1,19 @@
+{stdenv, fetchurl, ncurses, openssl, tcl, tk}:
+
+stdenv.mkDerivation {
+  name = "gtmess-0.97";
+
+  src = fetchurl {
+    url = mirror://sourceforge/gtmess/gtmess-0.97.tar.gz;
+    sha256 = "1ipmqsrj0r1ssbgs2fpr4x5vnzlxlqhx9jrnadp1jw7s0sxpjqv0";
+  };
+
+  buildInputs = [ ncurses openssl tcl tk];
+
+  meta = {
+    description = "Console MSN Messenger client for Linux and other unix systems";
+    homepage = http://gtmess.sourceforge.net/;
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/hipchat/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/hipchat/default.nix
new file mode 100644
index 000000000000..9e1b9fe9c39f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/hipchat/default.nix
@@ -0,0 +1,87 @@
+{ stdenv, fetchurl, xorg, freetype, fontconfig, openssl, glib, nss, nspr, expat
+, alsaLib, dbus, zlib, libxml2, libxslt, makeWrapper, xkeyboard_config, systemd
+, libGL, xcbutilkeysyms, xdg_utils, libtool }:
+
+let
+  version = "4.30.5.1682";
+
+  rpath = stdenv.lib.makeLibraryPath [
+    xdg_utils
+    xorg.libXext
+    xorg.libSM
+    xorg.libICE
+    xorg.libX11
+    xorg.libXrandr
+    xorg.libXdamage
+    xorg.libXrender
+    xorg.libXfixes
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libxcb
+    xorg.libXi
+    xorg.libXScrnSaver
+    xorg.libXtst
+    freetype
+    fontconfig
+    openssl
+    glib
+    nss
+    nspr
+    dbus
+    alsaLib
+    zlib
+    libtool
+    libxml2
+    libxslt
+    expat
+    xcbutilkeysyms
+    systemd
+    libGL
+  ] + ":${stdenv.cc.cc.lib}/lib64";
+in stdenv.mkDerivation {
+  name = "hipchat-${version}";
+
+  src = fetchurl {
+    url = "https://atlassian.artifactoryonline.com/atlassian/hipchat-apt-client/pool/HipChat4-${version}-Linux.deb";
+    sha256 = "03pz8wskafn848yvciq29kwdvqcgjrk6sjnm8nk9acl89xf0sn96";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  buildCommand = ''
+    ar x $src
+    tar xfvz data.tar.gz
+
+    mkdir -p $out/libexec/hipchat
+    d=$out/libexec/hipchat/lib
+    mv opt/HipChat4/* $out/libexec/hipchat/
+    mv usr/share $out
+
+    for file in $(find $d -type f); do
+        patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $file || true
+        patchelf --set-rpath ${rpath}:$out/libexec/hipchat/lib:\$ORIGIN $file || true
+    done
+
+    patchShebangs $d/linuxbrowserlaunch.sh
+
+    substituteInPlace $out/share/applications/hipchat4.desktop \
+      --replace /opt/HipChat4/bin/HipChat4 $out/bin/hipchat
+
+    makeWrapper $d/HipChat.bin $out/bin/hipchat \
+      --run 'export HIPCHAT_LD_LIBRARY_PATH=$LD_LIBRARY_PATH' \
+      --run 'export HIPCHAT_QT_PLUGIN_PATH=$QT_PLUGIN_PATH' \
+      --set QT_XKB_CONFIG_ROOT ${xkeyboard_config}/share/X11/xkb \
+      --set QTWEBENGINEPROCESS_PATH $d/QtWebEngineProcess
+
+    makeWrapper $d/QtWebEngineProcess.bin $d/QtWebEngineProcess \
+      --set QT_PLUGIN_PATH "$d/plugins"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Desktop client for HipChat services";
+    homepage = http://www.hipchat.com;
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ puffnfresh ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/jackline/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/jackline/default.nix
new file mode 100644
index 000000000000..689445d7dcb8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/jackline/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, ocamlPackages }:
+
+assert stdenv.lib.versionAtLeast ocamlPackages.ocaml.version "4.02.2";
+
+stdenv.mkDerivation rec {
+  version = "2018-05-11";
+  name = "jackline-${version}";
+
+  src = fetchFromGitHub {
+    owner  = "hannesm";
+    repo   = "jackline";
+    rev    = "bc36b1c8b80fee6baba4f91011cd01b82a06e8eb";
+    sha256 = "1xx2yx8a95m84sa1bkxi3rlx7pd39zkqwk3znj0zzz3cni6apfrz";
+  };
+
+  buildInputs = with ocamlPackages; [
+                  ocaml ocamlbuild findlib topkg ppx_sexp_conv
+                  erm_xmpp tls nocrypto x509 ocaml_lwt otr astring
+                  ptime notty sexplib hex uutf
+                ];
+
+  buildPhase = "${ocamlPackages.topkg.run} build --pinned true";
+
+  inherit (ocamlPackages.topkg) installPhase;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/hannesm/jackline;
+    description = "Terminal-based XMPP client in OCaml";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ sternenseemann ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/default.nix
new file mode 100644
index 000000000000..820a742245ed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/default.nix
@@ -0,0 +1,71 @@
+{ stdenv, lib, fetchurl, makeDesktopItem, unzip, ant, jdk
+# Optional, Jitsi still runs without, but you may pass null:
+, alsaLib, dbus, gtk2, libpulseaudio, openssl, xorg
+}:
+
+stdenv.mkDerivation rec {
+  name = "jitsi-${version}";
+  version = "2.10.5550";
+
+  src = fetchurl {
+    url = "https://download.jitsi.org/jitsi/src/jitsi-src-${version}.zip";
+    sha256 = "11vjchc3dnzj55x7c62wsm6masvwmij1ifkds917r1qvil1nzz6d";
+  };
+
+  patches = [ ./jitsi.patch ];
+
+  jitsiItem = makeDesktopItem {
+    name = "Jitsi";
+    exec = "jitsi";
+    comment = "VoIP and Instant Messaging client";
+    desktopName = "Jitsi";
+    genericName = "Instant Messaging";
+    categories = "Application;Internet;";
+  };
+
+  libPath = lib.makeLibraryPath ([
+    stdenv.cc.cc  # For libstdc++.
+    alsaLib
+    dbus
+    gtk2
+    libpulseaudio
+    openssl
+    xorg.libX11
+    xorg.libXext
+    xorg.libXScrnSaver
+    xorg.libXv
+  ]);
+
+  nativeBuildInputs = [ unzip ];
+  buildInputs = [ ant jdk ];
+
+  buildPhase = ''ant make'';
+
+  installPhase = ''
+    mkdir -p $out
+    cp -a lib $out/
+    rm -rf $out/lib/native/solaris
+    cp -a sc-bundles $out/
+    mkdir $out/bin
+    cp resources/install/generic/run.sh $out/bin/jitsi
+    chmod +x $out/bin/jitsi
+    substituteInPlace $out/bin/jitsi \
+      --subst-var-by JAVA ${jdk}/bin/java \
+      --subst-var-by EXTRALIBS ${gtk2.out}/lib
+    sed -e 's,^java\ ,${jdk}/bin/java ,' -i $out/bin/jitsi
+    patchShebangs $out
+    libPath="$libPath:${jdk.home}/lib/${jdk.architecture}"
+    find $out/ -type f -name '*.so' | while read file; do
+      patchelf --set-rpath "$libPath" "$file" && \
+          patchelf --shrink-rpath "$file"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://jitsi.org/;
+    description = "Open Source Video Calls and Chat";
+    license = licenses.lgpl21Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ndowens ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/jitsi.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/jitsi.patch
new file mode 100644
index 000000000000..e477bdfe2fd4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/jitsi/jitsi.patch
@@ -0,0 +1,27 @@
+--- /home/dario/Downloads/jitsi/resources/install/generic/run.sh	2013-11-01 15:37:21.000000000 +0000
++++ jitsi/resources/install/generic/run.sh	2014-03-04 11:52:30.796397567 +0000
+@@ -1,4 +1,9 @@
+-mkdir -p $HOME/.sip-communicator/log
++#! /bin/bash
++# A modified version of the generic run.sh
++
++#mkdir -p $HOME/.sip-communicator/log
++
++cd "$(dirname "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")")"
+
+ # Get architecture
+ ARCH=`uname -m | sed -e s/x86_64/64/ -e s/i.86/32/`
+@@ -6,7 +11,9 @@
+ # Additionnal JVM arguments
+ CLIENTARGS=""
+
++NATIVELIBS="lib/native/linux-64"
+ if [ $ARCH = 32 ]
+ then
+     CLIENTARGS="-client -Xmx256m"
++    NATIVELIBS="lib/native/linux"
+ fi
+
+ export PATH=$PATH:native
+-java $CLIENTARGS -classpath "lib/felix.jar:sc-bundles/sc-launcher.jar:sc-bundles/util.jar:lib/" -Djava.library.path=native -Dfelix.config.properties=file:./lib/felix.client.run.properties -Djava.util.logging.config.file=lib/logging.properties net.java.sip.communicator.launcher.SIPCommunicator
++LD_LIBRARY_PATH=@EXTRALIBS@ exec @JAVA@ $CLIENTARGS -classpath "lib/felix.jar:sc-bundles/sc-launcher.jar:sc-bundles/util.jar:lib/" -Djava.library.path=$NATIVELIBS -Dfelix.config.properties=file:lib/felix.client.run.properties -Djava.util.logging.config.file=lib/logging.properties net.java.sip.communicator.launcher.SIPCommunicator
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/linphone/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/linphone/default.nix
new file mode 100644
index 000000000000..4282e99a712e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/linphone/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, intltool, pkgconfig, readline, openldap, cyrus_sasl, libupnp
+, zlib, libxml2, gtk2, libnotify, speex, ffmpeg, libX11, libsoup, udev
+, ortp, mediastreamer, sqlite, belle-sip, libosip, libexosip, bzrtp
+, mediastreamer-openh264, bctoolbox, makeWrapper, fetchFromGitHub, cmake
+, libmatroska, bcunit, doxygen, gdk_pixbuf, glib, cairo, pango, polarssl
+, python, graphviz, belcard
+, withGui ? true
+}:
+
+stdenv.mkDerivation rec {
+  baseName = "linphone";
+  version = "3.12.0";
+  name = "${baseName}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "BelledonneCommunications";
+    repo = "${baseName}";
+    rev = "${version}";
+    sha256 = "0az2ywrpx11sqfb4s4r2v726avcjf4k15bvrqj7xvhz7hdndmh0j";
+  };
+
+  cmakeFlags = stdenv.lib.optional withGui [ "-DENABLE_GTK_UI=ON" ];
+
+  postPatch = ''
+    touch coreapi/liblinphone_gitversion.h
+  '';
+
+  buildInputs = [
+    readline openldap cyrus_sasl libupnp zlib libxml2 gtk2 libnotify speex ffmpeg libX11
+    polarssl libsoup udev ortp mediastreamer sqlite belle-sip libosip libexosip
+    bctoolbox libmatroska bcunit gdk_pixbuf glib cairo pango bzrtp belcard
+  ];
+
+  nativeBuildInputs = [
+    intltool pkgconfig makeWrapper cmake doxygen graphviz
+    (python.withPackages (ps: [ ps.pystache ps.six ]))
+  ];
+
+  NIX_CFLAGS_COMPILE = " -Wno-error -I${glib.dev}/include/glib-2.0
+    -I${glib.out}/lib/glib-2.0/include -I${gtk2.dev}/include/gtk-2.0/
+    -I${cairo.dev}/include/cairo -I${pango.dev}/include/pango-1.0
+    -I${gtk2}/lib/gtk-2.0/include
+    -DLIBLINPHONE_GIT_VERSION=\"v${version}\"
+    ";
+
+  postInstall = ''
+    for i in $(cd $out/bin && ls); do
+      wrapProgram $out/bin/$i --set MEDIASTREAMER_PLUGINS_DIR ${mediastreamer-openh264}/lib/mediastreamer/plugins
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.linphone.org/;
+    description = "Open Source video SIP softphone";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/matrique/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/matrique/default.nix
new file mode 100644
index 000000000000..91ba8e7175ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/matrique/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, fetchFromGitLab, fetchFromGitHub, qmake
+, qtquickcontrols2, qtmultimedia, qtgraphicaleffects
+, libqmatrixclient
+}:
+
+let
+
+  libqmatrixclient_git = libqmatrixclient.overrideDerivation (oldAttrs: {
+    name = "libqmatrixclient-git-for-matrique";
+    src = fetchFromGitHub {
+      owner = "QMatrixClient";
+      repo = "libqmatrixclient";
+      rev = "d9ff200f";
+      sha256 = "0qxkffg1499wnn8rbndq6z51sz6hiij2pkp40cvs530sl0zg0c69";
+    };
+  });
+
+  SortFilterProxyModel = fetchFromGitLab {
+    owner = "b0";
+    repo = "SortFilterProxyModel";
+    rev = "3c2c125c";
+    sha256 = "1494dvq7kiq0ymf5f9hr47pw80zv3m3dncnaw1pnzs7mhkf2s5fr";
+  };
+
+in stdenv.mkDerivation rec {
+  name = "matrique-${version}";
+  version = "250";
+
+  src = fetchFromGitLab {
+    owner = "b0";
+    repo = "matrique";
+    rev = version;
+    sha256 = "0l7ag2q3l8ixczwc43igvkkl81g5s5j032gzizmgpzb1bjpdgry7";
+  };
+
+  postPatch = ''
+    rm -r include/*
+    ln -sf ${libqmatrixclient_git.src} include/libqmatrixclient
+    ln -sf ${SortFilterProxyModel} include/SortFilterProxyModel
+  '';
+
+  nativeBuildInputs = [ qmake ];
+  buildInputs = [
+    qtquickcontrols2 qtmultimedia qtgraphicaleffects
+    libqmatrixclient_git
+  ];
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "A glossy client for Matrix";
+    maintainers = with maintainers; [ fpletz ];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix
new file mode 100644
index 000000000000..e8c28dc3e536
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mattermost-desktop/default.nix
@@ -0,0 +1,88 @@
+{ stdenv, fetchurl, gnome2, gtk3, pango, atk, cairo, gdk_pixbuf, glib,
+freetype, fontconfig, dbus, libX11, xorg, libXi, libXcursor, libXdamage,
+libXrandr, libXcomposite, libXext, libXfixes, libXrender, libXtst,
+libXScrnSaver, nss, nspr, alsaLib, cups, expat, udev }:
+let
+  rpath = stdenv.lib.makeLibraryPath [
+    alsaLib
+    atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk_pixbuf
+    glib
+    gnome2.GConf
+    gtk3
+    pango
+    libX11
+    libXScrnSaver
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXtst
+    nspr
+    nss
+    stdenv.cc.cc
+    udev
+    xorg.libxcb
+  ];
+
+in
+  stdenv.mkDerivation rec {
+    name = "mattermost-desktop-${version}";
+    version = "4.2.0";
+
+    src =
+      if stdenv.hostPlatform.system == "x86_64-linux" then
+        fetchurl {
+          url = "https://releases.mattermost.com/desktop/${version}/${name}-linux-x64.tar.gz";
+          sha256 = "0hka94gwpscjn61032c0grpjv5gjb0j8rkx6pgwci617n29xkyf6";
+        }
+      else if stdenv.hostPlatform.system == "i686-linux" then
+        fetchurl {
+          url = "https://releases.mattermost.com/desktop/${version}/${name}-linux-ia32.tar.gz";
+          sha256 = "1nx2sgbnr60h6kn56wv54m7cvyx27d64bfprpb94hqd5c2z21x80";
+        }
+      else
+        throw "Mattermost-Desktop is not currently supported on ${stdenv.hostPlatform.system}";
+
+    dontBuild = true;
+    dontConfigure = true;
+    dontPatchELF = true;
+
+    installPhase = ''
+      mkdir -p $out/share/mattermost-desktop
+      cp -R . $out/share/mattermost-desktop
+
+      mkdir -p "$out/bin"
+      ln -s $out/share/mattermost-desktop/mattermost-desktop \
+        $out/bin/mattermost-desktop
+
+      patchShebangs $out/share/mattermost-desktop/create_desktop_file.sh
+      $out/share/mattermost-desktop/create_desktop_file.sh
+      rm $out/share/mattermost-desktop/create_desktop_file.sh
+      mkdir -p $out/share/applications
+      mv Mattermost.desktop $out/share/applications/Mattermost.desktop
+
+      patchelf \
+        --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath "${rpath}:$out/share/mattermost-desktop" \
+        $out/share/mattermost-desktop/mattermost-desktop
+    '';
+
+    meta = with stdenv.lib; {
+      description = "Mattermost Desktop client";
+      homepage    = https://about.mattermost.com/;
+      license     = licenses.asl20;
+      platforms   = [ "x86_64-linux" "i686-linux" ];
+      maintainers = [ maintainers.joko ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mcabber/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/mcabber/default.nix
new file mode 100644
index 000000000000..d86d62021fbd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mcabber/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, openssl, ncurses, pkgconfig, glib, loudmouth, libotr
+, gpgme
+}:
+
+stdenv.mkDerivation rec {
+  name = "mcabber-${version}";
+  version = "1.1.0";
+
+  src = fetchurl {
+    url = "https://mcabber.com/files/mcabber-${version}.tar.bz2";
+    sha256 = "1ggh865p1rf10ffsnf4g6qv9i8bls36dxdb1nzs5r9vdqci2rz04";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ openssl ncurses glib loudmouth libotr gpgme ];
+
+  configureFlags = [
+    "--with-openssl=${openssl.dev}"
+    "--enable-modules"
+    "--enable-otr"
+  ];
+
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    homepage = http://mcabber.com/;
+    description = "Small Jabber console client";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ pSub ];
+    platforms = with platforms; linux;
+    updateWalker = true;
+    downloadPage = "http://mcabber.com/files/";
+    downloadURLRegexp = "mcabber-[0-9.]+[.]tar[.][a-z0-9]+$";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile
new file mode 100644
index 000000000000..0eed9808ab4f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile
@@ -0,0 +1,40 @@
+alias __source_distinct__ source
+def source(url)
+  @loaded ||= {}
+  unless @loaded[url]
+    @loaded[url] = true
+    __source_distinct__(url) end end
+
+source 'https://rubygems.org'
+
+group :default do
+  gem 'oauth', '>= 0.5.1'
+  gem 'json_pure', '~> 1.8'
+  gem 'addressable', '~> 2.3'
+  gem 'memoist', '>= 0.16', '< 0.17'
+  gem 'ruby-hmac', '~> 0.4'
+  gem 'typed-array', '~> 0.1'
+  gem 'delayer', '~> 0.0'
+  gem 'pluggaloid', '>= 1.1.1', '< 2.0'
+  gem 'delayer-deferred', '>= 1.0.4', '< 1.1'
+  gem 'twitter-text', '>= 1.14.6'
+end
+
+group :test do
+  gem 'test-unit', '~> 3.0'
+  gem 'rake', '~> 10.1'
+  gem 'watch', '~> 0.1'
+  gem 'mocha', '~> 0.14'
+  gem 'webmock', '~> 1.17'
+  gem 'ruby-prof'
+end
+
+
+group :plugin do
+  Dir.glob(File.expand_path(File.join(__dir__, 'core/plugin/*/Gemfile'))){ |path|
+    eval File.open(path).read
+  }
+  Dir.glob(File.join(File.expand_path(ENV['MIKUTTER_CONFROOT'] || '~/.mikutter'), 'plugin/*/Gemfile')){ |path|
+    eval File.open(path).read
+  }
+end
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock
new file mode 100644
index 000000000000..69530be4a446
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/Gemfile.lock
@@ -0,0 +1,109 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    addressable (2.5.2)
+      public_suffix (>= 2.0.2, < 4.0)
+    atk (3.1.9)
+      glib2 (= 3.1.9)
+    cairo (1.15.10)
+      native-package-installer (>= 1.0.3)
+      pkg-config (>= 1.2.2)
+    cairo-gobject (3.1.9)
+      cairo
+      glib2 (= 3.1.9)
+    crack (0.4.3)
+      safe_yaml (~> 1.0.0)
+    delayer (0.0.2)
+    delayer-deferred (1.0.4)
+      delayer (>= 0.0.2, < 0.1)
+    gdk_pixbuf2 (3.1.9)
+      gio2 (= 3.1.9)
+    gettext (3.0.9)
+      locale (>= 2.0.5)
+      text
+    gio2 (3.1.9)
+      glib2 (= 3.1.9)
+      gobject-introspection (= 3.1.9)
+    glib2 (3.1.9)
+      native-package-installer (>= 1.0.3)
+      pkg-config (>= 1.2.2)
+    gobject-introspection (3.1.9)
+      glib2 (= 3.1.9)
+    gtk2 (3.1.9)
+      atk (= 3.1.9)
+      gdk_pixbuf2 (= 3.1.9)
+      pango (= 3.1.9)
+    hashdiff (0.3.7)
+    httpclient (2.8.3)
+    instance_storage (1.0.0)
+    json_pure (1.8.6)
+    locale (2.1.2)
+    memoist (0.16.0)
+    metaclass (0.0.4)
+    mini_portile2 (2.3.0)
+    mocha (0.14.0)
+      metaclass (~> 0.0.1)
+    moneta (1.0.0)
+    native-package-installer (1.0.4)
+    nokogiri (1.8.1)
+      mini_portile2 (~> 2.3.0)
+    oauth (0.5.3)
+    pango (3.1.9)
+      cairo (>= 1.14.0)
+      cairo-gobject (= 3.1.9)
+      gobject-introspection (= 3.1.9)
+    pkg-config (1.2.8)
+    pluggaloid (1.1.1)
+      delayer
+      instance_storage (>= 1.0.0, < 2.0.0)
+    power_assert (1.1.1)
+    public_suffix (3.0.0)
+    rake (10.5.0)
+    ruby-hmac (0.4.0)
+    ruby-prof (0.16.2)
+    safe_yaml (1.0.4)
+    test-unit (3.2.6)
+      power_assert
+    text (1.3.1)
+    totoridipjp (0.1.0)
+    twitter-text (1.14.7)
+      unf (~> 0.1.0)
+    typed-array (0.1.2)
+    unf (0.1.4)
+      unf_ext
+    unf_ext (0.0.7.4)
+    watch (0.1.0)
+    webmock (1.24.6)
+      addressable (>= 2.3.6)
+      crack (>= 0.3.2)
+      hashdiff
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  addressable (~> 2.3)
+  delayer (~> 0.0)
+  delayer-deferred (>= 1.0.4, < 1.1)
+  gettext (~> 3.0.1)
+  gtk2 (= 3.1.9)
+  httpclient
+  json_pure (~> 1.8)
+  memoist (>= 0.16, < 0.17)
+  mocha (~> 0.14)
+  moneta
+  nokogiri
+  oauth (>= 0.5.1)
+  pluggaloid (>= 1.1.1, < 2.0)
+  rake (~> 10.1)
+  ruby-hmac (~> 0.4)
+  ruby-prof
+  test-unit (~> 3.0)
+  totoridipjp
+  twitter-text (>= 1.14.6)
+  typed-array (~> 0.1)
+  watch (~> 0.1)
+  webmock (~> 1.17)
+
+BUNDLED WITH
+   1.14.6
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/gtk/Gemfile b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/gtk/Gemfile
new file mode 100644
index 000000000000..b7d19db37630
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/gtk/Gemfile
@@ -0,0 +1,3 @@
+source 'https://rubygems.org'
+
+gem 'gtk2', '3.1.9'
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/image_file_cache/Gemfile b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/image_file_cache/Gemfile
new file mode 100644
index 000000000000..f86005fef078
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/image_file_cache/Gemfile
@@ -0,0 +1 @@
+gem 'moneta'
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/photo_support/Gemfile b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/photo_support/Gemfile
new file mode 100644
index 000000000000..ee2ecf52d42e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/photo_support/Gemfile
@@ -0,0 +1,5 @@
+source 'https://rubygems.org'
+
+gem 'nokogiri'
+gem 'httpclient'
+gem 'totoridipjp'
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/uitranslator/Gemfile b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/uitranslator/Gemfile
new file mode 100644
index 000000000000..1625327f16dc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/core/plugin/uitranslator/Gemfile
@@ -0,0 +1,5 @@
+source 'https://rubygems.org'
+
+group :default do
+  gem 'gettext', '~> 3.0.1'
+end
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/default.nix
new file mode 100644
index 000000000000..42888da842c7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchurl
+, bundlerEnv, ruby
+, alsaUtils, libnotify, which, wrapGAppsHook, gtk2
+}:
+
+stdenv.mkDerivation rec {
+  name = "mikutter-${version}";
+  version = "3.5.13";
+
+  src = fetchurl {
+    url = "https://mikutter.hachune.net/bin/mikutter.${version}.tar.gz";
+    sha256 = "2e01cd6cfe0caad663a381e5263f6d8030f0fb7cd8d4f858d320166516c7c320";
+  };
+
+  env = bundlerEnv {
+    name = "mikutter-${version}-gems";
+    gemdir = ./.;
+
+    inherit ruby;
+  };
+
+  buildInputs = [ alsaUtils libnotify which gtk2 ruby ];
+  nativeBuildInputs = [ wrapGAppsHook ];
+
+  postUnpack = ''
+    rm -rf $sourceRoot/vendor
+  '';
+
+  installPhase = ''
+    install -v -D -m644 README $out/share/doc/mikutter/README
+    install -v -D -m644 LICENSE $out/share/doc/mikutter/LICENSE
+    rm -v README LICENSE
+
+    cp -rv . $out
+    mkdir $out/bin/
+    # hack wrapGAppsHook wants a file not a symlink
+    mv $out/mikutter.rb $out/bin/mikutter
+
+    gappsWrapperArgs+=(
+      --prefix PATH : "${ruby}/bin:${alsaUtils}/bin:${libnotify}/bin"
+      --prefix GEM_HOME : "${env}/${env.ruby.gemPath}"
+      --set DISABLE_BUNDLER_SETUP 1
+    )
+
+    mkdir -p $out/share/mikutter $out/share/applications
+    ln -sv $out/core/skin $out/share/mikutter/skin
+    substituteAll ${./mikutter.desktop} $out/share/applications/mikutter.desktop
+  '';
+
+  postFixup = ''
+    mv $out/bin/.mikutter-wrapped $out/mikutter.rb
+    substituteInPlace $out/bin/mikutter \
+      --replace "$out/bin/.mikutter-wrapped" "$out/mikutter.rb"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An extensible Twitter client";
+    homepage = https://mikutter.hachune.net;
+    platforms = ruby.meta.platforms;
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix
new file mode 100644
index 000000000000..ef7091689b37
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/gemset.nix
@@ -0,0 +1,374 @@
+{
+  addressable = {
+    dependencies = ["public_suffix"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk";
+      type = "gem";
+    };
+    version = "2.5.2";
+  };
+  atk = {
+    dependencies = ["glib2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "18l99gv6828rn59q8k6blxg146b025fj44klrcisffw6h9s9qqxm";
+      type = "gem";
+    };
+    version = "3.1.9";
+  };
+  cairo = {
+    dependencies = ["native-package-installer" "pkg-config"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1f0n057cj6cjz7f38pwnflrkbwkl8pm3g9ssa51flyxr7lcpcw7c";
+      type = "gem";
+    };
+    version = "1.15.10";
+  };
+  cairo-gobject = {
+    dependencies = ["cairo" "glib2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qnsd9203qc6hl2i4hfzngr8v06rfk4vxfn6sbr8b4c1q4n0lq26";
+      type = "gem";
+    };
+    version = "3.1.9";
+  };
+  crack = {
+    dependencies = ["safe_yaml"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0abb0fvgw00akyik1zxnq7yv391va148151qxdghnzngv66bl62k";
+      type = "gem";
+    };
+    version = "0.4.3";
+  };
+  delayer = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "156vy4x1d2jgafkjaafzfz7g8ghl4p5zgbl859b8slp4wdxy3v1r";
+      type = "gem";
+    };
+    version = "0.0.2";
+  };
+  delayer-deferred = {
+    dependencies = ["delayer"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1rp2hpik8gs1kzwwq831jwj1iv5bhfwd3dmm9nvizy3nqpz1gvvb";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  gdk_pixbuf2 = {
+    dependencies = ["gio2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0x7vna77qw26479dydzfs1sq7xmq31xfly2pn5fvh35wg0q4y07d";
+      type = "gem";
+    };
+    version = "3.1.9";
+  };
+  gettext = {
+    dependencies = ["locale" "text"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14vw306p46w2kyad3kp9vq56zw3ch6px30wkhl5x0qkx8d3ya3ir";
+      type = "gem";
+    };
+    version = "3.0.9";
+  };
+  gio2 = {
+    dependencies = ["glib2" "gobject-introspection"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1dxyaxp32m19mynw20x39vkb50wa4jcxczwmbkq7pcg55j76wwhm";
+      type = "gem";
+    };
+    version = "3.1.9";
+  };
+  glib2 = {
+    dependencies = ["native-package-installer" "pkg-config"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y1ws895345a88wikqil1x87cpd7plmwfi635piam7il6vsb4h73";
+      type = "gem";
+    };
+    version = "3.1.9";
+  };
+  gobject-introspection = {
+    dependencies = ["glib2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04gla6z9y8g0d69wlwl0wr7pwyzqg132pfs1n9fq6fgkjb6l7sm3";
+      type = "gem";
+    };
+    version = "3.1.9";
+  };
+  gtk2 = {
+    dependencies = ["atk" "gdk_pixbuf2" "pango"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mshgsw2x0w5wfcp17qnsja50aafbjxy2g42kvk5sr19l0chkkkq";
+      type = "gem";
+    };
+    version = "3.1.9";
+  };
+  hashdiff = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0yj5l2rw8i8jc725hbcpc4wks0qlaaimr3dpaqamfjkjkxl0hjp9";
+      type = "gem";
+    };
+    version = "0.3.7";
+  };
+  httpclient = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "19mxmvghp7ki3klsxwrlwr431li7hm1lczhhj8z4qihl2acy8l99";
+      type = "gem";
+    };
+    version = "2.8.3";
+  };
+  instance_storage = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "08nf5fhq9dckq9lmaklxydq0hrlfi7phk66gr3bggxg45zd687pl";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  json_pure = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1vllrpm2hpsy5w1r7000mna2mhd7yfrmd8hi713lk0n9mv27bmam";
+      type = "gem";
+    };
+    version = "1.8.6";
+  };
+  locale = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x";
+      type = "gem";
+    };
+    version = "2.1.2";
+  };
+  memoist = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pq8fhqh8w25qcw9v3vzfb0i6jp0k3949ahxc3wrwz2791dpbgbh";
+      type = "gem";
+    };
+    version = "0.16.0";
+  };
+  metaclass = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hp99y2b1nh0nr8pc398n3f8lakgci6pkrg4bf2b2211j1f6hsc5";
+      type = "gem";
+    };
+    version = "0.0.4";
+  };
+  mini_portile2 = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "13d32jjadpjj6d2wdhkfpsmy68zjx90p49bgf8f7nkpz86r1fr11";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  mocha = {
+    dependencies = ["metaclass"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0id1x7g46fzy8f4jna20ys329ydaj3sad75qs9db2a6nd7f0zc2b";
+      type = "gem";
+    };
+    version = "0.14.0";
+  };
+  moneta = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pgwn6xnlh7vviy511mfgkv2j3sfihn5ic2zabmyrs2nh6kfa912";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  native-package-installer = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0svj2sg7y7izl90qrvzd2fcb1rkq8bv3bd6lr9sh1ml18v3w882a";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "105xh2zkr8nsyfaj2izaisarpnkrrl9000y3nyflg9cbzrfxv021";
+      type = "gem";
+    };
+    version = "1.8.1";
+  };
+  oauth = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1a5cfg9pm3mxsmlk1slj652vza8nha2lpbpbmf3rrk0lh6zi4d0b";
+      type = "gem";
+    };
+    version = "0.5.3";
+  };
+  pango = {
+    dependencies = ["cairo" "cairo-gobject" "gobject-introspection"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0swld0s01djjlqrari0ib75703mb7qr4ydn00cqfhdr7xim66hjk";
+      type = "gem";
+    };
+    version = "3.1.9";
+  };
+  pkg-config = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "056qb6cwbw2l9riq376wazx4kwd67cdilyclpa6j38mfsswpmzws";
+      type = "gem";
+    };
+    version = "1.2.8";
+  };
+  pluggaloid = {
+    dependencies = ["delayer" "instance_storage"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0p9s1bzw02jzjlpjpxsbfsy1cyfbqs10iqvhxqh4xgyh72nry9zr";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  power_assert = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0h0s1clasynlbk3782801c61yx24pdv959fpw53g5yl8gxqj34iz";
+      type = "gem";
+    };
+    version = "1.1.1";
+  };
+  public_suffix = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0snaj1gxfib4ja1mvy3dzmi7am73i0mkqr0zkz045qv6509dhj5f";
+      type = "gem";
+    };
+    version = "3.0.0";
+  };
+  rake = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jcabbgnjc788chx31sihc5pgbqnlc1c75wakmqlbjdm8jns2m9b";
+      type = "gem";
+    };
+    version = "10.5.0";
+  };
+  ruby-hmac = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01zym41f8fqbmxfz8zv19627swi62ka3gp33bfbkc87v5k7mw954";
+      type = "gem";
+    };
+    version = "0.4.0";
+  };
+  ruby-prof = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0y13gdcdajfgrkx5rc9pvb7bwkyximwl5yrhq05gkmhflzdr7kag";
+      type = "gem";
+    };
+    version = "0.16.2";
+  };
+  safe_yaml = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094";
+      type = "gem";
+    };
+    version = "1.0.4";
+  };
+  test-unit = {
+    dependencies = ["power_assert"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1gl5b2d6bysnm0a1zx54qn6iwd67f6gsjy0c7zb68ag0453rqcnv";
+      type = "gem";
+    };
+    version = "3.2.6";
+  };
+  text = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1x6kkmsr49y3rnrin91rv8mpc3dhrf3ql08kbccw8yffq61brfrg";
+      type = "gem";
+    };
+    version = "1.3.1";
+  };
+  totoridipjp = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03ci9hbwc6xf4x0lkm6px4jgbmi37n8plsjhbf2ir5vka9f29lck";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  twitter-text = {
+    dependencies = ["unf"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1732h7hy1k152w8wfvjsx7b79alk45i5imwd37ia4qcx8hfm3gvg";
+      type = "gem";
+    };
+    version = "1.14.7";
+  };
+  typed-array = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qlv2rnkin9rwkgjx3k5qvc17m0m7jf5cdirw3wxbjnw5kga27w9";
+      type = "gem";
+    };
+    version = "0.1.2";
+  };
+  unf = {
+    dependencies = ["unf_ext"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9";
+      type = "gem";
+    };
+    version = "0.1.4";
+  };
+  unf_ext = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "14hr2dzqh33kqc0xchs8l05pf3kjcayvad4z1ip5rdjxrkfk8glb";
+      type = "gem";
+    };
+    version = "0.0.7.4";
+  };
+  watch = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "02g4g6ynnldyjjzrh19r584gj4z6ksff7h0ajz5jdwhpp5y7cghx";
+      type = "gem";
+    };
+    version = "0.1.0";
+  };
+  webmock = {
+    dependencies = ["addressable" "crack" "hashdiff"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "03vlr6axajz6c7xmlk0w1kvkxc92f8y2zp27wq1z6yk916ry25n5";
+      type = "gem";
+    };
+    version = "1.24.6";
+  };
+}
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop
new file mode 100644
index 000000000000..092f5f35cbf8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/mikutter.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Name=mikutter
+Comment=Twitter Client
+Type=Application
+Exec=@out@/bin/mikutter
+Icon=@out@/core/skin/data/icon.png
+Terminal=false
+Categories=Network;
+Keywords=Twitter;
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/shell.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/shell.nix
new file mode 100644
index 000000000000..bc83767af32a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mikutter/shell.nix
@@ -0,0 +1,18 @@
+{ pkgs ? import <nixpkgs> {} }:
+
+pkgs.stdenv.mkDerivation {
+  name = "mikutter-shell";
+  buildInputs = with pkgs; [
+    bundix
+    bundler
+  ];
+
+  shellHook = ''
+    export MIKUTTER_CONFROOT="/homeless-shelter"
+    truncate --size 0 Gemfile.lock
+    bundle lock
+    bundle package --path=vendor/bundle --no-install
+    rm -rf vendor .bundle
+    bundix -d
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/mm/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/mm/default.nix
new file mode 100644
index 000000000000..a75835b3c7e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/mm/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, buildGoPackage, fetchFromGitLab }:
+
+buildGoPackage rec {
+  name = "mm-${version}";
+  version = "2016.11.04";
+
+  goPackagePath = "gitlab.com/meutraa/mm";
+
+  src = fetchFromGitLab {
+    owner = "meutraa";
+    repo = "mm";
+    rev = "473fdd97285168054b672dbad2ffc4047324c518";
+    sha256 = "1s8v5gxpw1sms1g3i8nq2x2mmmyz97qkmxs1fzlspfcd6i8vknkp";
+  };
+
+  meta = {
+    description = "A file system based matrix client";
+    homepage = https://gitlab.com/meutraa/mm;
+    license = stdenv.lib.licenses.isc;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/nheko/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/nheko/default.nix
new file mode 100644
index 000000000000..4a669f127e54
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/nheko/default.nix
@@ -0,0 +1,75 @@
+{ lib, stdenv, fetchFromGitHub, fetchurl
+, cmake, cmark, lmdb, qt5, qtmacextras, mtxclient
+, boost, spdlog, olm, pkgconfig
+}:
+
+let
+  tweeny = fetchFromGitHub {
+    owner = "mobius3";
+    repo = "tweeny";
+    rev = "b94ce07cfb02a0eb8ac8aaf66137dabdaea857cf";
+    sha256 = "1wyyq0j7dhjd6qgvnh3knr70li47hmf5394yznkv9b1indqjx4mi";
+  };
+
+  lmdbxx = fetchFromGitHub {
+    owner = "bendiken";
+    repo = "lmdbxx";
+    rev = "0b43ca87d8cfabba392dfe884eb1edb83874de02";
+    sha256 = "1whsc5cybf9rmgyaj6qjji03fv5jbgcgygp956s3835b9f9cjg1n";
+  };
+in
+stdenv.mkDerivation rec {
+  name = "nheko-${version}";
+  version = "0.6.3";
+
+  src = fetchFromGitHub {
+    owner = "Nheko-Reborn";
+    repo = "nheko";
+    rev = "v${version}";
+    sha256 = "1h95lixciiq904dnfpwxhyf545yfsrphhwqyvs4yrzdfr9k0cf98";
+  };
+
+  # If, on Darwin, you encounter the error
+  #   error: must specify at least one argument for '...' parameter of variadic
+  #   macro [-Werror,-Wgnu-zero-variadic-macro-arguments]
+  # Then adding this parameter is likely the fix you want.
+  #
+  # However, it looks like either cmake doesn't honor this CFLAGS variable, or
+  # darwin's compiler doesn't have the same syntax as gcc for turning off
+  # -Werror selectively.
+  #
+  # Anyway, this is something that will have to be debugged with access to a
+  # darwin-based OS. Sorry about that!
+  #
+  #preConfigure = lib.optionalString stdenv.isDarwin ''
+  #  export CFLAGS=-Wno-error=gnu-zero-variadic-macro-arguments
+  #'';
+
+  postPatch = ''
+    mkdir -p .deps/include/
+    ln -s ${tweeny}/include .deps/include/tweeny
+    ln -s ${spdlog} .deps/spdlog
+  '';
+
+  cmakeFlags = [
+    "-DTWEENY_INCLUDE_DIR=.deps/include"
+    "-DLMDBXX_INCLUDE_DIR=${lmdbxx}"
+  ];
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    mtxclient olm boost lmdb spdlog cmark
+    qt5.qtbase qt5.qtmultimedia qt5.qttools
+  ] ++ lib.optional stdenv.isDarwin qtmacextras;
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Desktop client for the Matrix protocol";
+    homepage = https://github.com/Nheko-Reborn/nheko;
+    maintainers = with maintainers; [ ekleog fpletz ];
+    platforms = platforms.unix;
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/oysttyer/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/oysttyer/default.nix
new file mode 100644
index 000000000000..64443461e375
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/oysttyer/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, lib, perl, perlPackages, coreutils,
+fetchFromGitHub, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "oysttyer-${version}";
+  version = "2.10.0";
+
+  src = fetchFromGitHub {
+    owner  = "oysttyer";
+    repo   = "oysttyer";
+    rev    = "${version}";
+    sha256 = "0cm1hvi68iqgjsg15xdii271pklgzjn9j9afb1c460z71kgy3wz2";
+  };
+
+  buildInputs = [
+    perl
+    makeWrapper
+  ];
+
+  propagatedBuildInputs = with perlPackages; [
+    DateTimeFormatDateParse
+    TermReadLineTTYtter
+    TermReadKey
+  ];
+
+  installPhase = ''
+    ${coreutils}/bin/install -Dm755 \
+      oysttyer.pl \
+      $out/bin/oysttyer
+
+    wrapProgram $out/bin/oysttyer \
+      --prefix PERL5LIB : $PERL5LIB
+  '';
+
+  meta = with lib; {
+    inherit version;
+    description = "Perl Console Twitter Client";
+    homepage    = http://oysttyer.github.io/;
+    maintainers = with maintainers; [ woffs ];
+    license = with licenses; [ ffsl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/carbons/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/carbons/default.nix
new file mode 100644
index 000000000000..60fd5af0a1ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/carbons/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, libxml2, pidgin, pkgconfig, fetchFromGitHub } :
+
+stdenv.mkDerivation rec {
+  name = "pidgin-carbons-${version}";
+  version = "0.1.3";
+
+  src = fetchFromGitHub {
+    owner = "gkdr";
+    repo  = "carbons";
+    rev   = "v${version}";
+    sha256 = "05hcqvsirb7gnpfcszsrgal5q7dajl2wdi2dy7c41zgl377syavw";
+  };
+
+  makeFlags = [ "PURPLE_PLUGIN_DIR=$(out)/lib/pidgin" ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libxml2 pidgin ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/gkdr/carbons;
+    description = "XEP-0280: Message Carbons plugin for libpurple";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jb55 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/msn-pecan/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/msn-pecan/default.nix
new file mode 100644
index 000000000000..452149443096
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/msn-pecan/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pidgin} :
+
+stdenv.mkDerivation {
+  name = "pidgin-msn-pecan-0.1.4";
+  src = fetchurl {
+    url = http://msn-pecan.googlecode.com/files/msn-pecan-0.1.4.tar.bz2;
+    sha256 = "0d43z2ay9is1r2kkc9my8pz0fwdyzv7k19vdmbird18lg7rlbjd2";
+  };
+
+  meta = {
+    description = "Alternative MSN protocol plug-in for Pidgin IM";
+    homepage = https://github.com/felipec/msn-pecan;
+    platforms = stdenv.lib.platforms.linux;
+  };
+
+  makeFlags = [
+    "PURPLE_LIBDIR=${placeholder "out"}/lib"
+    "PURPLE_DATADIR=${placeholder "out"}/share/data"
+  ];
+
+  buildInputs = [pidgin];
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix
new file mode 100644
index 000000000000..9f5c246ede63
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/otr/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, libotr, pidgin, intltool } :
+
+stdenv.mkDerivation rec {
+  name = "pidgin-otr-4.0.2";
+  src = fetchurl {
+    url = "http://www.cypherpunks.ca/otr/${name}.tar.gz";
+    sha256 = "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl";
+  };
+
+  postInstall = "ln -s \$out/lib/pidgin \$out/share/pidgin-otr";
+
+  buildInputs = [ libotr pidgin intltool ];
+
+  meta = with stdenv.lib; {
+    homepage = https://otr.cypherpunks.ca/;
+    description = "Plugin for Pidgin 2.x which implements OTR Messaging";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix
new file mode 100644
index 000000000000..59b1d463c9d2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-latex/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, pkgconfig, pidgin, texLive, imagemagick, glib, gtk2 }:
+
+let version = "1.5.0";
+in
+stdenv.mkDerivation {
+  name = "pidgin-latex-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/pidgin-latex/pidgin-latex_${version}.tar.bz2";
+    sha256 = "9c850aee90d7e59de834f83e09fa6e3e51b123f06e265ead70957608ada95441";
+  };
+
+  nativeBuildInputs = [pkgconfig];
+  buildInputs = [gtk2 glib pidgin];
+  makeFlags = "PREFIX=$(out)";
+
+  postPatch = ''
+    sed -e 's/-Wl,-soname//' -i Makefile
+  '';
+
+  passthru = {
+    wrapArgs = "--prefix PATH ':' ${stdenv.lib.makeBinPath [ texLive imagemagick ]}";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://sourceforge.net/projects/pidgin-latex/;
+    description = "LaTeX rendering plugin for Pidgin IM";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ abbradar ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-mra/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-mra/default.nix
new file mode 100644
index 000000000000..18bf89a5f2ed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-mra/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchgit, pkgconfig, pidgin } :
+
+let
+  version = "54b2992";
+in
+stdenv.mkDerivation rec {
+  name = "pidgin-mra-${version}";
+
+  src = fetchgit {
+    url = "https://github.com/dreadatour/pidgin-mra";
+    rev = "${version}";
+    sha256 = "1adq57g11kw7bfpivyvfk3nlpjkc8raiw4bzn3gn4nx3m0wl99vw";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin ];
+
+  postPatch = ''
+    sed -i 's|-I/usr/include/libpurple|$(shell pkg-config --cflags purple)|' Makefile
+  '';
+
+  makeFlags = [
+    "DESTDIR=/"
+    "LIBDIR=${placeholder "out"}/lib"
+    "DATADIR=${placeholder "out"}/share"
+  ];
+
+  meta = {
+    homepage = https://github.com/dreadatour/pidgin-mra;
+    description = "Mail.ru Agent plugin for Pidgin / libpurple";
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-opensteamworks/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-opensteamworks/default.nix
new file mode 100644
index 000000000000..7e86a390edcb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-opensteamworks/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, pidgin, glib, json-glib, nss, nspr, libgnome-keyring } :
+
+stdenv.mkDerivation rec {
+  name = "pidgin-opensteamworks-${version}";
+  version = "unstable-2018-08-02";
+
+  src = fetchFromGitHub {
+    owner = "EionRobb";
+    repo = "pidgin-opensteamworks";
+    rev = "b16a636d177f4a8862abdfbdb2c0994712ea0cd3";
+    sha256 = "0qyxfrfzsm43f1gmbg350znwxld1fqr9a9yziqs322bx2vglzgfh";
+  };
+
+  preConfigure = "cd steam-mobile";
+  installFlags = [
+    "PLUGIN_DIR_PURPLE=${placeholder "out"}/lib/purple-2"
+    "DATA_ROOT_DIR_PURPLE=${placeholder "out"}/share"
+  ];
+
+  buildInputs = [ pidgin glib json-glib nss nspr libgnome-keyring ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/EionRobb/pidgin-opensteamworks;
+    description = "Plugin for Pidgin 2.x which implements Steam Friends/Steam IM compatibility";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ arobyn ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-osd/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-osd/default.nix
new file mode 100644
index 000000000000..ff065e7e2ce3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-osd/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, pidgin, xosd
+, autoreconfHook } :
+
+stdenv.mkDerivation rec {
+  name = "pidgin-osd-0.2.0";
+  src = fetchFromGitHub {
+    owner = "edanaher";
+    repo = "pidgin-osd";
+    rev = name;
+    sha256 = "07wa9anz99hnv6kffpcph3fbq8mjbyq17ij977ggwgw37zb9fzb5";
+  };
+
+  # autoreconf is run such that it *really* wants all the files, and there's no
+  # default ChangeLog.  So make it happy.
+  preAutoreconf = "touch ChangeLog";
+
+  postInstall = ''
+    mkdir -p $out/lib/pidgin
+    mv $out/lib/pidgin-osd.{la,so} $out/lib/pidgin
+  '';
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ xosd pidgin ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/mbroemme/pidgin-osd;
+    description = "Plugin for Pidgin which implements on-screen display via libxosd";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-skypeweb/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-skypeweb/default.nix
new file mode 100644
index 000000000000..f407ed6cabe3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-skypeweb/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, pkgconfig, pidgin, json-glib }:
+
+stdenv.mkDerivation rec {
+  name = "pidgin-skypeweb-${version}";
+  version = "1.5";
+
+  src = fetchFromGitHub {
+    owner = "EionRobb";
+    repo = "skype4pidgin";
+    rev = version;
+    sha256 = "1bd9gd36yhrbrww0dvai9rnzxxj1c9sb4003c72wg27w12y47xfv";
+  };
+
+  setSourceRoot = ''
+    sourceRoot=$(echo */skypeweb)
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin json-glib ];
+
+  PKG_CONFIG_PURPLE_PLUGINDIR = "${placeholder "out"}/lib/purple-2";
+  PKG_CONFIG_PURPLE_DATADIR = "${placeholder "out"}/share";
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/EionRobb/skype4pidgin;
+    description = "SkypeWeb plugin for Pidgin";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-xmpp-receipts/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-xmpp-receipts/default.nix
new file mode 100644
index 000000000000..f482e12a4bc9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/pidgin-xmpp-receipts/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchFromGitHub, pidgin } :
+
+let
+  version = "0.8";
+in
+stdenv.mkDerivation rec {
+  name = "pidgin-xmpp-receipts-${version}";
+
+  src = fetchFromGitHub {
+    owner = "noonien-d";
+    repo = "pidgin-xmpp-receipts";
+    rev = "release_${version}";
+    sha256 = "13kwaymzkymjsdv8q95byd173i4vanj211vgx9cm0y8ag2r3cjsb";
+  };
+
+  buildInputs = [ pidgin ];
+
+  installPhase = ''
+    mkdir -p $out/lib/pidgin/
+    cp xmpp-receipts.so $out/lib/pidgin/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://devel.kondorgulasch.de/pidgin-xmpp-receipts/;
+    description = "Message delivery receipts (XEP-0184) Pidgin plugin";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ orivej ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-discord/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-discord/default.nix
new file mode 100644
index 000000000000..ba1d64c8b925
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-discord/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, pkgconfig, pidgin, json-glib }:
+
+stdenv.mkDerivation rec {
+  name = "purple-discord-${version}";
+  version = "unstable-2018-04-10";
+
+  src = fetchFromGitHub {
+    owner = "EionRobb";
+    repo = "purple-discord";
+    rev = "9a97886d15a1f028de54b5e6fc54e784531063b0";
+    sha256 = "0dc344zh1v4yh9c8javcw5ylzwc1wpx0ih8bww8p8cjmhr8kcl32";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin json-glib ];
+
+  PKG_CONFIG_PURPLE_PLUGINDIR = "${placeholder "out"}/lib/purple-2";
+  PKG_CONFIG_PURPLE_DATADIR = "${placeholder "out"}/share";
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/EionRobb/purple-discord;
+    description = "Discord plugin for Pidgin";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ sna ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-facebook/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-facebook/default.nix
new file mode 100644
index 000000000000..cff1bcc56b92
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-facebook/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchFromGitHub, fetchhg, pidgin, glib, json-glib, autoreconfHook }:
+
+
+let
+  pidginHg = fetchhg {
+    url = "https://bitbucket.org/pidgin/main";
+    # take from VERSION file
+    rev = "9ff9acf9fa14";
+    sha256 = "06imlhsps4wrjgjb92zpaxprxfxl2pjb2x9pl859c8cryssrz2jv";
+  };
+
+in stdenv.mkDerivation rec {
+  name = "purple-facebook-0.9.5";
+
+  src = fetchFromGitHub {
+    owner = "dequis";
+    repo = "purple-facebook";
+    rev = "v0.9.5-9ff9acf9fa14";
+    sha256 = "0a1860bkzrmyxahm9rlxi80z335w491wzdaqaw6j9ccavbymhwhs";
+  };
+
+  postPatch = ''
+    # we do all patching from update.sh in preAutoreconf
+    echo "#!${stdenv.shell}" > update.sh
+  '';
+
+  preAutoreconf = ''
+    for FILE in $(cat MANIFEST_PIDGIN); do
+        install -Dm644 "${pidginHg}/$FILE" "pidgin/$FILE" || true
+    done
+
+    touch $(cat MANIFEST_VOIDS)
+
+    patchdir="$(pwd)/patches"
+    pushd pidgin
+
+    for patch in $(ls -1 "$patchdir"); do
+      patch -p1 -i "$patchdir/$patch"
+    done
+    popd
+
+    ./autogen.sh
+  '';
+
+  makeFlags = [
+    "PLUGIN_DIR_PURPLE=/lib/pidgin/"
+    "DATA_ROOT_DIR_PURPLE=/share"
+  ];
+
+  installPhase = ''
+    mkdir -p $out/lib/purple-2
+    cp pidgin/libpurple/protocols/facebook/.libs/*.so $out/lib/purple-2/
+  '';
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ pidgin glib json-glib ];
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Facebook protocol plugin for libpurple";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ davorb ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-hangouts/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-hangouts/default.nix
new file mode 100644
index 000000000000..61e8c2b58d9d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-hangouts/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchhg, pidgin, glib, json-glib, protobuf, protobufc }:
+
+stdenv.mkDerivation rec {
+  name = "purple-hangouts-hg-${version}";
+  version = "2018-12-02";
+
+  src = fetchhg {
+    url = "https://bitbucket.org/EionRobb/purple-hangouts/";
+    rev = "cccf2f6";
+    sha256 = "1zd1rlzqvw1zkb0ydyz039n3xa1kv1f20a4l6rkm9a8sp6rpf3pi";
+  };
+
+  buildInputs = [ pidgin glib json-glib protobuf protobufc ];
+
+  PKG_CONFIG_PURPLE_PLUGINDIR = "${placeholder "out"}/lib/purple-2";
+  PKG_CONFIG_PURPLE_DATADIR = "${placeholder "out"}/share";
+
+  meta = with stdenv.lib; {
+    homepage = https://bitbucket.org/EionRobb/purple-hangouts;
+    description = "Native Hangouts support for pidgin";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ralith ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-lurch/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-lurch/default.nix
new file mode 100644
index 000000000000..bcfcbee85568
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-lurch/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, cmake, pidgin, minixml, libxml2, sqlite, libgcrypt }:
+
+stdenv.mkDerivation rec {
+  name = "purple-lurch-${version}";
+  version = "0.6.7";
+
+  src = fetchFromGitHub {
+    owner = "gkdr";
+    repo = "lurch";
+    rev = "v${version}";
+    sha256 = "029jjqinsfhpv0zgji3sv1cyk54fn9qp176fwy97d1clf0vflxrz";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ cmake ];
+  buildInputs = [ pidgin minixml libxml2 sqlite libgcrypt ];
+
+  dontUseCmakeConfigure = true;
+
+  installPhase = ''
+    install -Dm755 -t $out/lib/purple-2 build/lurch.so
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/gkdr/lurch;
+    description = "XEP-0384: OMEMO Encryption for libpurple";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ emmanuelrosa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-matrix/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-matrix/default.nix
new file mode 100644
index 000000000000..0b2cba649207
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-matrix/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchgit, pkgconfig, pidgin, json-glib, glib, http-parser, sqlite, olm, libgcrypt } :
+
+let
+  version = "2018-08-03";
+in
+stdenv.mkDerivation rec {
+  name = "purple-matrix-unstable-${version}";
+
+  src = fetchgit {
+    url = "https://github.com/matrix-org/purple-matrix";
+    rev = "5a7166a3f54f85793c6b60662f8d12196aeaaeb0";
+    sha256 = "0ph0s24b37d1c50p8zbzgf4q2xns43a8v6vk85iz633wdd72zsa0";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin json-glib glib http-parser sqlite olm libgcrypt ];
+
+  hardeningDisable = [ "fortify" ]; # upstream compiles with -O0
+
+  makeFlags = [
+    "PLUGIN_DIR_PURPLE=${placeholder "out"}/lib/purple-2"
+    "DATA_ROOT_DIR_PURPLE=${placeholder "out"}/share"
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/matrix-org/purple-matrix;
+    description = "Matrix support for Pidgin / libpurple";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ symphorien ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-plugin-pack/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-plugin-pack/default.nix
new file mode 100644
index 000000000000..8022d32a081a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-plugin-pack/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl, pidgin, intltool, python } :
+
+stdenv.mkDerivation rec {
+  name = "purple-plugin-pack-2.7.0";
+  src = fetchurl {
+    url = "https://bitbucket.org/rekkanoryo/purple-plugin-pack/downloads/${name}.tar.bz2";
+    sha256 = "0g5hmy7fwgjq59j52h9yps28jsjjrfkd4r18gyx6hfd3g3kzbg1b";
+  };
+
+  buildInputs = [ pidgin intltool python ];
+
+  meta = with stdenv.lib; {
+    homepage = https://bitbucket.org/rekkanoryo/purple-plugin-pack;
+    description = "Plugin pack for Pidgin 2.x";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ bdimcheff ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-vk-plugin/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-vk-plugin/default.nix
new file mode 100644
index 000000000000..e54af933a081
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-vk-plugin/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchhg, pidgin, cmake, libxml2 } :
+
+let
+  version = "40ddb6d";
+in
+stdenv.mkDerivation rec {
+  name = "purple-vk-plugin-${version}";
+
+  src = fetchhg {
+    url = "https://bitbucket.org/olegoandreev/purple-vk-plugin";
+    rev = "${version}";
+    sha256 = "02p57fgx8ml00cbrb4f280ak2802svz80836dzk9f1zwm1bcr2qc";
+  };
+
+  buildInputs = [ pidgin cmake libxml2 ];
+
+  preConfigure = ''
+    sed -i -e 's|DESTINATION.*PURPLE_PLUGIN_DIR}|DESTINATION lib/purple-2|' CMakeLists.txt
+  '';
+
+  cmakeFlags = "-DCMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT=1";
+
+  meta = {
+    homepage = https://bitbucket.org/olegoandreev/purple-vk-plugin;
+    description = "Vk (russian social network) plugin for Pidgin / libpurple";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-xmpp-http-upload/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-xmpp-http-upload/default.nix
new file mode 100644
index 000000000000..8990aeee8ec0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/purple-xmpp-http-upload/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchgit, pidgin, glib, libxml2 }:
+
+stdenv.mkDerivation rec {
+  name = "purple-xmpp-upload-2017-12-31";
+
+  src = fetchgit {
+    url = "https://github.com/Junker/purple-xmpp-http-upload";
+    rev = "178096cbfc9df165c2dc1677666439969d212b37";
+    sha256 = "12l9rqlgb4i50xxrfnvwz9sqfk0d3c0m6l09mnvfixqi8illyvlp";
+  };
+
+  buildInputs = [ pidgin glib libxml2 ];
+
+  installPhase = ''
+    install -Dm644 -t $out/lib/purple-2 jabber_http_file_upload.so
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/Junker/purple-xmpp-http-upload;
+    description = "HTTP File Upload plugin for libpurple (XMPP Protocol XEP-0363)";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ emmanuelrosa ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/sipe/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/sipe/default.nix
new file mode 100644
index 000000000000..2d3a10cec5e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/sipe/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pidgin, intltool, libxml2, nss, nspr }:
+
+let version = "1.23.3"; in
+
+stdenv.mkDerivation {
+  name = "pidgin-sipe-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/sipe/pidgin-sipe-${version}.tar.gz";
+    sha256 = "0aaiblnagncb0lhdwb8qbps6hxxmyfjg7sdi15lrkl98i3fahg4n";
+  };
+
+  meta = with stdenv.lib; {
+    description = "SIPE plugin for Pidgin IM";
+    homepage = http://sipe.sourceforge.net/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+
+  postInstall = "find $out -ls; ln -s \$out/lib/purple-2 \$out/share/pidgin-sipe";
+
+  buildInputs = [ pidgin intltool libxml2 nss nspr ];
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix
new file mode 100644
index 000000000000..ddb9217d5e22
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/skype4pidgin/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, pkgconfig, pidgin, libnotify, gdk_pixbuf, glib, dbus
+, dbus-glib }:
+
+stdenv.mkDerivation rec {
+  name = "skype4pidgin-novas0x2a-20120411-6c53f7c48f";
+  src = fetchurl {
+    url = "https://github.com/novas0x2a/skype4pidgin/tarball/6c53f7c48f";
+    name = "${name}.tar.gz";
+    sha256 = "116jfh5ravaixivqx4a4bz0lbb9c49d5r83nwmripja56zdbpgr0";
+  };
+
+  NIX_CFLAGS_COMPILE = "-I${libnotify}/include/libnotify";
+
+  patchPhase = ''
+    sed -i -e 's/ [^ ]*-gcc/ gcc/' -e 's/-march[^ ]*//' \
+        -e 's/GLIB_CFLAGS =.*/GLIB_CFLAGS=`pkg-config --cflags glib-2.0 gdk-pixbuf-2.0 libnotify purple dbus-glib-1`/' Makefile
+    pkg-config --cflags glib-2.0 gdk-pixbuf-2.0 libnotify
+  '';
+
+  buildPhase  = "make libskype.so libskype_dbus.so";
+
+  installPhase = ''
+    mkdir -p $out/pixmaps/pidgin/protocols/{16,22,48} $out/bin $out/lib/pidgin
+    cp icons/16/skypeout.png $out/pixmaps/pidgin/protocols/16
+    cp icons/22/skypeout.png $out/pixmaps/pidgin/protocols/22
+    cp icons/48/skypeout.png $out/pixmaps/pidgin/protocols/48
+    cp libskype.so libskype_dbus.so $out/lib/pidgin
+  '';
+
+  postInstall = "ln -s \$out/lib/pidgin \$out/share/pidgin-otr";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin libnotify gdk_pixbuf glib dbus dbus-glib ];
+
+  meta = {
+    homepage = https://github.com/novas0x2a/skype4pidgin;
+    license = stdenv.lib.licenses.gpl3Plus;
+    description = "Plugin to use a running skype account through pidgin";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix
new file mode 100644
index 000000000000..8527593c1a20
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/telegram-purple/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchgit, pkgconfig, pidgin, libwebp, libgcrypt, gettext } :
+
+let
+  version = "1.3.0";
+in
+stdenv.mkDerivation rec {
+  name = "telegram-purple-${version}";
+
+  src = fetchgit {
+    url = "https://github.com/majn/telegram-purple";
+    rev = "0340e4f14b2480782db4e5b9242103810227c522";
+    sha256 = "1xb7hrgisbpx00dsrm5yz934bdd7nfzicd7k855iynk3hjzqj7k5";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ pidgin libwebp libgcrypt gettext ];
+
+  preConfigure = ''
+    sed -i "s|/etc/telegram-purple/server.tglpub|$out/lib/purple-2/server.tglpub|g" telegram-purple.c
+    echo "#define GIT_COMMIT \"${builtins.substring 0 10 src.rev}\"" > commit.h
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/purple-2/
+    cp bin/*.so $out/lib/purple-2/ #*/
+    cp tg-server.tglpub $out/lib/purple-2/server.tglpub
+    mkdir -p $out/pixmaps/pidgin/protocols/{16,22,48}
+    cp imgs/telegram16.png $out/pixmaps/pidgin/protocols/16
+    cp imgs/telegram22.png $out/pixmaps/pidgin/protocols/22
+    cp imgs/telegram48.png $out/pixmaps/pidgin/protocols/48
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/majn/telegram-purple;
+    description = "Telegram for Pidgin / libpurple";
+    license = licenses.gpl2;
+    maintainers = [ maintainers.jagajaga ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/tox-prpl/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/tox-prpl/default.nix
new file mode 100644
index 000000000000..6d75ba40ce01
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/tox-prpl/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, libtoxcore, pidgin, autoreconfHook, libsodium }:
+
+stdenv.mkDerivation rec {
+  name = "tox-prpl-${version}";
+  version = "0.5.1";
+
+  src = fetchFromGitHub {
+    owner  = "jin-eld";
+    repo   = "tox-prpl";
+    rev    = "v${version}";
+    sha256 = "0ms367l2f7x83k407c93bmhpyc820f1css61fh2gx4jq13cxqq3p";
+  };
+
+  NIX_LDFLAGS = "-lssp -lsodium";
+
+  postInstall = "mv $out/lib/purple-2 $out/lib/pidgin";
+
+  buildInputs = [ libtoxcore pidgin libsodium ];
+  nativeBuildInputs = [ autoreconfHook ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/jin-eld/tox-prpl;
+    description = "Tox plugin for Pidgin / libpurple";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/window-merge/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/window-merge/default.nix
new file mode 100644
index 000000000000..dfdc92cfd4b8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin-plugins/window-merge/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, pidgin } :
+
+stdenv.mkDerivation rec {
+  name = "pidgin-window-merge-${version}";
+  version = "0.3";
+
+  src = fetchurl {
+    url = "https://github.com/downloads/dm0-/window_merge/window_merge-${version}.tar.gz";
+    sha256 = "0cb5rvi7jqvm345g9mlm4wpq0240kcybv81jpw5wlx7hz0lwi478";
+  };
+
+  buildInputs = [ pidgin ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/dm0-/window_merge;
+    description = "Pidgin plugin that merges the Buddy List window with a conversation window";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/add-search-path.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/add-search-path.patch
new file mode 100644
index 000000000000..b0758777186a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/add-search-path.patch
@@ -0,0 +1,20 @@
+diff --git a/libpurple/plugin.c b/libpurple/plugin.c
+index 4f2b402..fda9add 100644
+--- a/libpurple/plugin.c
++++ b/libpurple/plugin.c
+@@ -1181,8 +1181,15 @@ purple_plugins_get_handle(void) {
+ void
+ purple_plugins_init(void) {
+ 	void *handle = purple_plugins_get_handle();
++	gchar **paths, **p;
+ 
+ 	purple_plugins_add_search_path(LIBDIR);
++	paths = g_strsplit(g_getenv("PURPLE_PLUGIN_PATH"), ":", -1);
++	if (paths) {
++		for (p = paths; *p; ++p)
++			if (**p) purple_plugins_add_search_path(*p);
++	}
++	g_strfreev(paths);
+ 
+ 	purple_signal_register(handle, "plugin-load",
+ 						 purple_marshal_VOID__POINTER,
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/default.nix
new file mode 100644
index 000000000000..12348fe548c7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, fetchurl, makeWrapper, pkgconfig, gtk2, gtkspell2, aspell
+, gst_all_1, startupnotification, gettext
+, perlPackages, libxml2, nss, nspr, farstream
+, libXScrnSaver, ncurses, avahi, dbus, dbus-glib, intltool, libidn
+, lib, python, libICE, libXext, libSM
+, cyrus_sasl ? null
+, openssl ? null
+, gnutls ? null
+, libgcrypt ? null
+, plugins, symlinkJoin
+}:
+
+# FIXME: clean the mess around choosing the SSL library (nss by default)
+
+let unwrapped = stdenv.mkDerivation rec {
+  name = "pidgin-${version}";
+  majorVersion = "2";
+  version = "${majorVersion}.13.0";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/pidgin/${name}.tar.bz2";
+    sha256 = "13vdqj70315p9rzgnbxjp9c51mdzf1l4jg1kvnylc4bidw61air7";
+  };
+
+  inherit nss ncurses;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  NIX_CFLAGS_COMPILE = "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0";
+
+  buildInputs = [
+    gtkspell2 aspell startupnotification
+    gst_all_1.gstreamer gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good
+    libxml2 nss nspr farstream
+    libXScrnSaver ncurses python
+    avahi dbus dbus-glib intltool libidn
+    libICE libXext libSM cyrus_sasl
+  ]
+  ++ (lib.optional (openssl != null) openssl)
+  ++ (lib.optional (gnutls != null) gnutls)
+  ++ (lib.optional (libgcrypt != null) libgcrypt);
+
+  propagatedBuildInputs = [ pkgconfig gtk2 gettext ]
+    ++ (with perlPackages; [ perl XMLParser ]);
+
+  patches = [ ./pidgin-makefile.patch ./add-search-path.patch ];
+
+  configureFlags = [
+    "--with-nspr-includes=${nspr.dev}/include/nspr"
+    "--with-nspr-libs=${nspr.out}/lib"
+    "--with-nss-includes=${nss.dev}/include/nss"
+    "--with-nss-libs=${nss.out}/lib"
+    "--with-ncurses-headers=${ncurses.dev}/include"
+    "--disable-meanwhile"
+    "--disable-nm"
+    "--disable-tcl"
+  ]
+  ++ (lib.optionals (cyrus_sasl != null) [ "--enable-cyrus-sasl=yes" ])
+  ++ (lib.optionals (gnutls != null) ["--enable-gnutls=yes" "--enable-nss=no"]);
+
+  enableParallelBuilding = true;
+
+  postInstall = ''
+    wrapProgram $out/bin/pidgin \
+      --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Multi-protocol instant messaging client";
+    homepage = http://pidgin.im;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.vcunat ];
+  };
+};
+
+in if plugins == [] then unwrapped
+    else import ./wrapper.nix {
+      inherit makeWrapper symlinkJoin plugins;
+      pidgin = unwrapped;
+    }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/pidgin-makefile.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/pidgin-makefile.patch
new file mode 100644
index 000000000000..049d404a8d5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/pidgin-makefile.patch
@@ -0,0 +1,64 @@
+diff --git a/pidgin/Makefile.am b/pidgin/Makefile.am
+index 84d927b..1467c19 100644
+--- a/pidgin/Makefile.am
++++ b/pidgin/Makefile.am
+@@ -151,6 +151,7 @@ pidgin_LDADD = \
+ 	$(GLIB_LIBS) \
+ 	$(DBUS_LIBS) \
+ 	$(GSTREAMER_LIBS) \
++	$(GSTINTERFACES_LIBS) \
+ 	$(GSTVIDEO_LIBS) \
+ 	$(XSS_LIBS) \
+ 	$(SM_LIBS) \
+@@ -171,6 +172,7 @@ AM_CPPFLAGS = \
+ 	-I$(top_srcdir) \
+ 	$(GLIB_CFLAGS) \
+ 	$(GSTREAMER_CFLAGS) \
++	$(GSTINTERFACES_CFLAGS) \
+ 	$(DEBUG_CFLAGS) \
+ 	$(GTK_CFLAGS) \
+ 	$(DBUS_CFLAGS) \
+diff --git a/pidgin/Makefile.in b/pidgin/Makefile.in
+index 0d51e25..dd5d879 100644
+--- a/pidgin/Makefile.in
++++ b/pidgin/Makefile.in
+@@ -703,6 +703,7 @@ EXTRA_DIST = \
+ @ENABLE_GTK_TRUE@	$(GLIB_LIBS) \
+ @ENABLE_GTK_TRUE@	$(DBUS_LIBS) \
+ @ENABLE_GTK_TRUE@	$(GSTREAMER_LIBS) \
++@ENABLE_GTK_TRUE@	$(GSTINTERFACES_LIBS) \
+ @ENABLE_GTK_TRUE@	$(GSTVIDEO_LIBS) \
+ @ENABLE_GTK_TRUE@	$(XSS_LIBS) \
+ @ENABLE_GTK_TRUE@	$(SM_LIBS) \
+@@ -723,6 +724,7 @@ EXTRA_DIST = \
+ @ENABLE_GTK_TRUE@	-I$(top_srcdir) \
+ @ENABLE_GTK_TRUE@	$(GLIB_CFLAGS) \
+ @ENABLE_GTK_TRUE@	$(GSTREAMER_CFLAGS) \
++@ENABLE_GTK_TRUE@	$(GSTINTERFACES_CFLAGS) \
+ @ENABLE_GTK_TRUE@	$(DEBUG_CFLAGS) \
+ @ENABLE_GTK_TRUE@	$(GTK_CFLAGS) \
+ @ENABLE_GTK_TRUE@	$(DBUS_CFLAGS) \
+diff --git a/pidgin/plugins/Makefile.am b/pidgin/plugins/Makefile.am
+index 3bb8c22..6d1e869 100644
+--- a/pidgin/plugins/Makefile.am
++++ b/pidgin/plugins/Makefile.am
+@@ -145,6 +145,7 @@ AM_CPPFLAGS = \
+ 	$(GTK_CFLAGS) \
+ 	$(UNITY_CFLAGS) \
+ 	$(GSTREAMER_CFLAGS) \
++	$(GSTINTERFACES_CFLAGS) \
+ 	$(PLUGIN_CFLAGS)
+ 
+ #
+diff --git a/pidgin/plugins/Makefile.in b/pidgin/plugins/Makefile.in
+index 82a34aa..1f7db00 100644
+--- a/pidgin/plugins/Makefile.in
++++ b/pidgin/plugins/Makefile.in
+@@ -781,6 +781,7 @@ AM_CPPFLAGS = \
+ 	$(GTK_CFLAGS) \
+ 	$(UNITY_CFLAGS) \
+ 	$(GSTREAMER_CFLAGS) \
++	$(GSTINTERFACES_CFLAGS) \
+ 	$(PLUGIN_CFLAGS)
+ 
+ 
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix
new file mode 100644
index 000000000000..095f838fe981
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pidgin/wrapper.nix
@@ -0,0 +1,20 @@
+{ symlinkJoin, pidgin, makeWrapper, plugins }:
+
+let
+extraArgs = map (x: x.wrapArgs or "") plugins;
+in symlinkJoin {
+  name = "pidgin-with-plugins-${pidgin.version}";
+
+  paths = [ pidgin ] ++ plugins;
+
+  buildInputs = [ makeWrapper ];
+
+  postBuild = ''
+    wrapProgram $out/bin/pidgin \
+      --suffix-each PURPLE_PLUGIN_PATH ':' "$out/lib/purple-${pidgin.majorVersion} $out/lib/pidgin" \
+      ${toString extraArgs}
+    wrapProgram $out/bin/finch \
+      --suffix-each PURPLE_PLUGIN_PATH ':' "$out/lib/purple-${pidgin.majorVersion}" \
+      ${toString extraArgs}
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/poezio/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/poezio/default.nix
new file mode 100644
index 000000000000..b5fa1ccc2f41
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/poezio/default.nix
@@ -0,0 +1,28 @@
+{ lib, buildPythonApplication, fetchurl, pythonOlder
+, pytest, aiodns, slixmpp, pyinotify, potr, mpd2, cffi, pkgconfig }:
+buildPythonApplication rec {
+    name = "poezio-${version}";
+    version = "0.12";
+
+    disabled = pythonOlder "3.4";
+
+    buildInputs = [ pytest ];
+    propagatedBuildInputs = [ aiodns slixmpp pyinotify potr mpd2 cffi ];
+    nativeBuildInputs = [ pkgconfig ];
+
+    src = fetchurl {
+      url = "http://dev.louiz.org/attachments/download/129/${name}.tar.gz";
+      sha256 = "11n9x82xyjwbqk28lsfnvqwn8qc9flv6w2c64camh6j3148ykpvz";
+    };
+
+    checkPhase = ''
+      py.test
+    '';
+
+    meta = with lib; {
+      description = "Free console XMPP client";
+      homepage = https://poez.io;
+      license = licenses.mit;
+      maintainers = [ maintainers.lsix ];
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pond/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pond/default.nix
new file mode 100644
index 000000000000..e7527bafcc65
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pond/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, buildGoPackage, trousers, dclxvi, wrapGAppsHook, pkgconfig, gtk3, gtkspell3,
+  fetchgit }:
+
+let
+  gui = true; # Might be implemented with nixpkgs config.
+in
+buildGoPackage rec {
+  name = "pond-${version}";
+  version = "20150830-${stdenv.lib.strings.substring 0 7 rev}";
+  rev = "bce6e0dc61803c23699c749e29a83f81da3c41b2";
+
+  goPackagePath = "github.com/agl/pond";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/agl/pond";
+    sha256 = "1dmgbg4ak3jkbgmxh0lr4hga1nl623mh7pvsgby1rxl4ivbzwkh4";
+  };
+
+  goDeps = ./deps.nix;
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ trousers gtk3 gtkspell3 ]
+    ++ stdenv.lib.optional stdenv.hostPlatform.isx86_64 dclxvi
+    ++ stdenv.lib.optionals gui [ wrapGAppsHook ];
+  buildFlags = stdenv.lib.optionalString (!gui) "-tags nogui";
+  excludedPackages = "\\(appengine\\|bn256cgo\\)";
+  postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isx86_64 ''
+    grep -r 'bn256' | awk -F: '{print $1}' | xargs sed -i \
+      -e "s,golang.org/x/crypto/bn256,github.com/agl/pond/bn256cgo,g" \
+      -e "s,bn256\.,bn256cgo.,g"
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pond/deps.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pond/deps.nix
new file mode 100644
index 000000000000..55850f0a89c2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pond/deps.nix
@@ -0,0 +1,47 @@
+[
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "575fdbe86e5dd89229707ebec0575ce7d088a4a6";
+      sha256 = "1kgv1mkw9y404pk3lcwbs0vgl133mwyp294i18jg9hp10s5d56xa";
+    };
+  }
+  {
+    goPackagePath = "github.com/agl/ed25519";
+    fetch = {
+      type = "git";
+      url = "https://github.com/agl/ed25519";
+      rev = "278e1ec8e8a6e017cd07577924d6766039146ced";
+      sha256 = "165d89cc6dl28j4hkn86pny0jz3sa6hamzdvpvwdj4iha3x6lzc9";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "59b73b37c1e45995477aae817e4a653c89a858db";
+      sha256 = "1dx22jvhvj34ivpr7gw01fncg9yyx35mbpal4mpgnqka7ajmgjsa";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "62ac18b461605b4be188bbc7300e9aa2bc836cd4";
+      sha256 = "0lwwvbbwbf3yshxkfhn6z20gd45dkvnmw2ms36diiy34krgy402p";
+    };
+  }
+  {
+    goPackagePath = "github.com/agl/go-gtk";
+    fetch = {
+      type = "git";
+      url = "https://github.com/agl/go-gtk";
+      rev = "91c1edb38c241d73129e6b098ca1c9fa83abfc15";
+      sha256 = "156ixlhakpqgyp35rsvmndrqz8aggv5bcmzg9ynpri3b9j6kim4d";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/default.nix
new file mode 100644
index 000000000000..e131e4c7a3ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, glib, openssl
+, glibcLocales, expect, ncurses, libotr, curl, readline, libuuid
+, cmocka, libmicrohttpd, stabber, expat, libmesode
+, autoconf-archive
+
+, autoAwaySupport ? true,       libXScrnSaver ? null, libX11 ? null
+, notifySupport ? true,         libnotify ? null, gdk_pixbuf ? null
+, traySupport ? true,           gnome2 ? null
+, pgpSupport ? true,            gpgme ? null
+, pythonPluginSupport ? true,   python ? null
+}:
+
+assert autoAwaySupport     -> libXScrnSaver != null && libX11 != null;
+assert notifySupport       -> libnotify != null && gdk_pixbuf != null;
+assert traySupport         -> gnome2 != null;
+assert pgpSupport          -> gpgme != null;
+assert pythonPluginSupport -> python != null;
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "profanity-${version}";
+  version = "0.5.1";
+
+  src = fetchFromGitHub {
+    owner = "boothj5";
+    repo = "profanity";
+    rev = "${version}";
+    sha256 = "1ppr02wivhlrqr62r901clnycna8zpn6kr7n5rw8y3zfw21ny17z";
+  };
+
+  patches = [ ./patches/packages-osx.patch ./patches/undefined-macros.patch ];
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [
+    autoreconfHook autoconf-archive glibcLocales pkgconfig
+  ];
+
+  buildInputs = [
+    expect readline libuuid glib openssl expat ncurses libotr
+    curl libmesode cmocka libmicrohttpd stabber
+  ] ++ optionals autoAwaySupport     [ libXScrnSaver libX11 ]
+    ++ optionals notifySupport       [ libnotify gdk_pixbuf ]
+    ++ optionals traySupport         [ gnome2.gtk ]
+    ++ optionals pgpSupport          [ gpgme ]
+    ++ optionals pythonPluginSupport [ python ];
+
+  # Enable feature flags, so that build fail if libs are missing
+  configureFlags = [ "--enable-c-plugins" "--enable-otr" ]
+    ++ optionals notifySupport       [ "--enable-notifications" ]
+    ++ optionals traySupport         [ "--enable-icons" ]
+    ++ optionals pgpSupport          [ "--enable-pgp" ]
+    ++ optionals pythonPluginSupport [ "--enable-python-plugins" ];
+
+  preAutoreconf = ''
+    mkdir m4
+  '';
+
+  doCheck = true;
+
+  LC_ALL = "en_US.utf8";
+
+  meta = {
+    description = "A console based XMPP client";
+    longDescription = ''
+      Profanity is a console based XMPP client written in C using ncurses and
+      libstrophe, inspired by Irssi.
+    '';
+    homepage = http://profanity.im/;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.devhell ];
+    updateWalker = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/packages-osx.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/packages-osx.patch
new file mode 100644
index 000000000000..77bfc5e78bd0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/packages-osx.patch
@@ -0,0 +1,11 @@
+diff --git a/configure.ac b/configure.ac
+index 1e55b1cc..0832a387 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -22,7 +22,6 @@ AC_CANONICAL_HOST
+ PLATFORM="unknown"
+ AS_CASE([$host_os],
+     [freebsd*], [PLATFORM="freebsd"],
+-    [darwin*], [PLATFORM="osx"],
+     [cygwin], [PLATFORM="cygwin"],
+     [PLATFORM="nix"])
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/undefined-macros.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/undefined-macros.patch
new file mode 100644
index 000000000000..9ef4e7bebe54
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/profanity/patches/undefined-macros.patch
@@ -0,0 +1,40 @@
+diff --git a/configure.ac b/configure.ac
+index 1e55b1cc..0832a387 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -83,12 +81,12 @@ elif test "x$enable_python_plugins" != xno; then
+         AM_CONDITIONAL([BUILD_PYTHON_API], [true])
+         AC_DEFINE([HAVE_PYTHON], [1], [Python support])
+     else
+-        if test "x$enable_python_plugins" = xyes; then
+-            AC_MSG_ERROR([Python not found, cannot enable Python plugins.])
+-        else
+-            AM_CONDITIONAL([BUILD_PYTHON_API], [false])
+-            AC_MSG_NOTICE([Python development package not found, Python plugin support disabled.])
+-        fi
++        AS_IF(
++            [test "x$enable_python_plugins" = xyes],
++            [],
++            [AM_CONDITIONAL([BUILD_PYTHON_API], [false])
++            AC_MSG_NOTICE([Python development package not found, Python plugin support disabled.])]
++        )
+     fi
+     AS_IF([test "x$PLATFORM" = xosx], [rm -f Python.framework])
+ else
+@@ -107,7 +105,7 @@ else
+             [AM_CONDITIONAL([BUILD_C_API], [true]) LIBS="$LIBS -ldl" AC_DEFINE([HAVE_C], [1], [C support])],
+             [AS_IF(
+                 [test "x$enable_c_plugins" = xyes],
+-                    [AC_MSG_ERROR([dl library needed to run C plugins])],
++                [],
+                 [AM_CONDITIONAL([BUILD_C_API], [false])])
+             ])
+     else
+@@ -116,7 +114,6 @@ else
+ fi
+ 
+ # threading
+-ACX_PTHREAD([], [AC_MSG_ERROR([pthread is required])])
+ LIBS="$PTHREAD_LIBS $LIBS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ AS_IF([test "x$PTHREAD_CC" != x], [ CC="$PTHREAD_CC" ])
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/psi-plus/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/psi-plus/default.nix
new file mode 100644
index 000000000000..e1a2fb40c5ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/psi-plus/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, cmake
+, qt5, libidn, qca2-qt5, libXScrnSaver, hunspell
+, libgcrypt, libotr, html-tidy, libgpgerror, libsignal-protocol-c
+}:
+
+stdenv.mkDerivation rec {
+  name = "psi-plus-${version}";
+  version = "1.4.504";
+
+  src = fetchFromGitHub {
+    owner = "psi-plus";
+    repo = "psi-plus-snapshots";
+    rev = "${version}";
+    sha256 = "1nv1ynad2gcn7r8mm2w3kixmahaql7xax1lccsqyxqmj1r0klk8q";
+  };
+
+  resources = fetchFromGitHub {
+    owner = "psi-plus";
+    repo = "resources";
+    rev = "d623f57db35eb5af81ccdf69b2cbe1c437190f29";
+    sha256 = "024cyazyxka5vcbjrkkw32c5zw6aa70n50fdp6zh5v5c51d9ci8k";
+  };
+
+  postUnpack = ''
+    cp -a "${resources}/iconsets" "$sourceRoot"
+  '';
+
+  cmakeFlags = [
+    "-DENABLE_PLUGINS=ON"
+  ];
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [
+    qt5.qtbase qt5.qtmultimedia qt5.qtx11extras qt5.qttools qt5.qtwebkit
+    libidn qca2-qt5 libXScrnSaver hunspell
+    libgcrypt libotr html-tidy libgpgerror libsignal-protocol-c
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "XMPP (Jabber) client";
+    maintainers = with maintainers; [ orivej ];
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/psi/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/psi/default.nix
new file mode 100644
index 000000000000..e895b3cc00d1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/psi/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, enchant, qt4, zlib, sox, libX11, xorgproto, libSM
+, libICE, qca2, pkgconfig, which, glib
+, libXScrnSaver
+}:
+
+stdenv.mkDerivation rec {
+  name = "psi-0.15";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/psi/${name}.tar.bz2";
+    sha256 = "593b5ddd7934af69c245afb0e7290047fd7dedcfd8765baca5a3a024c569c7e6";
+  };
+
+  buildInputs =
+    [ enchant qt4 zlib sox libX11 xorgproto libSM libICE
+      qca2 pkgconfig which glib libXScrnSaver
+    ];
+
+  NIX_CFLAGS_COMPILE="-I${qca2}/include/QtCrypto";
+
+  NIX_LDFLAGS="-lqca";
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Psi, an XMPP (Jabber) client";
+    maintainers = [ maintainers.raskin ];
+    license = licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix
new file mode 100644
index 000000000000..3f6b23d70a05
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/pybitmessage/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchFromGitHub, python2Packages, openssl }:
+
+python2Packages.buildPythonApplication rec {
+  pname = "pybitmessage";
+
+  version = "0.6.3.2";
+
+  src = fetchFromGitHub {
+    owner = "bitmessage";
+    repo = "PyBitmessage";
+    rev = version;
+    sha256 = "1lmhbpwsqh1v93krlqqhafw2pc3y0qp8zby186yllbph6s8kdp35";
+  };
+
+  propagatedBuildInputs = with python2Packages; [ msgpack-python pyqt4 numpy pyopencl ] ++ [ openssl ];
+
+  preConfigure = ''
+    # Remove interaction and misleading output
+    substituteInPlace setup.py \
+      --replace "nothing = raw_input()" pass \
+      --replace 'print "It looks like building the package failed.\n" \' pass \
+      --replace '    "You may be missing a C++ compiler and the OpenSSL headers."' pass
+
+    substituteInPlace src/pyelliptic/openssl.py \
+      --replace "libdir.append(find_library('ssl'))" "libdir.append('${openssl.out}/lib/libssl.so')"
+
+    substituteInPlace src/depends.py \
+      --replace "ctypes.util.find_library('ssl')" "'${openssl.out}/lib/libssl.so'"
+
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://bitmessage.org/;
+    description = "The official Bitmessage client";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jgillich ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/qtox/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/qtox/default.nix
new file mode 100644
index 000000000000..4ab3c64d16d8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/qtox/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, mkDerivation, lib, fetchFromGitHub, cmake, pkgconfig
+, libtoxcore
+, libpthreadstubs, libXdmcp, libXScrnSaver
+, qtbase, qtsvg, qttools, qttranslations
+, ffmpeg, filter-audio, libexif, libsodium, libopus
+, libvpx, openal, pcre, qrencode, sqlcipher
+, AVFoundation ? null }:
+
+let
+  version = "1.16.3";
+  rev = "v${version}";
+
+in mkDerivation rec {
+  name = "qtox-${version}";
+
+  src = fetchFromGitHub {
+    owner  = "qTox";
+    repo   = "qTox";
+    sha256 = "0qd4nvbrjnnfnk8ghsxq3cd1n1qf1ck5zg6ib11ij2pg03s146pa";
+    inherit rev;
+  };
+
+  buildInputs = [
+    libtoxcore
+    libpthreadstubs libXdmcp libXScrnSaver
+    qtbase qtsvg qttranslations
+    ffmpeg filter-audio libexif libopus libsodium
+    libvpx openal pcre qrencode sqlcipher
+  ] ++ lib.optionals stdenv.isDarwin [ AVFoundation] ;
+
+  nativeBuildInputs = [ cmake pkgconfig qttools ];
+
+  enableParallelBuilding = true;
+
+  cmakeFlags = [
+    "-DGIT_DESCRIBE=${rev}"
+    "-DENABLE_STATUSNOTIFIER=False"
+    "-DENABLE_GTK_SYSTRAY=False"
+    "-DENABLE_APPINDICATOR=False"
+    "-DTIMESTAMP=1"
+  ];
+
+  meta = with lib; {
+    description = "Qt Tox client";
+    homepage    = https://tox.chat;
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ akaWolf peterhoeg ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix
new file mode 100644
index 000000000000..55b24f71fb64
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/quaternion/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, lib, fetchFromGitHub, qtbase, qtquickcontrols, cmake
+, qttools, libqmatrixclient }:
+
+stdenv.mkDerivation rec {
+  name = "quaternion-${version}";
+  version = "0.0.9.3";
+
+  src = fetchFromGitHub {
+    owner  = "QMatrixClient";
+    repo   = "Quaternion";
+    rev    = "v${version}";
+    sha256 = "1hr9zqf301rg583n9jv256vzj7y57d8qgayk7c723bfknf1s6hh3";
+  };
+
+  buildInputs = [ qtbase qtquickcontrols qttools libqmatrixclient ];
+
+  nativeBuildInputs = [ cmake ];
+
+  postInstall = if stdenv.isDarwin then ''
+    mkdir -p $out/Applications
+    mv $out/bin/quaternion.app $out/Applications
+    rmdir $out/bin || :
+  '' else ''
+    substituteInPlace $out/share/applications/quaternion.desktop \
+      --replace 'Exec=quaternion' "Exec=$out/bin/quaternion"
+  '';
+
+  meta = with lib; {
+    description = "Cross-platform desktop IM client for the Matrix protocol";
+    homepage    = https://matrix.org/docs/projects/client/quaternion.html;
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+    inherit (qtbase.meta) platforms;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/bare.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/bare.nix
new file mode 100644
index 000000000000..29ed30dd27f6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/bare.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchFromGitHub, fetchNodeModules, nodejs-8_x, ruby, sencha
+, auth0ClientID, auth0Domain }:
+
+stdenv.mkDerivation rec {
+  name = "rambox-bare-${version}";
+  version = "0.6.3";
+
+  src = fetchFromGitHub {
+    owner = "ramboxapp";
+    repo = "community-edition";
+    rev = version;
+    sha256 = "1ghk29d0x6i3j8b1b4xxgyf961lp17qsvvhnilnkh1nhmvxpwmw5";
+  };
+
+  nativeBuildInputs = [ nodejs-8_x ruby sencha ];
+
+  node_modules = fetchNodeModules {
+    inherit src;
+
+    nodejs = nodejs-8_x;
+    sha256 = "03h1kfiaflwbrvcd8v0bsymn7n2dxi3yj4pxkwcigqg4jgcf56k6";
+  };
+
+  patches = [ ./isDev.patch ];
+
+  configurePhase = ''
+    echo 'var auth0Cfg = { clientID: "${auth0ClientID}", domain: "${auth0Domain}" };' > env.js
+    ln -s ${node_modules} node_modules
+  '';
+
+  buildPhase = ''
+    mkdir ../rambox-build
+    npm run sencha:compile:build
+  '';
+
+  installPhase = ''
+    mv ../rambox-build/ $out
+
+    # https://github.com/saenzramiro/rambox/issues/1281
+    echo '{"name": "rambox", "version": "${version}", "main": "electron/main.js"}' > $out/package.json
+
+    # https://github.com/saenzramiro/rambox/issues/1282
+    cp --parents ext/packages/ext-locale/build/ext-locale-*.js $out
+
+    # Symbolic link causes `Uncaught Error: Cannot find module 'immutable'`
+    cp -r ${node_modules} $out/node_modules
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Messaging and emailing app that combines common web applications into one";
+    homepage = http://rambox.pro;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ gnidorah ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/default.nix
new file mode 100644
index 000000000000..84ea02f7cb38
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, newScope, makeWrapper
+, wrapGAppsHook, gnome3, glib
+, electron_3, xdg_utils, makeDesktopItem
+, auth0ClientID ? "0spuNKfIGeLAQ_Iki9t3fGxbfJl3k8SU"
+, auth0Domain ? "nixpkgs.auth0.com" }:
+
+let
+  callPackage = newScope self;
+  self = {
+    fetchNodeModules = callPackage ./fetchNodeModules.nix {};
+    rambox-bare = callPackage ./bare.nix {
+      inherit auth0ClientID auth0Domain;
+    };
+    sencha = callPackage ./sencha {};
+  };
+  desktopItem = makeDesktopItem rec {
+    name = "Rambox";
+    exec = "rambox";
+    icon = "${self.rambox-bare}/resources/Icon.png";
+    desktopName = name;
+    genericName = "Rambox messenger";
+    categories = "Network;";
+  };
+in
+
+with self;
+
+stdenv.mkDerivation {
+  name = "rambox-${rambox-bare.version}";
+
+  nativeBuildInputs = [ makeWrapper wrapGAppsHook ];
+
+  buildInputs = [ glib gnome3.gsettings_desktop_schemas ];
+  unpackPhase = ":";
+
+  dontWrapGApps = true; # we only want $gappsWrapperArgs here
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/share/applications
+    ln -s ${desktopItem}/share/applications/* $out/share/applications
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    makeWrapper ${electron_3}/bin/electron $out/bin/rambox \
+      --add-flags "${rambox-bare} --without-update" \
+      "''${gappsWrapperArgs[@]}" \
+      --prefix PATH : ${xdg_utils}/bin
+  '';
+
+  inherit (rambox-bare.meta // {
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  });
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/fetchNodeModules.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/fetchNodeModules.nix
new file mode 100644
index 000000000000..047890a932ca
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/fetchNodeModules.nix
@@ -0,0 +1,26 @@
+{ stdenv, jq }: { src, nodejs, sha256 }:
+
+# Only npm >= 5.4.2 is deterministic, see:
+# https://github.com/npm/npm/issues/17979#issuecomment-332701215
+assert stdenv.lib.versionAtLeast nodejs.version "8.9.0";
+
+stdenv.mkDerivation {
+  name = "node_modules";
+
+  outputHashAlgo = "sha256";
+  outputHash = sha256;
+  outputHashMode = "recursive";
+
+  nativeBuildInputs = [ jq nodejs ];
+
+  buildCommand = ''
+    cp -r ${src}/* .
+    HOME=. npm install --force --ignore-scripts --only=production
+    for f in $(find node_modules -name package.json); do
+      # https://github.com/npm/npm/issues/10393
+      jq -S 'delpaths(keys | map(select(startswith("_")) | [.]))' $f > $f.tmp
+      mv $f.tmp $f
+    done
+    mv node_modules $out
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/isDev.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/isDev.patch
new file mode 100644
index 000000000000..b918144c7662
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/isDev.patch
@@ -0,0 +1,14 @@
+https://github.com/saenzramiro/rambox/issues/1280
+
+diff -urNZ a/electron/main.js b/electron/main.js
+--- a/electron/main.js	2017-11-02 14:58:06.085127616 +0000
++++ b/electron/main.js	2017-11-02 14:58:18.316887679 +0000
+@@ -8,7 +8,7 @@
+ // Configuration
+ const Config = require('electron-config');
+ // Development
+-const isDev = require('electron-is-dev');
++const isDev = false;
+ // Updater
+ const updater = require('./updater');
+ // File System
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/bare.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/bare.nix
new file mode 100644
index 000000000000..efecebe169e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/bare.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, gzip, which, unzip, jdk }:
+
+let
+  version = "6.6.0.13";
+  srcs = {
+    i686-linux = fetchurl {
+      url = "https://cdn.sencha.com/cmd/${version}/no-jre/SenchaCmd-${version}-linux-i386.sh.zip";
+      sha256 = "15b197108b49mf0afpihkh3p68lxm7580zz2w0xsbahglnvhwyfz";
+    };
+    x86_64-linux = fetchurl {
+      url = "https://cdn.sencha.com/cmd/${version}/no-jre/SenchaCmd-${version}-linux-amd64.sh.zip";
+      sha256 = "1cxhckmx1802p9qiw09cgb1v5f30wcvnrwkshmia8p8n0q47lpp4";
+    };
+  };
+in
+
+stdenv.mkDerivation rec {
+  inherit version;
+
+  name = "sencha-bare-${version}";
+  src = srcs.${stdenv.hostPlatform.system};
+
+  nativeBuildInputs = [ gzip which unzip ];
+  buildInputs = [ jdk ];
+
+  sourceRoot = ".";
+
+  configurePhase = ''
+    substituteAll ${./response.varfile} response.varfile
+  '';
+
+  installPhase = ''
+    ./SenchaCmd*.sh -q -dir $out -varfile response.varfile
+    # disallow sencha writing into /nix/store/repo
+    echo "repo.local.dir=$TMP/repo" >> $out/sencha.cfg
+    rm $out/shell-wrapper.sh $out/Uninstaller
+  '';
+
+  meta = with stdenv.lib; {
+    license = licenses.unfree;
+    platforms = attrNames srcs;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/default.nix
new file mode 100644
index 000000000000..1ca04a9e1686
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, callPackage, makeWrapper }:
+
+let
+  sencha-bare = callPackage ./bare.nix {};
+in
+
+stdenv.mkDerivation {
+  name = "sencha-${sencha-bare.version}";
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  unpackPhase = ":";
+
+  installPhase = ''
+    makeWrapper ${sencha-bare}/sencha $out/bin/sencha
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/response.varfile b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/response.varfile
new file mode 100644
index 000000000000..0ff6f0a30d50
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/rambox/sencha/response.varfile
@@ -0,0 +1,13 @@
+addToPath$Integer=1
+parentDir=.
+sys.adminRights$Boolean=false
+sys.component.148$Boolean=true
+sys.component.157$Boolean=true
+sys.component.26$Boolean=true
+sys.component.30$Boolean=true
+sys.component.90$Boolean=true
+sys.component.91$Boolean=true
+sys.component.92$Boolean=true
+sys.component.94$Boolean=true
+sys.installationDir=@out@
+sys.languageId=en
\ No newline at end of file
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ratox/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/ratox/default.nix
new file mode 100644
index 000000000000..add337d3f085
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ratox/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchgit, libtoxcore
+, conf ? null }:
+
+with stdenv.lib;
+
+let
+  configFile = optionalString (conf!=null) (builtins.toFile "config.h" conf);
+
+in stdenv.mkDerivation rec {
+  name = "ratox-0.4.20180303";
+
+  src = fetchgit {
+    url = "git://git.2f30.org/ratox.git";
+    rev = "269f7f97fb374a8f9c0b82195c21de15b81ddbbb";
+    sha256 = "0bpn37h8jvsqd66fkba8ky42nydc8acawa5x31yxqlxc8mc66k74";
+  };
+
+  buildInputs = [ libtoxcore ];
+
+  preConfigure = ''
+    substituteInPlace config.mk \
+      --replace '-lsodium -lopus -lvpx ' ""
+
+    ${optionalString (conf!=null) "cp ${configFile} config.def.h"}
+  '';
+
+  makeFlags = [ "PREFIX=$(out)" ];
+
+  meta = {
+    description = "FIFO based tox client";
+    homepage = http://ratox.2f30.org/;
+    license = licenses.isc;
+    maintainers = with maintainers; [ ehmry ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ricochet/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/ricochet/default.nix
new file mode 100644
index 000000000000..a6aef5e6a2fb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ricochet/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchurl, pkgconfig, makeDesktopItem
+, qtbase, qttools, qtmultimedia, qtquick1, qtquickcontrols
+, openssl, protobuf, qmake
+}:
+
+stdenv.mkDerivation rec {
+  name = "ricochet-${version}";
+  version = "1.1.4";
+
+  src = fetchurl {
+    url = "https://github.com/ricochet-im/ricochet/archive/v${version}.tar.gz";
+    sha256 = "1kfj42ksvj7axc809lb8siqzj5hck2pib427b63a3ipnqc5h1faf";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "ricochet";
+    exec = "ricochet";
+    icon = "ricochet";
+    desktopName = "Ricochet";
+    genericName = "Ricochet";
+    comment = meta.description;
+    categories = "Office;Email;";
+  };
+
+  buildInputs = [
+    qtbase qttools qtmultimedia qtquick1 qtquickcontrols
+    openssl protobuf
+  ];
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+
+  preConfigure = ''
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags openssl)"
+  '';
+
+  qmakeFlags = [ "DEFINES+=RICOCHET_NO_PORTABLE" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ricochet $out/bin
+
+    mkdir -p $out/share/applications
+    cp $desktopItem/share/applications"/"* $out/share/applications
+
+    mkdir -p $out/share/pixmaps
+    cp icons/ricochet.png $out/share/pixmaps/ricochet.png
+  '';
+
+  # RCC: Error in 'translation/embedded.qrc': Cannot find file 'ricochet_en.qm'
+  enableParallelBuilding = false;
+
+  meta = with stdenv.lib; {
+    description = "Anonymous peer-to-peer instant messaging";
+    homepage = https://ricochet.im;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.codsl maintainers.jgillich maintainers.np ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/default.nix
new file mode 100644
index 000000000000..168719bf0e4c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/default.nix
@@ -0,0 +1,150 @@
+{ stdenv
+, fetchgit
+, which
+, autoreconfHook
+, pkgconfig
+, automake
+, libtool
+, pjsip
+, libyamlcpp
+, alsaLib
+, libpulseaudio
+, libsamplerate
+, libsndfile
+, dbus
+, dbus_cplusplus
+, ffmpeg
+, udev
+, pcre
+, gsm
+, speex
+, boost
+, opendht
+, msgpack
+, gnutls
+, zlib
+, jsoncpp
+, xorg
+, libargon2
+, cryptopp
+, openssl
+, perl
+, python3
+, libupnp
+, speexdsp
+, fetchFromGitHub
+, cmake
+, asio
+}:
+
+let
+  myPython = python3.withPackages (ps: with ps; [
+    pygobject3
+    dbus-python
+  ]);
+
+  src = fetchgit {
+    url = https://gitlab.savoirfairelinux.com/ring/ring-daemon.git;
+    rev = "006b8dc7be08fe9beb68709af71004e7bc1ceb5c";
+    sha256 = "0ih9g0rismrhx6nqcy3jqfbcs166grg0shnfmrnmykl9h0xy8z47";
+  };
+
+  patchdir = "${src}/contrib/src";
+
+  restbed = import ./restbed.nix {
+    inherit stdenv fetchFromGitHub cmake asio openssl;
+    patches = [
+    "${patchdir}/restbed/CMakeLists.patch"
+    "${patchdir}/restbed/strand.patch"
+    "${patchdir}/restbed/uri_cpp.patch"
+    "${patchdir}/restbed/dns-resolution-error.patch"
+    "${patchdir}/restbed/string.patch"
+    ];
+  };
+
+  pjsip' = stdenv.lib.overrideDerivation pjsip (old: {
+    patches = [
+      "${patchdir}/pjproject/gnutls.patch"
+      ./notestsapps.patch # this one had to be modified
+      "${patchdir}/pjproject/fix_base64.patch"
+      "${patchdir}/pjproject/ipv6.patch"
+      "${patchdir}/pjproject/ice_config.patch"
+      "${patchdir}/pjproject/multiple_listeners.patch"
+      "${patchdir}/pjproject/pj_ice_sess.patch"
+      "${patchdir}/pjproject/fix_turn_fallback.patch"
+      "${patchdir}/pjproject/fix_ioqueue_ipv6_sendto.patch"
+      "${patchdir}/pjproject/add_dtls_transport.patch"
+    ];
+    CFLAGS = "-g -DPJ_ICE_MAX_CAND=256 -DPJ_ICE_MAX_CHECKS=150 -DPJ_ICE_COMP_BITS=2 -DPJ_ICE_MAX_STUN=3 -DPJSIP_MAX_PKT_LEN=8000";
+  });
+in
+stdenv.mkDerivation rec {
+  name = "ring-daemon-${version}";
+  version = "2017-07-11";
+
+  inherit src;
+
+  nativeBuildInputs = [
+    which
+    autoreconfHook
+    automake
+    libtool
+    pkgconfig
+  ];
+
+  buildInputs = [
+    pjsip'
+    libyamlcpp
+    alsaLib
+    libpulseaudio
+    libsamplerate
+    libsndfile
+    dbus
+    dbus_cplusplus
+    ffmpeg
+    udev
+    pcre
+    gsm
+    speex
+    boost
+    opendht
+    msgpack
+    gnutls
+    zlib
+    jsoncpp
+    restbed
+    xorg.libX11
+    libargon2
+    cryptopp
+    openssl
+    perl
+    libupnp
+    speexdsp
+  ];
+
+  postInstall = ''
+    mkdir $out/bin
+    ln -s $out/lib/ring/dring $out/bin/dring
+    cp -R ./tools/dringctrl/ $out/
+    substitute ./tools/dringctrl/dringctrl.py $out/dringctrl/dringctrl.py \
+      --replace '#!/usr/bin/env python3' "#!${myPython}/bin/python3"
+    chmod +x $out/dringctrl/dringctrl.py
+    ln -s $out/dringctrl/dringctrl.py $out/bin/dringctrl.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Voice-over-IP software phone";
+    longDescription = ''
+      As the SIP/audio daemon and the user interface are separate processes, it
+      is easy to provide different user interfaces. GNU Ring comes with various
+      graphical user interfaces and even scripts to control the daemon from the
+      shell.
+    '';
+    homepage = https://ring.cx;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ taeer olynch ];
+    platforms = platforms.linux;
+    # pjsip' fails to compile with the supplied patch set, see: https://hydra.nixos.org/build/68667921/nixlog/4
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/notestsapps.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/notestsapps.patch
new file mode 100644
index 000000000000..842060935b04
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/notestsapps.patch
@@ -0,0 +1,106 @@
+/* diff --git a/Makefile b/Makefile */
+/* index 33a4e6b..a486eb7 100644 */
+/* --- a/Makefile */
+/* +++ b/Makefile */
+/* @@ -4,7 +4,7 @@ include build/host-$(HOST_NAME).mak */
+/*  include version.mak */
+ 
+/*  LIB_DIRS = pjlib/build pjlib-util/build pjnath/build third_party/build pjmedia/build pjsip/build */
+/* -DIRS = $(LIB_DIRS) pjsip-apps/build $(EXTRA_DIRS) */
+/* +DIRS = $(LIB_DIRS) $(EXTRA_DIRS) */
+ 
+/*  ifdef MINSIZE */
+/*  MAKE_FLAGS := MINSIZE=1 */
+diff --git a/pjlib-util/build/Makefile b/pjlib-util/build/Makefile
+index cb601cb..862a78a 100644
+--- a/pjlib-util/build/Makefile
++++ b/pjlib-util/build/Makefile
+@@ -54,7 +54,6 @@ export UTIL_TEST_OBJS += xml.o encryption.o stun.o resolver_test.o test.o \
+ export UTIL_TEST_CFLAGS += $(_CFLAGS)
+ export UTIL_TEST_CXXFLAGS += $(_CXXFLAGS)
+ export UTIL_TEST_LDFLAGS += $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS)
+-export UTIL_TEST_EXE:=pjlib-util-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 	
+ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT 
+diff --git a/pjlib/build/Makefile b/pjlib/build/Makefile
+index 1e64950..a75fa65 100644
+--- a/pjlib/build/Makefile
++++ b/pjlib/build/Makefile
+@@ -56,7 +56,6 @@ export TEST_OBJS += activesock.o atomic.o echo_clt.o errno.o exception.o \
+ export TEST_CFLAGS += $(_CFLAGS)
+ export TEST_CXXFLAGS += $(_CXXFLAGS)
+ export TEST_LDFLAGS += $(PJLIB_LDLIB) $(_LDFLAGS)
+-export TEST_EXE := pjlib-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 
+ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT 
+diff --git a/pjmedia/build/Makefile b/pjmedia/build/Makefile
+index 8012cb7..2ca283a 100644
+--- a/pjmedia/build/Makefile
++++ b/pjmedia/build/Makefile
+@@ -165,7 +165,6 @@ export PJMEDIA_TEST_LDFLAGS += $(PJMEDIA_CODEC_LDLIB) \
+ 			       $(PJLIB_UTIL_LDLIB) \
+ 			       $(PJNATH_LDLIB) \
+ 			       $(_LDFLAGS)
+-export PJMEDIA_TEST_EXE:=pjmedia-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 	
+ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT 
+diff --git a/pjnath/build/Makefile b/pjnath/build/Makefile
+index 1bc08b5..109f79b 100644
+--- a/pjnath/build/Makefile
++++ b/pjnath/build/Makefile
+@@ -54,7 +54,6 @@ export PJNATH_TEST_OBJS += ice_test.o stun.o sess_auth.o server.o concur_test.o
+ export PJNATH_TEST_CFLAGS += $(_CFLAGS)
+ export PJNATH_TEST_CXXFLAGS += $(_CXXFLAGS)
+ export PJNATH_TEST_LDFLAGS += $(PJNATH_LDLIB) $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS)
+-export PJNATH_TEST_EXE:=pjnath-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 	
+ ###############################################################################
+@@ -65,7 +64,6 @@ export PJTURN_CLIENT_OBJS += client_main.o
+ export PJTURN_CLIENT_CFLAGS += $(_CFLAGS)
+ export PJTURN_CLIENT_CXXFLAGS += $(_CXXFLAGS)
+ export PJTURN_CLIENT_LDFLAGS += $(PJNATH_LDLIB) $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS)
+-export PJTURN_CLIENT_EXE:=pjturn-client-$(TARGET_NAME)$(HOST_EXE)
+ 
+ ###############################################################################
+ # Defines for building TURN server application
+@@ -76,7 +74,6 @@ export PJTURN_SRV_OBJS += allocation.o auth.o listener_udp.o \
+ export PJTURN_SRV_CFLAGS += $(_CFLAGS)
+ export PJTURN_SRV_CXXFLAGS += $(_CXXFLAGS)
+ export PJTURN_SRV_LDFLAGS += $(PJNATH_LDLIB) $(PJLIB_UTIL_LDLIB) $(PJLIB_LDLIB) $(_LDFLAGS)
+-export PJTURN_SRV_EXE:=pjturn-srv-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 	
+ 	
+diff --git a/pjsip/build/Makefile b/pjsip/build/Makefile
+index d2a5c2a..7e2ec60 100644
+--- a/pjsip/build/Makefile
++++ b/pjsip/build/Makefile
+@@ -140,7 +140,7 @@ export PJSUA2_LIB_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
+ 			   account.o endpoint.o json.o persistent.o types.o \
+ 			   siptypes.o call.o presence.o media.o
+ export PJSUA2_LIB_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS)
+-export PJSUA2_LIB_CXXFLAGS = $(PJSUA2_LIB_CFLAGS) 
++export PJSUA2_LIB_CXXFLAGS = $(_CXXFLAGS) $(PJ_VIDEO_CFLAGS) 
+ export PJSUA2_LIB_LDFLAGS += $(PJSUA_LIB_LDLIB) \
+ 			     $(PJSIP_UA_LDLIB) \
+ 			     $(PJSIP_SIMPLE_LDLIB) \
+@@ -165,7 +165,6 @@ export PJSUA2_TEST_OBJS += $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \
+ export PJSUA2_TEST_CFLAGS += $(_CFLAGS) $(PJ_VIDEO_CFLAGS)
+ export PJSUA2_TEST_CXXFLAGS = $(PJSUA2_LIB_CFLAGS) 
+ export PJSUA2_TEST_LDFLAGS += $(PJ_LDXXFLAGS) $(PJ_LDXXLIBS) $(LDFLAGS)
+-export PJSUA2_TEST_EXE := pjsua2-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT 
+ 
+@@ -195,7 +194,6 @@ export TEST_LDFLAGS += $(PJSIP_LDLIB) \
+ 		       $(PJLIB_UTIL_LDLIB) \
+ 		       $(PJNATH_LDLIB) \
+ 		       $(_LDFLAGS)
+-export TEST_EXE := pjsip-test-$(TARGET_NAME)$(HOST_EXE)
+ 
+ 	
+ export CC_OUT CC AR RANLIB HOST_MV HOST_RM HOST_RMDIR HOST_MKDIR OBJEXT LD LDOUT 
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/restbed.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/restbed.nix
new file mode 100644
index 000000000000..0546d2dae472
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/ring-daemon/restbed.nix
@@ -0,0 +1,41 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, asio
+, openssl
+, patches
+}:
+
+stdenv.mkDerivation rec {
+  name = "restbed-${version}";
+  version = "2016-09-15";
+
+  src = fetchFromGitHub {
+    owner = "Corvusoft";
+    repo = "restbed";
+    rev = "34187502642144ab9f749ab40f5cdbd8cb17a54a";
+    sha256 = "1jb38331fcicyiisqdprhq6zwfc6g518fm3l4qw9aiv5k9nqim22";
+  };
+
+  inherit patches;
+
+  buildInputs = [
+    cmake
+    asio
+    openssl
+  ];
+
+  meta = with stdenv.lib; {
+    description = "HTTP framework for building networked applications";
+    longDescription = ''
+      HTTP framework for building networked applications that require seamless
+      and secure communication, with the flexability to model a range of
+      business processes. Targeting mobile, tablet, desktop, and embedded
+      production environments.
+    '';
+    homepage = https://corvusoft.co.uk/;
+    license = licenses.agpl3;
+    maintainers = with maintainers; [ taeer ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-package.json b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-package.json
new file mode 100644
index 000000000000..cb3c90923747
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-package.json
@@ -0,0 +1,15 @@
+{
+  "name": "riot-web",
+  "productName": "Riot",
+  "main": "src/electron-main.js",
+  "version": "1.0.4",
+  "description": "A feature-rich client for Matrix.org",
+  "author": "New Vector Ltd.",
+  "dependencies": {
+    "auto-launch": "^5.0.1",
+    "electron-store": "^2.0.0",
+    "electron-window-state": "^4.1.0",
+    "minimist": "^1.2.0",
+    "png-to-ico": "^1.0.2"
+  }
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-yarndeps.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-yarndeps.nix
new file mode 100644
index 000000000000..25cc694afcfd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop-yarndeps.nix
@@ -0,0 +1,1148 @@
+{fetchurl, linkFarm}: rec {
+  offline_cache = linkFarm "offline" packages;
+  packages = [
+
+    {
+      name = "node-9.6.45.tgz";
+      path = fetchurl {
+        name = "node-9.6.45.tgz";
+        url  = "https://registry.yarnpkg.com/@types/node/-/node-9.6.45.tgz";
+        sha1 = "a9e5cfd026a3abaaf17e3c0318a470da9f2f178e";
+      };
+    }
+
+    {
+      name = "ajv-6.10.0.tgz";
+      path = fetchurl {
+        name = "ajv-6.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz";
+        sha1 = "90d0d54439da587cd7e843bfb7045f50bd22bdf1";
+      };
+    }
+
+    {
+      name = "applescript-1.0.0.tgz";
+      path = fetchurl {
+        name = "applescript-1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/applescript/-/applescript-1.0.0.tgz";
+        sha1 = "bb87af568cad034a4e48c4bdaf6067a3a2701317";
+      };
+    }
+
+    {
+      name = "asn1-0.2.4.tgz";
+      path = fetchurl {
+        name = "asn1-0.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz";
+        sha1 = "8d2475dfab553bb33e77b54e59e880bb8ce23136";
+      };
+    }
+
+    {
+      name = "assert-plus-1.0.0.tgz";
+      path = fetchurl {
+        name = "assert-plus-1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz";
+        sha1 = "f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525";
+      };
+    }
+
+    {
+      name = "asynckit-0.4.0.tgz";
+      path = fetchurl {
+        name = "asynckit-0.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz";
+        sha1 = "c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79";
+      };
+    }
+
+    {
+      name = "auto-launch-5.0.5.tgz";
+      path = fetchurl {
+        name = "auto-launch-5.0.5.tgz";
+        url  = "https://registry.yarnpkg.com/auto-launch/-/auto-launch-5.0.5.tgz";
+        sha1 = "d14bd002b1ef642f85e991a6195ff5300c8ad3c0";
+      };
+    }
+
+    {
+      name = "aws-sign2-0.7.0.tgz";
+      path = fetchurl {
+        name = "aws-sign2-0.7.0.tgz";
+        url  = "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz";
+        sha1 = "b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8";
+      };
+    }
+
+    {
+      name = "aws4-1.8.0.tgz";
+      path = fetchurl {
+        name = "aws4-1.8.0.tgz";
+        url  = "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz";
+        sha1 = "f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f";
+      };
+    }
+
+    {
+      name = "bcrypt-pbkdf-1.0.2.tgz";
+      path = fetchurl {
+        name = "bcrypt-pbkdf-1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz";
+        sha1 = "a4301d389b6a43f9b67ff3ca11a3f6637e360e9e";
+      };
+    }
+
+    {
+      name = "bignumber.js-2.4.0.tgz";
+      path = fetchurl {
+        name = "bignumber.js-2.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-2.4.0.tgz";
+        sha1 = "838a992da9f9d737e0f4b2db0be62bb09dd0c5e8";
+      };
+    }
+
+    {
+      name = "bmp-js-0.0.3.tgz";
+      path = fetchurl {
+        name = "bmp-js-0.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.0.3.tgz";
+        sha1 = "64113e9c7cf1202b376ed607bf30626ebe57b18a";
+      };
+    }
+
+    {
+      name = "buffer-equal-0.0.1.tgz";
+      path = fetchurl {
+        name = "buffer-equal-0.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz";
+        sha1 = "91bc74b11ea405bc916bc6aa908faafa5b4aac4b";
+      };
+    }
+
+    {
+      name = "caseless-0.12.0.tgz";
+      path = fetchurl {
+        name = "caseless-0.12.0.tgz";
+        url  = "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz";
+        sha1 = "1b681c21ff84033c826543090689420d187151dc";
+      };
+    }
+
+    {
+      name = "combined-stream-1.0.7.tgz";
+      path = fetchurl {
+        name = "combined-stream-1.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz";
+        sha1 = "2d1d24317afb8abe95d6d2c0b07b57813539d828";
+      };
+    }
+
+    {
+      name = "conf-2.2.0.tgz";
+      path = fetchurl {
+        name = "conf-2.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/conf/-/conf-2.2.0.tgz";
+        sha1 = "ee282efafc1450b61e205372041ad7d866802d9a";
+      };
+    }
+
+    {
+      name = "core-util-is-1.0.2.tgz";
+      path = fetchurl {
+        name = "core-util-is-1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz";
+        sha1 = "b5fd54220aa2bc5ab57aab7140c940754503c1a7";
+      };
+    }
+
+    {
+      name = "dashdash-1.14.1.tgz";
+      path = fetchurl {
+        name = "dashdash-1.14.1.tgz";
+        url  = "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz";
+        sha1 = "853cfa0f7cbe2fed5de20326b8dd581035f6e2f0";
+      };
+    }
+
+    {
+      name = "deep-equal-1.0.1.tgz";
+      path = fetchurl {
+        name = "deep-equal-1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz";
+        sha1 = "f5d260292b660e084eff4cdbc9f08ad3247448b5";
+      };
+    }
+
+    {
+      name = "define-properties-1.1.3.tgz";
+      path = fetchurl {
+        name = "define-properties-1.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz";
+        sha1 = "cf88da6cbee26fe6db7094f61d870cbd84cee9f1";
+      };
+    }
+
+    {
+      name = "delayed-stream-1.0.0.tgz";
+      path = fetchurl {
+        name = "delayed-stream-1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz";
+        sha1 = "df3ae199acadfb7d440aaae0b29e2272b24ec619";
+      };
+    }
+
+    {
+      name = "dom-walk-0.1.1.tgz";
+      path = fetchurl {
+        name = "dom-walk-0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz";
+        sha1 = "672226dc74c8f799ad35307df936aba11acd6018";
+      };
+    }
+
+    {
+      name = "dot-prop-4.2.0.tgz";
+      path = fetchurl {
+        name = "dot-prop-4.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz";
+        sha1 = "1f19e0c2e1aa0e32797c49799f2837ac6af69c57";
+      };
+    }
+
+    {
+      name = "ecc-jsbn-0.1.2.tgz";
+      path = fetchurl {
+        name = "ecc-jsbn-0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz";
+        sha1 = "3a83a904e54353287874c564b7549386849a98c9";
+      };
+    }
+
+    {
+      name = "electron-store-2.0.0.tgz";
+      path = fetchurl {
+        name = "electron-store-2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/electron-store/-/electron-store-2.0.0.tgz";
+        sha1 = "1035cca2a95409d1f54c7466606345852450d64a";
+      };
+    }
+
+    {
+      name = "electron-window-state-4.1.1.tgz";
+      path = fetchurl {
+        name = "electron-window-state-4.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/electron-window-state/-/electron-window-state-4.1.1.tgz";
+        sha1 = "6b34fdc31b38514dfec8b7c8f7b5d4addb67632d";
+      };
+    }
+
+    {
+      name = "env-paths-1.0.0.tgz";
+      path = fetchurl {
+        name = "env-paths-1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz";
+        sha1 = "4168133b42bb05c38a35b1ae4397c8298ab369e0";
+      };
+    }
+
+    {
+      name = "es-abstract-1.13.0.tgz";
+      path = fetchurl {
+        name = "es-abstract-1.13.0.tgz";
+        url  = "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz";
+        sha1 = "ac86145fdd5099d8dd49558ccba2eaf9b88e24e9";
+      };
+    }
+
+    {
+      name = "es-to-primitive-1.2.0.tgz";
+      path = fetchurl {
+        name = "es-to-primitive-1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz";
+        sha1 = "edf72478033456e8dda8ef09e00ad9650707f377";
+      };
+    }
+
+    {
+      name = "es6-promise-3.3.1.tgz";
+      path = fetchurl {
+        name = "es6-promise-3.3.1.tgz";
+        url  = "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz";
+        sha1 = "a08cdde84ccdbf34d027a1451bc91d4bcd28a613";
+      };
+    }
+
+    {
+      name = "exif-parser-0.1.12.tgz";
+      path = fetchurl {
+        name = "exif-parser-0.1.12.tgz";
+        url  = "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz";
+        sha1 = "58a9d2d72c02c1f6f02a0ef4a9166272b7760922";
+      };
+    }
+
+    {
+      name = "extend-3.0.2.tgz";
+      path = fetchurl {
+        name = "extend-3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz";
+        sha1 = "f8b1136b4071fbd8eb140aff858b1019ec2915fa";
+      };
+    }
+
+    {
+      name = "extsprintf-1.3.0.tgz";
+      path = fetchurl {
+        name = "extsprintf-1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz";
+        sha1 = "96918440e3041a7a414f8c52e3c574eb3c3e1e05";
+      };
+    }
+
+    {
+      name = "extsprintf-1.4.0.tgz";
+      path = fetchurl {
+        name = "extsprintf-1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz";
+        sha1 = "e2689f8f356fad62cca65a3a91c5df5f9551692f";
+      };
+    }
+
+    {
+      name = "fast-deep-equal-2.0.1.tgz";
+      path = fetchurl {
+        name = "fast-deep-equal-2.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz";
+        sha1 = "7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49";
+      };
+    }
+
+    {
+      name = "fast-json-stable-stringify-2.0.0.tgz";
+      path = fetchurl {
+        name = "fast-json-stable-stringify-2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz";
+        sha1 = "d5142c0caee6b1189f87d3a76111064f86c8bbf2";
+      };
+    }
+
+    {
+      name = "file-type-3.9.0.tgz";
+      path = fetchurl {
+        name = "file-type-3.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz";
+        sha1 = "257a078384d1db8087bc449d107d52a52672b9e9";
+      };
+    }
+
+    {
+      name = "find-up-2.1.0.tgz";
+      path = fetchurl {
+        name = "find-up-2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz";
+        sha1 = "45d1b7e506c717ddd482775a2b77920a3c0c57a7";
+      };
+    }
+
+    {
+      name = "for-each-0.3.3.tgz";
+      path = fetchurl {
+        name = "for-each-0.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz";
+        sha1 = "69b447e88a0a5d32c3e7084f3f1710034b21376e";
+      };
+    }
+
+    {
+      name = "forever-agent-0.6.1.tgz";
+      path = fetchurl {
+        name = "forever-agent-0.6.1.tgz";
+        url  = "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz";
+        sha1 = "fbc71f0c41adeb37f96c577ad1ed42d8fdacca91";
+      };
+    }
+
+    {
+      name = "form-data-2.3.3.tgz";
+      path = fetchurl {
+        name = "form-data-2.3.3.tgz";
+        url  = "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz";
+        sha1 = "dcce52c05f644f298c6a7ab936bd724ceffbf3a6";
+      };
+    }
+
+    {
+      name = "function-bind-1.1.1.tgz";
+      path = fetchurl {
+        name = "function-bind-1.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz";
+        sha1 = "a56899d3ea3c9bab874bb9773b7c5ede92f4895d";
+      };
+    }
+
+    {
+      name = "getpass-0.1.7.tgz";
+      path = fetchurl {
+        name = "getpass-0.1.7.tgz";
+        url  = "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz";
+        sha1 = "5eff8e3e684d569ae4cb2b1282604e8ba62149fa";
+      };
+    }
+
+    {
+      name = "global-4.3.2.tgz";
+      path = fetchurl {
+        name = "global-4.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz";
+        sha1 = "e76989268a6c74c38908b1305b10fc0e394e9d0f";
+      };
+    }
+
+    {
+      name = "graceful-fs-4.1.15.tgz";
+      path = fetchurl {
+        name = "graceful-fs-4.1.15.tgz";
+        url  = "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz";
+        sha1 = "ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00";
+      };
+    }
+
+    {
+      name = "har-schema-2.0.0.tgz";
+      path = fetchurl {
+        name = "har-schema-2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz";
+        sha1 = "a94c2224ebcac04782a0d9035521f24735b7ec92";
+      };
+    }
+
+    {
+      name = "har-validator-5.1.3.tgz";
+      path = fetchurl {
+        name = "har-validator-5.1.3.tgz";
+        url  = "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz";
+        sha1 = "1ef89ebd3e4996557675eed9893110dc350fa080";
+      };
+    }
+
+    {
+      name = "has-symbols-1.0.0.tgz";
+      path = fetchurl {
+        name = "has-symbols-1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz";
+        sha1 = "ba1a8f1af2a0fc39650f5c850367704122063b44";
+      };
+    }
+
+    {
+      name = "has-1.0.3.tgz";
+      path = fetchurl {
+        name = "has-1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz";
+        sha1 = "722d7cbfc1f6aa8241f16dd814e011e1f41e8796";
+      };
+    }
+
+    {
+      name = "http-signature-1.2.0.tgz";
+      path = fetchurl {
+        name = "http-signature-1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz";
+        sha1 = "9aecd925114772f3d95b65a60abb8f7c18fbace1";
+      };
+    }
+
+    {
+      name = "imurmurhash-0.1.4.tgz";
+      path = fetchurl {
+        name = "imurmurhash-0.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz";
+        sha1 = "9218b9b2b928a238b13dc4fb6b6d576f231453ea";
+      };
+    }
+
+    {
+      name = "ip-regex-1.0.3.tgz";
+      path = fetchurl {
+        name = "ip-regex-1.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/ip-regex/-/ip-regex-1.0.3.tgz";
+        sha1 = "dc589076f659f419c222039a33316f1c7387effd";
+      };
+    }
+
+    {
+      name = "is-callable-1.1.4.tgz";
+      path = fetchurl {
+        name = "is-callable-1.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz";
+        sha1 = "1e1adf219e1eeb684d691f9d6a05ff0d30a24d75";
+      };
+    }
+
+    {
+      name = "is-date-object-1.0.1.tgz";
+      path = fetchurl {
+        name = "is-date-object-1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz";
+        sha1 = "9aa20eb6aeebbff77fbd33e74ca01b33581d3a16";
+      };
+    }
+
+    {
+      name = "is-function-1.0.1.tgz";
+      path = fetchurl {
+        name = "is-function-1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-function/-/is-function-1.0.1.tgz";
+        sha1 = "12cfb98b65b57dd3d193a3121f5f6e2f437602b5";
+      };
+    }
+
+    {
+      name = "is-obj-1.0.1.tgz";
+      path = fetchurl {
+        name = "is-obj-1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz";
+        sha1 = "3e4729ac1f5fde025cd7d83a896dab9f4f67db0f";
+      };
+    }
+
+    {
+      name = "is-regex-1.0.4.tgz";
+      path = fetchurl {
+        name = "is-regex-1.0.4.tgz";
+        url  = "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz";
+        sha1 = "5517489b547091b0930e095654ced25ee97e9491";
+      };
+    }
+
+    {
+      name = "is-symbol-1.0.2.tgz";
+      path = fetchurl {
+        name = "is-symbol-1.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz";
+        sha1 = "a055f6ae57192caee329e7a860118b497a950f38";
+      };
+    }
+
+    {
+      name = "is-typedarray-1.0.0.tgz";
+      path = fetchurl {
+        name = "is-typedarray-1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz";
+        sha1 = "e479c80858df0c1b11ddda6940f96011fcda4a9a";
+      };
+    }
+
+    {
+      name = "isstream-0.1.2.tgz";
+      path = fetchurl {
+        name = "isstream-0.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz";
+        sha1 = "47e63f7af55afa6f92e1500e690eb8b8529c099a";
+      };
+    }
+
+    {
+      name = "jimp-0.2.28.tgz";
+      path = fetchurl {
+        name = "jimp-0.2.28.tgz";
+        url  = "https://registry.yarnpkg.com/jimp/-/jimp-0.2.28.tgz";
+        sha1 = "dd529a937190f42957a7937d1acc3a7762996ea2";
+      };
+    }
+
+    {
+      name = "jpeg-js-0.2.0.tgz";
+      path = fetchurl {
+        name = "jpeg-js-0.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.2.0.tgz";
+        sha1 = "53e448ec9d263e683266467e9442d2c5a2ef5482";
+      };
+    }
+
+    {
+      name = "jsbn-0.1.1.tgz";
+      path = fetchurl {
+        name = "jsbn-0.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz";
+        sha1 = "a5e654c2e5a2deb5f201d96cefbca80c0ef2f513";
+      };
+    }
+
+    {
+      name = "json-schema-traverse-0.4.1.tgz";
+      path = fetchurl {
+        name = "json-schema-traverse-0.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz";
+        sha1 = "69f6a87d9513ab8bb8fe63bdb0979c448e684660";
+      };
+    }
+
+    {
+      name = "json-schema-0.2.3.tgz";
+      path = fetchurl {
+        name = "json-schema-0.2.3.tgz";
+        url  = "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz";
+        sha1 = "b480c892e59a2f05954ce727bd3f2a4e882f9e13";
+      };
+    }
+
+    {
+      name = "json-stringify-safe-5.0.1.tgz";
+      path = fetchurl {
+        name = "json-stringify-safe-5.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz";
+        sha1 = "1296a2d58fd45f19a0f6ce01d65701e2c735b6eb";
+      };
+    }
+
+    {
+      name = "jsonfile-2.4.0.tgz";
+      path = fetchurl {
+        name = "jsonfile-2.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz";
+        sha1 = "3736a2b428b87bbda0cc83b53fa3d633a35c2ae8";
+      };
+    }
+
+    {
+      name = "jsprim-1.4.1.tgz";
+      path = fetchurl {
+        name = "jsprim-1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz";
+        sha1 = "313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2";
+      };
+    }
+
+    {
+      name = "load-bmfont-1.4.0.tgz";
+      path = fetchurl {
+        name = "load-bmfont-1.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.0.tgz";
+        sha1 = "75f17070b14a8c785fe7f5bee2e6fd4f98093b6b";
+      };
+    }
+
+    {
+      name = "locate-path-2.0.0.tgz";
+      path = fetchurl {
+        name = "locate-path-2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz";
+        sha1 = "2b568b265eec944c6d9c0de9c3dbbbca0354cd8e";
+      };
+    }
+
+    {
+      name = "make-dir-1.3.0.tgz";
+      path = fetchurl {
+        name = "make-dir-1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz";
+        sha1 = "79c1033b80515bd6d24ec9933e860ca75ee27f0c";
+      };
+    }
+
+    {
+      name = "mime-db-1.38.0.tgz";
+      path = fetchurl {
+        name = "mime-db-1.38.0.tgz";
+        url  = "https://registry.yarnpkg.com/mime-db/-/mime-db-1.38.0.tgz";
+        sha1 = "1a2aab16da9eb167b49c6e4df2d9c68d63d8e2ad";
+      };
+    }
+
+    {
+      name = "mime-types-2.1.22.tgz";
+      path = fetchurl {
+        name = "mime-types-2.1.22.tgz";
+        url  = "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.22.tgz";
+        sha1 = "fe6b355a190926ab7698c9a0556a11199b2199bd";
+      };
+    }
+
+    {
+      name = "mime-1.6.0.tgz";
+      path = fetchurl {
+        name = "mime-1.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz";
+        sha1 = "32cd9e5c64553bd58d19a568af452acff04981b1";
+      };
+    }
+
+    {
+      name = "min-document-2.19.0.tgz";
+      path = fetchurl {
+        name = "min-document-2.19.0.tgz";
+        url  = "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz";
+        sha1 = "7bd282e3f5842ed295bb748cdd9f1ffa2c824685";
+      };
+    }
+
+    {
+      name = "minimist-0.0.8.tgz";
+      path = fetchurl {
+        name = "minimist-0.0.8.tgz";
+        url  = "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz";
+        sha1 = "857fcabfc3397d2625b8228262e86aa7a011b05d";
+      };
+    }
+
+    {
+      name = "minimist-1.2.0.tgz";
+      path = fetchurl {
+        name = "minimist-1.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz";
+        sha1 = "a35008b20f41383eec1fb914f4cd5df79a264284";
+      };
+    }
+
+    {
+      name = "mkdirp-0.5.1.tgz";
+      path = fetchurl {
+        name = "mkdirp-0.5.1.tgz";
+        url  = "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz";
+        sha1 = "30057438eac6cf7f8c4767f38648d6697d75c903";
+      };
+    }
+
+    {
+      name = "oauth-sign-0.9.0.tgz";
+      path = fetchurl {
+        name = "oauth-sign-0.9.0.tgz";
+        url  = "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz";
+        sha1 = "47a7b016baa68b5fa0ecf3dee08a85c679ac6455";
+      };
+    }
+
+    {
+      name = "object-keys-1.1.0.tgz";
+      path = fetchurl {
+        name = "object-keys-1.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.0.tgz";
+        sha1 = "11bd22348dd2e096a045ab06f6c85bcc340fa032";
+      };
+    }
+
+    {
+      name = "p-limit-1.3.0.tgz";
+      path = fetchurl {
+        name = "p-limit-1.3.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz";
+        sha1 = "b86bd5f0c25690911c7590fcbfc2010d54b3ccb8";
+      };
+    }
+
+    {
+      name = "p-locate-2.0.0.tgz";
+      path = fetchurl {
+        name = "p-locate-2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz";
+        sha1 = "20a0103b222a70c8fd39cc2e580680f3dde5ec43";
+      };
+    }
+
+    {
+      name = "p-try-1.0.0.tgz";
+      path = fetchurl {
+        name = "p-try-1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz";
+        sha1 = "cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3";
+      };
+    }
+
+    {
+      name = "parse-bmfont-ascii-1.0.6.tgz";
+      path = fetchurl {
+        name = "parse-bmfont-ascii-1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz";
+        sha1 = "11ac3c3ff58f7c2020ab22769079108d4dfa0285";
+      };
+    }
+
+    {
+      name = "parse-bmfont-binary-1.0.6.tgz";
+      path = fetchurl {
+        name = "parse-bmfont-binary-1.0.6.tgz";
+        url  = "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz";
+        sha1 = "d038b476d3e9dd9db1e11a0b0e53a22792b69006";
+      };
+    }
+
+    {
+      name = "parse-bmfont-xml-1.1.4.tgz";
+      path = fetchurl {
+        name = "parse-bmfont-xml-1.1.4.tgz";
+        url  = "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz";
+        sha1 = "015319797e3e12f9e739c4d513872cd2fa35f389";
+      };
+    }
+
+    {
+      name = "parse-headers-2.0.2.tgz";
+      path = fetchurl {
+        name = "parse-headers-2.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.2.tgz";
+        sha1 = "9545e8a4c1ae5eaea7d24992bca890281ed26e34";
+      };
+    }
+
+    {
+      name = "path-exists-3.0.0.tgz";
+      path = fetchurl {
+        name = "path-exists-3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz";
+        sha1 = "ce0ebeaa5f78cb18925ea7d810d7b59b010fd515";
+      };
+    }
+
+    {
+      name = "path-is-absolute-1.0.1.tgz";
+      path = fetchurl {
+        name = "path-is-absolute-1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
+        sha1 = "174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f";
+      };
+    }
+
+    {
+      name = "performance-now-2.1.0.tgz";
+      path = fetchurl {
+        name = "performance-now-2.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz";
+        sha1 = "6309f4e0e5fa913ec1c69307ae364b4b377c9e7b";
+      };
+    }
+
+    {
+      name = "phin-2.9.3.tgz";
+      path = fetchurl {
+        name = "phin-2.9.3.tgz";
+        url  = "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz";
+        sha1 = "f9b6ac10a035636fb65dfc576aaaa17b8743125c";
+      };
+    }
+
+    {
+      name = "pify-3.0.0.tgz";
+      path = fetchurl {
+        name = "pify-3.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz";
+        sha1 = "e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176";
+      };
+    }
+
+    {
+      name = "pixelmatch-4.0.2.tgz";
+      path = fetchurl {
+        name = "pixelmatch-4.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz";
+        sha1 = "8f47dcec5011b477b67db03c243bc1f3085e8854";
+      };
+    }
+
+    {
+      name = "pkg-up-2.0.0.tgz";
+      path = fetchurl {
+        name = "pkg-up-2.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz";
+        sha1 = "c819ac728059a461cab1c3889a2be3c49a004d7f";
+      };
+    }
+
+    {
+      name = "png-to-ico-1.0.7.tgz";
+      path = fetchurl {
+        name = "png-to-ico-1.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/png-to-ico/-/png-to-ico-1.0.7.tgz";
+        sha1 = "9346b5f4d6fd7e94cb08fd49eeb585f501c3e5f2";
+      };
+    }
+
+    {
+      name = "pngjs-3.4.0.tgz";
+      path = fetchurl {
+        name = "pngjs-3.4.0.tgz";
+        url  = "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz";
+        sha1 = "99ca7d725965fb655814eaf65f38f12bbdbf555f";
+      };
+    }
+
+    {
+      name = "process-0.5.2.tgz";
+      path = fetchurl {
+        name = "process-0.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz";
+        sha1 = "1638d8a8e34c2f440a91db95ab9aeb677fc185cf";
+      };
+    }
+
+    {
+      name = "psl-1.1.31.tgz";
+      path = fetchurl {
+        name = "psl-1.1.31.tgz";
+        url  = "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz";
+        sha1 = "e9aa86d0101b5b105cbe93ac6b784cd547276184";
+      };
+    }
+
+    {
+      name = "punycode-1.4.1.tgz";
+      path = fetchurl {
+        name = "punycode-1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz";
+        sha1 = "c0d5a63b2718800ad8e1eb0fa5269c84dd41845e";
+      };
+    }
+
+    {
+      name = "punycode-2.1.1.tgz";
+      path = fetchurl {
+        name = "punycode-2.1.1.tgz";
+        url  = "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz";
+        sha1 = "b58b010ac40c22c5657616c8d2c2c02c7bf479ec";
+      };
+    }
+
+    {
+      name = "qs-6.5.2.tgz";
+      path = fetchurl {
+        name = "qs-6.5.2.tgz";
+        url  = "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz";
+        sha1 = "cb3ae806e8740444584ef154ce8ee98d403f3e36";
+      };
+    }
+
+    {
+      name = "read-chunk-1.0.1.tgz";
+      path = fetchurl {
+        name = "read-chunk-1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/read-chunk/-/read-chunk-1.0.1.tgz";
+        sha1 = "5f68cab307e663f19993527d9b589cace4661194";
+      };
+    }
+
+    {
+      name = "request-2.88.0.tgz";
+      path = fetchurl {
+        name = "request-2.88.0.tgz";
+        url  = "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz";
+        sha1 = "9c2fca4f7d35b592efe57c7f0a55e81052124fef";
+      };
+    }
+
+    {
+      name = "safe-buffer-5.1.2.tgz";
+      path = fetchurl {
+        name = "safe-buffer-5.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz";
+        sha1 = "991ec69d296e0313747d59bdfd2b745c35f8828d";
+      };
+    }
+
+    {
+      name = "safer-buffer-2.1.2.tgz";
+      path = fetchurl {
+        name = "safer-buffer-2.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz";
+        sha1 = "44fa161b0187b9549dd84bb91802f9bd8385cd6a";
+      };
+    }
+
+    {
+      name = "sax-1.2.4.tgz";
+      path = fetchurl {
+        name = "sax-1.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz";
+        sha1 = "2816234e2378bddc4e5354fab5caa895df7100d9";
+      };
+    }
+
+    {
+      name = "signal-exit-3.0.2.tgz";
+      path = fetchurl {
+        name = "signal-exit-3.0.2.tgz";
+        url  = "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz";
+        sha1 = "b5fdc08f1287ea1178628e415e25132b73646c6d";
+      };
+    }
+
+    {
+      name = "sshpk-1.16.1.tgz";
+      path = fetchurl {
+        name = "sshpk-1.16.1.tgz";
+        url  = "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz";
+        sha1 = "fb661c0bef29b39db40769ee39fa70093d6f6877";
+      };
+    }
+
+    {
+      name = "stream-to-buffer-0.1.0.tgz";
+      path = fetchurl {
+        name = "stream-to-buffer-0.1.0.tgz";
+        url  = "https://registry.yarnpkg.com/stream-to-buffer/-/stream-to-buffer-0.1.0.tgz";
+        sha1 = "26799d903ab2025c9bd550ac47171b00f8dd80a9";
+      };
+    }
+
+    {
+      name = "stream-to-0.2.2.tgz";
+      path = fetchurl {
+        name = "stream-to-0.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/stream-to/-/stream-to-0.2.2.tgz";
+        sha1 = "84306098d85fdb990b9fa300b1b3ccf55e8ef01d";
+      };
+    }
+
+    {
+      name = "string.prototype.trim-1.1.2.tgz";
+      path = fetchurl {
+        name = "string.prototype.trim-1.1.2.tgz";
+        url  = "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz";
+        sha1 = "d04de2c89e137f4d7d206f086b5ed2fae6be8cea";
+      };
+    }
+
+    {
+      name = "tinycolor2-1.4.1.tgz";
+      path = fetchurl {
+        name = "tinycolor2-1.4.1.tgz";
+        url  = "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.1.tgz";
+        sha1 = "f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8";
+      };
+    }
+
+    {
+      name = "tough-cookie-2.4.3.tgz";
+      path = fetchurl {
+        name = "tough-cookie-2.4.3.tgz";
+        url  = "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz";
+        sha1 = "53f36da3f47783b0925afa06ff9f3b165280f781";
+      };
+    }
+
+    {
+      name = "tunnel-agent-0.6.0.tgz";
+      path = fetchurl {
+        name = "tunnel-agent-0.6.0.tgz";
+        url  = "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz";
+        sha1 = "27a5dea06b36b04a0a9966774b290868f0fc40fd";
+      };
+    }
+
+    {
+      name = "tweetnacl-0.14.5.tgz";
+      path = fetchurl {
+        name = "tweetnacl-0.14.5.tgz";
+        url  = "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz";
+        sha1 = "5ae68177f192d4456269d108afa93ff8743f4f64";
+      };
+    }
+
+    {
+      name = "untildify-3.0.3.tgz";
+      path = fetchurl {
+        name = "untildify-3.0.3.tgz";
+        url  = "https://registry.yarnpkg.com/untildify/-/untildify-3.0.3.tgz";
+        sha1 = "1e7b42b140bcfd922b22e70ca1265bfe3634c7c9";
+      };
+    }
+
+    {
+      name = "uri-js-4.2.2.tgz";
+      path = fetchurl {
+        name = "uri-js-4.2.2.tgz";
+        url  = "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz";
+        sha1 = "94c540e1ff772956e2299507c010aea6c8838eb0";
+      };
+    }
+
+    {
+      name = "url-regex-3.2.0.tgz";
+      path = fetchurl {
+        name = "url-regex-3.2.0.tgz";
+        url  = "https://registry.yarnpkg.com/url-regex/-/url-regex-3.2.0.tgz";
+        sha1 = "dbad1e0c9e29e105dd0b1f09f6862f7fdb482724";
+      };
+    }
+
+    {
+      name = "uuid-3.3.2.tgz";
+      path = fetchurl {
+        name = "uuid-3.3.2.tgz";
+        url  = "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz";
+        sha1 = "1b4af4955eb3077c501c23872fc6513811587131";
+      };
+    }
+
+    {
+      name = "verror-1.10.0.tgz";
+      path = fetchurl {
+        name = "verror-1.10.0.tgz";
+        url  = "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz";
+        sha1 = "3a105ca17053af55d6e270c1f8288682e18da400";
+      };
+    }
+
+    {
+      name = "winreg-1.2.4.tgz";
+      path = fetchurl {
+        name = "winreg-1.2.4.tgz";
+        url  = "https://registry.yarnpkg.com/winreg/-/winreg-1.2.4.tgz";
+        sha1 = "ba065629b7a925130e15779108cf540990e98d1b";
+      };
+    }
+
+    {
+      name = "write-file-atomic-2.4.2.tgz";
+      path = fetchurl {
+        name = "write-file-atomic-2.4.2.tgz";
+        url  = "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz";
+        sha1 = "a7181706dfba17855d221140a9c06e15fcdd87b9";
+      };
+    }
+
+    {
+      name = "xhr-2.5.0.tgz";
+      path = fetchurl {
+        name = "xhr-2.5.0.tgz";
+        url  = "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz";
+        sha1 = "bed8d1676d5ca36108667692b74b316c496e49dd";
+      };
+    }
+
+    {
+      name = "xml-parse-from-string-1.0.1.tgz";
+      path = fetchurl {
+        name = "xml-parse-from-string-1.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz";
+        sha1 = "a9029e929d3dbcded169f3c6e28238d95a5d5a28";
+      };
+    }
+
+    {
+      name = "xml2js-0.4.19.tgz";
+      path = fetchurl {
+        name = "xml2js-0.4.19.tgz";
+        url  = "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz";
+        sha1 = "686c20f213209e94abf0d1bcf1efaa291c7827a7";
+      };
+    }
+
+    {
+      name = "xmlbuilder-9.0.7.tgz";
+      path = fetchurl {
+        name = "xmlbuilder-9.0.7.tgz";
+        url  = "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz";
+        sha1 = "132ee63d2ec5565c557e20f4c22df9aca686b10d";
+      };
+    }
+
+    {
+      name = "xtend-4.0.1.tgz";
+      path = fetchurl {
+        name = "xtend-4.0.1.tgz";
+        url  = "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz";
+        sha1 = "a5c6d532be656e23db820efb943a1f04998d63af";
+      };
+    }
+  ];
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix
new file mode 100644
index 000000000000..03f1cc2471e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-desktop.nix
@@ -0,0 +1,77 @@
+{ stdenv, fetchFromGitHub, yarn2nix, makeWrapper, makeDesktopItem, electron, riot-web }:
+
+let
+  executableName = "riot-desktop";
+  version = "1.0.4";
+  riot-web-src = fetchFromGitHub {
+    owner = "vector-im";
+    repo = "riot-web";
+    rev = "v${version}";
+    sha256 = "152mi81miams5a7l9rd12bnf6wkd1r0lyicgr35r5fq0p6z7a4dk";
+  };
+
+in yarn2nix.mkYarnPackage rec {
+  name = "riot-desktop-${version}";
+  inherit version;
+
+  src = "${riot-web-src}/electron_app";
+
+  # The package manifest should be copied on each update of this package.
+  # > cp ${riot-web-src}/electron_app/package.json riot-desktop-package.json
+  packageJSON = ./riot-desktop-package.json;
+
+  # The dependency expression can be regenerated using nixos.yarn2nix with the following command:
+  # > yarn2nix --lockfile=${riot-web-src}/electron_app/yarn.lock > riot-desktop-yarndeps.nix
+  yarnNix = ./riot-desktop-yarndeps.nix;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    # resources
+    mkdir -p "$out/share/riot"
+    ln -s '${riot-web}' "$out/share/riot/webapp"
+    cp -r '${riot-web-src}/origin_migrator' "$out/share/riot/origin_migrator"
+    cp -r '.' "$out/share/riot/electron"
+
+    # icons
+    for icon in $out/share/riot/electron/build/icons/*.png; do
+      mkdir -p "$out/share/icons/hicolor/$(basename $icon .png)/apps"
+      ln -s "$icon" "$out/share/icons/hicolor/$(basename $icon .png)/apps/riot.png"
+    done
+
+    # desktop item
+    mkdir -p "$out/share"
+    ln -s "${desktopItem}/share/applications" "$out/share/applications"
+
+    # executable wrapper
+    makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \
+      --add-flags "$out/share/riot/electron"
+  '';
+
+  # The desktop item properties should be kept in sync with data from upstream:
+  # * productName and description from
+  #   https://github.com/vector-im/riot-web/blob/develop/electron_app/package.json
+  # * category and StartupWMClass from the build.linux section of
+  #   https://github.com/vector-im/riot-web/blob/develop/package.json
+  desktopItem = makeDesktopItem {
+    inherit name;
+    exec = executableName;
+    icon = "riot";
+    desktopName = "Riot";
+    genericName = "Matrix Client";
+    comment = meta.description;
+    categories = "Network;InstantMessaging;Chat;";
+    extraEntries = ''
+      StartupWMClass="riot"
+    '';
+  };
+
+  meta = with stdenv.lib; {
+    description = "A feature-rich client for Matrix.org";
+    homepage = https://about.riot.im/;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ pacien ];
+    inherit (electron.meta) platforms;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-web.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-web.nix
new file mode 100644
index 000000000000..7ce41d9e27e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/riot/riot-web.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchurl, writeText, conf ? null }:
+
+let configFile = writeText "riot-config.json" conf; in
+stdenv.mkDerivation rec {
+  name= "riot-web-${version}";
+  version = "1.0.6";
+
+  src = fetchurl {
+    url = "https://github.com/vector-im/riot-web/releases/download/v${version}/riot-v${version}.tar.gz";
+    sha256 = "09sm1k3iypqn93iazfx10y4bqz06d2h8f0902sgrj5qbnaq4jcxr";
+  };
+
+  installPhase = ''
+    mkdir -p $out/
+    cp -R . $out/
+    ${lib.optionalString (conf != null) "ln -s ${configFile} $out/config.json"}
+  '';
+
+  meta = {
+    description = "A glossy Matrix collaboration client for the web";
+    homepage = http://riot.im/;
+    maintainers = with stdenv.lib.maintainers; [ bachp ];
+    license = stdenv.lib.licenses.asl20;
+    platforms = stdenv.lib.platforms.all;
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix
new file mode 100644
index 000000000000..13c7281aea7c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchurl, python27Packages, file }:
+
+let
+  inherit (python27Packages) python;
+  requirements = (import ./requirements.nix {
+    inherit stdenv fetchurl;
+    pythonPackages = python27Packages;
+  });
+
+in
+  stdenv.mkDerivation rec {
+    pname = "salut-a-toi";
+    version = "0.6.1";
+
+    src = fetchurl {
+      url = "ftp://ftp.goffi.org/sat/sat-${version}.tar.bz2";
+      sha256 = "0kn9403n8fpzl0hsb9kkzicsmzq2fjl627l31yykbqzc4nsr780d";
+    };
+
+    buildInputs = with python27Packages;
+    [
+      python twisted urwid wxPython pygobject2
+      dbus-python wrapPython setuptools file
+      pycrypto pyxdg
+    ] ++  (with requirements; [
+      pyfeed
+      wokkel
+    ]);
+
+    configurePhase = ''
+      sed -i "/use_setuptools/d" setup.py
+      sed -e "s@sys.prefix@'$out'@g" -i setup.py
+      sed -e "1aexport PATH=\"\$PATH\":\"$out/bin\":\"${python27Packages.twisted}/bin\"" -i src/sat.sh
+      sed -e "1aexport PYTHONPATH=\"\$PYTHONPATHPATH\":\"$PYTHONPATH\":"$out/${python.sitePackages}"" -i src/sat.sh
+
+      echo 'import wokkel.muc' | python
+    '';
+
+    buildPhase = ''
+      ${python.interpreter} setup.py build
+    '';
+
+    installPhase = ''
+      ${python.interpreter} setup.py install --prefix="$out"
+
+      for i in "$out/bin"/*; do
+      head -n 1 "$i" | grep -E '[/ ]python( |$)' && {
+        wrapProgram "$i" --prefix PYTHONPATH : "$PYTHONPATH:$out/${python.sitePackages}"
+      } || true
+      done
+    '';
+
+    meta = with stdenv.lib; {
+      homepage = http://sat.goffi.org/;
+      description = "A multi-frontend XMPP client";
+      platforms = platforms.linux;
+      maintainers = [ maintainers.raskin ];
+      license = licenses.gpl3Plus;
+    };
+  }
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix
new file mode 100644
index 000000000000..1a6811182453
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/salut-a-toi/requirements.nix
@@ -0,0 +1,67 @@
+{ fetchurl
+, stdenv
+, pythonPackages
+}:
+
+let
+  buildPythonPackage = pythonPackages.buildPythonPackage;
+
+  xe = buildPythonPackage rec {
+    url = "http://www.blarg.net/%7Esteveha/xe-0.7.4.tar.gz";
+    name = stdenv.lib.nameFromURL url ".tar";
+    src = fetchurl {
+      inherit url;
+      sha256 = "0v9878cl0y9cczdsr6xjy8v9l139lc23h4m5f86p4kpf2wlnpi42";
+    };
+
+    # error: invalid command 'test'
+    doCheck = false;
+
+    meta = {
+      homepage = "http://home.blarg.net/~steveha/xe.html";
+      description = "XML elements";
+    };
+  };
+
+in {
+
+  pyfeed = (buildPythonPackage rec {
+    url = "http://www.blarg.net/%7Esteveha/pyfeed-0.7.4.tar.gz";
+
+    name = stdenv.lib.nameFromURL url ".tar";
+
+    src = fetchurl {
+      inherit url;
+      sha256 = "1h4msq573m7wm46h3cqlx4rsn99f0l11rhdqgf50lv17j8a8vvy1";
+    };
+
+    propagatedBuildInputs = [ xe ];
+
+    # error: invalid command 'test'
+    doCheck = false;
+
+    meta = with stdenv.lib; {
+      homepage = "http://home.blarg.net/~steveha/pyfeed.html";
+      description = "Tools for syndication feeds";
+    };
+
+  });
+
+  wokkel = buildPythonPackage (rec {
+    url = "http://wokkel.ik.nu/releases/0.7.0/wokkel-0.7.0.tar.gz";
+    name = stdenv.lib.nameFromURL url ".tar";
+    src = fetchurl {
+      inherit url;
+      sha256 = "0rnshrzw8605x05mpd8ndrx3ri8h6cx713mp8sl4f04f4gcrz8ml";
+    };
+
+    propagatedBuildInputs = with pythonPackages; [twisted dateutil];
+
+    meta = with stdenv.lib; {
+      description = "Some (mainly XMPP-related) additions to twisted";
+      homepage = "http://wokkel.ik.nu/";
+      license = licenses.mit;
+    };
+  });
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/scudcloud/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/scudcloud/default.nix
new file mode 100644
index 000000000000..54959383f08e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/scudcloud/default.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl, python3Packages }:
+
+let version = "1.63";
+in python3Packages.buildPythonPackage {
+  name = "scudcloud-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/raelgc/scudcloud/archive/v${version}.tar.gz";
+    sha256 = "e0d1cb72115d0fda17db92d28be51558ad8fe250972683fac3086dbe8d350d22";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ pyqt5_with_qtwebkit dbus-python jsmin ];
+
+  meta = with stdenv.lib; {
+    description = "Non-official desktop client for Slack";
+    homepage = https://github.com/raelgc/scudcloud;
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ volhovm ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/signal-cli/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-cli/default.nix
new file mode 100644
index 000000000000..3336c05aae74
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-cli/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, lib, fetchurl, makeWrapper, jre_headless }:
+
+stdenv.mkDerivation rec {
+  name = "signal-cli-${version}";
+  version = "0.6.2";
+
+  # Building from source would be preferred, but is much more involved.
+  src = fetchurl {
+    url = "https://github.com/AsamK/signal-cli/releases/download/v${version}/signal-cli-${version}.tar.gz";
+    sha256 = "050nizf7v10jlrwr8f4awzi2368qr01pzpvl2qkrwhdk25r505yr";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -r lib $out/lib
+    cp bin/signal-cli $out/bin/signal-cli
+    wrapProgram $out/bin/signal-cli \
+      --prefix PATH : ${lib.makeBinPath [ jre_headless ]} \
+      --set JAVA_HOME ${jre_headless}
+  '';
+
+  # Execution in the macOS (10.13) sandbox fails with
+  # dyld: Library not loaded: /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa
+  #   Referenced from: /nix/store/5ghc2l65p8jcjh0bsmhahd5m9k5p8kx0-zulu1.8.0_121-8.20.0.5/bin/java
+  #   Reason: no suitable image found.  Did find:
+  #         /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa: file system sandbox blocked stat()
+  #         /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa: file system sandbox blocked stat()
+  # /nix/store/in41dz8byyyz4c0w132l7mqi43liv4yr-stdenv-darwin/setup: line 1310:  2231 Abort trap: 6           signal-cli --version
+  doInstallCheck = stdenv.isLinux;
+  installCheckPhase = ''
+    export PATH=$PATH:$out/bin
+    # --help returns non-0 exit code even when working
+    signal-cli --version
+  '';
+
+  meta = with lib; {
+    homepage = https://github.com/AsamK/signal-cli;
+    description = "Command-line and dbus interface for communicating with the Signal messaging service";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ivan ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
new file mode 100644
index 000000000000..116e4917354e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/signal-desktop/default.nix
@@ -0,0 +1,112 @@
+{ stdenv, lib, fetchurl, dpkg, wrapGAppsHook
+, gnome2, gtk3, atk, at-spi2-atk, cairo, pango, gdk_pixbuf, glib, freetype, fontconfig
+, dbus, libX11, xorg, libXi, libXcursor, libXdamage, libXrandr, libXcomposite
+, libXext, libXfixes, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib
+, cups, expat, udev, libnotify, libuuid
+# Unfortunately this also overwrites the UI language (not just the spell
+# checking language!):
+, hunspellDicts, spellcheckerLanguage ? null # E.g. "de_DE"
+# For a full list of available languages:
+# $ cat pkgs/development/libraries/hunspell/dictionaries.nix | grep "dictFileName =" | awk '{ print $3 }'
+}:
+
+let
+  customLanguageWrapperArgs = (with lib;
+    let
+      # E.g. "de_DE" -> "de-de" (spellcheckerLanguage -> hunspellDict)
+      spellLangComponents = splitString "_" spellcheckerLanguage;
+      hunspellDict = elemAt spellLangComponents 0 + "-" + toLower (elemAt spellLangComponents 1);
+    in if spellcheckerLanguage != null
+      then ''
+        --set HUNSPELL_DICTIONARIES "${hunspellDicts.${hunspellDict}}/share/hunspell" \
+        --set LC_MESSAGES "${spellcheckerLanguage}"''
+      else "");
+  rpath = lib.makeLibraryPath [
+    alsaLib
+    atk
+    at-spi2-atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk_pixbuf
+    glib
+    gnome2.GConf
+    gtk3
+    pango
+    libnotify
+    libuuid
+    libX11
+    libXScrnSaver
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXtst
+    nspr
+    nss
+    udev
+    xorg.libxcb
+  ];
+
+in stdenv.mkDerivation rec {
+  name = "signal-desktop-${version}";
+  version = "1.23.2";
+
+  src = fetchurl {
+    url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
+    sha256 = "0nl8rv0lgp4cwv029kl7y09ngcrik2657m4wjn0rnls8kpmdhd8j";
+  };
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  nativeBuildInputs = [ dpkg wrapGAppsHook ];
+
+  unpackPhase = "dpkg-deb -x $src .";
+
+  installPhase = ''
+    mkdir -p $out
+    cp -R opt $out
+
+    mv ./usr/share $out/share
+    mv $out/opt/Signal $out/libexec
+    rmdir $out/opt
+
+    chmod -R g-w $out
+
+    # Patch signal
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+             --set-rpath ${rpath}:$out/libexec $out/libexec/signal-desktop
+    wrapProgram $out/libexec/signal-desktop \
+      --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \
+      --prefix LD_LIBRARY_PATH : "${stdenv.cc.cc.lib}/lib" \
+      ${customLanguageWrapperArgs} \
+      "''${gappsWrapperArgs[@]}"
+
+    # Symlink to bin
+    mkdir -p $out/bin
+    ln -s $out/libexec/signal-desktop $out/bin/signal-desktop
+
+    # Fix the desktop link
+    substituteInPlace $out/share/applications/signal-desktop.desktop \
+      --replace /opt/Signal/signal-desktop $out/bin/signal-desktop
+  '';
+
+  meta = {
+    description = "Private, simple, and secure messenger";
+    longDescription = ''
+      Signal Desktop is an Electron application that links with your
+      "Signal Android" or "Signal iOS" app.
+    '';
+    homepage    = https://signal.org/;
+    license     = lib.licenses.gpl3;
+    maintainers = with lib.maintainers; [ ixmatus primeos ];
+    platforms   = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/silc-client/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/silc-client/default.nix
new file mode 100644
index 000000000000..1219440bf833
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/silc-client/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, perl, pkgconfig, glib, ncurses
+, enablePlugin ? false }:
+
+# Enabling the plugin and using it with a recent irssi, segafults on join:
+# http://marc.info/?l=silc-devel&m=125610477802211
+
+let
+  basename = "silc-client-1.1.11";
+in
+stdenv.mkDerivation {
+  name = basename + stdenv.lib.optionalString enablePlugin "-irssi-plugin";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/silc/silc/client/sources/${basename}.tar.bz2";
+    sha256 = "13cp3fmdnj8scjak0d2xal3bfvs2k7ssrwdhp0zl6jar5rwc7prn";
+  };
+
+  enableParallelBuilding = true;
+
+  dontDisableStatic = true;
+
+  hardeningDisable = [ "format" ];
+
+  configureFlags = [ "--with-ncurses=${ncurses.dev}" ];
+
+  preConfigure = stdenv.lib.optionalString enablePlugin ''
+    configureFlags="$configureFlags --with-silc-plugin=$out/lib/irssi"
+  '';
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ perl glib ncurses ];
+
+  meta = {
+    homepage = http://silcnet.org/;
+    description = "Secure Internet Live Conferencing server";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/conference.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/conference.patch
new file mode 100644
index 000000000000..8b8ce8fd7bbf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/conference.patch
@@ -0,0 +1,148 @@
+From abd67f1d44eef81baf2e9729f95e002c4ecc7350 Mon Sep 17 00:00:00 2001
+From: jlh <jlh@gmx.ch>
+Date: Fri, 16 Oct 2009 17:40:54 +0200
+Subject: [PATCH] Rudimentary support for recording hosted conference calls
+
+---
+ call.cpp |   37 +++++++++++++++++++++++++++++++++++--
+ call.h   |   11 ++++++++++-
+ 2 files changed, 45 insertions(+), 3 deletions(-)
+
+diff --git a/call.cpp b/call.cpp
+index c2b02f2..663c1c1 100644
+--- a/call.cpp
++++ b/call.cpp
+@@ -90,9 +90,10 @@ void AutoSync::reset() {
+ 
+ // Call class
+ 
+-Call::Call(QObject *p, Skype *sk, CallID i) :
+-	QObject(p),
++Call::Call(CallHandler *h, Skype *sk, CallID i) :
++	QObject(h),
+ 	skype(sk),
++	handler(h),
+ 	id(i),
+ 	status("UNKNOWN"),
+ 	writer(NULL),
+@@ -119,6 +120,13 @@ Call::Call(QObject *p, Skype *sk, CallID i) :
+ 		debug(QString("Call %1: cannot get partner display name").arg(id));
+ 		displayName = "Unnamed Caller";
+ 	}
++
++	// Skype does not properly send updates when the CONF_ID property
++	// changes.  since we need this information, check it now on all calls
++	handler->updateConfIDs();
++	// this call isn't yet in the list of calls, thus we need to
++	// explicitely check its CONF_ID
++	updateConfID();
+ }
+ 
+ Call::~Call() {
+@@ -134,6 +142,10 @@ Call::~Call() {
+ 	// QT takes care of deleting servers and sockets
+ }
+ 
++void Call::updateConfID() {
++	confID = skype->getObject(QString("CALL %1 CONF_ID").arg(id)).toLong();
++}
++
+ bool Call::okToDelete() const {
+ 	// this is used for checking whether past calls may now be deleted.
+ 	// when a past call hasn't been decided yet whether it should have been
+@@ -270,6 +282,11 @@ void Call::startRecording(bool force) {
+ 	if (isRecording)
+ 		return;
+ 
++	if (handler->isConferenceRecording(confID)) {
++		debug(QString("Call %1: call is part of a conference that is already being recorded").arg(id));
++		return;
++	}
++
+ 	if (force) {
+ 		emit showLegalInformation();
+ 	} else {
+@@ -589,6 +606,22 @@ CallHandler::~CallHandler() {
+ 	delete legalInformationDialog;
+ }
+ 
++void CallHandler::updateConfIDs() {
++	QList<Call *> list = calls.values();
++	for (int i = 0; i < list.size(); i++)
++		list.at(i)->updateConfID();
++}
++
++bool CallHandler::isConferenceRecording(CallID id) const {
++	QList<Call *> list = calls.values();
++	for (int i = 0; i < list.size(); i++) {
++		Call *c = list.at(i);
++		if (c->getConfID() == id && c->getIsRecording())
++			return true;
++	}
++	return false;
++}
++
+ void CallHandler::callCmd(const QStringList &args) {
+ 	CallID id = args.at(0).toInt();
+ 
+diff --git a/call.h b/call.h
+index cb8396d..b746f46 100644
+--- a/call.h
++++ b/call.h
+@@ -43,6 +43,8 @@ class QTcpServer;
+ class QTcpSocket;
+ class LegalInformationDialog;
+ 
++class CallHandler;
++
+ typedef int CallID;
+ 
+ class AutoSync {
+@@ -68,18 +70,21 @@ private:
+ class Call : public QObject {
+ 	Q_OBJECT
+ public:
+-	Call(QObject *, Skype *, CallID);
++	Call(CallHandler *, Skype *, CallID);
+ 	~Call();
+ 	void startRecording(bool = false);
+ 	void stopRecording(bool = true);
++	void updateConfID();
+ 	bool okToDelete() const;
+ 	void setStatus(const QString &);
+ 	QString getStatus() const { return status; }
+ 	bool statusDone() const;
+ 	bool statusActive() const;
+ 	CallID getID() const { return id; }
++	CallID getConfID() const { return confID; }
+ 	void removeFile();
+ 	void hideConfirmation(int);
++	bool getIsRecording() const { return isRecording; }
+ 
+ signals:
+ 	void startedCall(int, const QString &);
+@@ -99,10 +104,12 @@ private:
+ 
+ private:
+ 	Skype *skype;
++	CallHandler *handler;
+ 	CallID id;
+ 	QString status;
+ 	QString skypeName;
+ 	QString displayName;
++	CallID confID;
+ 	AudioFileWriter *writer;
+ 	bool isRecording;
+ 	int stereo;
+@@ -140,6 +147,8 @@ class CallHandler : public QObject {
+ public:
+ 	CallHandler(QObject *, Skype *);
+ 	~CallHandler();
++	void updateConfIDs();
++	bool isConferenceRecording(CallID) const;
+ 	void callCmd(const QStringList &);
+ 
+ signals:
+-- 
+1.6.5.GIT
+
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/default.nix
new file mode 100644
index 000000000000..3ac2b567a8cb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/skype-call-recorder/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, cmake, lame, id3lib, libvorbis, qt4, libogg }:
+
+stdenv.mkDerivation {
+  name = "skype-call-recorder-0.8";
+  src = fetchurl {
+    url = "https://atdot.ch/scr/files/0.8/skype-call-recorder-0.8.tar.gz";
+    sha256 = "1iijkhq3aj9gr3bx6zl8ryvzkqcdhsm9yisimakwq0lnw0lgf5di";
+  };
+
+  # Keep an rpath reference to the used libogg
+  prePatch = ''
+    sed -i -e '/ADD_EXECUTABLE/aSET(LIBRARIES ''${LIBRARIES} ogg)' CMakeLists.txt
+  '';
+
+  # Better support for hosted conferences
+  patches = [ ./conference.patch ];
+
+  buildInputs = [ cmake lame id3lib libvorbis qt4 libogg ];
+  NIX_LDFLAGS = [ "-lvorbis" ];
+
+  meta = {
+    homepage = http://atdot.ch/scr/;
+    description = "Open source tool to record your Skype calls on Linux";
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = with stdenv.lib.platforms; linux;
+    maintainers = with stdenv.lib.maintainers; [viric];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix
new file mode 100644
index 000000000000..883258f71b1d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/skypeforlinux/default.nix
@@ -0,0 +1,113 @@
+{ stdenv, fetchurl, dpkg
+, alsaLib, atk, cairo, cups, curl, dbus, expat, fontconfig, freetype, gdk_pixbuf, glib, glibc, gnome2, gnome3
+, gtk3, libnotify, libpulseaudio, libsecret, libv4l, nspr, nss, pango, systemd, wrapGAppsHook, xorg
+, at-spi2-atk }:
+
+let
+
+  # Please keep the version x.y.0.z and do not update to x.y.76.z because the
+  # source of the latter disappears much faster.
+  version = "8.42.76.54";
+
+  rpath = stdenv.lib.makeLibraryPath [
+    alsaLib
+    atk
+    at-spi2-atk
+    cairo
+    cups
+    curl
+    dbus
+    expat
+    fontconfig
+    freetype
+    glib
+    glibc
+    libsecret
+
+    gnome2.GConf
+    gdk_pixbuf
+    gtk3
+
+    gnome3.gnome-keyring
+
+    libnotify
+    libpulseaudio
+    nspr
+    nss
+    pango
+    stdenv.cc.cc
+    systemd
+    libv4l
+
+    xorg.libxkbfile
+    xorg.libX11
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libXScrnSaver
+    xorg.libxcb
+  ] + ":${stdenv.cc.cc.lib}/lib64";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "https://repo.skype.com/deb/pool/main/s/skypeforlinux/skypeforlinux_${version}_amd64.deb";
+        sha256 = "1r2wkaa4ss6b8289db3p012nlhvljbx57hp7jc9n0mp19yphd07l";
+      }
+    else
+      throw "Skype for linux is not supported on ${stdenv.hostPlatform.system}";
+
+in stdenv.mkDerivation {
+  name = "skypeforlinux-${version}";
+
+  system = "x86_64-linux";
+
+  inherit src;
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    glib # For setup hook populating GSETTINGS_SCHEMA_PATH
+  ];
+
+  buildInputs = [ dpkg ];
+
+  unpackPhase = "true";
+  installPhase = ''
+    mkdir -p $out
+    dpkg -x $src $out
+    cp -av $out/usr/* $out
+    rm -rf $out/opt $out/usr
+    rm $out/bin/skypeforlinux
+
+    ln -s "$out/share/skypeforlinux/skypeforlinux" "$out/bin/skypeforlinux"
+
+    # Otherwise it looks "suspicious"
+    chmod -R g-w $out
+  '';
+
+  postFixup = ''
+    for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* -or -name \*.node\* \) ); do
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true
+      patchelf --set-rpath ${rpath}:$out/share/skypeforlinux $file || true
+    done
+
+    # Fix the desktop link
+    substituteInPlace $out/share/applications/skypeforlinux.desktop \
+      --replace /usr/bin/ $out/bin/ \
+      --replace /usr/share/ $out/share/
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Linux client for skype";
+    homepage = https://www.skype.com;
+    license = licenses.unfree;
+    maintainers = with stdenv.lib.maintainers; [ panaeon jraygauthier ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/slack-term/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/slack-term/default.nix
new file mode 100644
index 000000000000..79464f54232c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/slack-term/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  # https://github.com/erroneousboat/slack-term
+  name = "slack-term-${version}";
+  version = "0.4.1";
+
+  goPackagePath = "github.com/erroneousboat/slack-term";
+
+  src = fetchFromGitHub {
+    owner = "erroneousboat";
+    repo = "slack-term";
+    rev = "v${version}";
+    sha256 = "1340bq7h31fxykxbxpn6hv7n2hmjf20f8vg5gan9pjf5jaa6kfza";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Slack client for your terminal";
+    homepage = https://github.com/erroneousboat/slack-term;
+    license = licenses.mit;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix
new file mode 100644
index 000000000000..76880c92c133
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix
@@ -0,0 +1,115 @@
+{ darkMode ? false, stdenv, fetchurl, dpkg, makeWrapper
+, alsaLib, atk, cairo, cups, curl, dbus, expat, fontconfig, freetype, glib
+, gnome2, gtk3, gdk_pixbuf, libnotify, libxcb, nspr, nss, pango
+, systemd, xorg, at-spi2-atk }:
+
+let
+
+  version = "3.3.8";
+
+  rpath = stdenv.lib.makeLibraryPath [
+    alsaLib
+    at-spi2-atk
+    atk
+    cairo
+    cups
+    curl
+    dbus
+    expat
+    fontconfig
+    freetype
+    glib
+    gnome2.GConf
+    gdk_pixbuf
+    gtk3
+    pango
+    libnotify
+    libxcb
+    nspr
+    nss
+    stdenv.cc.cc
+    systemd
+
+    xorg.libxkbfile
+    xorg.libX11
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libXScrnSaver
+  ] + ":${stdenv.cc.cc.lib}/lib64";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "https://downloads.slack-edge.com/linux_releases/slack-desktop-${version}-amd64.deb";
+        sha256 = "02435zvpyr95fljx3xgqz0b0npim1j0611p4rc1azwgdf8hjn11p";
+      }
+    else
+      throw "Slack is not supported on ${stdenv.hostPlatform.system}";
+
+in stdenv.mkDerivation {
+  name = "slack-${version}";
+
+  inherit src;
+
+  buildInputs = [
+    dpkg
+    gtk3  # needed for GSETTINGS_SCHEMAS_PATH
+  ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  unpackPhase = "true";
+  buildCommand = ''
+    mkdir -p $out
+    dpkg -x $src $out
+    cp -av $out/usr/* $out
+    rm -rf $out/etc $out/usr $out/share/lintian
+
+    # Otherwise it looks "suspicious"
+    chmod -R g-w $out
+
+    for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true
+      patchelf --set-rpath ${rpath}:$out/lib/slack $file || true
+    done
+
+    # Replace the broken bin/slack symlink with a startup wrapper
+    rm $out/bin/slack
+    makeWrapper $out/lib/slack/slack $out/bin/slack \
+      --prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH
+
+    # Fix the desktop link
+    substituteInPlace $out/share/applications/slack.desktop \
+      --replace /usr/bin/ $out/bin/ \
+      --replace /usr/share/ $out/share/
+  '' + stdenv.lib.optionalString darkMode ''
+    cat <<EOF >> $out/lib/slack/resources/app.asar.unpacked/src/static/ssb-interop.js
+    document.addEventListener('DOMContentLoaded', function() {
+    let tt__customCss = ".menu ul li a:not(.inline_menu_link) {color: #fff !important;}"
+    $.ajax({
+        url: 'https://cdn.rawgit.com/laCour/slack-night-mode/master/css/raw/black.css',
+        success: function(css) {
+            \$("<style></style>").appendTo('head').html(css + tt__customCss);
+            \$("<style></style>").appendTo('head').html('#reply_container.upload_in_threads .inline_message_input_container {background: padding-box #545454}');
+            \$("<style></style>").appendTo('head').html('.p-channel_sidebar {background: #363636 !important}');
+            \$("<style></style>").appendTo('head').html('#client_body:not(.onboarding):not(.feature_global_nav_layout):before {background: inherit;}');
+        }
+      });
+    });
+    EOF
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Desktop client for Slack";
+    homepage = https://slack.com;
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/spectral/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/spectral/default.nix
new file mode 100644
index 000000000000..aff3cf82dc9b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/spectral/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchgit
+, pkgconfig, makeWrapper
+, qmake, qtbase, qtquickcontrols2, qtmultimedia
+, libpulseaudio
+# Not mentioned but seems needed
+, qtgraphicaleffects
+, qtdeclarative
+}:
+
+let
+  # Following "borrowed" from yubikey-manager-qt
+  qmlPath = qmlLib: "${qmlLib}/${qtbase.qtQmlPrefix}";
+
+  inherit (stdenv) lib;
+
+  qml2ImportPath = lib.concatMapStringsSep ":" qmlPath [
+    qtbase.bin qtdeclarative.bin qtquickcontrols2.bin qtgraphicaleffects qtmultimedia
+  ];
+
+in stdenv.mkDerivation rec {
+  pname = "spectral";
+  version = "2019-03-03";
+
+  src = fetchgit {
+    url = "https://gitlab.com/b0/spectral.git";
+    rev = "0473f25d38a064ee4e18203ec16eeae84fea4866";
+    sha256 = "1n09ginw6g0p42xj3zgxm52dvyyvj5psllv70vx21i50lvkbh9rw";
+    fetchSubmodules = true;
+  };
+
+  qmakeFlags = [ "CONFIG+=qtquickcompiler" "BUNDLE_FONT=true" ];
+
+  postInstall = ''
+    wrapProgram $out/bin/spectral \
+      --set QML2_IMPORT_PATH "${qml2ImportPath}"
+  '';
+
+  nativeBuildInputs = [ pkgconfig qmake makeWrapper ];
+  buildInputs = [ qtbase qtquickcontrols2 qtmultimedia qtgraphicaleffects qtdeclarative ]
+    ++ stdenv.lib.optional stdenv.hostPlatform.isLinux libpulseaudio;
+
+  meta = with stdenv.lib; {
+    description = "A glossy client for Matrix, written in QtQuick Controls 2 and C++";
+    homepage = https://gitlab.com/b0/spectral;
+    license = licenses.gpl3;
+    platforms = with platforms; linux ++ darwin;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/stride/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/stride/default.nix
new file mode 100644
index 000000000000..9df816dd8907
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/stride/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchurl, dpkg, alsaLib, atk, cairo, cups, dbus, expat, fontconfig
+, freetype, gdk_pixbuf, glib, gnome2, nspr, nss, pango, udev, xorg }:
+let
+  fullPath = stdenv.lib.makeLibraryPath [
+    alsaLib
+    atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk_pixbuf
+    glib
+    gnome2.GConf
+    gnome2.gtk
+    nspr
+    nss
+    pango
+    udev
+    xorg.libX11
+    xorg.libXScrnSaver
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libxcb
+  ] + ":${stdenv.cc.cc.lib}/lib64";
+in
+stdenv.mkDerivation rec {
+  version = "1.17.82";
+  name = "stride-${version}";
+
+  src = fetchurl {
+    url = "https://packages.atlassian.com/stride-apt-client/pool/stride_${version}_amd64.deb";
+    sha256 = "0lx61gdhw0kv4f9fwbfg69yq52dsp4db7c4li25d6wn11qanzqhy";
+  };
+
+  dontBuild = true;
+  dontFixup = true;
+
+  buildInputs = [ dpkg ];
+
+  unpackPhase = ''
+    dpkg-deb -x ${src} ./
+  '';
+
+  installPhase =''
+    mkdir "$out"
+    mv usr/* "$out/"
+    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${fullPath}:\$ORIGIN" \
+      "$out/bin/stride"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Desktop client for Atlassian Stride";
+    homepage = https://www.stride.com/;
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ puffnfresh ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/default.nix
new file mode 100644
index 000000000000..51e7f081d1e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, pkgconfig, qttools, scons
+, GConf, avahi, boost, hunspell, libXScrnSaver, libedit, libidn, libnatpmp, libxml2
+, lua, miniupnpc, openssl, qtbase, qtmultimedia, qtsvg, qtwebkit, qtx11extras, zlib
+}:
+
+stdenv.mkDerivation rec {
+  name = "swift-im-${version}";
+  version = "4.0.2";
+
+  src = fetchurl {
+    url = "https://swift.im/downloads/releases/swift-${version}/swift-${version}.tar.gz";
+    sha256 = "0w0aiszjd58ynxpacwcgf052zpmbpcym4dhci64vbfgch6wryz0w";
+  };
+
+  patches = [ ./qt-5.11.patch ./scons.patch ];
+
+  nativeBuildInputs = [ pkgconfig qttools scons ];
+
+  buildInputs = [
+    GConf avahi boost hunspell libXScrnSaver libedit libidn libnatpmp libxml2
+    lua miniupnpc openssl qtbase qtmultimedia qtsvg qtwebkit qtx11extras zlib
+  ];
+
+  propagatedUserEnvPkgs = [ GConf ];
+
+  NIX_CFLAGS_COMPILE = [
+    "-I${libxml2.dev}/include/libxml2"
+    "-I${miniupnpc}/include/miniupnpc"
+    "-I${qtwebkit.dev}/include/QtWebKit"
+    "-I${qtwebkit.dev}/include/QtWebKitWidgets"
+    "-fpermissive"
+  ];
+
+  preInstall = ''
+    installTargets="$out"
+    installFlags+=" SWIFT_INSTALLDIR=$out"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://swift.im/;
+    description = "Qt XMPP client";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ orivej ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/qt-5.11.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/qt-5.11.patch
new file mode 100644
index 000000000000..911e7570427f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/qt-5.11.patch
@@ -0,0 +1,10 @@
+--- a/Swift/QtUI/UserSearch/QtUserSearchWindow.h
++++ b/Swift/QtUI/UserSearch/QtUserSearchWindow.h
+@@ -8,6 +8,7 @@
+
+ #include <set>
+
++#include <QAbstractItemModel>
+ #include <QWizard>
+
+ #include <Swiften/Base/Override.h>
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/scons.patch b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/scons.patch
new file mode 100644
index 000000000000..c63b05d7acb1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/swift-im/scons.patch
@@ -0,0 +1,53 @@
+diff --git a/BuildTools/SCons/SConscript.boot b/BuildTools/SCons/SConscript.boot
+index 40f242513..53e1ff26a 100644
+--- a/BuildTools/SCons/SConscript.boot
++++ b/BuildTools/SCons/SConscript.boot
+@@ -508,6 +508,7 @@ if env.get("distcc", False) :
+         if var.startswith("DISTCC_") :
+             env["ENV"][var] = os.environ[var]
+ 
++env["ENV"] = os.environ
+ conf_env = env.Clone()
+ 
+ Export("env")
+diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct
+index 70bffbcfe..fef281899 100644
+--- a/BuildTools/SCons/SConstruct
++++ b/BuildTools/SCons/SConstruct
+@@ -272,7 +272,7 @@ if env.get("try_gconf", True) and env["PLATFORM"] != "win32" and env["PLATFORM"]
+     gconf_env = conf_env.Clone()
+     conf = Configure(gconf_env, custom_tests = {"CheckPKG": CheckPKG})
+     if conf.CheckPKG("gconf-2.0") :
+-        gconf_bare_env = Environment()
++        gconf_bare_env = Environment(ENV = os.environ)
+         gconf_bare_env.ParseConfig('pkg-config --cflags gconf-2.0 gobject-2.0 --libs gconf-2.0 gobject-2.0')
+         if os.path.basename(env["CXX"]).startswith(("g++", "clang++")) :
+             gconf_bare_env["CCFLAGS"] = [("-isystem" + ccflag) for ccflag in gconf_bare_env["CPPPATH"]]
+@@ -634,9 +634,9 @@ hunspell_env.MergeFlags(hunspell_flags)
+ env["HAVE_HUNSPELL"] = 0;
+ if env.get("hunspell_enable", False) :
+     hunspell_conf = Configure(hunspell_env)
+-    if hunspell_conf.CheckCXXHeader("hunspell/hunspell.hxx") and hunspell_conf.CheckLib("hunspell") :
++    if hunspell_conf.CheckCXXHeader("hunspell/hunspell.hxx") and hunspell_conf.CheckLib("hunspell-1.6") :
+         env["HAVE_HUNSPELL"] = 1
+-        hunspell_flags["LIBS"] = ["hunspell"]
++        hunspell_flags["LIBS"] = ["hunspell-1.6"]
+         env["HUNSPELL_FLAGS"] = hunspell_flags
+     hunspell_conf.Finish()
+ 
+diff --git a/BuildTools/SCons/Tools/textfile.py b/BuildTools/SCons/Tools/textfile.py
+index 89f8963dc..b8559f7a6 100644
+--- a/BuildTools/SCons/Tools/textfile.py
++++ b/BuildTools/SCons/Tools/textfile.py
+@@ -113,7 +113,10 @@ def _action(target, source, env):
+     lsep = None
+     for s in source:
+         if lsep: fd.write(lsep)
+-        fd.write(_do_subst(s, subs))
++        b = _do_subst(s, subs)
++        if isinstance(b, unicode):
++            b = b.encode('UTF-8')
++        fd.write(b)
+         lsep = linesep
+     fd.close()
+ 
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/client.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
new file mode 100644
index 000000000000..7a50536cc0ff
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/client.nix
@@ -0,0 +1,148 @@
+{ stdenv, fetchurl, makeWrapper, makeDesktopItem, zlib, glib, libpng, freetype, openssl
+, xorg, fontconfig, qtbase, qtwebengine, qtwebchannel, qtsvg, xkeyboard_config, alsaLib
+, libpulseaudio ? null, libredirect, quazip, less, which, unzip, llvmPackages
+}:
+
+let
+
+  arch = if stdenv.is64bit then "amd64" else "x86";
+
+  libDir = if stdenv.is64bit then "lib64" else "lib";
+
+  deps =
+    [ zlib glib libpng freetype xorg.libSM xorg.libICE xorg.libXrender openssl
+      xorg.libXrandr xorg.libXfixes xorg.libXcursor xorg.libXinerama
+      xorg.libxcb fontconfig xorg.libXext xorg.libX11 alsaLib qtbase qtwebengine qtwebchannel qtsvg
+      libpulseaudio quazip llvmPackages.libcxx llvmPackages.libcxxabi
+    ];
+
+  desktopItem = makeDesktopItem {
+    name = "teamspeak";
+    exec = "ts3client";
+    icon = "teamspeak";
+    comment = "The TeamSpeak voice communication tool";
+    desktopName = "TeamSpeak";
+    genericName = "TeamSpeak";
+    categories = "Network";
+  };
+
+in
+
+stdenv.mkDerivation rec {
+  name = "teamspeak-client-${version}";
+
+  version = "3.1.10";
+
+  src = fetchurl {
+    urls = [
+      "http://dl.4players.de/ts/releases/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run"
+      "http://teamspeak.gameserver.gamed.de/ts3/releases/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run"
+    ];
+    sha256 = if stdenv.is64bit
+                then "17gylj5pxba14c1c98b5rdyyb87c58z8l8yrd1iw5k293wf7iwv3"
+                else "1bkn3ykrc73wr02qaqwpr4garlqm3424y3dm2fjx6lqcfzm3ms2k";
+  };
+
+  # grab the plugin sdk for the desktop icon
+  pluginsdk = fetchurl {
+    url = "http://dl.4players.de/ts/client/pluginsdk/pluginsdk_3.1.1.1.zip";
+    sha256 = "1bywmdj54glzd0kffvr27r84n4dsd0pskkbmh59mllbxvj0qwy7f";
+  };
+
+  buildInputs = [ makeWrapper less which unzip ];
+
+  unpackPhase =
+    ''
+      echo -e 'q\ny' | sh -xe $src
+      cd TeamSpeak*
+    '';
+
+  buildPhase =
+    ''
+      mv ts3client_linux_${arch} ts3client
+      echo "patching ts3client..."
+      patchelf \
+        --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath ${stdenv.lib.makeLibraryPath deps}:$(cat $NIX_CC/nix-support/orig-cc)/${libDir} \
+        --force-rpath \
+        ts3client
+    '';
+
+  installPhase =
+    ''
+      # Delete unecessary libraries - these are provided by nixos.
+      rm *.so.* *.so
+      rm QtWebEngineProcess
+      rm qt.conf
+      rm -r platforms # contains libqxcb.so
+
+      # Install files.
+      mkdir -p $out/lib/teamspeak
+      mv * $out/lib/teamspeak/
+
+      # Make a desktop item
+      mkdir -p $out/share/applications/ $out/share/icons/
+      unzip ${pluginsdk}
+      cp pluginsdk/docs/client_html/images/logo.png $out/share/icons/teamspeak.png
+      cp ${desktopItem}/share/applications/* $out/share/applications/
+
+      # Make a symlink to the binary from bin.
+      mkdir -p $out/bin/
+      ln -s $out/lib/teamspeak/ts3client $out/bin/ts3client
+
+      wrapProgram $out/bin/ts3client \
+        --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
+        --set QT_PLUGIN_PATH "${qtbase}/${qtbase.qtPluginPrefix}" \
+        --set NIX_REDIRECTS /usr/share/X11/xkb=${xkeyboard_config}/share/X11/xkb
+    '';
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  meta = {
+    description = "The TeamSpeak voice communication tool";
+    homepage = http://teamspeak.com/;
+    license = {
+      fullName = "Teamspeak client license";
+      url = http://sales.teamspeakusa.com/licensing.php;
+      free = false;
+    };
+    maintainers = [ stdenv.lib.maintainers.lhvwb ];
+    platforms = [ "i686-linux" "x86_64-linux" ];
+  };
+}
+
+/*
+License issues:
+Date: Mon, 10 Dec 2007 19:55:16 -0500
+From: TeamSpeak Sales <sales@tritoncia.com>
+To: 'Marc Weber' <marco-oweber@gmx.de>
+Subject: RE: teamspeak on nix?
+
+Yes, that would be fine.  As long as you are not renting servers or selling
+TeamSpeak then you are more than welcome to distribute it.
+
+Thank you,
+
+TeamSpeak Sales Team
+________________________________
+e-Mail: sales@tritoncia.com
+TeamSpeak: http://www.TeamSpeak.com
+Account Login: https://sales.TritonCIA.com/users
+
+
+
+-----Original Message-----
+From: Marc Weber [mailto:marco-oweber@gmx.de]
+Sent: Monday, December 10, 2007 5:03 PM
+To: sales@tritoncia.com
+Subject: teamspeak on nix?
+
+Hello,
+
+nix is very young software distribution system (http://nix.cs.uu.nl/)
+I'd like to ask wether you permit us to add teamspeak (server/ client?)
+
+Sincerly
+Marc Weber (small nix contributor)
+*/
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/server.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/server.nix
new file mode 100644
index 000000000000..f79622b39cfd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/teamspeak/server.nix
@@ -0,0 +1,103 @@
+{ stdenv, fetchurl, makeWrapper }:
+
+let
+  version = "3.6.1";
+  arch = if stdenv.is64bit then "amd64" else "x86";
+  libDir = if stdenv.is64bit then "lib64" else "lib";
+in
+
+stdenv.mkDerivation {
+  name = "teamspeak-server-${version}";
+
+  src = fetchurl {
+    urls = [
+      "http://dl.4players.de/ts/releases/${version}/teamspeak3-server_linux_${arch}-${version}.tar.bz2"
+      "http://teamspeak.gameserver.gamed.de/ts3/releases/${version}/teamspeak3-server_linux_${arch}-${version}.tar.bz2"
+    ];
+    sha256 = if stdenv.is64bit
+      then "0wgnb7fdy393anridymm1frlgr86j0awxnzvd498ar5fch06ij87"
+      else "0x6p1z4qvgy464n6gnkaqrm7dns1ysyadm68sr260d39a7028q1c";
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  buildPhase =
+    ''
+      echo "patching ts3server"
+      patchelf \
+        --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath $(cat $NIX_CC/nix-support/orig-cc)/${libDir} \
+        --force-rpath \
+        ts3server
+      cp tsdns/tsdnsserver tsdnsserver
+      patchelf \
+        --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+        --set-rpath $(cat $NIX_CC/nix-support/orig-cc)/${libDir} \
+        --force-rpath \
+        tsdnsserver
+    '';
+
+  installPhase =
+    ''
+      # Delete unecessary libraries - these are provided by nixos.
+      #rm *.so*
+
+      # Install files.
+      mkdir -p $out/lib/teamspeak
+      mv * $out/lib/teamspeak/
+
+      # Make symlinks to the binaries from bin.
+      mkdir -p $out/bin/
+      ln -s $out/lib/teamspeak/ts3server $out/bin/ts3server
+      ln -s $out/lib/teamspeak/tsdnsserver $out/bin/tsdnsserver
+
+      wrapProgram $out/lib/teamspeak/ts3server --prefix LD_LIBRARY_PATH : $out/lib/teamspeak
+      wrapProgram $out/lib/teamspeak/tsdnsserver --prefix LD_LIBRARY_PATH : $out/lib/tsdnsserver
+    '';
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  meta = {
+    description = "TeamSpeak voice communication server";
+    homepage = https://teamspeak.com/;
+    license = stdenv.lib.licenses.unfreeRedistributable;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.arobyn ];
+  };
+}
+
+/*
+License issues:
+Date: Mon, 10 Dec 2007 19:55:16 -0500
+From: TeamSpeak Sales <sales@tritoncia.com>
+To: 'Marc Weber' <marco-oweber@gmx.de>
+Subject: RE: teamspeak on nix?
+
+Yes, that would be fine.  As long as you are not renting servers or selling
+TeamSpeak then you are more than welcome to distribute it.
+
+Thank you,
+
+TeamSpeak Sales Team
+________________________________
+e-Mail: sales@tritoncia.com
+TeamSpeak: http://www.TeamSpeak.com
+Account Login: https://sales.TritonCIA.com/users
+
+
+
+-----Original Message-----
+From: Marc Weber [mailto:marco-oweber@gmx.de]
+Sent: Monday, December 10, 2007 5:03 PM
+To: sales@tritoncia.com
+Subject: teamspeak on nix?
+
+Hello,
+
+nix is very young software distribution system (http://nix.cs.uu.nl/)
+I'd like to ask wether you permit us to add teamspeak (server/ client?)
+
+Sincerly
+Marc Weber (small nix contributor)
+*/
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix
new file mode 100644
index 000000000000..77a8d57f8b6f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchgit
+, qtbase, qtmultimedia, qtquick1, qtquickcontrols
+, qtimageformats, qtgraphicaleffects, qtwebkit
+, telegram-qml, libqtelegram-aseman-edition
+, gst_all_1
+, makeWrapper, qmake }:
+
+stdenv.mkDerivation rec {
+  name = "cutegram-${meta.version}";
+
+  src = fetchgit {
+    url = "https://github.com/Aseman-Land/Cutegram.git";
+    rev = "1dbe2792fb5a1760339379907f906e236c09db84";
+    sha256 = "146vd3ri05da2asxjjxibnqmb685lgwl2kaz7mwb7ja7vi4149f0";
+  };
+
+  buildInputs =
+  [ qtbase qtmultimedia qtquick1 qtquickcontrols
+    qtimageformats qtgraphicaleffects qtwebkit
+    telegram-qml libqtelegram-aseman-edition
+  ] ++ (with gst_all_1; [ gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly ]);
+
+
+  enableParallelBuilding = true;
+  nativeBuildInputs = [ makeWrapper qmake ];
+
+  fixupPhase = ''
+    wrapProgram $out/bin/cutegram \
+      --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0"
+  '';
+
+  meta = with stdenv.lib; {
+    version = "2.7.1";
+    description = "Telegram client forked from sigram";
+    homepage = http://aseman.co/en/products/cutegram/;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ AndersonTorres ];
+    platforms = platforms.linux;
+  };
+}
+#TODO: appindicator, for system tray plugin
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix
new file mode 100644
index 000000000000..49368da708e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub
+, qtbase, qtmultimedia, qtquick1, qmake }:
+
+stdenv.mkDerivation rec {
+  name = "libqtelegram-aseman-edition-${meta.version}";
+
+  src = fetchFromGitHub {
+    owner = "Aseman-Land";
+    repo = "libqtelegram-aseman-edition";
+    rev = "v${meta.version}-stable";
+    sha256 = "1pfd4pvh51639zk9shv1s4f6pf0ympnhar8a302vhrkga9i4cbx6";
+  };
+
+  buildInputs = [ qtbase qtmultimedia qtquick1 ];
+  enableParallelBuilding = true;
+  nativeBuildInputs = [ qmake ];
+
+  patchPhase = ''
+    substituteInPlace libqtelegram-ae.pro --replace "/libqtelegram-ae" ""
+    substituteInPlace libqtelegram-ae.pro --replace "/\$\$LIB_PATH" ""
+  '';
+
+  meta = with stdenv.lib; {
+    version = "6.1";
+    description = "A fork of libqtelegram by Aseman, using qmake";
+    homepage = src.meta.homepage;
+    license = licenses.gpl3;
+    maintainers = [ maintainers.Profpatsch ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
new file mode 100644
index 000000000000..a37377835f5f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix
@@ -0,0 +1,18 @@
+{ qt5 }:
+
+let
+  mkTelegram = args: qt5.callPackage (import ./generic.nix args) { };
+  stableVersion = {
+    stable = true;
+    version = "1.6.3";
+    sha256Hash = "1bm0m1y3cf0zmaasz1wfkbz5fy9wm7ivyjn9bzs87yrvlj9x7wqz";
+    # svn log svn://svn.archlinux.org/community/telegram-desktop/trunk
+    archPatchesRevision = "429149";
+    archPatchesHash = "1ylpi9kb6hk27x9wmna4ing8vzn9b7247iya91pyxxrpxrcrhpli";
+  };
+in {
+  stable = mkTelegram stableVersion;
+  preview = mkTelegram (stableVersion // {
+    stable = false;
+  });
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/generic.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/generic.nix
new file mode 100644
index 000000000000..c32e6b186b7a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/tdesktop/generic.nix
@@ -0,0 +1,148 @@
+{ stable, version, sha256Hash, archPatchesRevision, archPatchesHash }:
+
+{ mkDerivation, lib, fetchFromGitHub, fetchsvn
+, pkgconfig, pythonPackages, cmake, wrapGAppsHook
+, qtbase, qtimageformats, gtk3, libappindicator-gtk3, libnotify, xdg_utils
+, dee, ffmpeg, openalSoft, minizip, libopus, alsaLib, libpulseaudio, range-v3
+}:
+
+with lib;
+
+mkDerivation rec {
+  name = "telegram-desktop-${version}";
+  inherit version;
+
+  # Telegram-Desktop with submodules
+  src = fetchFromGitHub {
+    owner = "telegramdesktop";
+    repo = "tdesktop";
+    rev = "v${version}";
+    sha256 = sha256Hash;
+    fetchSubmodules = true;
+  };
+
+  # Arch patches (svn export telegram-desktop/trunk)
+  archPatches = fetchsvn {
+    url = "svn://svn.archlinux.org/community/telegram-desktop/trunk";
+    rev = archPatchesRevision;
+    sha256 = archPatchesHash;
+  };
+
+  # TODO: libtgvoip.patch no-gtk2.patch
+  patches = [ "${archPatches}/tdesktop.patch" ];
+
+  postPatch = ''
+    substituteInPlace Telegram/SourceFiles/platform/linux/linux_libs.cpp \
+      --replace '"appindicator"' '"${libappindicator-gtk3}/lib/libappindicator3.so"'
+    substituteInPlace Telegram/SourceFiles/platform/linux/linux_libnotify.cpp \
+      --replace '"notify"' '"${libnotify}/lib/libnotify.so"'
+  '';
+
+  nativeBuildInputs = [ pkgconfig pythonPackages.gyp cmake wrapGAppsHook ];
+
+  # We want to run wrapProgram manually (with additional parameters)
+  dontWrapGApps = true;
+
+  buildInputs = [
+    qtbase qtimageformats gtk3 libappindicator-gtk3
+    dee ffmpeg openalSoft minizip libopus alsaLib libpulseaudio range-v3
+  ];
+
+  enableParallelBuilding = true;
+
+  GYP_DEFINES = concatStringsSep "," [
+    "TDESKTOP_DISABLE_CRASH_REPORTS"
+    "TDESKTOP_DISABLE_AUTOUPDATE"
+    "TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
+  ];
+
+  NIX_CFLAGS_COMPILE = [
+    "-DTDESKTOP_DISABLE_CRASH_REPORTS"
+    "-DTDESKTOP_DISABLE_AUTOUPDATE"
+    "-DTDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
+    "-I${minizip}/include/minizip"
+    # See Telegram/gyp/qt.gypi
+    "-I${getDev qtbase}/mkspecs/linux-g++"
+  ] ++ concatMap (x: [
+    "-I${getDev qtbase}/include/${x}"
+    "-I${getDev qtbase}/include/${x}/${qtbase.version}"
+    "-I${getDev qtbase}/include/${x}/${qtbase.version}/${x}"
+    "-I${getDev libopus}/include/opus"
+    "-I${getDev alsaLib}/include/alsa"
+    "-I${getDev libpulseaudio}/include/pulse"
+    ]) [ "QtCore" "QtGui" "QtDBus" ];
+  CPPFLAGS = NIX_CFLAGS_COMPILE;
+
+  preConfigure = ''
+    pushd "Telegram/ThirdParty/libtgvoip"
+    patch -Np1 -i "${archPatches}/libtgvoip.patch"
+    popd
+
+    sed -i Telegram/gyp/telegram_linux.gypi \
+      -e 's,/usr,/does-not-exist,g' \
+      -e 's,appindicator-0.1,appindicator3-0.1,g' \
+      -e 's,-flto,,g'
+
+    sed -i Telegram/gyp/qt.gypi \
+      -e "s,/usr/include/qt/QtCore/,${qtbase.dev}/include/QtCore/,g" \
+      -e 's,\d+",\d+" | head -n1,g'
+    sed -i Telegram/gyp/qt_moc.gypi \
+      -e "s,/usr/bin/moc,moc,g"
+    sed -i Telegram/gyp/qt_rcc.gypi \
+      -e "s,/usr/bin/rcc,rcc,g"
+
+    # Build system assumes x86, but it works fine on non-x86 if we patch this one flag out
+    sed -i Telegram/ThirdParty/libtgvoip/libtgvoip.gyp \
+      -e "/-msse2/d"
+
+    gyp \
+      -Dapi_id=17349 \
+      -Dapi_hash=344583e45741c457fe1862106095a5eb \
+      -Dbuild_defines=${GYP_DEFINES} \
+      -Gconfig=Release \
+      --depth=Telegram/gyp \
+      --generator-output=../.. \
+      -Goutput_dir=out \
+      --format=cmake \
+      Telegram/gyp/Telegram.gyp
+
+    cd out/Release
+
+    NUM=$((`wc -l < CMakeLists.txt` - 2))
+    sed -i "$NUM r $archPatches/CMakeLists.inj" CMakeLists.txt
+
+    export ASM=$(type -p gcc)
+  '';
+
+  installPhase = ''
+    install -Dm755 Telegram $out/bin/telegram-desktop
+
+    mkdir -p $out/share/applications $out/share/kde4/services
+    install -m444 "$src/lib/xdg/telegramdesktop.desktop" "$out/share/applications/telegram-desktop.desktop"
+    sed "s,/usr/bin,$out/bin,g" $archPatches/tg.protocol > $out/share/kde4/services/tg.protocol
+    for icon_size in 16 32 48 64 128 256 512; do
+      install -Dm644 "../../../Telegram/Resources/art/icon''${icon_size}.png" "$out/share/icons/hicolor/''${icon_size}x''${icon_size}/apps/telegram.png"
+    done
+  '';
+
+  postFixup = ''
+    # This is necessary to run Telegram in a pure environment.
+    # We also use gappsWrapperArgs from wrapGAppsHook.
+    wrapProgram $out/bin/telegram-desktop \
+      "''${gappsWrapperArgs[@]}" \
+      --prefix QT_PLUGIN_PATH : "${qtbase}/${qtbase.qtPluginPrefix}" \
+      --prefix PATH : ${xdg_utils}/bin \
+      --set XDG_RUNTIME_DIR "XDG-RUNTIME-DIR"
+    sed -i $out/bin/telegram-desktop \
+      -e "s,'XDG-RUNTIME-DIR',\"\''${XDG_RUNTIME_DIR:-/run/user/\$(id --user)}\","
+  '';
+
+  meta = {
+    description = "Telegram Desktop messaging app "
+      + (if stable then "(stable version)" else "(pre-release)");
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    homepage = https://desktop.telegram.org/;
+    maintainers = with maintainers; [ primeos abbradar garbas ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/telegram-cli/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/telegram-cli/default.nix
new file mode 100644
index 000000000000..2b744c61ccb5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/telegram-cli/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchgit, bash, libconfig, libevent, openssl
+, readline, zlib, lua5_2, python, pkgconfig, jansson
+, runtimeShell
+}:
+
+stdenv.mkDerivation rec {
+  name = "telegram-cli-2016-03-23";
+
+  src = fetchgit {
+    url = "https://github.com/vysheng/tg.git";
+    sha256 = "07sss5cnw2ygd7mp8f5532lmj7qm6ywqf4cjaq5g13i8igzqzwzj";
+    rev = "6547c0b21b977b327b3c5e8142963f4bc246187a";
+  };
+
+  buildInputs = [
+    libconfig libevent openssl readline zlib
+    lua5_2 python pkgconfig jansson
+  ];
+  installPhase = ''
+    mkdir -p $out/bin
+    cp ./bin/telegram-cli $out/bin/telegram-wo-key
+    cp ./tg-server.pub $out/
+    cat > $out/bin/telegram-cli <<EOF
+    #!${runtimeShell}
+    $out/bin/telegram-wo-key -k $out/tg-server.pub "\$@"
+    EOF
+    chmod +x $out/bin/telegram-cli
+  '';
+
+  meta = {
+    description = "Command-line interface for Telegram messenger";
+    homepage = https://telegram.org/;
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.jagajaga ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/telegram-qml/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/telegram-qml/default.nix
new file mode 100644
index 000000000000..0efa7bee1d0b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telegram/telegram-qml/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub
+, qtbase, qtmultimedia, qtquick1, qmake
+, libqtelegram-aseman-edition }:
+
+stdenv.mkDerivation rec {
+  name = "telegram-qml-${meta.version}";
+
+  src = fetchFromGitHub {
+    owner = "Aseman-Land";
+    repo = "TelegramQML";
+    rev = "v${meta.version}";
+    sha256 = "0j8vn845f2virvddk9yjbljy6vkr9ikyn6iy7hpj8nvr2xls3499";
+  };
+
+  propagatedBuildInputs = [ qtbase qtmultimedia qtquick1 libqtelegram-aseman-edition ];
+  enableParallelBuilding = true;
+  nativeBuildInputs = [ qmake ];
+
+  patchPhase = ''
+    substituteInPlace telegramqml.pro --replace "/\$\$LIB_PATH" ""
+    substituteInPlace telegramqml.pro --replace "INSTALL_HEADERS_PREFIX/telegramqml" "INSTALL_HEADERS_PREFIX"
+  '';
+
+  qmakeFlags = [ "BUILD_MODE+=lib" ];
+
+  meta = with stdenv.lib; {
+    version = "0.9.2";
+    description = "Telegram API tools for QtQml and Qml";
+    homepage = src.meta.homepage;
+    license = licenses.gpl3;
+    maintainers = [ maintainers.Profpatsch ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix
new file mode 100644
index 000000000000..a0cc73da46d8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/gabble/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, libxslt, telepathy-glib, libxml2, dbus-glib, dbus
+, sqlite, libsoup, libnice, gnutls}:
+
+stdenv.mkDerivation rec {
+  name = "telepathy-gabble-0.18.4";
+
+  src = fetchurl {
+    url = "https://telepathy.freedesktop.org/releases/telepathy-gabble/${name}.tar.gz";
+    sha256 = "174nlkqm055vrhv11gy73m20jbsggcb0ddi51c7s9m3j5ibr2p0i";
+  };
+
+  nativeBuildInputs = [ pkgconfig libxslt ];
+  buildInputs = [ libxml2 dbus-glib sqlite libsoup libnice telepathy-glib gnutls telepathy-glib.python ];
+
+  checkInputs = [ dbus.daemon ];
+
+  configureFlags = [ "--with-ca-certificates=/etc/ssl/certs/ca-certificates.crt" ];
+
+  enableParallelBuilding = true;
+  doCheck = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://telepathy.freedesktop.org/components/telepathy-gabble/;
+    description = "Jabber/XMPP connection manager for the Telepathy framework";
+    license = licenses.lgpl21Plus;
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix
new file mode 100644
index 000000000000..769e639314e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/haze/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, fetchpatch, pidgin, telepathy-glib, glib, dbus-glib, pkgconfig, libxslt }:
+
+stdenv.mkDerivation rec {
+  pname = "telepathy-haze";
+  name = "${pname}-0.8.0";
+
+  src = fetchurl {
+    url = "https://telepathy.freedesktop.org/releases/${pname}/${name}.tar.gz";
+    sha256 = "1jgrp32p6rllj089ynbsk3n9xrvsvzmwzhf0ql05kkgj0nf08xiy";
+  };
+
+  buildInputs = [ glib telepathy-glib dbus-glib pidgin telepathy-glib.python ];
+
+  nativeBuildInputs = [ pkgconfig libxslt ];
+
+  patches = [
+    # Patch from Gentoo that helps telepathy-haze build with more
+    # recent versions of pidgin.
+    (fetchpatch {
+      url = https://raw.githubusercontent.com/gentoo/gentoo/master/net-voip/telepathy-haze/files/telepathy-haze-0.8.0-pidgin-2.10.12-compat.patch;
+      sha256 = "0fa1p4n1559qd096w7ya4kvfnc1c98ykarkxzlpkwvzbczwzng3c";
+    })
+  ];
+
+  meta = {
+    description = "A Telepathy connection manager based on libpurple";
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux; # Random choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/idle/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/idle/default.nix
new file mode 100644
index 000000000000..4607961cdf08
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/idle/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, glib, gnome3, pkgconfig, dbus-glib, telepathy-glib, libxslt, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  pname = "telepathy-idle";
+  version = "0.2.0";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "http://telepathy.freedesktop.org/releases/${pname}/${name}.tar.gz";
+    sha256 = "1argdzbif1vdmwp5vqbgkadq9ancjmgdm2ncp0qfckni715ss4rh";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib telepathy-glib dbus-glib libxslt telepathy-glib.python (stdenv.lib.getLib gnome3.dconf) makeWrapper ];
+
+  preFixup = ''
+    wrapProgram "$out/libexec/telepathy-idle" \
+      --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib gnome3.dconf}/lib/gio/modules"
+  '';
+
+  meta = {
+    description = "IRC connection manager for the Telepathy framework";
+    license = stdenv.lib.licenses.lgpl21;
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix
new file mode 100644
index 000000000000..8c777cd3f7d6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/logger/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, dbus-glib, libxml2, sqlite, telepathy-glib, pkgconfig
+, gnome3, makeWrapper, intltool, libxslt, gobject-introspection, dbus }:
+
+stdenv.mkDerivation rec {
+  project = "telepathy-logger";
+  name = "${project}-0.8.2";
+
+  src = fetchurl {
+    url = "https://telepathy.freedesktop.org/releases/${project}/${name}.tar.bz2";
+    sha256 = "1bjx85k7jyfi5pvl765fzc7q2iz9va51anrc2djv7caksqsdbjlg";
+  };
+
+  nativeBuildInputs = [
+    makeWrapper pkgconfig intltool libxslt gobject-introspection
+  ];
+  buildInputs = [
+    dbus-glib libxml2 sqlite telepathy-glib
+    dbus telepathy-glib.python
+  ];
+
+  configureFlags = [ "--enable-call" ];
+
+  preFixup = ''
+    wrapProgram "$out/libexec/telepathy-logger" \
+      --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib gnome3.dconf}/lib/gio/modules" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Logger service for Telepathy framework";
+    homepage = https://telepathy.freedesktop.org/components/telepathy-logger/;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ jtojnar ];
+    platforms = platforms.gnu ++ platforms.linux; # Arbitrary choice
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix
new file mode 100644
index 000000000000..7d68f66afc79
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/mission-control/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, pkgconfig, gnome3, telepathy-glib, libxslt, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "${pname}-5.16.4";
+  pname = "telepathy-mission-control";
+
+  src = fetchurl {
+    url = "https://telepathy.freedesktop.org/releases/${pname}/${name}.tar.gz";
+    sha256 = "1jz6wwgsfxixha6ys2hbzbk5faqnj9kh2m5qdlgx5anqgandsscp";
+  };
+
+  buildInputs = [ telepathy-glib telepathy-glib.python ]; # ToDo: optional stuff missing
+
+  nativeBuildInputs = [ pkgconfig libxslt makeWrapper ];
+
+  doCheck = true;
+
+  preFixup = ''
+    wrapProgram "$out/libexec/mission-control-5" \
+      --prefix GIO_EXTRA_MODULES : "${stdenv.lib.getLib gnome3.dconf}/lib/gio/modules" \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An account manager and channel dispatcher for the Telepathy framework";
+    homepage = https://telepathy.freedesktop.org/components/telepathy-mission-control/;
+    license = licenses.lgpl21;
+    maintainers = with maintainers; [ jtojnar ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/salut/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/salut/default.nix
new file mode 100644
index 000000000000..0bc9b3124ee9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/telepathy/salut/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, libxslt, glib, libxml2, telepathy-glib, avahi, libsoup
+, libuuid, openssl, pcre, sqlite, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "telepathy-salut";
+  name = "${pname}-0.8.1";
+
+  src = fetchurl {
+    url = "https://telepathy.freedesktop.org/releases/${pname}/${name}.tar.gz";
+    sha256 = "13k112vrr3zghzr03pnbqc1id65qvpj0sn0virlbf4dmr2511fbh";
+  };
+
+  # pcre needed because https://github.com/NixOS/nixpkgs/pull/15046
+  buildInputs = [ glib libxml2 telepathy-glib avahi libsoup libuuid openssl
+    sqlite pcre telepathy-glib.python ];
+
+  nativeBuildInputs = [ libxslt pkgconfig ];
+
+  configureFlags = [ "--disable-avahi-tests" ];
+
+  meta = with stdenv.lib; {
+    description = "Link-local XMPP connection manager for Telepathy";
+    platforms = platforms.gnu ++ platforms.linux; # Random choice
+    maintainers = [ maintainers.lethalman ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/tensor/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/tensor/default.nix
new file mode 100644
index 000000000000..c6b930fc590f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/tensor/default.nix
@@ -0,0 +1,56 @@
+{ stdenv, fetchgit, qtbase, qtquickcontrols, qmake, makeDesktopItem }:
+
+# we now have libqmatrixclient so a future version of tensor that supports it
+# should use that
+
+stdenv.mkDerivation rec {
+  name = "tensor-git-${version}";
+  version = "2017-02-21";
+
+  src = fetchgit {
+    url             = "https://github.com/davidar/tensor.git";
+    rev             = "f3f3056d770d7fb4a21c610cee7936ee900569f5";
+    sha256          = "19in8c7a2hxsx2c4lj540w5c3pn1882645m21l91mcriynqr67k9";
+    fetchSubmodules = true;
+  };
+
+  enableParallelBuilding = true;
+
+  buildInputs = [ qtbase qtquickcontrols ];
+  nativeBuildInputs = [ qmake ];
+
+  desktopItem = makeDesktopItem {
+    name        = "tensor";
+    exec        = "@bin@";
+    icon        = "tensor.png";
+    comment     = meta.description;
+    desktopName = "Tensor Matrix Client";
+    genericName = meta.description;
+    categories  = "Chat;Utility";
+    mimeType    = "application/x-chat";
+  };
+
+  installPhase = ''
+    runHook preInstall
+
+    install -Dm755 tensor $out/bin/tensor
+    install -Dm644 client/logo.png \
+                   $out/share/icons/hicolor/512x512/apps/tensor.png
+    install -Dm644 ${desktopItem}/share/applications/tensor.desktop \
+                   $out/share/applications/tensor.desktop
+
+    substituteInPlace $out/share/applications/tensor.desktop \
+      --subst-var-by bin $out/bin/tensor
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://matrix.org/docs/projects/client/tensor.html;
+    description = "Cross-platform Qt5/QML-based Matrix client";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+    inherit (qtbase.meta) platforms;
+    inherit version;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/torchat/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/torchat/default.nix
new file mode 100644
index 000000000000..06bcd7a0400e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/torchat/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, python, unzip, wxPython, wrapPython, tor }:
+stdenv.mkDerivation rec {
+
+  name = "torchat-${version}";
+  version = "0.9.9.553";
+
+  src = fetchurl {
+    url = "https://github.com/prof7bit/TorChat/archive/${version}.tar.gz";
+    sha256 = "0rb4lvv40pz6ab5kxq40ycvh7kh1yxn7swzgv2ff2nbhi62xnzp0";
+  };
+
+  buildInputs = [ python unzip wxPython wrapPython ];
+  pythonPath = [ wxPython ];
+
+  preConfigure = "cd torchat/src; rm portable.txt";
+
+  installPhase = ''
+    substituteInPlace "Tor/tor.sh" --replace "tor -f" "${tor}/bin/tor -f"
+
+    wrapPythonPrograms
+
+    mkdir -p $out/lib/torchat
+    cp -rf * $out/lib/torchat
+    makeWrapper ${python}/bin/python $out/bin/torchat \
+        --set PYTHONPATH $out/lib/torchat:$program_PYTHONPATH \
+        --run "cd $out/lib/torchat" \
+        --add-flags "-O $out/lib/torchat/torchat.py"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/prof7bit/TorChat;
+    description = "Instant messaging application on top of the Tor network and it's location hidden services";
+    license = licenses.gpl3;
+    maintainers = [ maintainers.phreedom ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/toxic/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/toxic/default.nix
new file mode 100644
index 000000000000..c4acb22c810c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/toxic/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchFromGitHub, libsodium, ncurses, curl
+, libtoxcore, openal, libvpx, freealut, libconfig, pkgconfig, libopus
+, qrencode, gdk_pixbuf, libnotify }:
+
+stdenv.mkDerivation rec {
+  name = "toxic-${version}";
+  version = "0.8.3";
+
+  src = fetchFromGitHub {
+    owner  = "Tox";
+    repo   = "toxic";
+    rev    = "v${version}";
+    sha256 = "09l2j3lwvrq7bf3051vjsnml9w63790ly3iylgf26gkrmld6k31w";
+  };
+
+  makeFlags = [ "PREFIX=$(out)"];
+  installFlags = [ "PREFIX=$(out)"];
+
+  buildInputs = [
+    libtoxcore libsodium ncurses curl gdk_pixbuf libnotify
+  ] ++ stdenv.lib.optionals (!stdenv.isAarch32) [
+    openal libopus libvpx freealut qrencode
+  ];
+  nativeBuildInputs = [ pkgconfig libconfig ];
+
+  meta = with stdenv.lib; {
+    description = "Reference CLI for Tox";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/turses/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/turses/default.nix
new file mode 100644
index 000000000000..24529d83e04c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/turses/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchpatch, python36Packages }:
+
+with stdenv.lib;
+
+# Needs Python <3.7 for now, see https://github.com/louipc/turses/issues/4
+with python36Packages;
+
+buildPythonPackage rec {
+  pname = "turses";
+  version = "0.3.1";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "15mkhm3b5ka42h8qph0mhh8izfc1200v7651c62k7ldcs50ib9j6";
+  };
+
+  disabled = ! python36Packages.pythonOlder "3.7";
+
+  checkInputs = [ mock pytest coverage tox ];
+  propagatedBuildInputs = [ urwid tweepy future ];
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/louipc/turses/commit/be0961b51f502d49fd9e2e5253ac130e543a31c7.patch";
+      sha256 = "17s1n0275mcj03vkf3n39dmc09niwv4y7ssrfk7k3vqx22kppzg3";
+    })
+  ];
+
+  checkPhase = ''
+    TMP_TURSES=`echo turses-$RANDOM`
+    mkdir $TMP_TURSES
+    PYTHONPATH=tests:$PYTHONPATH HOME=$TMP_TURSES py.test tests/
+    rm -rf $TMP_TURSES
+  '';
+
+  postPatch = ''
+    sed -i -e 's|urwid==1.3.0|urwid==${getVersion urwid}|' setup.py
+    sed -i -e "s|future==0.14.3|future==${getVersion future}|" setup.py
+    sed -i -e "s|tweepy==3.3.0|tweepy==${getVersion tweepy}|" setup.py
+    sed -i -e "s|config.generate_config_file.assert_called_once()|assert config.generate_config_file.call_count == 1|" tests/test_config.py
+    sed -i -e "s|self.observer.update.assert_called_once()|assert self.observer.update.call_count == 1|" tests/test_meta.py
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/louipc/turses;
+    description = "A Twitter client for the console";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ garbas ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/utox/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/utox/default.nix
new file mode 100644
index 000000000000..6fafe26aa30e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/utox/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, lib, fetchFromGitHub, check, cmake, pkgconfig
+, libtoxcore, filter-audio, dbus, libvpx, libX11, openal, freetype, libv4l
+, libXrender, fontconfig, libXext, libXft, libsodium, libopus }:
+
+stdenv.mkDerivation rec {
+  name = "utox-${version}";
+
+  version = "0.17.0";
+
+  src = fetchFromGitHub {
+    owner  = "uTox";
+    repo   = "uTox";
+    rev    = "v${version}";
+    sha256 = "12wbq883il7ikldayh8hm0cjfrkp45vn05xx9s1jbfz6gmkidyar";
+    fetchSubmodules = true;
+  };
+
+  buildInputs = [
+    libtoxcore dbus libvpx libX11 openal freetype
+    libv4l libXrender fontconfig libXext libXft filter-audio
+    libsodium libopus
+  ];
+
+  nativeBuildInputs = [
+    cmake pkgconfig
+  ];
+
+  cmakeFlags = [
+    "-DENABLE_AUTOUPDATE=OFF"
+    "-DENABLE_TESTS=${if doCheck then "ON" else "OFF"}"
+  ];
+
+  doCheck = stdenv.hostPlatform == stdenv.buildPlatform;
+  checkInputs = [ check ];
+
+  meta = with stdenv.lib; {
+    description = "Lightweight Tox client";
+    homepage = https://github.com/uTox/uTox;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ domenkozar ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/vacuum/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/vacuum/default.nix
new file mode 100644
index 000000000000..109566b5d079
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/vacuum/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub
+  , qt4, qmake4Hook, openssl
+  , xorgproto, libX11, libXScrnSaver
+  , xz, zlib
+}:
+stdenv.mkDerivation rec {
+  name = "vacuum-im-${version}";
+  version = "1.3.0.20160104";
+
+  src = fetchFromGitHub {
+    owner = "Vacuum-IM";
+    repo = "vacuum-im";
+    rev = "1.3.0.20160104-Alpha";
+    sha256 = "1jcw9c7s75y4c3m4skfc3cc0i519z39b23n997vj5mwcjplxyc76";
+  };
+
+  buildInputs = [
+    qt4 openssl xorgproto libX11 libXScrnSaver xz zlib
+  ];
+
+  # hack: needed to fix build issues in
+  # http://hydra.nixos.org/build/38322959/nixlog/1
+  # should be an upstream issue but it's easy to fix
+  NIX_LDFLAGS = "-lz";
+
+  nativeBuildInputs = [ qmake4Hook ];
+
+  preConfigure = ''
+    qmakeFlags="$qmakeFlags INSTALL_PREFIX=$out"
+  '';
+
+  hardeningDisable = [ "format" ];
+
+  meta = with stdenv.lib; {
+    description = "An XMPP client fully composed of plugins";
+    maintainers = [ maintainers.raskin ];
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+    homepage = http://www.vacuum-im.org;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/viber/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/viber/default.nix
new file mode 100644
index 000000000000..d7c70232b0ad
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/viber/default.nix
@@ -0,0 +1,104 @@
+{fetchurl, stdenv, dpkg, makeWrapper,
+ alsaLib, cups, curl, dbus, expat, fontconfig, freetype, glib, gst_all_1, harfbuzz, libcap,
+ libpulseaudio, libxml2, libxslt, libGLU_combined, nspr, nss, openssl, systemd, wayland, xorg, zlib, ...
+}:
+
+stdenv.mkDerivation rec {
+  name = "viber-${version}";
+  version = "7.0.0.1035";
+
+  src = fetchurl {
+    url = "https://download.cdn.viber.com/cdn/desktop/Linux/viber.deb";
+    sha256 = "06mp2wvqx4y6rd5gs2mh442qcykjrrvwnkhlpx0lara331i2p0lj";
+  };
+
+  buildInputs = [ dpkg makeWrapper ];
+
+  unpackPhase = "true";
+
+  libPath = stdenv.lib.makeLibraryPath [
+      alsaLib
+      cups
+      curl
+      dbus
+      expat
+      fontconfig
+      freetype
+      glib
+      gst_all_1.gst-plugins-base
+      gst_all_1.gstreamer
+      harfbuzz
+      libcap
+      libpulseaudio
+      libxml2
+      libxslt
+      libGLU_combined
+      nspr
+      nss
+      openssl
+      stdenv.cc.cc
+      systemd
+      wayland
+      zlib
+
+      xorg.libICE
+      xorg.libSM
+      xorg.libX11
+      xorg.libxcb
+      xorg.libXcomposite
+      xorg.libXcursor
+      xorg.libXdamage
+      xorg.libXext
+      xorg.libXfixes
+      xorg.libXi
+      xorg.libXrandr
+      xorg.libXrender
+      xorg.libXScrnSaver
+      xorg.libXtst
+      xorg.xcbutilimage
+      xorg.xcbutilkeysyms
+      xorg.xcbutilrenderutil
+      xorg.xcbutilwm
+  ]
+  ;
+
+  installPhase = ''
+    dpkg-deb -x $src $out
+    mkdir -p $out/bin
+
+    # Soothe nix-build "suspicions"
+    chmod -R g-w $out
+
+    for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true
+      patchelf --set-rpath $libPath:$out/opt/viber/lib $file || true
+    done
+
+    # qt.conf is not working, so override everything using environment variables
+    wrapProgram $out/opt/viber/Viber \
+      --set QT_PLUGIN_PATH "$out/opt/viber/plugins" \
+      --set QT_XKB_CONFIG_ROOT "${xorg.xkeyboardconfig}/share/X11/xkb" \
+      --set QTCOMPOSE "${xorg.libX11.out}/share/X11/locale"
+    ln -s $out/opt/viber/Viber $out/bin/viber
+
+    mv $out/usr/share $out/share
+    rm -rf $out/usr
+
+    # Fix the desktop link
+    substituteInPlace $out/share/applications/viber.desktop \
+      --replace /opt/viber/Viber $out/opt/viber/Viber \
+      --replace /usr/share/ $out/share/
+  '';
+
+  dontStrip = true;
+  dontPatchELF = true;
+
+  meta = {
+    homepage = http://www.viber.com;
+    description = "An instant messaging and Voice over IP (VoIP) app";
+    license = stdenv.lib.licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with stdenv.lib.maintainers; [ jagajaga ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix
new file mode 100644
index 000000000000..b992263e215b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/vk-messenger/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchurl, rpmextract, autoPatchelfHook
+, xorg, gtk2, gnome2, nss, alsaLib, udev, libnotify }:
+
+let
+  version = "4.0.1";
+in stdenv.mkDerivation {
+  name = "vk-messenger-${version}";
+  src = {
+    i686-linux = fetchurl {
+      url = "https://desktop.userapi.com/rpm/master/vk-${version}.i686.rpm";
+      sha256 = "0mgppa9qnhix64zp40dc05yc9klsc7qiwcgw7pwq2wm7m3fz3nm8";
+    };
+    x86_64-linux = fetchurl {
+      url = "https://desktop.userapi.com/rpm/master/vk-${version}.x86_64.rpm";
+      sha256 = "0ra0y4dfx4gfa1r3lm6v42j7c9pf7a8vh12kxv3wkg3pvijwgdsm";
+    };
+  }.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
+
+  nativeBuildInputs = [ rpmextract autoPatchelfHook ];
+  buildInputs = (with xorg; [
+    libXdamage libXtst libXScrnSaver libxkbfile
+  ]) ++ [
+    gtk2 gnome2.GConf nss alsaLib
+  ];
+  runtimeDependencies = [ udev.lib libnotify ];
+
+  unpackPhase = ''
+    rpmextract $src
+  '';
+
+  buildPhase = ''
+    substituteInPlace usr/share/applications/vk.desktop \
+      --replace /usr/share/pixmaps/vk.png vk
+  '';
+
+  installPhase = ''
+    mkdir $out
+    cd usr
+    cp -r --parents bin $out
+    cp -r --parents share/vk $out
+    cp -r --parents share/applications $out
+    cp -r --parents share/pixmaps $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple and Convenient Messaging App for VK";
+    homepage = https://vk.com/messenger;
+    license = licenses.unfree;
+    maintainers = [ maintainers.gnidorah ];
+    platforms = ["i686-linux" "x86_64-linux"];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/wavebox/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/wavebox/default.nix
new file mode 100644
index 000000000000..9f704e52721d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/wavebox/default.nix
@@ -0,0 +1,67 @@
+{ alsaLib, autoPatchelfHook, fetchurl, gtk3, libnotify
+, makeDesktopItem, makeWrapper, nss, stdenv, udev, xdg_utils
+, xorg
+}:
+
+with stdenv.lib;
+
+let
+  bits = "x86_64";
+
+  version = "4.7.3";
+
+  desktopItem = makeDesktopItem rec {
+    name = "Wavebox";
+    exec = "wavebox";
+    icon = "wavebox";
+    desktopName = name;
+    genericName = name;
+    categories = "Network;";
+  };
+
+  tarball = "Wavebox_${replaceStrings ["."] ["_"] (toString version)}_linux_${bits}.tar.gz";
+
+in stdenv.mkDerivation rec {
+  name = "wavebox-${version}";
+  src = fetchurl {
+    url = "https://github.com/wavebox/waveboxapp/releases/download/v${version}/${tarball}";
+    sha256 = "1yg2lib4h5illz0ss4hvr78s4v1cjbxlczjzaw6bqigyk95smm23";
+  };
+
+  # don't remove runtime deps
+  dontPatchELF = true;
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+
+  buildInputs = with xorg; [
+    libXdmcp libXScrnSaver libXtst
+  ] ++ [
+    alsaLib gtk3 nss
+  ];
+
+  runtimeDependencies = [ udev.lib libnotify ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/opt/wavebox
+    cp -r * $out/opt/wavebox
+
+    # provide desktop item and icon
+    mkdir -p $out/share/applications $out/share/pixmaps
+    ln -s ${desktopItem}/share/applications/* $out/share/applications
+    ln -s $out/opt/wavebox/Wavebox-linux-x64/wavebox_icon.png $out/share/pixmaps/wavebox.png
+  '';
+
+  postFixup = ''
+    makeWrapper $out/opt/wavebox/Wavebox $out/bin/wavebox \
+      --prefix PATH : ${xdg_utils}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Wavebox messaging application";
+    homepage = https://wavebox.io;
+    license = licenses.mpl20;
+    maintainers = with maintainers; [ rawkode ];
+    platforms = ["x86_64-linux"];
+    hydraPlatforms = [];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix
new file mode 100644
index 000000000000..3b75533e0e5c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/wire-desktop/default.nix
@@ -0,0 +1,103 @@
+{ stdenv, fetchurl, dpkg, makeDesktopItem, libuuid, gtk3, atk, cairo, pango
+, gdk_pixbuf, glib, freetype, fontconfig, dbus, libnotify, libX11, xorg, libXi
+, libXcursor, libXdamage, libXrandr, libXcomposite, libXext, libXfixes
+, libXrender, libXtst, libXScrnSaver, nss, nspr, alsaLib, cups, expat, udev
+, xdg_utils, hunspell, pulseaudio, pciutils, at-spi2-atk
+}:
+
+let
+
+  rpath = stdenv.lib.makeLibraryPath [
+    alsaLib
+    atk
+    cairo
+    cups
+    dbus
+    expat
+    fontconfig
+    freetype
+    gdk_pixbuf
+    glib
+    gtk3
+    at-spi2-atk
+    hunspell
+    libuuid
+    libnotify
+    libX11
+    libXcomposite
+    libXcursor
+    libXdamage
+    libXext
+    libXfixes
+    libXi
+    libXrandr
+    libXrender
+    libXScrnSaver
+    libXtst
+    nspr
+    nss
+    pango
+    pciutils
+    pulseaudio
+    stdenv.cc.cc
+    udev
+    xdg_utils
+    xorg.libxcb
+  ];
+
+in
+
+stdenv.mkDerivation rec {
+  pname = "wire-desktop";
+  version = "3.7.2891";
+
+  src = fetchurl {
+    url = "https://wire-app.wire.com/linux/debian/pool/main/Wire-${version}_amd64.deb";
+    sha256 = "0x4nx1rpr9wai0h3n14h1r0f0lj5m29a3pkx1w6mfz5la74iczqc";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "wire-desktop";
+    exec = "wire-desktop %U";
+    icon = "wire-desktop";
+    comment = "Secure messenger for everyone";
+    desktopName = "Wire Desktop";
+    genericName = "Secure messenger";
+    categories = "Network;InstantMessaging;Chat;VideoConference";
+  };
+
+  dontBuild = true;
+  dontPatchELF = true;
+  dontConfigure = true;
+
+  nativeBuildInputs = [ dpkg ];
+  unpackPhase = "dpkg-deb -x $src .";
+  installPhase = ''
+    mkdir -p "$out"
+    cp -R "opt" "$out"
+    cp -R "usr/share" "$out/share"
+
+    chmod -R g-w "$out"
+
+    # Patch wire-desktop
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${rpath}:$out/opt/Wire" \
+      "$out/opt/Wire/wire-desktop"
+
+    # Symlink to bin
+    mkdir -p "$out/bin"
+    ln -s "$out/opt/Wire/wire-desktop" "$out/bin/wire-desktop"
+
+    # Desktop file
+    mkdir -p "$out/share/applications"
+    cp "${desktopItem}/share/applications/"* "$out/share/applications"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A modern, secure messenger";
+    homepage = https://wire.com/;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/default.nix
new file mode 100644
index 000000000000..980d21572cc0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "xmpp-client-${version}";
+  version = "20160916-${stdenv.lib.strings.substring 0 7 rev}";
+  rev = "abbf9020393e8caae3e8996a16ce48446e31cf0e";
+
+  goPackagePath = "github.com/agl/xmpp-client";
+
+  src = fetchFromGitHub {
+    owner = "agl";
+    repo = "xmpp-client";
+    inherit rev;
+    sha256 = "0j9mfr208cachzm39i8b94v5qk9hws278vv2ms9ma4wn16wns81s";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "An XMPP client with OTR support";
+    homepage = https://github.com/agl/xmpp-client;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ codsl ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/deps.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/deps.nix
new file mode 100644
index 000000000000..caa41024fc61
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/xmpp-client/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "62ac18b461605b4be188bbc7300e9aa2bc836cd4";
+      sha256 = "0lwwvbbwbf3yshxkfhn6z20gd45dkvnmw2ms36diiy34krgy402p";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "575fdbe86e5dd89229707ebec0575ce7d088a4a6";
+      sha256 = "1kgv1mkw9y404pk3lcwbs0vgl133mwyp294i18jg9hp10s5d56xa";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix b/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
new file mode 100644
index 000000000000..fb60b772e29d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/default.nix
@@ -0,0 +1,100 @@
+{ stdenv, fetchurl, makeWrapper, makeDesktopItem, autoPatchelfHook, env
+# Dynamic libraries
+, dbus, glib, libGL, libX11, libXfixes, libuuid, libxcb, qtbase, qtdeclarative
+, qtimageformats, qtlocation, qtquickcontrols, qtquickcontrols2, qtscript, qtsvg
+, qttools, qtwayland, qtwebchannel, qtwebengine
+# Runtime
+, coreutils, libjpeg_turbo, pciutils, procps, utillinux
+, pulseaudioSupport ? true, libpulseaudio ? null
+}:
+
+assert pulseaudioSupport -> libpulseaudio != null;
+
+let
+  inherit (stdenv.lib) concatStringsSep makeBinPath optional;
+
+  version = "2.7.162522.0121";
+  srcs = {
+    x86_64-linux = fetchurl {
+      url = "https://zoom.us/client/${version}/zoom_x86_64.tar.xz";
+      sha256 = "01i4g4kmawk3mclifh4bwcqpdnbvrz0sz49b6l33n0k5ysky20r1";
+    };
+  };
+
+  qtDeps = [
+    qtbase qtdeclarative qtlocation qtquickcontrols qtquickcontrols2 qtscript
+    qtwebchannel qtwebengine qtimageformats qtsvg qttools qtwayland
+  ];
+
+  qtEnv = env "zoom-us-qt-${qtbase.version}" qtDeps;
+
+in stdenv.mkDerivation {
+  name = "zoom-us-${version}";
+
+  src = srcs.${stdenv.hostPlatform.system};
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+
+  buildInputs = [
+    dbus glib libGL libX11 libXfixes libuuid libxcb qtEnv libjpeg_turbo
+  ] ++ qtDeps;
+
+  runtimeDependencies = optional pulseaudioSupport libpulseaudio;
+
+  installPhase =
+    let
+      files = concatStringsSep " " [
+        "*.pcm"
+        "*.png"
+        "ZoomLauncher"
+        "config-dump.sh"
+        "timezones"
+        "translations"
+        "version.txt"
+        "zcacert.pem"
+        "zoom"
+        "zoom.sh"
+        "zoomlinux"
+        "zopen"
+      ];
+    in ''
+      runHook preInstall
+
+      packagePath=$out/share/zoom-us
+      mkdir -p $packagePath $out/bin
+
+      cp -ar ${files} $packagePath
+
+      # TODO Patch this somehow; tries to dlopen './libturbojpeg.so' from cwd
+      ln -s $(readlink -e "${libjpeg_turbo.out}/lib/libturbojpeg.so") $packagePath/libturbojpeg.so
+
+      ln -s ${qtEnv}/bin/qt.conf $packagePath
+
+      makeWrapper $packagePath/zoom $out/bin/zoom-us \
+        --prefix PATH : "${makeBinPath [ coreutils glib.dev pciutils procps qttools.dev utillinux ]}" \
+        --run "cd $packagePath"
+
+      runHook postInstall
+    '';
+
+  postInstall = (makeDesktopItem {
+    name = "zoom-us";
+    exec = "$out/bin/zoom-us %U";
+    icon = "$out/share/zoom-us/application-x-zoom.png";
+    desktopName = "Zoom";
+    genericName = "Video Conference";
+    categories = "Network;Application;";
+    mimeType = "x-scheme-handler/zoommtg;";
+  }).buildCommand;
+
+  passthru.updateScript = ./update.sh;
+
+  meta = {
+    homepage = https://zoom.us/;
+    description = "zoom.us video conferencing application";
+    license = stdenv.lib.licenses.unfree;
+    platforms = builtins.attrNames srcs;
+    maintainers = with stdenv.lib.maintainers; [ danbst tadfisher ];
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/update.sh b/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/update.sh
new file mode 100755
index 000000000000..21039d53da4f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/instant-messengers/zoom-us/update.sh
@@ -0,0 +1,7 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl pcre common-updater-scripts
+
+set -eu -o pipefail
+
+version="$(curl -sI https://zoom.us/client/latest/zoom_x86_64.tar.xz | grep -Fi 'Location:' | pcregrep -o1 '/(([0-9]\.?)+)/')"
+update-source-version zoom-us "$version"
diff --git a/nixpkgs/pkgs/applications/networking/insync/default.nix b/nixpkgs/pkgs/applications/networking/insync/default.nix
new file mode 100644
index 000000000000..9c1aa8f86f69
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/insync/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "insync-${version}";
+  version = "1.5.5.37367";
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "http://s.insynchq.com/builds/insync-portable_${version}_amd64.tar.bz2";
+        sha256 = "1yz8l8xjr0pm30hvv4w59wzs569xzkpn8lv12pyl82r1l16h5zp3";
+      }
+    else
+      throw "${name} is not supported on ${stdenv.hostPlatform.system}";
+
+  buildInputs = [ makeWrapper ];
+
+  postPatch = ''
+    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" client/insync-portable
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -a client $out/client
+    makeWrapper $out/client/insync-portable $out/bin/insync --set LC_TIME C
+  '';
+
+  meta = {
+    platforms = ["x86_64-linux"];
+    license = stdenv.lib.licenses.unfree;
+    maintainers = [ stdenv.lib.maintainers.benley ];
+    homepage = https://www.insynchq.com;
+    description = "Google Drive sync and backup with multiple account support";
+    longDescription = ''
+     Insync is a commercial application that syncs your Drive files to your
+     computer.  It has more advanced features than Google's official client
+     such as multiple account support, Google Doc conversion, symlink support,
+     and built in sharing.
+
+     There is a 15-day free trial, and it is a paid application after that.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ipfs-cluster/default.nix b/nixpkgs/pkgs/applications/networking/ipfs-cluster/default.nix
new file mode 100644
index 000000000000..870e40d81282
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ipfs-cluster/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, fetchgx, gx-go }:
+
+buildGoPackage rec {
+  name = "ipfs-cluster-${version}";
+  version = "0.9.0";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/ipfs/ipfs-cluster";
+
+  extraSrcPaths = [
+    (fetchgx {
+      inherit name src;
+      sha256 = "1k7xcirvi07p5g9gr9jcx5h39wk7jxfsyjrn5yraa8xdqhn6b6nx";
+    })
+  ];
+
+  src = fetchFromGitHub {
+    owner = "ipfs";
+    repo = "ipfs-cluster";
+    inherit rev;
+    sha256 = "1bxwcp0355f1ykjcidbxv218zp9d20nma7lnpn9xcjqc8vaq03kn";
+  };
+
+  nativeBuildInputs = [ gx-go ];
+
+  preBuild = ''
+    # fetchgx stores packages by their ipfs hash
+    # this will rewrite github.com/ imports to gx/ipfs/
+    cd go/src/${goPackagePath}
+    gx-go rewrite
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Allocate, replicate, and track Pins across a cluster of IPFS daemons";
+    homepage = https://cluster.ipfs.io/;
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ jglukasik ];
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/ipfs-migrator/default.nix b/nixpkgs/pkgs/applications/networking/ipfs-migrator/default.nix
new file mode 100644
index 000000000000..f070c5109376
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ipfs-migrator/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "ipfs-migrator-${version}";
+  version = "7";
+
+  goPackagePath = "github.com/ipfs/fs-repo-migrations";
+
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "ipfs";
+    repo = "fs-repo-migrations";
+    rev = "4e8e0b41d7348646c719d572c678c3d0677e541a";
+    sha256 = "1i6izncgc3wgabppglnnrslffvwrv3cazbdhsk4vjfsd66hb4d37";
+  };
+
+  patches = [ ./lru-repo-path-fix.patch ];
+
+  meta = with stdenv.lib; {
+    description = "Migration tool for ipfs repositories";
+    homepage = https://ipfs.io/;
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ elitak ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ipfs-migrator/deps.nix b/nixpkgs/pkgs/applications/networking/ipfs-migrator/deps.nix
new file mode 100644
index 000000000000..1ad1c383c8c6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ipfs-migrator/deps.nix
@@ -0,0 +1,47 @@
+[
+  {
+    goPackagePath = "github.com/jbenet/goprocess";
+    fetch = {
+      type = "git";
+      url = https://github.com/jbenet/goprocess;
+      rev = "b497e2f366b8624394fb2e89c10ab607bebdde0b";
+      sha256 = "1lnvkzki7vnqn5c4m6bigk0k85haicmg27w903kwg30rdvblm82s";
+    };
+  }
+  {
+    goPackagePath = "github.com/jbenet/go-random";
+    fetch = {
+      type = "git";
+      url = https://github.com/jbenet/go-random;
+      rev = "384f606e91f542a98e779e652eed88051618f0f7";
+      sha256 = "0gcshzl9n3apzc0jaxqrjsc038yfrzfyhpdqgbpcnajin83l2msa";
+    };
+  }
+  {
+    goPackagePath = "github.com/jbenet/go-random-files";
+    fetch = {
+      type = "git";
+      url = https://github.com/jbenet/go-random-files;
+      rev = "737479700b40b4b50e914e963ce8d9d44603e3c8";
+      sha256 = "1klpdc4qkrfy31r7qh00fcz42blswzabmcnry9byd5adhszxj9bw";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/golang-lru";
+    fetch = {
+      type = "git";
+      url = https://github.com/hashicorp/golang-lru;
+      rev = "20f1fb78b0740ba8c3cb143a61e86ba5c8669768";
+      sha256 = "12k2cp2k615fjvfa5hyb9k2alian77wivds8s65diwshwv41939f";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2";
+      sha256 = "17bqkd64zksi1578lb10ls4qf5lbqs7shfjcc6bi97y1qz5k31c4";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/ipfs-migrator/lru-repo-path-fix.patch b/nixpkgs/pkgs/applications/networking/ipfs-migrator/lru-repo-path-fix.patch
new file mode 100644
index 000000000000..a933a7b5358b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ipfs-migrator/lru-repo-path-fix.patch
@@ -0,0 +1,13 @@
+diff --git a/ipfs-1-to-2/go-datastore/lru/datastore.go b/ipfs-1-to-2/go-datastore/lru/datastore.go
+index 7eb18eb..cd8dcb7 100644
+--- a/ipfs-1-to-2/go-datastore/lru/datastore.go
++++ b/ipfs-1-to-2/go-datastore/lru/datastore.go
+@@ -3,7 +3,7 @@ package lru
+ import (
+ 	"errors"
+ 
+-	lru "github.com/ipfs/fs-repo-migrations/ipfs-1-to-2/golang-lru"
++	lru "github.com/hashicorp/golang-lru"
+ 
+ 	ds "github.com/ipfs/fs-repo-migrations/ipfs-1-to-2/go-datastore"
+ 	dsq "github.com/ipfs/fs-repo-migrations/ipfs-1-to-2/go-datastore/query"
diff --git a/nixpkgs/pkgs/applications/networking/ipfs/default.nix b/nixpkgs/pkgs/applications/networking/ipfs/default.nix
new file mode 100644
index 000000000000..28eec458ee03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ipfs/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, fetchgx }:
+
+buildGoPackage rec {
+  name = "ipfs-${version}";
+  version = "0.4.19";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/ipfs/go-ipfs";
+
+  extraSrcPaths = [
+    (fetchgx {
+      inherit name src;
+      sha256 = "0bj2kzxjssp7szp1wr9pp08bsi55jgf0k7gi4h70phlib2q673j2";
+    })
+  ];
+
+  src = fetchFromGitHub {
+    owner = "ipfs";
+    repo = "go-ipfs";
+    inherit rev;
+    sha256 = "061mgkawimhw3gq506h8m6kw50a2v26qysa5kc5jdqgaqx5yvqh4";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A global, versioned, peer-to-peer filesystem";
+    homepage = https://ipfs.io/;
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ipget/default.nix b/nixpkgs/pkgs/applications/networking/ipget/default.nix
new file mode 100644
index 000000000000..45835248d0d8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ipget/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, fetchgx }:
+
+buildGoPackage rec {
+  name = "ipget-${version}";
+  version = "0.3.2";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/ipfs/ipget";
+
+  extraSrcPaths = [
+    (fetchgx {
+      inherit name src;
+      sha256 = "07l9hpkhk5phr95zp1l5wd3ii38bw91hy4dlw2rsfbzcsc8bq4s8";
+    })
+  ];
+
+  goDeps = ../../../tools/package-management/gx/deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "ipfs";
+    repo = "ipget";
+    inherit rev;
+    sha256 = "1ljf5ddvc1p5swmgn4m1ivfj74fykk56myk2r9c4grdjzksf4a15";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Retrieve files over IPFS and save them locally";
+    homepage = https://ipfs.io/;
+    license = licenses.mit;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/iptraf-ng/default.nix b/nixpkgs/pkgs/applications/networking/iptraf-ng/default.nix
new file mode 100644
index 000000000000..746d79805f5c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/iptraf-ng/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchurl, ncurses }:
+
+stdenv.mkDerivation rec {
+  version = "1.1.4";
+  name = "iptraf-ng-${version}";
+
+  src = fetchurl {
+    url = "https://fedorahosted.org/releases/i/p/iptraf-ng/${name}.tar.gz";
+    sha256 = "02gb8z9h2s6s1ybyikywz7jgb1mafdx88hijfasv3khcgkq0q53r";
+  };
+
+  buildInputs = [ ncurses ];
+
+  configurePhase = ''
+    ./configure --prefix=$out/usr --sysconfdir=$out/etc \
+                --localstatedir=$out/var --sbindir=$out/bin
+  '';
+
+  hardeningDisable = [ "format" ];
+
+  meta = {
+    description = "A console-based network monitoring utility (fork of iptraf)";
+    longDescription = ''
+      IPTraf-ng is a console-based network monitoring utility. IPTraf-ng
+      gathers data like TCP connection packet and byte counts, interface
+      statistics and activity indicators, TCP/UDP traffic breakdowns, and LAN
+      station packet and byte counts. IPTraf-ng features include an IP traffic
+      monitor which shows TCP flag information, packet and byte counts, ICMP
+      details, OSPF packet types, and oversized IP packet warnings; interface
+      statistics showing IP, TCP, UDP, ICMP, non-IP and other IP packet counts,
+      IP checksum errors, interface activity and packet size counts; a TCP and
+      UDP service monitor showing counts of incoming and outgoing packets for
+      common TCP and UDP application ports, a LAN statistics module that
+      discovers active hosts and displays statistics about their activity; TCP,
+      UDP and other protocol display filters so you can view just the traffic
+      you want; logging; support for Ethernet, FDDI, ISDN, SLIP, PPP, and
+      loopback interfaces; and utilization of the built-in raw socket interface
+      of the Linux kernel, so it can be used on a wide variety of supported
+      network cards.
+    '';
+    homepage = https://fedorahosted.org/iptraf-ng/;
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/iptraf/default.nix b/nixpkgs/pkgs/applications/networking/iptraf/default.nix
new file mode 100644
index 000000000000..d1a0b2d4b029
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/iptraf/default.nix
@@ -0,0 +1,32 @@
+{stdenv, fetchurl, ncurses}:
+
+stdenv.mkDerivation rec {
+  name = "iptraf-3.0.1";
+
+  src = fetchurl {
+    url = ftp://iptraf.seul.org/pub/iptraf/iptraf-3.0.1.tar.gz;
+    sha256 = "12n059j9iihhpf6spmlaspqzxz3wqan6kkpnhmlj08jdijpnk84m";
+  };
+
+  hardeningDisable = [ "format" ];
+
+  patchPhase = ''
+    sed -i -e 's,#include <linux/if_tr.h>,#include <netinet/if_tr.h>,' src/*
+  '';
+
+  preConfigure = "cd src";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp iptraf $out/bin
+  '';
+
+  buildInputs = [ncurses];
+
+  meta = {
+    homepage = http://iptraf.seul.org/;
+    license = stdenv.lib.licenses.gpl2Plus;
+    description = "Console-based network statistics utility for Linux";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/bip/default.nix b/nixpkgs/pkgs/applications/networking/irc/bip/default.nix
new file mode 100644
index 000000000000..7c40a4e12a66
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/bip/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, fetchpatch, bison, flex, autoconf, automake, openssl }:
+
+stdenv.mkDerivation rec {
+  name = "bip-${version}";
+  version = "0.8.9";
+
+  # fetch sources from debian, because the creator's website provides
+  # the files only via https but with an untrusted certificate.
+  src = fetchurl {
+    url = "mirror://debian/pool/main/b/bip/bip_${version}.orig.tar.gz";
+    sha256 = "0q942g9lyd8pjvqimv547n6vik5759r9npw3ws3bdj4ixxqhz59w";
+  };
+
+  buildInputs = [ bison flex autoconf automake openssl ];
+
+  # includes an important security patch
+  patches = [
+    (fetchpatch {
+      url = "mirror://gentoo/../gentoo-portage/net-irc/bip/files/bip-freenode.patch";
+      sha256 = "05qy7a62p16f5knrsdv2lkhc07al18qq32ciq3k4r0lq1wbahj2y";
+    })
+    (fetchpatch {
+      url = "https://projects.duckcorp.org/projects/bip/repository/revisions/39414f8ff9df63c8bc2e4eee34f09f829a5bf8f5/diff/src/connection.c?format=diff";
+      sha256 = "1hvg58vci6invh0z19wf04jjvnm8w6f6v4c4nk1j5hc3ymxdp1rb";
+    })
+  ];
+
+  NIX_CFLAGS_COMPILE = [ "-Wno-error=unused-result" "-Wno-error=duplicate-decl-specifier" ];
+
+  meta = {
+    description = "An IRC proxy (bouncer)";
+    homepage = http://bip.milkypond.org/;
+    license = stdenv.lib.licenses.gpl2;
+    downloadPage = "https://projects.duckcorp.org/projects/bip/files";
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/chatzilla/default.nix b/nixpkgs/pkgs/applications/networking/irc/chatzilla/default.nix
new file mode 100644
index 000000000000..805b474e814f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/chatzilla/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, unzip, firefox-unwrapped, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "chatzilla-0.9.92";
+
+  src = fetchurl {
+    # Obtained from http://chatzilla.rdmsoft.com/xulrunner/.
+    url = "https://chatzilla.rdmsoft.com/xulrunner/download/${name}.en-US.xulapp";
+    sha256 = "09asg7ixjrin46xd19ri71g4jdrgb1gg0pk0lwk0dlb1qjxyf1xy";
+  };
+
+  buildInputs = [ unzip makeWrapper ];
+
+  buildCommand = ''
+    mkdir -p $out/libexec/chatzilla
+    unzip $src -d $out/libexec/chatzilla
+
+    makeWrapper ${firefox-unwrapped}/bin/firefox $out/bin/chatzilla \
+      --add-flags "-app $out/libexec/chatzilla/application.ini"
+
+    sed -i $out/libexec/chatzilla/application.ini -e 's/.*MaxVersion.*/MaxVersion=99.*/'
+  '';
+
+  meta = {
+    homepage = http://chatzilla.hacksrus.com/;
+    description = "Stand-alone version of Chatzilla, an IRC client";
+    maintainers = [ stdenv.lib.maintainers.eelco ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/communi/default.nix b/nixpkgs/pkgs/applications/networking/irc/communi/default.nix
new file mode 100644
index 000000000000..917de745d277
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/communi/default.nix
@@ -0,0 +1,48 @@
+{ fetchgit, libcommuni, qtbase, qmake, stdenv }:
+
+stdenv.mkDerivation rec {
+  name = "communi-${version}";
+  version = "3.5.0";
+
+  src = fetchgit {
+    url = "https://github.com/communi/communi-desktop.git";
+    rev = "v${version}";
+    sha256 = "10grskhczh8601s90ikdsbjabgr9ypcp2j7vivjkl456rmg6xbji";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ qmake ];
+
+  buildInputs = [ libcommuni qtbase ];
+
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    export QMAKEFEATURES=${libcommuni}/features
+    qmakeFlags="$qmakeFlags \
+      COMMUNI_INSTALL_PREFIX=$out \
+      COMMUNI_INSTALL_BINS=$out/bin \
+      COMMUNI_INSTALL_PLUGINS=$out/lib/communi/plugins \
+      COMMUNI_INSTALL_ICONS=$out/share/icons/hicolor \
+      COMMUNI_INSTALL_DESKTOP=$out/share/applications \
+      COMMUNI_INSTALL_THEMES=$out/share/communi/themes
+    "
+  '';
+
+  postInstall = stdenv.lib.optionalString stdenv.isLinux ''
+    substituteInPlace "$out/share/applications/communi.desktop" \
+      --replace "/usr/bin" "$out/bin"
+  '';
+
+  preFixup = ''
+    rm -rf lib
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A simple and elegant cross-platform IRC client";
+    homepage = https://github.com/communi/communi-desktop;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ hrdinka ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/epic5/default.nix b/nixpkgs/pkgs/applications/networking/irc/epic5/default.nix
new file mode 100644
index 000000000000..0b52515228b9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/epic5/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, openssl, ncurses, libiconv, tcl, coreutils, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  name = "epic5-${version}";
+  version = "2.0.1";
+
+  src = fetchurl {
+    url = "http://ftp.epicsol.org/pub/epic/EPIC5-PRODUCTION/${name}.tar.xz";
+    sha256 = "1ap73d5f4vccxjaaq249zh981z85106vvqmxfm4plvy76b40y9jm";
+  };
+
+  # Darwin needs libiconv, tcl; while Linux build don't
+  buildInputs = [ openssl ncurses ]
+    ++ stdenv.lib.optionals stdenv.isDarwin [ libiconv tcl ];
+
+  patches = [
+    (fetchpatch {
+      url = "https://sources.debian.net/data/main/e/epic5/2.0.1-1/debian/patches/openssl-1.1.patch";
+      sha256 = "03bpsyv1sr5icajs2qkdvv8nnn6rz6yvvj7pgiq8gz9sbp6siyfv";
+    })
+  ];
+
+  configureFlags = [ "--disable-debug" "--with-ipv6" ];
+
+  postConfigure = ''
+    substituteInPlace bsdinstall \
+      --replace /bin/cp ${coreutils}/bin/cp \
+      --replace /bin/rm ${coreutils}/bin/rm \
+      --replace /bin/chmod ${coreutils}/bin/chmod \
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://epicsol.org;
+    description = "A IRC client that offers a great ircII interface";
+    license = licenses.bsd3;
+    maintainers = [ maintainers.ndowens ];
+  };
+}
+
+
+
diff --git a/nixpkgs/pkgs/applications/networking/irc/glowing-bear/default.nix b/nixpkgs/pkgs/applications/networking/irc/glowing-bear/default.nix
new file mode 100644
index 000000000000..8c5d2ffa35ea
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/glowing-bear/default.nix
@@ -0,0 +1,27 @@
+{ fetchFromGitHub, stdenv }:
+
+stdenv.mkDerivation rec {
+  name = "glowing-bear-${version}";
+  version = "0.7.1";
+
+  src = fetchFromGitHub {
+    rev = version;
+    owner = "glowing-bear";
+    repo = "glowing-bear";
+    sha256 = "0gwrf67l3i3nl7zy1miljz6f3vv6zzc3g9as06by548f21cizzjb";
+  };
+
+  installPhase = ''
+    mkdir $out
+    cp index.html min.js serviceworker.js webapp.manifest.json $out
+    cp -R 3rdparty assets css directives js $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A web client for Weechat";
+    homepage = https://github.com/glowing-bear/glowing-bear;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ delroth ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/hexchat/default.nix b/nixpkgs/pkgs/applications/networking/irc/hexchat/default.nix
new file mode 100644
index 000000000000..f03e4c4e9e34
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/hexchat/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchFromGitHub, pkgconfig, gtk2, lua, perl, python2
+, libtool, pciutils, dbus-glib, libcanberra-gtk2, libproxy
+, libsexy, enchant, libnotify, openssl, intltool
+, desktop-file-utils, hicolor-icon-theme
+, autoconf, automake, autoconf-archive
+}:
+
+stdenv.mkDerivation rec {
+  version = "2.12.4";
+  name = "hexchat-${version}";
+
+  src = fetchFromGitHub {
+    owner = "hexchat";
+    repo = "hexchat";
+    rev = "v${version}";
+    sha256 = "1z8v7jg1mc2277k3jihnq4rixw1q27305aw6b6rpb1x7vpiy2zr3";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig libtool intltool
+    autoconf autoconf-archive automake
+  ];
+
+  buildInputs = [
+    gtk2 lua perl python2 pciutils dbus-glib libcanberra-gtk2 libproxy
+    libsexy libnotify openssl desktop-file-utils hicolor-icon-theme
+  ];
+
+  enableParallelBuilding = true;
+
+  #hexchat and heachat-text loads enchant spell checking library at run time and so it needs to have route to the path
+  patchPhase = ''
+    sed -i "s,libenchant.so.1,${enchant}/lib/libenchant.so.1,g" src/fe-gtk/sexy-spell-entry.c
+  '';
+
+  preConfigure = ''
+    ./autogen.sh
+  '';
+
+  configureFlags = [ "--enable-shm" "--enable-textfe" ];
+
+  meta = with stdenv.lib; {
+    description = "A popular and easy to use graphical IRC (chat) client";
+    homepage = https://hexchat.github.io/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/ii/default.nix b/nixpkgs/pkgs/applications/networking/irc/ii/default.nix
new file mode 100644
index 000000000000..4807f3419d15
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/ii/default.nix
@@ -0,0 +1,21 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation rec {
+  name = "ii-1.8";
+
+  src = fetchurl {
+    url = "https://dl.suckless.org/tools/${name}.tar.gz";
+    sha256 = "1lk8vjl7i8dcjh4jkg8h8bkapcbs465sy8g9c0chfqsywbmf3ndr";
+  };
+
+  installPhase = ''
+    make install PREFIX=$out
+  '';
+
+  meta = {
+    homepage = https://tools.suckless.org/ii/;
+    license = stdenv.lib.licenses.mit;
+    description = "Irc it, simple FIFO based irc client";
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/irssi/default.nix b/nixpkgs/pkgs/applications/networking/irc/irssi/default.nix
new file mode 100644
index 000000000000..8aa599c09c40
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/irssi/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchurl, pkgconfig, ncurses, glib, openssl, perl, libintl }:
+
+stdenv.mkDerivation rec {
+  version = "1.2.0";
+  name = "irssi-${version}";
+
+  src = fetchurl {
+    url = "https://github.com/irssi/irssi/releases/download/${version}/${name}.tar.gz";
+    sha256 = "1sp3fc5fkdx0mmllvag94xaifnqbj1k09nl235pix26vv1gzq39m";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses glib openssl perl libintl ];
+
+  configureFlags = [
+    "--with-proxy"
+    "--with-bot"
+    "--with-perl=yes"
+    "--enable-true-color"
+  ];
+
+  meta = {
+    homepage    = https://irssi.org;
+    description = "A terminal based IRC client";
+    platforms   = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ lovek323 ];
+    license     = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/irssi/fish/default.nix b/nixpkgs/pkgs/applications/networking/irc/irssi/fish/default.nix
new file mode 100644
index 000000000000..aefc48d4a3ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/irssi/fish/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchurl, irssi, gmp, automake, autoconf, libtool, openssl, glib, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  name = "fish-irssi-20130413-e98156bebd";
+  
+  src = fetchurl {
+    url = https://github.com/falsovsky/FiSH-irssi/tarball/e98156bebd;
+    name = "${name}.tar.gz";
+    sha256 = "1ndr51qrg66h1mfzacwzl1vd6lj39pdc4p4z5iihrj4r2f6gk11a";
+  };
+
+  preConfigure = ''
+    tar xf ${irssi.src}
+    configureFlags="$configureFlags --with-irssi-source=`pwd`/${irssi.name}"
+
+    ./regen.sh
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib/irssi/modules
+    cp src/.libs/libfish.so $out/lib/irssi/modules
+  '';
+  
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gmp automake autoconf libtool openssl glib ];
+  
+  meta = {
+    homepage = https://github.com/falsovsky/FiSH-irssi;
+    license = stdenv.lib.licenses.unfree; # I can't find any mention of license
+    maintainers = with stdenv.lib.maintainers; [viric];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/irssi/otr/default.nix b/nixpkgs/pkgs/applications/networking/irc/irssi/otr/default.nix
new file mode 100644
index 000000000000..add4fa632c91
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/irssi/otr/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, libotr, automake, autoconf, libtool, glib, pkgconfig, irssi }:
+
+with stdenv.lib;
+stdenv.mkDerivation rec {
+  name = "irssi-otr-${version}";
+  version = "1.0.2";
+
+  src = fetchFromGitHub {
+    owner = "cryptodotis";
+    repo = "irssi-otr";
+    rev = "v${version}";
+    sha256 = "0c5wb2lg9q0i1jdhpyb5vpvxaa2xx00gvp3gdk93ix9v68gq1ppp";
+  };
+
+  preConfigure = "sh ./bootstrap";
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libotr automake autoconf libtool glib irssi ];
+
+  NIX_CFLAGS_COMPILE="-I ${irssi}/include/irssi -I ${irssi}/include/irssi/src/core -I ${irssi}/include/irssi/src/";
+
+  meta = {
+    homepage = https://github.com/cryptodotis/irssi-otr;
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/konversation/default.nix b/nixpkgs/pkgs/applications/networking/irc/konversation/default.nix
new file mode 100644
index 000000000000..ccee78a64da6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/konversation/default.nix
@@ -0,0 +1,79 @@
+{ mkDerivation
+, lib
+, fetchurl
+, fetchpatch
+, extra-cmake-modules
+, kdoctools
+, kbookmarks
+, karchive
+, kconfig
+, kconfigwidgets
+, kcoreaddons
+, kcrash
+, kdbusaddons
+, kemoticons
+, kglobalaccel
+, ki18n
+, kiconthemes
+, kidletime
+, kitemviews
+, knotifications
+, knotifyconfig
+, kwindowsystem
+, kio
+, kparts
+, kwallet
+, solid
+, sonnet
+, phonon
+}:
+
+let
+  pname = "konversation";
+  version = "1.7.5";
+in mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz";
+    sha256 = "0h098yhlp36ls6pdvs2r93ig8dv4fys62m0h6wxccprb0qrpbgv0";
+  };
+
+  buildInputs = [
+    kbookmarks
+    karchive
+    kconfig
+    kconfigwidgets
+    kcoreaddons
+    kcrash
+    kdbusaddons
+    kdoctools
+    kemoticons
+    kglobalaccel
+    ki18n
+    kiconthemes
+    kidletime
+    kitemviews
+    knotifications
+    knotifyconfig
+    kwindowsystem
+    kio
+    kparts
+    kwallet
+    solid
+    sonnet
+    phonon
+  ];
+
+  nativeBuildInputs = [
+    extra-cmake-modules
+    kdoctools
+  ];
+
+  meta = {
+    description = "Integrated IRC client for KDE";
+    license = with lib.licenses; [ gpl2 ];
+    maintainers = with lib.maintainers; [ fridh ];
+    homepage = https://konversation.kde.org;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/quassel/default.nix b/nixpkgs/pkgs/applications/networking/irc/quassel/default.nix
new file mode 100644
index 000000000000..6aacdde544bc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/quassel/default.nix
@@ -0,0 +1,94 @@
+{ monolithic ? true # build monolithic Quassel
+, daemon ? false # build Quassel daemon
+, client ? false # build Quassel client
+, tag ? "-kf5" # tag added to the package name
+, static ? false # link statically
+
+, stdenv, fetchFromGitHub, cmake, makeWrapper, dconf
+, qtbase, qtscript
+, phonon, libdbusmenu, qca-qt5
+
+, withKDE ? true # enable KDE integration
+, extra-cmake-modules
+, kconfigwidgets
+, kcoreaddons
+, knotifications
+, knotifyconfig
+, ktextwidgets
+, kwidgetsaddons
+, kxmlgui
+}:
+
+let
+    buildClient = monolithic || client;
+    buildCore = monolithic || daemon;
+in
+
+assert monolithic -> !client && !daemon;
+assert client || daemon -> !monolithic;
+assert !buildClient -> !withKDE; # KDE is used by the client only
+
+let
+  edf = flag: feature: [("-D" + feature + (if flag then "=ON" else "=OFF"))];
+
+in with stdenv; mkDerivation rec {
+  name = "quassel${tag}-${version}";
+  version = "0.13.1";
+
+  src = fetchFromGitHub {
+    owner = "quassel";
+    repo = "quassel";
+    rev = version;
+    sha256 = "0z8p7iv90yrrjbh31cyxhpr6hsynfmi23rlayn7p2f6ki5az7yc3";
+  };
+
+  enableParallelBuilding = true;
+
+  # Prevent ``undefined reference to `qt_version_tag''' in SSL check
+  NIX_CFLAGS_COMPILE = [ "-DQT_NO_VERSION_TAGGING=1" ];
+
+  buildInputs =
+       [ cmake makeWrapper qtbase ]
+    ++ lib.optionals buildCore [qtscript qca-qt5]
+    ++ lib.optionals buildClient [libdbusmenu phonon]
+    ++ lib.optionals (buildClient && withKDE) [
+      extra-cmake-modules kconfigwidgets kcoreaddons
+      knotifications knotifyconfig ktextwidgets kwidgetsaddons
+      kxmlgui
+    ];
+
+  cmakeFlags = [
+    "-DEMBED_DATA=OFF"
+    "-DUSE_QT5=ON"
+  ]
+    ++ edf static "STATIC"
+    ++ edf monolithic "WANT_MONO"
+    ++ edf daemon "WANT_CORE"
+    ++ edf client "WANT_QTCLIENT"
+    ++ edf withKDE "WITH_KDE";
+
+  preFixup =
+    lib.optionalString daemon ''
+        wrapProgram "$out/bin/quasselcore" --suffix PATH : "${qtbase.bin}/bin"
+    '' +
+    lib.optionalString buildClient ''
+        wrapProgram "$out/bin/quassel${lib.optionalString client "client"}" \
+          --prefix GIO_EXTRA_MODULES : "${dconf}/lib/gio/modules"
+    '';
+
+  meta = with stdenv.lib; {
+    homepage = https://quassel-irc.org/;
+    description = "Qt/KDE distributed IRC client suppporting a remote daemon";
+    longDescription = ''
+      Quassel IRC is a cross-platform, distributed IRC client,
+      meaning that one (or multiple) client(s) can attach to
+      and detach from a central core -- much like the popular
+      combination of screen and a text-based IRC client such
+      as WeeChat, but graphical (based on Qt4/KDE4 or Qt5/KF5).
+    '';
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ phreedom ttuegel ];
+    repositories.git = https://github.com/quassel/quassel.git;
+    inherit (qtbase.meta) platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/qweechat/default.nix b/nixpkgs/pkgs/applications/networking/irc/qweechat/default.nix
new file mode 100644
index 000000000000..acf030222a1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/qweechat/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub, python27Packages }:
+
+python27Packages.buildPythonApplication rec {
+  version = "2016-07-29";
+  name = "qweechat-unstable-${version}";
+  namePrefix = "";
+
+ src = fetchFromGitHub {
+    owner = "weechat";
+    repo = "qweechat";
+    rev = "f5e54d01691adb3abef47e051a6412186c33313c";
+    sha256 = "0dhlriwvkrsn7jj01p2wqhf2p63n9qd173jsgccgxlacm2zzvhaz";
+  };
+
+  prePatch = ''
+    substituteInPlace setup.py \
+      --replace 'qweechat = qweechat.qweechat' 'qweechat = qweechat.qweechat:main'
+  '';
+
+  propagatedBuildInputs = with python27Packages; [
+     pyside
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/weechat/qweechat;
+    description = "Qt remote GUI for WeeChat";
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ramkromberg ];
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/sic/default.nix b/nixpkgs/pkgs/applications/networking/irc/sic/default.nix
new file mode 100644
index 000000000000..cf72bef62b17
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/sic/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "sic-${version}";
+  version = "1.2";
+
+  makeFlags = "PREFIX=$(out)";
+  src = fetchurl {
+    url = "https://dl.suckless.org/tools/sic-${version}.tar.gz";
+    sha256 = "ac07f905995e13ba2c43912d7a035fbbe78a628d7ba1c256f4ca1372fb565185";
+  };
+
+  meta = {
+    description = "Simple IRC client";
+    homepage = https://tools.suckless.org/sic/;
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/default.nix
new file mode 100644
index 000000000000..6bdade7198ab
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/default.nix
@@ -0,0 +1,91 @@
+{ stdenv, fetchurl, lib
+, ncurses, openssl, aspell, gnutls
+, zlib, curl, pkgconfig, libgcrypt
+, cmake, makeWrapper, libobjc, libresolv, libiconv
+, asciidoctor # manpages
+, guileSupport ? true, guile
+, luaSupport ? true, lua5
+, perlSupport ? true, perl, perlPackages
+, pythonSupport ? true, pythonPackages
+, rubySupport ? true, ruby
+, tclSupport ? true, tcl
+, extraBuildInputs ? []
+, fetchpatch
+}:
+
+let
+  inherit (pythonPackages) python;
+  plugins = [
+    { name = "perl"; enabled = perlSupport; cmakeFlag = "ENABLE_PERL"; buildInputs = [ perl ]; }
+    { name = "tcl"; enabled = tclSupport; cmakeFlag = "ENABLE_TCL"; buildInputs = [ tcl ]; }
+    { name = "ruby"; enabled = rubySupport; cmakeFlag = "ENABLE_RUBY"; buildInputs = [ ruby ]; }
+    { name = "guile"; enabled = guileSupport; cmakeFlag = "ENABLE_GUILE"; buildInputs = [ guile ]; }
+    { name = "lua"; enabled = luaSupport; cmakeFlag = "ENABLE_LUA"; buildInputs = [ lua5 ]; }
+    { name = "python"; enabled = pythonSupport; cmakeFlag = "ENABLE_PYTHON"; buildInputs = [ python ]; }
+  ];
+  enabledPlugins = builtins.filter (p: p.enabled) plugins;
+
+  in
+    assert lib.all (p: p.enabled -> ! (builtins.elem null p.buildInputs)) plugins;
+    stdenv.mkDerivation rec {
+      version = "2.4";
+      name = "weechat-${version}";
+
+      src = fetchurl {
+        url = "https://weechat.org/files/src/weechat-${version}.tar.bz2";
+        sha256 = "1z80y5fbrb56wdcx9njrf203r8282wnn3piw3yffk5lvhklsz9k1";
+      };
+
+      patches = [
+        (fetchpatch {
+          url = https://github.com/weechat/weechat/commit/6a9937f08ad2c14aeb0a847ffb99e652d47d8251.patch;
+          sha256 = "1blhgxwqs65dvpw3ppxszxrsg02rx7qck1w71h61ljinyjzri3bp";
+          excludes = [ "ChangeLog.adoc" ];
+        })
+      ];
+
+      outputs = [ "out" "man" ] ++ map (p: p.name) enabledPlugins;
+
+      enableParallelBuilding = true;
+      cmakeFlags = with stdenv.lib; [
+        "-DENABLE_MAN=ON"
+        "-DENABLE_DOC=ON"
+      ]
+        ++ optionals stdenv.isDarwin ["-DICONV_LIBRARY=${libiconv}/lib/libiconv.dylib" "-DCMAKE_FIND_FRAMEWORK=LAST"]
+        ++ map (p: "-D${p.cmakeFlag}=" + (if p.enabled then "ON" else "OFF")) plugins
+        ;
+
+      buildInputs = with stdenv.lib; [
+          ncurses openssl aspell gnutls zlib curl pkgconfig
+          libgcrypt makeWrapper cmake asciidoctor
+          ]
+        ++ optionals stdenv.isDarwin [ libobjc libresolv ]
+        ++ concatMap (p: p.buildInputs) enabledPlugins
+        ++ extraBuildInputs;
+
+      NIX_CFLAGS_COMPILE = "-I${python}/include/${python.libPrefix}"
+        # Fix '_res_9_init: undefined symbol' error
+        + (stdenv.lib.optionalString stdenv.isDarwin "-DBIND_8_COMPAT=1 -lresolv");
+
+      postInstall = with stdenv.lib; ''
+        for p in ${concatMapStringsSep " " (p: p.name) enabledPlugins}; do
+          from=$out/lib/weechat/plugins/$p.so
+          to=''${!p}/lib/weechat/plugins/$p.so
+          mkdir -p $(dirname $to)
+          mv $from $to
+        done
+      '';
+
+      meta = {
+        homepage = http://www.weechat.org/;
+        description = "A fast, light and extensible chat client";
+        longDescription = ''
+          You can find more documentation as to how to customize this package
+          (eg. adding python modules for scripts that would require them, etc.)
+          on https://nixos.org/nixpkgs/manual/#sec-weechat .
+        '';
+        license = stdenv.lib.licenses.gpl3;
+        maintainers = with stdenv.lib.maintainers; [ lovek323 garbas the-kenny lheckemann ma27 ];
+        platforms = stdenv.lib.platforms.unix;
+      };
+    }
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/default.nix
new file mode 100644
index 000000000000..439e0e116141
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/default.nix
@@ -0,0 +1,17 @@
+{ callPackage, luaPackages, pythonPackages }:
+
+{
+  weechat-xmpp = callPackage ./weechat-xmpp {
+    inherit (pythonPackages) pydns;
+  };
+
+  weechat-matrix-bridge = callPackage ./weechat-matrix-bridge {
+    inherit (luaPackages) cjson;
+  };
+
+  wee-slack = callPackage ./wee-slack {
+    inherit pythonPackages;
+  };
+
+  weechat-autosort = callPackage ./weechat-autosort { };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix
new file mode 100644
index 000000000000..280e447cd0a1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, substituteAll, buildEnv, fetchFromGitHub, pythonPackages }:
+
+stdenv.mkDerivation rec {
+  name = "wee-slack-${version}";
+  version = "2.2.0";
+
+  src = fetchFromGitHub {
+    repo = "wee-slack";
+    owner = "wee-slack";
+    rev = "v${version}";
+    sha256 = "1iy70q630cgs7fvk2151fq9519dwxrlqq862sbrwypzr6na6yqpg";
+  };
+
+  patches = [
+    (substituteAll {
+      src = ./libpath.patch;
+      env = "${buildEnv {
+        name = "wee-slack-env";
+        paths = with pythonPackages; [ websocket_client six ];
+      }}/${pythonPackages.python.sitePackages}";
+    })
+  ];
+
+  passthru.scripts = [ "wee_slack.py" ];
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp wee_slack.py $out/share/wee_slack.py
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/wee-slack/wee-slack;
+    license = licenses.mit;
+    maintainers = with maintainers; [ ma27 ];
+    description = ''
+      A WeeChat plugin for Slack.com. Synchronizes read markers, provides typing notification, search, etc..
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/libpath.patch b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/libpath.patch
new file mode 100644
index 000000000000..8887e075f13c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/wee-slack/libpath.patch
@@ -0,0 +1,13 @@
+diff --git a/wee_slack.py b/wee_slack.py
+index c5c7bc6..23fef2f 100644
+--- a/wee_slack.py
++++ b/wee_slack.py
+@@ -25,6 +25,8 @@ try:
+ except:
+     from StringIO import StringIO
+ 
++sys.path.append('@env@')
++
+ from websocket import create_connection, WebSocketConnectionClosedException
+ 
+ # hack to make tests possible.. better way?
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-autosort/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-autosort/default.nix
new file mode 100644
index 000000000000..95ae71cc70c3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-autosort/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "weechat-autosort-${version}";
+  version = "unstable-2018-01-11";
+
+  src = fetchFromGitHub {
+    owner = "de-vri-es";
+    repo = "weechat-autosort";
+    rev = "35ccd6335afd78ae8a6e050ed971d54c8524e37e";
+    sha256 = "1rgws960xys65cd1m529csalcgny87h7fkiwjv1yj9rpqp088z26";
+  };
+
+  passthru.scripts = [ "autosort.py" ];
+  installPhase = ''
+    install -D autosort.py $out/share/autosort.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Autosort is a weechat script to automatically or manually keep your buffers sorted";
+    homepage = https://github.com/de-vri-es/weechat-autosort;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ma27 ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/default.nix
new file mode 100644
index 000000000000..137a32f9364f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, curl, fetchFromGitHub, cjson, olm, luaffi }:
+
+stdenv.mkDerivation {
+  name = "weechat-matrix-bridge-2018-11-19";
+  src = fetchFromGitHub {
+    owner = "torhve";
+    repo = "weechat-matrix-protocol-script";
+    rev = "8d32e90d864a8f3f09ecc2857cd5dd6e39a8c3f7";
+    sha256 = "0qqd6qmkrdc0r3rnl53c3yp93fbcz7d3mdw3vq5gmdqxyym4s9lj";
+  };
+
+  patches = [
+    ./library-path.patch
+  ];
+
+  buildInputs = [ curl cjson olm luaffi ];
+
+  postPatch = ''
+    substituteInPlace matrix.lua \
+      --replace "/usr/bin/curl" "${curl}/bin/curl" \
+      --replace "__NIX_LIB_PATH__" "$out/lib/?.so" \
+      --replace "__NIX_OLM_PATH__" "$out/share/?.lua"
+
+    substituteInPlace olm.lua \
+      --replace "__NIX_LIB_PATH__" "$out/lib/?.so"
+  '';
+
+  passthru.scripts = [ "matrix.lua" ];
+
+  installPhase = ''
+    mkdir -p $out/{share,lib}
+
+    cp {matrix.lua,olm.lua} $out/share
+    cp ${cjson}/lib/lua/5.2/cjson.so $out/lib/cjson.so
+    cp ${olm}/lib/libolm.so $out/lib/libolm.so
+    cp ${luaffi}/lib/ffi.so $out/lib/ffi.so
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A WeeChat script in Lua that implements the matrix.org chat protocol";
+    homepage = https://github.com/torhve/weechat-matrix-protocol-script;
+    maintainers = with maintainers; [ ma27 ];
+    license = licenses.mit; # see https://github.com/torhve/weechat-matrix-protocol-script/blob/0052e7275ae149dc5241226391c9b1889ecc3c6b/matrix.lua#L53
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/library-path.patch b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/library-path.patch
new file mode 100644
index 000000000000..d9945c2993b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-matrix-bridge/library-path.patch
@@ -0,0 +1,28 @@
+diff --git a/matrix.lua b/matrix.lua
+index b79f500..32b37a2 100644
+--- a/matrix.lua
++++ b/matrix.lua
+@@ -43,6 +43,9 @@ This script maps this as follows:
+ 
+ ]]
+ 
++package.cpath = package.cpath .. ";__NIX_LIB_PATH__"
++package.path = package.path .. ";__NIX_OLM_PATH__"
++
+ local json = require 'cjson' -- apt-get install lua-cjson
+ local olmstatus, olm = pcall(require, 'olm') -- LuaJIT olm FFI binding ln -s ~/olm/olm.lua /usr/local/share/lua/5.1
+ local w = weechat
+diff --git a/olm.lua b/olm.lua
+index 114649c..4828371 100644
+--- a/olm.lua
++++ b/olm.lua
+@@ -17,6 +17,9 @@
+  * limitations under the License.
+  */
+ --]]
++
++package.cpath = package.cpath .. ";__NIX_LIB_PATH__"
++
+ local ffi = require'ffi'
+ 
+ ffi.cdef[[
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/default.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/default.nix
new file mode 100644
index 000000000000..dad5b9c5e02a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, xmpppy, pydns, substituteAll, buildEnv }:
+
+stdenv.mkDerivation {
+  name = "weechat-jabber-2017-08-30";
+
+  src = fetchFromGitHub {
+    repo = "weechat-xmpp";
+    owner = "sleduc";
+    sha256 = "0s02xs0ynld9cxxzj07al364sfglyc5ir1i82133mq0s8cpphnxv";
+    rev = "8f6c21f5a160c9318c7a2d8fd5dcac7ab2e0d843";
+  };
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp jabber.py $out/share/jabber.py
+  '';
+
+  patches = [
+    (substituteAll {
+      src = ./libpath.patch;
+      env = "${buildEnv {
+        name = "weechat-xmpp-env";
+        paths = [ pydns xmpppy ];
+      }}/lib/python2.7/site-packages";
+    })
+  ];
+
+  passthru.scripts = [ "jabber.py" ];
+
+  meta = with stdenv.lib; {
+    description = "A fork of the jabber plugin for weechat";
+    homepage = "https://github.com/sleduc/weechat-xmpp";
+    maintainers = with maintainers; [ ma27 ];
+    license = licenses.gpl3Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/libpath.patch b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/libpath.patch
new file mode 100644
index 000000000000..372c83944a27
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/scripts/weechat-xmpp/libpath.patch
@@ -0,0 +1,16 @@
+diff --git a/jabber.py b/jabber.py
+index 27006a3..e53c2c0 100644
+--- a/jabber.py
++++ b/jabber.py
+@@ -95,6 +95,11 @@ SCRIPT_COMMAND = SCRIPT_NAME
+ import re
+ import warnings
+ 
++import sys
++
++sys.path.append('@env@')
++
++
+ import_ok = True
+ 
+ try:
diff --git a/nixpkgs/pkgs/applications/networking/irc/weechat/wrapper.nix b/nixpkgs/pkgs/applications/networking/irc/weechat/wrapper.nix
new file mode 100644
index 000000000000..81073222c2b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/weechat/wrapper.nix
@@ -0,0 +1,80 @@
+{ stdenv, lib, runCommand, writeScriptBin, buildEnv
+, pythonPackages, perlPackages, runtimeShell
+}:
+
+weechat:
+
+let
+  wrapper = {
+    configure ? { availablePlugins, ... }: { plugins = builtins.attrValues availablePlugins; }
+  }:
+
+  let
+    perlInterpreter = perlPackages.perl;
+    availablePlugins = let
+        simplePlugin = name: {pluginFile = "${weechat.${name}}/lib/weechat/plugins/${name}.so";};
+      in rec {
+        python = {
+          pluginFile = "${weechat.python}/lib/weechat/plugins/python.so";
+          withPackages = pkgsFun: (python // {
+            extraEnv = ''
+              export PYTHONHOME="${pythonPackages.python.withPackages pkgsFun}"
+            '';
+          });
+        };
+        perl = (simplePlugin "perl") // {
+          extraEnv = ''
+            export PATH="${perlInterpreter}/bin:$PATH"
+          '';
+          withPackages = pkgsFun: (perl // {
+            extraEnv = ''
+              ${perl.extraEnv}
+              export PERL5LIB=${perlPackages.makeFullPerlPath (pkgsFun perlPackages)}
+            '';
+          });
+        };
+        tcl = simplePlugin "tcl";
+        ruby = simplePlugin "ruby";
+        guile = simplePlugin "guile";
+        lua = simplePlugin "lua";
+      };
+
+    config = configure { inherit availablePlugins; };
+
+    plugins = config.plugins or (builtins.attrValues availablePlugins);
+
+    pluginsDir = runCommand "weechat-plugins" {} ''
+      mkdir -p $out/plugins
+      for plugin in ${lib.concatMapStringsSep " " (p: p.pluginFile) plugins} ; do
+        ln -s $plugin $out/plugins
+      done
+    '';
+
+    init = let
+      init = builtins.replaceStrings [ "\n" ] [ ";" ] (config.init or "");
+
+      mkScript = drv: lib.flip map drv.scripts (script: "/script load ${drv}/share/${script}");
+
+      scripts = builtins.concatStringsSep ";" (lib.foldl (scripts: drv: scripts ++ mkScript drv)
+        [ ] (config.scripts or []));
+    in "${scripts};${init}";
+
+    mkWeechat = bin: (writeScriptBin bin ''
+      #!${runtimeShell}
+      export WEECHAT_EXTRA_LIBDIR=${pluginsDir}
+      ${lib.concatMapStringsSep "\n" (p: lib.optionalString (p ? extraEnv) p.extraEnv) plugins}
+      exec ${weechat}/bin/${bin} "$@" --run-command ${lib.escapeShellArg init}
+    '') // {
+      inherit (weechat) name;
+      unwrapped = weechat;
+    };
+  in buildEnv {
+    name = "weechat-bin-env-${weechat.version}";
+    paths = [
+      (mkWeechat "weechat")
+      (mkWeechat "weechat-headless")
+    ];
+    meta = builtins.removeAttrs weechat.meta [ "outputsToInstall" ];
+  };
+
+in lib.makeOverridable wrapper
diff --git a/nixpkgs/pkgs/applications/networking/irc/wraith/configure.patch b/nixpkgs/pkgs/applications/networking/irc/wraith/configure.patch
new file mode 100644
index 000000000000..e5fa2feb2019
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/wraith/configure.patch
@@ -0,0 +1,58 @@
+--- a/configure
++++ b/configure
+@@ -6029,53 +6029,8 @@
+ #AC_CHECK_HEADERS(zlib.h)
+ #EGG_CHECK_ZLIB
+ 
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for path to OpenSSL" >&5
+-$as_echo_n "checking for path to OpenSSL... " >&6; }
+-
+-
+-# Check whether --with-openssl was given.
+-if test "${with_openssl+set}" = set; then :
+-  withval=$with_openssl; with_openssl_path=$withval
+-else
+-  with_openssl_path=auto
+-fi
+-
+-
+-
+-cf_openssl_basedir=""
+-if test "$with_openssl_path" != "auto"; then
+-    cf_openssl_basedir="`echo ${with_openssl_path} | sed 's/\/$//'`"
+-else
+-    for dirs in /usr/local/ssl /usr/pkg /usr/local /usr/local/openssl; do
+-    if test -f "${dirs}/include/openssl/opensslv.h" && test -f "${dirs}/lib/libssl.so"; then
+-      cf_openssl_basedir="${dirs}"
+-      break
+-    fi
+-  done
+-  unset dirs
+-fi
+-if test ! -z "$cf_openssl_basedir"; then
+-  if test -f "${cf_openssl_basedir}/include/openssl/opensslv.h" && test -f "${cf_openssl_basedir}/lib/libssl.so"; then
+-    SSL_INCLUDES="-I${cf_openssl_basedir}/include"
+-    SSL_LIBS="-L${cf_openssl_basedir}/lib"
+-  else
+-        cf_openssl_basedir=""
+-  fi
+-else
+-    if test -f "/usr/include/openssl/opensslv.h" ; then
+-    cf_openssl_basedir="/usr"
+-  fi
+-fi
+-
+-if test ! -z "$cf_openssl_basedir"; then
+-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cf_openssl_basedir" >&5
+-$as_echo "$cf_openssl_basedir" >&6; }
+-else
+-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+-$as_echo "not found" >&6; }
+-  as_fn_error 1 "OpenSSL is required." "$LINENO" 5
+-fi
+-unset cf_openssl_basedir
++SSL_INCLUDES="-I@openssl.dev@/include"
++SSL_LIBS="-L@openssl.out@/lib"
+ 
+ save_CXX="$CXX"
+ CXX="$CXX $SSL_INCLUDES"
diff --git a/nixpkgs/pkgs/applications/networking/irc/wraith/default.nix b/nixpkgs/pkgs/applications/networking/irc/wraith/default.nix
new file mode 100644
index 000000000000..add52d85d8b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/wraith/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchurl, openssl }:
+
+with stdenv;
+with stdenv.lib;
+
+mkDerivation rec {
+  name = "wraith-${version}";
+  version = "1.4.7";
+  src = fetchurl {
+    url = "mirror://sourceforge/wraithbotpack/wraith-v${version}.tar.gz";
+    sha256 = "0h6liac5y7im0jfm2sj18mibvib7d1l727fjs82irsjj1v9kif3j";
+  };
+  hardeningDisable = [ "format" ];
+  buildInputs = [ openssl ];
+  patches = [ ./configure.patch ./dlopen.patch ];
+  postPatch = ''
+    substituteInPlace configure        --subst-var-by openssl.dev ${openssl.dev} \
+                                       --subst-var-by openssl.out ${openssl.out}
+    substituteInPlace src/libssl.cc    --subst-var-by openssl ${openssl.out}
+    substituteInPlace src/libcrypto.cc --subst-var-by openssl ${openssl.out}
+  '';
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -a wraith $out/bin/wraith
+    ln -s wraith $out/bin/hub
+  '';
+
+  meta = {
+    description = "An IRC channel management bot written purely in C/C++";
+    longDescription = ''
+      Wraith is an IRC channel management bot written purely in C/C++. It has
+      been in development since late 2003. It is based on Eggdrop 1.6.12 but has
+      since evolved into something much different at its core. TCL and loadable
+      modules are currently not supported.
+
+      Maintainer's Notes:
+      Copy the binary out of the store before running it with the -C option to
+      configure it. See https://github.com/wraith/wraith/wiki/GettingStarted .
+
+      The binary will not run when moved onto non-NixOS systems; use patchelf
+      to fix its runtime dependenices.
+    '';
+    homepage = http://wraith.botpack.net/;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ elitak ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/irc/wraith/dlopen.patch b/nixpkgs/pkgs/applications/networking/irc/wraith/dlopen.patch
new file mode 100644
index 000000000000..bfc854ef9e9c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/irc/wraith/dlopen.patch
@@ -0,0 +1,48 @@
+diff --git a/src/libcrypto.cc b/src/libcrypto.cc
+index 0339258..68746c8 100644
+--- a/src/libcrypto.cc
++++ b/src/libcrypto.cc
+@@ -95,17 +95,9 @@ int load_libcrypto() {
+   }
+ 
+   sdprintf("Loading libcrypto");
++  dlerror(); // Clear Errors
++  libcrypto_handle = dlopen("@openssl@/lib/libcrypto.so", RTLD_LAZY|RTLD_GLOBAL);
+ 
+-  bd::Array<bd::String> libs_list(bd::String("libcrypto.so." SHLIB_VERSION_NUMBER " libcrypto.so libcrypto.so.0.9.8 libcrypto.so.7 libcrypto.so.6").split(' '));
+-
+-  for (size_t i = 0; i < libs_list.length(); ++i) {
+-    dlerror(); // Clear Errors
+-    libcrypto_handle = dlopen(bd::String(libs_list[i]).c_str(), RTLD_LAZY|RTLD_GLOBAL);
+-    if (libcrypto_handle) {
+-      sdprintf("Found libcrypto: %s", bd::String(libs_list[i]).c_str());
+-      break;
+-    }
+-  }
+   if (!libcrypto_handle) {
+     fprintf(stderr, STR("Unable to find libcrypto\n"));
+     return(1);
+diff --git a/src/libssl.cc b/src/libssl.cc
+index b432c7b..8940998 100644
+--- a/src/libssl.cc
++++ b/src/libssl.cc
+@@ -68,17 +68,9 @@ int load_libssl() {
+   }
+ 
+   sdprintf("Loading libssl");
++  dlerror(); // Clear Errors
++  libssl_handle = dlopen("@openssl@/lib/libssl.so", RTLD_LAZY);
+ 
+-  bd::Array<bd::String> libs_list(bd::String("libssl.so." SHLIB_VERSION_NUMBER " libssl.so libssl.so.0.9.8 libssl.so.7 libssl.so.6").split(' '));
+-
+-  for (size_t i = 0; i < libs_list.length(); ++i) {
+-    dlerror(); // Clear Errors
+-    libssl_handle = dlopen(bd::String(libs_list[i]).c_str(), RTLD_LAZY);
+-    if (libssl_handle) {
+-      sdprintf("Found libssl: %s", bd::String(libs_list[i]).c_str());
+-      break;
+-    }
+-  }
+   if (!libssl_handle) {
+     fprintf(stderr, STR("Unable to find libssl\n"));
+     return(1);
diff --git a/nixpkgs/pkgs/applications/networking/jmeter/default.nix b/nixpkgs/pkgs/applications/networking/jmeter/default.nix
new file mode 100644
index 000000000000..2019d9930ef0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/jmeter/default.nix
@@ -0,0 +1,60 @@
+{ fetchurl, stdenv, jre, makeWrapper, coreutils }:
+
+stdenv.mkDerivation rec {
+  name = "jmeter-${version}";
+  version = "4.0";
+  src = fetchurl {
+    url = "https://archive.apache.org/dist/jmeter/binaries/apache-${name}.tgz";
+    sha256 = "1dvngvi6j8qb6nmf5a3gpi5wxck4xisj41qkrj8sjwb1f8jq6nw4";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir $out
+
+    rm bin/*.bat bin/*.cmd
+
+    cp -R * $out/
+
+    substituteInPlace $out/bin/create-rmi-keystore.sh --replace \
+      "keytool -genkey" \
+      "${jre}/lib/openjdk/jre/bin/keytool -genkey"
+
+    # Prefix some scripts with jmeter to avoid clobbering the namespace
+    for i in heapdump.sh mirror-server mirror-server.sh shutdown.sh stoptest.sh create-rmi-keystore.sh; do
+      mv $out/bin/$i $out/bin/jmeter-$i
+      wrapProgram $out/bin/jmeter-$i \
+        --prefix PATH : "${jre}/bin"
+    done
+
+    wrapProgram $out/bin/jmeter --set JAVA_HOME "${jre}"
+    wrapProgram $out/bin/jmeter.sh --set JAVA_HOME "${jre}"
+  '';
+
+  doInstallCheck = true;
+
+  checkInputs = [ coreutils ];
+
+  installCheckPhase = ''
+    $out/bin/jmeter --version 2>&1 | grep -q "${version}"
+    $out/bin/jmeter-heapdump.sh > /dev/null
+    $out/bin/jmeter-shutdown.sh > /dev/null
+    $out/bin/jmeter-stoptest.sh > /dev/null
+    timeout --kill=1s 1s $out/bin/jmeter-mirror-server.sh || test "$?" = "124"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A 100% pure Java desktop application designed to load test functional behavior and measure performance";
+    longDescription = ''
+      The Apache JMeter desktop application is open source software, a 100%
+      pure Java application designed to load test functional behavior and
+      measure performance. It was originally designed for testing Web
+      Applications but has since expanded to other test functions.
+    '';
+    license = licenses.asl20;
+    maintainers = [ maintainers.garbas ];
+    priority = 1;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/jnetmap/default.nix b/nixpkgs/pkgs/applications/networking/jnetmap/default.nix
new file mode 100644
index 000000000000..af94db23c0ac
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/jnetmap/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "jnetmap-${version}";
+  version = "0.5.4";
+  
+  src = fetchurl {
+    url = "mirror://sourceforge/project/jnetmap/jNetMap%20${version}/jNetMap-${version}.jar";
+    sha256 = "0nxsfa600jhazwbabxmr9j37mhwysp0fyrvczhv3f1smiy8rjanl";
+  };
+
+  buildInputs = [ jre makeWrapper ];
+
+  unpackPhase = ":";
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    mkdir -p "$out/lib"
+
+    cp "${src}" "$out/lib/jnetmap.jar"
+    makeWrapper "${jre}/bin/java" "$out/bin/jnetmap" \
+        --add-flags "-jar \"$out/lib/jnetmap.jar\""
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Graphical network monitoring and documentation tool";
+    homepage = "http://www.rakudave.ch/jnetmap/";
+    license = licenses.gpl3Plus;
+    # Upstream supports macOS and Windows too.
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/linssid/0001-unbundled-qwt.patch b/nixpkgs/pkgs/applications/networking/linssid/0001-unbundled-qwt.patch
new file mode 100644
index 000000000000..46224ede33d4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/linssid/0001-unbundled-qwt.patch
@@ -0,0 +1,43 @@
+From e57f22a5089f194013534c9a9bbc42ee639297f1 Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel <ttuegel@gmail.com>
+Date: Sat, 19 Sep 2015 11:10:32 -0500
+Subject: [PATCH] unbundled qwt
+
+---
+ linssid-app/linssid-app.pro | 4 +---
+ linssid.pro                 | 4 +---
+ 2 files changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/linssid-app/linssid-app.pro b/linssid-app/linssid-app.pro
+index 26f61e7..7b80b60 100644
+--- a/linssid-app/linssid-app.pro
++++ b/linssid-app/linssid-app.pro
+@@ -19,13 +19,11 @@ QMAKE_CC = gcc
+ QMAKE_CXX = g++
+ DEFINES += 
+ INCLUDEPATH += /usr/include/qt5
+-# /usr/local/qwt-6.1.0/include
+-INCLUDEPATH += ../qwt-lib/src
+ # LIBS += /usr/lib/x86_64-linux-gnu/libboost_regex.a 
+ # LIBS += -lboost_regex
+ LIBS += -l:libboost_regex.a
+ # /usr/local/qwt-6.1.0/lib/libqwt.a
+-LIBS += ../qwt-lib/lib/libqwt.a
++LIBS += -lqwt
+ QMAKE_CXXFLAGS += -std=c++11
+ #
+ TARGET = linssid
+diff --git a/linssid.pro b/linssid.pro
+index 42dc277..26d1a2c 100644
+--- a/linssid.pro
++++ b/linssid.pro
+@@ -1,5 +1,3 @@
+ TEMPLATE = subdirs
+ CONFIG += ordered
+-SUBDIRS = qwt-lib \
+-          linssid-app
+-linssid-app.depends = qwt-lib
++SUBDIRS = linssid-app
+-- 
+2.5.2
+
diff --git a/nixpkgs/pkgs/applications/networking/linssid/default.nix b/nixpkgs/pkgs/applications/networking/linssid/default.nix
new file mode 100644
index 000000000000..be010c471790
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/linssid/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchurl, qtbase, qtsvg, qmake, pkgconfig, boost, wirelesstools, iw, qwt, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "linssid-${version}";
+  version = "2.7";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/project/linssid/LinSSID_${version}/linssid_${version}.orig.tar.gz";
+    sha256 = "13d35rlcjncd8lx3khkgn9x8is2xjd5fp6ns5xsn3w6l4xj9b4gl";
+  };
+
+  nativeBuildInputs = [ pkgconfig qmake makeWrapper ];
+  buildInputs = [ qtbase qtsvg boost qwt ];
+
+  patches = [ ./0001-unbundled-qwt.patch ];
+
+  postPatch = ''
+    sed -e "s|/usr/include/qt5.*$|& ${qwt}/include|" -i linssid-app/linssid-app.pro
+    sed -e "s|/usr/include/|/nonexistent/|g" -i linssid-app/*.pro
+    sed -e 's|^LIBS .*= .*libboost_regex.a|LIBS += -lboost_regex|' \
+        -e "s|/usr|$out|g" \
+        -i linssid-app/linssid-app.pro linssid-app/linssid.desktop
+    sed -e "s|\.\./\.\./\.\./\.\./usr|$out|g" -i linssid-app/*.ui
+
+    # Remove bundled qwt
+    rm -fr qwt-lib
+  '';
+
+  postInstall = ''
+    wrapProgram $out/bin/linssid \
+      --prefix QT_PLUGIN_PATH : ${qtbase}/${qtbase.qtPluginPrefix} \
+      --prefix PATH : ${stdenv.lib.makeBinPath [ wirelesstools iw ]}  
+      '';
+
+  meta = with stdenv.lib; {
+    description = "Graphical wireless scanning for Linux";
+    homepage = https://sourceforge.net/projects/linssid/;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/afew/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/afew/default.nix
new file mode 100644
index 000000000000..bdf39de0651c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/afew/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, pythonPackages, notmuch }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "afew";
+  version = "1.3.0";
+
+  src = pythonPackages.fetchPypi {
+    inherit pname version;
+    sha256 = "0105glmlkpkjqbz350dxxasvlfx9dk0him9vwbl86andzi106ygz";
+  };
+
+  nativeBuildInputs = with pythonPackages; [ sphinx setuptools_scm ];
+
+  propagatedBuildInputs = with pythonPackages; [
+    pythonPackages.notmuch chardet dkimpy
+  ] ++ stdenv.lib.optional (!pythonPackages.isPy3k) subprocess32;
+
+  postBuild =  ''
+    make -C docs man
+  '';
+
+  postInstall = ''
+    mandir="$out/share/man/man1"
+    mkdir -p "$mandir"
+    cp docs/build/man/* "$mandir"
+  '';
+
+  makeWrapperArgs = [
+    ''--prefix PATH ':' "${notmuch}/bin"''
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/afewmail/afew;
+    description = "An initial tagging script for notmuch mail";
+    license = licenses.isc;
+    maintainers = with maintainers; [ garbas andir flokli ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/alpine/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/alpine/default.nix
new file mode 100644
index 000000000000..bb62014c77a4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/alpine/default.nix
@@ -0,0 +1,33 @@
+{stdenv, fetchurl, ncurses, tcl, openssl, pam, kerberos
+, openldap
+}:
+
+# NOTE: Please check if any changes here are applicable to ../realpine/ as well
+stdenv.mkDerivation rec {
+  name = "alpine-${version}";
+  version = "2.21";
+
+  src = fetchurl {
+    url = "http://alpine.freeiz.com/alpine/release/src/${name}.tar.xz";
+    sha256 = "0f3llxrmaxw7w9w6aixh752md3cdc91mwfmbarkm8s413f4bcc30";
+  };
+
+  buildInputs = [
+    ncurses tcl openssl pam kerberos openldap
+  ];
+
+  hardeningDisable = [ "format" ];
+
+  configureFlags = [
+    "--with-ssl-include-dir=${openssl.dev}/include/openssl"
+    "--with-passfile=.pine-passfile"
+  ];
+
+  meta = {
+    description = "Console mail reader";
+    license = stdenv.lib.licenses.asl20;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = https://www.washington.edu/alpine/;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/astroid/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/astroid/default.nix
new file mode 100644
index 000000000000..41f3a271a699
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/astroid/default.nix
@@ -0,0 +1,48 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, gnome3, gmime3, webkitgtk
+, libsass, notmuch, boost, wrapGAppsHook, glib-networking, protobuf, vim_configurable
+, gtkmm3, libpeas, gsettings-desktop-schemas
+, makeWrapper, python3, python3Packages
+, vim ? vim_configurable.override {
+                    features = "normal";
+                    gui = "auto";
+                  }
+, ronn
+}:
+
+stdenv.mkDerivation rec {
+  name = "astroid-${version}";
+  version = "0.14";
+
+  src = fetchFromGitHub {
+    owner = "astroidmail";
+    repo = "astroid";
+    rev = "v${version}";
+    sha256 = "1wkv1icsx3g3gq485dnvcdhr9srrjgz4ws1i1krcw9n61bj7gxh8";
+  };
+
+  nativeBuildInputs = [ cmake ronn pkgconfig wrapGAppsHook ];
+
+  buildInputs = [
+    gtkmm3 gmime3 webkitgtk libsass libpeas
+    python3 python3Packages.pygobject3
+    notmuch boost gsettings-desktop-schemas gnome3.adwaita-icon-theme
+    glib-networking protobuf
+   ] ++ (if vim == null then [] else [ vim ]);
+
+  postPatch = ''
+    sed -i "s~gvim ~${vim}/bin/vim -g ~g" src/config.cc
+    sed -i "s~ -geom 10x10~~g" src/config.cc
+  '';
+
+  postInstall = ''
+    wrapProgram "$out/bin/astroid" --set CHARSET=en_us.UTF-8
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://astroidmail.github.io/;
+    description = "GTK+ frontend to the notmuch mail system";
+    maintainers = with maintainers; [ bdimcheff SuprDewd ];
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/balsa/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/balsa/default.nix
new file mode 100644
index 000000000000..f7f34a671837
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/balsa/default.nix
@@ -0,0 +1,62 @@
+{ stdenv, fetchurl, pkgconfig, intltool, glib, gtk3, gmime, gnutls,
+  webkitgtk, libesmtp, openssl, libnotify, gtkspell3, gpgme,
+  libcanberra-gtk3, libsecret, gtksourceview, gobject-introspection,
+  hicolor-icon-theme, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  name = "balsa-${version}";
+  version = "2.5.6";
+
+  src = fetchurl {
+    url = "https://pawsa.fedorapeople.org/balsa/${name}.tar.bz2";
+    sha256 = "17k6wcsl8gki7cskr3hhmfj6n54rha8ca3b6fzd8blsl5shsankx";
+  };
+
+  nativeBuildInputs = [
+    pkgconfig
+    intltool
+    gobject-introspection
+    hicolor-icon-theme
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    gmime
+    gnutls
+    webkitgtk
+    openssl
+    libnotify
+    gtkspell3
+    gpgme
+    libcanberra-gtk3
+    gtksourceview
+    libsecret
+    libesmtp
+  ];
+
+  configureFlags = [
+    "--with-canberra"
+    "--with-gpgme"
+    "--with-gtksourceview"
+    "--with-libsecret"
+    "--with-ssl"
+    "--with-unique"
+    "--without-gnome"
+    "--with-spell-checker=gtkspell"
+  ];
+
+  NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = http://pawsa.fedorapeople.org/balsa/;
+    description = "An e-mail client for GNOME";
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.romildo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix
new file mode 100644
index 000000000000..42f29574eef3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/default.nix
@@ -0,0 +1,116 @@
+{ config, fetchurl, stdenv, wrapGAppsHook, autoreconfHook
+, curl, dbus, dbus-glib, enchant, gtk2, gnutls, gnupg, gpgme, hicolor-icon-theme
+, libarchive, libcanberra-gtk2, libetpan, libnotify, libsoup, libxml2, networkmanager
+, openldap, perl, pkgconfig, poppler, python, shared-mime-info, webkitgtk24x-gtk2
+, glib-networking, gsettings-desktop-schemas, libSM, libytnef, libical 
+# Build options
+# TODO: A flag to build the manual.
+# TODO: Plugins that complain about their missing dependencies, even when
+#       provided:
+#         gdata requires libgdata
+#         geolocation requires libchamplain
+, enableLdap ? false
+, enableNetworkManager ? config.networking.networkmanager.enable or false
+, enablePgp ? true
+, enablePluginArchive ? false
+, enablePluginFancy ? false
+, enablePluginNotificationDialogs ? true
+, enablePluginNotificationSounds ? true
+, enablePluginPdf ? false
+, enablePluginPython ? false
+, enablePluginRavatar ? false
+, enablePluginRssyl ? false
+, enablePluginSmime ? false
+, enablePluginSpamassassin ? false
+, enablePluginSpamReport ? false
+, enablePluginVcalendar ? false
+, enableSpellcheck ? false
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "claws-mail-${version}";
+  version = "3.17.3";
+
+  src = fetchurl {
+    url = "http://www.claws-mail.org/download.php?file=releases/claws-mail-${version}.tar.xz";
+    sha256 = "1wnj6c9cbmhphs2l6wfvndkk2g08rmxw0sl2c8k1k008dxd1ykjh";
+  };
+
+  outputs = [ "out" "dev" ];
+
+  patches = [ ./mime.patch ];
+
+  preConfigure = ''
+    # autotools check tries to dlopen libpython as a requirement for the python plugin
+    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${python}/lib
+  '';
+
+  postPatch = ''
+    substituteInPlace src/procmime.c \
+        --subst-var-by MIMEROOTDIR ${shared-mime-info}/share
+  '';
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig wrapGAppsHook python.pkgs.wrapPython ];
+  propagatedBuildInputs = with python.pkgs; [ python ] ++ optionals enablePluginPython [ pygtk pygobject2 ];
+
+  buildInputs =
+    [ curl dbus dbus-glib gtk2 gnutls gsettings-desktop-schemas hicolor-icon-theme
+      libetpan perl glib-networking libSM libytnef
+    ]
+    ++ optional enableSpellcheck enchant
+    ++ optionals (enablePgp || enablePluginSmime) [ gnupg gpgme ]
+    ++ optional enablePluginArchive libarchive
+    ++ optional enablePluginNotificationSounds libcanberra-gtk2
+    ++ optional enablePluginNotificationDialogs libnotify
+    ++ optional enablePluginFancy libsoup
+    ++ optional enablePluginRssyl libxml2
+    ++ optional enableNetworkManager networkmanager
+    ++ optional enableLdap openldap
+    ++ optional enablePluginPdf poppler
+    ++ optional enablePluginFancy webkitgtk24x-gtk2
+    ++ optional enablePluginVcalendar libical;
+
+  configureFlags =
+    optional (!enableLdap) "--disable-ldap"
+    ++ optional (!enableNetworkManager) "--disable-networkmanager"
+    ++ optionals (!enablePgp) [
+      "--disable-pgpcore-plugin"
+      "--disable-pgpinline-plugin"
+      "--disable-pgpmime-plugin"
+    ]
+    ++ optional (!enablePluginArchive) "--disable-archive-plugin"
+    ++ optional (!enablePluginFancy) "--disable-fancy-plugin"
+    ++ optional (!enablePluginPdf) "--disable-pdf_viewer-plugin"
+    ++ optional (!enablePluginPython) "--disable-python-plugin"
+    ++ optional (!enablePluginRavatar) "--disable-libravatar-plugin"
+    ++ optional (!enablePluginRssyl) "--disable-rssyl-plugin"
+    ++ optional (!enablePluginSmime) "--disable-smime-plugin"
+    ++ optional (!enablePluginSpamassassin) "--disable-spamassassin-plugin"
+    ++ optional (!enablePluginSpamReport) "--disable-spam_report-plugin"
+    ++ optional (!enablePluginVcalendar) "--disable-vcalendar-plugin"
+    ++ optional (!enableSpellcheck) "--disable-enchant";
+
+  enableParallelBuilding = true;
+
+  pythonPath = with python.pkgs; [ pygobject2 pygtk ];
+
+  preFixup = ''
+    buildPythonPath "$out $pythonPath"
+    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "${shared-mime-info}/share" --prefix PYTHONPATH : "$program_PYTHONPATH")
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share/applications
+    cp claws-mail.desktop $out/share/applications
+  '';
+
+  meta = {
+    description = "The user-friendly, lightweight, and fast email client";
+    homepage = https://www.claws-mail.org/;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ fpletz globin ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/mime.patch b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/mime.patch
new file mode 100644
index 000000000000..2ff4269c3329
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/claws-mail/mime.patch
@@ -0,0 +1,28 @@
+diff --git a/src/procmime.c b/src/procmime.c
+index bd3239e..06a3b26 100644
+--- a/src/procmime.c
++++ b/src/procmime.c
+@@ -1144,20 +1144,16 @@ GList *procmime_get_mime_type_list(void)
+ 	MimeType *mime_type;
+ 	gboolean fp_is_glob_file = TRUE;
+ 
+ 	if (mime_type_list) 
+ 		return mime_type_list;
+-	
+-#if defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__)
+-	if ((fp = claws_fopen(DATAROOTDIR "/mime/globs", "rb")) == NULL) 
+-#else
+-	if ((fp = claws_fopen("/usr/share/mime/globs", "rb")) == NULL) 
+-#endif
++
++	if ((fp = claws_fopen("@MIMEROOTDIR@/mime/globs", "rb")) == NULL)
+ 	{
+ 		fp_is_glob_file = FALSE;
+ 		if ((fp = claws_fopen("/etc/mime.types", "rb")) == NULL) {
+ 			if ((fp = claws_fopen(SYSCONFDIR "/mime.types", "rb")) 
+ 				== NULL) {
+ 				FILE_OP_ERROR(SYSCONFDIR "/mime.types", 
+ 					"claws_fopen");
+ 				return NULL;
+ 			}
+
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/imapfilter.nix b/nixpkgs/pkgs/applications/networking/mailreaders/imapfilter.nix
new file mode 100644
index 000000000000..e5a919af2e6f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/imapfilter.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchFromGitHub, openssl, lua, pcre }:
+
+stdenv.mkDerivation rec {
+  name = "imapfilter-${version}";
+  version = "2.6.12";
+
+  src = fetchFromGitHub {
+    owner = "lefcha";
+    repo = "imapfilter";
+    rev = "v${version}";
+    sha256 = "0vzpc54fjf5vb5vx5w0fl20xvx1k9cg6a3hbl86mm8kwsqf3wrab";
+  };
+
+  makeFlagsArray = "PREFIX=$(out)";
+  propagatedBuildInputs = [ openssl pcre lua ];
+
+  meta = {
+    homepage = https://github.com/lefcha/imapfilter;
+    description = "Mail filtering utility";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ fuuzetsu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/inboxer/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/inboxer/default.nix
new file mode 100644
index 000000000000..72b9ce09d76d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/inboxer/default.nix
@@ -0,0 +1,87 @@
+{ stdenv, fetchurl, binutils, patchelf, makeWrapper
+, expat, xorg, gdk_pixbuf, glib, gnome2, cairo, atk, freetype
+, fontconfig, dbus, nss, nspr, gtk2-x11, alsaLib, cups, libpulseaudio, udev }:
+
+stdenv.mkDerivation rec {
+  name = "inboxer-${version}";
+  version = "1.2.1";
+
+  meta = with stdenv.lib; {
+    description = "Unofficial, free and open-source Google Inbox Desktop App";
+    homepage    = "https://denysdovhan.com/inboxer";
+    maintainers = [ maintainers.mgttlinger ];
+    license     = licenses.mit;
+    platforms   = [ "x86_64-linux" ];
+  };
+
+  src = fetchurl {
+    url = "https://github.com/denysdovhan/inboxer/releases/download/v${version}/inboxer_${version}_amd64.deb";
+    sha256 = "0nyxas07d6ckgjazxapmc6iyakd2cddla6wflr5rhfp78d7kax3a";
+  };
+
+  unpackPhase = ''
+    ar p $src data.tar.xz | tar xJ
+  '';
+  nativeBuildInputs = [ patchelf makeWrapper ];
+  buildInputs = [ binutils ];
+
+  preFixup = with stdenv.lib; let
+    lpath = makeLibraryPath [
+      alsaLib
+      atk
+      cairo
+      cups
+      dbus
+      nss
+      nspr
+      freetype
+      fontconfig
+      gtk2-x11
+      xorg.libX11
+      xorg.libXcursor
+      xorg.libXdamage
+      xorg.libXi
+      xorg.libXext
+      xorg.libXfixes
+      xorg.libXrandr
+      xorg.libXrender
+      xorg.libXcomposite
+      xorg.libXtst
+      xorg.libXScrnSaver
+      xorg.libxcb
+      gdk_pixbuf
+      glib
+      gnome2.pango
+      gnome2.GConf
+      expat
+      stdenv.cc.cc.lib
+      libpulseaudio
+      udev
+    ];
+  in ''
+    patchelf \
+      --set-rpath "$out/opt/Inboxer:${lpath}" \
+      $out/opt/Inboxer/libnode.so
+    patchelf \
+      --set-rpath "$out/opt/Inboxer:${lpath}" \
+      $out/opt/Inboxer/libffmpeg.so
+
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "$out/opt/Inboxer:${lpath}" \
+      $out/opt/Inboxer/inboxer
+
+    wrapProgram $out/opt/Inboxer/inboxer --set LD_LIBRARY_PATH "${xorg.libxkbfile}/lib:${lpath}"
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -R usr/share opt $out/
+    # fix the path in the desktop file
+    substituteInPlace \
+      $out/share/applications/inboxer.desktop \
+      --replace /opt/ $out/opt/
+    # symlink the binary to bin/
+    ln -s $out/opt/Inboxer/inboxer $out/bin/inboxer
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/lumail/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/lumail/default.nix
new file mode 100644
index 000000000000..79deab46912b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/lumail/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, fetchurl, pkgconfig, lua, file, ncurses, gmime, pcre-cpp
+, perl, perlPackages, makeWrapper
+, debugBuild ? false
+, alternativeGlobalConfigFilePath ? null
+}:
+
+let
+  version    = "3.1";
+  binaryName = if debugBuild then "lumail2-debug" else "lumail2";
+  alternativeConfig = builtins.toFile "lumail2.lua"
+    (builtins.readFile alternativeGlobalConfigFilePath);
+
+  globalConfig = if isNull alternativeGlobalConfigFilePath then ''
+    mkdir -p $out/etc/lumail2
+    cp global.config.lua $out/etc/lumail2.lua
+    for n in ./lib/*.lua; do
+      cp "$n" $out/etc/lumail2/
+    done
+  '' else ''
+    ln -s ${alternativeConfig} $out/etc/lumail2.lua
+  '';
+
+  getPath  = type : "${lua}/lib/?.${type};";
+  luaPath  = getPath "lua";
+  luaCPath = getPath "so";
+in
+stdenv.mkDerivation {
+  name = "lumail-${version}";
+
+  src = fetchurl {
+    url = "https://lumail.org/download/lumail-${version}.tar.gz";
+    sha256 = "0vj7p7f02m3w8wb74ilajcwznc4ai4h2ikkz9ildy0c00aqsi5w4";
+  };
+
+  enableParallelBuilding = true;
+
+  nativeBuildInputs = [ pkgconfig makeWrapper ];
+  buildInputs = [
+    lua file ncurses gmime pcre-cpp
+    perl perlPackages.JSON perlPackages.NetIMAPClient
+  ];
+
+  preConfigure = ''
+    sed -e 's|"/etc/lumail2|LUMAIL_LUAPATH"/..|' -i src/lumail2.cc src/imap_proxy.cc
+
+    perlFlags=
+    for i in $(IFS=:; echo $PERL5LIB); do
+        perlFlags="$perlFlags -I$i"
+    done
+
+    sed -e "s|^#\!\(.*/perl.*\)$|#\!\1$perlFlags|" -i perl.d/imap-proxy
+  '';
+
+  buildFlags = if debugBuild then "lumail2-debug" else "";
+
+  installPhase = ''
+    mkdir -p $out/bin || true
+    install -m755 ${binaryName} $out/bin/
+  ''
+  + globalConfig
+  + ''
+    wrapProgram $out/bin/${binaryName} \
+        --prefix LUA_PATH : "${luaPath}" \
+        --prefix LUA_CPATH : "${luaCPath}"
+  '';
+
+  makeFlags = [
+    "LVER=lua"
+    "PREFIX=$(out)"
+    "SYSCONFDIR=$(out)/etc"
+    "LUMAIL_LIBS=$(out)/etc/lumail2"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Console-based email client";
+    homepage = https://lumail.org/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [orivej];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/default.nix
new file mode 100644
index 000000000000..05e784856554
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "mailcheck-${version}";
+  version = "1.91.2";
+
+  patches = [ ./mailcheck-Makefile.patch ];
+
+  src = fetchurl {
+    url = "mirror://sourceforge/mailcheck/mailcheck_${version}.tar.gz";
+    sha256 = "0p0azaxsnjvjbg41ycicc1i0kzw6jiynq8k49cfkdhlckxfdm9kc";
+  };
+
+  meta = {
+    description = "Simple command line tool to check for new messages";
+    homepage    = http://mailcheck.sourceforge.net/;
+    license     = stdenv.lib.licenses.gpl2;
+    maintainers = with stdenv.lib.maintainers; [ kovirobi ];
+    platforms   = stdenv.lib.platforms.linux;
+    inherit version;
+
+    longDescription = ''
+      A simple command line tool to check for new mail in local mbox and
+      maildir and remote POP3 and IMAP mailboxes.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/mailcheck-Makefile.patch b/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/mailcheck-Makefile.patch
new file mode 100644
index 000000000000..46b3bff4f7a9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mailcheck/mailcheck-Makefile.patch
@@ -0,0 +1,22 @@
+diff -u a/Makefile b/Makefile
+--- a/Makefile	2015-04-05 19:31:41.871227295 +0100
++++ b/Makefile	2015-04-05 19:42:49.743517508 +0100
+@@ -1,3 +1,5 @@
++prefix=$(out)
++
+ all: mailcheck
+ 
+ debug: mailcheck.c netrc.c netrc.h socket.c
+@@ -7,8 +9,10 @@
+ 	$(CC) -Wall -O2 mailcheck.c netrc.c socket.c -s -o mailcheck
+ 
+ install: mailcheck
+-	install mailcheck $(prefix)/usr/bin
+-	install -m 644 mailcheckrc $(prefix)/etc
++	[ -d $(prefix)/bin ] || mkdir $(prefix)/bin
++	[ -d $(prefix)/etc ] || mkdir $(prefix)/etc
++	install mailcheck $(prefix)/bin/
++	install -m 644 mailcheckrc $(prefix)/etc/
+ 
+ distclean: clean
+ 
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mailnag/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mailnag/default.nix
new file mode 100644
index 000000000000..8a16aeb55182
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mailnag/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, gettext, gtk3, pythonPackages
+, gdk_pixbuf, libnotify, gst_all_1
+, libgnome-keyring3
+, wrapGAppsHook, gnome3
+# otherwise passwords are stored unencrypted
+, withGnomeKeyring ? true
+}:
+
+let
+  inherit (pythonPackages) python;
+in pythonPackages.buildPythonApplication rec {
+  name = "mailnag-${version}";
+  version = "1.2.1";
+
+  src = fetchurl {
+    url = "https://github.com/pulb/mailnag/archive/v${version}.tar.gz";
+    sha256 = "ec7ac027d93bc7d88fc270858f5a181453a6ff07f43cab20563d185818801fee";
+  };
+
+  buildInputs = [
+    gtk3 gdk_pixbuf libnotify gst_all_1.gstreamer
+    gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good
+    gst_all_1.gst-plugins-bad
+    gnome3.adwaita-icon-theme
+  ] ++ stdenv.lib.optional withGnomeKeyring libgnome-keyring3;
+
+  nativeBuildInputs = [
+    gettext
+    wrapGAppsHook
+  ];
+
+  propagatedBuildInputs = with pythonPackages; [
+    pygobject3 dbus-python pyxdg
+  ];
+
+  buildPhase = "";
+
+  installPhase = "${python}/bin/python setup.py install --prefix=$out";
+
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "An extensible mail notification daemon";
+    homepage = https://github.com/pulb/mailnag;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mailpile/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mailpile/default.nix
new file mode 100644
index 000000000000..0f11d9a6df05
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mailpile/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchFromGitHub, python2Packages, gnupg1orig, openssl, git }:
+
+python2Packages.buildPythonApplication rec {
+  name = "mailpile-${version}";
+  version = "1.0.0rc2";
+
+  src = fetchFromGitHub {
+    owner = "mailpile";
+    repo = "Mailpile";
+    rev = "${version}";
+    sha256 = "1z5psh00fjr8gnl4yjcl4m9ywfj24y1ffa2rfb5q8hq4ksjblbdj";
+  };
+
+  postPatch = ''
+    patchShebangs scripts
+  '';
+
+  nativeBuildInputs = with python2Packages; [ pbr git ];
+  PBR_VERSION=version;
+
+  propagatedBuildInputs = with python2Packages; [
+    appdirs
+    cryptography
+    fasteners
+    gnupg1orig
+    jinja2
+    pgpdump
+    pillow
+    python2Packages.lxml
+    spambayes
+  ];
+
+  postInstall = ''
+    wrapProgram $out/bin/mailpile \
+      --prefix PATH ":" "${stdenv.lib.makeBinPath [ gnupg1orig openssl ]}" \
+      --set-default MAILPILE_SHARED "$out/share/mailpile"
+  '';
+
+  # No tests were found
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "A modern, fast web-mail client with user-friendly encryption and privacy features";
+    homepage = https://www.mailpile.is/;
+    license = [ licenses.asl20 licenses.agpl3 ];
+    platforms = platforms.linux;
+    maintainers = [ maintainers.domenkozar ];
+    knownVulnerabilities = [
+      "Numerous and uncounted, upstream has requested we not package it. See more: https://github.com/NixOS/nixpkgs/pull/23058#issuecomment-283515104"
+    ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mblaze/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mblaze/default.nix
new file mode 100644
index 000000000000..6356fcfc2094
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mblaze/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, libiconv }:
+
+stdenv.mkDerivation rec {
+  name = "mblaze-${version}";
+  version = "0.5";
+
+  buildInputs = stdenv.lib.optionals stdenv.isDarwin [ libiconv ];
+
+  src = fetchFromGitHub {
+    owner = "chneukirchen";
+    repo = "mblaze";
+    rev = "v${version}";
+    sha256 = "0fyvydafpz7vmwgn7hc4drm9sb7367smrd07wfyizpas0gmxw2j8";
+  };
+
+  makeFlags = "PREFIX=$(out)";
+
+  postInstall = ''
+    install -Dm644 -t $out/share/zsh/site-functions contrib/_mblaze
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/chneukirchen/mblaze;
+    description = "Unix utilities to deal with Maildir";
+    license = licenses.cc0;
+    platforms = platforms.all;
+    maintainers = [ maintainers.ajgrf ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/msgviewer/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/msgviewer/default.nix
new file mode 100644
index 000000000000..88e573f6cf42
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/msgviewer/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, fetchurl, makeWrapper, unzip, jre, runtimeShell }:
+
+let
+  version = "1.9";
+  name = "msgviewer-${version}";
+  uname = "MSGViewer-${version}";
+
+in stdenv.mkDerivation rec {
+  inherit name;
+
+  src = fetchurl {
+    url    = "mirror://sourceforge/msgviewer/${uname}/${uname}.zip";
+    sha256 = "0igmr8c0757xsc94xlv2470zv2mz57zaj52dwr9wj8agmj23jbjz";
+  };
+
+  buildCommand = ''
+    dir=$out/lib/msgviewer
+    mkdir -p $out/bin $dir
+    unzip $src -d $dir
+    mv $dir/${uname}/* $dir
+    rmdir $dir/${uname}
+    cat <<_EOF > $out/bin/msgviewer
+    #!${runtimeShell} -eu
+    exec ${stdenv.lib.getBin jre}/bin/java -jar $dir/MSGViewer.jar "\$@"
+    _EOF
+    chmod 755 $out/bin/msgviewer
+  '';
+
+  nativeBuildInputs = [ makeWrapper unzip ];
+
+  meta = with stdenv.lib; {
+    description = "Viewer for .msg files (MS Outlook)";
+    homepage    = https://www.washington.edu/alpine/;
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms   = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/mutt/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/mutt/default.nix
new file mode 100644
index 000000000000..dde0d480391b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/mutt/default.nix
@@ -0,0 +1,96 @@
+{ stdenv, fetchurl, fetchpatch, ncurses, which, perl
+, gdbm ? null
+, openssl ? null
+, cyrus_sasl ? null
+, gnupg ? null
+, gpgme ? null
+, kerberos ? null
+, headerCache  ? true
+, sslSupport   ? true
+, saslSupport  ? true
+, smimeSupport ? false
+, gpgSupport   ? false
+, gpgmeSupport ? true
+, imapSupport  ? true
+, withSidebar  ? true
+, gssSupport   ? true
+}:
+
+assert headerCache  -> gdbm       != null;
+assert sslSupport   -> openssl    != null;
+assert saslSupport  -> cyrus_sasl != null;
+assert smimeSupport -> openssl    != null;
+assert gpgSupport   -> gnupg      != null;
+assert gpgmeSupport -> gpgme      != null && openssl != null;
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "mutt-${version}";
+  version = "1.11.3";
+
+  src = fetchurl {
+    url = "http://ftp.mutt.org/pub/mutt/${name}.tar.gz";
+    sha256 = "0h8rmcc62n1pagm7mjjccd5fxyhhi4vbvp8m88digkdf5z0g8hm5";
+  };
+
+  patches = optional smimeSupport (fetchpatch {
+    url = "https://salsa.debian.org/mutt-team/mutt/raw/debian/1.11.2-2/debian/patches/misc/smime.rc.patch";
+    sha256 = "1rl27qqwl4nw321ll5jcvfmkmz4fkvcsh5vihjcrhzzyf6vz8wmj";
+  });
+
+  buildInputs =
+    [ ncurses which perl ]
+    ++ optional headerCache  gdbm
+    ++ optional sslSupport   openssl
+    ++ optional gssSupport   kerberos
+    ++ optional saslSupport  cyrus_sasl
+    ++ optional gpgmeSupport gpgme;
+
+  configureFlags = [
+    (enableFeature headerCache  "hcache")
+    (enableFeature gpgmeSupport "gpgme")
+    (enableFeature imapSupport  "imap")
+    (enableFeature withSidebar  "sidebar")
+    "--enable-smtp"
+    "--enable-pop"
+    "--with-mailpath="
+
+    # Look in $PATH at runtime, instead of hardcoding /usr/bin/sendmail
+    "ac_cv_path_SENDMAIL=sendmail"
+
+    # This allows calls with "-d N", that output debug info into ~/.muttdebug*
+    "--enable-debug"
+
+    # The next allows building mutt without having anything setgid
+    # set by the installer, and removing the need for the group 'mail'
+    # I set the value 'mailbox' because it is a default in the configure script
+    "--with-homespool=mailbox"
+  ] ++ optional sslSupport  "--with-ssl"
+    ++ optional gssSupport  "--with-gss"
+    ++ optional saslSupport "--with-sasl";
+
+  postPatch = optionalString (smimeSupport || gpgmeSupport) ''
+    sed -i 's#/usr/bin/openssl#${openssl}/bin/openssl#' smime_keys.pl
+  '';
+
+  postInstall = optionalString smimeSupport ''
+    # S/MIME setup
+    cp contrib/smime.rc $out/etc/smime.rc
+    sed -i 's#openssl#${openssl}/bin/openssl#' $out/etc/smime.rc
+    echo "source $out/etc/smime.rc" >> $out/etc/Muttrc
+  '' + optionalString gpgSupport ''
+    # GnuPG setup
+    cp contrib/gpg.rc $out/etc/gpg.rc
+    sed -i 's#\(command="\)gpg #\1${gnupg}/bin/gpg #' $out/etc/gpg.rc
+    echo "source $out/etc/gpg.rc" >> $out/etc/Muttrc
+  '';
+
+  meta = {
+    description = "A small but very powerful text-based mail client";
+    homepage = http://www.mutt.org;
+    license = licenses.gpl2Plus;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ the-kenny rnhmjoj ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/neomutt/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/neomutt/default.nix
new file mode 100644
index 000000000000..0da451ed51e2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/neomutt/default.nix
@@ -0,0 +1,98 @@
+{ stdenv, fetchFromGitHub, gettext, makeWrapper, tcl, which, writeScript
+, ncurses, perl , cyrus_sasl, gss, gpgme, kerberos, libidn, libxml2, notmuch, openssl
+, lmdb, libxslt, docbook_xsl, docbook_xml_dtd_42, mailcap, runtimeShell
+}:
+
+let
+  muttWrapper = writeScript "mutt" ''
+    #!${runtimeShell} -eu
+
+    echo 'The neomutt project has renamed the main binary from `mutt` to `neomutt`.'
+    echo ""
+    echo 'This wrapper is provided for compatibility purposes only. You should start calling `neomutt` instead.'
+    echo ""
+    read -p 'Press any key to launch NeoMutt...' -n1 -s
+    exec neomutt "$@"
+  '';
+
+in stdenv.mkDerivation rec {
+  version = "20180716";
+  name = "neomutt-${version}";
+
+  src = fetchFromGitHub {
+    owner  = "neomutt";
+    repo   = "neomutt";
+    rev    = "neomutt-${version}";
+    sha256 = "0im2kkahkr04q04irvcimfawxi531ld6wrsa92r2m7l10gmijkl8";
+  };
+
+  buildInputs = [
+    cyrus_sasl gss gpgme kerberos libidn ncurses
+    notmuch openssl perl lmdb
+    mailcap
+  ];
+
+  nativeBuildInputs = [
+    docbook_xsl docbook_xml_dtd_42 gettext libxml2 libxslt.bin makeWrapper tcl which
+  ];
+
+  enableParallelBuilding = true;
+
+  postPatch = ''
+    substituteInPlace contrib/smime_keys \
+      --replace /usr/bin/openssl ${openssl}/bin/openssl
+
+    for f in doc/*.{xml,xsl}*  ; do
+      substituteInPlace $f \
+        --replace http://docbook.sourceforge.net/release/xsl/current     ${docbook_xsl}/share/xml/docbook-xsl \
+        --replace http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd ${docbook_xml_dtd_42}/xml/dtd/docbook/docbookx.dtd
+    done
+
+
+    # allow neomutt to map attachments to their proper mime.types if specified wrongly
+    # and use a far more comprehensive list than the one shipped with neomutt
+    substituteInPlace sendlib.c \
+      --replace /etc/mime.types ${mailcap}/etc/mime.types
+
+    # The string conversion tests all fail with the first version of neomutt
+    # that has tests (20180223) as well as 20180716 so we disable them for now.
+    # I don't know if that is related to the tests or our build environment.
+    # Try again with a later release.
+    sed -i '/rfc2047/d' test/Makefile.autosetup test/main.c
+  '';
+
+  configureFlags = [
+    "--gpgme"
+    "--gss"
+    "--lmdb"
+    "--notmuch"
+    "--ssl"
+    "--sasl"
+    "--with-homespool=mailbox"
+    "--with-mailpath="
+    # Look in $PATH at runtime, instead of hardcoding /usr/bin/sendmail
+    "ac_cv_path_SENDMAIL=sendmail"
+  ];
+
+  # Fix missing libidn in mutt;
+  # this fix is ugly since it links all binaries in mutt against libidn
+  # like pgpring, pgpewrap, ...
+  NIX_LDFLAGS = "-lidn";
+
+  postInstall = ''
+    cp ${muttWrapper} $out/bin/mutt
+    wrapProgram "$out/bin/neomutt" --prefix PATH : "$out/libexec/neomutt"
+  '';
+
+  doCheck = true;
+
+  checkTarget = "test";
+
+  meta = with stdenv.lib; {
+    description = "A small but very powerful text-based mail client";
+    homepage    = http://www.neomutt.org;
+    license     = licenses.gpl2Plus;
+    maintainers = with maintainers; [ cstrahan erikryb jfrankenau vrthra ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notbit/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notbit/default.nix
new file mode 100644
index 000000000000..3e235400498f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notbit/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig,
+  gettext, openssl
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "notbit-${version}";
+  version = "2018-01-09";
+
+  src = fetchFromGitHub {
+    owner  = "bpeel";
+    repo   = "notbit";
+    rev    = "8b5d3d2da8ce54abae2536b4d97641d2c798cff3";
+    sha256 = "1623n0lvx42mamvb2vwin5i38hh0nxpxzmkr5188ss2x7m20lmii";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  buildInputs = [ openssl gettext ];
+
+  meta = {
+    description = "A minimal Bitmessage client";
+    homepage = https://github.com/bpeel/notbit;
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ mog ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-addrlookup/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-addrlookup/default.nix
new file mode 100644
index 000000000000..c2cce227576a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-addrlookup/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, pkgconfig, glib, notmuch }:
+
+let
+  version = "9";
+in
+stdenv.mkDerivation rec {
+  name = "notmuch-addrlookup-${version}";
+
+  src = fetchFromGitHub {
+    owner = "aperezdc";
+    repo = "notmuch-addrlookup-c";
+    rev ="v${version}";
+    sha256 = "1j3zdx161i1x4w0nic14ix5i8hd501rb31daf8api0k8855sx4rc";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib notmuch ];
+
+  installPhase = "install -D notmuch-addrlookup $out/bin/notmuch-addrlookup";
+
+  meta = with stdenv.lib; {
+    description = "Address lookup tool for Notmuch in C";
+    homepage = https://github.com/aperezdc/notmuch-addrlookup-c;
+    maintainers = with maintainers; [ mog garbas ];
+    platforms = platforms.unix;
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-bower/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-bower/default.nix
new file mode 100644
index 000000000000..e2b56f3b8afd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch-bower/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, gawk, mercury, pandoc, ncurses, gpgme }:
+
+stdenv.mkDerivation rec {
+  name = "notmuch-bower-${version}";
+  version = "0.10";
+
+  src = fetchFromGitHub {
+    owner = "wangp";
+    repo = "bower";
+    rev = version;
+    sha256 = "0jpaxlfxz7mj76z3cyj8sq053p0mkp46kaw05nimzwaq5yx923fv";
+  };
+
+  nativeBuildInputs = [ gawk mercury pandoc ];
+
+  buildInputs = [ ncurses gpgme ];
+
+  makeFlags = [ "PARALLEL=-j$(NIX_BUILD_CORES)" "bower" "man" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    mv bower $out/bin/
+    mkdir -p $out/share/man/man1
+    mv bower.1 $out/share/man/man1/
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/wangp/bower;
+    description = "A curses terminal client for the Notmuch email system";
+    maintainers = with maintainers; [ erictapen ];
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/default.nix
new file mode 100644
index 000000000000..305535029c28
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/default.nix
@@ -0,0 +1,89 @@
+{ fetchurl, stdenv
+, pkgconfig, gnupg
+, xapian, gmime, talloc, zlib
+, doxygen, perl
+, pythonPackages
+, bash-completion
+, emacs
+, ruby
+, which, dtach, openssl, bash, gdb, man
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  version = "0.28.3";
+  name = "notmuch-${version}";
+
+  passthru = {
+    pythonSourceRoot = "${name}/bindings/python";
+    inherit version;
+  };
+
+  src = fetchurl {
+    url = "https://notmuchmail.org/releases/${name}.tar.gz";
+    sha256 = "1v0ff6qqwj42p3n6qw30czzqi52nvgf3dn05vd7a03g39a5js8af";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    gnupg # undefined dependencies
+    xapian gmime talloc zlib  # dependencies described in INSTALL
+    doxygen perl  # (optional) api docs
+    pythonPackages.sphinx pythonPackages.python  # (optional) documentation -> doc/INSTALL
+    bash-completion  # (optional) dependency to install bash completion
+    emacs  # (optional) to byte compile emacs code, also needed for tests
+    ruby  # (optional) ruby bindings
+  ];
+
+  postPatch = ''
+    patchShebangs configure
+    patchShebangs test/
+
+    for src in \
+      util/crypto.c \
+      notmuch-config.c
+    do
+      substituteInPlace "$src" \
+        --replace \"gpg\" \"${gnupg}/bin/gpg\"
+    done
+
+    substituteInPlace lib/Makefile.local \
+      --replace '-install_name $(libdir)' "-install_name $out/lib"
+  '';
+
+  configureFlags = [ "--zshcompletiondir=$(out)/share/zsh/site-functions" ];
+
+  # Notmuch doesn't use autoconf and consequently doesn't tag --bindir and
+  # friends
+  setOutputFlags = false;
+  enableParallelBuilding = true;
+  makeFlags = "V=1";
+
+  preCheck = let
+    test-database = fetchurl {
+      url = "https://notmuchmail.org/releases/test-databases/database-v1.tar.xz";
+      sha256 = "1lk91s00y4qy4pjh8638b5lfkgwyl282g1m27srsf7qfn58y16a2";
+    };
+  in ''
+    ln -s ${test-database} test/test-databases/database-v1.tar.xz
+  '';
+  doCheck = !stdenv.hostPlatform.isDarwin && (versionAtLeast gmime.version "3.0");
+  checkTarget = "test";
+  checkInputs = [
+    which dtach openssl bash
+    gdb man
+  ];
+
+  installTargets = "install install-man";
+
+  dontGzipMan = true; # already compressed
+
+  meta = {
+    description = "Mail indexer";
+    homepage    = https://notmuchmail.org/;
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ flokli garbas the-kenny ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/muchsync.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/muchsync.nix
new file mode 100644
index 000000000000..e25dfe834f65
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/muchsync.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl
+, notmuch, openssl, pkgconfig, sqlite, xapian, zlib
+}:
+stdenv.mkDerivation rec {
+  version = "5";
+  name = "muchsync-${version}";
+  passthru = {
+    inherit version;
+  };
+  src = fetchurl {
+    url = "http://www.muchsync.org/src/${name}.tar.gz";
+    sha256 = "1k2m44pj5i6vfhp9icdqs42chsp208llanc666p3d9nww8ngq2lb";
+  };
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ notmuch openssl sqlite xapian zlib ];
+  meta = {
+    description = "Synchronize maildirs and notmuch databases";
+    homepage = "http://www.muchsync.org/";
+    platforms = stdenv.lib.platforms.unix;
+    maintainers = with stdenv.lib.maintainers; [ ocharles ];
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/mutt.nix b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/mutt.nix
new file mode 100644
index 000000000000..410e5e10ceb6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/notmuch/mutt.nix
@@ -0,0 +1,46 @@
+{ stdenv, lib, perl, perlPackages, makeWrapper, coreutils, notmuch }:
+
+stdenv.mkDerivation rec {
+  name = "notmuch-mutt-${version}";
+  version = notmuch.version;
+
+  outputs = [ "out" ];
+
+  dontStrip = true;
+
+  buildInputs = [
+    perl
+    makeWrapper
+  ] ++ (with perlPackages; [
+    FileRemove
+    DigestSHA1
+    Later
+    MailBox
+    MailMaildir
+    MailTools
+    StringShellQuote
+    TermReadLineGnu
+  ]);
+
+  src = notmuch.src;
+
+  phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
+
+  installPhase = ''
+    ${coreutils}/bin/install -Dm755 \
+      ./contrib/notmuch-mutt/notmuch-mutt \
+      $out/bin/notmuch-mutt
+
+    wrapProgram $out/bin/notmuch-mutt \
+      --prefix PERL5LIB : $PERL5LIB
+  '';
+
+  meta = with lib; {
+    inherit version;
+    description = "Mutt support for notmuch";
+    homepage    = https://notmuchmail.org/;
+    license     = with licenses; gpl3;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/nylas-mail-bin/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/nylas-mail-bin/default.nix
new file mode 100644
index 000000000000..3d8673a87a1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/nylas-mail-bin/default.nix
@@ -0,0 +1,133 @@
+{ dpkg, fetchurl, lib, pkgs, stdenv
+, alsaLib
+, atk
+, cairo
+, coreutils
+, cups
+, dbus
+, desktop-file-utils
+, expat
+, fontconfig
+, freetype
+, gcc-unwrapped
+, gdk_pixbuf
+, glib
+, gnome2
+, libgnome-keyring
+, libnotify
+, makeWrapper
+, nodejs
+, nspr
+, nss
+, pango
+, python2
+, udev
+, wget
+, xorg
+}:
+
+stdenv.mkDerivation rec {
+  name = "${pkgname}-${version}";
+  pkgname = "nylas-mail-bin";
+  version = "2.0.32";
+  subVersion = "fec7941";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "https://edgehill.s3.amazonaws.com/${version}-${subVersion}/linux-deb/x64/NylasMail.deb";
+        sha256 = "40060aa1dc3b5187b8ed4a07b9de3427e3c5a291df98c2c82395647fa2aa4ada";
+      }
+    else
+      throw "NylasMail is not supported on ${stdenv.hostPlatform.system}";
+
+  propagatedBuildInputs = [
+    alsaLib
+    atk
+    cairo
+    coreutils
+    cups
+    dbus
+    desktop-file-utils
+    expat
+    fontconfig
+    freetype
+    gcc-unwrapped
+    gdk_pixbuf
+    glib
+    gnome2.GConf
+    gnome2.gtk
+    libgnome-keyring
+    libnotify
+    nodejs
+    nspr
+    nss
+    pango
+    python2
+    udev
+    wget
+    xorg.libX11
+    xorg.libXScrnSaver
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libxkbfile
+  ];
+
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  buildCommand = ''
+    mkdir -p $out
+
+    ${dpkg}/bin/dpkg-deb -x $src unpacked
+    mv unpacked/usr/* $out/
+
+    # Fix path in desktop file
+    substituteInPlace $out/share/applications/nylas-mail.desktop \
+      --replace /usr/bin/nylas-mail $out/bin/nylas-mail
+
+    # Patch librariess
+    noderp=$(patchelf --print-rpath $out/share/nylas-mail/libnode.so)
+    patchelf --set-rpath $noderp:$out/lib:${stdenv.cc.cc.lib}/lib:${xorg.libxkbfile.out}/lib:${lib.makeLibraryPath propagatedBuildInputs } \
+      $out/share/nylas-mail/libnode.so
+
+    ffrp=$(patchelf --print-rpath $out/share/nylas-mail/libffmpeg.so)
+    patchelf --set-rpath $ffrp:$out/lib:${stdenv.cc.cc.lib}/lib:${lib.makeLibraryPath propagatedBuildInputs } \
+      $out/share/nylas-mail/libffmpeg.so
+
+    # Patch binaries
+    binrp=$(patchelf --print-rpath $out/share/nylas-mail/nylas)
+    patchelf --interpreter $(cat "$NIX_CC"/nix-support/dynamic-linker) \
+      --set-rpath $binrp:$out/lib:${stdenv.cc.cc.lib}/lib:${lib.makeLibraryPath propagatedBuildInputs } \
+      $out/share/nylas-mail/nylas
+
+    wrapProgram $out/share/nylas-mail/nylas --set LD_LIBRARY_PATH "${xorg.libxkbfile}/lib:${pkgs.gnome3.libgnome-keyring}/lib";
+
+    # Fix path to bash so apm can install plugins.
+    substituteInPlace $out/share/nylas-mail/resources/apm/bin/apm \
+      --replace /bin/bash ${stdenv.shell}
+
+    wrapProgram $out/share/nylas-mail/resources/apm/bin/apm \
+      --set PATH "${coreutils}/bin"
+    patchelf --interpreter $(cat "$NIX_CC"/nix-support/dynamic-linker) \
+      --set-rpath ${gcc-unwrapped.lib}/lib $out/share/nylas-mail/resources/apm/bin/node
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Open-source mail client built on the modern web with Electron, React, and Flux";
+    longDescription = ''
+      Nylas Mail is an open-source mail client built on the modern web with Electron, React, and Flux. It is designed to be extensible, so it's easy to create new experiences and workflows around email. Nylas Mail can be enabled with it's requirements by enabling 'services.nylas-mail.enable=true'. Alternatively, make sure to have services.gnome3.gnome-keyring.enable = true; in your configuration.nix before running nylas-mail. If you happen to miss this step, you should remove ~/.nylas-mail and "~/.config/Nylas Mail" for a blank setup".
+    '';
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ johnramsden ];
+    homepage = https://nylas.com;
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/realpine/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/realpine/default.nix
new file mode 100644
index 000000000000..f53c5d61050a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/realpine/default.nix
@@ -0,0 +1,42 @@
+{stdenv, fetchurl, ncurses, tcl, openssl, pam, kerberos
+, openldap
+}:
+# NOTE: Please check if any changes here are applicable to ../alpine/ as well
+let
+  baseName = "re-alpine";
+  version = "2.03";
+in
+stdenv.mkDerivation {
+  name = "${baseName}-${version}";
+  inherit version;
+
+  src = fetchurl {
+    url = "mirror://sourceforge/re-alpine/re-alpine-${version}.tar.bz2";
+    sha256 = "11xspzbk9cwmklmcw6rxsan7j71ysd4m9c7qldlc59ck595k5nbh";
+  };
+
+  buildInputs = [
+    ncurses tcl openssl pam kerberos openldap
+  ];
+
+  hardeningDisable = [ "format" ];
+
+  configureFlags = [
+    "--with-ssl-include-dir=${openssl.dev}/include/openssl"
+    "--with-tcl-lib=${tcl.libPrefix}"
+    "--with-passfile=.pine-passfile"
+  ];
+
+  preConfigure = ''
+    export NIX_LDFLAGS="$NIX_LDFLAGS -lgcc_s"
+  '';
+
+  meta = {
+    description = "Console mail reader";
+    license = stdenv.lib.licenses.asl20;
+    maintainers = [stdenv.lib.maintainers.raskin];
+    platforms = stdenv.lib.platforms.linux;
+    homepage = https://sourceforge.net/projects/re-alpine/;
+    downloadPage = "https://sourceforge.net/projects/re-alpine/files/";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/sup/.bundix/cache b/nixpkgs/pkgs/applications/networking/mailreaders/sup/.bundix/cache
new file mode 100644
index 000000000000..5894e96022c8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/sup/.bundix/cache
@@ -0,0 +1,4 @@
+---
+gem:
+  https://rubygems.org/downloads/mini_portile-0.6.0.gem: 09kcn4g63xrdirgwxgjikqg976rr723bkc9bxfr29pk22cj3wavn
+  https://rubygems.org/downloads/gpgme-2.0.7.gem: 1p84zhiri2ihcld7py9mwc2kg5xs5da8fk11zhndrhmw05yvf5mr
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/sup/Gemfile b/nixpkgs/pkgs/applications/networking/mailreaders/sup/Gemfile
new file mode 100644
index 000000000000..bc37456ae58e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/sup/Gemfile
@@ -0,0 +1,9 @@
+source "https://rubygems.org"
+
+gem 'rake'
+gem 'sup'
+gem 'gpgme'
+
+# Sup tries to `xapian-ruby` in its extconf instead of listing it as a
+# dependency.
+gem 'xapian-ruby', "~> 1.2.22"
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/sup/Gemfile.lock b/nixpkgs/pkgs/applications/networking/mailreaders/sup/Gemfile.lock
new file mode 100644
index 000000000000..0691919ba182
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/sup/Gemfile.lock
@@ -0,0 +1,41 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    chronic (0.9.1)
+    gpgme (2.0.12)
+      mini_portile2 (~> 2.1.0)
+    highline (1.7.8)
+    locale (2.1.2)
+    lockfile (2.1.3)
+    mime-types (3.0)
+      mime-types-data (~> 3.2015)
+    mime-types-data (3.2016.0221)
+    mini_portile2 (2.1.0)
+    ncursesw (1.4.9)
+    rake (11.1.2)
+    rmail-sup (1.0.1)
+    sup (0.22.1)
+      chronic (~> 0.9.1)
+      highline
+      locale (~> 2.0)
+      lockfile
+      mime-types (> 2.0)
+      ncursesw (~> 1.4.0)
+      rmail-sup (~> 1.0.1)
+      trollop (>= 1.12)
+      unicode (~> 0.4.4)
+    trollop (2.1.2)
+    unicode (0.4.4.2)
+    xapian-ruby (1.2.22)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  gpgme
+  rake
+  sup
+  xapian-ruby (~> 1.2.22)
+
+BUNDLED WITH
+   1.10.6
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/sup/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/sup/default.nix
new file mode 100644
index 000000000000..c803db6dcbc1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/sup/default.nix
@@ -0,0 +1,23 @@
+{ lib, bundlerEnv, ruby }:
+
+bundlerEnv {
+  name = "sup-0.22.1";
+
+  inherit ruby;
+
+  # Updated with:
+  # nix-shell -p bundix -p bundler -p ncurses -p ruby -p which -p zlib -p libuuid
+  # bundle install --path ./vendor
+  # bundix
+  gemfile = ./Gemfile;
+  lockfile = ./Gemfile.lock;
+  gemset = ./gemset.nix;
+
+  meta = with lib; {
+    description = "A curses threads-with-tags style email client";
+    homepage    = http://sup-heliotrope.github.io;
+    license     = licenses.gpl2;
+    maintainers = with maintainers; [ cstrahan lovek323 ];
+    platforms   = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/sup/gemset.nix b/nixpkgs/pkgs/applications/networking/mailreaders/sup/gemset.nix
new file mode 100644
index 000000000000..babc063d6346
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/sup/gemset.nix
@@ -0,0 +1,126 @@
+{
+  xapian-ruby = {
+    version = "1.2.22";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xbarnxmhy6r0rxpspn4wk85j183w6b18nah73djcs06b3gfas15";
+    };
+    dependencies = [ "rake" ];
+  };
+  unicode = {
+    version = "0.4.4.2";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "15fggljzan8zvmr8h12b5m7pcj1gvskmmnx367xs4p0rrpnpil8g";
+    };
+  };
+  trollop = {
+    version = "2.1.2";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0415y63df86sqj43c0l82and65ia5h64if7n0znkbrmi6y0jwhl8";
+    };
+  };
+  sup = {
+    version = "0.22.1";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "17s2sxismf46zdhgr6g2v53fw9f3sp1ijx7xdw3wx8qpcsgazcgi";
+    };
+    dependencies = ["chronic" "highline" "locale" "lockfile" "mime-types" "ncursesw" "rmail-sup" "trollop" "unicode" "rake" ];
+  };
+  rmail-sup = {
+    version = "1.0.1";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "1xswk101s560lxqaax3plqh8vjx7jjspnggdwb3q80m358f92q9g";
+    };
+  };
+  rake = {
+    version = "11.1.2";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jfmy7kd543ldi3d4fg35a1w7q6jikpnzxqj4bzchfbn94cbabqz";
+    };
+  };
+  ncursesw = {
+    version = "1.4.9";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "154cls3b237imdbhih7rni5p85nw6mpbpkzdw08jxzvqaml7q093";
+    };
+  };
+  mini_portile2 = {
+    version = "2.1.0";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "1y25adxb1hgg1wb2rn20g3vl07qziq6fz364jc5694611zz863hb";
+    };
+  };
+  mime-types-data = {
+    version = "3.2016.0221";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "05ygjn0nnfh6yp1wsi574jckk95wqg9a6g598wk4svvrkmkrzkpn";
+    };
+  };
+  mime-types = {
+    version = "3.0";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "1snjc38a9vqvy8j41xld1i1byq9prbl955pbjw7dxqcfcirqlzra";
+    };
+    dependencies = ["mime-types-data"];
+  };
+  lockfile = {
+    version = "2.1.3";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dij3ijywylvfgrpi2i0k17f6w0wjhnjjw0k9030f54z56cz7jrr";
+    };
+  };
+  locale = {
+    version = "2.1.2";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "1sls9bq4krx0fmnzmlbn64dw23c4d6pz46ynjzrn9k8zyassdd0x";
+    };
+  };
+  highline = {
+    version = "1.7.8";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nf5lgdn6ni2lpfdn4gk3gi47fmnca2bdirabbjbz1fk9w4p8lkr";
+    };
+  };
+  gpgme = {
+    version = "2.0.12";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0a04a76dw9dias0a8rp6dyk3vx2y024gim40lg2md6zdh2m1kx85";
+    };
+    dependencies = ["mini_portile2"];
+  };
+  chronic = {
+    version = "0.9.1";
+    source = {
+      type = "gem";
+      remotes = ["https://rubygems.org"];
+      sha256 = "0kspaxpfy7yvyk1lvpx31w852qfj8wb9z04mcj5bzi70ljb9awqk";
+    };
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/sylpheed/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/sylpheed/default.nix
new file mode 100644
index 000000000000..70f74dff3097
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/sylpheed/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, pkgconfig, gtk2, openssl ? null, gpgme ? null
+, gpgSupport ? true, sslSupport ? true }:
+
+assert gpgSupport -> gpgme != null;
+assert sslSupport -> openssl != null;
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "sylpheed-${version}";
+  version = "3.7.0";
+
+  src = fetchurl {
+    url = "https://sylpheed.sraoss.jp/sylpheed/v3.7/${name}.tar.xz";
+    sha256 = "0j9y5vdzch251s264diw9clrn88dn20bqqkwfmis9l7m8vmwasqd";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ gtk2 ]
+    ++ optionals gpgSupport [ gpgme ]
+    ++ optionals sslSupport [ openssl ];
+
+  configureFlags = [
+    (optional gpgSupport "--enable-gpgme")
+    (optional sslSupport "--enable-ssl")
+  ];
+
+  meta = {
+    homepage = http://sylpheed.sraoss.jp/en/;
+    description = "Lightweight and user-friendly e-mail client";
+    maintainers = with maintainers; [ eelco ];
+    platforms = platforms.linux ++ platforms.darwin;
+    license = licenses.gpl2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/default.nix
new file mode 100644
index 000000000000..7f32e45f5d31
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/default.nix
@@ -0,0 +1,179 @@
+{ stdenv, fetchurl, config, makeWrapper
+, gconf
+, alsaLib
+, at-spi2-atk
+, atk
+, cairo
+, cups
+, curl
+, dbus-glib
+, dbus
+, fontconfig
+, freetype
+, gdk_pixbuf
+, glib
+, glibc
+, gst-plugins-base
+, gstreamer
+, gtk2
+, gtk3
+, kerberos
+, libX11
+, libXScrnSaver
+, libXcomposite
+, libXdamage
+, libXext
+, libXfixes
+, libXinerama
+, libXrender
+, libXt
+, libcanberra-gtk2
+, libgnome
+, libgnomeui
+, gnome3
+, libGLU_combined
+, nspr
+, nss
+, pango
+, writeScript
+, xidel
+, coreutils
+, gnused
+, gnugrep
+, gnupg
+, runtimeShell
+}:
+
+# imports `version` and `sources`
+with (import ./release_sources.nix);
+
+let
+  arch = if stdenv.hostPlatform.system == "i686-linux"
+    then "linux-i686"
+    else "linux-x86_64";
+
+  isPrefixOf = prefix: string:
+    builtins.substring 0 (builtins.stringLength prefix) string == prefix;
+
+  sourceMatches = locale: source:
+      (isPrefixOf source.locale locale) && source.arch == arch;
+
+  systemLocale = config.i18n.defaultLocale or "en-US";
+
+  defaultSource = stdenv.lib.findFirst (sourceMatches "en-US") {} sources;
+
+  source = stdenv.lib.findFirst (sourceMatches systemLocale) defaultSource sources;
+
+  name = "thunderbird-bin-${version}";
+in
+
+stdenv.mkDerivation {
+  inherit name;
+
+  src = fetchurl {
+    url = "https://download-installer.cdn.mozilla.net/pub/thunderbird/releases/${version}/${source.arch}/${source.locale}/thunderbird-${version}.tar.bz2";
+    inherit (source) sha512;
+  };
+
+  phases = "unpackPhase installPhase";
+
+  libPath = stdenv.lib.makeLibraryPath
+    [ stdenv.cc.cc
+      gconf
+      alsaLib
+      at-spi2-atk
+      atk
+      cairo
+      cups
+      curl
+      dbus-glib
+      dbus
+      fontconfig
+      freetype
+      gdk_pixbuf
+      glib
+      glibc
+      gst-plugins-base
+      gstreamer
+      gtk2
+      gtk3
+      kerberos
+      libX11
+      libXScrnSaver
+      libXcomposite
+      libXdamage
+      libXext
+      libXfixes
+      libXinerama
+      libXrender
+      libXt
+      libcanberra-gtk2
+      libgnome
+      libgnomeui
+      libGLU_combined
+      nspr
+      nss
+      pango
+    ] + ":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" [
+      stdenv.cc.cc
+    ];
+
+  buildInputs = [ gtk3 gnome3.adwaita-icon-theme ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase =
+    ''
+      mkdir -p "$prefix/usr/lib/thunderbird-bin-${version}"
+      cp -r * "$prefix/usr/lib/thunderbird-bin-${version}"
+
+      mkdir -p "$out/bin"
+      ln -s "$prefix/usr/lib/thunderbird-bin-${version}/thunderbird" "$out/bin/"
+
+      for executable in \
+        thunderbird crashreporter thunderbird-bin plugin-container updater
+      do
+        patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+          "$out/usr/lib/thunderbird-bin-${version}/$executable"
+      done
+
+      find . -executable -type f -exec \
+        patchelf --set-rpath "$libPath" \
+          "$out/usr/lib/thunderbird-bin-${version}/{}" \;
+
+      # Create a desktop item.
+      mkdir -p $out/share/applications
+      cat > $out/share/applications/thunderbird.desktop <<EOF
+      [Desktop Entry]
+      Type=Application
+      Exec=$out/bin/thunderbird
+      Icon=$out/usr/lib/thunderbird-bin-${version}/chrome/icons/default/default256.png
+      Name=Thunderbird
+      GenericName=Mail Reader
+      Categories=Application;Network;
+      EOF
+
+      wrapProgram "$out/bin/thunderbird" \
+        --argv0 "$out/bin/.thunderbird-wrapped" \
+        --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:" \
+        --suffix XDG_DATA_DIRS : "$XDG_ICON_DIRS"
+    '';
+
+  passthru.updateScript = import ./../../browsers/firefox-bin/update.nix {
+    inherit name stdenv writeScript xidel coreutils gnused gnugrep curl gnupg runtimeShell;
+    baseName = "thunderbird";
+    channel = "release";
+    basePath = "pkgs/applications/networking/mailreaders/thunderbird-bin";
+    baseUrl = "http://archive.mozilla.org/pub/thunderbird/releases/";
+  };
+  meta = with stdenv.lib; {
+    description = "Mozilla Thunderbird, a full-featured email client (binary package)";
+    homepage = http://www.mozilla.org/thunderbird/;
+    license = {
+      free = false;
+      url = http://www.mozilla.org/en-US/foundation/trademarks/policy/;
+    };
+    maintainers = with stdenv.lib.maintainers; [ fuuzetsu ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix
new file mode 100644
index 000000000000..b34fde7b7c1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix
@@ -0,0 +1,585 @@
+{
+  version = "60.6.0";
+  sources = [
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/ar/thunderbird-60.6.0.tar.bz2";
+      locale = "ar";
+      arch = "linux-x86_64";
+      sha512 = "ba14ed80e0b18cc3b40a1bf1810eb67a246f6e995d527e625432eb24dce46bde85dd0dbcac5590d74b8bbb7be900f266b72055349f9b0ea6839fb8d5779aa54d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/ast/thunderbird-60.6.0.tar.bz2";
+      locale = "ast";
+      arch = "linux-x86_64";
+      sha512 = "b6ab87d344c3e806a2316022a6c8632dcd9548c745766e136ca9aa70f54fe744587849372fc7426173a91996ff4709aee85f8e5de2565add3bbac58d370e7a96";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/be/thunderbird-60.6.0.tar.bz2";
+      locale = "be";
+      arch = "linux-x86_64";
+      sha512 = "2d5f88efb2f6e3be552cb503bfe184a3ad6b395da3139c6c97585f490d9a02c5ce391c0f6b3b1be0505b63f0b8af70da9eca8820b5baefc3dc043a60abb47d5a";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/bg/thunderbird-60.6.0.tar.bz2";
+      locale = "bg";
+      arch = "linux-x86_64";
+      sha512 = "16b7b8d54e200b9156a346a0e4b80cb5c91a0297222a3f4a227770344d6453fea679d7c8a512eb9d879abe262ce34c2dab654cbe60aab13d0cc7919757dcae8d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/br/thunderbird-60.6.0.tar.bz2";
+      locale = "br";
+      arch = "linux-x86_64";
+      sha512 = "d20854f75f09f95489a1d647bbdeed9062a553dcede68f48672d0a0a82001e283a7d24162a6110ce3efa1a1bdd846ca7fe036c37a20f63bf8dcd54d80a767084";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/ca/thunderbird-60.6.0.tar.bz2";
+      locale = "ca";
+      arch = "linux-x86_64";
+      sha512 = "8477742f367c2e4206ba61afcef372d39163aeba5e781ea9a089b0d3cf9ef44be8ce6bd3417490616a51aff3152a52eb3599b2acf66e0186e696c9df29b9732b";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/cs/thunderbird-60.6.0.tar.bz2";
+      locale = "cs";
+      arch = "linux-x86_64";
+      sha512 = "b434e8763a93df511dcc9c032d11c0a26c7583f7ce01980be63ea453f8d503e703cddca5e5a67db619cb1b9690d0256c91eec8166fff30733186e429d3c513a8";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/cy/thunderbird-60.6.0.tar.bz2";
+      locale = "cy";
+      arch = "linux-x86_64";
+      sha512 = "71a6a2642dfce4505ed3b6b551ffdd5c469f1261191b73d3bd09bdf98788297536b3b94dd52327d263d4b1256080ff0317d8e10e09b53871ab805b426892e9a0";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/da/thunderbird-60.6.0.tar.bz2";
+      locale = "da";
+      arch = "linux-x86_64";
+      sha512 = "e24c19e5caafd4b4c5081acf700fb175e07c1702da0af111122cf793e4791d38c49902e1b9574ab9606482c539677e6caad2b9f8f655ac0fb24f1b0c8454c456";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/de/thunderbird-60.6.0.tar.bz2";
+      locale = "de";
+      arch = "linux-x86_64";
+      sha512 = "e9ec916a00bfd50745c95ed42976eeb0b9cc314165b6401e24e1433a68fa5591c3020397a0c35566072784e423b42132d4e55dc307a47d34c693d5fe9e3e6380";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/dsb/thunderbird-60.6.0.tar.bz2";
+      locale = "dsb";
+      arch = "linux-x86_64";
+      sha512 = "4fd72e0ba6982c0aeba4911a626aa7dea2d6678502aec9523efb5e89b613b20b471d50a2667df000541279ff961fc3323ebaa16d3482c2bebcaa33ec849a05d3";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/el/thunderbird-60.6.0.tar.bz2";
+      locale = "el";
+      arch = "linux-x86_64";
+      sha512 = "bd86c6855ce42bf52ca6822e6fd3cfd7e09c9fd2577407c666b46d84afcf43655f30dc0e3546ae41b84eb5ca7e681072fae90a08de9dd017c3594dea4e5b9bb8";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/en-GB/thunderbird-60.6.0.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-x86_64";
+      sha512 = "47009db4f18cad43a9d4ba20a4edbfbb07cc5222cb65121dfe45eb3c9120fd18277d5601309f9f3f21eebe10fd70201a9d15815fd35ef6f9d3f95360d939a0ec";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/en-US/thunderbird-60.6.0.tar.bz2";
+      locale = "en-US";
+      arch = "linux-x86_64";
+      sha512 = "86bfb05041e347430c424652f8fcb102aa44c0bb68bf1b7a55ce888fcefa2ac08f55bb4bcbe7a558aaf3214ae694b97a6805f14de2ce575968fa2a1988e281ba";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/es-AR/thunderbird-60.6.0.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-x86_64";
+      sha512 = "87a5caeb7d8f8846c52b9a7344260e480efce156239559a890bf5e167939cd35e2223ef4ad2429b196a87ca164b02eb7df3dd03ed1f52f95bf30d75afec40fd8";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/es-ES/thunderbird-60.6.0.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-x86_64";
+      sha512 = "ec6a17263d696b2fa4195349fd3badaf7ac7dbdf93ee7247a77d27aa13daf5de06db8c2df3449b06e6d28fc032e9c4eeb897be8b1a798e9fb7b68f3c8509d6d8";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/et/thunderbird-60.6.0.tar.bz2";
+      locale = "et";
+      arch = "linux-x86_64";
+      sha512 = "d4591fdc97c5c1654f59116670e8516c12b53311e6f76f13711c04c86cfbf4cbd893a2f5f657b27fc44ad9919e3c0b5192ae98b26281ef4df6863fc522d50a7b";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/eu/thunderbird-60.6.0.tar.bz2";
+      locale = "eu";
+      arch = "linux-x86_64";
+      sha512 = "316b4d9d515b23476d29c0136c9981d281f7a3628aacd18f912640a2b6e1d5b53d66d42e9300af6b2cb78e4ada7458d0002c3d4a5ac7f5129db3dd66f4358341";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/fi/thunderbird-60.6.0.tar.bz2";
+      locale = "fi";
+      arch = "linux-x86_64";
+      sha512 = "944742e4331c7ccbc27d887d9d5702ced9807d743d57e8a14b18f4dd6b2148ed24b295eb498c09d1d54f2f1110abfd9e2acbad83a882189d0d7e5403dbe650b4";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/fr/thunderbird-60.6.0.tar.bz2";
+      locale = "fr";
+      arch = "linux-x86_64";
+      sha512 = "1dfeaeb5e6985ebd820188721377589ebf4b993337a4231f6d036ae05173e8fb33c17bae76a3982e34a98da934d584d0efec4e01d6045b24345ea66299ecfe19";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/fy-NL/thunderbird-60.6.0.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-x86_64";
+      sha512 = "6e61fc74b45e75170157806c8f358b5236e5de79e1d07db4f7834bebf2b9822d90377334ec1f2cf44a838c52c7135711b5a7036a0336813fe79c7dc3aa43e25e";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/ga-IE/thunderbird-60.6.0.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-x86_64";
+      sha512 = "7de19973a7e9770cfdd9ff944e9bea8e6755a81e2fd41ce27ff0d16bfe948534294c18f2f7ca05092aa574bea6fadd5a90bb08ca6472c27e7b0cdc6c15d25341";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/gd/thunderbird-60.6.0.tar.bz2";
+      locale = "gd";
+      arch = "linux-x86_64";
+      sha512 = "1d5309b6eb47b16b49142ba18de96b285fc0f91a7eb3be5cac576683da37143c1e91318dff4f039119668679acf3c2643bdde9a26788f0bb240cebaa5f907389";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/gl/thunderbird-60.6.0.tar.bz2";
+      locale = "gl";
+      arch = "linux-x86_64";
+      sha512 = "ecb09d7d8e6b5705d4c71d306a1556a74f78617520e59f041e3b63a0116f0472717c5f3bb055fda3c5c9fd72b198d997704292f64bc60349ec29efe057c46d52";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/he/thunderbird-60.6.0.tar.bz2";
+      locale = "he";
+      arch = "linux-x86_64";
+      sha512 = "7ced9d95c40376ee1334e5c5cb2bb9fd6e5cefcc26dc134fb5ef71bc20b6476b263ee742d3e0634517ca399c61c776bd7347b58c2c9bd0c395949756d1d0f5af";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/hr/thunderbird-60.6.0.tar.bz2";
+      locale = "hr";
+      arch = "linux-x86_64";
+      sha512 = "c9cb6cd5b3d7f1091f55b74af73825d2d0e8b763ffc102a1d49e58b2ac9e6fe2fdd81c1bcf7effd53d86c1ba8f662e3ae0b413ef80bafcb6e2ae64d34c7f3311";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/hsb/thunderbird-60.6.0.tar.bz2";
+      locale = "hsb";
+      arch = "linux-x86_64";
+      sha512 = "e4f8092eb72e8311459a9232dc55342c2ff61b232d0b3a1be04acde78d7c06f14108f68378de200cadbe58125cddf46fddd421f76ac0d046e1a796fc5277278e";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/hu/thunderbird-60.6.0.tar.bz2";
+      locale = "hu";
+      arch = "linux-x86_64";
+      sha512 = "ba1ca73de9b3b0137e38c10bbf29cd28310a7e2e58804de75247da098401f4b609d414e55a25b9646c16dae353db9d6fd193e437e42b7659d66f0ec9117e8629";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/hy-AM/thunderbird-60.6.0.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-x86_64";
+      sha512 = "d5fbb20b9a75be427f1fb2a3c3674397b04793469dc3f493ec9bbf631e83a52573700540832cfe7faf71c16908ee0bc7bcd84b3cbd6e10fde950d477b27bc6dc";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/id/thunderbird-60.6.0.tar.bz2";
+      locale = "id";
+      arch = "linux-x86_64";
+      sha512 = "35b1d1db2dc6c38b8d2fce2652857d9251e287acad125ab19c5e20487ac5ee6d4ad01d8f6d6cfc1ed9618cb8a47666d9c64e725b2d1f11894741e8cf99a887f8";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/is/thunderbird-60.6.0.tar.bz2";
+      locale = "is";
+      arch = "linux-x86_64";
+      sha512 = "548170e5b1c2d7c09d4792f012064e5bbb201236768ba92fa318821b83101a395f3a4cd06560db89c23561eda20078921902aaa9b7ecbb201c356149af3d55cc";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/it/thunderbird-60.6.0.tar.bz2";
+      locale = "it";
+      arch = "linux-x86_64";
+      sha512 = "026fc8d2b61eaff1f34ce7726923697ba5c7563b65fbb9bbd700e88998d198eee595348cc47135c5dc8589201fcf0d75141acd5d1e49980ccc5c544b545bb424";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/ja/thunderbird-60.6.0.tar.bz2";
+      locale = "ja";
+      arch = "linux-x86_64";
+      sha512 = "deb6e23d8c3c700d7de3f433862040ae5db610012cfd4a8faaf239a6429662d625d8a40c583f22797e34afbeec7dd6888a1558155e0878f4a84ea71694cc97ef";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/kab/thunderbird-60.6.0.tar.bz2";
+      locale = "kab";
+      arch = "linux-x86_64";
+      sha512 = "e6c1dba878c8bfcd4031123f0578512b0cfad675ddfd89859d5ea25b2c112195f788cb1d3e0deec12ca1f052c2c0bfdeda2527402cf0d51f54e781029a6e3b47";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/kk/thunderbird-60.6.0.tar.bz2";
+      locale = "kk";
+      arch = "linux-x86_64";
+      sha512 = "70dd97b4d5db05463deff785fbd9dbdb649c00ec79d8f1cf009ab54961efafc45f12da654367b0df58211a8fe57597cba7743b7557dc121bbf1d838aa692809a";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/ko/thunderbird-60.6.0.tar.bz2";
+      locale = "ko";
+      arch = "linux-x86_64";
+      sha512 = "8faf4d44bb882107805c663462170e96593f10e7218fa3a1e244937ee3965901d712c89edf9cbc4fefba85c91662c1a7e2811cf1bc3390377cd8ea3f3c8e29e0";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/lt/thunderbird-60.6.0.tar.bz2";
+      locale = "lt";
+      arch = "linux-x86_64";
+      sha512 = "604b8283cce3cddd90ae65be0d32ce7051bbe360fb772e47be60fa3312330d38b46d240b9e61eed3134fadef90aca9ac930ae6512dfdc1343104edff928be54c";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/ms/thunderbird-60.6.0.tar.bz2";
+      locale = "ms";
+      arch = "linux-x86_64";
+      sha512 = "b4af3085260ece6e30b482e9e8335a75298335b0b551a8219bbc04521d41d0088d483134df8801a529934320ab5d51b99b388177b9432b7fdcbd7391ac11b22d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/nb-NO/thunderbird-60.6.0.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-x86_64";
+      sha512 = "75022e5524379f4683d6e85bfc057480dcc003d421ec256ade11ba9f4eb60b74c65a7131f07987cecd5a13d8e61dbf2c71446e4c2cbfd9efa65a1c86939e82aa";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/nl/thunderbird-60.6.0.tar.bz2";
+      locale = "nl";
+      arch = "linux-x86_64";
+      sha512 = "301dfe0a9ce8743703c1f4968bb9bd7b9881a7b70ce1760c12e9a9b2ffe386e8c85406a2b3121981676e4ba2f9ae5a32782857a168965f1fd93530cb22dc3ddd";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/nn-NO/thunderbird-60.6.0.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-x86_64";
+      sha512 = "67704f6dc56fb2d396cd5154d32648464cbf331890dfbe30c6870f63d8f26d8f46322c2b2c40cec86fdbd7b93eeacae2551b0e699428749c89acb715bf8d00b2";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/pl/thunderbird-60.6.0.tar.bz2";
+      locale = "pl";
+      arch = "linux-x86_64";
+      sha512 = "6477cf8274f38d3922edf51e0a419936d2ac494906c06fcf78c99ae95847c2fd4530e03d1574f7ba4b5d1221e98a71bb1a7e3810a1ebcd72c4e412f0e85c3c31";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/pt-BR/thunderbird-60.6.0.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-x86_64";
+      sha512 = "775ccbd6e8adda7318a5ff9d364d6d8b3d8af39208a349f61123550a149c728f7d6248c27b3b4561c8445c1c7c53300579f073b47ba31a52b68a8570515e6329";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/pt-PT/thunderbird-60.6.0.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-x86_64";
+      sha512 = "057a2b690dfd529be26ddc225f6f760190315721ef69ab0d9974788b7c00617704af82ec56cbb502a3854945b624896ceb800ba1a31080fe9984fe12af4d301f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/rm/thunderbird-60.6.0.tar.bz2";
+      locale = "rm";
+      arch = "linux-x86_64";
+      sha512 = "10c4edf026d5b924d5105201179f8f5f6ecf5917e99efb60c663325ef98e5ba63f965954c93e3962af454111656687abd2be65e0c552617f8fc7eb6ee3b339bf";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/ro/thunderbird-60.6.0.tar.bz2";
+      locale = "ro";
+      arch = "linux-x86_64";
+      sha512 = "d6a4fe46346b6699d570e316c7e97b530100923771d4ab76878dbea959dcd1c34e694c3a968eb786d19be96e0b7757952d47a87bc52f99d078eefc9a2483dd7f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/ru/thunderbird-60.6.0.tar.bz2";
+      locale = "ru";
+      arch = "linux-x86_64";
+      sha512 = "14b79c2751306b7e66cc3049c0338c16042c60fd707275f25775692b09c28fbd30b46886fdb2c8205de342e29cc0519887f8f92efd369e92a0a94ab33a5cba3a";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/si/thunderbird-60.6.0.tar.bz2";
+      locale = "si";
+      arch = "linux-x86_64";
+      sha512 = "a8781bfe6bf9ceac67bab6e2f2957d61bb5d27292a15ea24776bdd8dda4b7828a350ec8caaae40a894db85b9d9fe4d457172f8dcedd681fa58912eef74ade60a";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/sk/thunderbird-60.6.0.tar.bz2";
+      locale = "sk";
+      arch = "linux-x86_64";
+      sha512 = "b22ef7083b344f8dec27b09631468c1263cb436479cfffc82b95ec78fc05ef66ec9b133d612dd097f9c24096b9c4e538efde6a88150816268a3a5a2d81a8e1fb";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/sl/thunderbird-60.6.0.tar.bz2";
+      locale = "sl";
+      arch = "linux-x86_64";
+      sha512 = "b3a295b4f1a27a75634bae5dbf033973849659bf9dc9fdecf33b90618aa919bf644e2211c789ceefa495cc72e6586ed1db1683658ca88f0fe4cb3ed7a909a208";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/sq/thunderbird-60.6.0.tar.bz2";
+      locale = "sq";
+      arch = "linux-x86_64";
+      sha512 = "5f990f0f257d7b096f4310de22a0ea26f27b18e5f7566f3eed45bed66ff89e384f55b7932fd5ce65039077ff902631db3feffce69d2e6a8e13893586759d14b3";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/sr/thunderbird-60.6.0.tar.bz2";
+      locale = "sr";
+      arch = "linux-x86_64";
+      sha512 = "71623636dca3b89af58feeb1b998b9bf16c8f8c7ff7c8f273aafc0500ce4b5d4bfae3e997d8669e3075c6586b631df0a613ba062fc4d74cf281f686aa7b18109";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/sv-SE/thunderbird-60.6.0.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-x86_64";
+      sha512 = "2e0f6115a0e1b538288594ff47b92b1eb688a26e5f67bb7b83b5c01fe781efe414fc8a9e2c289fd7312026fa1b9bc56588a0c0b25172c35d1e224269a779e40b";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/tr/thunderbird-60.6.0.tar.bz2";
+      locale = "tr";
+      arch = "linux-x86_64";
+      sha512 = "fa3aa0c732a4e2feda079d283f6d0f98eb721a88e98a7df70681acb50d525e48af273deb19e6d2e5f41d20fc5daddf0c89c3e6d9ced74ccc34bd75fc12ebf26b";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/uk/thunderbird-60.6.0.tar.bz2";
+      locale = "uk";
+      arch = "linux-x86_64";
+      sha512 = "535fff2ee782b9818f3953314b084f5d63af4457310e8236b5dbe0fb7d0db5ef3c1aa0efbb992ef32ad89cd1df3ad50acae26fc116eae474b6b6970cb1172772";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/vi/thunderbird-60.6.0.tar.bz2";
+      locale = "vi";
+      arch = "linux-x86_64";
+      sha512 = "54bfad80adc5f4a97e5dbb098e4330a7248b650178e9a9f49b2252fe1a15afb7e247f9af29253f59c7ff43e8af67a96f1cf069f3919ecd53ce0ff953e6cb42de";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/zh-CN/thunderbird-60.6.0.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-x86_64";
+      sha512 = "7452bdee386e1e85967d7b88c6f935cb89ba7dece1f39d3b20f24cdd04a99793d3a11c333b76d107fe88d8c4c3eb69947be11792af7f8657515c48eda655d237";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-x86_64/zh-TW/thunderbird-60.6.0.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-x86_64";
+      sha512 = "0c1a7048f250bb0f3248ed92ad2e45d3bb01b308eaa6115cde9050253d960b6538467ea6c5754c6f5458035fe31bd2fc529ab423f6ca9da179dfb7f51ef1f612";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/ar/thunderbird-60.6.0.tar.bz2";
+      locale = "ar";
+      arch = "linux-i686";
+      sha512 = "c04863a1693b2e0567eda646f6364b58cbf959c61045ba1948aebe9f30f63351888cca4a70de4a1655b48ee0407e0c665691c6ffcc2638c18b70046eb04cb02c";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/ast/thunderbird-60.6.0.tar.bz2";
+      locale = "ast";
+      arch = "linux-i686";
+      sha512 = "ed4c86716aa7ca675577f577f62bf11f025ba96a061e0c89952a99ad5e3ba3e3edb01dd8d428cd0884fdc78127453dcfde0e81ecb4ba3e11e650022f6df07102";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/be/thunderbird-60.6.0.tar.bz2";
+      locale = "be";
+      arch = "linux-i686";
+      sha512 = "fff19d979335f90004f35646edf2c4ca7f1243a013d79c246db6a0139f787573bd2db2636adf503366a94d44cf8b932d2141ff1df2faced750ac6c604116d6da";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/bg/thunderbird-60.6.0.tar.bz2";
+      locale = "bg";
+      arch = "linux-i686";
+      sha512 = "afcbb510382a811af5afadf306ce66915f472a3cac62ec2e2ab5930c795fd443600c02743be29db3bbbccf3c9d8507bf54ad0452bd580de4f9db52d5438aa596";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/br/thunderbird-60.6.0.tar.bz2";
+      locale = "br";
+      arch = "linux-i686";
+      sha512 = "3ca375f94f1f5795b2676d1e8774fc17e3eb0824ceeef6b4598b99f35265806a017e0dfbf2b07f275eae92b68fa975b05cf2d66c6adfd1147399ee7be3df94eb";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/ca/thunderbird-60.6.0.tar.bz2";
+      locale = "ca";
+      arch = "linux-i686";
+      sha512 = "75d31ded8c44d8429c58f8c6bc1b5104a4b62a3d0899ac81ba9deb277204290d7ae079e6baf4b243188db7e1050b4a0b9046dd26ca8fa546083fdfbbf724bd01";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/cs/thunderbird-60.6.0.tar.bz2";
+      locale = "cs";
+      arch = "linux-i686";
+      sha512 = "0ead8f9276a6dcfaf39c1d400c892f95d431cee960c94857cd3e95e6f148571ed946325e6518bcea5821aaeb0e8f8f5dbbdd3970aad9cda549dbfc07eb2392ff";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/cy/thunderbird-60.6.0.tar.bz2";
+      locale = "cy";
+      arch = "linux-i686";
+      sha512 = "fb9d58efc4b0a72a1bbe09624d38b83227c94a2584b4a852b95753d83481b64194e6d14578fe24210581feaf5b8ccf55c530cb3bae606ea6acd39a456a91dcc4";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/da/thunderbird-60.6.0.tar.bz2";
+      locale = "da";
+      arch = "linux-i686";
+      sha512 = "1bf483526e7e52626b6298c93c6586d1973cdd9c3aec660b31550b4658690e8454622276d2bac3b096acceb8e9b41fbf7db735ed8a2c185ee968e489a62ae329";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/de/thunderbird-60.6.0.tar.bz2";
+      locale = "de";
+      arch = "linux-i686";
+      sha512 = "1bdaf4b2a5ce2b1824250b4fd35695ce9c3be306b8c21d9002995e142f6a655166df15d3f68f80dc0f5963f31e87d01b00ee8c4463c6002df0eb536fc3eb2bfb";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/dsb/thunderbird-60.6.0.tar.bz2";
+      locale = "dsb";
+      arch = "linux-i686";
+      sha512 = "0b6f71ec6d02f06dde3509fd1fb771a341b12a7a44681d05244aa7ea61726f8f8792ff12a72b0700196162047b23b7a9741a3522519935813b075d617c79490c";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/el/thunderbird-60.6.0.tar.bz2";
+      locale = "el";
+      arch = "linux-i686";
+      sha512 = "bec935b6e469400f7d88fee26dab49c8159dd8a74bd34827122d23276e6b5e837dbedb8281b0a2c1b87e90d2897e2dc15a475ac53bf911f15887280630ef82fa";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/en-GB/thunderbird-60.6.0.tar.bz2";
+      locale = "en-GB";
+      arch = "linux-i686";
+      sha512 = "4e28d8bbc384c98767825e16111d24a96ad2291f40b1eb7b295ab2b7103482a9aa11c00ae5e455ea7e5a7e5d077a4d7c45e6f8890c69e7c7c237909c332bad75";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/en-US/thunderbird-60.6.0.tar.bz2";
+      locale = "en-US";
+      arch = "linux-i686";
+      sha512 = "6b5619c5a03a4d585b030682fc41069c3ebe3c783578853c3c36c9055fe03c78c782f2621c12a454b4968e5416e01312639ef48047b407558dd6ad85fd81befd";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/es-AR/thunderbird-60.6.0.tar.bz2";
+      locale = "es-AR";
+      arch = "linux-i686";
+      sha512 = "9b6828c7c646f0483b758902d2cfd7897649acfc1622d1a338320d0f9a9f52b38dc8734ace3816fd4a116883ff7c9ffdfbae6b93e5070697a108a7df207de1d1";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/es-ES/thunderbird-60.6.0.tar.bz2";
+      locale = "es-ES";
+      arch = "linux-i686";
+      sha512 = "e0a8d2e68602cb5a9c0bca574ff8ed797c0e71a2bd86519e7d7de1ca8fc54316bead8ccc35e7f8dbc26cb11ab76e59076c09e69edb8175947c7c0dfab5758e3f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/et/thunderbird-60.6.0.tar.bz2";
+      locale = "et";
+      arch = "linux-i686";
+      sha512 = "c597b215fb574f948ed3cd169f7fd814a9f23e5c797da8457d9c810097f71b26751b386280cbba2fbf0224d07665c2fa33c3cb19c0fc54bbb0146fa271b25442";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/eu/thunderbird-60.6.0.tar.bz2";
+      locale = "eu";
+      arch = "linux-i686";
+      sha512 = "9c1dfdeb74e6882689c036995d20ea7d0cbe9f3b406ec15b7a71d1f890cd209d3e7b03f6ce35d778adfcad2dfcfeb20ad55b9888dd222ffdb429166c8ad3a905";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/fi/thunderbird-60.6.0.tar.bz2";
+      locale = "fi";
+      arch = "linux-i686";
+      sha512 = "fa24033927751c7b1cffbd3e165507d8cc0ef7ac7755f08afe102b9b9a339d0a31b8f738d1bb71bc0a8876f51a1411b4840b033a3716306e5e8a17eb4d7f0382";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/fr/thunderbird-60.6.0.tar.bz2";
+      locale = "fr";
+      arch = "linux-i686";
+      sha512 = "37daee1b1c0f1757a0098806d41bcd71c0dfd700bce2f7da58ec670c58d2b5fefcef2fde102bed7fa6daa62b59404716c26547de54a00eaed6201616c681b5ac";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/fy-NL/thunderbird-60.6.0.tar.bz2";
+      locale = "fy-NL";
+      arch = "linux-i686";
+      sha512 = "85b2a6fa843d5364eaaacbc3399ad4a05169a7c988640f3a120fabe994bca31b0c22019a8537d598a14d33dc75f2037cda5504cb7d72149fec1ff040e1f962bd";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/ga-IE/thunderbird-60.6.0.tar.bz2";
+      locale = "ga-IE";
+      arch = "linux-i686";
+      sha512 = "475b766786a50d461ec6896b72c4eef83231f903672d275513c632eb8f4e7e1dd24bc635c18c066fdada4616b99116b3757d59d2718bc8bf21bfa495abea9a5f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/gd/thunderbird-60.6.0.tar.bz2";
+      locale = "gd";
+      arch = "linux-i686";
+      sha512 = "d5ee56fd14c4abbf9d3335cd75e284d6c00ed28db74ffd2a726a19dbed21a74e2d97e9dcb63d63bca31f3637380a29f3bdd1280c670e446850ba8d4e98971395";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/gl/thunderbird-60.6.0.tar.bz2";
+      locale = "gl";
+      arch = "linux-i686";
+      sha512 = "262b36a73483dc3a379d416862f6f5c6d685a366f25a2599ba527d28fe0a17da9f3d377c38559a0688cfc5e5927001d3db7db0693fdbae44ba5596ac92c1a72f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/he/thunderbird-60.6.0.tar.bz2";
+      locale = "he";
+      arch = "linux-i686";
+      sha512 = "404838f4defcb0da984532ba32740c9919ebf57c9e68137e43b1e40263a4f553a573028bc96c9f056141e405b4528e060ead4e30dcdc365e87069393b0056a5f";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/hr/thunderbird-60.6.0.tar.bz2";
+      locale = "hr";
+      arch = "linux-i686";
+      sha512 = "9793e03d4b01c90af721a0197e20ea61c30e09e602321e214674a85ba5366a4eb4a394d0a2347af2a3f8c7f40da2eff50bb25c935db7b59cf573b8e6033469e1";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/hsb/thunderbird-60.6.0.tar.bz2";
+      locale = "hsb";
+      arch = "linux-i686";
+      sha512 = "bd5be5e781edef1d410ed85552d72449e94b13c28a9943cc64ea4bf8092ed477ad61a39eb956b3ed008168a62206a0684ae8b38f370ac88a3c67df78ed57720d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/hu/thunderbird-60.6.0.tar.bz2";
+      locale = "hu";
+      arch = "linux-i686";
+      sha512 = "a5f7e309efb45715dd67b4fb5ee1a88ac4c6ae54d5755c2476cff246d93abca6725116817173c72e701cfd570329f1d84f7732e3eaf3e7fd96e238512298c595";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/hy-AM/thunderbird-60.6.0.tar.bz2";
+      locale = "hy-AM";
+      arch = "linux-i686";
+      sha512 = "145e562fdf0ea143d0c1e9f4581f2b2fc58bf085aa227e4486e780f7da54e7e0b1cce53cfe9dad1ac47aca50beee5e554f3494c7df2e2c240a3a9b350d5f46b8";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/id/thunderbird-60.6.0.tar.bz2";
+      locale = "id";
+      arch = "linux-i686";
+      sha512 = "6f865a97783fe0269547981367717de6577780b24eeab33e26a19fc716cd4733cca28b7fab8cb8156b6a04b09e09b75cfca8b43c07aa99088cfe98a96a716361";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/is/thunderbird-60.6.0.tar.bz2";
+      locale = "is";
+      arch = "linux-i686";
+      sha512 = "756301497644e2656a383f0c76a7723b1ce9ab49f760e08cc6f0159c898634664dcf5f92952310c408ecf8818939a25b3b181fd50836d32d017dc4c45b67dc25";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/it/thunderbird-60.6.0.tar.bz2";
+      locale = "it";
+      arch = "linux-i686";
+      sha512 = "4ebfd6d2dd79e238594286412516729b66fa26d99ed3d6a399428bca87f63bd3f329877f70702d1d43229755268b0e9c951c753ce110250e805cdcdf576e0eb1";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/ja/thunderbird-60.6.0.tar.bz2";
+      locale = "ja";
+      arch = "linux-i686";
+      sha512 = "0cbdd253afec94716c0a4ce4131e8260cf7e42d9a7df48210875524ca33d42fc7c011b3b9724b29054844b159896cf9a03fd817af4cfbae9b718777d4f4b278d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/kab/thunderbird-60.6.0.tar.bz2";
+      locale = "kab";
+      arch = "linux-i686";
+      sha512 = "cf363a3e2177d2ac629713674bd22da270887882f21dccefbd6ca30c71f535c5b69fe1c05554fbed95920d4ebc4acc1649a05be1594b1cad5f4b17a7652f3e74";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/kk/thunderbird-60.6.0.tar.bz2";
+      locale = "kk";
+      arch = "linux-i686";
+      sha512 = "77555e556b3d04ebc07390633e4ba3a3fda8c7ca9c8e7a61f522633a20378c857522598a3ad1b3b55e03bff181df615186183947c7770a3afc3df6c18d58446c";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/ko/thunderbird-60.6.0.tar.bz2";
+      locale = "ko";
+      arch = "linux-i686";
+      sha512 = "634c0ba3322494670df3c7d14b8866d55f185588d1fe6dde706da86a66481f98deefed6739561f3c0c73ca005e1581d541da773c5d3d7caddd5b49510d9f138e";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/lt/thunderbird-60.6.0.tar.bz2";
+      locale = "lt";
+      arch = "linux-i686";
+      sha512 = "9646f54ebabca5e8503d44b099871bfb6345cd4a3fe04ab0211aa8f019800b48faae93eb5565428818c4cf25b8b1e536614f23e4fcac76791c06482aa9fd7396";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/ms/thunderbird-60.6.0.tar.bz2";
+      locale = "ms";
+      arch = "linux-i686";
+      sha512 = "ecec0bac0770bd3cad75881266aea00a9ae3c8506a64e000ffb118cc18cb28a3968b9ece10e11bbc4628612065345ab1f58df0df130a2e497809a244049c1774";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/nb-NO/thunderbird-60.6.0.tar.bz2";
+      locale = "nb-NO";
+      arch = "linux-i686";
+      sha512 = "271be3b2bf2424bb149e7f1a1c11564e9b9d849e043a95489a8215a3ce757d032cfce2ff5df1b666fec5cad00b7a540b437d6d0ef33ccec485a0b5b96f61e8bd";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/nl/thunderbird-60.6.0.tar.bz2";
+      locale = "nl";
+      arch = "linux-i686";
+      sha512 = "a80e354c855d51fc278fc46e83ad41de079f1aff1fb7d0329eba377c07ecf67621f9c11e2c51760b23aeea4547eacc7916f3092e61009b162283a8f4458b5573";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/nn-NO/thunderbird-60.6.0.tar.bz2";
+      locale = "nn-NO";
+      arch = "linux-i686";
+      sha512 = "312414bf118a808ad663807dfab5f69bca61a8f20087cfeac78883a869cd43eb03d5c7dd511a32350c0f59b0e28de7bc1992ce3ba48d8e1b5fe3c2abc09441af";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/pl/thunderbird-60.6.0.tar.bz2";
+      locale = "pl";
+      arch = "linux-i686";
+      sha512 = "4abf25e59400c038e9719200459903e3e113302592bf65d024c1dd05852d51e2969f3f53a33dd55f9d131bcd1405571f713a6dc3165d8af1147616574f4aa5c4";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/pt-BR/thunderbird-60.6.0.tar.bz2";
+      locale = "pt-BR";
+      arch = "linux-i686";
+      sha512 = "ca38fec5178dfc2f841dea0d30490df8be3e4424a2d94bda1a3cf1cbb1908df90c29adafe3f844ec13f2bf87606fcf20066d3789b29440b55762a9c83ff5bfb9";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/pt-PT/thunderbird-60.6.0.tar.bz2";
+      locale = "pt-PT";
+      arch = "linux-i686";
+      sha512 = "f8c25a0d9d6a4ca582c7d3593c8a74c1931fdd4a85ca9ac2af0b37efb877ac0232e9188af5cb5985f1a865aabb252b58197cace1f6cff3ce4551b5f4678eea56";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/rm/thunderbird-60.6.0.tar.bz2";
+      locale = "rm";
+      arch = "linux-i686";
+      sha512 = "ab74f4fa6729d6f7c2f0fb1f99c457ccd65a81be9bb5d7519beef4ec1ddf58c9f51370e7e3fbf71f2a8781f2669b50d20e65e687794b7dfeccb7da99865bd614";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/ro/thunderbird-60.6.0.tar.bz2";
+      locale = "ro";
+      arch = "linux-i686";
+      sha512 = "cb086a6ce3446ee8437c762040b03ee58a3cebd1a0cf473197e7da19d81704bd1ae7cda5d3329e17e76d1f7e682674a12bda3e964fa934fd271d80cfcb5da907";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/ru/thunderbird-60.6.0.tar.bz2";
+      locale = "ru";
+      arch = "linux-i686";
+      sha512 = "2334973a52a5e954b082be0bc9921a6034532edf558a2ffc2b1ffaad7d1d8777832cfe21e005290c65f4ed906816243dc3c1a35a5e078f005ebe84f3769cbad0";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/si/thunderbird-60.6.0.tar.bz2";
+      locale = "si";
+      arch = "linux-i686";
+      sha512 = "aa7a52b410a507571551430d538fe4b84efbc57bad8eb89631c2c79f8bd23399a60e8ba8018e9b086d6562ef4e0e96b5f6b912952838ef38507a6eb41e776fe6";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/sk/thunderbird-60.6.0.tar.bz2";
+      locale = "sk";
+      arch = "linux-i686";
+      sha512 = "4cef3b0059d27313ff35610fc273b7c02faaeb21996a5b62be6cefd0c4b76162fd8a54bae3e2f6527135bfc97ed8133cde34e51505d8abb25d90a03716427370";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/sl/thunderbird-60.6.0.tar.bz2";
+      locale = "sl";
+      arch = "linux-i686";
+      sha512 = "6e4e2771a18bf7af347fff15eb5b5c312b7373d2fa86474317154ed8ae48e996028cda78ad9ac5ad09839af9844039334a25349df2c45c30095606f684b849b4";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/sq/thunderbird-60.6.0.tar.bz2";
+      locale = "sq";
+      arch = "linux-i686";
+      sha512 = "eb1d190808ad33b2eecfd8979c3ae669f44c3426bc247781b11698818f1804ba1b28851b7c7f507b676c87d86d89b7f537d378a130997dc21cd8870e070dedcf";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/sr/thunderbird-60.6.0.tar.bz2";
+      locale = "sr";
+      arch = "linux-i686";
+      sha512 = "bd46e690c9969d65563075996581c9ff13576143425985764a1fef4d2d6d4bf55cecd1e52b3e7a237b187a9144c928578879737f16c4b59be29120b67b18526d";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/sv-SE/thunderbird-60.6.0.tar.bz2";
+      locale = "sv-SE";
+      arch = "linux-i686";
+      sha512 = "19e859d0f94de0b4cd82fb35a63a32cc9dfe09c74429380c90f749748e17123f161398a465b53aa333c50863a256be99df4029f45d08f80a7695b45883c94799";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/tr/thunderbird-60.6.0.tar.bz2";
+      locale = "tr";
+      arch = "linux-i686";
+      sha512 = "964a16f7836a1dcfda273db6c65ea22d516722e410ceb961ee8212540837911ba3b156d5c365a7c1a79c7d2239b0df03dc1176a266d09b075c1e5b870a833352";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/uk/thunderbird-60.6.0.tar.bz2";
+      locale = "uk";
+      arch = "linux-i686";
+      sha512 = "aee1e5a933bcb5238263ebc6ea57e9d3fe851c19c5c017e1e15bbb9e5cf1e9f39edf75b1b908caa4da688e14e41e4318a7fca0c41d045355cdc91b9ef48ba957";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/vi/thunderbird-60.6.0.tar.bz2";
+      locale = "vi";
+      arch = "linux-i686";
+      sha512 = "dd667bf5db90586bb29c97c8dd3bd0d50c5f4c5f5cbebdfc908dda4a54e72575edcf5d5b8bed97b1b6aa7350ea79c767115137aa6500b263bd5ae80d61efdbc1";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/zh-CN/thunderbird-60.6.0.tar.bz2";
+      locale = "zh-CN";
+      arch = "linux-i686";
+      sha512 = "f791ad02b1a67ac2906602a3c90238e5e8062fedea5851a790196eb1da0e19174543a7dc00e53460d40a0c39089c109125875fbec458fd65a650ab7d438cafdf";
+    }
+    { url = "http://archive.mozilla.org/pub/thunderbird/releases/60.6.0/linux-i686/zh-TW/thunderbird-60.6.0.tar.bz2";
+      locale = "zh-TW";
+      arch = "linux-i686";
+      sha512 = "83cec9f663cd4e02d921f2f96a7dab791cdb015756f63148833491a263abb297bed5ee64101b4ae86ea4a3ed09b75d668bcf36a12563885f3eb164655b3348bd";
+    }
+    ];
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/default.nix
new file mode 100644
index 000000000000..e419b68ad81b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/default.nix
@@ -0,0 +1,198 @@
+{ lib, stdenv, fetchurl, pkgconfig, gtk2, pango, perl, python, zip, fetchpatch
+, libIDL, libjpeg, zlib, dbus, dbus-glib, bzip2, xorg
+, freetype, fontconfig, file, nspr, nss, libnotify
+, yasm, libGLU_combined, sqlite, unzip
+, hunspell, libevent, libstartup_notification
+, icu, libpng, jemalloc
+, autoconf213, which, m4
+, writeScript, xidel, common-updater-scripts, coreutils, gnused, gnugrep, curl, runtimeShell
+, cargo, rustc, llvmPackages
+, enableGTK3 ? false, gtk3, gnome3, wrapGAppsHook, makeWrapper
+, enableCalendar ? true
+, debugBuild ? false
+, # If you want the resulting program to call itself "Thunderbird" instead
+  # of "Earlybird" or whatever, enable this option.  However, those
+  # binaries may not be distributed without permission from the
+  # Mozilla Foundation, see
+  # http://www.mozilla.org/foundation/trademarks/.
+  enableOfficialBranding ? false
+, makeDesktopItem
+}:
+
+let
+  wrapperTool = if enableGTK3 then wrapGAppsHook else makeWrapper;
+  gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc;
+in stdenv.mkDerivation rec {
+  name = "thunderbird-${version}";
+  version = "60.6.0";
+
+  src = fetchurl {
+    url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz";
+    sha512 = "2s8h6z3rkylrclng1cpmj5dvsbhqymrdwvjy3g2s8rq66xca13wkyswdhgh8671d0dw9bmminikk53d2xqg7lqvvd1rdsminwscln4z";
+  };
+
+  # from firefox, but without sound libraries
+  buildInputs =
+    [ gtk2 zip libIDL libjpeg zlib bzip2
+      dbus dbus-glib pango freetype fontconfig xorg.libXi
+      xorg.libX11 xorg.libXrender xorg.libXft xorg.libXt file
+      nspr nss libnotify xorg.pixman yasm libGLU_combined
+      xorg.libXScrnSaver xorg.xorgproto
+      xorg.libXext sqlite unzip
+      hunspell libevent libstartup_notification /* cairo */
+      icu libpng jemalloc
+    ]
+    ++ lib.optionals enableGTK3 [ gtk3 gnome3.adwaita-icon-theme ];
+
+  # from firefox + m4 + wrapperTool
+  nativeBuildInputs = [ m4 autoconf213 which gnused pkgconfig perl python wrapperTool cargo rustc ];
+
+  patches = [
+    # Remove buildconfig.html to prevent a dependency on clang etc.
+    ./no-buildconfig.patch
+  ];
+
+  configureFlags =
+    [ # from firefox, but without sound libraries (alsa, libvpx, pulseaudio)
+      "--enable-application=comm/mail"
+      "--disable-alsa"
+      "--disable-pulseaudio"
+
+      "--with-system-jpeg"
+      "--with-system-zlib"
+      "--with-system-bz2"
+      "--with-system-nspr"
+      "--with-system-nss"
+      "--with-system-libevent"
+      "--with-system-png" # needs APNG support
+      "--with-system-icu"
+      "--enable-rust-simd"
+      "--enable-system-ffi"
+      "--enable-system-hunspell"
+      "--enable-system-pixman"
+      "--enable-system-sqlite"
+      #"--enable-system-cairo"
+      "--enable-startup-notification"
+      "--disable-crashreporter"
+      "--disable-tests"
+      "--disable-necko-wifi" # maybe we want to enable this at some point
+      "--disable-updater"
+      "--enable-jemalloc"
+      "--disable-gconf"
+      "--enable-default-toolkit=cairo-gtk${if enableGTK3 then "3" else "2"}"
+      "--enable-js-shell"
+    ]
+      ++ lib.optional enableCalendar "--enable-calendar"
+      ++ (if debugBuild then [ "--enable-debug" "--enable-profiling"]
+                        else [ "--disable-debug" "--enable-release"
+                               "--disable-debug-symbols"
+                               "--enable-optimize" "--enable-strip" ])
+      ++ lib.optional enableOfficialBranding "--enable-official-branding"
+      ++ lib.optionals (lib.versionAtLeast version "56" && !stdenv.hostPlatform.isi686) [
+        # on i686-linux: --with-libclang-path is not available in this configuration
+        "--with-libclang-path=${llvmPackages.libclang}/lib"
+        "--with-clang-path=${llvmPackages.clang}/bin/clang"
+      ];
+
+  enableParallelBuilding = true;
+
+  preConfigure =
+    ''
+      cxxLib=$( echo -n ${gcc}/include/c++/* )
+      archLib=$cxxLib/$( ${gcc}/bin/gcc -dumpmachine )
+
+      test -f layout/style/ServoBindings.toml && sed -i -e '/"-DRUST_BINDGEN"/ a , "-cxx-isystem", "'$cxxLib'", "-isystem", "'$archLib'"' layout/style/ServoBindings.toml
+
+      configureScript="$(realpath ./configure)"
+      mkdir ../objdir
+      cd ../objdir
+    '';
+
+  dontWrapGApps = true; # we do it ourselves
+  postInstall =
+    ''
+      # TODO: Move to a dev output?
+      rm -rf $out/include $out/lib/thunderbird-devel-* $out/share/idl
+
+      # $binary is a symlink to $target.
+      # We wrap $target by replacing the $binary symlink.
+      local target="$out/lib/thunderbird/thunderbird"
+      local binary="$out/bin/thunderbird"
+
+      # Wrap correctly, this is needed to
+      # 1) find Mozilla runtime, because argv0 must be the real thing,
+      #    or a symlink thereto. It cannot be the wrapper itself
+      # 2) detect itself as the default mailreader across builds
+      gappsWrapperArgs+=(
+        --argv0 "$target"
+        --set MOZ_APP_LAUNCHER thunderbird
+      )
+      ${
+        # We wrap manually because wrapGAppsHook does not detect the symlink
+        # To mimic wrapGAppsHook, we run it with dontWrapGApps, so
+        # gappsWrapperArgs gets defined correctly
+        lib.optionalString enableGTK3 "wrapGAppsHook"
+      }
+
+      # "$binary" is a symlink, replace it by the wrapper
+      rm "$binary"
+      makeWrapper "$target" "$binary" "''${gappsWrapperArgs[@]}"
+
+      ${ let desktopItem = makeDesktopItem {
+          name = "thunderbird";
+          exec = "thunderbird %U";
+          desktopName = "Thunderbird";
+          icon = "$out/lib/thunderbird/chrome/icons/default/default256.png";
+          genericName = "Mail Reader";
+          categories = "Application;Network";
+          mimeType = stdenv.lib.concatStringsSep ";" [
+            # Email
+            "x-scheme-handler/mailto"
+            "message/rfc822"
+            # Newsgroup
+            "x-scheme-handler/news"
+            "x-scheme-handler/snews"
+            "x-scheme-handler/nntp"
+            # Feed
+            "x-scheme-handler/feed"
+            "application/rss+xml"
+            "application/x-extension-rss"
+          ];
+        }; in desktopItem.buildCommand
+      }
+    '';
+
+  postFixup =
+    # Fix notifications. LibXUL uses dlopen for this, unfortunately; see #18712.
+    ''
+      patchelf --set-rpath "${lib.getLib libnotify
+        }/lib:$(patchelf --print-rpath "$out"/lib/thunderbird*/libxul.so)" \
+          "$out"/lib/thunderbird*/libxul.so
+    '';
+
+  doInstallCheck = true;
+  installCheckPhase =
+    ''
+      # Some basic testing
+      "$out/bin/thunderbird" --version
+    '';
+
+  disallowedRequisites = [ stdenv.cc ];
+
+  meta = with stdenv.lib; {
+    description = "A full-featured e-mail client";
+    homepage = http://www.mozilla.org/thunderbird/;
+    license =
+      # Official branding implies thunderbird name and logo cannot be reuse,
+      # see http://www.mozilla.org/foundation/licensing.html
+      if enableOfficialBranding then licenses.proprietary else licenses.mpl11;
+    maintainers = [ maintainers.pierron maintainers.eelco ];
+    platforms = platforms.linux;
+  };
+
+  passthru.updateScript = import ./../../browsers/firefox/update.nix {
+    attrPath = "thunderbird";
+    baseUrl = "http://archive.mozilla.org/pub/thunderbird/releases/";
+    inherit stdenv writeScript lib common-updater-scripts xidel coreutils gnused gnugrep curl runtimeShell;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig.patch b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig.patch
new file mode 100644
index 000000000000..65eba3a2fc28
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/thunderbird/no-buildconfig.patch
@@ -0,0 +1,23 @@
+diff -ru -x '*~' a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp
+--- a/docshell/base/nsAboutRedirector.cpp	2017-07-31 18:20:51.000000000 +0200
++++ b/docshell/base/nsAboutRedirector.cpp	2017-09-26 22:02:00.814151731 +0200
+@@ -32,8 +32,6 @@
+     {"about", "chrome://global/content/aboutAbout.xhtml", 0},
+     {"addons", "chrome://mozapps/content/extensions/extensions.xul",
+      nsIAboutModule::ALLOW_SCRIPT},
+-    {"buildconfig", "chrome://global/content/buildconfig.html",
+-     nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT},
+     {"checkerboard", "chrome://global/content/aboutCheckerboard.xhtml",
+      nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
+          nsIAboutModule::ALLOW_SCRIPT},
+diff -ru -x '*~' a/toolkit/content/jar.mn b/toolkit/content/jar.mn
+--- a/toolkit/content/jar.mn	2017-07-31 18:20:52.000000000 +0200
++++ b/toolkit/content/jar.mn	2017-09-26 22:01:42.383350314 +0200
+@@ -39,7 +39,6 @@
+    content/global/plugins.css
+    content/global/browser-child.js
+    content/global/browser-content.js
+-*   content/global/buildconfig.html
+    content/global/buildconfig.css
+    content/global/contentAreaUtils.js
+    content/global/datepicker.xhtml
diff --git a/nixpkgs/pkgs/applications/networking/mailreaders/trojita/default.nix b/nixpkgs/pkgs/applications/networking/mailreaders/trojita/default.nix
new file mode 100644
index 000000000000..2d96d0336132
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mailreaders/trojita/default.nix
@@ -0,0 +1,37 @@
+{ mkDerivation
+, lib
+, fetchurl
+, cmake
+, qtbase
+, qtwebkit
+, qttools
+}:
+
+mkDerivation rec {
+  name = "trojita-${version}";
+  version = "0.7";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/trojita/trojita/${name}.tar.xz";
+    sha256 = "1n9n07md23ny6asyw0xpih37vlwzp7vawbkprl7a1bqwfa0si3g0";
+  };
+
+  buildInputs = [
+    qtbase
+    qtwebkit
+  ];
+
+  nativeBuildInputs = [
+    cmake
+    qttools
+  ];
+
+
+  meta = with lib; {
+    description = "A Qt IMAP e-mail client";
+    homepage = http://trojita.flaska.net/;
+    license = with licenses; [ gpl2 gpl3 ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/modem-manager-gui/default.nix b/nixpkgs/pkgs/applications/networking/modem-manager-gui/default.nix
new file mode 100644
index 000000000000..ca8a4d0fb0cb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/modem-manager-gui/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, buildEnv, pkgconfig, python3, fetchhg, gtk3, glib, gdbm, gtkspell3, itstool, libappindicator-gtk3, perlPackages, glibcLocales, meson, ninja }:
+
+stdenv.mkDerivation rec {
+  name = "modem-manager-gui-${version}";
+  version = "0.0.19.1";
+
+  src = fetchhg {
+    url = https://linuxonly@bitbucket.org/linuxonly/modem-manager-gui;
+    rev = "version ${version}";
+    sha256 = "11iibh36567814h2bz41sa1072b86p1l13xyj670pwkh9k8kw8fd";
+  };
+
+  LC_ALL = "en_US.utf-8";
+
+  nativeBuildInputs = [
+    pkgconfig
+    python3
+    perlPackages.Po4a
+    itstool
+    glibcLocales
+    meson
+    ninja
+  ];
+
+  buildInputs = [
+    gtk3
+    glib
+    gdbm
+    gtkspell3
+    libappindicator-gtk3
+  ];
+
+  postPatch = ''
+    patchShebangs man/manhelper.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An app to send/receive SMS, make USSD requests, control mobile data usage and more";
+    longDescription = ''
+      A simple GTK+ based GUI compatible with Modem manager, Wader and oFono
+      system services able to control EDGE/3G/4G broadband modem specific
+      functions. You can check balance of your SIM card, send or receive SMS
+      messages, control mobile traffic consumption and more.
+    '';
+    homepage = https://linuxonly.ru/page/modem-manager-gui;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ ahuzik ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/mpop/default.nix b/nixpkgs/pkgs/applications/networking/mpop/default.nix
new file mode 100644
index 000000000000..a48cc47106c5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mpop/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, openssl, pkgconfig, gnutls, gsasl, libidn, Security }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  version = "1.4.3";
+  name = "mpop-${version}";
+
+  src = fetchurl {
+    url = "https://marlam.de/mpop/releases/${name}.tar.xz";
+    sha256 = "1di86frxv4gj8fasni409m87qmv0j0vmj13lawkz1pwv9hbynhjb";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ gnutls gsasl libidn ]
+    ++ optional stdenv.isDarwin Security;
+
+  configureFlags = optional stdenv.isDarwin [ "--with-macosx-keyring" ];
+
+  meta = {
+      description = "POP3 mail retrieval agent";
+      homepage = https://marlam.de/mpop;
+      license = licenses.gpl3Plus;
+      platforms = platforms.unix;
+    };
+}
diff --git a/nixpkgs/pkgs/applications/networking/msmtp/default.nix b/nixpkgs/pkgs/applications/networking/msmtp/default.nix
new file mode 100644
index 000000000000..b5973fc8d3ee
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/msmtp/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, lib, fetchurl, autoreconfHook, pkgconfig
+, netcat-gnu, gnutls, gsasl, libidn2, Security
+, withKeyring ? true, libsecret ? null
+, systemd ? null }:
+
+let
+  tester = "n"; # {x| |p|P|n|s}
+  journal = if stdenv.isLinux then "y" else "n";
+
+in stdenv.mkDerivation rec {
+  pname = "msmtp";
+  name = "${pname}-${version}";
+  version = "1.8.3";
+
+  src = fetchurl {
+    url = "https://marlam.de/msmtp/releases/${name}.tar.xz";
+    sha256 = "1d4jdgrx4czp66nnwdsy938lzr4llhwyy0715pwg0j6h6gyyxciw";
+  };
+
+  patches = [
+    ./paths.patch
+  ];
+
+  buildInputs = [ gnutls gsasl libidn2 ]
+    ++ stdenv.lib.optional stdenv.isDarwin Security
+    ++ stdenv.lib.optional withKeyring libsecret;
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+
+  configureFlags =
+    [ "--sysconfdir=/etc" ] ++ stdenv.lib.optional stdenv.isDarwin [ "--with-macosx-keyring" ];
+
+  postInstall = ''
+    install -d $out/share/doc/${pname}/scripts
+    cp -r scripts/{find_alias,msmtpqueue,msmtpq,set_sendmail} $out/share/doc/${pname}/scripts
+    install -Dm644 doc/*.example $out/share/doc/${pname}
+
+    substitute scripts/msmtpq/msmtpq $out/bin/msmtpq \
+      --replace @msmtp@      $out/bin/msmtp \
+      --replace @nc@         ${netcat-gnu}/bin/nc \
+      --replace @journal@    ${journal} \
+      ${lib.optionalString (journal == "y") "--replace @systemdcat@ ${systemd}/bin/systemd-cat" } \
+      --replace @test@       ${tester}
+
+    substitute scripts/msmtpq/msmtp-queue $out/bin/msmtp-queue \
+      --replace @msmtpq@ $out/bin/msmtpq
+
+    ln -s msmtp $out/bin/sendmail
+
+    chmod +x $out/bin/*
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple and easy to use SMTP client with excellent sendmail compatibility";
+    homepage = https://marlam.de/msmtp/;
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ garbas peterhoeg ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/msmtp/paths.patch b/nixpkgs/pkgs/applications/networking/msmtp/paths.patch
new file mode 100644
index 000000000000..38e4155a1137
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/msmtp/paths.patch
@@ -0,0 +1,96 @@
+diff --git a/scripts/msmtpq/msmtp-queue b/scripts/msmtpq/msmtp-queue
+index 1dc220d..d834241 100755
+--- a/scripts/msmtpq/msmtp-queue
++++ b/scripts/msmtpq/msmtp-queue
+@@ -27,4 +27,4 @@
+ ## change the below line to be
+ ##   exec /path/to/msmtpq --q-mgmt
+ 
+-exec msmtpq --q-mgmt "$1"
++exec @msmtpq@ --q-mgmt "$1"
+diff --git a/scripts/msmtpq/msmtpq b/scripts/msmtpq/msmtpq
+index bdb4fb8..1363a67 100755
+--- a/scripts/msmtpq/msmtpq
++++ b/scripts/msmtpq/msmtpq
+@@ -59,7 +59,7 @@ err() { dsp '' "$@" '' ; exit 1 ; }
+ ##   enter the location of the msmtp executable  (no quotes !!)
+ ##   e.g. ( MSMTP=/path/to/msmtp )
+ ##   and uncomment the test for its existence
+-MSMTP=msmtp
++MSMTP=@msmtp@
+ #[ -x "$MSMTP" ] || \
+ #  log -e 1 "msmtpq : can't find the msmtp executable [ $MSMTP ]"   # if not found - complain ; quit
+ ##
+@@ -70,9 +70,8 @@ MSMTP=msmtp
+ ##            ( chmod 0700 msmtp.queue )
+ ##
+ ## the queue dir - modify this to reflect where you'd like it to be  (no quotes !!)
+-Q=~/.msmtp.queue
+-[ -d "$Q" ] || \
+-  err '' "msmtpq : can't find msmtp queue directory [ $Q ]" ''     # if not present - complain ; quit
++Q=${MSMTP_QUEUE:-~/.msmtp.queue}
++test -d "$Q" || mkdir -p "$Q"
+ ##
+ ## set the queue log file var to the location of the msmtp queue log file
+ ##   where it is or where you'd like it to be
+@@ -84,7 +83,10 @@ Q=~/.msmtp.queue
+ ##     (doing so would be inadvisable under most conditions, however)
+ ##
+ ## the queue log file - modify (or comment out) to taste  (but no quotes !!)
+-LOG=~/log/msmtp.queue.log
++LOG=${MSMTP_LOG:-~/log/msmtp.queue.log}
++test -d "$(dirname $LOG)" || mkdir -p "$(dirname $LOG)"
++
++JOURNAL=@journal@
+ ## ======================================================================================
+ 
+ ## msmtpq can use the following environment variables :
+@@ -108,7 +110,7 @@ LOG=~/log/msmtp.queue.log
+ ##
+ #EMAIL_CONN_NOTEST=y                 # deprecated ; use below var
+ #EMAIL_CONN_TEST={x| |p|P|n|s}       # see settings above for EMAIL_CONN_TEST
+-EMAIL_CONN_TEST=n
++EMAIL_CONN_TEST=@test@
+ #EMAIL_QUEUE_QUIET=t
+ ## ======================================================================================
+ 
+@@ -138,6 +140,7 @@ on_exit() {                          # unlock the queue on exit if the lock was
+ ## display msg to user, as well
+ ##
+ log() {
++  local NAME=msmtpq
+   local ARG RC PFX="$('date' +'%Y %d %b %H:%M:%S')"
+                                      # time stamp prefix - "2008 13 Mar 03:59:45 "
+   if [ "$1" = '-e' ] ; then          # there's an error exit code
+@@ -154,10 +157,19 @@ log() {
+     done
+   fi
+ 
++  if [ "$JOURNAL" == "y" ] ; then
++    for ARG ; do
++      [ -n "$ARG" ] && \
++        echo "$PFX : $ARG" | @systemdcat@ -t $NAME -p info
++    done
++  fi
++
+   if [ -n "$RC" ] ; then             # an error ; leave w/error return
+     [ -n "$LKD" ] && lock_queue -u   # unlock here (if locked)
+     [ -n "$LOG" ] && \
+       echo "    exit code = $RC" >> "$LOG" # logging ok ; send exit code to log
++    [ "$JOURNAL" == "y" ] && \
++      echo "exit code= $RC" | @systemdcat@ -t $NAME -p emerg
+     exit $RC                         # exit w/return code
+   fi
+ }
+@@ -207,10 +219,7 @@ connect_test() {
+     ping -qnc1 -w4 8.8.8.8 >/dev/null 2>&1 || return 1
+ 
+   elif [ "$EMAIL_CONN_TEST" = 'n' ] ; then                     # use netcat (nc) test
+-    # must, of course, have netcat (nc) installed
+-    which nc >/dev/null 2>&1 || \
+-      log -e 1 "msmtpq : can't find netcat executable [ nc ]"  # if not found - complain ; quit
+-    'nc' -vz www.debian.org 80 >/dev/null 2>&1 || return 1
++    @nc@ -vz www.debian.org 80 >/dev/null 2>&1 || return 1
+ 
+   elif [ "$EMAIL_CONN_TEST" = 's' ] ; then                     # use sh sockets test
+     # note that this does not work on debian systems
diff --git a/nixpkgs/pkgs/applications/networking/mumble/default.nix b/nixpkgs/pkgs/applications/networking/mumble/default.nix
new file mode 100644
index 000000000000..f589a149d85c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mumble/default.nix
@@ -0,0 +1,165 @@
+{ stdenv, fetchurl, fetchFromGitHub, fetchpatch, makeWrapper, pkgconfig
+, qt4, qmake4Hook, qt5, avahi, boost, libopus, libsndfile, protobuf, speex, libcap
+, alsaLib, python
+, jackSupport ? false, libjack2 ? null
+, speechdSupport ? false, speechd ? null
+, pulseSupport ? false, libpulseaudio ? null
+, iceSupport ? false, zeroc_ice ? null
+}:
+
+assert jackSupport -> libjack2 != null;
+assert speechdSupport -> speechd != null;
+assert pulseSupport -> libpulseaudio != null;
+assert iceSupport -> zeroc_ice != null;
+
+with stdenv.lib;
+let
+  generic = overrides: source: stdenv.mkDerivation (source // overrides // {
+    name = "${overrides.type}-${source.version}";
+
+    patches = (source.patches or []) ++ optional jackSupport ./mumble-jack-support.patch;
+
+    nativeBuildInputs = [ pkgconfig python ]
+      ++ { qt4 = [ qmake4Hook ]; qt5 = [ qt5.qmake ]; }."qt${toString source.qtVersion}"
+      ++ (overrides.nativeBuildInputs or [ ]);
+    buildInputs = [ boost protobuf avahi ]
+      ++ { qt4 = [ qt4 ]; qt5 = [ qt5.qtbase ]; }."qt${toString source.qtVersion}"
+      ++ (overrides.buildInputs or [ ]);
+
+    qmakeFlags = [
+      "CONFIG+=c++11"
+      "CONFIG+=shared"
+      "CONFIG+=no-g15"
+      "CONFIG+=packaged"
+      "CONFIG+=no-update"
+      "CONFIG+=no-embed-qt-translations"
+      "CONFIG+=bundled-celt"
+      "CONFIG+=no-bundled-opus"
+      "CONFIG+=no-bundled-speex"
+    ] ++ optional (!speechdSupport) "CONFIG+=no-speechd"
+      ++ optional jackSupport "CONFIG+=no-oss CONFIG+=no-alsa CONFIG+=jackaudio"
+      ++ optional (!iceSupport) "CONFIG+=no-ice"
+      ++ (overrides.configureFlags or [ ]);
+
+    preConfigure = ''
+       qmakeFlags="$qmakeFlags DEFINES+=PLUGIN_PATH=$out/lib"
+       patchShebangs scripts
+    '';
+
+    makeFlags = [ "release" ];
+
+    installPhase = ''
+      mkdir -p $out/{lib,bin}
+      find release -type f -not -name \*.\* -exec cp {} $out/bin \;
+      find release -type f -name \*.\* -exec cp {} $out/lib \;
+
+      mkdir -p $out/share/man/man1
+      cp man/mum* $out/share/man/man1
+    '' + (overrides.installPhase or "");
+
+    enableParallelBuilding = true;
+
+    meta = {
+      description = "Low-latency, high quality voice chat software";
+      homepage = https://mumble.info;
+      license = licenses.bsd3;
+      maintainers = with maintainers; [ ];
+      platforms = platforms.linux;
+    };
+  });
+
+  client = source: generic {
+    type = "mumble";
+
+    nativeBuildInputs = optionals (source.qtVersion == 5) [ qt5.qttools ];
+    buildInputs = [ libopus libsndfile speex ]
+      ++ optional (source.qtVersion == 5) qt5.qtsvg
+      ++ optional stdenv.isLinux alsaLib
+      ++ optional jackSupport libjack2
+      ++ optional speechdSupport speechd
+      ++ optional pulseSupport libpulseaudio;
+
+    configureFlags = [
+      "CONFIG+=no-server"
+    ];
+
+    NIX_CFLAGS_COMPILE = optional speechdSupport "-I${speechd}/include/speech-dispatcher";
+
+    installPhase = ''
+      mkdir -p $out/share/applications
+      cp scripts/mumble.desktop $out/share/applications
+
+      mkdir -p $out/share/icons{,/hicolor/scalable/apps}
+      cp icons/mumble.svg $out/share/icons
+      ln -s $out/share/icons/mumble.svg $out/share/icons/hicolor/scalable/apps
+    '';
+  } source;
+
+  server = generic {
+    type = "murmur";
+
+    postPatch = optional iceSupport ''
+      grep -Rl '/usr/share/Ice' . | xargs sed -i 's,/usr/share/Ice/,${zeroc_ice}/,g'
+    '';
+
+    configureFlags = [
+      "CONFIG+=no-client"
+    ];
+
+    buildInputs = [ libcap ] ++ optional iceSupport zeroc_ice;
+  };
+
+  stableSource = rec {
+    version = "1.2.19";
+    qtVersion = 4;
+
+    src = fetchurl {
+      url = "https://github.com/mumble-voip/mumble/releases/download/${version}/mumble-${version}.tar.gz";
+      sha256 = "1s60vaici3v034jzzi20x23hsj6mkjlc0glipjq4hffrg9qgnizh";
+    };
+
+    patches = [
+      # Fix compile error against boost 1.66 (#33655):
+      (fetchpatch {
+        url = "https://github.com/mumble-voip/mumble/commit/"
+            + "ea861fe86743c8402bbad77d8d1dd9de8dce447e.patch";
+        sha256 = "1r50dc8dcl6jmbj4abhnay9div7y56kpmajzqd7ql0pm853agwbh";
+      })
+      # Fixes hang on reconfiguring audio (often including startup)
+      # https://github.com/mumble-voip/mumble/pull/3418
+      (fetchpatch {
+        url = "https://github.com/mumble-voip/mumble/commit/"
+            + "fbbdf2e8ab7d93ed6f7680268ad0689b7eaa71ad.patch";
+        sha256 = "1yhj62mlwm6q42i4aclbia645ha97d3j4ycxhgafr46dbjs0gani";
+      })
+    ];
+  };
+
+  gitSource = rec {
+    version = "2018-07-01";
+    qtVersion = 5;
+
+    # Needs submodules
+    src = fetchFromGitHub {
+      owner = "mumble-voip";
+      repo = "mumble";
+      rev = "c19ac8c0b0f934d2ff206858d7cb66352d6eb418";
+      sha256 = "1mzp1bgn49ycs16d6r8icqq35wq25198fs084vyq6j5f78ni7pvz";
+      fetchSubmodules = true;
+    };
+  };
+in {
+  mumble     = client stableSource;
+  mumble_git = client gitSource;
+  murmur     = server stableSource;
+  murmur_git = (server gitSource).overrideAttrs (old: {
+    meta = old.meta // { broken = iceSupport; };
+
+    nativeBuildInputs = old.nativeBuildInputs or [] ++ [ makeWrapper ];
+
+    installPhase = old.installPhase or "" + ''
+      wrapProgram $out/bin/murmurd --suffix QT_PLUGIN_PATH : \
+        ${getBin qt5.qtbase}/${qt5.qtbase.qtPluginPrefix}
+    '';
+  });
+}
diff --git a/nixpkgs/pkgs/applications/networking/mumble/mumble-jack-support.patch b/nixpkgs/pkgs/applications/networking/mumble/mumble-jack-support.patch
new file mode 100644
index 000000000000..7c18a33193df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mumble/mumble-jack-support.patch
@@ -0,0 +1,457 @@
+The patch was created by Filipe Coelho (falkTX) of the KXStudio
+project. http://kxstudio.sourceforge.net
+
+diff -U 3 -H -d -r -N -- mumble-1.2.2.orig/src/mumble/JackAudio.cpp mumble-1.2.2/src/mumble/JackAudio.cpp
+--- mumble-1.2.2.orig/src/mumble/JackAudio.cpp	1970-01-01 01:00:00.000000000 +0100
++++ mumble-1.2.2/src/mumble/JackAudio.cpp	2011-01-26 06:02:00.000000000 +0000
+@@ -0,0 +1,314 @@
++/* Copyright (C) 2011, Benjamin Jemlich <pcgod@users.sourceforge.net>
++   Copyright (C) 2011, Filipe Coelho <falktx@gmail.com>
++
++   All rights reserved.
++
++   Redistribution and use in source and binary forms, with or without
++   modification, are permitted provided that the following conditions
++   are met:
++
++   - Redistributions of source code must retain the above copyright notice,
++     this list of conditions and the following disclaimer.
++   - Redistributions in binary form must reproduce the above copyright notice,
++     this list of conditions and the following disclaimer in the documentation
++     and/or other materials provided with the distribution.
++   - Neither the name of the Mumble Developers nor the names of its
++     contributors may be used to endorse or promote products derived from this
++     software without specific prior written permission.
++
++   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
++   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
++   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
++   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
++   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++*/
++
++#include "JackAudio.h"
++#include "User.h"
++#include "Global.h"
++#include "MainWindow.h"
++#include "Timer.h"
++
++#include <cstring>
++
++static JackAudioSystem *jasys = NULL;
++
++class JackAudioInputRegistrar : public AudioInputRegistrar {
++        public:
++                JackAudioInputRegistrar();
++                virtual AudioInput *create();
++                virtual const QList<audioDevice> getDeviceChoices();
++                virtual void setDeviceChoice(const QVariant &, Settings &);
++                virtual bool canEcho(const QString &) const;
++};
++
++class JackAudioOutputRegistrar : public AudioOutputRegistrar {
++        public:
++                JackAudioOutputRegistrar();
++                virtual AudioOutput *create();
++                virtual const QList<audioDevice> getDeviceChoices();
++                virtual void setDeviceChoice(const QVariant &, Settings &);
++};
++
++class JackAudioInit : public DeferInit {
++        public:
++                JackAudioInputRegistrar *airJackAudio;
++                JackAudioOutputRegistrar *aorJackAudio;
++                void initialize() {
++                        jasys = new JackAudioSystem();
++                        jasys->init_jack();
++                        jasys->qmWait.lock();
++                        jasys->qwcWait.wait(&jasys->qmWait, 1000);
++                        jasys->qmWait.unlock();
++                        if (jasys->bJackIsGood) {
++                                airJackAudio = new JackAudioInputRegistrar();
++                                aorJackAudio = new JackAudioOutputRegistrar();
++                        } else {
++                                airJackAudio = NULL;
++                                aorJackAudio = NULL;
++                                delete jasys;
++                                jasys = NULL;
++                        }
++                };
++                void destroy() {
++                        if (airJackAudio)
++                                delete airJackAudio;
++                        if (aorJackAudio)
++                                delete aorJackAudio;
++                        if (jasys) {
++                                jasys->close_jack();
++                                delete jasys;
++                                jasys = NULL;
++                        }
++                };
++};
++
++static JackAudioInit jackinit; //unused
++
++JackAudioSystem::JackAudioSystem() {
++        bJackIsGood = false;
++        iSampleRate = 0;
++}
++
++JackAudioSystem::~JackAudioSystem() {
++}
++
++void JackAudioSystem::init_jack()
++{
++        client = jack_client_open("mumble", JackNullOption, 0);
++
++        if (client) {
++                in_port = jack_port_register(client, "input", JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0);
++                out_port = jack_port_register(client, "output", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
++                jack_set_process_callback(client, process_callback, this);
++                jack_set_sample_rate_callback(client, srate_callback, this);
++                jack_on_shutdown(client, shutdown_callback, this);
++
++                iSampleRate = jack_get_sample_rate(client);
++
++                if (jack_activate(client) || in_port == NULL || out_port == NULL) {
++                    client = NULL;
++                    return;
++                }
++
++                int port_flags;
++                unsigned i = -1;
++                const char** ports = jack_get_ports(client, 0, 0, JackPortIsPhysical);
++
++                if (ports) {
++                    while (ports[++i])
++                    {
++                        jack_port_t* port = jack_port_by_name(client, ports[i]);
++                        port_flags = jack_port_flags(port);
++
++                        if (port_flags & (JackPortIsPhysical|JackPortIsOutput) && strstr(jack_port_type(port), "audio")) {
++                            jack_connect(client, ports[i], jack_port_name(in_port));
++                        }
++                        if (port_flags & (JackPortIsPhysical|JackPortIsInput) && strstr(jack_port_type(port), "audio")) {
++                            jack_connect(client, jack_port_name(out_port), ports[i]);
++                        }
++                    }
++                }
++
++                jack_free(ports);
++
++                // If we made it this far, then everything is okay
++                qhInput.insert(QString(), tr("Hardware Ports"));
++                qhOutput.insert(QString(), tr("Hardware Ports"));
++                bJackIsGood = true;
++
++            } else {
++                bJackIsGood = false;
++                client = NULL;
++            }
++}
++
++void JackAudioSystem::close_jack()
++{
++        if (client) {
++                jack_deactivate(client);
++                jack_client_close(client);
++                client = NULL;
++        }
++}
++
++int JackAudioSystem::process_callback(jack_nframes_t nframes, void *arg)
++{
++        JackAudioSystem *jas = (JackAudioSystem*)arg;
++
++        if (jas && jas->bJackIsGood) {
++                AudioInputPtr ai = g.ai;
++                AudioOutputPtr ao = g.ao;
++                JackAudioInput *jai = (JackAudioInput*)(ai.get());
++                JackAudioOutput *jao = (JackAudioOutput*)(ao.get());
++
++                if (jai && jai->bRunning && jai->iMicChannels > 0 && !jai->isFinished()) {
++                        void* input = jack_port_get_buffer(jas->in_port, nframes);
++                        if ((float*)input != 0)
++                            jai->addMic(input, nframes);
++                }
++
++                if (jao && jao->bRunning && jao->iChannels > 0 && !jao->isFinished()) {
++                        jack_default_audio_sample_t* output = (jack_default_audio_sample_t*)jack_port_get_buffer(jas->out_port, nframes);
++                        memset(output, 0, sizeof(jack_default_audio_sample_t)*nframes); //TEST
++                        jao->mix(output, nframes);
++                }
++        }
++
++        return 0;
++}
++
++int JackAudioSystem::srate_callback(jack_nframes_t frames, void *arg)
++{
++        JackAudioSystem *jas = (JackAudioSystem*)arg;
++        jas->iSampleRate = frames;
++        return 0;
++}
++
++void JackAudioSystem::shutdown_callback(void *arg)
++{
++        JackAudioSystem *jas = (JackAudioSystem*)arg;
++        jas->bJackIsGood = false;
++}
++
++JackAudioInputRegistrar::JackAudioInputRegistrar() : AudioInputRegistrar(QLatin1String("JACK"), 10) {
++}
++
++AudioInput *JackAudioInputRegistrar::create() {
++        return new JackAudioInput();
++}
++
++const QList<audioDevice> JackAudioInputRegistrar::getDeviceChoices() {
++        QList<audioDevice> qlReturn;
++
++        QStringList qlInputDevs = jasys->qhInput.keys();
++        qSort(qlInputDevs);
++
++        foreach(const QString &dev, qlInputDevs) {
++                qlReturn << audioDevice(jasys->qhInput.value(dev), dev);
++        }
++
++        return qlReturn;
++}
++
++void JackAudioInputRegistrar::setDeviceChoice(const QVariant &choice, Settings &s) {
++        Q_UNUSED(choice);
++        Q_UNUSED(s);
++}
++
++bool JackAudioInputRegistrar::canEcho(const QString &osys) const {
++        Q_UNUSED(osys);
++        return false;
++}
++
++JackAudioOutputRegistrar::JackAudioOutputRegistrar() : AudioOutputRegistrar(QLatin1String("JACK"), 10) {
++}
++
++AudioOutput *JackAudioOutputRegistrar::create() {
++        return new JackAudioOutput();
++}
++
++const QList<audioDevice> JackAudioOutputRegistrar::getDeviceChoices() {
++        QList<audioDevice> qlReturn;
++
++        QStringList qlOutputDevs = jasys->qhOutput.keys();
++        qSort(qlOutputDevs);
++
++        foreach(const QString &dev, qlOutputDevs) {
++                qlReturn << audioDevice(jasys->qhOutput.value(dev), dev);
++        }
++
++        return qlReturn;
++}
++
++void JackAudioOutputRegistrar::setDeviceChoice(const QVariant &choice, Settings &s) {
++        Q_UNUSED(choice);
++        Q_UNUSED(s);
++}
++
++JackAudioInput::JackAudioInput() {
++        bRunning = true;
++        iMicChannels = 0;
++};
++
++JackAudioInput::~JackAudioInput() {
++        bRunning = false;
++        iMicChannels = 0;
++        qmMutex.lock();
++        qwcWait.wakeAll();
++        qmMutex.unlock();
++        wait();
++}
++
++void JackAudioInput::run() {
++        if (jasys && jasys->bJackIsGood) {
++            iMicFreq = jasys->iSampleRate;
++            iMicChannels = 1;
++            eMicFormat = SampleFloat;
++            initializeMixer();
++        }
++
++        qmMutex.lock();
++        while (bRunning)
++                qwcWait.wait(&qmMutex);
++        qmMutex.unlock();
++}
++
++JackAudioOutput::JackAudioOutput() {
++        bRunning = true;
++        iChannels = 0;
++}
++
++JackAudioOutput::~JackAudioOutput() {
++        bRunning = false;
++        iChannels = 0;
++        qmMutex.lock();
++        qwcWait.wakeAll();
++        qmMutex.unlock();
++        wait();
++}
++
++void JackAudioOutput::run() {
++        if (jasys && jasys->bJackIsGood) {
++            unsigned int chanmasks[32];
++
++            chanmasks[0] = SPEAKER_FRONT_LEFT;
++            chanmasks[1] = SPEAKER_FRONT_RIGHT;
++
++            eSampleFormat = SampleFloat;
++            iMixerFreq = jasys->iSampleRate;
++            iChannels = 1;
++            initializeMixer(chanmasks);
++        }
++
++        qmMutex.lock();
++        while (bRunning)
++                qwcWait.wait(&qmMutex);
++        qmMutex.unlock();
++}
+diff -U 3 -H -d -r -N -- mumble-1.2.2.orig/src/mumble/JackAudio.h mumble-1.2.2/src/mumble/JackAudio.h
+--- mumble-1.2.2.orig/src/mumble/JackAudio.h	1970-01-01 01:00:00.000000000 +0100
++++ mumble-1.2.2/src/mumble/JackAudio.h	2011-01-26 06:03:58.000000000 +0000
+@@ -0,0 +1,97 @@
++/* Copyright (C) 2011, Benjamin Jemlich <pcgod@users.sourceforge.net>
++   Copyright (C) 2011, Filipe Coelho <falktx@gmail.com>
++
++   All rights reserved.
++
++   Redistribution and use in source and binary forms, with or without
++   modification, are permitted provided that the following conditions
++   are met:
++
++   - Redistributions of source code must retain the above copyright notice,
++     this list of conditions and the following disclaimer.
++   - Redistributions in binary form must reproduce the above copyright notice,
++     this list of conditions and the following disclaimer in the documentation
++     and/or other materials provided with the distribution.
++   - Neither the name of the Mumble Developers nor the names of its
++     contributors may be used to endorse or promote products derived from this
++     software without specific prior written permission.
++
++   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
++   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
++   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
++   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
++   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
++   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
++   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
++   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++*/
++
++#ifndef _JACKAUDIO_H
++#define _JACKAUDIO_H
++
++#include "AudioInput.h"
++#include "AudioOutput.h"
++#include <jack/jack.h>
++
++class JackAudioOutput;
++class JackAudioInput;
++
++class JackAudioSystem : public QObject {
++        private:
++                Q_OBJECT
++                Q_DISABLE_COPY(JackAudioSystem)
++        protected:
++                jack_client_t* client;
++                jack_port_t* in_port;
++                jack_port_t* out_port;
++
++                static int process_callback(jack_nframes_t nframes, void *arg);
++                static int srate_callback(jack_nframes_t frames, void *arg);
++                static void shutdown_callback(void *arg);
++        public:
++                QHash<QString, QString> qhInput;
++                QHash<QString, QString> qhOutput;
++                bool bJackIsGood;
++                int iSampleRate;
++                QMutex qmWait;
++                QWaitCondition qwcWait;
++
++                void init_jack();
++                void close_jack();
++
++                JackAudioSystem();
++                ~JackAudioSystem();
++};
++
++class JackAudioInput : public AudioInput {
++                friend class JackAudioSystem;
++        private:
++                Q_OBJECT
++                Q_DISABLE_COPY(JackAudioInput)
++        protected:
++                QMutex qmMutex;
++                QWaitCondition qwcWait;
++        public:
++                JackAudioInput();
++                ~JackAudioInput();
++                void run();
++};
++
++class JackAudioOutput : public AudioOutput {
++                friend class JackAudioSystem;
++        private:
++                Q_OBJECT
++                Q_DISABLE_COPY(JackAudioOutput)
++        protected:
++                QMutex qmMutex;
++                QWaitCondition qwcWait;
++        public:
++                JackAudioOutput();
++                ~JackAudioOutput();
++                void run();
++};
++
++#endif
+diff -U 3 -H -d -r -N -- mumble-1.2.2.orig/src/mumble/mumble.pro mumble-1.2.2/src/mumble/mumble.pro
+--- mumble-1.2.2.orig/src/mumble/mumble.pro	2010-02-09 16:34:51.000000000 +0000
++++ mumble-1.2.2/src/mumble/mumble.pro	2011-01-26 01:45:55.000000000 +0000
+@@ -93,11 +93,17 @@
+ unix {
+   HAVE_PULSEAUDIO=$$system(pkg-config --modversion --silence-errors libpulse)
+   HAVE_PORTAUDIO=$$system(pkg-config --modversion --silence-errors portaudio-2.0)
++  HAVE_JACKAUDIO=$$system(pkg-config --modversion --silence-errors jack)
+ 
+   !isEmpty(HAVE_PORTAUDIO):!CONFIG(no-portaudio) {
+     CONFIG *= portaudio
+   }
+ 
++  !isEmpty(HAVE_JACKAUDIO):!CONFIG(no-jackaudio) {
++    CONFIG -= portaudio
++    CONFIG *= jackaudio
++  }
++
+   !isEmpty(HAVE_PULSEAUDIO):!CONFIG(no-pulseaudio) {
+     CONFIG -= portaudio
+     CONFIG *= pulseaudio
+@@ -110,6 +116,13 @@
+     QMAKE_CXXFLAGS_DEBUG *= -I../../speex/include -I../../speexbuild
+   }
+ 
++  jackaudio {
++        DEFINES *= USE_JACKAUDIO
++        PKGCONFIG *= jack
++        HEADERS *= JackAudio.h
++        SOURCES *= JackAudio.cpp
++  }
++
+   CONFIG *= link_pkgconfig
+ 
+   PKGCONFIG *= openssl sndfile
diff --git a/nixpkgs/pkgs/applications/networking/mumble/overlay.nix b/nixpkgs/pkgs/applications/networking/mumble/overlay.nix
new file mode 100644
index 000000000000..185672a21f8c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/mumble/overlay.nix
@@ -0,0 +1,28 @@
+{ stdenv, lib, which, file, mumble, mumble_i686
+}:
+
+let
+  binPath = lib.makeBinPath [ which file ];
+in stdenv.mkDerivation {
+  name = "mumble-overlay-${mumble.version}";
+
+  inherit (mumble) src;
+
+  phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/lib
+    ln -s ${mumble}/lib/libmumble.so.1.* $out/lib/libmumble.so.1
+    ${lib.optionalString (mumble_i686 != null) ''
+      mkdir -p $out/lib32
+      ln -s ${mumble_i686}/lib/libmumble.so.1.* $out/lib32/libmumble.so.1
+    ''}
+    install -Dm755 scripts/mumble-overlay $out/bin/mumble-overlay
+    sed -i "s,/usr/lib,$out/lib,g" $out/bin/mumble-overlay
+    sed -i '2iPATH="${binPath}:$PATH"' $out/bin/mumble-overlay
+  '';
+
+  meta = {
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ndppd/default.nix b/nixpkgs/pkgs/applications/networking/ndppd/default.nix
new file mode 100644
index 000000000000..6e6315ced7df
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ndppd/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, fetchurl, gzip }:
+
+stdenv.mkDerivation rec {
+  name = "ndppd-${version}";
+  version = "0.2.5";
+
+  src = fetchFromGitHub {
+    owner = "DanielAdolfsson";
+    repo = "ndppd";
+    rev = "${version}";
+    sha256 = "0niri5q9qyyyw5lmjpxk19pv3v4srjvmvyd5k6ks99mvqczjx9c0";
+  };
+
+  makeFlags = [
+    "PREFIX=$(out)"
+  ];
+
+  preConfigure = ''
+    substituteInPlace Makefile --replace /bin/gzip ${gzip}/bin/gzip
+  '';
+
+  postInstall = ''
+    mkdir -p $out/etc
+    cp ndppd.conf-dist $out/etc/ndppd.conf
+  '';
+
+  meta = {
+    description = "A daemon that proxies NDP (Neighbor Discovery Protocol) messages between interfaces";
+    homepage = https://github.com/DanielAdolfsson/ndppd;
+    license = stdenv.lib.licenses.gpl3;
+
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.fadenb ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/netperf/default.nix b/nixpkgs/pkgs/applications/networking/netperf/default.nix
new file mode 100644
index 000000000000..421a3cfbe3b7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/netperf/default.nix
@@ -0,0 +1,29 @@
+{ libsmbios, stdenv, autoreconfHook, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "netperf-20180504";
+
+  src = fetchFromGitHub {
+    owner = "HewlettPackard";
+    repo = "netperf";
+    rev = "c0a0d9f31f9940abf375a41b43a343cdbf87caab";
+    sha256 = "0wfj9kkhar6jb5639f5wxpwsraxw4v9yzg71rsdidvj5fyncjjq2";
+  };
+
+  buildInputs = [ libsmbios ];
+  nativeBuildInputs = [ autoreconfHook ];
+  autoreconfPhase = ''
+    autoreconf -i -I src/missing/m4
+  '';
+  configureFlags = [ "--enable-demo" ];
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Benchmark to measure the performance of many different types of networking";
+    homepage = http://www.netperf.org/netperf/;
+    license = "Hewlett-Packard BSD-like license";
+
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.mmlb ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/newsreaders/liferea/default.nix b/nixpkgs/pkgs/applications/networking/newsreaders/liferea/default.nix
new file mode 100644
index 000000000000..0cfcf6408ba9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/newsreaders/liferea/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchurl, pkgconfig, intltool, python3Packages, wrapGAppsHook
+, glib, libxml2, libxslt, sqlite, libsoup , webkitgtk, json-glib, gst_all_1
+, libnotify, gtk3, gsettings-desktop-schemas, libpeas, dconf, librsvg
+, gobject-introspection, glib-networking, hicolor-icon-theme
+}:
+
+stdenv.mkDerivation rec {
+  pname = "liferea";
+  version = "1.12.6";
+
+  src = fetchurl {
+    url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${pname}-${version}b.tar.bz2";
+    sha256 = "sha256:03pr1gmiv5y0i92bkhcxr8s311ll91chz19wb96jkixx32xav91d";
+  };
+
+  nativeBuildInputs = [ wrapGAppsHook python3Packages.wrapPython intltool pkgconfig ];
+
+  buildInputs = [
+    glib gtk3 webkitgtk libxml2 libxslt sqlite libsoup gsettings-desktop-schemas
+    libpeas gsettings-desktop-schemas json-glib dconf gobject-introspection
+    librsvg glib-networking libnotify hicolor-icon-theme
+  ] ++ (with gst_all_1; [
+    gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad
+  ]);
+
+  pythonPath = with python3Packages; [ pygobject3 pycairo ];
+
+  preFixup = ''
+    buildPythonPath "$out $pythonPath"
+    gappsWrapperArgs+=(--prefix PYTHONPATH : "$program_PYTHONPATH")
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A GTK-based news feed aggregator";
+    homepage = http://lzone.de/liferea/;
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ vcunat romildo ];
+    platforms = platforms.linux;
+
+    longDescription = ''
+      Liferea (Linux Feed Reader) is an RSS/RDF feed reader.
+      It's intended to be a clone of the Windows-only FeedReader.
+      It can be used to maintain a list of subscribed feeds,
+      browse through their items, and show their contents.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/newsreaders/pan/default.nix b/nixpkgs/pkgs/applications/networking/newsreaders/pan/default.nix
new file mode 100644
index 000000000000..308c857644eb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/newsreaders/pan/default.nix
@@ -0,0 +1,45 @@
+{ spellChecking ? true
+, stdenv, fetchurl, pkgconfig, gtk3, gtkspell3 ? null
+, perl, gmime2, gettext, intltool, itstool, libxml2, dbus-glib, libnotify, gnutls
+, makeWrapper, gnupg
+, gnomeSupport ? true, libsecret, gcr
+}:
+
+assert spellChecking -> gtkspell3 != null;
+
+let version = "0.145"; in
+
+stdenv.mkDerivation {
+  name = "pan-${version}";
+
+  src = fetchurl {
+    url = "http://pan.rebelbase.com/download/releases/${version}/source/pan-${version}.tar.bz2";
+    sha256 = "1b4wamv33hprghcjk903bpvnd233yxyrm18qnh13alc8h1553nk8";
+  };
+
+  nativeBuildInputs = [ pkgconfig gettext intltool itstool libxml2 makeWrapper ];
+  buildInputs = [ gtk3 gmime2 libnotify gnutls ]
+    ++ stdenv.lib.optional spellChecking gtkspell3
+    ++ stdenv.lib.optionals gnomeSupport [ libsecret gcr ];
+
+  configureFlags = [
+    "--with-dbus"
+    "--with-gtk3"
+    "--with-gnutls"
+    "--enable-libnotify"
+  ] ++ stdenv.lib.optional spellChecking "--with-gtkspell"
+    ++ stdenv.lib.optional gnomeSupport "--enable-gkr";
+
+  postInstall = ''
+    wrapProgram $out/bin/pan --suffix PATH : ${gnupg}/bin
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "A GTK+-based Usenet newsreader good at both text and binaries";
+    homepage = http://pan.rebelbase.com/;
+    maintainers = [ stdenv.lib.maintainers.eelco ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/newsreaders/quiterss/default.nix b/nixpkgs/pkgs/applications/networking/newsreaders/quiterss/default.nix
new file mode 100644
index 000000000000..b0bc5edba844
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/newsreaders/quiterss/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, qmake, pkgconfig, makeWrapper
+, qtbase, qttools, qtwebkit, sqlite
+}:
+
+stdenv.mkDerivation rec {
+  name = "quiterss-${version}";
+  version = "0.18.12";
+
+  src = fetchFromGitHub {
+    owner = "QuiteRSS";
+    repo = "quiterss";
+    rev = "${version}";
+    sha256 = "0xav9qr8n6310636nfbgx4iix65fs3ya5rz2isxsf38bkjm7r3pa";
+  };
+
+  nativeBuildInputs = [ qmake pkgconfig makeWrapper ];
+  buildInputs = [ qtbase qttools qtwebkit sqlite.dev ];
+
+  postFixup = ''
+    wrapProgram $out/bin/quiterss \
+      --prefix QT_PLUGIN_PATH : "${qtbase}/${qtbase.qtPluginPrefix}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A Qt-based RSS/Atom news feed reader";
+    longDescription = ''
+      QuiteRSS is a open-source cross-platform RSS/Atom news feeds reader
+      written on Qt/C++
+    '';
+    homepage = https://quiterss.org;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ primeos ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/newsreaders/slrn/default.nix b/nixpkgs/pkgs/applications/networking/newsreaders/slrn/default.nix
new file mode 100644
index 000000000000..9f775f0db656
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/newsreaders/slrn/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl
+, slang, ncurses, openssl }:
+
+let version = "1.0.2"; in
+
+stdenv.mkDerivation {
+  name = "slrn-${version}";
+
+  src = fetchurl {
+    url = "http://www.jedsoft.org/releases/slrn/slrn-${version}.tar.gz";
+    sha256 = "1gn6m2zha2nnnrh9lz3m3nrqk6fgfij1wc53pg25j7sdgvlziv12";
+  };
+
+  preConfigure = ''
+    sed -i -e "s|-ltermcap|-lncurses|" configure
+    sed -i autoconf/Makefile.in src/Makefile.in \
+      -e "s|/bin/cp|cp|"  \
+      -e "s|/bin/rm|rm|"
+  '';
+
+  configureFlags = [
+    "--with-slang=${slang.dev}"
+    "--with-ssl=${openssl.dev}"
+  ];
+
+  buildInputs = [ slang ncurses openssl ];
+
+  meta = with stdenv.lib; {
+    description = "The slrn (S-Lang read news) newsreader";
+    homepage = http://slrn.sourceforge.net/index.html;
+    maintainers = with maintainers; [ ehmry ];
+    license = licenses.gpl2;
+    platforms = with platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/nextcloud-client/default.nix b/nixpkgs/pkgs/applications/networking/nextcloud-client/default.nix
new file mode 100644
index 000000000000..a131355963ce
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/nextcloud-client/default.nix
@@ -0,0 +1,63 @@
+{ stdenv, fetchgit, cmake, pkgconfig, qtbase, qtwebkit, qtkeychain, qttools, sqlite
+, inotify-tools, makeWrapper, openssl_1_1, pcre, qtwebengine, libsecret, fetchpatch
+}:
+
+stdenv.mkDerivation rec {
+  name = "nextcloud-client-${version}";
+  version = "2.5.1";
+
+  src = fetchgit {
+    url = "git://github.com/nextcloud/desktop.git";
+    rev = "refs/tags/v${version}";
+    sha256 = "0r6jj3vbmwh7ipv83c8w1b25pbfq3mzrjgcijdw2gwfxwx9pfq7d";
+    fetchSubmodules = true;
+  };
+
+  # Patches contained in next (>2.5.1) release
+  patches = [
+    (fetchpatch {
+     name = "fix-qt-5.12-build";
+     url = "https://github.com/nextcloud/desktop/commit/071709ab5e3366e867dd0b0ea931aa7d6f80f528.patch";
+     sha256 = "14k635jwm8hz6i22lz88jj2db8v5czwa3zg0667i4hwhkqqmy61n";
+     })
+     (fetchpatch {
+       name = "fix-qtwebengine-crash";
+       url = "https://patch-diff.githubusercontent.com/raw/nextcloud/desktop/pull/959.patch";
+       sha256 = "00qx976az2rb1gwl1rxapm8gqj42yzqp8k2fasn3h7b30lnxdyr0";
+     })
+  ];
+
+  nativeBuildInputs = [ pkgconfig cmake makeWrapper ];
+
+  buildInputs = [ qtbase qtwebkit qtkeychain qttools qtwebengine sqlite openssl_1_1.out pcre inotify-tools ];
+
+  enableParallelBuilding = true;
+
+  NIX_LDFLAGS = "${openssl_1_1.out}/lib/libssl.so ${openssl_1_1.out}/lib/libcrypto.so";
+
+  cmakeFlags = [
+    "-UCMAKE_INSTALL_LIBDIR"
+    "-DCMAKE_BUILD_TYPE=Release"
+    "-DOPENSSL_LIBRARIES=${openssl_1_1.out}/lib"
+    "-DOPENSSL_INCLUDE_DIR=${openssl_1_1.dev}/include"
+    "-DINOTIFY_LIBRARY=${inotify-tools}/lib/libinotifytools.so"
+    "-DINOTIFY_INCLUDE_DIR=${inotify-tools}/include"
+  ];
+
+  postInstall = ''
+    sed -i 's/\(Icon.*\)=nextcloud/\1=Nextcloud/g' \
+    $out/share/applications/nextcloud.desktop
+
+    wrapProgram "$out/bin/nextcloud" \
+      --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath [ libsecret ]} \
+      --prefix QT_PLUGIN_PATH : ${qtbase}/${qtbase.qtPluginPrefix}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Nextcloud themed desktop client";
+    homepage = https://nextcloud.com;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ caugner ma27 ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/nload/default.nix b/nixpkgs/pkgs/applications/networking/nload/default.nix
new file mode 100644
index 000000000000..2c16fabc5c41
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/nload/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, fetchpatch, ncurses }:
+
+stdenv.mkDerivation rec {
+  version = "0.7.4";
+  name = "nload-${version}";
+
+  src = fetchurl {
+    url = "http://www.roland-riegel.de/nload/${name}.tar.gz";
+    sha256 = "1rb9skch2kgqzigf19x8bzk211jdfjfdkrcvaqyj89jy2pkm3h61";
+  };
+
+  patches = [
+    # Fixes an ugly bug of graphs scrolling to the side, corrupting the view.
+    # There is an upstream fix, but not a new upstream release that includes it.
+    # Other distributions like Gentoo also patch this as a result; see:
+    #   https://github.com/rolandriegel/nload/issues/3#issuecomment-427579143
+    # TODO Remove when https://github.com/rolandriegel/nload/issues/3 is merged and available
+    (fetchpatch {
+      url = "https://github.com/rolandriegel/nload/commit/8a93886e0fb33a81b8fe32e88ee106a581fedd34.patch";
+      name = "nload-0.7.4-Eliminate-flicker-on-some-terminals.patch";
+      sha256 = "10yppy5l50wzpcvagsqkbyf1rcan6aj30am4rw8hmkgnbidf4zbq";
+    })
+  ];
+
+  buildInputs = [ ncurses ];
+
+  meta = {
+    description = "Monitors network traffic and bandwidth usage with ncurses graphs";
+    longDescription = ''
+      nload is a console application which monitors network traffic and
+      bandwidth usage in real time. It visualizes the in- and outgoing traffic
+      using two graphs and provides additional info like total amount of
+      transfered data and min/max network usage.
+    '';
+    homepage = http://www.roland-riegel.de/nload/index.html;
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = [ stdenv.lib.maintainers.devhell ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/nntp-proxy/default.nix b/nixpkgs/pkgs/applications/networking/nntp-proxy/default.nix
new file mode 100644
index 000000000000..8795f32e829d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/nntp-proxy/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchFromGitHub, libconfig, pkgconfig, libevent, openssl }:
+
+stdenv.mkDerivation rec {
+  name = "nntp-proxy-${version}";
+  version = "2014-01-06";
+
+  src = fetchFromGitHub {
+    owner = "nieluj";
+    repo = "nntp-proxy";
+    rev = "0358e7ad6c4676f90ac5074320b16e1461b0011a";
+    sha256 = "0jwxh71am83fbnq9mn06jl06rq8qybm506js79xmmc3xbk5pqvy4";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libconfig libevent openssl ];
+
+  installFlags = [ "INSTALL_DIR=$(out)/bin/" ];
+
+  prePatch = ''
+    mkdir -p $out/bin
+    substituteInPlace Makefile \
+      --replace /usr/bin/install $(type -P install) \
+      --replace gcc cc
+  '';
+
+  meta = {
+    description = "Simple NNTP proxy with SSL support";
+    homepage = https://github.com/nieluj/nntp-proxy;
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ stdenv.lib.maintainers.fadenb ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/offrss/default.nix b/nixpkgs/pkgs/applications/networking/offrss/default.nix
new file mode 100644
index 000000000000..d91bfbae501d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/offrss/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchurl, curl, libmrss, podofo, libiconv }:
+
+stdenv.mkDerivation {
+  name = "offrss-1.3";
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp offrss $out/bin
+  '';
+
+  buildInputs = [ curl libmrss ]
+    ++ stdenv.lib.optional (stdenv.hostPlatform == stdenv.buildPlatform) podofo
+    ++ stdenv.lib.optional (!stdenv.isLinux) libiconv;
+
+  configurePhase = ''
+    substituteInPlace Makefile \
+      --replace '$(CC) $(CFLAGS) $(LDFLAGS)' '$(CXX) $(CFLAGS) $(LDFLAGS)'
+  '' + stdenv.lib.optionalString (!stdenv.isLinux) ''
+    sed 's/#EXTRA/EXTRA/' -i Makefile
+  '' + stdenv.lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
+    sed 's/^PDF/#PDF/' -i Makefile
+  '';
+
+  src = fetchurl {
+    url = http://vicerveza.homeunix.net/~viric/soft/offrss/offrss-1.3.tar.gz;
+    sha256 = "1akw1x84jj2m9z60cvlvmz21qwlaywmw18pl7lgp3bj5nw6250p6";
+  };
+
+  meta = {
+    homepage = http://vicerveza.homeunix.net/~viric/cgi-bin/offrss;
+    description = "Offline RSS/Atom reader";
+    license="AGPLv3+";
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/omping/default.nix b/nixpkgs/pkgs/applications/networking/omping/default.nix
new file mode 100644
index 000000000000..1e127c1b1ec2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/omping/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  name = "omping-${version}";
+  version = "0.0.5";
+
+  src = fetchFromGitHub {
+    owner  = "troglobit";
+    repo   = "omping";
+    rev    = version;
+    sha256 = "1f0vsbnhxp7bbgdnfqshryx3nhz2sqdnxdj068s0nmzsh53ckbf7";
+  };
+
+  patches = [
+    # This can go in 0.0.6+
+    (fetchpatch {
+      url    = "https://github.com/troglobit/omping/commit/08a31ec1a6eb4e8f88c301ef679c3b6f9893f333.patch";
+      sha256 = "1xafyvd46bq53w2zvjw8bdw7vjqbrcrr21cyh6d0zfcn4gif1k0f";
+      name   = "fix_manpage_install.patch";
+    })
+  ];
+
+  makeFlags = [
+    "PREFIX=${placeholder "out"}"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Open Multicast Ping (omping) is a tool for testing IPv4/IPv6 multicast connectivity on a LAN.";
+    license = licenses.mit;
+    platforms = platforms.unix;
+    inherit (src.meta) homepage;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ostinato/default.nix b/nixpkgs/pkgs/applications/networking/ostinato/default.nix
new file mode 100644
index 000000000000..962f10a99c01
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ostinato/default.nix
@@ -0,0 +1,68 @@
+{ stdenv, fetchFromGitHub, fetchurl, qmake4Hook, makeDesktopItem
+, qt4, protobuf, libpcap, wireshark, gzip, diffutils, gawk
+}:
+
+stdenv.mkDerivation rec {
+  name    = "ostinato-${version}";
+  version = "0.9";
+
+  src = fetchFromGitHub  {
+    owner  = "pstavirs";
+    repo   = "ostinato";
+    rev    = "v${version}";
+    sha256 = "109gxj6djdsk7rp1nxpx39kfi75xfl9p9qgffh1cpcdpbsbvq5bx";
+  };
+
+  ostinatoIcon = fetchurl {
+    url = "https://ostinato.org/images/site-logo.png";
+    sha256 = "f5c067823f2934e4d358d76f65a343efd69ad783a7aeabd7ab4ce3cd03490d70";
+  };
+
+  buildInputs = [ qt4 protobuf libpcap ];
+
+  nativeBuildInputs = [ qmake4Hook ];
+
+  patches = [ ./drone_ini.patch ];
+
+  desktopItem = makeDesktopItem {
+    type          = "application";
+    name          = "ostinato";
+    desktopName   = "Ostinato";
+    genericName   = "Packet/Traffic Generator and Analyzer";
+    comment       = "Network packet and traffic generator and analyzer with a friendly GUI";
+    categories    = "Network";
+    terminal      = "false";
+    startupNotify = "true";
+    exec          = "$out/bin/ostinato";
+    icon          =  ostinatoIcon;
+    extraEntries  = ''
+      GenericName[it]=Generatore ed Analizzatore di pacchetti di rete
+      Comment[it]=Generatore ed Analizzatore di pacchetti di rete con interfaccia amichevole
+    '';
+  };
+
+  postInstall = ''
+    mkdir -p $out/share/applications
+    ln -s ${desktopItem}/share/applications/* $out/share/applications/
+
+    cat > $out/bin/ostinato.ini <<EOF
+    WiresharkPath=${wireshark}/bin/wireshark
+    TsharkPath=${wireshark}/bin/tshark
+    GzipPath=${gzip}/bin/gzip
+    DiffPath=${diffutils}/bin/diff
+    AwkPath=${gawk}/bin/awk
+    EOF
+  '';
+
+  # `cd common; qmake ostproto.pro; make pdmlreader.o`:
+  # pdmlprotocol.h:23:25: fatal error: protocol.pb.h: No such file or directory
+  enableParallelBuilding = false;
+
+  meta = with stdenv.lib; {
+    description = "A packet traffic generator and analyzer";
+    homepage    = https://ostinato.org;
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ rick68 ];
+    platforms   = with platforms; linux ++ darwin ++ cygwin;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ostinato/drone_ini.patch b/nixpkgs/pkgs/applications/networking/ostinato/drone_ini.patch
new file mode 100644
index 000000000000..5818f4e94c30
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ostinato/drone_ini.patch
@@ -0,0 +1,14 @@
+diff -Nru ostinato-414d89860de0987843295d149bcabeac7c6fd9e5/server/drone_main.cpp ostinato-414d89860de0987843295d149bcabeac7c6fd9e5.new/server/drone_main.cpp
+--- ostinato-414d89860de0987843295d149bcabeac7c6fd9e5/server/drone_main.cpp	2015-12-24 16:46:35.000000000 +0800
++++ ostinato-414d89860de0987843295d149bcabeac7c6fd9e5.new/server/drone_main.cpp	2015-12-30 20:59:04.319199699 +0800
+@@ -62,8 +62,8 @@
+     /* (Portable Mode) If we have a .ini file in the same directory as the 
+        executable, we use that instead of the platform specific location
+        and format for the settings */
+-    QString portableIni = QCoreApplication::applicationDirPath() 
+-            + "/drone.ini";
++    QString portableIni = argc > 2 ? argv[2] :
++            QCoreApplication::applicationDirPath() + "/drone.ini";
+     if (QFile::exists(portableIni))
+         appSettings = new QSettings(portableIni, QSettings::IniFormat);
+     else
diff --git a/nixpkgs/pkgs/applications/networking/owamp/default.nix b/nixpkgs/pkgs/applications/networking/owamp/default.nix
new file mode 100644
index 000000000000..9ed532acfe1a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/owamp/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchFromGitHub
+, autoconf, automake, mandoc }:
+
+stdenv.mkDerivation rec {
+  name = "owamp-${version}";
+  version = "3.5.6";
+  buildInputs = [ autoconf automake mandoc ];
+  src = fetchFromGitHub {
+    owner = "perfsonar";
+    repo = "owamp";
+    rev = version;
+    sha256="019rcshmrqk8pfp510j5jvazdcnz0igfkwv44mfxb5wirzj9p6s7";
+    fetchSubmodules = true;
+  };
+
+  preConfigure = ''
+    I2util/bootstrap.sh
+    ./bootstrap
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://software.internet2.edu/owamp/;
+    description = ''A tool for performing one-way active measurements'';
+    platforms = platforms.linux;
+    maintainers = [maintainers.teto];
+    license = licenses.asl20;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/owncloud-client/default.nix b/nixpkgs/pkgs/applications/networking/owncloud-client/default.nix
new file mode 100644
index 000000000000..6b85dbfa3ccd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/owncloud-client/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, cmake, pkgconfig, qtbase, qtwebkit, qtkeychain, sqlite }:
+
+stdenv.mkDerivation rec {
+  name = "owncloud-client-${version}";
+  version = "2.5.3.11470";
+
+  src = fetchurl {
+    url = "https://download.owncloud.com/desktop/stable/owncloudclient-${version}.tar.xz";
+    sha256 = "0cznis8qadsnlgm046lxn8vmbxli6zp4b8nk93n53mkfxlcw355n";
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake ];
+  buildInputs = [ qtbase qtwebkit qtkeychain sqlite ];
+
+  cmakeFlags = [
+    "-UCMAKE_INSTALL_LIBDIR"
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Synchronise your ownCloud with your computer using this desktop client";
+    homepage = https://owncloud.org;
+    maintainers = [ maintainers.qknight ];
+    platforms = platforms.unix;
+    license = licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/deluge/default.nix b/nixpkgs/pkgs/applications/networking/p2p/deluge/default.nix
new file mode 100644
index 000000000000..f58f7e04e00b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/deluge/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchurl, fetchpatch, intltool, libtorrentRasterbar, pythonPackages }:
+
+pythonPackages.buildPythonPackage rec {
+  name = "deluge-${version}";
+  version = "1.3.15";
+
+  src = fetchurl {
+    url = "http://download.deluge-torrent.org/source/${name}.tar.bz2";
+    sha256 = "1467b9hmgw59gf398mhbf40ggaka948yz3afh6022v753c9j7y6w";
+  };
+
+  patches = [
+    # Fix preferences when built against libtorrent >=0.16
+    (fetchpatch {
+      url = "https://git.deluge-torrent.org/deluge/patch/?id=38d7b7cdfde3c50d6263602ffb03af92fcbfa52e";
+      sha256 = "0la3i0lkj6yv4725h4kbd07mhfwcb34w7prjl9gxg12q7px6c31d";
+    })
+  ];
+
+  propagatedBuildInputs = with pythonPackages; [
+    pyGtkGlade twisted Mako chardet pyxdg pyopenssl service-identity
+    libtorrentRasterbar.dev libtorrentRasterbar.python
+  ];
+
+  nativeBuildInputs = [ intltool ];
+
+  postInstall = ''
+     mkdir -p $out/share/applications
+     cp -R deluge/data/pixmaps $out/share/
+     cp -R deluge/data/icons $out/share/
+     cp deluge/data/share/applications/deluge.desktop $out/share/applications
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://deluge-torrent.org;
+    description = "Torrent client";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ domenkozar ebzzry ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix b/nixpkgs/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix
new file mode 100644
index 000000000000..db30da82bdb2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/eiskaltdcpp/default.nix
@@ -0,0 +1,65 @@
+{ stdenv, fetchFromGitHub, cmake, pkgconfig, qt4, boost, bzip2, libX11
+, fetchpatch, libiconv, pcre-cpp, libidn, lua5, miniupnpc, aspell, gettext }:
+
+stdenv.mkDerivation rec {
+  name = "eiskaltdcpp-${version}";
+  version = "2.2.10";
+
+  src = fetchFromGitHub {
+    owner = "eiskaltdcpp";
+    repo = "eiskaltdcpp";
+    rev = "v${version}";
+    sha256 = "1mqz0g69njmlghcra3izarjxbxi1jrhiwn4ww94b8jv8xb9cv682";
+  };
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+  buildInputs = [ qt4 boost bzip2 libX11 pcre-cpp libidn lua5 miniupnpc aspell gettext ]
+    ++ stdenv.lib.optional stdenv.isDarwin libiconv;
+
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/eiskaltdcpp/eiskaltdcpp/commit/3b7b56bd7060b426b1f1bfded392ae6853644e2e.patch";
+      sha256 = "1rqjdsvirn3ks9w9qn893fb73mz84xm04wl13fvsvj8p42i5cjas";
+    })
+    (fetchpatch {
+      url = "https://github.com/eiskaltdcpp/eiskaltdcpp/commit/bb9eb364a943fe2a67b3ea52ec6a3f9e911f07dc.patch";
+      sha256 = "1hjhf9a9j4z8v24g5qh5mcg3n0540lbn85y7kvxsh3khc5v3cywx";
+    })
+    (fetchpatch {
+      url = "https://github.com/eiskaltdcpp/eiskaltdcpp/commit/ef4426f1f9a8255e335b0862234e6cc28befef5e.patch";
+      sha256 = "13j018c499n4b5as2n39ws64yj0cf4fskxbqab309vmnjkirxv6x";
+    })
+    (fetchpatch {
+      url = "https://github.com/eiskaltdcpp/eiskaltdcpp/commit/a9c136c8707280d0eeb66be6b289d9718287c55c.patch";
+      sha256 = "0w8v4mbrzk7pmzc475ff96mzzwlh8a0p62kk7p829m5yqdwj4sc9";
+    })
+    (fetchpatch {
+      url = "https://github.com/eiskaltdcpp/eiskaltdcpp/commit/3b9c502ff5c98856d4f8fdb7ed3c6ef34448bfb7.patch";
+      sha256 = "0fjwaq0wd9a164k5ysdjy89hx0ixnxc6q7cvyn1ba28snm0pgxb8";
+    })
+  ];
+
+  cmakeFlags = ''
+    -DUSE_ASPELL=ON
+    -DUSE_QT_QML=ON
+    -DFREE_SPACE_BAR_C=ON
+    -DUSE_MINIUPNP=ON
+    -DLOCAL_MINIUPNP=ON
+    -DDBUS_NOTIFY=ON
+    -DUSE_JS=ON
+    -DPERL_REGEX=ON
+    -DUSE_CLI_XMLRPC=ON
+    -DWITH_SOUNDS=ON
+    -DLUA_SCRIPT=ON
+    -DWITH_LUASCRIPTS=ON
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "A cross-platform program that uses the Direct Connect and ADC protocols";
+    homepage = https://github.com/eiskaltdcpp/eiskaltdcpp;
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/firestr/default.nix b/nixpkgs/pkgs/applications/networking/p2p/firestr/default.nix
new file mode 100644
index 000000000000..56eb9c354275
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/firestr/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, cmake, boost, botan, snappy, libopus, libuuid
+, libXScrnSaver, openssl, qtbase, qtmultimedia }:
+
+stdenv.mkDerivation {
+  name = "firestr-0.8";
+
+  src = fetchFromGitHub {
+    owner  = "mempko";
+    repo   = "firestr";
+    rev    = "f888890f71d49953d05bccdd27a1c4f6690e165c";
+    sha256 = "0s2kdi8rw3i3f8gbiy0ykyi6xj5n8p80m0d1i86mhh8jpagvbfzb";
+  };
+
+  buildInputs = [ cmake boost botan snappy libopus libuuid qtbase qtmultimedia
+                  libXScrnSaver openssl ];
+
+  patches = ./return.patch;
+
+  postPatch = ''
+      substituteInPlace CMakeLists.txt \
+        --replace "set(Boost_USE_STATIC_LIBS on)" "" \
+        --replace "/usr/include/botan" "${botan}/include/botan" \
+        --replace "libopus.a"       "libopus.so" \
+        --replace "libsnappy.a"     "libsnappy.so" \
+        --replace "libbotan-1.10.a" "libbotan-1.10.so.0"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Grass computing platform";
+    homepage = http://firestr.com/;
+    license = licenses.gpl3;
+    maintainers = [ maintainers.ehmry ];
+    platforms = platforms.linux;
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/firestr/return.patch b/nixpkgs/pkgs/applications/networking/p2p/firestr/return.patch
new file mode 100644
index 000000000000..c3e469ae92b0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/firestr/return.patch
@@ -0,0 +1,13 @@
+diff --git a/src/message/master_post.cpp b/src/message/master_post.cpp
+index c3a5ea9..7c821b9 100644
+--- a/src/message/master_post.cpp
++++ b/src/message/master_post.cpp
+@@ -56,7 +56,7 @@ namespace fire
+ 
+         metadata::encryption_type to_message_encryption_type(sc::encryption_type s)
+         {
+-            metadata::encryption_type r;
++            metadata::encryption_type r = metadata::encryption_type::asymmetric;
+             switch(s)
+             {
+                 case sc::encryption_type::plaintext: r = metadata::encryption_type::plaintext; break;
diff --git a/nixpkgs/pkgs/applications/networking/p2p/freenet/default.nix b/nixpkgs/pkgs/applications/networking/p2p/freenet/default.nix
new file mode 100644
index 000000000000..d674c70e4c2f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/freenet/default.nix
@@ -0,0 +1,79 @@
+{ stdenv, fetchurl, fetchFromGitHub, ant, jdk, bash, coreutils, substituteAll }:
+
+let
+  freenet_ext = fetchurl {
+    url = https://downloads.freenetproject.org/latest/freenet-ext.jar;
+    sha256 = "17ypljdvazgx2z6hhswny1lxfrknysz3x6igx8vl3xgdpvbb7wij";
+  };
+
+  bcprov_version = "jdk15on-154";
+  bcprov = fetchurl {
+    url = "https://www.bouncycastle.org/download/bcprov-ext-${bcprov_version}.jar";
+    sha256 = "0abmhg2h44g8c5p7skzqwfxj8xwcjh9vs84mc0hr78k1am0633jk";
+  };
+  seednodes = fetchurl {
+    url = https://downloads.freenetproject.org/alpha/opennet/seednodes.fref;
+    sha256 = "08awwr8n80b4cdzzb3y8hf2fzkr1f2ly4nlq779d6pvi5jymqdvv";
+  };
+  version = "build01475";
+
+  freenet-jars = stdenv.mkDerivation {
+    name = "freenet-jars-${version}";
+
+    src = fetchFromGitHub {
+      owner = "freenet";
+      repo = "fred";
+      rev = version;
+      sha256 = "0k02fna9x219j7dhginbnf27i36bibb0rmm4qdwr5xm28hy1nd08";
+    };
+
+    patchPhase = ''
+      cp ${freenet_ext} lib/freenet/freenet-ext.jar
+      cp ${bcprov} lib/bcprov-${bcprov_version}.jar
+
+      sed '/antcall.*-ext/d' -i build.xml
+      sed 's/@unknown@/${version}/g' -i build-clean.xml
+    '';
+
+    buildInputs = [ ant jdk ];
+
+    buildPhase = "ant package-only";
+
+    installPhase = ''
+      mkdir -p $out/share/freenet
+      cp lib/bcprov-${bcprov_version}.jar $out/share/freenet
+      cp lib/freenet/freenet-ext.jar $out/share/freenet
+      cp dist/freenet.jar $out/share/freenet
+    '';
+  };
+
+in stdenv.mkDerivation {
+  name = "freenet-${version}";
+  inherit version;
+
+  src = substituteAll {
+    src = ./freenetWrapper;
+    inherit bash coreutils seednodes bcprov_version;
+    freenet = freenet-jars;
+    jre = jdk.jre;
+  };
+
+  jars = freenet-jars;
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp $src $out/bin/freenet
+    chmod +x $out/bin/freenet
+    ln -s ${freenet-jars}/share $out/share
+  '';
+
+  meta = {
+    description = "Decentralised and censorship-resistant network";
+    homepage = https://freenetproject.org/;
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = [ stdenv.lib.maintainers.doublec ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/freenet/freenetWrapper b/nixpkgs/pkgs/applications/networking/p2p/freenet/freenetWrapper
new file mode 100755
index 000000000000..f3106265801f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/freenet/freenetWrapper
@@ -0,0 +1,18 @@
+#! @bash@/bin/bash
+
+PATH=@coreutils@/bin:$PATH
+
+export FREENET_HOME="$HOME/.local/share/freenet"
+if [ -n "$XDG_DATA_HOME" ]
+  then export FREENET_HOME="$XDG_DATA_HOME/freenet"
+fi
+
+if [ ! -d $FREENET_HOME ]; then
+  mkdir -p $FREENET_HOME
+fi
+
+cp -u @seednodes@ $FREENET_HOME/seednodes.fref
+chmod u+rw $FREENET_HOME/seednodes.fref
+
+cd $FREENET_HOME
+@jre@/bin/java -cp @freenet@/share/freenet/bcprov-@bcprov_version@.jar:@freenet@/share/freenet/freenet-ext.jar:@freenet@/share/freenet/freenet.jar -Xmx1024M freenet.node.NodeStarter
diff --git a/nixpkgs/pkgs/applications/networking/p2p/frostwire/default.nix b/nixpkgs/pkgs/applications/networking/p2p/frostwire/default.nix
new file mode 100644
index 000000000000..40ff91e792b4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/frostwire/default.nix
@@ -0,0 +1,94 @@
+{ stdenv, fetchFromGitHub, gradle, perl, jre, makeWrapper, makeDesktopItem, mplayer }:
+
+let
+  version = "6.6.7-build-529";
+  name = "frostwire-desktop-${version}";
+
+  src = fetchFromGitHub {
+    owner = "frostwire";
+    repo = "frostwire";
+    rev = name;
+    sha256 = "03wdj2kr8akzx8m1scvg98132zbaxh81qjdsxn2645b3gahjwz0m";
+  };
+
+  desktopItem = makeDesktopItem {
+    name = "frostwire";
+    desktopName = "FrostWire";
+    genericName = "P2P Bittorrent client";
+    exec = "frostwire";
+    icon = "frostwire";
+    comment = "Search and explore all kinds of files on the Bittorrent network";
+    categories = "Network;FileTransfer;P2P;";
+  };
+
+  # fake build to pre-download deps into fixed-output derivation
+  deps = stdenv.mkDerivation {
+    name = "${name}-deps";
+    inherit src;
+    buildInputs = [ gradle perl ];
+    buildPhase = ''
+      export GRADLE_USER_HOME=$(mktemp -d)
+      ( cd desktop
+        gradle --no-daemon build
+      )
+    '';
+    # perl code mavenizes pathes (com.squareup.okio/okio/1.13.0/a9283170b7305c8d92d25aff02a6ab7e45d06cbe/okio-1.13.0.jar -> com/squareup/okio/okio/1.13.0/okio-1.13.0.jar)
+    installPhase = ''
+      find $GRADLE_USER_HOME -type f -regex '.*\.\(jar\|pom\)' \
+        | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
+        | sh
+    '';
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+    outputHash = "11zd98g0d0fdgls4lsskkagwfxyh26spfd6c6g9cahl89czvlg3c";
+  };
+
+in stdenv.mkDerivation {
+  inherit name src;
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ gradle ];
+
+  buildPhase = ''
+    export GRADLE_USER_HOME=$(mktemp -d)
+    ( cd desktop
+
+      # disable auto-update (anyway it won't update frostwire installed in nix store)
+      substituteInPlace src/com/frostwire/gui/updates/UpdateManager.java \
+        --replace 'um.checkForUpdates' '// um.checkForUpdates'
+
+      # fix path to mplayer
+      substituteInPlace src/com/frostwire/gui/player/MediaPlayerLinux.java \
+        --replace /usr/bin/mplayer ${mplayer}/bin/mplayer
+
+      substituteInPlace build.gradle \
+        --replace 'mavenCentral()' 'mavenLocal(); maven { url uri("${deps}") }'
+      gradle --offline --no-daemon build
+    )
+  '';
+
+  installPhase = ''
+    mkdir -p $out/lib $out/share/java
+
+    cp desktop/build/libs/frostwire.jar $out/share/java/frostwire.jar
+
+    cp ${ { x86_64-darwin = "desktop/lib/native/*.dylib";
+            x86_64-linux  = "desktop/lib/native/lib{jlibtorrent,SystemUtilities}.so";
+            i686-linux    = "desktop/lib/native/lib{jlibtorrent,SystemUtilities}X86.so";
+          }.${stdenv.hostPlatform.system} or (throw "unsupported system ${stdenv.hostPlatform.system}")
+        } $out/lib
+
+    cp -dpR ${desktopItem}/share $out
+
+    makeWrapper ${jre}/bin/java $out/bin/frostwire \
+      --add-flags "-Djava.library.path=$out/lib -jar $out/share/java/frostwire.jar"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.frostwire.com/;
+    description = "BitTorrent Client and Cloud File Downloader";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ gavin ];
+    platforms = [ "x86_64-darwin" "x86_64-linux" "i686-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix b/nixpkgs/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix
new file mode 100644
index 000000000000..5305ca10383a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/frostwire/frostwire-bin.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, jre, makeWrapper }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  version = "6.7.4";
+  name = "frostwire-${version}";
+
+  src = fetchurl {
+    url = "https://dl.frostwire.com/frostwire/${version}/frostwire-${version}.noarch.tar.gz";
+    sha256 = "03vxg0qas4mz5ggrmi396nkz44x1kgq8bfbhbr9mnal9ay9qmi8m";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/share/java
+    mv $(ls */*.jar) $out/share/java
+
+    makeWrapper $out/share/java/frostwire $out/bin/frostwire \
+      --prefix PATH : ${jre}/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.frostwire.com/;
+    description = "BitTorrent Client and Cloud File Downloader";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ gavin ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/gnunet/default.nix b/nixpkgs/pkgs/applications/networking/p2p/gnunet/default.nix
new file mode 100644
index 000000000000..715d8e13ec30
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/gnunet/default.nix
@@ -0,0 +1,78 @@
+{ stdenv, fetchurl, adns, curl, gettext, gmp, gnutls, libextractor
+, libgcrypt, libgnurl, libidn, libmicrohttpd, libtool, libunistring
+, makeWrapper, ncurses, pkgconfig, libxml2, sqlite, zlib
+, libpulseaudio, libopus, libogg }:
+
+stdenv.mkDerivation rec {
+  name = "gnunet-0.11.0";
+
+  src = fetchurl {
+    url = "mirror://gnu/gnunet/${name}.tar.gz";
+    sha256 = "16kydkrjlf2vxflgls46bwaf9kjczf621p456q0qlphd7cy7lixp";
+  };
+
+  buildInputs = [
+    adns curl gettext gmp gnutls libextractor libgcrypt libgnurl libidn
+    libmicrohttpd libtool libunistring libxml2 makeWrapper ncurses
+    pkgconfig sqlite zlib libpulseaudio libopus libogg
+  ];
+
+  preConfigure = ''
+    # Brute force: since nix-worker chroots don't provide
+    # /etc/{resolv.conf,hosts}, replace all references to `localhost'
+    # by their IPv4 equivalent.
+    find . \( -name \*.c -or -name \*.conf \) | \
+      xargs sed -ie 's|\<localhost\>|127.0.0.1|g'
+
+    # Make sure the tests don't rely on `/tmp', for the sake of chroot
+    # builds.
+    find . \( -iname \*test\*.c -or -name \*.conf \) | \
+      xargs sed -ie "s|/tmp|$TMPDIR|g"
+
+    # Ensure NSS installation works fine
+    configureFlags="$configureFlags --with-nssdir=$out/lib"
+    patchShebangs src/gns/nss/install-nss-plugin.sh
+
+    sed -ie 's|@LDFLAGS@|@LDFLAGS@ $(Z_LIBS)|g' \
+      src/regex/Makefile.in \
+      src/fs/Makefile.in
+  '';
+
+  doCheck = false;
+
+  /* FIXME: Tests must be run this way, but there are still a couple of
+     failures.
+
+  postInstall =
+    '' export GNUNET_PREFIX="$out"
+       export PATH="$out/bin:$PATH"
+       make -k check
+    '';
+  */
+
+  meta = with stdenv.lib; {
+    description = "GNU's decentralized anonymous and censorship-resistant P2P framework";
+
+    longDescription = ''
+      GNUnet is a framework for secure peer-to-peer networking that
+      does not use any centralized or otherwise trusted services.  A
+      first service implemented on top of the networking layer
+      allows anonymous censorship-resistant file-sharing.  Anonymity
+      is provided by making messages originating from a peer
+      indistinguishable from messages that the peer is routing.  All
+      peers act as routers and use link-encrypted connections with
+      stable bandwidth utilization to communicate with each other.
+      GNUnet uses a simple, excess-based economic model to allocate
+      resources.  Peers in GNUnet monitor each others behavior with
+      respect to resource usage; peers that contribute to the
+      network are rewarded with better service.
+    '';
+
+    homepage = https://gnunet.org/;
+
+    license = licenses.gpl2Plus;
+
+    maintainers = with maintainers; [ vrthra ];
+    platforms = platforms.gnu ++ platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/gnunet/git.nix b/nixpkgs/pkgs/applications/networking/p2p/gnunet/git.nix
new file mode 100644
index 000000000000..9428b2764585
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/gnunet/git.nix
@@ -0,0 +1,92 @@
+{ stdenv, fetchgit, libextractor, libmicrohttpd, libgcrypt
+, zlib, gmp, curl, libtool, adns, sqlite, pkgconfig
+, libxml2, ncurses, gettext, libunistring, libidn
+, makeWrapper, autoconf, automake, texinfo, which
+, withVerbose ? false }:
+
+let
+  rev = 	"ce2864cfaa27e55096b480bf35db5f8cee2a5e7e";
+in
+stdenv.mkDerivation rec {
+  name = "gnunet-git-${rev}";
+
+  src = fetchgit {
+    url =  https://gnunet.org/git/gnunet.git;
+    inherit rev;
+    sha256 = "0gbw920m9v4b3425c0d1h7drgl2m1fni1bwjn4fwqnyz7kdqzsgl";
+  };
+
+  buildInputs = [
+    libextractor libmicrohttpd libgcrypt gmp curl libtool
+    zlib adns sqlite libxml2 ncurses libidn
+    pkgconfig gettext libunistring makeWrapper
+    autoconf automake texinfo which
+  ];
+
+  configureFlags = stdenv.lib.optional withVerbose "--enable-logging=verbose ";
+
+  preConfigure = ''
+    # Brute force: since nix-worker chroots don't provide
+    # /etc/{resolv.conf,hosts}, replace all references to `localhost'
+    # by their IPv4 equivalent.
+    for i in $(find . \( -name \*.c -or -name \*.conf \) \
+                    -exec grep -l '\<localhost\>' {} \;)
+    do
+      echo "$i: substituting \`127.0.0.1' to \`localhost'..."
+      sed -i "$i" -e's/\<localhost\>/127.0.0.1/g'
+    done
+
+    # Make sure the tests don't rely on `/tmp', for the sake of chroot
+    # builds.
+    for i in $(find . \( -iname \*test\*.c -or -name \*.conf \) \
+                    -exec grep -l /tmp {} \;)
+    do
+      echo "$i: replacing references to \`/tmp' by \`$TMPDIR'..."
+      substituteInPlace "$i" --replace "/tmp" "$TMPDIR"
+    done
+
+    # Ensure NSS installation works fine
+    configureFlags="$configureFlags --with-nssdir=$out/lib"
+
+    sh contrib/pogen.sh
+    sh bootstrap
+  '';
+
+  doCheck = false;
+
+  /* FIXME: Tests must be run this way, but there are still a couple of
+     failures.
+
+  postInstall =
+    '' export GNUNET_PREFIX="$out"
+       export PATH="$out/bin:$PATH"
+       make -k check
+    '';
+  */
+
+  meta = {
+    description = "GNUnet, GNU's decentralized anonymous and censorship-resistant P2P framework";
+
+    longDescription = ''
+      GNUnet is a framework for secure peer-to-peer networking that
+      does not use any centralized or otherwise trusted services.  A
+      first service implemented on top of the networking layer
+      allows anonymous censorship-resistant file-sharing.  Anonymity
+      is provided by making messages originating from a peer
+      indistinguishable from messages that the peer is routing.  All
+      peers act as routers and use link-encrypted connections with
+      stable bandwidth utilization to communicate with each other.
+      GNUnet uses a simple, excess-based economic model to allocate
+      resources.  Peers in GNUnet monitor each others behavior with
+      respect to resource usage; peers that contribute to the
+      network are rewarded with better service.
+    '';
+
+    homepage = https://gnunet.org/;
+
+    license = stdenv.lib.licenses.gpl2Plus;
+
+    maintainers = with stdenv.lib.maintainers; [ ];
+    platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/ktorrent/default.nix b/nixpkgs/pkgs/applications/networking/p2p/ktorrent/default.nix
new file mode 100644
index 000000000000..c66c3ca05a4e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/ktorrent/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchurl, fetchpatch, cmake
+, extra-cmake-modules, qtbase, qtscript
+, karchive, kcrash, kdnssd, ki18n, kio, knotifications, knotifyconfig
+, kdoctools, kross, kcmutils, kwindowsystem
+, libktorrent, taglib, libgcrypt, kplotting
+}:
+
+stdenv.mkDerivation rec {
+  name = "ktorrent-${version}";
+  version = "${libktorrent.mainVersion}.0";
+
+  src = fetchurl {
+    url    = "mirror://kde/stable/ktorrent/${libktorrent.mainVersion}/${name}.tar.xz";
+    sha256 = "18w6qh09k84qpzaxxb76a4g59k4mx5wk897vqp1wwv80g0pqhmrw";
+  };
+
+  nativeBuildInputs = [ cmake kdoctools extra-cmake-modules ];
+
+  buildInputs = [
+    qtbase qtscript
+    karchive kcrash kdnssd ki18n kio knotifications knotifyconfig kross kcmutils kwindowsystem
+    libktorrent taglib libgcrypt kplotting
+  ];
+
+  patches = [
+    # Fix build with CMake 3.11
+    (fetchpatch {
+      url = "https://cgit.kde.org/ktorrent.git/patch/?id=672c5076de7e3a526d9bdbb484a69e9386bc49f8";
+      sha256 = "1cn4rnbhadrsxqx50fawpd747azskavbjraygr6s11rh1wbfrxid";
+    })
+
+    # Fix build against Qt 5.11
+    (fetchpatch {
+      url = "https://cgit.kde.org/ktorrent.git/patch/?id=7876857d204188016a135a25938d9f8530fba4e8";
+      sha256 = "1wnmfzkhf6y7fd0z2djwphs6i9lsg7fcrj8fqmbyi0j57dvl9gxl";
+    })
+    (fetchpatch {
+      url = "https://cgit.kde.org/ktorrent.git/patch/?id=36d112e56e56541d439326a267eb906da8b3ee60";
+      sha256 = "1d41pqniljhwqs6awa644s6ks0zwm9sr0hpfygc63wyxnpcrsw2y";
+    })
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "KDE integrated BtTorrent client";
+    homepage    = https://www.kde.org/applications/internet/ktorrent/;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ eelco ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/mldonkey/default.nix b/nixpkgs/pkgs/applications/networking/p2p/mldonkey/default.nix
new file mode 100644
index 000000000000..629e748fcacf
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/mldonkey/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, ocamlPackages, zlib, bzip2, ncurses, file, gd, libpng, libjpeg }:
+
+stdenv.mkDerivation (rec {
+  name = "mldonkey-3.1.6";
+
+  src = fetchurl {
+    url = https://github.com/ygrek/mldonkey/releases/download/release-3-1-6/mldonkey-3.1.6.tar.bz2;
+    sha256 = "0g84islkj72ymp0zzppcj9n4r21h0vlghnq87hv2wg580mybadhv";
+  };
+
+  preConfigure = stdenv.lib.optionalString (ocamlPackages.camlp4 != null) ''
+    substituteInPlace Makefile --replace '+camlp4' \
+      '${ocamlPackages.camlp4}/lib/ocaml/${ocamlPackages.ocaml.version}/site-lib/camlp4'
+  '';
+
+  buildInputs = [ zlib ncurses bzip2 file gd libpng libjpeg ] ++
+  (with ocamlPackages; [ ocaml camlp4 ]);
+  configureFlags = [ "--disable-gui" ];
+
+  meta = {
+    description = "Client for many p2p networks, with multiple frontends";
+    homepage = http://mldonkey.sourceforge.net/;
+    license = stdenv.lib.licenses.gpl2;
+    platforms = stdenv.lib.platforms.unix;
+  };
+} // (if !ocamlPackages.ocaml.nativeCompilers then
+{
+  # Byte code compilation (the ocaml opt compiler is not supported in some platforms)
+  buildPhase = "make mlnet.byte";
+  installPhase = ''
+    mkdir -p $out/bin
+    cp mlnet.byte $out/bin/mlnet
+  '';
+
+  # ocaml bytecode selfcontained binaries loose the bytecode if stripped
+  dontStrip = true;
+} else {}))
diff --git a/nixpkgs/pkgs/applications/networking/p2p/ncdc/default.nix b/nixpkgs/pkgs/applications/networking/p2p/ncdc/default.nix
new file mode 100644
index 000000000000..c56e39826a66
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/ncdc/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, ncurses, zlib, bzip2, sqlite, pkgconfig, glib, gnutls }:
+
+stdenv.mkDerivation rec {
+  name = "ncdc-${version}";
+  version = "1.20";
+
+  src = fetchurl {
+    url = "https://dev.yorhel.nl/download/ncdc-${version}.tar.gz";
+    sha256 = "0ccn7dqbqpqsbglqyalz32c20rjvf1pw0zr88jyvd2b2vxbqi6ca";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ ncurses zlib bzip2 sqlite glib gnutls ];
+
+  meta = with stdenv.lib; {
+    description = "Modern and lightweight direct connect client with a friendly ncurses interface";
+    homepage = https://dev.yorhel.nl/ncdc;
+    license = licenses.mit;
+    platforms = platforms.linux; # arbitrary
+    maintainers = with maintainers; [ ehmry ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/opentracker/default.nix b/nixpkgs/pkgs/applications/networking/p2p/opentracker/default.nix
new file mode 100644
index 000000000000..46c482818f8b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/opentracker/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchgit, libowfat, zlib }:
+
+stdenv.mkDerivation {
+  name = "opentracker-2018-05-26";
+
+  src = fetchgit {
+    url = "https://erdgeist.org/gitweb/opentracker";
+    rev = "6411f1567f64248b0d145493c2e61004d2822623";
+    sha256 = "110nfb6n4clykwdzpk54iccsfjawq0krjfqhg114i1z0ri5dyl8j";
+  };
+
+  buildInputs = [ libowfat zlib ];
+
+  installPhase = ''
+    runHook preInstall
+    install -D opentracker $out/bin/opentracker
+    install -D opentracker.conf.sample $out/share/doc/opentracker.conf.sample
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://erdgeist.org/arts/software/opentracker/;
+    license = licenses.beerware;
+    platforms = platforms.linux;
+    description = "Bittorrent tracker project which aims for minimal resource usage and is intended to run at your wlan router.";
+    maintainers = with maintainers; [ makefu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/qbittorrent/default.nix b/nixpkgs/pkgs/applications/networking/p2p/qbittorrent/default.nix
new file mode 100644
index 000000000000..81c493fedcf1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/qbittorrent/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub, pkgconfig
+, boost, libtorrentRasterbar, qtbase, qttools, qtsvg
+, debugSupport ? false # Debugging
+, guiSupport ? true, dbus ? null # GUI (disable to run headless)
+, webuiSupport ? true # WebUI
+}:
+
+assert guiSupport -> (dbus != null);
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "qbittorrent-${version}";
+  version = "4.1.5";
+
+  src = fetchFromGitHub {
+    owner = "qbittorrent";
+    repo = "qbittorrent";
+    rev = "release-${version}";
+    sha256 = "09zcygaxfv9g6av0vsvlyzv4v65wvj766xyfx31yz5ig3xan6ak1";
+  };
+
+  # NOTE: 2018-05-31: CMake is working but it is not officially supported
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ boost libtorrentRasterbar qtbase qttools qtsvg ]
+    ++ optional guiSupport dbus; # D(esktop)-Bus depends on GUI support
+
+  # Otherwise qm_gen.pri assumes lrelease-qt5, which does not exist.
+  QMAKE_LRELEASE = "lrelease";
+
+  configureFlags = [
+    "--with-boost-libdir=${boost.out}/lib"
+    "--with-boost=${boost.dev}" ]
+    ++ optionals (!guiSupport) [ "--disable-gui" "--enable-systemd" ] # Also place qbittorrent-nox systemd service files
+    ++ optional (!webuiSupport) "--disable-webui"
+    ++ optional debugSupport "--enable-debug";
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Featureful free software BitTorrent client";
+    homepage    = https://www.qbittorrent.org/;
+    license     = licenses.gpl2;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ Anton-Latukha ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/retroshare/default.nix b/nixpkgs/pkgs/applications/networking/p2p/retroshare/default.nix
new file mode 100644
index 000000000000..2d523cc07dd9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/retroshare/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchFromGitHub, libupnp, gpgme, gnome3, glib, libssh, pkgconfig, protobuf, bzip2
+, libXScrnSaver, speex, curl, libxml2, libxslt, sqlcipher, libmicrohttpd, opencv, qmake, ffmpeg
+, qtmultimedia, qtx11extras, qttools }:
+
+stdenv.mkDerivation rec {
+  name = "retroshare-${version}";
+  version = "0.6.2";
+
+  src = fetchFromGitHub {
+    owner = "RetroShare";
+    repo = "RetroShare";
+    rev = "v${version}";
+    sha256 = "0hly2x87wdvqzzwf3wjzi7092bj8fk4xs6302rkm8gp9bkkmiiw8";
+  };
+
+  # NIX_CFLAGS_COMPILE = [ "-I${glib.dev}/include/glib-2.0" "-I${glib.dev}/lib/glib-2.0/include" "-I${libxml2.dev}/include/libxml2" "-I${sqlcipher}/include/sqlcipher" ];
+
+  patchPhase = ''
+    # Fix build error
+    sed -i 's/UpnpString_get_String(es_event->PublisherUrl)/es_event->PublisherUrl/' \
+      libretroshare/src/upnp/UPnPBase.cpp
+  '';
+
+  nativeBuildInputs = [ pkgconfig qmake ];
+  buildInputs = [
+    speex libupnp gpgme gnome3.libgnome-keyring glib libssh qtmultimedia qtx11extras qttools
+    protobuf bzip2 libXScrnSaver curl libxml2 libxslt sqlcipher libmicrohttpd opencv ffmpeg
+  ];
+
+  preConfigure = ''
+    qmakeFlags="$qmakeFlags DESTDIR=$out"
+  '';
+
+  # gui/settings/PluginsPage.h:25:28: fatal error: ui_PluginsPage.h: No such file or directory
+  enableParallelBuilding = false;
+
+  postInstall = ''
+    mkdir -p $out/bin
+    mv $out/RetroShare06-nogui $out/bin/RetroShare-nogui
+    mv $out/RetroShare06 $out/bin/Retroshare
+    ln -s $out/bin/RetroShare-nogui $out/bin/retroshare-nogui
+
+    # plugins
+    mkdir -p $out/share/retroshare
+    mv $out/lib* $out/share/retroshare
+
+    # BT DHT bootstrap
+    cp libbitdht/src/bitdht/bdboot.txt $out/share/retroshare
+  '';
+
+  meta = with stdenv.lib; {
+    description = "";
+    homepage = http://retroshare.sourceforge.net/;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.domenkozar ];
+    broken = true; # broken by libupnp: 1.6.21 -> 1.8.3 (#41684)
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/soulseekqt/default.nix b/nixpkgs/pkgs/applications/networking/p2p/soulseekqt/default.nix
new file mode 100644
index 000000000000..104131e47752
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/soulseekqt/default.nix
@@ -0,0 +1,73 @@
+{ stdenv
+, fetchurl
+, dbus
+, zlib, fontconfig
+, qtbase, qtmultimedia
+, libjson, libgpgerror
+, libX11, libxcb, libXau, libXdmcp, freetype, libbsd
+, pythonPackages, squashfsTools, desktop-file-utils
+}:
+
+with stdenv.lib;
+let
+  libPath = makeLibraryPath
+    [ stdenv.cc.cc qtbase qtmultimedia dbus libX11 zlib libX11 libxcb libXau libXdmcp freetype fontconfig libbsd libjson libgpgerror];
+
+  version = "2018-1-30";
+
+  mainbin = "SoulseekQt-" + (version) +"-"+ (if stdenv.is64bit then "64bit" else "32bit");
+  srcs = {
+    "x86_64-linux" = fetchurl {
+      url = "https://www.dropbox.com/s/0vi87eef3ooh7iy/${mainbin}.tgz";
+      sha256 = "0d1cayxr1a4j19bc5a3qp9pg22ggzmd55b6f5av3lc6lvwqqg4w6";
+    };
+  };
+
+in stdenv.mkDerivation rec {
+
+  name = "soulseekqt-${version}";
+  inherit version;
+  src = srcs."${stdenv.hostPlatform.system}" or (throw "unsupported system: ${stdenv.hostPlatform.system}");
+
+  dontBuild = true;
+
+  buildInputs = [ pythonPackages.binwalk squashfsTools desktop-file-utils ];
+
+  # avoid usage of appimage's runner option --appimage-extract 
+  unpackCmd = ''
+    export HOME=$(pwd) # workaround for binwalk
+    appimage=$(tar xvf $curSrc) && binwalk --quiet \
+       $appimage -D 'squashfs:squashfs:unsquashfs %e'
+    '';
+  
+  patchPhase = ''
+    cd squashfs-root/
+    binary="$(readlink AppRun)"
+  
+    # fixup desktop file
+    desktop-file-edit --set-key Exec --set-value $binary default.desktop
+    desktop-file-edit --set-key Comment --set-value "${meta.description}" default.desktop
+    desktop-file-edit --set-key Categories --set-value Network default.desktop   
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,share/applications,share/icons/}
+    cp default.desktop $out/share/applications/$binary.desktop
+    cp soulseek.png $out/share/icons/
+    cp $binary $out/bin/
+  '';
+
+  fixupPhase = ''
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+             --set-rpath ${libPath} \
+             $out/bin/$binary
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Official Qt SoulSeek client";
+    homepage = http://www.soulseekqt.net;
+    license = licenses.unfree;
+    maintainers = [ maintainers.genesis ];
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/synapse-bt/default.nix b/nixpkgs/pkgs/applications/networking/p2p/synapse-bt/default.nix
new file mode 100644
index 000000000000..8622b374100a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/synapse-bt/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, fetchFromGitHub, rustPlatform, pkgconfig, openssl, Security }:
+
+rustPlatform.buildRustPackage rec {
+  name = "synapse-bt-unstable-${version}";
+  version = "2018-10-17";
+
+  src = fetchFromGitHub {
+    owner = "Luminarys";
+    repo = "synapse";
+    rev = "76d5e9a23ad00c25cfd0469b1adb479b9ded113a";
+    sha256 = "1lsfvcsmbsg51v8c2hkpwkx0zg25sdjc3q7x72b5bwwnw9l0iglz";
+  };
+
+  cargoSha256 = "1sc8c0w2dbvcdv16idw02y35x0jx5ff6ddzij09pmqjx55zgsjf7";
+
+  buildInputs = [ pkgconfig openssl ] ++ stdenv.lib.optional stdenv.isDarwin Security;
+
+  cargoBuildFlags = [ "--all" ];
+
+  meta = with stdenv.lib; {
+    description = "Flexible and fast BitTorrent daemon";
+    homepage = https://synapse-bt.org/;
+    license = licenses.isc;
+    maintainers = with maintainers; [ dywedir ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/tixati/default.nix b/nixpkgs/pkgs/applications/networking/p2p/tixati/default.nix
new file mode 100644
index 000000000000..d58c4214d0e0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/tixati/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, glib, zlib, dbus, dbus-glib, gtk2, gdk_pixbuf, cairo, pango }:
+
+stdenv.mkDerivation rec {
+  name = "tixati-${version}";
+  version = "2.59";
+
+  src = fetchurl {
+    url = "https://download2.tixati.com/download/tixati-${version}-1.x86_64.manualinstall.tar.gz";
+    sha256 = "0vf5y9kj2g7psgdzv2r46jdh5krdps838ca4wwwxi0dd1mwa65my";
+  };
+
+  installPhase = ''
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+             --set-rpath ${stdenv.lib.makeLibraryPath [ glib zlib dbus dbus-glib gtk2 gdk_pixbuf cairo pango ]} \
+             tixati
+    install -D tixati         $out/bin/tixati
+    install -D tixati.desktop $out/share/applications/tixati.desktop
+    install -D tixati.png     $out/share/icons/tixati.png
+  '';
+
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    description = "Torrent client";
+    homepage = http://www.tixati.com;
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ volth ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/torrential/default.nix b/nixpkgs/pkgs/applications/networking/p2p/torrential/default.nix
new file mode 100644
index 000000000000..999f80a7bbd0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/torrential/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, fetchFromGitHub
+, cmake
+, pkgconfig
+, pantheon
+, curl
+, glib
+, gtk3
+, hicolor-icon-theme
+, libb64
+, libevent
+, libgee
+, libnatpmp
+, libunity
+, miniupnpc
+, openssl
+, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "torrential";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "davidmhewitt";
+    repo = "torrential";
+    rev = version;
+    fetchSubmodules = true;
+    sha256 = "17aby0c17ybyzyzyc1cg1j6q1a186801fy84avlaxahqp7vdammx";
+  };
+
+  nativeBuildInputs = [
+    cmake
+    pantheon.vala
+    pkgconfig
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    curl
+    glib
+    gtk3
+    hicolor-icon-theme
+    libb64
+    libevent
+    libgee
+    libnatpmp
+    libunity
+    miniupnpc
+    openssl
+    pantheon.granite
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Download torrents in style with this speedy, minimalist torrent client for elementary OS";
+    homepage = https://github.com/davidmhewitt/torrential;
+    maintainers = with maintainers; [ kjuvi ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/transgui/default.nix b/nixpkgs/pkgs/applications/networking/p2p/transgui/default.nix
new file mode 100644
index 000000000000..f047b630ec40
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/transgui/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, fetchsvn, pkgconfig, makeDesktopItem, unzip, fpc, lazarus,
+libX11, glib, gtk2, gdk_pixbuf, pango, atk, cairo, openssl }:
+
+stdenv.mkDerivation rec {
+  name = "transgui-5.0.1-svn-r${revision}";
+  revision = "988";
+
+  src = fetchsvn {
+    url = "https://svn.code.sf.net/p/transgui/code/trunk/";
+    rev = revision;
+    sha256 = "1i6ysxs6d2wsmqi6ha10rl3n562brmhizlanhcfad04i53y8pyxf";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    unzip fpc lazarus stdenv.cc
+    libX11 glib gtk2 gdk_pixbuf pango atk cairo openssl
+  ];
+
+  NIX_LDFLAGS = "
+    -L${stdenv.cc.cc.lib}/lib
+    -lX11 -lglib-2.0 -lgtk-x11-2.0 -lgdk-x11-2.0
+    -lgdk_pixbuf-2.0 -lpango-1.0 -latk-1.0 -lcairo -lc -lcrypto
+  ";
+
+  prePatch = ''
+    substituteInPlace restranslator.pas --replace /usr/ $out/
+  '';
+
+  patches = [
+    ./r988-compile-fix.patch
+  ];
+
+  makeFlags = [
+    "FPC=fpc"
+    "PP=fpc"
+    "INSTALL_PREFIX=$(out)"
+  ];
+
+  LCL_PLATFORM = "gtk2"; 
+
+  desktopItem = makeDesktopItem rec {
+    name = "transgui";
+    exec = name + " %U";
+    icon = name;
+    type = "Application";
+    comment = meta.description;
+    desktopName = "Transmission Remote GUI";
+    genericName = "BitTorrent Client";
+    categories = stdenv.lib.concatStringsSep ";" [
+      "Application" "Network" "FileTransfer" "P2P" "GTK"
+    ];
+    startupNotify = "true";
+    mimeType = stdenv.lib.concatStringsSep ";" [
+      "application/x-bittorrent" "x-scheme-handler/magnet"
+    ];
+  };
+
+  postInstall = ''
+    mkdir -p "$out/share/applications"
+    cp $desktopItem/share/applications/* $out/share/applications
+    mkdir -p "$out/share/icons/hicolor/48x48/apps"
+    cp transgui.png "$out/share/icons/hicolor/48x48/apps"
+    mkdir -p "$out/share/transgui"
+    cp -r "./lang" "$out/share/transgui" 
+  '';
+
+  meta = { 
+    description = "A cross platform front-end for the Transmission Bit-Torrent client";
+    homepage = https://sourceforge.net/p/transgui;
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [ ramkromberg ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/transgui/r988-compile-fix.patch b/nixpkgs/pkgs/applications/networking/p2p/transgui/r988-compile-fix.patch
new file mode 100644
index 000000000000..4b070d0cbe8a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/transgui/r988-compile-fix.patch
@@ -0,0 +1,22 @@
+diff --git a/utils.pas b/utils.pas
+index eb8b828..1ff2440 100644
+--- a/utils.pas
++++ b/utils.pas
+@@ -100,7 +100,7 @@ uses
+ {$ifdef CALLSTACK}
+   lineinfo2,
+ {$endif CALLSTACK}
+-  LazFileUtils, LazUtf8, StdCtrls, Graphics;
++  LazFileUtils, LazUtf8, StdCtrls, Graphics, FileUtil;
+ 
+ {$ifdef windows}
+ function FileOpenUTF8(Const FileName : string; Mode : Integer) : THandle;
+@@ -235,7 +235,7 @@ end;
+ 
+ function ParamStrUTF8(Param: Integer): utf8string;
+ begin
+-  Result:=FileUtil.ParamStrUTF8(Param);
++  Result:=LazUtf8.ParamStrUTF8(Param);
+ end;
+ 
+ function ParamCount: integer;
diff --git a/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix b/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix
new file mode 100644
index 000000000000..fc803fa2745c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-cli/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pythonPackages }:
+
+stdenv.mkDerivation rec {
+  name = "transmission-remote-cli-${version}";
+  version = "1.7.1";
+
+  src = fetchurl {
+    url = "https://github.com/fagga/transmission-remote-cli/archive/v${version}.tar.gz";
+    sha256 = "1y0hkpcjf6jw9xig8yf484hbhy63nip0pkchx401yxj81m25l4z9";
+  };
+
+  buildInputs = with pythonPackages; [ python wrapPython ];
+
+  installPhase = ''
+    install -D transmission-remote-cli $out/bin/transmission-remote-cli
+    install -D transmission-remote-cli.1 $out/share/man/man1/transmission-remote-cli.1
+    wrapPythonPrograms
+  '';
+
+  meta = {
+    description = "Curses interface for the Transmission BitTorrent daemon";
+    homepage = https://github.com/fagga/transmission-remote-cli;
+    license = stdenv.lib.licenses.gpl3Plus;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-gtk/default.nix b/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-gtk/default.nix
new file mode 100644
index 000000000000..7d2f34c591e9
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/transmission-remote-gtk/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, autoconf, automake, libtool, wrapGAppsHook, fetchFromGitHub, pkgconfig
+, intltool, gtk3, json-glib, curl, glib, autoconf-archive, appstream-glib
+, hicolor-icon-theme }:
+
+
+stdenv.mkDerivation rec {
+  name = "transmission-remote-gtk-${version}";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = "transmission-remote-gtk";
+    repo = "transmission-remote-gtk";
+    rev = "${version}";
+    sha256 = "1pipc1f94jdppv597mqmcj2kw2rdvaqcbl512v7z8vir76p1a7gk";
+  };
+
+  preConfigure = "./autogen.sh";
+
+  nativeBuildInputs= [
+    autoconf automake libtool wrapGAppsHook
+    pkgconfig intltool autoconf-archive
+    appstream-glib
+  ];
+
+  buildInputs = [ gtk3 json-glib curl glib hicolor-icon-theme ];
+
+  doCheck = false; # fails with style validation error
+
+  meta = with stdenv.lib; {
+    description = "GTK remote control for the Transmission BitTorrent client";
+    homepage = https://github.com/ajf8/transmission-remote-gtk;
+    license = licenses.gpl2;
+    maintainers = [ maintainers.ehmry ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/transmission/default.nix b/nixpkgs/pkgs/applications/networking/p2p/transmission/default.nix
new file mode 100644
index 000000000000..b94864a0b40f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/transmission/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, fetchurl, pkgconfig, intltool, file, wrapGAppsHook
+, openssl, curl, libevent, inotify-tools, systemd, zlib, hicolor-icon-theme
+, enableGTK3 ? false, gtk3
+, enableSystemd ? stdenv.isLinux
+, enableDaemon ? true
+, enableCli ? true
+}:
+
+let inherit (stdenv.lib) optional optionals optionalString; in
+
+stdenv.mkDerivation rec {
+  name = "transmission-" + optionalString enableGTK3 "gtk-" + version;
+  version = "2.94";
+
+  src = fetchurl {
+    url = "https://github.com/transmission/transmission-releases/raw/master/transmission-2.94.tar.xz";
+    sha256 = "0zbbj7rlm6m7vb64x68a64cwmijhsrwx9l63hbwqs7zr9742qi1m";
+  };
+
+  nativeBuildInputs = [ pkgconfig ]
+    ++ optionals enableGTK3 [ wrapGAppsHook ];
+  buildInputs = [ intltool file openssl curl libevent zlib ]
+    ++ optionals enableGTK3 [ gtk3 ]
+    ++ optionals enableSystemd [ systemd ]
+    ++ optionals stdenv.isLinux [ inotify-tools ]
+    ++ optionals enableGTK3 [ hicolor-icon-theme ];
+
+  postPatch = ''
+    substituteInPlace ./configure \
+      --replace "libsystemd-daemon" "libsystemd" \
+      --replace "/usr/bin/file"     "${file}/bin/file" \
+      --replace "test ! -d /Developer/SDKs/MacOSX10.5.sdk" "false"
+  '';
+
+  configureFlags = [
+      ("--enable-cli=" + (if enableCli then "yes" else "no"))
+      ("--enable-daemon=" + (if enableDaemon then "yes" else "no"))
+      "--disable-mac" # requires xcodebuild
+    ]
+    ++ optional enableSystemd "--with-systemd-daemon"
+    ++ optional enableGTK3 "--with-gtk";
+
+  NIX_LDFLAGS = optionalString stdenv.isDarwin "-framework CoreFoundation";
+
+  meta = with stdenv.lib; {
+    description = "A fast, easy and free BitTorrent client";
+    longDescription = ''
+      Transmission is a BitTorrent client which features a simple interface
+      on top of a cross-platform back-end.
+      Feature spotlight:
+        * Uses fewer resources than other clients
+        * Native Mac, GTK+ and Qt GUI clients
+        * Daemon ideal for servers, embedded systems, and headless use
+        * All these can be remote controlled by Web and Terminal clients
+        * Bluetack (PeerGuardian) blocklists with automatic updates
+        * Full encryption, DHT, and PEX support
+    '';
+    homepage = http://www.transmissionbt.com/;
+    license = licenses.gpl2; # parts are under MIT
+    maintainers = with maintainers; [ astsmtl vcunat wizeman ];
+    platforms = platforms.unix;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/p2p/tribler/default.nix b/nixpkgs/pkgs/applications/networking/p2p/tribler/default.nix
new file mode 100644
index 000000000000..29ec8158099c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/tribler/default.nix
@@ -0,0 +1,81 @@
+{ stdenv, fetchurl, pythonPackages, makeWrapper, imagemagick
+, enablePlayer ? true, vlc ? null, qt5 }:
+
+stdenv.mkDerivation rec {
+  name = "tribler-${version}";
+  version = "7.1.2";
+
+  src = fetchurl {
+    url = "https://github.com/Tribler/tribler/releases/download/v${version}/Tribler-v${version}.tar.gz";
+    sha256 = "1ayzqx4358qlx56hsnsn5s8xl6mzdb6nw4kwsalmp86dw6vmmis8";
+  };
+
+  buildInputs = [
+    pythonPackages.python
+    pythonPackages.wrapPython
+    makeWrapper
+    imagemagick
+  ];
+
+  pythonPath = [
+    pythonPackages.libtorrentRasterbar
+    pythonPackages.apsw
+    pythonPackages.twisted
+    pythonPackages.netifaces
+    pythonPackages.pycrypto
+    pythonPackages.pyasn1
+    pythonPackages.requests
+    pythonPackages.setuptools
+    pythonPackages.m2crypto
+    pythonPackages.pyqt5
+    pythonPackages.chardet
+    pythonPackages.cherrypy
+    pythonPackages.cryptography
+    pythonPackages.libnacl
+    pythonPackages.configobj
+    pythonPackages.matplotlib
+    pythonPackages.plyvel
+    pythonPackages.decorator
+    pythonPackages.feedparser
+    pythonPackages.service-identity
+    pythonPackages.psutil
+    pythonPackages.meliae
+    pythonPackages.sip
+    pythonPackages.pillow
+    pythonPackages.networkx
+  ];
+
+  postPatch = ''
+    ${stdenv.lib.optionalString enablePlayer ''
+      substituteInPlace "./TriblerGUI/vlc.py" --replace "ctypes.CDLL(p)" "ctypes.CDLL('${vlc}/lib/libvlc.so')"
+      substituteInPlace "./TriblerGUI/widgets/videoplayerpage.py" --replace "if vlc and vlc.plugin_path" "if vlc"
+      substituteInPlace "./TriblerGUI/widgets/videoplayerpage.py" --replace "os.environ['VLC_PLUGIN_PATH'] = vlc.plugin_path" "os.environ['VLC_PLUGIN_PATH'] = '${vlc}/lib/vlc/plugins'"
+    ''}
+  '';
+
+  installPhase = ''
+    find . -name '*.png' -exec convert -strip {} {} \;
+    mkdir -pv $out
+    # Nasty hack; call wrapPythonPrograms to set program_PYTHONPATH.
+    wrapPythonPrograms
+    cp -prvd ./* $out/
+    makeWrapper ${pythonPackages.python}/bin/python $out/bin/tribler \
+        --set QT_QPA_PLATFORM_PLUGIN_PATH ${qt5.qtbase.bin}/lib/qt-*/plugins/platforms \
+        --set _TRIBLERPATH $out \
+        --set PYTHONPATH $out:$program_PYTHONPATH \
+        --set NO_AT_BRIDGE 1 \
+        --run 'cd $_TRIBLERPATH' \
+        --add-flags "-O $out/run_tribler.py" \
+        ${stdenv.lib.optionalString enablePlayer ''
+          --prefix LD_LIBRARY_PATH : ${vlc}/lib
+        ''}
+  '';
+
+  meta = with stdenv.lib; {
+    maintainers = with maintainers; [ xvapx ];
+    homepage = https://www.tribler.org/;
+    description = "A completely decentralised P2P filesharing client based on the Bittorrent protocol";
+    license = licenses.lgpl21;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/twister/default.nix b/nixpkgs/pkgs/applications/networking/p2p/twister/default.nix
new file mode 100644
index 000000000000..cce44521a620
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/twister/default.nix
@@ -0,0 +1,72 @@
+{ stdenv, fetchurl, fetchpatch, autoconf, automake, libtool, pkgconfig, python2
+, boost, db, openssl, geoip, libiconv, miniupnpc
+, srcOnly, fetchgit
+}:
+
+let
+  twisterHTML = srcOnly {
+    name = "twister-html";
+    src = fetchgit {
+      url = "git://github.com/miguelfreitas/twister-html.git";
+      rev = "01e7f7ca9b7e42ed90f91bc42da2c909ca5c0b9b";
+      sha256 = "0scjbin6s1kmi0bqq0dx0qyjw4n5xgmj567n0156i39f9h0dabqy";
+    };
+  };
+
+  boostPython = boost.override { enablePython = true; };
+
+in stdenv.mkDerivation rec {
+  name = "twister-${version}";
+  version = "0.9.34";
+
+  src = fetchurl {
+    url = "https://github.com/miguelfreitas/twister-core/"
+        + "archive/v${version}.tar.gz";
+    sha256 = "1bi8libivd9y2bn9fc7vbc5q0jnal0pykpzgri6anqaww22y58jq";
+  };
+
+  configureFlags = [
+    "--with-libgeoip"
+    "--with-libiconv"
+    "--disable-deprecated-functions"
+    "--enable-tests"
+    "--enable-python-binding"
+    "--with-boost-libdir=${boostPython.out}/lib"
+  ];
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [
+    autoconf automake libtool python2
+    boostPython db openssl geoip miniupnpc libiconv
+  ];
+
+  patches = stdenv.lib.singleton (fetchpatch {
+    url = "https://github.com/miguelfreitas/twister-core/commit/"
+        + "dd4f5a176958ea6ed855dc3fcef79680c1c0c92c.patch";
+    sha256 = "06fgmqnjyl83civ3ixiq673k8zjgm8n2w4w46nsh810nprqim8s6";
+  });
+
+  postPatch = ''
+    sed -i -e '/-htmldir/s|(default: [^)]*)|(default: ${twisterHTML})|' \
+      src/init.cpp
+    sed -i -e '/GetDataDir.*html/s|path *= *[^;]*|path = "${twisterHTML}"|' \
+      src/util.cpp
+  '';
+
+  preConfigure = ''
+    sh autotool.sh
+  '';
+
+  installPhase = ''
+    install -vD twisterd "$out/bin/twisterd"
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = http://www.twister.net.co/;
+    description = "Peer-to-peer microblogging";
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/vuze/default.nix b/nixpkgs/pkgs/applications/networking/p2p/vuze/default.nix
new file mode 100644
index 000000000000..8725d5263fe3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/vuze/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchsvn, jdk, jre, ant, swt, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "vuze-${version}";
+  version = "5750";
+
+  src = fetchsvn {
+    url = "http://svn.vuze.com/public/client/tags/RELEASE_${version}";
+    sha256 = "07w6ipyiy8hi88d6yxbbf3vkv26mj7dcz9yr8141hb2ig03v0h0p";
+  };
+
+  buildInputs = [ makeWrapper jdk ant ];
+
+  buildPhase = "ant";
+
+  installPhase = ''
+    install -D dist/Vuze_0000-00.jar $out/share/java/Vuze_${version}-00.jar
+    makeWrapper ${jre}/bin/java $out/bin/vuze \
+      --add-flags "-Xmx256m -Djava.library.path=${swt}/lib -cp $out/share/java/Vuze_${version}-00.jar:${swt}/jars/swt.jar org.gudy.azureus2.ui.swt.Main"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Torrent client";
+    homepage = http://www.vuze.com;
+    license = licenses.unfree;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ volth ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/p2p/zeronet/default.nix b/nixpkgs/pkgs/applications/networking/p2p/zeronet/default.nix
new file mode 100644
index 000000000000..88f07f0a8a50
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/p2p/zeronet/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, python2Packages }:
+
+python2Packages.buildPythonApplication rec {
+  pname = "zeronet";
+  version = "0.6.5";
+  format = "other";
+
+  src = fetchFromGitHub {
+    owner = "HelloZeroNet";
+    repo = "ZeroNet";
+    rev = "v${version}";
+    sha256 = "1b9jg525jq40czyw9xh9ck90fl9rzrdmzl2mzhqqhz23idb60j4a";
+  };
+
+  propagatedBuildInputs = with python2Packages; [ msgpack gevent ];
+  buildPhase = "${python2Packages.python.interpreter} -O -m compileall .";
+
+  installPhase = ''
+    mkdir -p $out/share
+    cp -r plugins src tools *.py $out/share/
+  '';
+
+  postFixup = ''
+    makeWrapper "$out/share/zeronet.py" "$out/bin/zeronet" \
+      --set PYTHONPATH "$PYTHONPATH" \
+      --set PATH ${python2Packages.python}/bin
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Decentralized websites using Bitcoin crypto and BitTorrent network";
+    homepage = "https://zeronet.io/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ fgaz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ping/default.nix b/nixpkgs/pkgs/applications/networking/ping/default.nix
new file mode 100644
index 000000000000..d20b07a8d3b1
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ping/default.nix
@@ -0,0 +1,60 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkgconfig
+, pantheon
+, python3
+, glib
+, gtk3
+, gtksourceview
+, hicolor-icon-theme
+, json-glib
+, libsoup
+, libgee
+, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "ping";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "jeremyvaartjes";
+    repo = "ping";
+    rev = version;
+    sha256 = "1h9cdy2jxa2ffykjg89j21hazls32z9yyv3g0x07x3vizzl5xcij";
+  };
+
+  nativeBuildInputs = [
+    meson
+    ninja
+    pantheon.vala
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    glib
+    gtk3
+    gtksourceview
+    hicolor-icon-theme
+    json-glib
+    libgee
+    libsoup
+    pantheon.granite
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A helpful tool that lets you debug what part of your API is causing you issues";
+    homepage = https://github.com/jeremyvaartjes/ping;
+    maintainers = with maintainers; [ kjuvi ] ++ pantheon.maintainers;
+    platforms = platforms.linux;
+    license = licenses.gpl3;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/pjsip/default.nix b/nixpkgs/pkgs/applications/networking/pjsip/default.nix
new file mode 100644
index 000000000000..3930ea4ff11f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/pjsip/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, openssl, libsamplerate, alsaLib }:
+
+stdenv.mkDerivation rec {
+  name = "pjsip-${version}";
+  version = "2.8";
+
+  src = fetchurl {
+    url = "http://www.pjsip.org/release/${version}/pjproject-${version}.tar.bz2";
+    sha256 = "0ybg0113rp3fk49rm2v0pcgqb28h3dv1pdy9594w2ggiz7bhngah";
+  };
+
+  buildInputs = [ openssl libsamplerate alsaLib ];
+
+  preConfigure = ''
+    export LD=$CC
+  '';
+
+  postInstall = ''
+    mkdir -p $out/bin
+    cp pjsip-apps/bin/pjsua-* $out/bin/pjsua
+    mkdir -p $out/share/${name}/samples
+    cp pjsip-apps/bin/samples/*/* $out/share/${name}/samples
+  '';
+
+  # We need the libgcc_s.so.1 loadable (for pthread_cancel to work)
+  dontPatchELF = true;
+
+  meta = {
+    description = "A multimedia communication library written in C, implementing standard based protocols such as SIP, SDP, RTP, STUN, TURN, and ICE";
+    homepage = http://pjsip.org/;
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [olynch];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/protocol/default.nix b/nixpkgs/pkgs/applications/networking/protocol/default.nix
new file mode 100644
index 000000000000..305aceec62b5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/protocol/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, buildPythonApplication, fetchFromGitHub }:
+
+buildPythonApplication rec {
+  pname = "protocol";
+  version = "20171226";
+
+  src = fetchFromGitHub {
+    owner = "luismartingarcia";
+    repo = "protocol";
+    rev = "d450da7d8a58595d8ef82f1d199a80411029fc7d";
+    sha256 = "1g31s2xx0bw8ak5ag1c6mv0p0b8bj5dp3lkk9mxaf2ndj1m1qdkw";
+  };
+
+  meta = with stdenv.lib; {
+    description = "An ASCII Header Generator for Network Protocols";
+    homepage = https://github.com/luismartingarcia/protocol;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ teto ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/protonmail-bridge/default.nix b/nixpkgs/pkgs/applications/networking/protonmail-bridge/default.nix
new file mode 100644
index 000000000000..eac1acb1e6a3
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/protonmail-bridge/default.nix
@@ -0,0 +1,85 @@
+{ stdenv, fetchurl, lib, qtbase, qtmultimedia, qtsvg, qtdeclarative, qttools, full,
+  libsecret, libGL, libpulseaudio, glib, makeWrapper, makeDesktopItem }:
+
+let
+  version = "1.1.3-1";
+
+  description = ''
+    An application that runs on your computer in the background and seamlessly encrypts
+    and decrypts your mail as it enters and leaves your computer.
+
+    To work, gnome-keyring service must be enabled.
+  '';
+
+  desktopItem = makeDesktopItem {
+    name = "protonmail-bridge";
+    exec = "protonmail-bridge";
+    icon = "protonmail-bridge";
+    comment = stdenv.lib.replaceStrings ["\n"] [" "] description;
+    desktopName = "ProtonMail Bridge";
+    genericName = "ProtonMail Bridge for Linux";
+    categories = "Utility;Security;Network;Email";
+  };
+in stdenv.mkDerivation rec {
+  name = "protonmail-bridge-${version}";
+
+  src = fetchurl {
+    url = "https://protonmail.com/download/protonmail-bridge_${version}_amd64.deb";
+    sha256 = "15kyhyx1v4bb2sqzwq7bqrxxw7g733p5jnsgjqka2ygzg6dl2c5n";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  sourceRoot = ".";
+
+  unpackCmd = ''
+    ar p "$src" data.tar.xz | tar xJ
+  '';
+
+  installPhase = ''
+    mkdir -p $out/{bin,lib,share/applications}
+    mkdir -p $out/share/{applications,icons/hicolor/scalable/apps}
+
+    cp -r usr/lib/protonmail/bridge/protonmail-bridge $out/lib
+    cp usr/share/icons/protonmail/ProtonMail_Bridge.svg $out/share/icons/hicolor/scalable/apps/protonmail-bridge.svg
+    cp ${desktopItem}/share/applications/* $out/share/applications
+
+    ln -s $out/lib/protonmail-bridge $out/bin/protonmail-bridge
+  '';
+
+  postFixup = let
+    rpath = lib.makeLibraryPath [
+      stdenv.cc.cc.lib
+      qtbase
+      qtmultimedia
+      qtsvg
+      qtdeclarative
+      qttools
+      libGL
+      libsecret
+      libpulseaudio
+      glib
+    ];
+
+    qtPath = prefix: "${full}/${prefix}";
+  in ''
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${rpath}" \
+      $out/lib/protonmail-bridge
+
+    wrapProgram $out/lib/protonmail-bridge \
+      --set QT_PLUGIN_PATH "${qtPath qtbase.qtPluginPrefix}" \
+      --set QML_IMPORT_PATH "${qtPath qtbase.qtQmlPrefix}" \
+      --set QML2_IMPORT_PATH "${qtPath qtbase.qtQmlPrefix}" \
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://www.protonmail.com/bridge;
+    license = licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ lightdiscord ];
+
+    inherit description;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/protonvpn-cli/default.nix b/nixpkgs/pkgs/applications/networking/protonvpn-cli/default.nix
new file mode 100644
index 000000000000..e79ca515b518
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/protonvpn-cli/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, lib, fetchFromGitHub, makeWrapper, coreutils
+, openvpn, python, dialog, wget, update-resolv-conf }:
+
+let
+  expectedUpdateResolvPath = "/etc/openvpn/update-resolv-conf";
+  actualUpdateResolvePath = "${update-resolv-conf}/libexec/openvpn/update-resolv-conf";
+
+in stdenv.mkDerivation rec {
+  name = "protonvpn-cli";
+  version = "1.1.2";
+
+  src = fetchFromGitHub {
+    owner = "ProtonVPN";
+    repo = "protonvpn-cli";
+    rev = "v${version}";
+    sha256 = "0xvflr8zf267n3dv63nkk4wjxhbckw56sqmyca3krf410vrd7zlv";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    substituteInPlace protonvpn-cli.sh \
+      --replace ${expectedUpdateResolvPath} ${actualUpdateResolvePath} \
+      --replace \$UID 0 \
+      --replace /etc/resolv.conf /dev/null \
+      --replace \
+        "  echo \"Connecting...\"" \
+        "  sed -ri 's@${expectedUpdateResolvPath}@${actualUpdateResolvePath}@g' \"\$openvpn_config\"; echo \"Connecting...\""
+    cp protonvpn-cli.sh "$out/bin/protonvpn-cli"
+    ln -s "$out/bin/protonvpn-cli" "$out/bin/pvpn"
+  '';
+
+  postInstallPhase = ''
+    wrapProgram $out/protonvpn-cli \
+      --prefix PATH : ${lib.makeBinPath [ coreutils openvpn python dialog wget update-resolv-conf ]}
+  '';
+
+  meta = with stdenv.lib; {
+    description = "ProtonVPN Command-Line Tool";
+    homepage = https://github.com/ProtonVPN/protonvpn-cli;
+    maintainers = with maintainers; [ caugner ];
+    license = licenses.mit;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ps2client/default.nix b/nixpkgs/pkgs/applications/networking/ps2client/default.nix
new file mode 100644
index 000000000000..5b292fe7bec5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ps2client/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  version = "unstable-2018-10-18";
+  name = "ps2client-${version}";
+
+  src = fetchFromGitHub {
+    owner = "ps2dev";
+    repo  = "ps2client";
+    rev = "92fcaf18aabf74daaed40bd50d428cce326a87c0";
+    sha256 = "1rlmns44pxm6dkh6d3cz9sw8v7pvi53r7r5r3kgwdzkhixjj0cdg";
+  };
+
+  patchPhase = ''
+   sed -i -e "s|-I/usr/include||g" -e "s|-I/usr/local/include||g" Makefile
+  '';
+  
+  installPhase = ''
+    make PREFIX=$out install
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Desktop clients to interact with ps2link and ps2netfs";
+    homepage = https://github.com/ps2dev/ps2client;
+    license = licenses.bsd3;
+    maintainers = [ maintainers.genesis ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/pyload/beautifulsoup.nix b/nixpkgs/pkgs/applications/networking/pyload/beautifulsoup.nix
new file mode 100644
index 000000000000..571df924e1f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/pyload/beautifulsoup.nix
@@ -0,0 +1,20 @@
+{ pythonPackages, isPy3k, pkgs }:
+
+pythonPackages.buildPythonPackage rec {
+  name = "beautifulsoup-3.2.1";
+  disabled = isPy3k;
+
+  src = pkgs.fetchurl {
+    url = "http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.2.1.tar.gz";
+    sha256 = "1nshbcpdn0jpcj51x0spzjp519pkmqz0n0748j7dgpz70zlqbfpm";
+  };
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = {
+    homepage = http://www.crummy.com/software/BeautifulSoup/;
+    license = "bsd";
+    description = "Undemanding HTML/XML parser";
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/pyload/default.nix b/nixpkgs/pkgs/applications/networking/pyload/default.nix
new file mode 100644
index 000000000000..6a89731ff104
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/pyload/default.nix
@@ -0,0 +1,60 @@
+{ stdenv, fetchFromGitHub, fetchpatch, pythonPackages, gocr, unrar, rhino, spidermonkey }:
+
+let
+  beautifulsoup = pythonPackages.callPackage ./beautifulsoup.nix {
+    inherit pythonPackages;
+  };
+
+in pythonPackages.buildPythonApplication rec {
+  version = "0.4.9-next";
+  name = "pyLoad-" + version;
+
+  src = fetchFromGitHub {
+    owner = "pyload";
+    repo = "pyload";
+    rev = "721ea9f089217b9cb0f2799c051116421faac081";
+    sha256 = "1ad4r9slx1wgvd2fs4plfbpzi4i2l2bk0lybzsb2ncgh59m87h54";
+  };
+
+  patches =
+    let
+      # gets merged in next release version of pyload
+      configParserPatch = fetchpatch {
+        url = "https://patch-diff.githubusercontent.com/raw/pyload/pyload/pull/2625.diff";
+        sha256 = "1bisgx78kcr5c0x0i3h0ch5mykns5wx5wx7gvjj0pc71lfzlxzb9";
+      };
+      setupPyPatch = fetchpatch {
+        url = "https://patch-diff.githubusercontent.com/raw/pyload/pyload/pull/2638.diff";
+        sha256 = "006g4qbl582262ariflbyfrszcx8ck2ac1cpry1f82f76p4cgf6z";
+      };
+    in [ configParserPatch setupPyPatch ];
+
+  buildInputs = [
+    unrar rhino spidermonkey gocr pythonPackages.paver
+  ];
+
+  propagatedBuildInputs = with pythonPackages; [
+    pycurl jinja2 beaker thrift simplejson pycrypto feedparser tkinter
+    beautifulsoup send2trash
+  ];
+
+  #remove this once the PR patches above are merged. Needed because githubs diff endpoint
+  #does not support diff -N
+  prePatch = ''
+    touch module/config/__init__.py
+  '';
+
+  preBuild = ''
+    paver generate_setup
+  '';
+
+  doCheck = false;
+
+  meta = {
+    description = "Free and open source downloader for 1-click-hosting sites";
+    homepage = https://github.com/pyload/pyload;
+    license = stdenv.lib.licenses.gpl3;
+    maintainers = [ stdenv.lib.maintainers.mahe ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix b/nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix
new file mode 100644
index 000000000000..d9dd2fc9127a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/anydesk/default.nix
@@ -0,0 +1,80 @@
+{ stdenv, fetchurl, makeWrapper, makeDesktopItem
+, atk, cairo, gdk_pixbuf, glib, gnome2, gtk2, libGLU_combined, pango, xorg
+, lsb-release, freetype, fontconfig, pangox_compat, polkit, polkit_gnome }:
+
+let
+  sha256 = {
+    "x86_64-linux" = "08kdxsg9npb1nmlr2jyq7p238735kqkp7c5xckxn6rc4cp12n2y2";
+    "i686-linux"   = "11r5d4234zbkkgyrd7q9x3w7s7lailnq7z4x8cnhpr8vipzrg7h2";
+  }."${stdenv.hostPlatform.system}" or (throw "system ${stdenv.hostPlatform.system} not supported");
+
+  arch = {
+    "x86_64-linux" = "amd64";
+    "i686-linux"   = "i686";
+  }."${stdenv.hostPlatform.system}" or (throw "system ${stdenv.hostPlatform.system} not supported");
+
+  description = "Desktop sharing application, providing remote support and online meetings";
+
+  desktopItem = makeDesktopItem rec {
+    name = "anydesk";
+    exec = "@out@/bin/anydesk";
+    icon = "anydesk";
+    desktopName = "anydesk";
+    genericName = description;
+    categories = "Application;Network;";
+    startupNotify = "false";
+  };
+
+in stdenv.mkDerivation rec {
+  name = "anydesk-${version}";
+  version = "4.0.1";
+
+  src = fetchurl {
+    url = "https://download.anydesk.com/linux/${name}-${arch}.tar.gz";
+    inherit sha256;
+  };
+
+  buildInputs = [
+    atk cairo gdk_pixbuf glib gtk2 stdenv.cc.cc pango
+    gnome2.gtkglext libGLU_combined freetype fontconfig
+    pangox_compat polkit polkit_gnome
+  ] ++ (with xorg; [
+    libxcb libX11 libXdamage libXext libXfixes libXi libXmu
+    libXrandr libXtst libXt libICE libSM
+  ]);
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/share/{applications,doc/anydesk,icons/hicolor}
+    install -m755 anydesk $out/bin/anydesk
+    cp changelog copyright README $out/share/doc/anydesk
+    cp -r icons/* $out/share/icons/hicolor/
+    cp ${desktopItem}/share/applications/*.desktop $out/share/applications
+
+    runHook postInstall
+  '';
+
+  postFixup = ''
+    patchelf \
+      --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+      --set-rpath "${stdenv.lib.makeLibraryPath buildInputs}" \
+      $out/bin/anydesk
+
+    wrapProgram $out/bin/anydesk \
+      --prefix PATH : ${stdenv.lib.makeBinPath [ lsb-release ]}
+
+    substituteInPlace $out/share/applications/*.desktop \
+      --subst-var out
+  '';
+
+  meta = with stdenv.lib; {
+    inherit description;
+    homepage = http://www.anydesk.com;
+    license = licenses.unfree;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ peterhoeg ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/citrix-receiver/default.nix b/nixpkgs/pkgs/applications/networking/remote/citrix-receiver/default.nix
new file mode 100644
index 000000000000..d6e25ae4e7b5
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/citrix-receiver/default.nix
@@ -0,0 +1,215 @@
+{ stdenv
+, lib
+, fetchurl
+, requireFile
+, makeWrapper
+, libredirect
+, busybox
+, file
+, makeDesktopItem
+, tzdata
+, cacert
+, glib
+, gtk2
+, atk
+, gdk_pixbuf
+, cairo
+, pango
+, gnome3
+, xorg
+, libpng12
+, freetype
+, fontconfig
+, gtk_engines
+, alsaLib
+, libidn
+, zlib
+, version ? "13.10.0"
+}:
+
+let
+  # In 56e1bdc7f9c (libidn: 1.34 -> 1.35), libidn.so.11 became libidn.so.12.
+  # Citrix looks for the former so we build version 1.34 to please the binary
+  libidn_134 = libidn.overrideDerivation (_: rec {
+    name = "libidn-1.34";
+    src = fetchurl {
+      url = "mirror://gnu/libidn/${name}.tar.gz";
+      sha256 = "0g3fzypp0xjcgr90c5cyj57apx1cmy0c6y9lvw2qdcigbyby469p";
+    };
+  });
+
+  versionInfo = let
+    supportedVersions = {
+      "13.10.0" = {
+        major     = "13";
+        minor     = "10";
+        patch     = "0";
+        x64hash   = "7025688C7891374CDA11C92FC0BA2FA8151AEB4C4D31589AD18747FAE943F6EA";
+        x86hash   = "2DCA3C8EDED11C5D824D579BC3A6B7D531EAEDDCBFB16E91B5702C72CAE9DEE4";
+        x64suffix = "20";
+        x86suffix = "20";
+        homepage  = https://www.citrix.com/downloads/citrix-receiver/linux/receiver-for-linux-latest.html;
+      };
+    };
+
+    # break an evaluation for old Citrix versions rather than exiting with
+    # an "attribute name not found" error to avoid confusion.
+    deprecatedVersions = let
+      versions = [ "13.8.0" "13.9.0" "13.9.1" ];
+    in
+      lib.listToAttrs
+        (lib.flip map versions
+          (v: lib.nameValuePair v (throw "Unsupported citrix_receiver version: ${v}")));
+  in
+    deprecatedVersions // supportedVersions;
+
+  citrixReceiverForVersion = { major, minor, patch, x86hash, x64hash, x86suffix, x64suffix, homepage }:
+    stdenv.mkDerivation rec {
+      name     = "citrix-receiver-${version}";
+      version  = "${major}.${minor}.${patch}";
+      inherit homepage;
+
+      prefixWithBitness = if stdenv.is64bit then "linuxx64" else "linuxx86";
+
+      src = requireFile rec {
+        name    = if stdenv.is64bit then "${prefixWithBitness}-${version}.${x64suffix}.tar.gz" else "${prefixWithBitness}-${version}.${x86suffix}.tar.gz";
+        sha256  = if stdenv.is64bit then x64hash else x86hash;
+        message = ''
+          In order to use Citrix Receiver, you need to comply with the Citrix EULA and download
+          the ${if stdenv.is64bit then "64-bit" else "32-bit"} binaries, .tar.gz from:
+
+          ${homepage}
+
+          (if you do not find version ${version} there, try at
+          https://www.citrix.com/downloads/citrix-receiver/legacy-receiver-for-linux/
+          or at https://www.citrix.com/downloads/citrix-receiver/ under "Earlier Versions of Receiver for Linux")
+
+          Once you have downloaded the file, please use the following command and re-run the
+          installation:
+
+          nix-prefetch-url file://\$PWD/${name}
+        '';
+      };
+
+      dontBuild = true;
+
+      sourceRoot = ".";
+
+      buildInputs = [
+        makeWrapper
+        busybox
+        file
+        gtk2
+        gdk_pixbuf
+      ];
+
+      libPath = stdenv.lib.makeLibraryPath [
+        glib
+        gtk2
+        atk
+        gdk_pixbuf
+        cairo
+        pango
+        gnome3.dconf
+        xorg.libX11
+        xorg.libXext
+        xorg.libXrender
+        xorg.libXinerama
+        xorg.libXfixes
+        libpng12
+        libidn_134
+        zlib
+        gtk_engines
+        freetype
+        fontconfig
+        alsaLib
+        stdenv.cc.cc # Fixes: Can not load [..]/opt/citrix-icaclient/lib/ctxh264_fb.so:(null)
+      ];
+
+      desktopItem = makeDesktopItem {
+        name        = "wfica";
+        desktopName = "Citrix Receiver";
+        genericName = "Citrix Receiver";
+        exec        = "wfica";
+        icon        = "wfica";
+        comment     = "Connect to remote Citrix server";
+        categories  = "GTK;GNOME;X-GNOME-NetworkSettings;Network;";
+        mimeType    = "application/x-ica";
+      };
+
+      installPhase = ''
+        runHook preInstall
+
+        export ICAInstDir="$out/opt/citrix-icaclient"
+
+        sed -i \
+          -e 's,^main_install_menu$,install_ICA_client,g' \
+          -e 's,^integrate_ICA_client(),alias integrate_ICA_client=true\nintegrate_ICA_client_old(),g' \
+          -e 's,^ANSWER=""$,ANSWER="$INSTALLER_YES",' \
+          -e 's,/bin/true,true,g' \
+          ./${prefixWithBitness}/hinst
+
+        # Run the installer...
+        bash ./${prefixWithBitness}/hinst CDROM "`pwd`"
+
+        echo "Deleting broken links..."
+        for link in `find $ICAInstDir -type l `
+        do
+          [ -f "$link" ] || rm -v "$link"
+        done
+
+        echo "Expanding certificates..."
+        # As explained in https://wiki.archlinux.org/index.php/Citrix#Security_Certificates
+        pushd "$ICAInstDir/keystore/cacerts"
+        awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' < ${cacert}/etc/ssl/certs/ca-bundle.crt
+        popd
+
+        echo "Patching executables..."
+        find $ICAInstDir -type f -exec file {} \; |
+          grep 'ELF.*executable' |
+          cut -f 1 -d : |
+          grep -vi '\(.dll\|.so\)$' | # added as a workaround to https://github.com/NixOS/nixpkgs/issues/41729
+          while read f
+          do
+            echo "Patching ELF intrepreter and rpath for $f"
+            chmod u+w "$f"
+            patchelf \
+              --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
+              --set-rpath "$ICAInstDir:$libPath" "$f"
+          done
+
+        echo "Wrapping wfica..."
+        mkdir "$out/bin"
+
+        makeWrapper "$ICAInstDir/wfica" "$out/bin/wfica" \
+          --add-flags "-icaroot $ICAInstDir" \
+          --set ICAROOT "$ICAInstDir" \
+          --set GTK_PATH "${gtk2.out}/lib/gtk-2.0:${gnome3.gnome-themes-extra}/lib/gtk-2.0" \
+          --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
+          --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
+          --set LD_LIBRARY_PATH "$libPath" \
+          --set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone"
+
+        echo "We arbitrarily set the timezone to UTC. No known consequences at this point."
+        echo UTC > "$ICAInstDir/timezone"
+
+        echo "Installing desktop item..."
+        mkdir -p $out/share/applications
+        cp ${desktopItem}/share/applications/* $out/share/applications
+
+        # We introduce a dependency on the source file so that it need not be redownloaded everytime
+        echo $src >> "$out/share/nix_dependencies.pin"
+
+        runHook postInstall
+      '';
+
+      meta = with stdenv.lib; {
+        license     = stdenv.lib.licenses.unfree;
+        inherit homepage;
+        description = "Citrix Receiver";
+        maintainers = with maintainers; [ obadz a1russell ma27 ];
+        platforms   = platforms.linux;
+      };
+    };
+
+in citrixReceiverForVersion (lib.getAttr version versionInfo)
diff --git a/nixpkgs/pkgs/applications/networking/remote/citrix-receiver/wrapper.nix b/nixpkgs/pkgs/applications/networking/remote/citrix-receiver/wrapper.nix
new file mode 100644
index 000000000000..63587030b38e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/citrix-receiver/wrapper.nix
@@ -0,0 +1,19 @@
+{ citrix_receiver, extraCerts ? [], symlinkJoin }:
+
+let
+
+  mkCertCopy = certPath:
+    "cp ${certPath} $out/opt/citrix-icaclient/keystore/cacerts/";
+
+in
+
+if builtins.length extraCerts == 0 then citrix_receiver else symlinkJoin {
+  name = "citrix-with-extra-certs-${citrix_receiver.version}";
+  paths = [ citrix_receiver ];
+
+  postBuild = ''
+    ${builtins.concatStringsSep "\n" (map mkCertCopy extraCerts)}
+
+    sed -i -E "s,-icaroot (.+citrix-icaclient),-icaroot $out/opt/citrix-icaclient," $out/bin/wfica
+  '';
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix b/nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix
new file mode 100644
index 000000000000..425a064fa96b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/freerdp/default.nix
@@ -0,0 +1,74 @@
+{ stdenv, lib, fetchFromGitHub, cmake, pkgconfig
+, alsaLib, ffmpeg, glib, openssl, pcre, zlib
+, libX11, libXcursor, libXdamage, libXext, libXi, libXinerama, libXrandr, libXrender, libXv
+, libxkbcommon, libxkbfile
+, wayland
+, gstreamer, gst-plugins-base, gst-plugins-good, libunwind, orc
+, libpulseaudio ? null
+, cups ? null
+, pcsclite ? null
+, systemd ? null
+, buildServer ? true
+, optimize ? true
+}:
+
+stdenv.mkDerivation rec {
+  name = "freerdp-${version}";
+  version = "2.0.0-rc4";
+
+  src = fetchFromGitHub {
+    owner  = "FreeRDP";
+    repo   = "FreeRDP";
+    rev    = version;
+    sha256 = "0546i0m2d4nz5jh84ngwzpcm3c43fp987jk6cynqspsmvapab6da";
+  };
+
+  # outputs = [ "bin" "out" "dev" ];
+
+  prePatch = ''
+    export HOME=$TMP
+    substituteInPlace "libfreerdp/freerdp.pc.in" \
+      --replace "Requires:" "Requires: @WINPR_PKG_CONFIG_FILENAME@"
+  '' + lib.optionalString (pcsclite != null) ''
+    substituteInPlace "winpr/libwinpr/smartcard/smartcard_pcsc.c" \
+      --replace "libpcsclite.so" "${stdenv.lib.getLib pcsclite}/lib/libpcsclite.so"
+  '';
+
+  buildInputs = with lib; [
+    alsaLib cups ffmpeg glib openssl pcre pcsclite libpulseaudio zlib
+    gstreamer gst-plugins-base gst-plugins-good libunwind orc
+    libX11 libXcursor libXdamage libXext libXi libXinerama libXrandr libXrender libXv
+    libxkbcommon libxkbfile
+    wayland
+  ] ++ optional stdenv.isLinux systemd;
+
+  nativeBuildInputs = [
+    cmake pkgconfig
+  ];
+
+  enableParallelBuilding = true;
+
+  doCheck = false;
+
+  cmakeFlags = with lib; [
+    "-DCMAKE_INSTALL_LIBDIR=lib"
+    "-DWITH_CUNIT=OFF"
+    "-DWITH_OSS=OFF"
+  ] ++ optional (libpulseaudio != null)       "-DWITH_PULSE=ON"
+    ++ optional (cups != null)                "-DWITH_CUPS=ON"
+    ++ optional (pcsclite != null)            "-DWITH_PCSC=ON"
+    ++ optional buildServer                   "-DWITH_SERVER=ON"
+    ++ optional (optimize && stdenv.isx86_64) "-DWITH_SSE2=ON";
+
+  meta = with lib; {
+    description = "A Remote Desktop Protocol Client";
+    longDescription = ''
+      FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP)
+      following the Microsoft Open Specifications.
+    '';
+    homepage = http://www.freerdp.com/;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ peterhoeg ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/freerdp/legacy.nix b/nixpkgs/pkgs/applications/networking/remote/freerdp/legacy.nix
new file mode 100644
index 000000000000..9830b8465259
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/freerdp/legacy.nix
@@ -0,0 +1,72 @@
+{ stdenv
+, fetchurl
+, cmake
+, openssl
+, glib, pcre
+, printerSupport ? true, cups
+, pkgconfig
+, zlib
+, libX11
+, libXcursor
+, libXdamage
+, libXext
+, alsaLib
+, ffmpeg
+, libxkbfile
+#, xmlto, docbook_xml_dtd_412, docbook_xml_xslt
+, libXinerama
+, libXv
+, pulseaudioSupport ? true
+}:
+
+assert printerSupport -> cups != null;
+
+stdenv.mkDerivation rec {
+  name = "freerdp-${version}";
+  version = "1.2.0-beta1+android9";
+
+  src = fetchurl {
+    url = "https://github.com/FreeRDP/FreeRDP/archive/${version}.tar.gz";
+    sha256 = "181w4lkrk5h5kh2zjlx6h2cl1mfw2aaami3laq3q32pfj06q3rxl";
+  };
+
+  buildInputs = [
+    cmake
+    openssl
+    glib pcre
+    pkgconfig
+    zlib
+    libX11
+    libXcursor
+    libXdamage
+    libXext
+    alsaLib
+    ffmpeg
+    libxkbfile
+#    xmlto docbook_xml_dtd_412 docbook_xml_xslt
+    libXinerama
+    libXv
+  ] ++ stdenv.lib.optional printerSupport cups;
+
+  preConfigure = ''
+    export HOME=$TMP
+  '';
+
+  configureFlags = [
+    "--with-x" "-DWITH_MANPAGES=OFF"
+  ] ++ stdenv.lib.optional printerSupport "--with-printer=cups"
+    ++ stdenv.lib.optional pulseaudioSupport "-DWITH_PULSEAUDIO=ON";
+
+  meta = with stdenv.lib; {
+    description = "A Remote Desktop Protocol Client";
+
+    longDescription = ''
+      FreeRDP is a client-side implementation of the Remote Desktop Protocol (RDP)
+      following the Microsoft Open Specifications.
+    '';
+
+    homepage = http://www.freerdp.com/;
+    license = licenses.free;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/putty/default.nix b/nixpkgs/pkgs/applications/networking/remote/putty/default.nix
new file mode 100644
index 000000000000..fdd367f97c03
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/putty/default.nix
@@ -0,0 +1,55 @@
+{ stdenv, lib, fetchurl, autoconf, automake, pkgconfig, libtool
+, gtk2, halibut, ncurses, perl
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.71";
+  name = "putty-${version}";
+
+  src = fetchurl {
+    urls = [
+      "https://the.earth.li/~sgtatham/putty/${version}/${name}.tar.gz"
+      "ftp://ftp.wayne.edu/putty/putty-website-mirror/${version}/${name}.tar.gz"
+    ];
+    sha256 = "1f66iss0kqk982azmxbk4xfm2i1csby91vdvly6cr04pz3i1r4rg";
+  };
+
+  preConfigure = lib.optionalString stdenv.hostPlatform.isUnix ''
+    perl mkfiles.pl
+    ( cd doc ; make );
+    sed -e '/AM_PATH_GTK(/d' \
+        -e '/AC_OUTPUT/iAM_PROG_CC_C_O' \
+        -e '/AC_OUTPUT/iAM_PROG_AR' -i configure.ac
+    ./mkauto.sh
+    cd unix
+  '' + lib.optionalString stdenv.hostPlatform.isWindows ''
+    cd windows
+  '';
+
+  TOOLPATH = stdenv.cc.targetPrefix;
+  makefile = if stdenv.hostPlatform.isWindows then "Makefile.mgw" else null;
+
+  installPhase = if stdenv.hostPlatform.isWindows then ''
+    for exe in *.exe; do
+       install -D $exe $out/bin/$exe
+    done
+  '' else null;
+
+  nativeBuildInputs = [ autoconf automake halibut libtool perl pkgconfig ];
+  buildInputs = lib.optionals stdenv.hostPlatform.isUnix [
+    gtk2 ncurses
+  ];
+  enableParallelBuilding = true;
+
+  meta = with lib; {
+    description = "A Free Telnet/SSH Client";
+    longDescription = ''
+      PuTTY is a free implementation of Telnet and SSH for Windows and Unix
+      platforms, along with an xterm terminal emulator.
+      It is written and maintained primarily by Simon Tatham.
+    '';
+    homepage = https://www.chiark.greenend.org.uk/~sgtatham/putty/;
+    license = licenses.mit;
+    platforms = platforms.unix ++ platforms.windows;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix b/nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix
new file mode 100644
index 000000000000..4caa9ae63f75
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/rdesktop/default.nix
@@ -0,0 +1,28 @@
+{stdenv, fetchurl, openssl, libX11, libgssglue, pkgconfig} :
+
+stdenv.mkDerivation (rec {
+  pname = "rdesktop";
+  version = "1.8.3";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/${pname}/${name}.tar.gz";
+    sha256 = "1r7c1rjmw2xzq8fw0scyb453gy9z19774z1z8ldmzzsfndb03cl8";
+  };
+
+  nativeBuildInputs = [pkgconfig];
+  buildInputs = [openssl libX11 libgssglue];
+
+  configureFlags = [
+    "--with-ipv6"
+    "--with-openssl=${openssl.dev}"
+    "--disable-smartcard"
+  ];
+
+  meta = {
+    description = "Open source client for Windows Terminal Services";
+    homepage = http://www.rdesktop.org/;
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl2;
+  };
+})
diff --git a/nixpkgs/pkgs/applications/networking/remote/remmina/default.nix b/nixpkgs/pkgs/applications/networking/remote/remmina/default.nix
new file mode 100644
index 000000000000..951b136dd4e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/remmina/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchFromGitLab, cmake, ninja, pkgconfig, wrapGAppsHook
+, glib, gtk3, gettext, libxkbfile, libX11
+, freerdp, libssh, libgcrypt, gnutls, makeDesktopItem
+, pcre, libdbusmenu-gtk3, libappindicator-gtk3
+, libvncserver, libpthreadstubs, libXdmcp, libxkbcommon
+, libsecret, libsoup, spice-protocol, spice-gtk, epoxy, at-spi2-core
+, openssl, gsettings-desktop-schemas, json-glib
+# The themes here are soft dependencies; only icons are missing without them.
+, hicolor-icon-theme, gnome3
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  pname = "remmina";
+  version = "1.3.4";
+
+  src = fetchFromGitLab {
+    owner  = "Remmina";
+    repo   = "Remmina";
+    rev    = "v${version}";
+    sha256 = "18p6v2lalpiba0r318grlc2bvqh2qlpjw811i0934g33faviyfj1";
+  };
+
+  nativeBuildInputs = [ cmake ninja pkgconfig wrapGAppsHook ];
+  buildInputs = [
+    gsettings-desktop-schemas
+    glib gtk3 gettext libxkbfile libX11
+    freerdp libssh libgcrypt gnutls
+    pcre libdbusmenu-gtk3 libappindicator-gtk3
+    libvncserver libpthreadstubs libXdmcp libxkbcommon
+    libsecret libsoup spice-protocol spice-gtk epoxy at-spi2-core
+    openssl hicolor-icon-theme gnome3.adwaita-icon-theme json-glib
+  ];
+
+  cmakeFlags = [
+    "-DWITH_VTE=OFF"
+    "-DWITH_TELEPATHY=OFF"
+    "-DWITH_AVAHI=OFF"
+    "-DFREERDP_LIBRARY=${freerdp}/lib/libfreerdp2.so"
+    "-DFREERDP_CLIENT_LIBRARY=${freerdp}/lib/libfreerdp-client2.so"
+    "-DFREERDP_WINPR_LIBRARY=${freerdp}/lib/libwinpr2.so"
+    "-DWINPR_INCLUDE_DIR=${freerdp}/include/winpr2"
+  ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      --prefix LD_LIBRARY_PATH : "${libX11.out}/lib"
+    )
+  '';
+
+  meta = {
+    license = licenses.gpl2;
+    homepage = https://gitlab.com/Remmina/Remmina;
+    description = "Remote desktop client written in GTK+";
+    maintainers = with maintainers; [ melsigl ryantm ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/ssvnc/default.nix b/nixpkgs/pkgs/applications/networking/remote/ssvnc/default.nix
new file mode 100644
index 000000000000..99835627f879
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/ssvnc/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, imake, zlib, jdk, libX11, libXt, libXmu
+, libXaw, libXext, libXpm, openjpeg, openssl, tk, perl }:
+
+stdenv.mkDerivation rec {
+  name = "ssvnc-${version}";
+  version = "1.0.29";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/ssvnc/${name}.src.tar.gz";
+    sha256 = "74df32eb8eaa68b07c9693a232ebe42154617c7f3cbe1d4e68d3fe7c557d618d";
+  };
+
+  buildInputs = [ imake zlib jdk libX11 libXt libXmu libXaw libXext libXpm openjpeg openssl ];
+
+  dontUseImakeConfigure = true;
+
+  makeFlags = "PREFIX=$(out)";
+
+  hardeningDisable = [ "format" ];
+
+  postInstall = ''
+    sed -i -e 's|exec wish|exec ${tk}/bin/wish|' $out/lib/ssvnc/util/ssvnc.tcl
+    sed -i -e 's|/usr/bin/perl|${perl}/bin/perl|' $out/lib/ssvnc/util/ss_vncviewer
+  '';
+
+  meta = {
+    description = "VNC viewer that adds encryption security to VNC connections";
+    homepage = http://www.karlrunge.com/x11vnc/ssvnc.html;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.edwtjo ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix b/nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix
new file mode 100644
index 000000000000..9bfaad8a5bc4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/teamviewer/default.nix
@@ -0,0 +1,57 @@
+{ stdenv, fetchurl, autoPatchelfHook, makeWrapper, xdg_utils, dbus, qtbase, qtwebkit, qtx11extras, qtquickcontrols, glibc, libXrandr, libX11 }:
+
+
+stdenv.mkDerivation rec {
+  name = "teamviewer-${version}";
+  version = "14.1.3399";
+
+  src = fetchurl {
+    url = "https://dl.tvcdn.de/download/linux/version_14x/teamviewer_${version}_amd64.deb";
+    sha256 = "166ndijis2i3afz3l6nsnrdhs56v33w5cnjd0m7giqj0fbq43ws5";
+  };
+
+  unpackPhase = ''
+    ar x $src
+    tar xf data.tar.*
+  '';
+
+  nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
+  buildInputs = [ dbus qtbase qtwebkit qtx11extras libX11 ];
+  propagatedBuildInputs = [ qtquickcontrols ];
+
+  installPhase = ''
+    mkdir -p $out/share/teamviewer $out/bin $out/share/applications
+    cp -a opt/teamviewer/* $out/share/teamviewer
+    rm -R \
+      $out/share/teamviewer/logfiles \
+      $out/share/teamviewer/config \
+      $out/share/teamviewer/tv_bin/xdg-utils \
+      $out/share/teamviewer/tv_bin/script/{teamviewer_setup,teamviewerd.sysv,teamviewerd.service,teamviewerd.*.conf,libdepend,tv-delayed-start.sh}
+
+    ln -s $out/share/teamviewer/tv_bin/script/teamviewer $out/bin
+    ln -s $out/share/teamviewer/tv_bin/teamviewerd $out/bin
+    ln -s $out/share/teamviewer/tv_bin/desktop/com.teamviewer.*.desktop $out/share/applications
+    ln -s /var/lib/teamviewer $out/share/teamviewer/config
+    ln -s /var/log/teamviewer $out/share/teamviewer/logfiles
+    ln -s ${xdg_utils}/bin $out/share/teamviewer/tv_bin/xdg-utils
+
+    sed -i "s,/opt/teamviewer,$out/share/teamviewer,g" $out/share/teamviewer/tv_bin/desktop/com.teamviewer.*.desktop
+
+    substituteInPlace $out/share/teamviewer/tv_bin/script/tvw_aux \
+      --replace '/lib64/ld-linux-x86-64.so.2' '${glibc.out}/lib/ld-linux-x86-64.so.2'
+    substituteInPlace $out/share/teamviewer/tv_bin/script/tvw_config \
+      --replace '/var/run/' '/run/'
+    wrapProgram $out/share/teamviewer/tv_bin/script/teamviewer --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ libXrandr libX11 ]}"
+    wrapProgram $out/share/teamviewer/tv_bin/teamviewerd --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ libXrandr libX11 ]}"
+  '';
+
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    homepage = http://www.teamviewer.com;
+    license = licenses.unfree;
+    description = "Desktop sharing application, providing remote support and online meetings";
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ jagajaga dasuxullebt ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix b/nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix
new file mode 100644
index 000000000000..87fe60c7740c
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/x2goclient/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchgit, cups, libssh, libXpm, nx-libs, openldap, openssh
+, makeWrapper, qtbase, qtsvg, qtx11extras, qttools, phonon, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  pname = "x2goclient";
+  version = "unstable-2018-11-30";
+
+  src = fetchgit {
+   url = "git://code.x2go.org/x2goclient.git";
+   rev = "659655675f11ffd361ab9fb48fa77a01a1536fe8";
+   sha256 = "05gfs11m259bchy3k0ihqpwg9wf8lp94rbca5dzla9fjzrb7pyy4";
+  };
+
+  buildInputs = [ cups libssh libXpm nx-libs openldap openssh
+                  qtbase qtsvg qtx11extras qttools phonon pkgconfig ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  postPatch = ''
+     substituteInPlace Makefile \
+       --replace "SHELL=/bin/bash" "SHELL=$SHELL" \
+       --replace "lrelease-qt4" "${qttools.dev}/bin/lrelease" \
+       --replace "qmake-qt4" "${qtbase.dev}/bin/qmake" \
+       --replace "-o root -g root" ""
+  '';
+
+  makeFlags = [ "PREFIX=$(out)" "ETCDIR=$(out)/etc" "build_client" "build_man" ];
+
+  enableParallelBuilding = true;
+
+  installTargets = [ "install_client" "install_man" ];
+  postInstall = ''
+    wrapProgram "$out/bin/x2goclient" --suffix PATH : "${nx-libs}/bin:${openssh}/libexec";
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Graphical NoMachine NX3 remote desktop client";
+    homepage = http://x2go.org/;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix b/nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix
new file mode 100644
index 000000000000..442881398f63
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/remote/xrdp/default.nix
@@ -0,0 +1,105 @@
+{ stdenv, fetchFromGitHub, pkgconfig, which, perl, autoconf, automake, libtool, openssl, systemd, pam, fuse, libjpeg, libopus, nasm, xorg }:
+
+let
+  xorgxrdp = stdenv.mkDerivation rec {
+    name = "xorgxrdp-${version}";
+    version = "0.2.9";
+
+    src = fetchFromGitHub {
+      owner = "neutrinolabs";
+      repo = "xorgxrdp";
+      rev = "v${version}";
+      sha256 = "1bhp5x47hajhinvglmc4vxxnpjvfjm6369njb3ghqfr7c5xypvzr";
+    };
+
+    nativeBuildInputs = [ pkgconfig autoconf automake which libtool nasm ];
+
+    buildInputs = [ xorg.xorgserver ];
+
+    postPatch = ''
+      # patch from Debian, allows to run xrdp daemon under unprivileged user
+      substituteInPlace module/rdpClientCon.c \
+        --replace 'g_sck_listen(dev->listen_sck);' 'g_sck_listen(dev->listen_sck); g_chmod_hex(dev->uds_data, 0x0660);'
+
+      substituteInPlace configure.ac \
+        --replace 'moduledir=`pkg-config xorg-server --variable=moduledir`' "moduledir=$out/lib/xorg/modules" \
+        --replace 'sysconfdir="/etc"' "sysconfdir=$out/etc"
+    '';
+
+    preConfigure = "./bootstrap";
+
+    configureFlags = [ "XRDP_CFLAGS=-I${xrdp.src}/common"  ];
+
+    enableParallelBuilding = true;
+  };
+
+  xrdp = stdenv.mkDerivation rec {
+    version = "0.9.9";
+    name = "xrdp-${version}";
+
+    src = fetchFromGitHub {
+      owner = "volth";
+      repo = "xrdp";
+      rev = "refs/tags/runtime-cfg-path-${version}";  # Fixes https://github.com/neutrinolabs/xrdp/issues/609; not a patch on top of the official repo because "xorgxrdp.configureFlags" above includes "xrdp.src" which must be patched already
+      fetchSubmodules = true;
+      sha256 = "0ynj6pml4f38y8571ryhifza57wfqg4frdrjcwzw3fmryiznfm1z";
+    };
+
+    nativeBuildInputs = [ pkgconfig autoconf automake which libtool nasm ];
+
+    buildInputs = [ openssl systemd pam fuse libjpeg libopus xorg.libX11 xorg.libXfixes xorg.libXrandr ];
+
+    postPatch = ''
+      substituteInPlace sesman/xauth.c --replace "xauth -q" "${xorg.xauth}/bin/xauth -q"
+    '';
+
+    preConfigure = ''
+      (cd librfxcodec && ./bootstrap && ./configure --prefix=$out --enable-static --disable-shared)
+      ./bootstrap
+    '';
+    dontDisableStatic = true;
+    configureFlags = [ "--with-systemdsystemunitdir=/var/empty" "--enable-ipv6" "--enable-jpeg" "--enable-fuse" "--enable-rfxcodec" "--enable-opus" ];
+
+    installFlags = [ "DESTDIR=$(out)" "prefix=" ];
+
+    postInstall = ''
+      # remove generated keys (as non-determenistic) and upstart script
+      rm $out/etc/xrdp/{rsakeys.ini,key.pem,cert.pem,xrdp.sh}
+
+      cp $src/keygen/openssl.conf $out/share/xrdp/openssl.conf
+
+      substituteInPlace $out/etc/xrdp/sesman.ini --replace /etc/xrdp/pulse $out/etc/xrdp/pulse
+
+      # remove all session types except Xorg (they are not supported by this setup)
+      ${perl}/bin/perl -i -ne 'print unless /\[(X11rdp|Xvnc|console|vnc-any|sesman-any|rdp-any|neutrinordp-any)\]/ .. /^$/' $out/etc/xrdp/xrdp.ini
+
+      # remove all session types and then add Xorg
+      ${perl}/bin/perl -i -ne 'print unless /\[(X11rdp|Xvnc|Xorg)\]/ .. /^$/' $out/etc/xrdp/sesman.ini
+
+      cat >> $out/etc/xrdp/sesman.ini <<EOF
+
+      [Xorg]
+      param=${xorg.xorgserver}/bin/Xorg
+      param=-modulepath
+      param=${xorgxrdp}/lib/xorg/modules,${xorg.xorgserver}/lib/xorg/modules
+      param=-config
+      param=${xorgxrdp}/etc/X11/xrdp/xorg.conf
+      param=-noreset
+      param=-nolisten
+      param=tcp
+      param=-logfile
+      param=.xorgxrdp.%s.log
+      EOF
+    '';
+
+    enableParallelBuilding = true;
+
+    meta = with stdenv.lib; {
+      description = "An open source RDP server";
+      homepage = https://github.com/neutrinolabs/xrdp;
+      license = licenses.asl20;
+      maintainers = [ maintainers.volth ];
+      platforms = platforms.linux;
+    };
+  };
+in xrdp
diff --git a/nixpkgs/pkgs/applications/networking/resilio-sync/default.nix b/nixpkgs/pkgs/applications/networking/resilio-sync/default.nix
new file mode 100644
index 000000000000..c855277e2259
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/resilio-sync/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, ... }:
+
+let
+  arch = {
+    "x86_64-linux" = "x64";
+    "i686-linux" = "i386";
+  }.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
+  libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.libc ];
+
+in stdenv.mkDerivation rec {
+  name = "resilio-sync-${version}";
+  version = "2.6.2";
+
+  src = fetchurl {
+    url = "https://download-cdn.resilio.com/${version}/linux-${arch}/resilio-sync_${arch}.tar.gz";
+    sha256 = {
+      "x86_64-linux" = "0vq8jz4v740zz3pvgqfya8mhy35fh49wpn8d08xjrs5062hl1yc2";
+      "i686-linux"   = "1gvq29bkdqvbcgnnhl3018h564rswk3r88s33lx5iph1rpxc6v5h";
+    }.${stdenv.hostPlatform.system};
+  };
+
+  dontStrip = true; # Don't strip, otherwise patching the rpaths breaks
+  sourceRoot = ".";
+
+  installPhase = ''
+    install -D rslsync "$out/bin/rslsync"
+    patchelf \
+      --interpreter "$(< $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath ${libPath} "$out/bin/rslsync"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Automatically sync files via secure, distributed technology";
+    homepage    = https://www.resilio.com/;
+    license     = licenses.unfreeRedistributable;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ domenkozar thoughtpolice cwoac ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/seafile-client/default.nix b/nixpkgs/pkgs/applications/networking/seafile-client/default.nix
new file mode 100644
index 000000000000..543afc696ea0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/seafile-client/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchFromGitHub, pkgconfig, cmake, qtbase, qttools
+, seafile-shared, ccnet, makeWrapper
+, withShibboleth ? true, qtwebengine }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  version = "6.2.11";
+  name = "seafile-client-${version}";
+
+  src = fetchFromGitHub {
+    owner = "haiwen";
+    repo = "seafile-client";
+    rev = "v${version}";
+    sha256 = "1b8jqmr2qd3bpb3sr4p5w2a76x5zlknkj922sxrvw1rdwqhkb2pj";
+  };
+
+  nativeBuildInputs = [ pkgconfig cmake makeWrapper ];
+  buildInputs = [ qtbase qttools seafile-shared ]
+    ++ optional withShibboleth qtwebengine;
+
+  cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ]
+    ++ optional withShibboleth "-DBUILD_SHIBBOLETH_SUPPORT=ON";
+
+  postInstall = ''
+    wrapProgram $out/bin/seafile-applet \
+      --suffix PATH : ${stdenv.lib.makeBinPath [ ccnet seafile-shared ]}
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/haiwen/seafile-client;
+    description = "Desktop client for Seafile, the Next-generation Open Source Cloud Storage";
+    license = licenses.asl20;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sieve-connect/default.nix b/nixpkgs/pkgs/applications/networking/sieve-connect/default.nix
new file mode 100644
index 000000000000..55d473bc104b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sieve-connect/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, fetchFromGitHub, makeWrapper, perlPackages }:
+
+stdenv.mkDerivation rec {
+  name = "sieve-connect-${version}";
+  version = "0.89";
+
+  src = fetchFromGitHub {
+    owner = "philpennock";
+    repo = "sieve-connect";
+    rev = "v${version}";
+    sha256 = "0g7cv29wd5673inl4c87xb802k86bj6gcwh131xrbbg0a0g1c8fp";
+  };
+
+  buildInputs = [ perlPackages.perl ];
+  nativeBuildInputs = [ makeWrapper ];
+
+  preBuild = ''
+    # Fixes failing build when not building in git repo
+    mkdir .git
+    touch .git/HEAD
+    echo "${version}" > versionfile
+    echo "$(date +%Y-%m-%d)" > datefile
+  '';
+
+  buildFlags = [ "PERL5LIB=${perlPackages.makePerlPath [ perlPackages.FileSlurp ]}" "bin" "man" ];
+
+  installPhase = ''
+    mkdir -p $out/bin $out/share/man/man1
+    install -m 755 sieve-connect $out/bin
+    gzip -c sieve-connect.1 > $out/share/man/man1/sieve-connect.1.gz
+
+    wrapProgram $out/bin/sieve-connect \
+      --prefix PERL5LIB : "${with perlPackages; makePerlPath [
+        AuthenSASL Socket6 IOSocketInet6 IOSocketSSL NetSSLeay NetDNS
+        TermReadKey TermReadLineGnu ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A client for the MANAGESIEVE Protocol";
+    longDescription = ''
+      This is sieve-connect. A client for the ManageSieve protocol,
+      as specifed in RFC 5804. Historically, this was MANAGESIEVE as
+      implemented by timsieved in Cyrus IMAP.
+    '';
+    homepage = https://github.com/philpennock/sieve-connect;
+    license = licenses.bsd3;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ das_j ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sipcmd/default.nix b/nixpkgs/pkgs/applications/networking/sipcmd/default.nix
new file mode 100644
index 000000000000..a36c2286956b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sipcmd/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchFromGitHub, opal, ptlib }:
+
+stdenv.mkDerivation rec {
+
+  rev = "3090e9f";
+
+  name = "sipcmd-${rev}";
+  
+  src = fetchFromGitHub {
+    repo = "sipcmd";
+    owner = "tmakkonen";
+    inherit rev;
+    sha256 = "072h9qapmz46r8pxbzkfmc4ikd7dv9g8cgrfrw21q942icbrvq2c";
+  };
+
+  buildInputs = [ opal ptlib ];
+
+  buildPhase = ''
+    make IFLAGS="-I${opal}/include/opal -I${ptlib}/include -Isrc/ -L${opal}/lib -L${ptlib}/lib"
+  '';
+
+  installPhase = ''
+    mkdir -pv $out/bin
+    cp sipcmd $out/bin/sipcmd
+  '';
+
+  meta = {
+    homepage = https://github.com/tmakkonen/sipcmd;
+    description = "The command line SIP/H.323/RTP softphone";
+    platforms = with stdenv.lib.platforms; linux;
+    license = stdenv.lib.licenses.gpl2;
+  };
+}
+
diff --git a/nixpkgs/pkgs/applications/networking/siproxd/cheaders.patch b/nixpkgs/pkgs/applications/networking/siproxd/cheaders.patch
new file mode 100644
index 000000000000..69a3e3287371
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/siproxd/cheaders.patch
@@ -0,0 +1,14 @@
+diff --git a/src/dejitter.c b/src/dejitter.c
+index 1904ab3..cb3624d 100644
+--- a/src/dejitter.c
++++ b/src/dejitter.c
+@@ -22,6 +22,8 @@
+
+ #include <errno.h>
+
++#include <string.h>
++#include <sys/time.h>
+ #include <unistd.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
diff --git a/nixpkgs/pkgs/applications/networking/siproxd/default.nix b/nixpkgs/pkgs/applications/networking/siproxd/default.nix
new file mode 100644
index 000000000000..cd697f107b35
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/siproxd/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, libosip }:
+
+stdenv.mkDerivation rec {
+  name = "siproxd-0.8.2";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/siproxd/${name}.tar.gz";
+    sha256 = "1l6cyxxhra825jiiw9npa7jrbfgbyfpk4966cqkrw66cn28y8v2j";
+  };
+
+  patches = [ ./cheaders.patch ];
+
+  buildInputs = [ libosip ];
+
+  meta = {
+    homepage = http://siproxd.sourceforge.net/;
+    description = "A masquerading SIP Proxy Server";
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; linux;
+    license = stdenv.lib.licenses.gpl2Plus;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/etherape/default.nix b/nixpkgs/pkgs/applications/networking/sniffers/etherape/default.nix
new file mode 100644
index 000000000000..81c48cff4a01
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/etherape/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, pkgconfig, libtool, gtk3, libpcap, goocanvas2,
+popt, itstool, libxml2 }:
+
+stdenv.mkDerivation rec {
+  name = "etherape-0.9.18";
+  src = fetchurl {
+    url = "mirror://sourceforge/etherape/${name}.tar.gz";
+    sha256 = "0y9cfc5iv5zy82j165i9agf45n1ixka064ykdvpdhb07sr3lzhmv";
+  };
+
+  nativeBuildInputs = [ itstool pkgconfig (stdenv.lib.getBin libxml2) ];
+  buildInputs = [
+    libtool gtk3 libpcap goocanvas2 popt
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = http://etherape.sourceforge.net/;
+    license = stdenv.lib.licenses.gpl2Plus;
+    platforms = with platforms; linux;
+    maintainers = with maintainers; [ symphorien ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/ettercap/default.nix b/nixpkgs/pkgs/applications/networking/sniffers/ettercap/default.nix
new file mode 100644
index 000000000000..13d536ccf1bb
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/ettercap/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitHub, cmake, libpcap, libnet, zlib, curl, pcre
+, openssl, ncurses, glib, gtk2, atk, pango, flex, bison
+, fetchpatch }:
+
+stdenv.mkDerivation rec {
+  name = "ettercap-${version}";
+  version = "0.8.2";
+
+  src = fetchFromGitHub {
+    owner = "Ettercap";
+    repo = "ettercap";
+    rev = "v${version}";
+    sha256 = "1kvrzv2f8kxy7pndfadkzv10cs5wsyfkaa1ski20r2mq4wrvd0cd";
+  };
+
+  patches = [
+    (fetchpatch {
+      name = "CVE-2017-8366.patch";
+      url = "https://github.com/Ettercap/ettercap/commit/1083d604930ebb9f350126b83802ecd2cbc17f90.patch";
+      sha256 = "1ff6fp8fxisvd3fkkd01y4fjykgcj414kczzpfscdmi52ridwg8m";
+    })
+    (fetchpatch {
+      name = "CVE-2017-6430.patch";
+      url = "https://github.com/Ettercap/ettercap/commit/7f50c57b2101fe75592c8dc9960883bbd1878bce.patch";
+      sha256 = "0s13nc9yzxzp611rixsd1c8aw1b57q2lnvfq8wawxyrw07h7b2j4";
+    })
+  ];
+
+  buildInputs = [
+    cmake libpcap libnet zlib curl pcre openssl ncurses
+    glib gtk2 atk pango flex bison
+  ];
+
+  preConfigure = ''
+    substituteInPlace CMakeLists.txt --replace /etc \$\{INSTALL_PREFIX\}/etc \
+                                     --replace /usr \$\{INSTALL_PREFIX\}
+  '';
+
+  cmakeFlags = [
+    "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include"
+    "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Comprehensive suite for man in the middle attacks";
+    homepage = http://ettercap.github.io/ettercap/;
+    license = licenses.gpl2;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ pSub ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/kismet/default.nix b/nixpkgs/pkgs/applications/networking/sniffers/kismet/default.nix
new file mode 100644
index 000000000000..0c793c41c55a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/kismet/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchurl, pkgconfig, libpcap, ncurses, expat, pcre, libnl }:
+
+stdenv.mkDerivation rec {
+  name = "kismet-${version}";
+  version = "2016-07-R1";
+
+  src = fetchurl {
+    url = "https://www.kismetwireless.net/code/${name}.tar.xz";
+    sha256 = "0dz28y4ay4lskhl0lawqy2dkcrhgfkbg06v22qxzzw8i6caizcmx";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libpcap ncurses expat pcre libnl ];
+  postConfigure = ''
+    sed -e 's/-o $(INSTUSR)//' \
+        -e 's/-g $(INSTGRP)//' \
+        -e 's/-g $(MANGRP)//' \
+        -e 's/-g $(SUIDGROUP)//' \
+        -i Makefile
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Wireless network sniffer";
+    homepage = https://www.kismetwireless.net/;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix b/nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix
new file mode 100644
index 000000000000..db093310ca1a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/wireshark/default.nix
@@ -0,0 +1,124 @@
+{ stdenv, fetchurl, pkgconfig, pcre, perl, flex, bison, gettext, libpcap, libnl, c-ares
+, gnutls, libgcrypt, libgpgerror, geoip, openssl, lua5, python, libcap, glib
+, libssh, zlib, cmake, extra-cmake-modules, fetchpatch, makeWrapper
+, withGtk ? false, gtk3 ? null, librsvg ? null, gsettings-desktop-schemas ? null, wrapGAppsHook ? null
+, withQt ? true, qt5 ? null
+, ApplicationServices, SystemConfiguration, gmp
+}:
+
+assert withGtk -> !withQt  && gtk3 != null;
+assert withQt  -> !withGtk && qt5  != null;
+
+with stdenv.lib;
+
+let
+  version = "2.6.6";
+  variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
+
+in stdenv.mkDerivation {
+  name = "wireshark-${variant}-${version}";
+  outputs = [ "out" "dev" ];
+
+  src = fetchurl {
+    url = "https://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.xz";
+    sha256 = "0qz8a1ays63712pq1v7nnw7c57zlqkcifq7himfv5nsv0zm36ya8";
+  };
+
+  cmakeFlags = [
+    "-DBUILD_wireshark_gtk=${if withGtk then "ON" else "OFF"}"
+    "-DBUILD_wireshark=${if withQt then "ON" else "OFF"}"
+    "-DENABLE_QT5=${if withQt then "ON" else "OFF"}"
+    "-DENABLE_APPLICATION_BUNDLE=${if withQt && stdenv.isDarwin then "ON" else "OFF"}"
+  ];
+
+  nativeBuildInputs = [
+    bison cmake extra-cmake-modules flex pkgconfig
+  ] ++ optional withGtk wrapGAppsHook;
+
+  buildInputs = [
+    gettext pcre perl libpcap lua5 libssh openssl libgcrypt
+    libgpgerror gnutls geoip c-ares python glib zlib makeWrapper
+  ] ++ optionals withQt  (with qt5; [ qtbase qtmultimedia qtsvg qttools ])
+    ++ optionals withGtk [ gtk3 librsvg gsettings-desktop-schemas ]
+    ++ optionals stdenv.isLinux  [ libcap libnl ]
+    ++ optionals stdenv.isDarwin [ SystemConfiguration ApplicationServices gmp ]
+    ++ optionals (withQt && stdenv.isDarwin) (with qt5; [ qtmacextras ]);
+
+  patches = [ ./wireshark-lookup-dumpcap-in-path.patch ]
+    # https://code.wireshark.org/review/#/c/23728/
+    ++ stdenv.lib.optional stdenv.hostPlatform.isMusl (fetchpatch {
+      name = "fix-timeout.patch";
+      url = "https://code.wireshark.org/review/gitweb?p=wireshark.git;a=commitdiff_plain;h=8b5b843fcbc3e03e0fc45f3caf8cf5fc477e8613;hp=94af9724d140fd132896b650d10c4d060788e4f0";
+      sha256 = "1g2dm7lwsnanwp68b9xr9swspx7hfj4v3z44sz3yrfmynygk8zlv";
+    });
+
+  postPatch = ''
+    sed -i -e '1i cmake_policy(SET CMP0025 NEW)' CMakeLists.txt
+  '';
+
+  preBuild = ''
+    export LD_LIBRARY_PATH="$PWD/run"
+  '';
+
+  postInstall = if stdenv.isDarwin then ''
+    ${optionalString withQt ''
+      mkdir -p $out/Applications
+      mv $out/bin/Wireshark.app $out/Applications/Wireshark.app
+
+      for so in $out/Applications/Wireshark.app/Contents/PlugIns/wireshark/*.so; do
+        install_name_tool $so -change libwireshark.10.dylib $out/lib/libwireshark.10.dylib
+        install_name_tool $so -change libwiretap.7.dylib $out/lib/libwiretap.7.dylib
+        install_name_tool $so -change libwsutil.8.dylib $out/lib/libwsutil.8.dylib
+      done
+
+      wrapProgram $out/Applications/Wireshark.app/Contents/MacOS/Wireshark \
+        --set QT_PLUGIN_PATH ${qt5.qtbase.bin}/${qt5.qtbase.qtPluginPrefix}
+    ''}
+  '' else optionalString (withQt || withGtk) ''
+    ${optionalString withGtk ''
+      install -Dm644 -t $out/share/applications ../wireshark-gtk.desktop
+    ''}
+    ${optionalString withQt ''
+      install -Dm644 -t $out/share/applications ../wireshark.desktop
+      wrapProgram $out/bin/wireshark \
+        --set QT_PLUGIN_PATH ${qt5.qtbase.bin}/${qt5.qtbase.qtPluginPrefix}
+    ''}
+
+    substituteInPlace $out/share/applications/*.desktop \
+      --replace "Exec=wireshark" "Exec=$out/bin/wireshark"
+
+    install -Dm644 ../image/wsicon.svg $out/share/icons/wireshark.svg
+    mkdir $dev/include/{epan/{wmem,ftypes,dfilter},wsutil,wiretap} -pv
+
+    cp config.h $dev/include/
+    cp ../ws_*.h $dev/include
+    cp ../epan/*.h $dev/include/epan/
+    cp ../epan/wmem/*.h $dev/include/epan/wmem/
+    cp ../epan/ftypes/*.h $dev/include/epan/ftypes/
+    cp ../epan/dfilter/*.h $dev/include/epan/dfilter/
+    cp ../wsutil/*.h $dev/include/wsutil/
+    cp ../wiretap/*.h $dev/include/wiretap
+  '';
+
+  enableParallelBuilding = true;
+
+  shellHook = ''
+    # to be able to run the resulting binary
+    export WIRESHARK_RUN_FROM_BUILD_DIRECTORY=1
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://www.wireshark.org/;
+    description = "Powerful network protocol analyzer";
+    license = licenses.gpl2;
+
+    longDescription = ''
+      Wireshark (formerly known as "Ethereal") is a powerful network
+      protocol analyzer developed by an international team of networking
+      experts. It runs on UNIX, macOS and Windows.
+    '';
+
+    platforms = platforms.linux ++ platforms.darwin;
+    maintainers = with maintainers; [ bjornfor fpletz ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sniffers/wireshark/wireshark-lookup-dumpcap-in-path.patch b/nixpkgs/pkgs/applications/networking/sniffers/wireshark/wireshark-lookup-dumpcap-in-path.patch
new file mode 100644
index 000000000000..549da5436e60
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniffers/wireshark/wireshark-lookup-dumpcap-in-path.patch
@@ -0,0 +1,63 @@
+From 5bef9deeff8a2e4401de0f45c9701cd6f98f29d8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B8rn=20Forsman?= <bjorn.forsman@gmail.com>
+Date: Thu, 26 Nov 2015 21:03:35 +0100
+Subject: [PATCH] Lookup dumpcap in PATH
+
+NixOS patch: Look for dumpcap in PATH first, because there may be a
+dumpcap wrapper that we want to use instead of the default
+non-setuid dumpcap binary.
+
+Also change execv() to execvp() because we've set argv[0] to "dumpcap"
+and have to enable PATH lookup. Wireshark is not a setuid program, so
+looking in PATH is not a security issue.
+
+Signed-off-by: Franz Pletz <fpletz@fnordicwalking.de>
+---
+ capchild/capture_sync.c | 17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+diff --git a/capchild/capture_sync.c b/capchild/capture_sync.c
+index 970688e..49914d5 100644
+--- a/capchild/capture_sync.c
++++ b/capchild/capture_sync.c
+@@ -332,7 +332,18 @@ init_pipe_args(int *argc) {
+ #ifdef _WIN32
+     exename = g_strdup_printf("%s\\dumpcap.exe", progfile_dir);
+ #else
+-    exename = g_strdup_printf("%s/dumpcap", progfile_dir);
++    /*
++     * NixOS patch: Look for dumpcap in PATH first, because there may be a
++     * dumpcap wrapper that we want to use instead of the default
++     * non-setuid dumpcap binary.
++     */
++    if (system("command -v dumpcap >/dev/null") == 0) {
++        /* Found working dumpcap */
++        exename = g_strdup_printf("dumpcap");
++    } else {
++        /* take Wireshark's absolute program path and replace "Wireshark" with "dumpcap" */
++        exename = g_strdup_printf("%s/dumpcap", progfile_dir);
++    }
+ #endif
+ 
+     /* Make that the first argument in the argument list (argv[0]). */
+@@ -729,7 +740,7 @@ sync_pipe_start(capture_options *capture_opts, capture_session *cap_session, voi
+          */
+         dup2(sync_pipe[PIPE_WRITE], 2);
+         ws_close(sync_pipe[PIPE_READ]);
+-        execv(argv[0], argv);
++        execvp(argv[0], argv);
+         g_snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s",
+                    argv[0], g_strerror(errno));
+         sync_pipe_errmsg_to_parent(2, errmsg, "");
+@@ -997,7 +1008,7 @@ sync_pipe_open_command(char** argv, int *data_read_fd,
+         dup2(sync_pipe[PIPE_WRITE], 2);
+         ws_close(sync_pipe[PIPE_READ]);
+         ws_close(sync_pipe[PIPE_WRITE]);
+-        execv(argv[0], argv);
++        execvp(argv[0], argv);
+         g_snprintf(errmsg, sizeof errmsg, "Couldn't run %s in child process: %s",
+                    argv[0], g_strerror(errno));
+         sync_pipe_errmsg_to_parent(2, errmsg, "");
+-- 
+2.6.3
+
diff --git a/nixpkgs/pkgs/applications/networking/sniproxy/default.nix b/nixpkgs/pkgs/applications/networking/sniproxy/default.nix
new file mode 100644
index 000000000000..10bb465b8a1b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sniproxy/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, gettext, libev, pcre, pkgconfig, udns }:
+
+stdenv.mkDerivation rec {
+  name = "sniproxy-${version}";
+  version = "0.6.0";
+
+  src = fetchFromGitHub {
+    owner = "dlundquist";
+    repo = "sniproxy";
+    rev = version;
+    sha256 = "0isgl2lyq8vz5kkxpgyh1sgjlb6sqqybakr64w2mfh29k5ls8xzm";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig ];
+  buildInputs = [ gettext libev pcre udns ];
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Transparent TLS and HTTP layer 4 proxy with SNI support";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.womfoo ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/nixpkgs/pkgs/applications/networking/soapui/default.nix b/nixpkgs/pkgs/applications/networking/soapui/default.nix
new file mode 100644
index 000000000000..1034acf0b90f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/soapui/default.nix
@@ -0,0 +1,51 @@
+{ fetchurl, stdenv, writeText, jdk, maven, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "soapui-${version}";
+  version = "5.5.0";
+
+  src = fetchurl {
+    url = "https://s3.amazonaws.com/downloads.eviware/soapuios/${version}/SoapUI-${version}-linux-bin.tar.gz";
+    sha256 = "0v1wiy61jgvlxjk8qdvcnyn1gh2ysxf266zln7r4wpzwd5gc3dpw";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [ jdk maven ];
+
+  installPhase = ''
+    mkdir -p $out/share/java
+    cp -R bin lib $out/share/java
+
+    makeWrapper $out/share/java/bin/soapui.sh $out/bin/soapui --set SOAPUI_HOME $out/share/java
+  '';
+
+  patches = [
+    (writeText "soapui-${version}.patch" ''
+      --- a/bin/soapui.sh
+      +++ b/bin/soapui.sh
+      @@ -34,7 +34,7 @@ SOAPUI_CLASSPATH=$SOAPUI_HOME/bin/soapui-${version}.jar:$SOAPUI_HOME/lib/*
+       export SOAPUI_CLASSPATH
+
+       JAVA_OPTS="-Xms128m -Xmx1024m -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -Dsoapui.properties=soapui.properties -Dsoapui.home=$SOAPUI_HOME/bin -splash:SoapUI-Spashscreen.png"
+      -JFXRTPATH=`java -cp $SOAPUI_CLASSPATH com.eviware.soapui.tools.JfxrtLocator`
+      +JFXRTPATH=`${jdk}/bin/java -cp $SOAPUI_CLASSPATH com.eviware.soapui.tools.JfxrtLocator`
+       SOAPUI_CLASSPATH=$JFXRTPATH:$SOAPUI_CLASSPATH
+
+       if $darwin
+      @@ -69,4 +69,4 @@ echo = SOAPUI_HOME = $SOAPUI_HOME
+       echo =
+       echo ================================
+
+      -java $JAVA_OPTS -cp $SOAPUI_CLASSPATH com.eviware.soapui.SoapUI "$@"
+      +${jdk}/bin/java $JAVA_OPTS -cp $SOAPUI_CLASSPATH com.eviware.soapui.SoapUI "$@"
+    '')
+  ];
+
+  meta = with stdenv.lib; {
+    description = "The Most Advanced REST & SOAP Testing Tool in the World";
+    homepage = https://www.soapui.org/;
+    license = "SoapUI End User License Agreement";
+    maintainers = with maintainers; [ gerschtli ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/soulseek/nicotine-plus/default.nix b/nixpkgs/pkgs/applications/networking/soulseek/nicotine-plus/default.nix
new file mode 100644
index 000000000000..a38a9140b490
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/soulseek/nicotine-plus/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchFromGitHub, python27Packages, geoip }:
+
+with stdenv.lib;
+
+python27Packages.buildPythonApplication rec {
+  pname = "nicotine-plus";
+  version = "1.4.1";
+
+  src = fetchFromGitHub {
+    owner = "Nicotine-Plus";
+    repo = "nicotine-plus";
+    rev = "4e057d64184885c63488d4213ade3233bd33e67b";
+    sha256 = "11j2qm67sszfqq730czsr2zmpgkghsb50556ax1vlpm7rw3gm33c";
+  };
+
+  propagatedBuildInputs = with python27Packages; [
+    pygtk
+    miniupnpc
+    mutagen
+    notify
+    (GeoIP.override { inherit geoip; })
+  ];
+
+  # Insert real docs directory.
+  # os.getcwd() is not needed
+  postPatch = ''
+    substituteInPlace ./pynicotine/gtkgui/frame.py \
+      --replace "paths.append(os.getcwd())" "paths.append('"$out"/doc')"
+  '';
+
+  postFixup = ''
+    mkdir -p $out/doc/
+    mv ./doc/NicotinePlusGuide $out/doc/
+    mv $out/bin/nicotine $out/bin/nicotine-plus
+  '';
+
+  meta = {
+    description = "A graphical client for the SoulSeek peer-to-peer system";
+    homepage = https://www.nicotine-plus.org;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ klntsky ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/spideroak/default.nix b/nixpkgs/pkgs/applications/networking/spideroak/default.nix
new file mode 100644
index 000000000000..d96a810ee05a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/spideroak/default.nix
@@ -0,0 +1,59 @@
+{ stdenv, fetchurl, makeWrapper, patchelf
+, fontconfig, freetype, glib, libICE, libSM
+, libX11, libXext, libXrender, zlib
+}:
+
+let
+  sha256 = "6d6ca2b383bcc81af1217c696eb77864a2b6db7428f4b5bde5b5913ce705eec5";
+
+  ldpath = stdenv.lib.makeLibraryPath [
+    fontconfig freetype glib libICE libSM
+    libX11 libXext libXrender zlib
+  ];
+
+  version = "7.5.0";
+
+in stdenv.mkDerivation {
+  name = "spideroak-${version}";
+
+  src = fetchurl {
+    name = "SpiderOakONE-${version}-slack_tar_x64.tgz";
+    url = "https://spideroak.com/release/spideroak/slack_tar_x64";
+    inherit sha256;
+  };
+
+  sourceRoot = ".";
+
+  unpackCmd = "tar -xzf $curSrc";
+
+  installPhase = ''
+    mkdir "$out"
+    cp -r "./"* "$out"
+    mkdir "$out/bin"
+    rm "$out/usr/bin/SpiderOakONE"
+    rmdir $out/usr/bin || true
+    mv $out/usr/share $out/
+
+    rm -f $out/opt/SpiderOakONE/lib/libz*
+
+    patchelf --set-interpreter ${stdenv.glibc.out}/lib/ld-linux-x86-64.so.2 \
+      "$out/opt/SpiderOakONE/lib/SpiderOakONE"
+
+    RPATH=$out/opt/SpiderOakONE/lib:${ldpath}
+    makeWrapper $out/opt/SpiderOakONE/lib/SpiderOakONE $out/bin/spideroak --set LD_LIBRARY_PATH $RPATH \
+      --set QT_PLUGIN_PATH $out/opt/SpiderOakONE/lib/plugins/ \
+      --set SpiderOak_EXEC_SCRIPT $out/bin/spideroak
+
+    sed -i 's/^Exec=.*/Exec=spideroak/' $out/share/applications/SpiderOakONE.desktop
+  '';
+
+  nativeBuildInputs = [ patchelf makeWrapper ];
+
+  meta = {
+    homepage = https://spideroak.com;
+    description = "Secure online backup and sychronization";
+    license = stdenv.lib.licenses.unfree;
+    maintainers = with stdenv.lib.maintainers; [ amorsillo ];
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/ssb/patchwork-classic/default.nix b/nixpkgs/pkgs/applications/networking/ssb/patchwork-classic/default.nix
new file mode 100644
index 000000000000..1f8d0cba6d05
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/ssb/patchwork-classic/default.nix
@@ -0,0 +1,106 @@
+{ stdenv, fetchurl, lib, makeWrapper,
+  # build dependencies
+  alsaLib, atk, cairo, cups, dbus, expat, fontconfig,
+  freetype, gdk_pixbuf, glib, gnome2, nspr, nss, xorg,
+  glibc, systemd
+}:
+
+stdenv.mkDerivation rec {
+
+  version = "2.12.0";
+
+  name = "patchwork-classic-${version}";
+
+  src = fetchurl {
+    url    = "https://github.com/ssbc/patchwork-classic-electron/releases/download/v2.12.0/ssb-patchwork-electron_2.12.0_linux-amd64.deb";
+    sha256 = "1rvp07cgqwv7ac319p0qwpfxd7l8f53m1rlvvig7qf7q23fnmbsj";
+  };
+
+  sourceRoot = ".";
+
+  unpackCmd = ''
+    ar p "$src" data.tar.xz | tar xJ
+  '';
+
+  dontBuild = true;
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp -R usr/share opt $out/
+
+    # fix the path in the desktop file
+    substituteInPlace \
+      $out/share/applications/ssb-patchwork-electron.desktop \
+      --replace /opt/ $out/opt/
+
+    # symlink the binary to bin/
+    ln -s $out/opt/ssb-patchwork-electron/ssb-patchwork-electron $out/bin/patchwork-classic
+  '';
+
+
+  preFixup = let
+    packages = [
+      alsaLib
+      atk
+      cairo
+      cups
+      dbus
+      expat
+      fontconfig
+      freetype
+      gdk_pixbuf
+      glib
+      gnome2.GConf
+      gnome2.gtk
+      gnome2.pango
+      nspr
+      nss
+      xorg.libX11
+      xorg.libXScrnSaver
+      xorg.libXcomposite
+      xorg.libXcursor
+      xorg.libXdamage
+      xorg.libXext
+      xorg.libXfixes
+      xorg.libXi
+      xorg.libXrandr
+      xorg.libXrender
+      xorg.libXtst
+      stdenv.cc.cc.lib
+      stdenv.cc.cc
+      glibc
+    ];
+    libPathNative = lib.makeLibraryPath packages;
+    libPath64 = lib.makeSearchPathOutput "lib" "lib64" packages;
+    libPath = "${libPathNative}:${libPath64}";
+  in ''
+    # patch executable
+    patchelf \
+      --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
+      --set-rpath "${libPath}:$out/opt/ssb-patchwork-electron" \
+      $out/opt/ssb-patchwork-electron/ssb-patchwork-electron
+
+    # patch libnode
+    patchelf \
+      --set-rpath "${libPath}" \
+      $out/opt/ssb-patchwork-electron/libnode.so
+
+    # libffmpeg is for some reason  not executable
+    chmod a+x $out/opt/ssb-patchwork-electron/libffmpeg.so
+
+    # fix missing libudev
+    ln -s ${systemd.lib}/lib/libudev.so.1 $out/opt/ssb-patchwork-electron/libudev.so.1
+    wrapProgram $out/opt/ssb-patchwork-electron/ssb-patchwork-electron \
+      --prefix LD_LIBRARY_PATH : $out/opt/ssb-patchwork-electron
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Electron wrapper for Patchwork Classic: run as a desktop app outside the browser";
+    homepage    = "https://github.com/ssbc/patchwork-classic-electron";
+    license     = licenses.gpl3; 
+    maintainers = with maintainers; [ mrVanDalo ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/super-productivity/default.nix b/nixpkgs/pkgs/applications/networking/super-productivity/default.nix
new file mode 100644
index 000000000000..9bb4254c64a2
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/super-productivity/default.nix
@@ -0,0 +1,105 @@
+{ stdenv, fetchurl, dpkg, makeWrapper
+, alsaLib, atk, cairo, cups, curl, dbus, expat, fontconfig, freetype, glib
+, gnome2, gtk3, gdk_pixbuf, libnotify, libxcb, nspr, nss, pango
+, systemd, xorg, xprintidle-ng }:
+
+let
+
+  version = "1.10.45";
+
+  rpath = stdenv.lib.makeLibraryPath [
+    alsaLib
+    atk
+    cairo
+    cups
+    curl
+    dbus
+    expat
+    fontconfig
+    freetype
+    glib
+    gnome2.GConf
+    gdk_pixbuf
+    gtk3
+    pango
+    libnotify
+    libxcb
+    nspr
+    nss
+    stdenv.cc.cc
+    systemd
+
+    xorg.libxkbfile
+    xorg.libX11
+    xorg.libXcomposite
+    xorg.libXcursor
+    xorg.libXdamage
+    xorg.libXext
+    xorg.libXfixes
+    xorg.libXi
+    xorg.libXrandr
+    xorg.libXrender
+    xorg.libXtst
+    xorg.libXScrnSaver
+  ] + ":${stdenv.cc.cc.lib}/lib64";
+
+  src =
+    if stdenv.hostPlatform.system == "x86_64-linux" then
+      fetchurl {
+        url = "https://github.com/johannesjo/super-productivity/releases/download/v${version}/superProductivity_${version}_amd64.deb";
+        sha256 = "0jfi0lfijnhij9jvkhxgyvq8m1jzaym8n1c7707fv3hjh1h0vxn1";
+      }
+    else
+      throw "super-productivity is not supported on ${stdenv.hostPlatform.system}";
+
+in stdenv.mkDerivation {
+  name = "super-productivity-${version}";
+
+  inherit src;
+
+  buildInputs = [
+    dpkg
+    gtk3  # needed for GSETTINGS_SCHEMAS_PATH
+  ];
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  unpackPhase = "dpkg -x $src .";
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out
+
+    cp -R usr/share $out/share
+    cp -R opt $out/libexec
+
+    # Otherwise it looks "suspicious"
+    chmod -R g-w $out
+
+    # set linker and rpath
+    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$out/libexec/superProductivity/superproductivity"
+    patchelf --set-rpath ${rpath}:$out/libexec/superProductivity "$out/libexec/superProductivity/superproductivity"
+
+    # wrapper for xdg_data_dirs and xprintidle path
+    makeWrapper $out/libexec/superProductivity/superproductivity $out/bin/superproductivity \
+      --prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH \
+      --prefix PATH : "${xprintidle-ng}/bin"
+
+    # Fix the desktop link
+    substituteInPlace $out/share/applications/superproductivity.desktop \
+      --replace /opt/superProductivity/ $out/bin/
+
+    runHook postInstall
+  '';
+
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    description = "To Do List / Time Tracker with Jira Integration.";
+    homepage = https://super-productivity.com;
+    license = licenses.mit;
+    platforms = [ "x86_64-linux" ];
+    maintainers = with maintainers; [ offline ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/acd_cli/default.nix b/nixpkgs/pkgs/applications/networking/sync/acd_cli/default.nix
new file mode 100644
index 000000000000..e4ba29d3a9f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/acd_cli/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, fetchFromGitHub, buildPythonApplication, fuse
+, appdirs, colorama, dateutil, requests, requests_toolbelt
+, fusepy, sqlalchemy }:
+
+buildPythonApplication rec {
+  name = pname + "-" + version;
+  pname = "acd_cli";
+  version = "0.3.2";
+
+  doCheck = false;
+
+  src = fetchFromGitHub {
+    owner = "yadayada";
+    repo = pname;
+    rev = version;
+    sha256 = "0a0fr632l24a3jmgla3b1vcm50ayfa9hdbp677ch1chwj5dq4zfp";
+  };
+
+  propagatedBuildInputs = [ appdirs colorama dateutil fusepy requests
+                            requests_toolbelt sqlalchemy ];
+
+  makeWrapperArgs = [ "--prefix LIBFUSE_PATH : ${fuse}/lib/libfuse.so" ];
+
+  postFixup = ''
+    function lnOverBin() {
+      rm -f $out/bin/{$2,.$2-wrapped}
+      ln -s $out/bin/$1 $out/bin/$2
+    }
+    lnOverBin acd_cli.py acd-cli
+    lnOverBin acd_cli.py acd_cli
+    lnOverBin acd_cli.py acdcli
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A command line interface and FUSE filesystem for Amazon Cloud Drive";
+    homepage = https://github.com/yadayada/acd_cli;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ edwtjo ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/backintime/common.nix b/nixpkgs/pkgs/applications/networking/sync/backintime/common.nix
new file mode 100644
index 000000000000..fae838a7d5f8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/backintime/common.nix
@@ -0,0 +1,46 @@
+{stdenv, fetchFromGitHub, makeWrapper, gettext, python3Packages, rsync, cron, openssh, sshfs-fuse, encfs }:
+
+let
+  inherit (python3Packages) python dbus-python keyring;
+in stdenv.mkDerivation rec {
+  version = "1.1.24";
+
+  name = "backintime-common-${version}";
+
+  src = fetchFromGitHub {
+    owner = "bit-team";
+    repo = "backintime";
+    rev = "v${version}";
+    sha256 = "0g6gabnr60ns8854hijdddbanks7319q4n3fj5l6rc4xsq0qck18";
+  };
+
+  buildInputs = [ makeWrapper gettext python dbus-python keyring openssh cron rsync sshfs-fuse encfs ];
+
+  installFlags = [ "DEST=$(out)" ];
+
+  preConfigure = "cd common";
+
+  dontAddPrefix = true;
+
+  preFixup =
+    ''
+    substituteInPlace "$out/bin/backintime" \
+      --replace "=\"/usr/share" "=\"$prefix/share"
+    wrapProgram "$out/bin/backintime" \
+      --prefix PYTHONPATH : "$PYTHONPATH" \
+      --prefix PATH : "$prefix/bin:$PATH"
+    '';
+
+  meta = {
+    homepage = https://github.com/bit-team/backintime;
+    description = "Simple backup tool for Linux";
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ ];
+    platforms = stdenv.lib.platforms.all;
+    longDescription = ''
+      Back In Time is a simple backup tool (on top of rsync) for Linux
+      inspired from “flyback project” and “TimeVault”. The backup is
+      done by taking snapshots of a specified set of directories.
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/backintime/qt4.nix b/nixpkgs/pkgs/applications/networking/sync/backintime/qt4.nix
new file mode 100644
index 000000000000..26288f9f6e65
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/backintime/qt4.nix
@@ -0,0 +1,28 @@
+{stdenv, makeWrapper, gettext, backintime-common, python3, python3Packages }:
+
+stdenv.mkDerivation rec {
+  inherit (backintime-common) version src installFlags;
+
+  name = "backintime-qt4-${version}";
+
+  buildInputs = [ makeWrapper gettext python3 python3Packages.pyqt4 backintime-common python3 ];
+
+  preConfigure = "cd qt4";
+  configureFlags = [  ];
+
+  dontAddPrefix = true;
+
+  preFixup =
+      ''
+      substituteInPlace "$out/bin/backintime-qt4" \
+        --replace "=\"/usr/share" "=\"$prefix/share"
+
+      wrapProgram "$out/bin/backintime-qt4" \
+        --prefix PYTHONPATH : "${backintime-common}/share/backintime/common:$PYTHONPATH" \
+        --prefix PATH : "${backintime-common}/bin:$PATH"
+    '';
+
+  meta = with stdenv.lib; {
+    broken = true;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/casync/default.nix b/nixpkgs/pkgs/applications/networking/sync/casync/default.nix
new file mode 100644
index 000000000000..8d9b941e26e4
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/casync/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchFromGitHub
+, meson, ninja, pkgconfig, python3, sphinx
+, acl, curl, fuse, libselinux, udev, xz, zstd
+, fuseSupport ? true
+, selinuxSupport ? true
+, udevSupport ? true
+, glibcLocales, rsync
+}:
+
+stdenv.mkDerivation rec {
+  name = "casync-${version}";
+  version = "2-152-ge4a3c5e";
+
+  src = fetchFromGitHub {
+    owner  = "systemd";
+    repo   = "casync";
+    rev    = "e4a3c5efc8f11e0e99f8cc97bd417665d92b40a9";
+    sha256 = "0zx6zvj5a6rr3w9s207rvpfw7gwssiqmp1p3c75bsirmz4nmsdf0";
+  };
+
+  buildInputs = [ acl curl xz zstd ]
+                ++ stdenv.lib.optionals (fuseSupport) [ fuse ]
+                ++ stdenv.lib.optionals (selinuxSupport) [ libselinux ]
+                ++ stdenv.lib.optionals (udevSupport) [ udev ];
+  nativeBuildInputs = [ meson ninja pkgconfig python3 sphinx ];
+  checkInputs = [ glibcLocales rsync ];
+
+  postPatch = ''
+    for f in test/test-*.sh.in; do
+      patchShebangs $f
+    done
+    patchShebangs test/http-server.py
+  '';
+
+  PKG_CONFIG_UDEV_UDEVDIR = "lib/udev";
+  mesonFlags = stdenv.lib.optionals (!fuseSupport) [ "-Dfuse=false" ]
+               ++ stdenv.lib.optionals (!udevSupport) [ "-Dudev=false" ]
+               ++ stdenv.lib.optionals (!selinuxSupport) [ "-Dselinux=false" ];
+
+  doCheck = true;
+  preCheck = ''
+    export LC_ALL="en_US.utf-8"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Content-Addressable Data Synchronizer";
+    homepage    = https://github.com/systemd/casync;
+    license     = licenses.lgpl21;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ flokli ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/desync/default.nix b/nixpkgs/pkgs/applications/networking/sync/desync/default.nix
new file mode 100644
index 000000000000..6dcd451533ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/desync/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "desync-${version}";
+  version = "0.4.0";
+  rev = "v${version}";
+
+  goPackagePath = "github.com/folbricht/desync";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "folbricht";
+    repo = "desync";
+    sha256 = "17qh0g1paa7212j761q9z246k10a3xrwd8fgiizw3lr9adn50kdk";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "Content-addressed binary distribution system";
+    longDescription = "An alternate implementation of the casync protocol and storage mechanism with a focus on production-readiness";
+    homepage = https://github.com/folbricht/desync;
+    license = licenses.bsd3;
+    platforms = platforms.unix; # *may* work on Windows, but varies between releases.
+    maintainers = [ maintainers.chaduffy ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/desync/deps.nix b/nixpkgs/pkgs/applications/networking/sync/desync/deps.nix
new file mode 100644
index 000000000000..7f5f3251d162
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/desync/deps.nix
@@ -0,0 +1,312 @@
+[
+
+  {
+    goPackagePath = "github.com/datadog/zstd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/datadog/zstd";
+      rev = "v1.3.4";
+      sha256 = "06wphl43ji23c0cmmm6fd3wszbwq36mdp1jarak2a6hmxl6yf0b8";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/dchest/siphash";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dchest/siphash";
+      rev = "v1.2.0";
+      sha256 = "01qhv9zd9l6p7pwf1fj022mp9s5496rk4lnm3yvpjsiwp6k4af8c";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/fatih/color";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fatih/color";
+      rev = "v1.7.0";
+      sha256 = "0v8msvg38r8d1iiq2i5r4xyfx0invhc941kjrsg5gzwvagv55inv";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/folbricht/tempfile";
+    fetch = {
+      type = "git";
+      url = "https://github.com/folbricht/tempfile";
+      rev = "v0.0.1";
+      sha256 = "0vz08qvbniqxc24vhmcbq5ncnz97ncp4jbxgcf0hziazxfp114z3";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/go-ini/ini";
+    fetch = {
+      type = "git";
+      url = "https://github.com/go-ini/ini";
+      rev = "v1.38.2";
+      sha256 = "0xbnw1nd22q6k863n5gs0nxld15w0p8qxbhfky85akcb5rk1vwi9";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/gopherjs/gopherjs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gopherjs/gopherjs";
+      rev = "0210a2f0f73c";
+      sha256 = "1n80xjfc1dkxs8h8mkpw83n89wi5n7hzc3rxhwjs76rkxpq3rc9j";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/hanwen/go-fuse";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hanwen/go-fuse";
+      rev = "1d35017e9701";
+      sha256 = "11rggvkd6lc5lcpsfvc9iip4z9cingzpkpshaskv2cirbxdynyi8";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/inconshreveable/mousetrap";
+    fetch = {
+      type = "git";
+      url = "https://github.com/inconshreveable/mousetrap";
+      rev = "v1.0.0";
+      sha256 = "1mn0kg48xkd74brf48qf5hzp0bc6g8cf5a77w895rl3qnlpfw152";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/jtolds/gls";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jtolds/gls";
+      rev = "v4.2.1";
+      sha256 = "1vm37pvn0k4r6d3m620swwgama63laz8hhj3pyisdhxwam4m2g1h";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/kr/fs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/fs";
+      rev = "v0.1.0";
+      sha256 = "11zg176x9hr9q7fsk95r6q0wf214gg4czy02slax4x56n79g6a7q";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/mattn/go-colorable";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-colorable";
+      rev = "v0.0.9";
+      sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "v0.0.4";
+      sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/mattn/go-runewidth";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-runewidth";
+      rev = "v0.0.3";
+      sha256 = "0lc39b6xrxv7h3v3y1kgz49cgi5qxwlygs715aam6ba35m48yi7g";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/minio/minio-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/minio/minio-go";
+      rev = "v6.0.6";
+      sha256 = "0bgivqw1n1189lksp85djw1rqcan2axyh4jv9q54iclrjkpbab37";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/mitchellh/go-homedir";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/go-homedir";
+      rev = "v1.0.0";
+      sha256 = "0f0z0aa4wivk4z1y503dmnw0k0g0g403dly8i4q263gfshs82sbq";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev = "v0.8.0";
+      sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/pkg/sftp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/sftp";
+      rev = "v1.8.2";
+      sha256 = "040flbir6sv213xzs75vkd5fd7bmm3fqxfcnsx8fr77zkn52hm4m";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/smartystreets/assertions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/smartystreets/assertions";
+      rev = "7c9eb446e3cf";
+      sha256 = "1dix6qgaj6kw38hicy3zs3lvacl1kn0n267b3xw0vvdkqf1v0395";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/smartystreets/goconvey";
+    fetch = {
+      type = "git";
+      url = "https://github.com/smartystreets/goconvey";
+      rev = "ef6db91d284a";
+      sha256 = "16znlpsms8z2qc3airawyhzvrzcp70p9bx375i19bg489hgchxb7";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev = "v0.0.3";
+      sha256 = "1q1nsx05svyv9fv3fy6xv6gs9ffimkyzsfm49flvl3wnvf1ncrkd";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "v1.0.2";
+      sha256 = "005598piihl3l83a71ahj10cpq9pbhjck4xishx1b4dzc02r9xr2";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.2.2";
+      sha256 = "0dlszlshlxbmmfxj5hlwgv3r22x0y1af45gn1vd198nvvs3pnvfs";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "0709b304e793";
+      sha256 = "0i05s09y5pavmfh71fgih7syxg58x7a4krgd8am6d3mnahnmab5c";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "161cd47e91fd";
+      sha256 = "0254ld010iijygbzykib2vags1dc0wlmcmhgh4jl8iny159lhbcv";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "1d60e4601c6f";
+      sha256 = "046jlanz2lkxq1r57x9bl6s4cvfqaic6p2xybsj8mq1120jv4rs6";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "49385e6e1522";
+      sha256 = "0spbldahns09fdxkxflb1x24f8k2awdlnr6k5i7ci4fqd19r1dv4";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "v0.3.0";
+      sha256 = "0r6x6zjzhr8ksqlpiwm5gdd7s209kwk5p4lw54xjvz10cs3qlq19";
+    };
+  }
+
+  {
+    goPackagePath = "gopkg.in/cheggaaa/pb.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/cheggaaa/pb.v1";
+      rev = "v1.0.25";
+      sha256 = "0vxqiw6f3xyv0zy3g4lksf8za0z8i0hvfpw92hqimsy84f79j3dp";
+    };
+  }
+
+  {
+    goPackagePath = "gopkg.in/ini.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/ini.v1";
+      rev = "v1.38.2";
+      sha256 = "0xbnw1nd22q6k863n5gs0nxld15w0p8qxbhfky85akcb5rk1vwi9";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/sync/lsyncd/default.nix b/nixpkgs/pkgs/applications/networking/sync/lsyncd/default.nix
new file mode 100644
index 000000000000..b0315ee3477d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/lsyncd/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, fetchpatch, cmake, lua, pkgconfig, rsync,
+  asciidoc, libxml2, docbook_xml_dtd_45, docbook_xsl, libxslt }:
+
+stdenv.mkDerivation rec {
+  name = "lsyncd-${version}";
+  version = "2.2.3";
+
+  src = fetchFromGitHub {
+    owner = "axkibe";
+    repo = "lsyncd";
+    rev = "release-${version}";
+    sha256 = "1hbsih5hfq9lhgnxm0wb5mrj6xmlk2l0i9a79wzd5f6cnjil9l3x";
+  };
+
+  patches = [
+    (fetchpatch {
+      sha256 = "0b0h2qxh73l502p7phf6qgl8576nf6fvqqp2x5wy3nz7sc9qb1z8";
+      name = "fix-non-versioned-lua-not-search-in-cmake.patch";
+      url = "https://github.com/axkibe/lsyncd/pull/500/commits/0af99d8d5ba35118e8799684a2d4a8ea4b0c6957.patch";
+    })
+  ];
+
+  postPatch = ''
+    substituteInPlace default-rsync.lua \
+      --replace "/usr/bin/rsync" "${rsync}/bin/rsync"
+  '';
+
+  dontUseCmakeBuildDir = true;
+
+  buildInputs = [
+    rsync
+    cmake lua pkgconfig
+    asciidoc libxml2 docbook_xml_dtd_45 docbook_xsl libxslt
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/axkibe/lsyncd;
+    description = "A utility that synchronizes local directories with remote targets";
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ bobvanderlinden ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/rclone/browser.nix b/nixpkgs/pkgs/applications/networking/sync/rclone/browser.nix
new file mode 100644
index 000000000000..4325c8ea88ae
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/rclone/browser.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchFromGitHub, cmake, qtbase }:
+
+stdenv.mkDerivation rec {
+  name = "rclone-browser-${version}";
+  version = "1.2";
+
+  src = fetchFromGitHub {
+    owner = "mmozeiko";
+    repo = "RcloneBrowser";
+    rev = version;
+    sha256 = "1ldradd5c606mfkh46y4mhcvf9kbjhamw0gahksp9w43h5dh3ir7";
+  };
+
+  nativeBuildInputs = [ cmake ];
+
+  buildInputs = [ qtbase ];
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Graphical Frontend to Rclone written in Qt";
+    license = licenses.unlicense;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ dotlambda ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/rclone/default.nix b/nixpkgs/pkgs/applications/networking/sync/rclone/default.nix
new file mode 100644
index 000000000000..c4b434dcaa49
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/rclone/default.nix
@@ -0,0 +1,38 @@
+{ stdenv, buildGoPackage, fetchFromGitHub, fetchpatch }:
+
+buildGoPackage rec {
+  pname = "rclone";
+  version = "1.46";
+
+  goPackagePath = "github.com/ncw/rclone";
+  subPackages = [ "." ];
+
+  src = fetchFromGitHub {
+    owner = "ncw";
+    repo = "rclone";
+    rev = "v${version}";
+    sha256 = "1fl52dl41n76r678nzkxa2kgk9khn1fxraxgk8jd3ayc787qs9ia";
+  };
+
+  outputs = [ "bin" "out" "man" ];
+
+  # https://github.com/ncw/rclone/issues/2964
+  patches = [
+    (fetchpatch {
+      url = "https://github.com/ncw/rclone/commit/1c1a8ef24bea9332c6c450379ed3c5d953e07508.patch";
+      sha256 = "0mq74z78lc3dhama303k712xkzz9q6p7zqlbwbl04bndqlkny03k";
+    })
+  ];
+
+  postInstall = ''
+    install -D -m644 $src/rclone.1 $man/share/man/man1/rclone.1
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Command line program to sync files and directories to and from major cloud storage";
+    homepage = https://rclone.org;
+    license = licenses.mit;
+    maintainers = with maintainers; [ danielfullmer ];
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/rsync/base.nix b/nixpkgs/pkgs/applications/networking/sync/rsync/base.nix
new file mode 100644
index 000000000000..fc4bc6c0671e
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/rsync/base.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl }:
+
+rec {
+  version = "3.1.3";
+  src = fetchurl {
+    # signed with key 0048 C8B0 26D4 C96F 0E58  9C2F 6C85 9FB1 4B96 A8C5
+    url = "mirror://samba/rsync/src/rsync-${version}.tar.gz";
+    sha256 = "1h0011dj6jgqpgribir4anljjv7bbrdcs8g91pbsmzf5zr75bk2m";
+  };
+  upstreamPatchTarball = fetchurl {
+    # signed with key 0048 C8B0 26D4 C96F 0E58  9C2F 6C85 9FB1 4B96 A8C5
+    url = "mirror://samba/rsync/rsync-patches-${version}.tar.gz";
+    sha256 = "167vk463bb3xl9c4gsbxms111dk1ip7pq8y361xc0xfa427q9hhd";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Fast incremental file transfer utility";
+    homepage = https://rsync.samba.org/;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/rsync/default.nix b/nixpkgs/pkgs/applications/networking/sync/rsync/default.nix
new file mode 100644
index 000000000000..4045c1f0fc51
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/rsync/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, fetchurl, perl, libiconv, zlib, popt
+, enableACLs ? !(stdenv.isDarwin || stdenv.isSunOS || stdenv.isFreeBSD), acl ? null
+, enableCopyDevicesPatch ? false
+}:
+
+assert enableACLs -> acl != null;
+
+let
+  base = import ./base.nix { inherit stdenv fetchurl; };
+in
+stdenv.mkDerivation rec {
+  name = "rsync-${base.version}";
+
+  mainSrc = base.src;
+
+  patchesSrc = base.upstreamPatchTarball;
+
+  srcs = [mainSrc] ++ stdenv.lib.optional enableCopyDevicesPatch patchesSrc;
+  patches = stdenv.lib.optional enableCopyDevicesPatch "./patches/copy-devices.diff";
+
+  buildInputs = [libiconv zlib popt] ++ stdenv.lib.optional enableACLs acl;
+  nativeBuildInputs = [perl];
+
+  configureFlags = ["--with-nobody-group=nogroup"];
+
+  meta = base.meta // {
+    description = "A fast incremental file transfer utility";
+    maintainers = with stdenv.lib.maintainers; [ peti ehmry kampfschlaefer ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/rsync/rrsync.nix b/nixpkgs/pkgs/applications/networking/sync/rsync/rrsync.nix
new file mode 100644
index 000000000000..e5c04798aab8
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/rsync/rrsync.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, fetchpatch, perl, rsync }:
+
+let
+  base = import ./base.nix { inherit stdenv fetchurl; };
+in
+stdenv.mkDerivation rec {
+  name = "rrsync-${base.version}";
+
+  src = base.src;
+
+  buildInputs = [ rsync ];
+  nativeBuildInputs = [perl];
+
+  # Skip configure and build phases.
+  # We just want something from the support directory
+  configurePhase = "true";
+  dontBuild = true;
+
+  postPatch = ''
+    substituteInPlace support/rrsync --replace /usr/bin/rsync ${rsync}/bin/rsync
+  '';
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp support/rrsync $out/bin
+    chmod a+x $out/bin/rrsync
+  '';
+
+  meta = base.meta // {
+    description = "A helper to run rsync-only environments from ssh-logins";
+    maintainers = [ stdenv.lib.maintainers.kampfschlaefer ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/sync/unison/default.nix b/nixpkgs/pkgs/applications/networking/sync/unison/default.nix
new file mode 100644
index 000000000000..7862cc1e6e4f
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/sync/unison/default.nix
@@ -0,0 +1,45 @@
+{stdenv, fetchFromGitHub, ocaml, lablgtk, fontschumachermisc, xset, makeWrapper, ncurses
+, enableX11 ? true}:
+
+stdenv.mkDerivation (rec {
+
+  name = "unison-${version}";
+  version = "2.51.2";
+  src = fetchFromGitHub {
+    owner = "bcpierce00";
+    repo = "unison";
+    rev = "v${version}";
+    sha256 = "1bykiyc0dc5pkw8x370qkg2kygq9pq7yqzsgczd3y13b6ivm4sdq";
+  };
+
+  buildInputs = [ ocaml makeWrapper ncurses ];
+
+  preBuild = (if enableX11 then ''
+    sed -i "s|\(OCAMLOPT=.*\)$|\1 -I $(echo "${lablgtk}"/lib/ocaml/*/site-lib/lablgtk2)|" src/Makefile.OCaml
+  '' else "") + ''
+  echo -e '\ninstall:\n\tcp $(FSMONITOR)$(EXEC_EXT) $(INSTALLDIR)' >> src/fsmonitor/linux/Makefile
+  '';
+
+  makeFlags = "INSTALLDIR=$(out)/bin/" + (if enableX11 then " UISTYLE=gtk2" else "")
+    + (if ! ocaml.nativeCompilers then " NATIVE=false" else "");
+
+  preInstall = "mkdir -p $out/bin";
+
+  postInstall = if enableX11 then ''
+    for i in $(cd $out/bin && ls); do
+      wrapProgram $out/bin/$i \
+        --run "[ -n \"\$DISPLAY\" ] && (${xset}/bin/xset q | grep -q \"${fontschumachermisc}\" || ${xset}/bin/xset +fp \"${fontschumachermisc}/lib/X11/fonts/misc\")"
+    done
+  '' else "";
+
+  dontStrip = !ocaml.nativeCompilers;
+
+  meta = {
+    homepage = http://www.cis.upenn.edu/~bcpierce/unison/;
+    description = "Bidirectional file synchronizer";
+    license = stdenv.lib.licenses.gpl3Plus;
+    maintainers = with stdenv.lib.maintainers; [viric];
+    platforms = with stdenv.lib.platforms; unix;
+  };
+
+})
diff --git a/nixpkgs/pkgs/applications/networking/syncplay/default.nix b/nixpkgs/pkgs/applications/networking/syncplay/default.nix
new file mode 100644
index 000000000000..4f4eaf302455
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/syncplay/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, python3Packages }:
+
+python3Packages.buildPythonApplication rec {
+  name = "syncplay-${version}";
+  version = "1.6.3";
+
+  format = "other";
+
+  src = fetchurl {
+    url = https://github.com/Syncplay/syncplay/archive/v1.6.3.tar.gz;
+    sha256 = "151p1njlp3dp3pfr3l3m6ia5829zvjyjh4p45j6rgnicbh8sqrgs";
+  };
+
+  propagatedBuildInputs = with python3Packages; [ pyside twisted ];
+
+  makeFlags = [ "DESTDIR=" "PREFIX=$(out)" ];
+
+  meta = with stdenv.lib; {
+    homepage = https://syncplay.pl/;
+    description = "Free software that synchronises media players";
+    license = licenses.asl20;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ enzime ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/syncthing-gtk/default.nix b/nixpkgs/pkgs/applications/networking/syncthing-gtk/default.nix
new file mode 100644
index 000000000000..389d32d5a7cc
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/syncthing-gtk/default.nix
@@ -0,0 +1,64 @@
+{ stdenv, fetchFromGitHub, fetchpatch, libnotify, librsvg, killall
+, gtk3, libappindicator-gtk3, substituteAll, syncthing, wrapGAppsHook
+, gnome3, buildPythonApplication, dateutil, pyinotify, pygobject3
+, bcrypt, gobject-introspection }:
+
+buildPythonApplication rec {
+  version = "0.9.4";
+  name = "syncthing-gtk-${version}";
+
+  src = fetchFromGitHub {
+    owner = "syncthing";
+    repo = "syncthing-gtk";
+    rev = "v${version}";
+    sha256 = "0d3rjd1xjd7zravks9a2ph7gv1cm8wxaxkkvl1fvcx15v7f3hff9";
+  };
+
+  nativeBuildInputs = [
+    wrapGAppsHook
+    # For setup hook populating GI_TYPELIB_PATH
+    gobject-introspection
+  ];
+
+  buildInputs = [
+    gtk3 librsvg libappindicator-gtk3
+    libnotify gnome3.adwaita-icon-theme
+    # Schemas with proxy configuration
+    gnome3.gsettings-desktop-schemas
+  ];
+
+  propagatedBuildInputs = [
+    dateutil pyinotify pygobject3 bcrypt
+  ];
+
+  patches = [
+    (fetchpatch {
+      url = https://github.com/syncthing/syncthing-gtk/commit/b2535e5a9cdb31c4987ab7af37f62d58d38255b7.patch;
+      sha256 = "047v79wz2a9334gbzywlqwpacrk53s26ksvfqaddk06avv8742w7";
+    })
+    (substituteAll {
+      src = ./paths.patch;
+      killall = "${killall}/bin/killall";
+      syncthing = "${syncthing}/bin/syncthing";
+    })
+  ];
+
+  setupPyBuildFlags = [ "build_py" "--nofinddaemon" "--nostdownloader" ];
+
+  postPatch = ''
+    substituteInPlace setup.py --replace "version = get_version()" "version = '${version}'"
+    substituteInPlace scripts/syncthing-gtk --replace "/usr/share" "$out/share"
+    substituteInPlace syncthing_gtk/app.py --replace "/usr/share" "$out/share"
+    substituteInPlace syncthing_gtk/uisettingsdialog.py --replace "/usr/share" "$out/share"
+    substituteInPlace syncthing_gtk/wizard.py --replace "/usr/share" "$out/share"
+    substituteInPlace syncthing-gtk.desktop --replace "/usr/bin/syncthing-gtk" "$out/bin/syncthing-gtk"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "GTK3 & python based GUI for Syncthing";
+    homepage = https://github.com/syncthing/syncthing-gtk;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ ];
+    platforms = syncthing.meta.platforms;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/syncthing-gtk/paths.patch b/nixpkgs/pkgs/applications/networking/syncthing-gtk/paths.patch
new file mode 100644
index 000000000000..0ba5a4f2db84
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/syncthing-gtk/paths.patch
@@ -0,0 +1,22 @@
+--- a/syncthing_gtk/configuration.py
++++ b/syncthing_gtk/configuration.py
+@@ -30,7 +30,7 @@
+ 		"autokill_daemon"			: (int, 2),	# 0 - never kill, 1 - always kill, 2 - ask
+ 		"daemon_priority"			: (int, 0), # uses nice values
+ 		"max_cpus"					: (int, 0), # 0 for all cpus
+-		"syncthing_binary"			: (str, "/usr/bin/syncthing"),
++		"syncthing_binary"			: (str, "@syncthing@"),
+ 		"syncthing_arguments"		: (str, ""),
+ 		"minimize_on_start"			: (bool, False),
+ 		"folder_as_path"			: (bool, True),
+--- a/syncthing_gtk/tools.py
++++ b/syncthing_gtk/tools.py
+@@ -303,7 +303,7 @@
+ 			return False
+ 		# signal 0 doesn't kill anything, but killall exits with 1 if
+ 		# named process is not found
+-		p = Popen(["killall", "-u", os.environ["USER"], "-q", "-s", "0", "syncthing"])
++		p = Popen(["@killall@", "-u", os.environ["USER"], "-q", "-s", "0", "syncthing"])
+ 		p.communicate()
+ 		return p.returncode == 0
+ 	else:
diff --git a/nixpkgs/pkgs/applications/networking/syncthing/add-stcli-target.patch b/nixpkgs/pkgs/applications/networking/syncthing/add-stcli-target.patch
new file mode 100644
index 000000000000..58ac15253aed
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/syncthing/add-stcli-target.patch
@@ -0,0 +1,17 @@
+diff --git i/build.go w/build.go
+index 7d400d6f..1b5e1d25 100644
+--- i/build.go
++++ w/build.go
+@@ -175,6 +175,12 @@ var targets = map[string]target{
+ 			{src: "AUTHORS", dst: "deb/usr/share/doc/syncthing-relaypoolsrv/AUTHORS.txt", perm: 0644},
+ 		},
+ 	},
++	"stcli": {
++		name:        "stcli",
++		description: "Syncthing CLI",
++		buildPkg:    "github.com/syncthing/syncthing/cmd/stcli",
++		binaryName:  "stcli", // .exe will be added automatically for Windows builds
++	},
+ }
+ 
+ func init() {
diff --git a/nixpkgs/pkgs/applications/networking/syncthing/default.nix b/nixpkgs/pkgs/applications/networking/syncthing/default.nix
new file mode 100644
index 000000000000..39144935e9cd
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/syncthing/default.nix
@@ -0,0 +1,107 @@
+{ buildGoPackage, fetchpatch, stdenv, lib, procps, fetchFromGitHub }:
+
+let
+  common = { stname, target, postInstall ? "" }:
+    buildGoPackage rec {
+      version = "1.1.0";
+      name = "${stname}-${version}";
+
+      src = fetchFromGitHub {
+        owner  = "syncthing";
+        repo   = "syncthing";
+        rev    = "v${version}";
+        sha256 = "1qmrh3c4p5vxzjqd0zdmvcqffq75gl4qfg0s8qpkgvdc7qrzzi7i";
+      };
+
+      goPackagePath = "github.com/syncthing/syncthing";
+
+      goDeps = ./deps.nix;
+
+      patches = [
+        ./add-stcli-target.patch
+      ];
+      BUILD_USER="nix";
+      BUILD_HOST="nix";
+
+      buildPhase = ''
+        runHook preBuild
+        pushd go/src/${goPackagePath}
+        go run build.go -no-upgrade -version v${version} build ${target}
+        popd
+        runHook postBuild
+      '';
+
+      installPhase = ''
+        pushd go/src/${goPackagePath}
+        runHook preInstall
+        install -Dm755 ${target} $bin/bin/${target}
+        runHook postInstall
+        popd
+      '';
+
+      inherit postInstall;
+
+      meta = with lib; {
+        homepage = https://www.syncthing.net/;
+        description = "Open Source Continuous File Synchronization";
+        license = licenses.mpl20;
+        maintainers = with maintainers; [ pshendry joko peterhoeg andrew-d ];
+        platforms = platforms.unix;
+      };
+    };
+
+in {
+  syncthing = common {
+    stname = "syncthing";
+    target = "syncthing";
+
+    postInstall = ''
+      # This installs man pages in the correct directory according to the suffix
+      # on the filename
+      for mf in man/*.[1-9]; do
+        mantype="$(echo "$mf" | awk -F"." '{print $NF}')"
+        mandir="$out/share/man/man$mantype"
+        install -Dm644 "$mf" "$mandir/$(basename "$mf")"
+      done
+
+    '' + lib.optionalString (stdenv.isLinux) ''
+      mkdir -p $bin/lib/systemd/{system,user}
+
+      substitute etc/linux-systemd/system/syncthing-resume.service \
+                 $bin/lib/systemd/system/syncthing-resume.service \
+                 --replace /usr/bin/pkill ${procps}/bin/pkill
+
+      substitute etc/linux-systemd/system/syncthing@.service \
+                 $bin/lib/systemd/system/syncthing@.service \
+                 --replace /usr/bin/syncthing $bin/bin/syncthing
+
+      substitute etc/linux-systemd/user/syncthing.service \
+                 $bin/lib/systemd/user/syncthing.service \
+                 --replace /usr/bin/syncthing $bin/bin/syncthing
+    '';
+  };
+
+  syncthing-cli = common {
+    stname = "syncthing-cli";
+
+    target = "stcli";
+  };
+
+  syncthing-discovery = common {
+    stname = "syncthing-discovery";
+    target = "stdiscosrv";
+  };
+
+  syncthing-relay = common {
+    stname = "syncthing-relay";
+    target = "strelaysrv";
+
+    postInstall = lib.optionalString (stdenv.isLinux) ''
+      mkdir -p $out/lib/systemd/system
+
+      substitute cmd/strelaysrv/etc/linux-systemd/strelaysrv.service \
+                 $out/lib/systemd/system/strelaysrv.service \
+                 --replace /usr/bin/strelaysrv $bin/bin/strelaysrv
+    '';
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/syncthing/deps.nix b/nixpkgs/pkgs/applications/networking/syncthing/deps.nix
new file mode 100644
index 000000000000..351b4e30d568
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/syncthing/deps.nix
@@ -0,0 +1,480 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+  {
+    goPackagePath = "github.com/AudriusButkevicius/go-nat-pmp";
+    fetch = {
+      type = "git";
+      url = "https://github.com/AudriusButkevicius/go-nat-pmp";
+      rev = "452c97607362";
+      sha256 = "1accmpl1llk16a19nlyy991fqrgfay6l53gb64hgmdfmqljdvbk7";
+    };
+  }
+  {
+    goPackagePath = "github.com/AudriusButkevicius/recli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/AudriusButkevicius/recli";
+      rev = "v0.0.5";
+      sha256 = "1m1xna1kb78pkmr1lfmvvnpk9j7c4x71j3a7c6vj7zpzc4srpsmf";
+    };
+  }
+  {
+    goPackagePath = "github.com/beorn7/perks";
+    fetch = {
+      type = "git";
+      url = "https://github.com/beorn7/perks";
+      rev = "3a771d992973";
+      sha256 = "1l2lns4f5jabp61201sh88zf3b0q793w4zdgp9nll7mmfcxxjif3";
+    };
+  }
+  {
+    goPackagePath = "github.com/bkaradzic/go-lz4";
+    fetch = {
+      type = "git";
+      url = "https://github.com/bkaradzic/go-lz4";
+      rev = "7224d8d8f27e";
+      sha256 = "10lmya17vdqg2pvqni0p73iahni48s1v11ya9a0hcz4jh5vw4dkb";
+    };
+  }
+  {
+    goPackagePath = "github.com/calmh/du";
+    fetch = {
+      type = "git";
+      url = "https://github.com/calmh/du";
+      rev = "v1.0.1";
+      sha256 = "0qb3a6y3p9nkyn3s66k6zcm16y8n8578qh23ddj14cxf2scrr2n2";
+    };
+  }
+  {
+    goPackagePath = "github.com/calmh/xdr";
+    fetch = {
+      type = "git";
+      url = "https://github.com/calmh/xdr";
+      rev = "v1.1.0";
+      sha256 = "072wqdncz3nd4a3zkhvzzx1y3in1lm29wfvl0d8wrnqs5pyqh0mh";
+    };
+  }
+  {
+    goPackagePath = "github.com/chmduquesne/rollinghash";
+    fetch = {
+      type = "git";
+      url = "https://github.com/chmduquesne/rollinghash";
+      rev = "a60f8e7142b5";
+      sha256 = "0fpaqq4zb0wikgbhn7vwqqj1h865f5xy195vkhivsp922p7qwsjr";
+    };
+  }
+  {
+    goPackagePath = "github.com/d4l3k/messagediff";
+    fetch = {
+      type = "git";
+      url = "https://github.com/d4l3k/messagediff";
+      rev = "v1.2.1";
+      sha256 = "104hl8x57ciaz7mzafg1vp9qggxcyfm8hsv9bmlihbz9ml3nyr8v";
+    };
+  }
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+  {
+    goPackagePath = "github.com/flynn-archive/go-shlex";
+    fetch = {
+      type = "git";
+      url = "https://github.com/flynn-archive/go-shlex";
+      rev = "3f9db97f8568";
+      sha256 = "1j743lysygkpa2s2gii2xr32j7bxgc15zv4113b0q9jhn676ysia";
+    };
+  }
+  {
+    goPackagePath = "github.com/gobwas/glob";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gobwas/glob";
+      rev = "51eb1ee00b6d";
+      sha256 = "090wzpwsjana1qas8ipwh1pj959gvc4b7vwybzi01f3bmd79jwlp";
+    };
+  }
+  {
+    goPackagePath = "github.com/gogo/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gogo/protobuf";
+      rev = "v1.2.0";
+      sha256 = "1c3y5m08mvrgvlw0kb9pldh3kkqcj99pa8gqmk1g3hp8ih3b2dv0";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/groupcache";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/groupcache";
+      rev = "84a468cf14b4";
+      sha256 = "1ky1r9qh54yi9zp2769qrjngzndgd8fn7mja2qfac285n06chmcn";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "v1.2.0";
+      sha256 = "0kf4b59rcbb1cchfny2dm9jyznp8ri2hsb14n8iak1q8986xa0ab";
+    };
+  }
+  {
+    goPackagePath = "github.com/golang/snappy";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/snappy";
+      rev = "553a64147049";
+      sha256 = "0kssxnih1l722hx9219c7javganjqkqhvl3i0hp0hif6xm6chvqk";
+    };
+  }
+  {
+    goPackagePath = "github.com/jackpal/gateway";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jackpal/gateway";
+      rev = "5795ac81146e";
+      sha256 = "0fkwkwmhfadwk3cha8616bhqxfkr9gjjnynhhxyldlphixgs3f25";
+    };
+  }
+  {
+    goPackagePath = "github.com/kballard/go-shellquote";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kballard/go-shellquote";
+      rev = "cd60e84ee657";
+      sha256 = "1xjpin4jq1zl84dcn96xhjmn9bsfyszf6g9aqyj2dc0xfi6c88y0";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pretty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pretty";
+      rev = "v0.1.0";
+      sha256 = "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/pty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pty";
+      rev = "v1.1.1";
+      sha256 = "0383f0mb9kqjvncqrfpidsf8y6ns5zlrc91c6a74xpyxjwvzl2y6";
+    };
+  }
+  {
+    goPackagePath = "github.com/kr/text";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/text";
+      rev = "v0.1.0";
+      sha256 = "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1";
+    };
+  }
+  {
+    goPackagePath = "github.com/lib/pq";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lib/pq";
+      rev = "v1.0.0";
+      sha256 = "1zqnnyczaf00xi6xh53vq758v5bdlf0iz7kf22l02cal4i6px47i";
+    };
+  }
+  {
+    goPackagePath = "github.com/mattn/go-isatty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mattn/go-isatty";
+      rev = "v0.0.4";
+      sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w";
+    };
+  }
+  {
+    goPackagePath = "github.com/matttproud/golang_protobuf_extensions";
+    fetch = {
+      type = "git";
+      url = "https://github.com/matttproud/golang_protobuf_extensions";
+      rev = "v1.0.1";
+      sha256 = "1d0c1isd2lk9pnfq2nk0aih356j30k3h1gi2w0ixsivi5csl7jya";
+    };
+  }
+  {
+    goPackagePath = "github.com/minio/sha256-simd";
+    fetch = {
+      type = "git";
+      url = "https://github.com/minio/sha256-simd";
+      rev = "cc1980cb0338";
+      sha256 = "04fp98nal0wsb26zwhw82spn5camxslc68g3xp8g4af9w6k9g31j";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/ginkgo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/ginkgo";
+      rev = "6c46eb8334b3";
+      sha256 = "0lxmpg3zhn7r2q8c29wcw0sqn5c48ihhb7qfh9m676c9j455rpm8";
+    };
+  }
+  {
+    goPackagePath = "github.com/onsi/gomega";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/gomega";
+      rev = "ba3724c94e4d";
+      sha256 = "0fqs7kyqzz2lykbr2xbvd8imvx748xv4lh4d6fdy3wkwxs2f9fhp";
+    };
+  }
+  {
+    goPackagePath = "github.com/oschwald/geoip2-golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/oschwald/geoip2-golang";
+      rev = "v1.1.0";
+      sha256 = "10pvjmbm1wc8xxwqlcfhdj2mciiyfddghmp6jyn7brd4mg65ppy2";
+    };
+  }
+  {
+    goPackagePath = "github.com/oschwald/maxminddb-golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/oschwald/maxminddb-golang";
+      rev = "26fe5ace1c70";
+      sha256 = "0szb96zq1jbd9zpf4qn9zng4582ww9mg8zgrqxbkkpf3862r6n49";
+    };
+  }
+  {
+    goPackagePath = "github.com/petermattis/goid";
+    fetch = {
+      type = "git";
+      url = "https://github.com/petermattis/goid";
+      rev = "3db12ebb2a59";
+      sha256 = "0z18a3mr72c52g7g94n08gxw0ksnaafbfwdl5p5jav2sffirb0kd";
+    };
+  }
+  {
+    goPackagePath = "github.com/pkg/errors";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pkg/errors";
+      rev = "v0.8.1";
+      sha256 = "0g5qcb4d4fd96midz0zdk8b9kz8xkzwfa8kr1cliqbg8sxsy5vd1";
+    };
+  }
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_golang";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_golang";
+      rev = "v0.9.2";
+      sha256 = "02b4yg6rfag0m3j0i39sillcm5xczwv8h133vn12yr8qw04cnigs";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/client_model";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/client_model";
+      rev = "5c3871d89910";
+      sha256 = "04psf81l9fjcwascsys428v03fx4fi894h7fhrj2vvcz723q57k0";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/common";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/common";
+      rev = "4724e9255275";
+      sha256 = "0pcx8hlnrxx5nnmpk786cn99rsgqk1jrd3c9f6fsx8qd8y5iwjy6";
+    };
+  }
+  {
+    goPackagePath = "github.com/prometheus/procfs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/prometheus/procfs";
+      rev = "1dc9a6cbc91a";
+      sha256 = "1zlv1x30xp7z5c3vn5vp870v4bjim0zcidzc3mr2l3xhazc0svab";
+    };
+  }
+  {
+    goPackagePath = "github.com/rcrowley/go-metrics";
+    fetch = {
+      type = "git";
+      url = "https://github.com/rcrowley/go-metrics";
+      rev = "e181e095bae9";
+      sha256 = "1pwkyw801hy7n94skzk6h177zqcil6ayrmb5gs3jdpsfayh8ia5w";
+    };
+  }
+  {
+    goPackagePath = "github.com/sasha-s/go-deadlock";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sasha-s/go-deadlock";
+      rev = "v0.2.0";
+      sha256 = "13p7b7pakd9k1c2k0fs1hfim3c8mivz679977ai6zb01s4aw7gyg";
+    };
+  }
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.2.2";
+      sha256 = "0dlszlshlxbmmfxj5hlwgv3r22x0y1af45gn1vd198nvvs3pnvfs";
+    };
+  }
+  {
+    goPackagePath = "github.com/syncthing/notify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/syncthing/notify";
+      rev = "4e389ea6c0d8";
+      sha256 = "19gvl14s1l9m82f8c2xsjcr8lmbqrvw1mxkayvfcpimvxfz0j61i";
+    };
+  }
+  {
+    goPackagePath = "github.com/syndtr/goleveldb";
+    fetch = {
+      type = "git";
+      url = "https://github.com/syndtr/goleveldb";
+      rev = "34011bf325bc";
+      sha256 = "097ja0vyj6p27zrxha9nhk09fj977xsvhmd3bk2hbyvnbw4znnhd";
+    };
+  }
+  {
+    goPackagePath = "github.com/thejerf/suture";
+    fetch = {
+      type = "git";
+      url = "https://github.com/thejerf/suture";
+      rev = "v3.0.2";
+      sha256 = "03bdrl78jfwk0kw40lj63ga9cxhgccgss8yi9lp5j0m0ml7921gh";
+    };
+  }
+  {
+    goPackagePath = "github.com/urfave/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/cli";
+      rev = "v1.20.0";
+      sha256 = "0y6f4sbzkiiwrxbl15biivj8c7qwxnvm3zl2dd3mw4wzg4x10ygj";
+    };
+  }
+  {
+    goPackagePath = "github.com/vitrun/qart";
+    fetch = {
+      type = "git";
+      url = "https://github.com/vitrun/qart";
+      rev = "bf64b92db6b0";
+      sha256 = "1xk7qki703xmay9ghi3kq2bjf1iw9dz8wik55739d6i7sn77vvkc";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "0fcca4842a8d";
+      sha256 = "033ghifvrxmqr54nm8gmgxz7qxlqgw9z7z976kp88yf1rmxm2kjr";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "351d144fa1fc";
+      sha256 = "1c5x25qjyz83y92bq0lll5kmznyi3m02wd4c54scgf0866gy938k";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "42b317875d0f";
+      sha256 = "0mrjhk7al7yyh76x9flvxy4jm5jyqh2fxbxagpaazxn1xdgkaif3";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "4d1cda033e06";
+      sha256 = "1wgaldbnkmh568v8kkgvnmkskaj96fqrbzhx23yji2kh1432q6gh";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "e19ae1496984";
+      sha256 = "1cvnnx8nwx5c7gr6ajs7sldhbqh52n7h6fsa3i21l2lhx6xrsh4w";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/time";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/time";
+      rev = "6dc17368e09b";
+      sha256 = "1fx4cf5fpdz00g3c7vxzy92hdcg0vh4yqw00qp5s52j72qixynbk";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/asn1-ber.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/asn1-ber.v1";
+      rev = "379148ca0225";
+      sha256 = "1y8bvzbxpw0lfnn7pbcdwzqj4l90qj6xf88dvv9pxd9yl5g6cskx";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "788fd7840127";
+      sha256 = "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/ldap.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/ldap.v2";
+      rev = "v2.5.1";
+      sha256 = "1wf81wy04nhkqs0dg5zkivr4sh37r83bxrfwjz9vr4jq6vmljr3h";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "287cf08546ab";
+      sha256 = "15502klds9wwv567vclb9kx95gs8lnyzn4ybsk6l9fc7a67lk831";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/tcpkali/default.nix b/nixpkgs/pkgs/applications/networking/tcpkali/default.nix
new file mode 100644
index 000000000000..8a056e21692b
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/tcpkali/default.nix
@@ -0,0 +1,22 @@
+{stdenv, autoreconfHook, fetchFromGitHub, bison}:
+
+let version = "1.1.1"; in
+
+stdenv.mkDerivation rec {
+  name = "tcpkali-${version}";
+  src = fetchFromGitHub {
+    owner = "machinezone";
+    repo = "tcpkali";
+    rev = "v${version}";
+    sha256 = "09ky3cccaphcqc6nhfs00pps99lasmzc2pf5vk0gi8hlqbbhilxf";
+  };
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ bison];
+  meta = {
+    description = "High performance TCP and WebSocket load generator and sink";
+    license = stdenv.lib.licenses.bsd2;
+    inherit (src.meta) homepage;
+    platforms = stdenv.lib.platforms.linux;
+    maintainers = with stdenv.lib.maintainers; [ ethercrow ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/testssl/default.nix b/nixpkgs/pkgs/applications/networking/testssl/default.nix
new file mode 100644
index 000000000000..4a1f71f4b4f7
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/testssl/default.nix
@@ -0,0 +1,52 @@
+{ stdenv, fetchFromGitHub, makeWrapper, lib
+, dnsutils, coreutils, openssl, nettools, utillinux, procps }:
+
+let
+  version = "2.9.5-7";
+
+in stdenv.mkDerivation rec {
+  name = "testssl.sh-${version}";
+
+  src = fetchFromGitHub {
+    owner = "drwetter";
+    repo = "testssl.sh";
+    rev = "v${version}";
+    sha256 = "02xp0yi53xf6jw6v633zs2ws2iyyvq3mlkimg0cv3zvj7nw9x5wr";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+  buildInputs = [
+    coreutils # for pwd and printf
+    dnsutils  # for dig
+    nettools  # for hostname
+    openssl   # for openssl
+    procps    # for ps
+    utillinux # for hexdump
+  ];
+
+  postPatch = ''
+    substituteInPlace testssl.sh                                               \
+      --replace /bin/pwd                    pwd                                \
+      --replace TESTSSL_INSTALL_DIR:-\"\"   TESTSSL_INSTALL_DIR:-\"$out\"
+  '';
+
+  installPhase = ''
+    install -Dt $out/bin testssl.sh
+
+    wrapProgram $out/bin/testssl.sh                                            \
+      --prefix PATH ':' ${lib.makeBinPath buildInputs}
+
+    cp -r etc $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "CLI tool to check a server's TLS/SSL capabilities";
+    longDescription = ''
+      CLI tool which checks a server's service on any port for the support of
+      TLS/SSL ciphers, protocols as well as recent cryptographic flaws and more.
+    '';
+    homepage = https://testssl.sh/;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ etu ];
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/transporter/default.nix b/nixpkgs/pkgs/applications/networking/transporter/default.nix
new file mode 100644
index 000000000000..46649c069111
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/transporter/default.nix
@@ -0,0 +1,71 @@
+{ stdenv
+, fetchFromGitHub
+, meson
+, ninja
+, pkgconfig
+, gtk3
+, python3
+, pantheon
+, gnome3
+, libxml2
+, gettext
+, gobject-introspection
+, appstream-glib
+, desktop-file-utils
+, magic-wormhole
+, wrapGAppsHook }:
+
+let
+  pname = "Transporter";
+  version = "1.3.3";
+in stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "bleakgrey";
+    repo = pname;
+    rev = version;
+    sha256 = "19zb2yqmyyhk5vgh6p278b76shlq0r8ykk1ks8zzr187nr5lf5k1";
+  };
+
+  nativeBuildInputs = [
+    appstream-glib
+    desktop-file-utils
+    pantheon.vala
+    gettext
+    gobject-introspection # For setup hook
+    libxml2
+    meson
+    ninja
+    pkgconfig
+    python3
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    pantheon.elementary-icon-theme
+    gnome3.libgee
+    pantheon.granite
+    gtk3
+    magic-wormhole
+  ];
+
+  prePatch = ''
+  # The paths were hardcoded
+  substituteInPlace ./src/WormholeInterface.vala \
+    --replace /bin/wormhole ${magic-wormhole}/bin/wormhole
+  '';
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Simple magic-wormhole client";
+    homepage    = https://github.com/bleakgrey/Transporter;
+    license     = licenses.gpl3;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/tsung/default.nix b/nixpkgs/pkgs/applications/networking/tsung/default.nix
new file mode 100644
index 000000000000..050c8502e077
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/tsung/default.nix
@@ -0,0 +1,50 @@
+{ fetchurl, stdenv, lib, makeWrapper,
+  erlang,
+  python2, python2Packages,
+  perlPackages,
+  gnuplot }:
+
+stdenv.mkDerivation rec {
+  name = "tsung-${version}";
+  version = "1.7.0";
+  src = fetchurl {
+    url = "http://tsung.erlang-projects.org/dist/tsung-${version}.tar.gz";
+    sha256 = "6394445860ef34faedf8c46da95a3cb206bc17301145bc920151107ffa2ce52a";
+  };
+
+  buildInputs = [ makeWrapper ];
+  propagatedBuildInputs = [
+    erlang
+    gnuplot
+    perlPackages.perl
+    perlPackages.TemplateToolkit
+    python2
+    python2Packages.matplotlib
+  ];
+
+
+  postFixup = ''
+    # Make tsung_stats.pl accessible
+    # Leaving .pl at the end since all of tsung documentation is refering to it
+    # as tsung_stats.pl
+    ln -s $out/lib/tsung/bin/tsung_stats.pl $out/bin/tsung_stats.pl
+
+    # Add Template Toolkit and gnuplot to tsung_stats.pl
+    wrapProgram $out/bin/tsung_stats.pl \
+        --prefix PATH : ${lib.makeBinPath [ gnuplot ]} \
+        --set PERL5LIB "${perlPackages.makePerlPath [ perlPackages.TemplateToolkit ]}"
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://tsung.erlang-projects.org/";
+    description = "A high-performance benchmark framework for various protocols including HTTP, XMPP, LDAP, etc.";
+    longDescription = ''
+      Tsung is a distributed load testing tool. It is protocol-independent and
+      can currently be used to stress HTTP, WebDAV, SOAP, PostgreSQL, MySQL,
+      AMQP, MQTT, LDAP and Jabber/XMPP servers.
+    '';
+    license = licenses.gpl2;
+    maintainers = [ maintainers.uskudnik ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/umurmur/default.nix b/nixpkgs/pkgs/applications/networking/umurmur/default.nix
new file mode 100644
index 000000000000..a1fe790b1190
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/umurmur/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchFromGitHub, autoreconfHook, openssl, protobufc, libconfig }:
+
+stdenv.mkDerivation rec {
+  name = "umurmur-${version}";
+  version = "0.2.17";
+
+  src = fetchFromGitHub {
+    owner = "umurmur";
+    repo = "umurmur";
+    rev = version;
+    sha256 = "074px4ygmv4ydy2pqwxwnz17f0hfswqkz5kc9qfz0iby3h5i3fyl";
+  };
+
+  nativeBuildInputs = [ autoreconfHook ];
+  buildInputs = [ openssl protobufc libconfig ];
+
+  configureFlags = [
+    "--with-ssl=openssl"
+    "--enable-shmapi"
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Minimalistic Murmur (Mumble server)";
+    license = licenses.bsd3;
+    homepage = https://github.com/umurmur/umurmur;
+    platforms = platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/vnstat/default.nix b/nixpkgs/pkgs/applications/networking/vnstat/default.nix
new file mode 100644
index 000000000000..289d1dffc961
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/vnstat/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchurl, gd, ncurses, sqlite }:
+
+stdenv.mkDerivation rec {
+  name = "vnstat-${version}";
+  version = "2.1";
+
+  src = fetchurl {
+    sha256 = "0yk0x6bg9f36dsslhayyyi8fg04yvzjzqkjmlrcsrv6nnggchb6i";
+    url = "https://humdi.net/vnstat/${name}.tar.gz";
+  };
+
+  buildInputs = [ gd ncurses sqlite ];
+
+  postPatch = ''
+    substituteInPlace src/cfg.c --replace /usr/local $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Console-based network statistics utility for Linux";
+    longDescription = ''
+      vnStat is a console-based network traffic monitor for Linux and BSD that
+      keeps a log of network traffic for the selected interface(s). It uses the
+      network interface statistics provided by the kernel as information source.
+      This means that vnStat won't actually be sniffing any traffic and also
+      ensures light use of system resources.
+    '';
+    homepage = https://humdi.net/vnstat/;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/weather/meteo/default.nix b/nixpkgs/pkgs/applications/networking/weather/meteo/default.nix
new file mode 100644
index 000000000000..b5b8445df45d
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/weather/meteo/default.nix
@@ -0,0 +1,51 @@
+{ stdenv, fetchFromGitLab, vala, python3, pkgconfig, meson, ninja, gtk3
+, json-glib, libsoup, clutter, clutter-gtk, libchamplain, webkitgtk, geocode-glib
+, libappindicator, desktop-file-utils, appstream, gobject-introspection, wrapGAppsHook, hicolor-icon-theme }:
+
+stdenv.mkDerivation rec {
+  pname = "meteo";
+  version = "0.9.6";
+
+  src = fetchFromGitLab {
+    owner = "bitseater";
+    repo = pname;
+    rev = version;
+    sha256 = "1786s5637hc3dnnkf5vr2ngfiq73dyvx8187gx7qkh7cr8xrl50w";
+  };
+
+  nativeBuildInputs = [
+    appstream
+    desktop-file-utils
+    meson
+    ninja
+    pkgconfig
+    python3
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    clutter
+    clutter-gtk
+    geocode-glib
+    gtk3
+    hicolor-icon-theme
+    json-glib
+    libappindicator
+    libsoup
+    webkitgtk
+  ];
+
+  postPatch = ''
+    chmod +x meson/post_install.py
+    patchShebangs meson/post_install.py
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Know the forecast of the next hours & days";
+    homepage    = https://gitlab.com/bitseater/meteo;
+    license     = licenses.gpl3Plus;
+    maintainers = with maintainers; [ worldofpeace ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/websocketd/default.nix b/nixpkgs/pkgs/applications/networking/websocketd/default.nix
new file mode 100644
index 000000000000..050358e4dcaa
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/websocketd/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, buildGoPackage, fetchgit }:
+
+buildGoPackage rec {
+  name = "websocketd-${version}";
+  version = "0.3.0";
+  rev = "729c67f052f8f16a0a0aa032816a57649c0ebed3";
+
+  goPackagePath = "github.com/joewalnes/websocketd";
+
+  src = fetchgit {
+    inherit rev;
+    url = "https://github.com/joewalnes/websocketd";
+    sha256 = "1n4fag75lpfxg1pm1pr5v0p44dijrxj59s6dn4aqxirhxkq91lzb";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "Turn any program that uses STDIN/STDOUT into a WebSocket server";
+    homepage = "http://websocketd.com/";
+    maintainers = [ maintainers.bjornfor ];
+    license = licenses.bsd2;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/websocketd/deps.nix b/nixpkgs/pkgs/applications/networking/websocketd/deps.nix
new file mode 100644
index 000000000000..1e610691f52a
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/websocketd/deps.nix
@@ -0,0 +1,12 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/gorilla/websocket";
+    fetch = {
+      type = "git";
+      url = "https://github.com/gorilla/websocket";
+      rev = "95ba29eb981bbb27d92e1f70bf8a1949452d926b";
+      sha256 = "08lvc9l0qagyhyrjj6jkhpq3zapa5gqr966bm33nb4bc0pd38f48";
+    };
+  }
+]
diff --git a/nixpkgs/pkgs/applications/networking/znc/default.nix b/nixpkgs/pkgs/applications/networking/znc/default.nix
new file mode 100644
index 000000000000..deb768e6feb6
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/znc/default.nix
@@ -0,0 +1,49 @@
+{ stdenv, fetchurl, openssl, pkgconfig
+, withPerl ? false, perl
+, withPython ? false, python3
+, withTcl ? false, tcl
+, withCyrus ? true, cyrus_sasl
+, withUnicode ? true, icu
+, withZlib ? true, zlib
+, withIPv6 ? true
+, withDebug ? false
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "znc-${version}";
+  version = "1.7.3";
+
+  src = fetchurl {
+    url = "https://znc.in/releases/archive/${name}.tar.gz";
+    sha256 = "0g8i5hsl4kinpz1wp0a2zniidv3w2sd6awq8676fds516wcc6k0y";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ openssl ]
+    ++ optional withPerl perl
+    ++ optional withPython python3
+    ++ optional withTcl tcl
+    ++ optional withCyrus cyrus_sasl
+    ++ optional withUnicode icu
+    ++ optional withZlib zlib;
+
+  configureFlags = [
+    (stdenv.lib.enableFeature withPerl "perl")
+    (stdenv.lib.enableFeature withPython "python")
+    (stdenv.lib.enableFeature withTcl "tcl")
+    (stdenv.lib.withFeatureAs withTcl "tcl" "${tcl}/lib")
+    (stdenv.lib.enableFeature withCyrus "cyrus")
+  ] ++ optional (!withIPv6) [ "--disable-ipv6" ]
+    ++ optional withDebug [ "--enable-debug" ];
+
+  meta = with stdenv.lib; {
+    description = "Advanced IRC bouncer";
+    homepage = https://wiki.znc.in/ZNC;
+    maintainers = with maintainers; [ schneefux lnl7 ];
+    license = licenses.asl20;
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/applications/networking/znc/modules.nix b/nixpkgs/pkgs/applications/networking/znc/modules.nix
new file mode 100644
index 000000000000..42d2093ee3a0
--- /dev/null
+++ b/nixpkgs/pkgs/applications/networking/znc/modules.nix
@@ -0,0 +1,138 @@
+{ stdenv, fetchFromGitHub, znc }:
+
+let
+  zncDerivation = a@{
+    name, src, module_name,
+    buildPhase ? "${znc}/bin/znc-buildmod ${module_name}.cpp",
+    installPhase ? "install -D ${module_name}.so $out/lib/znc/${module_name}.so", ...
+  } : stdenv.mkDerivation (a // {
+    inherit buildPhase;
+    inherit installPhase;
+
+    buildInputs = znc.buildInputs;
+
+    meta = a.meta // { platforms = stdenv.lib.platforms.unix; };
+    passthru.module_name = module_name;
+  });
+
+in rec {
+
+  backlog = zncDerivation rec {
+    name = "znc-backlog-${version}";
+    version = "git-2017-06-13";
+    module_name = "backlog";
+
+    src = fetchFromGitHub {
+      owner = "FruitieX";
+      repo = "znc-backlog";
+      rev = "42e8f439808882d2dae60f2a161eabead14e4b0d";
+      sha256 = "1k7ifpqqzzf2j7w795q4mx1nvmics2higzjqr3mid3lp43sqg5s6";
+    };
+
+    meta = with stdenv.lib; {
+      description = "Request backlog for IRC channels.";
+      homepage = https://github.com/fruitiex/znc-backlog/;
+      license = licenses.asl20;
+      maintainers = with maintainers; [ infinisil ];
+    };
+  };
+
+  clientbuffer = zncDerivation rec {
+    name = "znc-clientbuffer-${version}";
+    version = "git-2015-08-27";
+    module_name = "clientbuffer";
+
+    src = fetchFromGitHub {
+      owner = "jpnurmi";
+      repo = "znc-clientbuffer";
+      rev = "fe0f368e1fcab2b89d5c94209822d9b616cea840";
+      sha256 = "1s8bqqlwy9kmcpmavil558rd2b0wigjlzp2lpqpcqrd1cg25g4a7";
+    };
+
+    meta = with stdenv.lib; {
+      description = "ZNC module for client specific buffers";
+      homepage = https://github.com/jpnurmi/znc-clientbuffer;
+      license = licenses.asl20;
+      maintainers = with maintainers; [ hrdinka ];
+    };
+  };
+
+  fish = zncDerivation rec {
+    name = "znc-fish-${version}";
+    version = "git-2014-10-10";
+    module_name = "fish";
+
+    src = fetchFromGitHub {
+      # this fork works with ZNC 1.6
+      owner = "jarrydpage";
+      repo = "znc-fish";
+      rev = "9c580e018a1a08374e814fc06f551281cff827de";
+      sha256 = "0yvs0jkwwp18qxqvw1dvir91ggczz56ka00k0zlsb81csdi8xfvl";
+    };
+
+    meta = {
+      description = "ZNC FiSH module";
+      homepage = https://github.com/dctrwatson/znc-fish;
+      maintainers = [ stdenv.lib.maintainers.offline ];
+    };
+  };
+
+  playback = zncDerivation rec {
+    name = "znc-playback-${version}";
+    version = "git-2015-08-04";
+    module_name = "playback";
+
+    src = fetchFromGitHub {
+      owner = "jpnurmi";
+      repo = "znc-playback";
+      rev = "8691abf75becc1f3d7b5bb5ad68dad17cd21863b";
+      sha256 = "0mgfajljy035051b2sx70i8xrb51zw9q2z64kf85zw1lynihzyh4";
+    };
+
+    meta = with stdenv.lib; {
+      description = "An advanced playback module for ZNC";
+      homepage = https://github.com/jpnurmi/znc-playback;
+      license = licenses.asl20;
+      maintainers = with maintainers; [ hrdinka ];
+    };
+  };
+
+  privmsg = zncDerivation rec {
+    name = "znc-privmsg-${version}";
+    version = "git-2015-02-22";
+    module_name = "privmsg";
+
+    src = fetchFromGitHub {
+      owner = "kylef";
+      repo = "znc-contrib";
+      rev = "9f1f98db56cbbea96d83e6628f657e0d62cd9517";
+      sha256 = "0n82z87gdxxragcaixjc80z8bw4bmfwbk0jrf9zs8kk42phlkkc2";
+    };
+
+    meta = {
+      description = "ZNC privmsg module";
+      homepage = https://github.com/kylef/znc-contrib;
+    };
+  };
+
+  push = zncDerivation rec {
+    name = "znc-push-${version}";
+    version = "git-2016-10-12";
+    module_name = "push";
+
+    src = fetchFromGitHub {
+      owner = "jreese";
+      repo = "znc-push";
+      rev = "cf08b9e0f483f03c28d72dd78df932cbef141f10";
+      sha256 = "0xpwjw8csyrg736g1jc1n8d6804x6kbdkrvldzhk9ldj4iwqz7ay";
+    };
+
+    meta = {
+      description = "Push notification service module for ZNC";
+      homepage = https://github.com/jreese/znc-push;
+      license = stdenv.lib.licenses.mit;
+      maintainers = with stdenv.lib.maintainers; [ offline schneefux ];
+    };
+  };
+
+}