about summary refs log tree commit diff
path: root/pkgs/applications/networking
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-03-08 09:57:58 +0100
committerVladimír Čunát <vcunat@gmail.com>2016-03-08 09:58:19 +0100
commit09af15654f0c8091f1b9e0bbb2e523cdee194442 (patch)
treee648edef1ce4c64c533f2593aa22b8015cf0e506 /pkgs/applications/networking
parentf306e67e15bdbe9a8358c9f81319fc4fcbadc2eb (diff)
parent0ee75214f336474e127c2e3546c0406a0c4d5fa7 (diff)
downloadnixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar.gz
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar.bz2
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar.lz
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar.xz
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.tar.zst
nixlib-09af15654f0c8091f1b9e0bbb2e523cdee194442.zip
Merge master into closure-size
The kde-5 stuff still didn't merge well.
I hand-fixed what I saw, but there may be more problems.
Diffstat (limited to 'pkgs/applications/networking')
-rw-r--r--pkgs/applications/networking/bittorrentsync/2.0.x.nix6
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix3
-rw-r--r--pkgs/applications/networking/browsers/chromium/plugins.nix7
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/default.nix11
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_50.patch75
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/sources.nix25
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/update.nix282
-rwxr-xr-xpkgs/applications/networking/browsers/chromium/update.sh103
-rw-r--r--pkgs/applications/networking/browsers/google-chrome/default.nix32
-rw-r--r--pkgs/applications/networking/browsers/qutebrowser/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/rekonq/default.nix2
-rw-r--r--pkgs/applications/networking/browsers/uzbl/default.nix18
-rw-r--r--pkgs/applications/networking/cluster/kanif/default.nix37
-rw-r--r--pkgs/applications/networking/cluster/marathon/default.nix6
-rw-r--r--pkgs/applications/networking/cluster/mesos/default.nix55
-rw-r--r--pkgs/applications/networking/cluster/mesos/maven_repo.patch13
-rw-r--r--pkgs/applications/networking/cluster/panamax/api/default.nix1
-rw-r--r--pkgs/applications/networking/cluster/spark/default.nix15
-rw-r--r--pkgs/applications/networking/cluster/taktuk/default.nix34
-rw-r--r--pkgs/applications/networking/dropbox/default.nix6
-rw-r--r--pkgs/applications/networking/dyndns/cfdyndns/default.nix30
-rw-r--r--pkgs/applications/networking/feedreaders/canto-curses/default.nix2
-rw-r--r--pkgs/applications/networking/feedreaders/canto-daemon/default.nix2
-rw-r--r--pkgs/applications/networking/feedreaders/rawdog/default.nix2
-rw-r--r--pkgs/applications/networking/ftp/filezilla/default.nix8
-rw-r--r--pkgs/applications/networking/instant-messengers/baresip/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/blink/default.nix2
-rw-r--r--pkgs/applications/networking/instant-messengers/choqok/default.nix2
-rw-r--r--pkgs/applications/networking/instant-messengers/mcabber/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/pidgin/default.nix13
-rw-r--r--pkgs/applications/networking/instant-messengers/qtox/default.nix17
-rw-r--r--pkgs/applications/networking/instant-messengers/ricochet/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix38
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix8
-rw-r--r--pkgs/applications/networking/instant-messengers/telegram/telegram-qml/default.nix10
-rw-r--r--pkgs/applications/networking/instant-messengers/tkabber/default.nix6
-rw-r--r--pkgs/applications/networking/instant-messengers/utox/default.nix32
-rw-r--r--pkgs/applications/networking/irc/weechat/default.nix48
-rw-r--r--pkgs/applications/networking/mailreaders/mailnag/default.nix4
-rw-r--r--pkgs/applications/networking/mailreaders/mailpile/default.nix2
-rw-r--r--pkgs/applications/networking/mailreaders/thunderbird-bin/sources.nix234
-rw-r--r--pkgs/applications/networking/mailreaders/thunderbird/default.nix2
-rw-r--r--pkgs/applications/networking/msmtp/default.nix10
-rw-r--r--pkgs/applications/networking/newsreaders/liferea/default.nix4
-rw-r--r--pkgs/applications/networking/newsreaders/liferea/liferea-fix-notification-header-location.patch12
-rw-r--r--pkgs/applications/networking/p2p/transmission/default.nix4
-rw-r--r--pkgs/applications/networking/remote/teamviewer/default.nix2
-rw-r--r--pkgs/applications/networking/sniffers/wireshark/default.nix4
-rw-r--r--pkgs/applications/networking/sync/backintime/common.nix14
-rw-r--r--pkgs/applications/networking/sync/rsync/base.nix21
-rw-r--r--pkgs/applications/networking/sync/rsync/default.nix25
-rw-r--r--pkgs/applications/networking/sync/rsync/rrsync.nix33
-rw-r--r--pkgs/applications/networking/znc/1.4.nix35
-rw-r--r--pkgs/applications/networking/znc/modules.nix91
54 files changed, 884 insertions, 580 deletions
diff --git a/pkgs/applications/networking/bittorrentsync/2.0.x.nix b/pkgs/applications/networking/bittorrentsync/2.0.x.nix
index 1ae3041b4da9..4f9c7ebf3332 100644
--- a/pkgs/applications/networking/bittorrentsync/2.0.x.nix
+++ b/pkgs/applications/networking/bittorrentsync/2.0.x.nix
@@ -5,15 +5,15 @@ let
     else if stdenv.system == "i686-linux" then "i386"
     else throw "Bittorrent Sync for: ${stdenv.system} not supported!";
 
-  sha256 = if stdenv.system == "x86_64-linux" then "1ldhi0ydpxdbpd0ak5c3zv93wif5sqsgfj4ggav2b0djm76al2gb"
-    else if stdenv.system == "i686-linux" then "1fhki13isw3g7785b5jdl4warayg94ihah6wsr5h9gljjjghgi1c"
+  sha256 = if stdenv.system == "x86_64-linux" then "0l6z2fyd7i3i3cr95gkihbf6fwa7mk1b2m1jpf2nq5ispg0qf74n"
+    else if stdenv.system == "i686-linux" then "06x8f75dh58saqrz2k2xgcilh27v0jmql4k4rs7g361aad9v3pnr"
     else throw "Bittorrent Sync for: ${stdenv.system} not supported!";
 
   libPath = stdenv.lib.makeLibraryPath [ stdenv.cc.libc ];
 in
 stdenv.mkDerivation rec {
   name = "btsync-${version}";
-  version = "2.2.7";
+  version = "2.3.3";
 
   src  = fetchurl {
     url  = "https://download-cdn.getsyncapp.com/${version}/linux-${arch}/BitTorrent-Sync_${arch}.tar.gz";
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index c0c5e485e59c..f9ed1f31e540 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -57,6 +57,9 @@ let
       "x-scheme-handler/unknown"
     ];
     categories = "Network;WebBrowser";
+    extraEntries = ''
+      StartupWMClass=chromium-browser
+    '';
   };
 
   suffix = if channel != "stable" then "-" + channel else "";
diff --git a/pkgs/applications/networking/browsers/chromium/plugins.nix b/pkgs/applications/networking/browsers/chromium/plugins.nix
index 78d9086dd961..c3b294876c87 100644
--- a/pkgs/applications/networking/browsers/chromium/plugins.nix
+++ b/pkgs/applications/networking/browsers/chromium/plugins.nix
@@ -1,4 +1,5 @@
 { stdenv
+, jshon
 , enablePepperFlash ? false
 , enableWideVine ? false
 
@@ -80,12 +81,10 @@ let
       wvName = "Widevine Content Decryption Module";
       wvDescription = "Playback of encrypted HTML audio/video content";
       wvMimeTypes = "application/x-ppapi-widevine-cdm";
-      wvModule = "$widevine/lib/libwidevinecdmadapter.so";
+      wvModule = "@widevine@/lib/libwidevinecdmadapter.so";
       wvInfo = "#${wvName}#${wvDescription};${wvMimeTypes}";
     in ''
-      flashVersion="$(
-        sed -n -r 's/.*"version": "([^"]+)",.*/\1/p' PepperFlash/manifest.json
-      )"
+      flashVersion="$(${jshon}/bin/jshon -F PepperFlash/manifest.json -e version -u)"
 
       install -vD PepperFlash/libpepflashplayer.so \
         "$flash/lib/libpepflashplayer.so"
diff --git a/pkgs/applications/networking/browsers/chromium/source/default.nix b/pkgs/applications/networking/browsers/chromium/source/default.nix
index 4e568aed5949..a566c4bb1c87 100644
--- a/pkgs/applications/networking/browsers/chromium/source/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/source/default.nix
@@ -41,10 +41,13 @@ in stdenv.mkDerivation {
     done
   '';
 
-  patches =
-    singleton ./nix_plugin_paths_46.patch ++
-    singleton ./build_fixes_46.patch ++
-    singleton ./widevine.patch;
+  patches = [
+    ./build_fixes_46.patch
+    ./widevine.patch
+    (if versionOlder version "50.0.0.0"
+     then ./nix_plugin_paths_46.patch
+     else ./nix_plugin_paths_50.patch)
+  ];
 
   patchPhase = let
     diffmod = sym: "/^${sym} /{s/^${sym} //;${transform ""};s/^/${sym} /}";
diff --git a/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_50.patch b/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_50.patch
new file mode 100644
index 000000000000..062098a85225
--- /dev/null
+++ b/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_50.patch
@@ -0,0 +1,75 @@
+diff --git a/chrome/common/chrome_paths.cc b/chrome/common/chrome_paths.cc
+index 74bf041..5f34198 100644
+--- a/chrome/common/chrome_paths.cc
++++ b/chrome/common/chrome_paths.cc
+@@ -66,21 +66,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 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 PathService::Get(base::DIR_MODULE, result);
++  else
++      *result = base::FilePath(value);
+ }
+ 
+ #if defined(OS_WIN)
+@@ -253,11 +246,11 @@ 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_PEPPER_FLASH_PLUGIN:
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "PEPPERFLASH"))
+         return false;
+       cur = cur.Append(kPepperFlashBaseDirectory);
+       break;
+@@ -314,7 +307,7 @@ bool PathProvider(int key, base::FilePath* result) {
+     // We currently need a path here to look up whether the plugin is disabled
+     // and what its permissions are.
+     case chrome::FILE_NACL_PLUGIN:
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "NACL"))
+         return false;
+       cur = cur.Append(kInternalNaClPluginFileName);
+       break;
+@@ -349,7 +342,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"));
+@@ -366,7 +359,7 @@ bool PathProvider(int key, base::FilePath* result) {
+     // In the component case, this is the source adapter. Otherwise, it is the
+     // actual Pepper module that gets loaded.
+     case chrome::FILE_WIDEVINE_CDM_ADAPTER:
+-      if (!GetInternalPluginsDirectory(&cur))
++      if (!GetInternalPluginsDirectory(&cur, "WIDEVINE"))
+         return false;
+       cur = cur.AppendASCII(kWidevineCdmAdapterFileName);
+       break;
diff --git a/pkgs/applications/networking/browsers/chromium/source/sources.nix b/pkgs/applications/networking/browsers/chromium/source/sources.nix
index 1a19210fd3dc..ffec5c8b8073 100644
--- a/pkgs/applications/networking/browsers/chromium/source/sources.nix
+++ b/pkgs/applications/networking/browsers/chromium/source/sources.nix
@@ -1,21 +1,18 @@
 # This file is autogenerated from update.sh in the parent directory.
 {
-  dev = {
-    version = "49.0.2593.0";
-    sha256 = "1krkf8dg10xnvxs4zfvy2rkp0v3gxg55418b11kmfywsxjfi09hv";
-    sha256bin32 = "0sarfj8r6x28pbmcpd5facm6liifazj744c9qn6ci6xg7f8jlnxi";
-    sha256bin64 = "1l5s504mmr4v5y67fsla9hyrk7dm155yc790ld87s1ya03h455gr";
-  };
   beta = {
-    version = "49.0.2623.28";
-    sha256 = "1cpgfcw6kgw70k14wa1m5qzj4rnvkzrw1am30d34516mbwlmmqc8";
-    sha256bin32 = "0nwhjav1x325h1drqknrjl5glivn4fdpahs1nlaqfk8kbjh1q113";
-    sha256bin64 = "0wj6j0v3rngsclzbb8rc8l90wdi98j2sb60r2ypfihaxq2gd138y";
+    sha256 = "1xc2npbc829nxria1j37kxyy95jkalkkphxgv24if0ibn62lrzd4";
+    sha256bin64 = "1arm15g3vmm3zlvcql3qylw1fhrn5ddzl2v8mkpb3a251m425dsi";
+    version = "49.0.2623.75";
+  };
+  dev = {
+    sha256 = "04j0nyz20gi7vf1javbw06wrqpkfw6vg024i3wkgx42hzd6hjgw4";
+    sha256bin64 = "12ff4q615rwakgpr9v84p55maasqb4vg61s89vgxrlsgqrmkahg4";
+    version = "50.0.2661.11";
   };
   stable = {
-    version = "48.0.2564.97";
-    sha256 = "1nsjn8zlqljizy5dmg2rxwkw4k5j4yi15ywxi9ca3acv68dbhd3p";
-    sha256bin32 = "0gdd9krsfsixw5b03msm7nf7zl7xh4chzkh9srb19c1kzygl2j2l";
-    sha256bin64 = "1wmw17gdq1j6vxfdc8s94jc8z30pza8nipk4dh590xnb7faihr52";
+    sha256 = "1xc2npbc829nxria1j37kxyy95jkalkkphxgv24if0ibn62lrzd4";
+    sha256bin64 = "01qi5jmlmdpy6icc4y51bn5a063mxrnkncg3pbmbl4r02vqca5jh";
+    version = "49.0.2623.75";
   };
 }
diff --git a/pkgs/applications/networking/browsers/chromium/source/update.nix b/pkgs/applications/networking/browsers/chromium/source/update.nix
index 49864cf1c7b0..d4dc3b59cbc7 100644
--- a/pkgs/applications/networking/browsers/chromium/source/update.nix
+++ b/pkgs/applications/networking/browsers/chromium/source/update.nix
@@ -3,17 +3,24 @@
 let
   inherit (import ../../../../../../. {
     inherit system;
-  }) lib writeText stdenv;
+  }) lib runCommand writeText stdenv curl cacert nix;
 
   sources = if builtins.pathExists ./sources.nix
             then import ./sources.nix
-            else null;
+            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"
@@ -21,32 +28,6 @@ let
     "http://repo.fdzh.org/chrome/deb/pool/main/g"
   ];
 
-  tryChannel = channel: let
-    chan = builtins.getAttr channel sources;
-  in if sources != null then ''
-    oldver="${chan.version}";
-    echo -n "Checking if $oldver ($channel) is up to date..." >&2;
-    if [ "x$(get_newest_ver "$version" "$oldver")" != "x$oldver" ];
-    then
-      echo " no, getting sha256 for new version $version:" >&2;
-      sha256="$(prefetch_sha "$channel" "$version")" || return 1;
-    else
-      echo " yes, keeping old sha256." >&2;
-      sha256="${chan.sha256}";
-      ${if (chan ? sha256bin32 && chan ? sha256bin64) then ''
-        sha256="$sha256.${chan.sha256bin32}.${chan.sha256bin64}";
-      '' else ''
-        sha256="$sha256.$(prefetch_deb_sha "$channel" "$version")";
-      ''}
-    fi;
-  '' else ''
-    sha256="$(prefetch_sha "$channel" "$version")" || return 1;
-  '';
-
-  caseChannel = channel: ''
-    ${channel}) ${tryChannel channel};;
-  '';
-
 in rec {
   getChannel = channel: let
     chanAttrs = builtins.getAttr channel sources;
@@ -54,70 +35,197 @@ in rec {
     inherit (chanAttrs) version;
 
     main = {
-      url = "${bucketURL}/chromium-${chanAttrs.version}.tar.xz";
+      url = mkVerURL chanAttrs.version;
       inherit (chanAttrs) sha256;
     };
 
     binary = let
-      pname = if channel == "dev"
-              then "google-chrome-unstable"
-              else "google-chrome-${channel}";
-      arch = if stdenv.is64bit then "amd64" else "i386";
-      relpath = "${pname}/${pname}_${chanAttrs.version}-1_${arch}.deb";
-    in lib.optionalAttrs (chanAttrs ? sha256bin64) {
-      urls = map (url: "${url}/${relpath}") ([ debURL ] ++ debMirrors);
-      sha256 = if stdenv.is64bit
-               then chanAttrs.sha256bin64
-               else chanAttrs.sha256bin32;
-    };
+      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.";
   };
 
-  updateHelpers = writeText "update-helpers.sh" ''
-
-    prefetch_main_sha()
-    {
-      nix-prefetch-url "${bucketURL}/chromium-$2.tar.xz";
-    }
-
-    prefetch_deb_sha()
-    {
-      channel="$1";
-      version="$2";
-
-      case "$1" in
-        dev) pname="google-chrome-unstable";;
-        *)   pname="google-chrome-$channel";;
-      esac;
-
-      deb_pre="${debURL}/$pname/$pname";
-
-      deb32=$(nix-prefetch-url "''${deb_pre}_$version-1_i386.deb");
-      deb64=$(nix-prefetch-url "''${deb_pre}_$version-1_amd64.deb");
-
-      echo "$deb32.$deb64";
-      return 0;
-    }
-
-    prefetch_sha()
-    {
-      main_sha="$(prefetch_main_sha "$@")" || return 1;
-      deb_sha="$(prefetch_deb_sha "$@")" || return 1;
-      echo "$main_sha.$deb_sha";
-      return 0;
-    }
-
-    get_sha256()
-    {
-      channel="$1";
-      version="$2";
-
-      case "$channel" in
-        ${lib.concatMapStrings caseChannel [ "stable" "dev" "beta" ]}
-      esac;
-
-      sha_insert "$version" "$sha256";
-      echo "$sha256";
-      return 0;
-    }
+  update = let
+    csv2nix = name: src: import (runCommand "${name}.nix" {
+      src = builtins.fetchurl src;
+    } ''
+      esc() { echo "\"$(echo "$1" | sed -e 's/"\\$/\\&/')\""; }
+      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 MD5 and its weaknesses to forge a fixed-output derivation which
+      is not so fixed, because it emits different contents that have the same
+      MD5 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
+      mkBin = b: runCommand "binary-blurb" { inherit b; } ''
+        h="$(echo "$b" | sed -e ':r;N;$!br;s/[^ \n][^ \n]/\\x&/g;s/[ \n]//g')"
+        echo -ne "$h" > "$out"
+      '';
+
+      # Both MD5 hash collision examples are from:
+      # https://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
+      hashCollTrue = mkBin ''
+        d131dd02c5e6eec4 693d9a0698aff95c 2fcab58712467eab 4004583eb8fb7f89
+        55ad340609f4b302 83e488832571415a 085125e8f7cdc99f d91dbdf280373c5b
+        d8823e3156348f5b ae6dacd436c919c6 dd53e2b487da03fd 02396306d248cda0
+        e99f33420f577ee8 ce54b67080a80d1e c69821bcb6a88393 96f9652b6ff72a70
+      '';
+
+      hashCollFalse = mkBin ''
+        d131dd02c5e6eec4 693d9a0698aff95c 2fcab50712467eab 4004583eb8fb7f89
+        55ad340609f4b302 83e4888325f1415a 085125e8f7cdc99f d91dbd7280373c5b
+        d8823e3156348f5b ae6dacd436c919c6 dd53e23487da03fd 02396306d248cda0
+        e99f33420f577ee8 ce54b67080280d1e c69821bcb6a88393 96f965ab6ff72a70
+      '';
+
+      cacheVal = let
+        urlHash = builtins.hashString "sha256" url;
+        timeSlice = builtins.currentTime / 600;
+      in "${urlHash}-${toString timeSlice}";
+
+      successBin = stdenv.mkDerivation {
+        name = "tryfetch-${cacheVal}";
+        inherit url;
+
+        outputHash = "79054025255fb1a26e4bc422aef54eb4";
+        outputHashMode = "flat";
+        outputHashAlgo = "md5";
+
+        buildInputs = [ curl ];
+        preferLocalBuild = true;
+
+        buildCommand = ''
+          if SSL_CERT_FILE="${cacert}/etc/ssl/certs/ca-bundle.crt" \
+             curl -s -L -f -I "$url" > /dev/null; then
+            cat "${hashCollTrue}" > "$out"
+          else
+            cat "${hashCollFalse}" > "$out"
+          fi
+        '';
+
+        impureEnvVars = [
+          "http_proxy" "https_proxy" "ftp_proxy" "all_proxy" "no_proxy"
+        ];
+      };
+
+    in {
+      success = builtins.readFile successBin == builtins.readFile hashCollTrue;
+      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;
+      buildInputs = [ 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-sources.nix" ''
+    # This file is autogenerated from update.sh in the parent directory.
+    ${dumpAttrs 0 newChannels}
   '';
 }
diff --git a/pkgs/applications/networking/browsers/chromium/update.sh b/pkgs/applications/networking/browsers/chromium/update.sh
index e079762420be..05cc671d31ce 100755
--- a/pkgs/applications/networking/browsers/chromium/update.sh
+++ b/pkgs/applications/networking/browsers/chromium/update.sh
@@ -1,100 +1,3 @@
-#!/bin/sh
-
-channels_url="http://omahaproxy.appspot.com/all?csv=1";
-history_url="http://omahaproxy.appspot.com/history";
-bucket_url="http://commondatastorage.googleapis.com/chromium-browser-official/";
-base_path="$(cd "$(dirname "$0")" && pwd)/source";
-
-source "$(nix-build --no-out-link "$base_path/update.nix" -A updateHelpers)";
-
-### poor mans key/value-store :-) ###
-
-ver_sha_table=""; # list of version:sha256
-
-sha_insert()
-{
-    version="$1";
-    sha256="$2";
-
-    ver_sha_table="$ver_sha_table $version:$sha256";
-}
-
-get_newest_ver()
-{
-    versions="$(for v in $@; do echo "$v"; done)";
-    if oldest="$(echo "$versions" | sort -V 2> /dev/null | tail -n1)";
-    then
-        echo "$oldest";
-    else
-        echo "$versions" | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -n1;
-    fi;
-}
-
-fetch_filtered_history()
-{
-    curl -s "$history_url" | sed -nr 's/^'"linux,$1"',([^,]+).*$/\1/p';
-}
-
-get_prev_sha256()
-{
-    channel="$1";
-    current_version="$2";
-
-    for version in $(fetch_filtered_history "$channel");
-    do
-        [ "x$version" = "x$current_version" ] && continue;
-        sha256="$(get_sha256 "$channel" "$version")" || continue;
-        echo "$sha256:$version";
-        return 0;
-    done;
-}
-
-get_channel_exprs()
-{
-    for chline in $1;
-    do
-        channel="${chline%%,*}";
-        version="${chline##*,}";
-
-        sha256="$(get_sha256 "$channel" "$version")";
-        if [ $? -ne 0 ];
-        then
-            echo "Whoops, failed to fetch $version, trying previous" \
-                 "versions:" >&2;
-
-            sha_ver="$(get_prev_sha256 "$channel" "$version")";
-            sha256="${sha_ver%:*}";
-            version="${sha_ver#*:}";
-        fi;
-
-        sha_insert "$version" "$sha256";
-
-        main="${sha256%%.*}";
-        deb="${sha256#*.}";
-        deb32="${deb%.*}";
-        deb64="${deb#*.}";
-
-        echo "  $channel = {";
-        echo "    version = \"$version\";";
-        echo "    sha256 = \"$main\";";
-        if [ "x${deb#*[a-z0-9].[a-z0-9]}" != "x$deb" ];
-        then
-            echo "    sha256bin32 = \"$deb32\";";
-            echo "    sha256bin64 = \"$deb64\";";
-        fi;
-        echo "  };";
-    done;
-}
-
-cd "$(dirname "$0")";
-
-omaha="$(curl -s "$channels_url")";
-versions="$(echo "$omaha" | sed -nr -e 's/^linux,([^,]+,[^,]+).*$/\1/p')";
-channel_exprs="$(get_channel_exprs "$versions")";
-
-cat > "$base_path/sources.nix" <<-EOF
-# This file is autogenerated from update.sh in the parent directory.
-{
-$channel_exprs
-}
-EOF
+#!/bin/sh -e
+sp="$(nix-build -Q --no-out-link source/update.nix -A update)"
+cat "$sp" > source/sources.nix
diff --git a/pkgs/applications/networking/browsers/google-chrome/default.nix b/pkgs/applications/networking/browsers/google-chrome/default.nix
index b05da9c67000..89e545d12e4b 100644
--- a/pkgs/applications/networking/browsers/google-chrome/default.nix
+++ b/pkgs/applications/networking/browsers/google-chrome/default.nix
@@ -35,8 +35,6 @@ with (import ../chromium/source/update.nix {
 }).getChannel channel;
 
 let
-  dist = if channel == "dev" then "unstable" else channel;
-
   opusWithCustomModes = libopus.override {
     withCustomModes = true;
   };
@@ -71,7 +69,13 @@ in stdenv.mkDerivation rec {
   '';
 
   installPhase = ''
-    exe=$out/bin/google-chrome-${dist}
+    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
     rpath="${env}/lib:${env}/lib64"
 
     mkdir -p $out/bin $out/share
@@ -79,32 +83,32 @@ in stdenv.mkDerivation rec {
     cp -a opt/* $out/share
     cp -a usr/share/* $out/share
 
-    substituteInPlace $out/share/applications/google-chrome.desktop \
-      --replace /usr/bin/google-chrome-${dist} $exe
-    substituteInPlace $out/share/gnome-control-center/default-apps/google-chrome.xml \
-      --replace /opt/google/chrome/google-chrome $exe
-    substituteInPlace $out/share/menu/google-chrome.menu \
+    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-chrome $exe
+      --replace $out/share/google/chrome/google-$appname $exe
 
-    for icon_file in $out/share/google/chrome/product_logo_*[0-9].png; do
+    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-chrome.png"
+      mv "$icon_file" "$logo_output_path/google-$appname.png"
     done
 
     cat > $exe << EOF
     #!${bash}/bin/sh
     export LD_LIBRARY_PATH=$rpath\''${LD_LIBRARY_PATH:+:\$LD_LIBRARY_PATH}
     export PATH=${env}/bin\''${PATH:+:\$PATH}
-    $out/share/google/chrome/google-chrome "\$@"
+    $out/share/google/$appname/google-$appname "\$@"
     EOF
     chmod +x $exe
 
-    for elf in $out/share/google/chrome/{chrome,chrome-sandbox,nacl_helper}; do
+    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
@@ -112,7 +116,7 @@ in stdenv.mkDerivation rec {
 
   meta = {
     description = "A freeware web browser developed by Google";
-    homepage = "https://www.google.com/chrome/browser/";
+    homepage = https://www.google.com/chrome/browser/;
     license = licenses.unfree;
     maintainers = [ maintainers.msteen ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/networking/browsers/qutebrowser/default.nix b/pkgs/applications/networking/browsers/qutebrowser/default.nix
index 61b02d2a6394..1be28829e351 100644
--- a/pkgs/applications/networking/browsers/qutebrowser/default.nix
+++ b/pkgs/applications/networking/browsers/qutebrowser/default.nix
@@ -1,10 +1,10 @@
-{ stdenv, fetchurl, python, buildPythonPackage, qtmultimedia, pyqt5
+{ stdenv, fetchurl, python, buildPythonApplication, qtmultimedia, pyqt5
 , jinja2, pygments, pyyaml, pypeg2, gst-plugins-base, gst-plugins-good
 , gst-plugins-bad, gst-libav, wrapGAppsHook, glib_networking }:
 
 let version = "0.5.1"; in
 
-buildPythonPackage rec {
+buildPythonApplication rec {
   name = "qutebrowser-${version}";
   namePrefix = "";
 
diff --git a/pkgs/applications/networking/browsers/rekonq/default.nix b/pkgs/applications/networking/browsers/rekonq/default.nix
index df8ad1eb3508..70aa648ccc50 100644
--- a/pkgs/applications/networking/browsers/rekonq/default.nix
+++ b/pkgs/applications/networking/browsers/rekonq/default.nix
@@ -21,6 +21,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     maintainers = [ maintainers.urkud ];
     description = "KDE Webkit browser";
-    homepage = http://rekonq.sourceforge.net;
+    homepage = https://rekonq.kde.org/;
   };
 }
diff --git a/pkgs/applications/networking/browsers/uzbl/default.nix b/pkgs/applications/networking/browsers/uzbl/default.nix
index 1a46b1adce8a..0fb0db998914 100644
--- a/pkgs/applications/networking/browsers/uzbl/default.nix
+++ b/pkgs/applications/networking/browsers/uzbl/default.nix
@@ -1,27 +1,29 @@
-{ stdenv, fetchurl, pkgconfig, python, makeWrapper, pygtk
-, webkit, glib_networking, gsettings_desktop_schemas
+{ stdenv, fetchurl, pkgconfig, python3, makeWrapper, pygtk
+, webkit, glib_networking, gsettings_desktop_schemas, pythonPackages
 }:
 
 stdenv.mkDerivation rec {
-  name = "uzbl-20120514";
+  name = "uzbl-v0.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 ];
+    maintainers = with maintainers; [ raskin dgonyeo ];
   };
 
   src = fetchurl {
     name = "${name}.tar.gz";
-    url = "https://github.com/uzbl/uzbl/archive/2012.05.14.tar.gz";
-    sha256 = "1flpf0rg0c3n9bjifr37zxljn9yxslg8vkll7ghkm341x76cbkwn";
+    url = "https://github.com/uzbl/uzbl/archive/v0.9.0.tar.gz";
+    sha256 = "0iskhv653fdm5raiidimh9fzlsw28zjqx7b5n3fl1wgbj6yz074k";
   };
 
   preConfigure = ''
     makeFlags="$makeFlags PREFIX=$out"
     makeFlags="$makeFlags PYINSTALL_EXTRA=--prefix=$out"
+    mkdir -p $out/lib/python3.4/site-packages/
+    export PYTHONPATH=$PYTHONPATH:$out/lib/python3.4/site-packages/
   '';
 
   preFixup = ''
@@ -33,7 +35,7 @@ stdenv.mkDerivation rec {
     done
   '';
 
-  nativeBuildInputs = [ pkgconfig python makeWrapper ];
+  nativeBuildInputs = [ pkgconfig python3 makeWrapper ];
 
-  buildInputs = [ gsettings_desktop_schemas webkit pygtk ];
+  buildInputs = [ gsettings_desktop_schemas webkit pygtk pythonPackages.six ];
 }
diff --git a/pkgs/applications/networking/cluster/kanif/default.nix b/pkgs/applications/networking/cluster/kanif/default.nix
new file mode 100644
index 000000000000..bac0cc37af33
--- /dev/null
+++ b/pkgs/applications/networking/cluster/kanif/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, perl , taktuk}:
+
+stdenv.mkDerivation rec {
+  version = "1.2.2";
+  name = "kanif-${version}";
+
+  propagateBuildInputs = [ perl taktuk ];
+
+  src = fetchurl {
+    url = "http://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/pkgs/applications/networking/cluster/marathon/default.nix b/pkgs/applications/networking/cluster/marathon/default.nix
index 8f3437644457..11c275c9f490 100644
--- a/pkgs/applications/networking/cluster/marathon/default.nix
+++ b/pkgs/applications/networking/cluster/marathon/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "marathon-${version}";
-  version = "0.14.1";
+  version = "0.15.3";
 
   src = fetchurl {
     url = "https://downloads.mesosphere.io/marathon/v${version}/marathon-${version}.tgz";
-    sha256 = "0vdl7jf7yhb985dj3v46qnqjv1zwfkyizlsyf9c5dq7khvxrp1l4";
+    sha256 = "1br4k596sjp4cf5l2nyaqhlsfdr443n08fvdyf4kilhr803x2rjq";
   };
 
   buildInputs = [ makeWrapper jdk mesos ];
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
     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; [ rushmorem kamilchm ];
+    maintainers = with maintainers; [ rushmorem kamilchm kevincox ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/applications/networking/cluster/mesos/default.nix b/pkgs/applications/networking/cluster/mesos/default.nix
index cb6be73ec9bf..86b82db60e14 100644
--- a/pkgs/applications/networking/cluster/mesos/default.nix
+++ b/pkgs/applications/networking/cluster/mesos/default.nix
@@ -1,7 +1,8 @@
 { stdenv, lib, makeWrapper, fetchurl, curl, sasl, openssh, autoconf
-, automake114x, libtool, unzip, gnutar, jdk, maven, python, wrapPython
-, setuptools, boto, pythonProtobuf, apr, subversion
-, leveldb, glog, perf, utillinux, libnl, iproute
+, automake115x, libtool, unzip, gnutar, jdk, maven, python, wrapPython
+, setuptools, boto, pythonProtobuf, apr, subversion, gzip, systemd
+, leveldb, glog, perf, utillinux, libnl, iproute, openssl, libevent
+, bash
 }:
 
 let
@@ -9,25 +10,27 @@ let
   soext = if stdenv.system == "x86_64-darwin" then "dylib" else "so";
 
 in stdenv.mkDerivation rec {
-  version = "0.23.0";
+  version = "0.27.1";
   name = "mesos-${version}";
 
+  enableParallelBuilding = true;
   dontDisableStatic = true;
 
   src = fetchurl {
     url = "mirror://apache/mesos/${version}/${name}.tar.gz";
-    sha256 = "1v5xpn4wal4vcrvcklchx9slkpa8xlwqkdbnxzy9zkzpq5g3arxr";
+    sha256 = "147iq7vwi09kqblx1h8r6lkrg9g50i257qk1cph1zr5j3rncz7l8";
   };
 
   patches = [
     # https://reviews.apache.org/r/36610/
     ./rb36610.patch
+    ./maven_repo.patch
   ];
 
   buildInputs = [
-    makeWrapper autoconf automake114x libtool curl sasl jdk maven
+    makeWrapper autoconf automake115x libtool curl sasl jdk maven
     python wrapPython boto setuptools leveldb
-    subversion apr glog
+    subversion apr glog openssl libevent
   ] ++ lib.optionals stdenv.isLinux [
     libnl
   ];
@@ -37,17 +40,18 @@ in stdenv.mkDerivation rec {
   ];
 
   preConfigure = ''
-    export MAVEN_OPTS="-Dmaven.repo.local=${mavenRepo}"
+    substituteInPlace src/Makefile.am --subst-var-by mavenRepo ${mavenRepo}
 
     substituteInPlace src/launcher/fetcher.cpp \
+      --replace '"gzip' '"${gzip}/bin/gzip'    \
       --replace '"tar' '"${gnutar}/bin/tar'    \
       --replace '"unzip' '"${unzip}/bin/unzip'
 
     substituteInPlace src/cli/mesos-scp        \
       --replace "'scp " "'${openssh}/bin/scp "
 
-    substituteInPlace src/cli/python/mesos/cli.py \
-      --replace "['mesos-resolve'" "['$out/bin/mesos-resolve'"
+    substituteInPlace src/python/cli/src/mesos/cli.py \
+     --replace "['mesos-resolve'" "['$out/bin/mesos-resolve'"
 
   '' + lib.optionalString (stdenv.isLinux) ''
 
@@ -57,17 +61,26 @@ in stdenv.mkDerivation rec {
     substituteInPlace src/linux/perf.cpp       \
       --replace '"perf ' '"${perf}/bin/perf '
 
-    substituteInPlace src/slave/containerizer/isolators/filesystem/shared.cpp \
+    substituteInPlace src/slave/containerizer/mesos/isolators/filesystem/shared.cpp \
       --replace '"mount ' '"${utillinux}/bin/mount ' \
 
-    substituteInPlace src/slave/containerizer/isolators/namespaces/pid.cpp \
+    substituteInPlace src/slave/containerizer/mesos/isolators/namespaces/pid.cpp \
       --replace '"mount ' '"${utillinux}/bin/mount ' \
 
-    substituteInPlace src/slave/containerizer/isolators/network/port_mapping.cpp \
+    substituteInPlace src/slave/containerizer/mesos/isolators/network/port_mapping.cpp \
       --replace '"tc ' '"${iproute}/bin/tc '   \
       --replace '"ip ' '"${iproute}/bin/ip '   \
       --replace '"mount ' '"${utillinux}/bin/mount ' \
       --replace '/bin/sh' "${stdenv.shell}"
+    
+    substituteInPlace src/launcher/executor.cpp \
+      --replace '"sh"' '"${bash}/bin/bash"'
+    
+    substituteInPlace src/slave/containerizer/mesos/launch.cpp \
+      --replace '"sh"' '"${bash}/bin/bash"'
+    
+    substituteInPlace src/linux/systemd.cpp \
+      --replace 'os::realpath("/sbin/init")' '"${systemd}/lib/systemd/systemd"'
   '';
 
   configureFlags = [
@@ -79,6 +92,10 @@ in stdenv.mkDerivation rec {
     "--with-glog=${glog}"
     "--enable-optimize"
     "--disable-python-dependency-install"
+    "--enable-ssl"
+    "--with-ssl=${openssl}"
+    "--enable-libevent"
+    "--with-libevent=${libevent}"
   ] ++ lib.optionals stdenv.isLinux [
     "--with-network-isolator"
   ];
@@ -107,6 +124,14 @@ in stdenv.mkDerivation rec {
       --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
   '';
 
   postFixup = ''
@@ -127,7 +152,7 @@ in stdenv.mkDerivation rec {
     # wrap the python programs
     for prog in mesos-cat mesos-ps mesos-scp mesos-tail; do
       wrapProgram "$out/bin/$prog" \
-        --prefix PYTHONPATH ":" "$out/libexec/mesos/python"
+        --prefix PYTHONPATH ":" "$out/lib/${python.libPrefix}/site-packages"
       true
     done
   '';
@@ -136,7 +161,7 @@ in stdenv.mkDerivation rec {
     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 offline rushmorem ];
+    maintainers = with maintainers; [ cstrahan kevincox offline rushmorem ];
     platforms   = platforms.linux;
   };
 }
diff --git a/pkgs/applications/networking/cluster/mesos/maven_repo.patch b/pkgs/applications/networking/cluster/mesos/maven_repo.patch
new file mode 100644
index 000000000000..9ee12976fde1
--- /dev/null
+++ b/pkgs/applications/networking/cluster/mesos/maven_repo.patch
@@ -0,0 +1,13 @@
+diff --git a/src/Makefile.am b/src/Makefile.am
+index ae2740a..1df91a7 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -1310,7 +1310,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) -f mesos.pom clean package
++	@cd $(abs_top_builddir)/src/java && $(MVN) -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 a/pkgs/applications/networking/cluster/panamax/api/default.nix b/pkgs/applications/networking/cluster/panamax/api/default.nix
index 6e20f7c23038..ee74e665b0c7 100644
--- a/pkgs/applications/networking/cluster/panamax/api/default.nix
+++ b/pkgs/applications/networking/cluster/panamax/api/default.nix
@@ -62,7 +62,6 @@ stdenv.mkDerivation rec {
       --prefix "PATH" : "$out/share/panamax-api/bin:${env.ruby}/bin:$PATH" \
       --prefix "HOME" : "$out/share/panamax-api" \
       --prefix "GEM_HOME" : "${env}/${env.ruby.gemPath}" \
-      --prefix "SSL_CERT_FILE" : /etc/ssl/certs/ca-certificates.crt \
       --prefix "GEM_PATH" : "$out/share/panamax-api:${bundler}/${env.ruby.gemPath}"
   '';
 
diff --git a/pkgs/applications/networking/cluster/spark/default.nix b/pkgs/applications/networking/cluster/spark/default.nix
index 1147c4b64a19..a0abe4f31422 100644
--- a/pkgs/applications/networking/cluster/spark/default.nix
+++ b/pkgs/applications/networking/cluster/spark/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, makeWrapper, jre, pythonPackages
+{ stdenv, fetchzip, makeWrapper, jre, pythonPackages
 , mesosSupport ? true, mesos
 }:
 
@@ -6,11 +6,11 @@ with stdenv.lib;
 
 stdenv.mkDerivation rec {
   name    = "spark-${version}";
-  version = "1.4.0";
+  version = "1.6.0";
 
-  src = fetchurl {
+  src = fetchzip {
     url    = "mirror://apache/spark/${name}/${name}-bin-cdh4.tgz";
-    sha256 = "1w60xzzg9mcymin1pmqwx1mvcqmdpfyxhd2dmw5alhnrzi21ycxi";
+    sha256 = "0waq8xx4bjj1yvfbadv1gdvz8s4kh5zasicv2n5623ld6lj7zgad";
   };
 
   buildInputs = [ makeWrapper jre pythonPackages.python pythonPackages.numpy ]
@@ -18,9 +18,13 @@ stdenv.mkDerivation rec {
 
   untarDir = "${name}-bin-cdh4";
   installPhase = ''
-    mkdir -p $out/{lib/${untarDir}/conf,bin}
+    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}"
@@ -33,6 +37,7 @@ stdenv.mkDerivation rec {
     for n in $(find $out/lib/${untarDir}/bin -type f ! -name "*.*"); do
       makeWrapper "$n" "$out/bin/$(basename $n)"
     done
+    ln -s $out/lib/${untarDir}/lib/spark-assembly-*.jar $out/share/java
   '';
 
   meta = {
diff --git a/pkgs/applications/networking/cluster/taktuk/default.nix b/pkgs/applications/networking/cluster/taktuk/default.nix
new file mode 100644
index 000000000000..313e1af707b8
--- /dev/null
+++ b/pkgs/applications/networking/cluster/taktuk/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, perl , openssh}:
+
+stdenv.mkDerivation rec {
+  version = "3.7.5";
+  name = "taktuk-${version}";
+
+  buildInputs = [ perl ];
+
+  src = fetchurl {
+    url = "https://gforge.inria.fr/frs/download.php/33412/${name}.tar.gz";
+    sha256 = "d96ef6c63d77f32339066f143ef7e0bc00041e10724254bf15787746ad1f1070";
+  };
+
+  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/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix
index 8030ab313a81..a180e2a01edb 100644
--- a/pkgs/applications/networking/dropbox/default.nix
+++ b/pkgs/applications/networking/dropbox/default.nix
@@ -20,11 +20,11 @@
 
 let
   # NOTE: When updating, please also update in current stable, as older versions stop working
-  version = "3.12.6";
+  version = "3.14.7";
   sha256 =
     {
-      "x86_64-linux" = "16d0g9bygvaixv4r42p72z6a6wqhkf5qzb058lijih93zjr8zjlj";
-      "i686-linux" = "1pgqz6axzzyaahql01g0l80an39hd9j4dnq0vfavwvb2qkb27dph";
+      "x86_64-linux" = "1pwmghpr0kyca2biysyk90kk9k6ffv4i95vs5rq96vc0zbckws6n";
+      "i686-linux" = "08yqrxh09cfd80kbiq1f2sirx9s85acij4khpklvvwrnf2x1i1zm";
     }."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
 
   arch =
diff --git a/pkgs/applications/networking/dyndns/cfdyndns/default.nix b/pkgs/applications/networking/dyndns/cfdyndns/default.nix
new file mode 100644
index 000000000000..43d257d7b0ef
--- /dev/null
+++ b/pkgs/applications/networking/dyndns/cfdyndns/default.nix
@@ -0,0 +1,30 @@
+{ 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";
+  };
+
+  depsSha256 = "0whs3fgmpb6g1mjajs3qs9g613x5dal4x6ghzzkpl73a9pgydkpn";
+
+  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 ];
+  };
+}
diff --git a/pkgs/applications/networking/feedreaders/canto-curses/default.nix b/pkgs/applications/networking/feedreaders/canto-curses/default.nix
index 8db1dac3b4b6..37736d6edd78 100644
--- a/pkgs/applications/networking/feedreaders/canto-curses/default.nix
+++ b/pkgs/applications/networking/feedreaders/canto-curses/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, python34Packages, readline, ncurses, canto-daemon }:
 
-python34Packages.buildPythonPackage rec {
+python34Packages.buildPythonApplication rec {
   version = "0.9.6";
   name = "canto-curses-${version}";
 
diff --git a/pkgs/applications/networking/feedreaders/canto-daemon/default.nix b/pkgs/applications/networking/feedreaders/canto-daemon/default.nix
index 0de38c259a34..b6f0ff19dc33 100644
--- a/pkgs/applications/networking/feedreaders/canto-daemon/default.nix
+++ b/pkgs/applications/networking/feedreaders/canto-daemon/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchFromGitHub, python34Packages, }:
 
-python34Packages.buildPythonPackage rec {
+python34Packages.buildPythonApplication rec {
   version = "0.9.5";
   name = "canto-daemon-${version}";
   namePrefix = "";
diff --git a/pkgs/applications/networking/feedreaders/rawdog/default.nix b/pkgs/applications/networking/feedreaders/rawdog/default.nix
index e5e8f823d277..eca53ccf2ec0 100644
--- a/pkgs/applications/networking/feedreaders/rawdog/default.nix
+++ b/pkgs/applications/networking/feedreaders/rawdog/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, pythonPackages }:
 
-pythonPackages.buildPythonPackage rec {
+pythonPackages.buildPythonApplication rec {
   name = "rawdog-${version}";
   version = "2.21";
 
diff --git a/pkgs/applications/networking/ftp/filezilla/default.nix b/pkgs/applications/networking/ftp/filezilla/default.nix
index 6c8df2fcd65b..57b93bfd6568 100644
--- a/pkgs/applications/networking/ftp/filezilla/default.nix
+++ b/pkgs/applications/networking/ftp/filezilla/default.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext
-, pkgconfig, xdg_utils, gtk2, sqlite, pugixml }:
+, pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla }:
 
-let version = "3.14.1"; in
+let version = "3.16.0"; in
 stdenv.mkDerivation {
   name = "filezilla-${version}";
 
   src = fetchurl {
     url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
-    sha256 = "0v6lb7miy6jbnswii816na8818xqxlvs1vadnii21xfmrsv7225i";
+    sha256 = "0ilv4xhgav4srx6iqn0v0kv8rifgkysyx1hb9bnm45dc0skmbgbx";
   };
 
   configureFlags = [
@@ -16,7 +16,7 @@ stdenv.mkDerivation {
 
   buildInputs = [
     dbus gnutls wxGTK30 libidn tinyxml gettext pkgconfig xdg_utils gtk2 sqlite
-    pugixml ];
+    pugixml libfilezilla ];
 
   meta = with stdenv.lib; {
     homepage = http://filezilla-project.org/;
diff --git a/pkgs/applications/networking/instant-messengers/baresip/default.nix b/pkgs/applications/networking/instant-messengers/baresip/default.nix
index a2f9ebc83173..2935979ebb9a 100644
--- a/pkgs/applications/networking/instant-messengers/baresip/default.nix
+++ b/pkgs/applications/networking/instant-messengers/baresip/default.nix
@@ -4,11 +4,11 @@
 , gsm, speex, portaudio, spandsp, libuuid
 }:
 stdenv.mkDerivation rec {
-  version = "0.4.16";
+  version = "0.4.17";
   name = "baresip-${version}";
   src=fetchurl {
     url = "http://www.creytiv.com/pub/baresip-${version}.tar.gz";
-    sha256 = "04a9d7il39b1kfqh7al0g0q8v32hphgjx8gkixrlp5qsqlzvk876";
+    sha256 = "106nagdyayyxj3q68bs3fsps5wnwzjh82vcmy98fp42j33q6yzny";
   };
   buildInputs = [zlib openssl libre librem pkgconfig
     cairo mpg123 gstreamer gst_ffmpeg gst_plugins_base gst_plugins_bad gst_plugins_good
diff --git a/pkgs/applications/networking/instant-messengers/blink/default.nix b/pkgs/applications/networking/instant-messengers/blink/default.nix
index ebb63967b008..7a2c6d7c0dca 100644
--- a/pkgs/applications/networking/instant-messengers/blink/default.nix
+++ b/pkgs/applications/networking/instant-messengers/blink/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, pythonPackages, pyqt4, cython, libvncserver, zlib, twisted
 , gnutls, libvpx }:
 
-pythonPackages.buildPythonPackage rec {
+pythonPackages.buildPythonApplication rec {
   name = "blink-${version}";
   version = "1.4.2";
   
diff --git a/pkgs/applications/networking/instant-messengers/choqok/default.nix b/pkgs/applications/networking/instant-messengers/choqok/default.nix
index 9b16404b6208..a50779f53dd0 100644
--- a/pkgs/applications/networking/instant-messengers/choqok/default.nix
+++ b/pkgs/applications/networking/instant-messengers/choqok/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
   name = "${pn}-${v}";
 
   src = fetchurl {
-    url = "http://downloads.sourceforge.net/project/choqok/Choqok/choqok-1.5.tar.xz";
+    url = "mirror://sourceforge/project/choqok/Choqok/choqok-1.5.tar.xz";
     sha256 = "5cb97ac4cdf9db4699bb7445a9411393073d213fea649ab0713f659f1308efe4";
   };
 
diff --git a/pkgs/applications/networking/instant-messengers/mcabber/default.nix b/pkgs/applications/networking/instant-messengers/mcabber/default.nix
index abe9b78904f0..f32bdf96257c 100644
--- a/pkgs/applications/networking/instant-messengers/mcabber/default.nix
+++ b/pkgs/applications/networking/instant-messengers/mcabber/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "mcabber-${version}";
-  version = "1.0.1";
+  version = "1.0.2";
 
   src = fetchurl {
     url = "http://mcabber.com/files/mcabber-${version}.tar.bz2";
-    sha256 = "14rd17rs26knmwinfv63w2xzlkj5ygvhicx95h0mai4lpji4b6jp";
+    sha256 = "1phzfsl6cfzaga140dm8bb8q678j0qsw29cc03rw4vkcxa8kh577";
   };
 
   buildInputs = [ openssl ncurses pkgconfig glib loudmouth libotr gpgme ];
diff --git a/pkgs/applications/networking/instant-messengers/pidgin/default.nix b/pkgs/applications/networking/instant-messengers/pidgin/default.nix
index ebb82a782625..e7266a93350b 100644
--- a/pkgs/applications/networking/instant-messengers/pidgin/default.nix
+++ b/pkgs/applications/networking/instant-messengers/pidgin/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, pkgconfig, gtk, gtkspell, aspell
-, gstreamer, gst_plugins_base, startupnotification, gettext
+{ stdenv, fetchurl, makeWrapper, pkgconfig, gtk, gtkspell, aspell
+, gstreamer, gst_plugins_base, gst_plugins_good, startupnotification, gettext
 , perl, perlXMLParser, libxml2, nss, nspr, farsight2
 , libXScrnSaver, ncurses, avahi, dbus, dbus_glib, intltool, libidn
 , lib, python, libICE, libXext, libSM
@@ -22,9 +22,11 @@ stdenv.mkDerivation rec {
 
   inherit nss ncurses;
 
+  nativeBuildInputs = [ makeWrapper ];
+
   buildInputs = [
     gtkspell aspell
-    gstreamer gst_plugins_base startupnotification
+    gstreamer gst_plugins_base gst_plugins_good startupnotification
     libxml2 nss nspr farsight2
     libXScrnSaver ncurses python
     avahi dbus dbus_glib intltool libidn
@@ -54,6 +56,11 @@ stdenv.mkDerivation rec {
 
   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;
diff --git a/pkgs/applications/networking/instant-messengers/qtox/default.nix b/pkgs/applications/networking/instant-messengers/qtox/default.nix
index 72619e417adb..541fb5727ced 100644
--- a/pkgs/applications/networking/instant-messengers/qtox/default.nix
+++ b/pkgs/applications/networking/instant-messengers/qtox/default.nix
@@ -1,19 +1,21 @@
-{ stdenv, fetchgit, pkgconfig, libtoxcore-dev, openal, opencv,
+{ stdenv, fetchFromGitHub, pkgconfig, libtoxcore-dev, openal, opencv,
   libsodium, libXScrnSaver, glib, gdk_pixbuf, gtk2, cairo,
   pango, atk, qrencode, ffmpeg, filter-audio, makeWrapper,
   qtbase, qtsvg, qttools, qttranslations, sqlcipher }:
 
 let
-  revision = "8b671916abdcc1d553a367a502b23ec4ea7568a1";
+  version = "1.2.4";
+  revision = "v${version}";
 in
 
 stdenv.mkDerivation rec {
-  name = "qtox-dev-20151221";
+  name = "qtox-${version}";
 
-  src = fetchgit {
-      url = "https://github.com/tux3/qTox.git";
-      rev = "${revision}";
-      md5 = "a93a63d35e506be4b21abda0986f19e7";
+  src = fetchFromGitHub {
+      owner = "tux3";
+      repo = "qTox";
+      rev = revision;
+      sha256 = "0iqnl00kmbpf3pn6z38n3cjzzsqpw2793j60c24kkrydapihknz9";
   };
 
   buildInputs =
@@ -37,6 +39,7 @@ stdenv.mkDerivation rec {
     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags cairo)"
     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags pango)"
     export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags atk)"
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE $(pkg-config --cflags sqlcipher)"
   '';
 
   configurePhase = ''
diff --git a/pkgs/applications/networking/instant-messengers/ricochet/default.nix b/pkgs/applications/networking/instant-messengers/ricochet/default.nix
index 89487e5bf27e..81e8d1b76a9c 100644
--- a/pkgs/applications/networking/instant-messengers/ricochet/default.nix
+++ b/pkgs/applications/networking/instant-messengers/ricochet/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   name = "ricochet-${version}";
-  version = "1.1.1";
+  version = "1.1.2";
 
   src = fetchurl {
     url = "https://github.com/ricochet-im/ricochet/archive/v${version}.tar.gz";
-    sha256 = "0y79igzgl9xn00981zcyxdlks7vnqxhb4rq3x8gwxm0yr98p39ms";
+    sha256 = "1szb5vmlqal0vhan87kgbks184f7xbfay1hr3d3vm8r1lvcjjfkr";
   };
 
   desktopItem = makeDesktopItem {
diff --git a/pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix b/pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix
index 507094f7c055..ec188e982843 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/cutegram/default.nix
@@ -1,31 +1,37 @@
-{ stdenv, fetchFromGitHub
-, qtbase, qtquick1, qtmultimedia, qtquickcontrols, qtgraphicaleffects, makeQtWrapper
-, telegram-qml, libqtelegram-aseman-edition }:
+{ stdenv, fetchgit
+, qtbase, qtmultimedia, qtquick1, qtquickcontrols
+, qtimageformats, qtgraphicaleffects
+, telegram-qml, libqtelegram-aseman-edition
+, gst_plugins_base, gst_plugins_good, gst_plugins_bad, gst_plugins_ugly
+, makeQtWrapper }:
 
 stdenv.mkDerivation rec {
-  name = "cutegram-${version}";
-  version = "2.7.0-stable";
+  name = "cutegram-${meta.version}";
 
-  src = fetchFromGitHub {
-    owner = "Aseman-Land";
-    repo = "Cutegram";
-    rev = "v${version}";
-    sha256 = "0qhy30gb8zdrphz1b7zcnv8hmm5fd5qwlvrg7wpsh3hk5niz3zxk";
+  src = fetchgit {
+    url = "https://github.com/Aseman-Land/Cutegram.git";
+    rev = "1dbe2792fb5a1760339379907f906e236c09db84";
+    sha256 = "080153bpa92jpi0zdrfajrn0yqy3jp8m4704sirbz46dv7471rzl";
   };
-  # TODO appindicator, for system tray plugin
-  buildInputs = [ qtbase qtquick1 qtmultimedia qtquickcontrols qtgraphicaleffects telegram-qml libqtelegram-aseman-edition ];
+
+  buildInputs =
+  [ qtbase qtmultimedia qtquick1 qtquickcontrols
+    qtimageformats qtgraphicaleffects
+    telegram-qml libqtelegram-aseman-edition 
+    gst_plugins_base gst_plugins_good gst_plugins_bad gst_plugins_ugly ];
   nativeBuildInputs = [ makeQtWrapper ];
   enableParallelBuild = true;
 
-  fixupPhase = "wrapQtProgram $out/bin/cutegram";
-
   configurePhase = "qmake -r PREFIX=$out";
 
+  fixupPhase = "wrapQtProgram $out/bin/cutegram";
+
   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 = [ maintainers.profpatsch ];
+    maintainers = with maintainers; [ profpatsch AndersonTorres ];
   };
-
 }
+#TODO: appindicator, for system tray plugin (by @profpatsch)
diff --git a/pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix b/pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix
index 8166514bb3ac..957c59b88e55 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/libqtelegram-aseman-edition/default.nix
@@ -2,14 +2,13 @@
 , qtbase, qtmultimedia, qtquick1 }:
 
 stdenv.mkDerivation rec {
-  name = "libqtelegram-aseman-edition-${version}";
-  version = "6.0";
+  name = "libqtelegram-aseman-edition-${meta.version}";
 
   src = fetchFromGitHub {
     owner = "Aseman-Land";
     repo = "libqtelegram-aseman-edition";
-    rev = "v${version}";
-    sha256 = "17hlxf43xwic8m06q3gwbxjpvz31ks6laffjw6ny98d45zfnfwra";
+    rev = "v${meta.version}-stable";
+    sha256 = "1pfd4pvh51639zk9shv1s4f6pf0ympnhar8a302vhrkga9i4cbx6";
   };
 
   buildInputs = [ qtbase qtmultimedia qtquick1 ];
@@ -25,6 +24,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with stdenv.lib; {
+    version = "6.1";
     description = "A fork of libqtelegram by Aseman, using qmake";
     homepage = src.meta.homepage;
     license = stdenv.lib.licenses.gpl3;
diff --git a/pkgs/applications/networking/instant-messengers/telegram/telegram-qml/default.nix b/pkgs/applications/networking/instant-messengers/telegram/telegram-qml/default.nix
index 6bf550d4766b..aa442cbe8b2d 100644
--- a/pkgs/applications/networking/instant-messengers/telegram/telegram-qml/default.nix
+++ b/pkgs/applications/networking/instant-messengers/telegram/telegram-qml/default.nix
@@ -3,17 +3,16 @@
 , libqtelegram-aseman-edition }:
 
 stdenv.mkDerivation rec {
-  name = "telegram-qml-${version}";
-  version = "0.9.1-stable";
+  name = "telegram-qml-${meta.version}";
 
   src = fetchFromGitHub {
     owner = "Aseman-Land";
     repo = "TelegramQML";
-    rev = "v${version}";
-    sha256 = "077j06lfr6qccqv664hn0ln023xlh5cfm50kapjc2inapxj2yqmn";
+    rev = "v${meta.version}";
+    sha256 = "0j8vn845f2virvddk9yjbljy6vkr9ikyn6iy7hpj8nvr2xls3499";
   };
 
-  buildInputs = [ qtbase qtmultimedia qtquick1 libqtelegram-aseman-edition ];
+  propagatedBuildInputs = [ qtbase qtmultimedia qtquick1 libqtelegram-aseman-edition ];
   enableParallelBuild = true;
 
   patchPhase = ''
@@ -26,6 +25,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with stdenv.lib; {
+    version = "0.9.2";
     description = "Telegram API tools for QtQml and Qml";
     homepage = src.meta.homepage;
     license = stdenv.lib.licenses.gpl3;
diff --git a/pkgs/applications/networking/instant-messengers/tkabber/default.nix b/pkgs/applications/networking/instant-messengers/tkabber/default.nix
index f9209f28cf20..9c84e60601bb 100644
--- a/pkgs/applications/networking/instant-messengers/tkabber/default.nix
+++ b/pkgs/applications/networking/instant-messengers/tkabber/default.nix
@@ -40,11 +40,7 @@ let
   } // removeAttrs attrs [ "name" "sha256" ]);
 
 in mkTkabber (main // {
-  postPatch = ''
-    substituteInPlace login.tcl --replace \
-      "custom::defvar loginconf(sslcacertstore) \"\"" \
-      "custom::defvar loginconf(sslcacertstore) \$env(SSL_CERT_FILE)"
-  '' + optionalString (theme != null) ''
+  postPatch = optionalString (theme != null) ''
     themePath="$out/share/doc/tkabber/examples/xrdb/${theme}.xrdb"
     sed -i '/^if.*load_default_xrdb/,/^}$/ {
       s@option readfile \(\[fullpath [^]]*\]\)@option readfile "'"$themePath"'"@
diff --git a/pkgs/applications/networking/instant-messengers/utox/default.nix b/pkgs/applications/networking/instant-messengers/utox/default.nix
index 61b7e8ec5105..55ec1560c5e5 100644
--- a/pkgs/applications/networking/instant-messengers/utox/default.nix
+++ b/pkgs/applications/networking/instant-messengers/utox/default.nix
@@ -1,41 +1,23 @@
-{ stdenv, fetchFromGitHub, pkgconfig, libtoxcore-dev, dbus, libvpx, libX11, openal, freetype, libv4l
+{ stdenv, fetchFromGitHub, pkgconfig, libtoxcore-dev, filter-audio, dbus, libvpx, libX11, openal, freetype, libv4l
 , libXrender, fontconfig, libXext, libXft, utillinux, git, libsodium }:
 
-let
-
-  filteraudio = stdenv.mkDerivation rec {
-    name = "filter_audio-20150516";
-
-    src = fetchFromGitHub {
-      owner = "irungentoo";
-      repo = "filter_audio";
-      rev = "612c5a102550c614e4c8f859e753ea64c0b7250c";
-      sha256 = "0bmf8dxnr4vb6y36lvlwqd5x68r4cbsd625kbw3pypm5yqp0n5na";
-    };
-
-    buildInputs = [ utillinux ];
-
-    doCheck = false;
-
-    makeFlags = "PREFIX=$(out)";
-  };
-
-in stdenv.mkDerivation rec {
-  name = "utox-dev-20151220";
+stdenv.mkDerivation rec {
+  name = "utox-${version}";
+  version = "0.5.0";
 
   src = fetchFromGitHub {
     owner = "GrayHatter";
     repo = "uTox";
-    rev = "7e2907470835746b6819d631b48dd54bc9c4de66";
+    rev = "v${version}";
     sha256 = "074wa0np8hyqwy9xqgyyds94pdfv2i1jh019m98d8apxc5vn36wk";
   };
 
   buildInputs = [ pkgconfig libtoxcore-dev dbus libvpx libX11 openal freetype
-                  libv4l libXrender fontconfig libXext libXft filteraudio 
+                  libv4l libXrender fontconfig libXext libXft filter-audio
                   git libsodium ];
 
   doCheck = false;
-  
+
   makeFlags = "PREFIX=$(out)";
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/networking/irc/weechat/default.nix b/pkgs/applications/networking/irc/weechat/default.nix
index a781a8ceb353..54bba77b182b 100644
--- a/pkgs/applications/networking/irc/weechat/default.nix
+++ b/pkgs/applications/networking/irc/weechat/default.nix
@@ -1,8 +1,24 @@
-{ stdenv, fetchurl, ncurses, openssl, perl, python, aspell, gnutls
-, zlib, curl , pkgconfig, libgcrypt, ruby, lua5, tcl, guile
-, pythonPackages, cmake, makeWrapper, libobjc, libiconv
+{ stdenv, fetchurl, ncurses, openssl, aspell, gnutls
+, zlib, curl , pkgconfig, libgcrypt
+, cmake, makeWrapper, libobjc, libiconv
+, guileSupport ? true, guile
+, luaSupport ? true, lua5
+, perlSupport ? true, perl
+, pythonPackages
+, rubySupport ? true, ruby
+, tclSupport ? true, tcl
 , extraBuildInputs ? [] }:
 
+assert guileSupport -> guile != null;
+assert luaSupport -> lua5 != null;
+assert perlSupport -> perl != null;
+assert rubySupport -> ruby != null;
+assert tclSupport -> tcl != null;
+
+let
+  inherit (pythonPackages) python pycrypto pync;
+in
+
 stdenv.mkDerivation rec {
   version = "1.4";
   name = "weechat-${version}";
@@ -12,14 +28,26 @@ stdenv.mkDerivation rec {
     sha256 = "1m6xq6izcac5186xvvmm8znfjzrg9hq42p69jabdvv7cri4rjvg0";
   };
 
-  cmakeFlags = stdenv.lib.optional stdenv.isDarwin
-    "-DICONV_LIBRARY=${libiconv}/lib/libiconv.dylib";
+  cmakeFlags = with stdenv.lib; []
+    ++ optional stdenv.isDarwin "-DICONV_LIBRARY=${libiconv}/lib/libiconv.dylib"
+    ++ optional (!guileSupport) "-DENABLE_GUILE=OFF"
+    ++ optional (!luaSupport)   "-DENABLE_LUA=OFF"
+    ++ optional (!perlSupport)  "-DENABLE_PERL=OFF"
+    ++ optional (!rubySupport)  "-DENABLE_RUBY=OFF"
+    ++ optional (!tclSupport)   "-DENABLE_TCL=OFF"
+    ;
 
-  buildInputs = 
-    [ ncurses perl python openssl aspell gnutls zlib curl pkgconfig
-      libgcrypt ruby lua5 tcl guile pythonPackages.pycrypto makeWrapper
-      cmake ]
-    ++ stdenv.lib.optionals stdenv.isDarwin [ pythonPackages.pync libobjc ]
+  buildInputs = with stdenv.lib; [
+      ncurses python openssl aspell gnutls zlib curl pkgconfig
+      libgcrypt pycrypto makeWrapper
+      cmake
+    ]
+    ++ optionals stdenv.isDarwin [ pync libobjc ]
+    ++ optional  guileSupport    guile
+    ++ optional  luaSupport      lua5
+    ++ optional  perlSupport     perl
+    ++ optional  rubySupport     ruby
+    ++ optional  tclSupport      tcl
     ++ extraBuildInputs;
 
   NIX_CFLAGS_COMPILE = "-I${python}/include/${python.libPrefix} -DCA_FILE=/etc/ssl/certs/ca-certificates.crt";
diff --git a/pkgs/applications/networking/mailreaders/mailnag/default.nix b/pkgs/applications/networking/mailreaders/mailnag/default.nix
index 4818de49e42b..673856e062a8 100644
--- a/pkgs/applications/networking/mailreaders/mailnag/default.nix
+++ b/pkgs/applications/networking/mailreaders/mailnag/default.nix
@@ -1,9 +1,9 @@
-{ stdenv, buildPythonPackage, fetchurl, gettext, gtk3, pythonPackages
+{ stdenv, buildPythonApplication, fetchurl, gettext, gtk3, pythonPackages
 , gdk_pixbuf, libnotify, gst_all_1
 , libgnome_keyring3 ? null, networkmanager ? null
 }:
 
-buildPythonPackage rec {
+buildPythonApplication rec {
   name = "mailnag-${version}";
   version = "1.1.0";
 
diff --git a/pkgs/applications/networking/mailreaders/mailpile/default.nix b/pkgs/applications/networking/mailreaders/mailpile/default.nix
index b3ca52999efb..5936ae6e878e 100644
--- a/pkgs/applications/networking/mailreaders/mailpile/default.nix
+++ b/pkgs/applications/networking/mailreaders/mailpile/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchgit, pythonPackages, gnupg1orig, makeWrapper, openssl }:
 
-pythonPackages.buildPythonPackage rec {
+pythonPackages.buildPythonApplication rec {
   name = "mailpile-${version}";
   version = "0.4.1";
 
diff --git a/pkgs/applications/networking/mailreaders/thunderbird-bin/sources.nix b/pkgs/applications/networking/mailreaders/thunderbird-bin/sources.nix
index b758bf996d26..19477d86a3c4 100644
--- a/pkgs/applications/networking/mailreaders/thunderbird-bin/sources.nix
+++ b/pkgs/applications/networking/mailreaders/thunderbird-bin/sources.nix
@@ -4,123 +4,123 @@
 # ruby generate_sources.rb > sources.nix
 
 {
-  version = "38.5.1";
+  version = "38.6.0";
   sources = [
-    { locale = "ar"; arch = "linux-i686"; sha256 = "428fb92fe6a30f528c13f59d321eb479638133b98692e9abb2821550312027ed"; }
-    { locale = "ar"; arch = "linux-x86_64"; sha256 = "aaa65b171336d8fac42d94f2b7e41ea286415ee0337afcff2c8dc55ea4d01d09"; }
-    { locale = "ast"; arch = "linux-i686"; sha256 = "432e71e48a46bc7e90bfac8820b470346fe6b95e8545a7b6a8b5e799c7658fb6"; }
-    { locale = "ast"; arch = "linux-x86_64"; sha256 = "d8ee8d92f9635396cfe8a27dc57b407a428a0fb210c849b5faa9d7a1458328db"; }
-    { locale = "be"; arch = "linux-i686"; sha256 = "19b33c2683b5ee20264533d64c717320fb82187074c1b4d42e902b3021ac8907"; }
-    { locale = "be"; arch = "linux-x86_64"; sha256 = "8b7659c5327cd6552c4a743cd92100bbdc10b6623021eab79265027b9a0f1550"; }
-    { locale = "bg"; arch = "linux-i686"; sha256 = "02a0d0858de83abb9c732787522b45e8cfad419b765a0922426197c9f9a00f9f"; }
-    { locale = "bg"; arch = "linux-x86_64"; sha256 = "dd0ae9d067365b66a55e337c6b294d672c997c88024b17223583d9ccfb667488"; }
-    { locale = "bn-BD"; arch = "linux-i686"; sha256 = "422b42cc56b3fda6aecece1e0d934f43970fa7a8dfed0bbe859bf0e7daf6f8fd"; }
-    { locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "f4edee91b6101aa4b8c308cf02d1cb926cff4beb44f840b86e0d01232dc5b88f"; }
-    { locale = "br"; arch = "linux-i686"; sha256 = "d64078fe9092e9288cb270b0d35be25a5d8d225f70d4a902d8a5c89b36b0a1a2"; }
-    { locale = "br"; arch = "linux-x86_64"; sha256 = "68b3234560f9678f3b9b1f11ccdfa2109026ca3dce321bb2732b024fbd77ce0e"; }
-    { locale = "ca"; arch = "linux-i686"; sha256 = "a7082da8adf2098449ecaf6750607e394fb03e3e1ba974852bf596c4dc961531"; }
-    { locale = "ca"; arch = "linux-x86_64"; sha256 = "6a81e6713b0b4e01d575c4709137eb8b50811f3ce4fb7222c3466e5dcedcd244"; }
-    { locale = "cs"; arch = "linux-i686"; sha256 = "512a02a544c522b59fd86705668264b2fa85fc738dd93878289230e05f38bd71"; }
-    { locale = "cs"; arch = "linux-x86_64"; sha256 = "809ff680e80ffc8b5aaa631b346d8a34df4b99362e048d16e4d415f32d721710"; }
-    { locale = "cy"; arch = "linux-i686"; sha256 = "c0a3b6f3e8b78e624a7b8f3d68185063fcc2cfb4b8f06942586a384de738eabb"; }
-    { locale = "cy"; arch = "linux-x86_64"; sha256 = "bba5556ed1f3873b9111d47ff978a2ca5fd43a48e7e32bf25cc7ad4650d5b37b"; }
-    { locale = "da"; arch = "linux-i686"; sha256 = "4b296fdd61f2cdf2d644503befafed114f5d18fd8e8bbd37d3f6a06275e8d11d"; }
-    { locale = "da"; arch = "linux-x86_64"; sha256 = "30fd49c129cee05a86a60147ea706286c0dd9a48fe6b43178d80b2a2726fcc48"; }
-    { locale = "de"; arch = "linux-i686"; sha256 = "814d073fc127b74d9edcace83c38ad2e80c74bafa327d2eac44de7673e0b2958"; }
-    { locale = "de"; arch = "linux-x86_64"; sha256 = "00dfd1ed1b981ba5bb66dc86ded8a7aee25e1a67d0c5e739a5ec252e4b4f0764"; }
-    { locale = "dsb"; arch = "linux-i686"; sha256 = "97473204548f40f6b806c1de5835477998f58ad4e9be8a1eb2bc7097def7ceb6"; }
-    { locale = "dsb"; arch = "linux-x86_64"; sha256 = "42042946079e486c24ff5e76c2e572d81a4e996dfb9ca37a9b19417933defd32"; }
-    { locale = "el"; arch = "linux-i686"; sha256 = "9056a466e7e99efa10b30be00d7f0ff2c64c077725a57397ea7462fa2de6bac0"; }
-    { locale = "el"; arch = "linux-x86_64"; sha256 = "06b223ca8ec5e47b2876c7261b94fbb82fefec50527a777802c74ebbc71c6256"; }
-    { locale = "en-GB"; arch = "linux-i686"; sha256 = "8f74bee700e9d6414d379e723e5be952725a96fc4155f1652701327fe36b493c"; }
-    { locale = "en-GB"; arch = "linux-x86_64"; sha256 = "dccdf5e29b19852895eccfd479c2d04d7ae3d7847af050028a6cada9700ef948"; }
-    { locale = "en-US"; arch = "linux-i686"; sha256 = "d2d564f048a9cbc9a956fb1b937c0d43758c97315fd19bde79d63bb0bdd7b9a5"; }
-    { locale = "en-US"; arch = "linux-x86_64"; sha256 = "70a8bdd408cea0d015a560969083445046c3a8e02c7777b2b22eedf6b46888b6"; }
-    { locale = "es-AR"; arch = "linux-i686"; sha256 = "c03ca2ea86db9dc6428e96f50cf8fc86343faa539b5ebff0e476f0e0bcb2c6c3"; }
-    { locale = "es-AR"; arch = "linux-x86_64"; sha256 = "eedc718bc25219803666e95870ce4a0ddfec7443392aa0f3840b2689bb09ab55"; }
-    { locale = "es-ES"; arch = "linux-i686"; sha256 = "962de04ebaa81296a04c84e1dd3574ec1ed5fe1784f1b0345b30fdf6de214301"; }
-    { locale = "es-ES"; arch = "linux-x86_64"; sha256 = "3821a77b83cfe174b10a9b472d8a4a29dc069a8e1c82b536923d90761fa31a4d"; }
-    { locale = "et"; arch = "linux-i686"; sha256 = "17ee3d2c863d7e8c0562a1ba75d7b1b6e469e93d3665aa2de662e98eaff1d921"; }
-    { locale = "et"; arch = "linux-x86_64"; sha256 = "84ffe20179728d1ab3dffd93428b330c6958b3c825ffdca6c8cf63dc831a7519"; }
-    { locale = "eu"; arch = "linux-i686"; sha256 = "424de9056f295b710be3db287a9ee48759efed25e311881750a49c1b30c33fe1"; }
-    { locale = "eu"; arch = "linux-x86_64"; sha256 = "5fdaafd1b691d29df5d1056555a052a0feeaa6d7b01a0383241bbc8b988da7d2"; }
-    { locale = "fi"; arch = "linux-i686"; sha256 = "1037c3d031d00eb4fea5aab50215108d0fcce6668d7226e594f47784a8aa3edb"; }
-    { locale = "fi"; arch = "linux-x86_64"; sha256 = "71f6a24995b16b1e5dfcdd5b3758940a69bf348430d71f800522bc1c0eeb6341"; }
-    { locale = "fr"; arch = "linux-i686"; sha256 = "095f6a9c8876aabbd890a97724060a704336605655a7b1feb890b05e051ae810"; }
-    { locale = "fr"; arch = "linux-x86_64"; sha256 = "97f3b49f91724608520202384d82accd3705290cb6c295dfd88d49ec33dd76c4"; }
-    { locale = "fy-NL"; arch = "linux-i686"; sha256 = "59be75d317a2ebef649adf7eff64a8e9706d5e6f58971e12ab3de3e9da306fe7"; }
-    { locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "b5c4dc6e07d17fb4150d04e5c377e4c2ec18fe6304fb84a2bb19bdf554113b4a"; }
-    { locale = "ga-IE"; arch = "linux-i686"; sha256 = "59afa36ca0b31e9f0cfdaedb5e49889ef1d5d1f9c08b6fb9e6cd21a282ecacae"; }
-    { locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "6e9c48d531cc65f08e08f54170721ce0cecde785978cbca0bffad6847433a5e3"; }
-    { locale = "gd"; arch = "linux-i686"; sha256 = "2c6e63a2c89f74df52d06c8bb6bd46871c04b4c91506c166acd28de1aeba8d8a"; }
-    { locale = "gd"; arch = "linux-x86_64"; sha256 = "73c4923a5a425e2b96cf1e1b05584e282f5802b76337a5180b9c89c0163fb47f"; }
-    { locale = "gl"; arch = "linux-i686"; sha256 = "4ca2c0ab487eb79272fcfe253cef93838eb57925bb2631c29de36f2510fedc1d"; }
-    { locale = "gl"; arch = "linux-x86_64"; sha256 = "7b731eb0ece93a1944ffd8dd7b0f91cad1292955e967a511ab72080b3dc66fdf"; }
-    { locale = "he"; arch = "linux-i686"; sha256 = "056cff554994ef984356b7fb27759548ac546c10b918c727e130adb970430018"; }
-    { locale = "he"; arch = "linux-x86_64"; sha256 = "5592613852a34b7b5990a06ba31b1713bb9b277a5472e153a26e780f0620f2c4"; }
-    { locale = "hr"; arch = "linux-i686"; sha256 = "abe18e183a2b26315dbad115c187eb56fe70daffd8eac3465e1ee2c3b2f364b6"; }
-    { locale = "hr"; arch = "linux-x86_64"; sha256 = "d657795e84fe1ca238e986438d5501e4baf628a890835258bcbd3a32040fef4c"; }
-    { locale = "hsb"; arch = "linux-i686"; sha256 = "806e9da32095fbb5dd6610f715006a3cf0732b69759e8b88d6c3f39617a9fd2c"; }
-    { locale = "hsb"; arch = "linux-x86_64"; sha256 = "3c0c1cdd739d1d82aef6ce864e0a65c735591acdb127a50ebdb8e5999a524b17"; }
-    { locale = "hu"; arch = "linux-i686"; sha256 = "a052932572784bdc90e8a16ffafa855a5817ea28bdd3365fa18f40685bb2f77e"; }
-    { locale = "hu"; arch = "linux-x86_64"; sha256 = "1f98b63f900ab64989ee8860ce3580394dad438078e574e4c7d997bf5a840fd9"; }
-    { locale = "hy-AM"; arch = "linux-i686"; sha256 = "b7148002a1f1790bbc52c1c3fbab837acc9a7681077aad115cc81bd05f1e1a33"; }
-    { locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "cc18eaa5b72c57438c11b8fd5a77f677218d1323ad844f8eb8d294132e40d86c"; }
-    { locale = "id"; arch = "linux-i686"; sha256 = "a1c7fadbb96293391e99ee0abe16b20331a9ee274e5c56d5972a339ccf62b1da"; }
-    { locale = "id"; arch = "linux-x86_64"; sha256 = "7ac143a557c5f913966c81235f6dd398516c3e153e667442297cef82024f2af9"; }
-    { locale = "is"; arch = "linux-i686"; sha256 = "f884769780d273d7e921a236ad6fc21b1749ae8c1c483b9b57943e42bc23206e"; }
-    { locale = "is"; arch = "linux-x86_64"; sha256 = "b10fd3af349285bcecbf0334ec22b93b6811abb9c580f5a38e84b5dede4264d1"; }
-    { locale = "it"; arch = "linux-i686"; sha256 = "1ac48c611c6ae2163ae27970dcef5c20e1ba932a2210eec659ea31cb4967dfd1"; }
-    { locale = "it"; arch = "linux-x86_64"; sha256 = "23930f00a7b9b47d43a23611d4f804025d11aa489101c120449428d866179517"; }
-    { locale = "ja"; arch = "linux-i686"; sha256 = "148df7f75b69757a64427bb96bcb9a2a0d8f885b907130c1d7c519bf6e7a1718"; }
-    { locale = "ja"; arch = "linux-x86_64"; sha256 = "4992ae5d3f348648a9febadb058f558dce7659d18065e352a1d560e552d27e6e"; }
-    { locale = "ko"; arch = "linux-i686"; sha256 = "b4f9668d9d56b15c6af69d7a23716c70074adbb90100725c951d913682003789"; }
-    { locale = "ko"; arch = "linux-x86_64"; sha256 = "43f134ad246b5896a003cb75c73339cc27cc7bdf02584d5b5455a4606112a7a3"; }
-    { locale = "lt"; arch = "linux-i686"; sha256 = "b3e48defce4416d32c968056f07498c268428746c2e99f68c91c08cd623f2741"; }
-    { locale = "lt"; arch = "linux-x86_64"; sha256 = "f8cb85d3f033e6a7c6ea8d7af7e31604a3f67e2435557d108d8bff18a5612785"; }
-    { locale = "nb-NO"; arch = "linux-i686"; sha256 = "ebe6134f09bcd52b7da5461247372b5e352aa78b882039993f0f7e6d08e19047"; }
-    { locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "c2137e014c37c149dfe847dd4516af45307f1ee7ae9f915b48c78b882f7e4b0b"; }
-    { locale = "nl"; arch = "linux-i686"; sha256 = "d2edd221ef00a02a38b037f961671a8f82595ea6796556bbc5cb94041a2e131c"; }
-    { locale = "nl"; arch = "linux-x86_64"; sha256 = "af2110f44b303d5182140771001d3d10b9ed7b44c31261f740b15ea4caa21545"; }
-    { locale = "nn-NO"; arch = "linux-i686"; sha256 = "c0db7cd88d5f0e38e6683181729a2de5ba63abdc4d0af17fbd72de723c909426"; }
-    { locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "040da2abe7aaef427386e31aa24e67aeb389f8294f14f445ab68fb8714f74094"; }
-    { locale = "pa-IN"; arch = "linux-i686"; sha256 = "ca2e02b0ac8f4b5ab6b4af3e905a1c65274dd17bea6c4b84bfa0afa99f5bb6d3"; }
-    { locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "3324461c1d47872b96d6fcfdfe10971e70b7698789fa8a7b439d5d226f87d0fb"; }
-    { locale = "pl"; arch = "linux-i686"; sha256 = "2094e2136ccdac7572203772b0a2cfed2f78116e2ee72c7038137ca198b0f404"; }
-    { locale = "pl"; arch = "linux-x86_64"; sha256 = "59f9d72974f84c2b349a7fd7c614b7473b6dba4fdaf0c57b267369624b13f2b6"; }
-    { locale = "pt-BR"; arch = "linux-i686"; sha256 = "beeb965afb626565155ca1f882ed27fc5489ab650f3eee94064227c213aa9100"; }
-    { locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "a72296d59a7971aaba395fa058b8ecfa4889ccbede3ee0161744b70e848436df"; }
-    { locale = "pt-PT"; arch = "linux-i686"; sha256 = "b8e0925a64aab9e23bf13bd9b2afd1baab7d964e6c1c3af3973201fc6b7a71c9"; }
-    { locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "bd12cfcb485b85bc0444111f7bf7f1e9ecff42a1bf03515e46aeff668da690a8"; }
-    { locale = "rm"; arch = "linux-i686"; sha256 = "220767594e50de01d636d29d38ef87d0ad4871c718ba2f5e9c8f8bdc13023408"; }
-    { locale = "rm"; arch = "linux-x86_64"; sha256 = "298f69008f20a23eda68a92912fbd050eff73f806e0cb8ce0c40f1fc53b76fc2"; }
-    { locale = "ro"; arch = "linux-i686"; sha256 = "3be80143bb1affa8df3c94bcb048bcd2f22f39f60db02d2f9afeeb44b45c67ae"; }
-    { locale = "ro"; arch = "linux-x86_64"; sha256 = "715963ac282e8f972e22f3fcc5b51e03346f011b8848f16b8a8cb9b6a23c864c"; }
-    { locale = "ru"; arch = "linux-i686"; sha256 = "0c793708c8501df82582f5d820c65ee11a46819f012b7d616c7fd4b1424e7eef"; }
-    { locale = "ru"; arch = "linux-x86_64"; sha256 = "5f4fbfaa52b4eca748dd12da12c6bc38286e5fdee2fd81d337d926ea4e0df378"; }
-    { locale = "si"; arch = "linux-i686"; sha256 = "ede99dd26481f9864dbd0ad276f3b10a1bea8a2267a3f0055f10de4c185a3e3d"; }
-    { locale = "si"; arch = "linux-x86_64"; sha256 = "15ca9bb30fe45879bfaac936187951f36af45a134cdf756314e7c1b1d508db22"; }
-    { locale = "sk"; arch = "linux-i686"; sha256 = "9ac426f0148d232de2c11fb0404bfd317aa26d0fecca710c63dda52eb73841d5"; }
-    { locale = "sk"; arch = "linux-x86_64"; sha256 = "8f67b9449e4b0759b82d748c1c0aab3ba42da1c3643e1579f3f0e1cda00cf61f"; }
-    { locale = "sl"; arch = "linux-i686"; sha256 = "12d52efd990e472230cbee546b544f01b2aa7bf8e1812cc561102e9cba58bfa0"; }
-    { locale = "sl"; arch = "linux-x86_64"; sha256 = "432071992c94ae8964db97f02d7c26d1584ab6ba43a3bb87bb605d9933f37673"; }
-    { locale = "sq"; arch = "linux-i686"; sha256 = "b070ecb797dae27d66c449feb34c57d383f64ddbe6dc37cd836658e3e8c28e54"; }
-    { locale = "sq"; arch = "linux-x86_64"; sha256 = "065eebd594fa00315bd017f76eb35ff64e371347b346ec54eef6edbc738476b4"; }
-    { locale = "sr"; arch = "linux-i686"; sha256 = "a76a9b519fbfa5e3ac305522fe313c3f1c52c2bdb1c44878341a0ff5f50c5a36"; }
-    { locale = "sr"; arch = "linux-x86_64"; sha256 = "e90a8c3dd54d69de3e092d1e63288365807238ec3ab01383778bb10aa9799309"; }
-    { locale = "sv-SE"; arch = "linux-i686"; sha256 = "da60ffb3131d7ff150d9a2f70b1071d0399cfaf671003c5b5b598911561eddb8"; }
-    { locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "686162ef37b00757ff49784fb6c2fd04ea55103c78af6f97bf5e7e6be34cb46a"; }
-    { locale = "ta-LK"; arch = "linux-i686"; sha256 = "ad8702ca5223fd9a17dce9e71360299938f53548e357d93a5bc23d24cbec8039"; }
-    { locale = "ta-LK"; arch = "linux-x86_64"; sha256 = "f6178474338c75f1b216176ae40a9e09df68697d9cc1ccdc661293b51ae133ed"; }
-    { locale = "tr"; arch = "linux-i686"; sha256 = "54c88fd15417a271368a981b79467064a968993e7076e2f4a87f0cb280b4954f"; }
-    { locale = "tr"; arch = "linux-x86_64"; sha256 = "d1943ef072cfc40ab90d0b008527d6e4607db2299eb536573db5a7e832babb9c"; }
-    { locale = "uk"; arch = "linux-i686"; sha256 = "276ed6dac2090fdd53c967daadda3d39c8f05b70f6d91779af2998b446a831dd"; }
-    { locale = "uk"; arch = "linux-x86_64"; sha256 = "f18455e1df20364ff0c4e2f44397b068faf387f7efa25941f167750f349f93a5"; }
-    { locale = "vi"; arch = "linux-i686"; sha256 = "3a72f5935f32de88a0bf88eb5252864b19b8bdd1f01fa49b14d54021a88fb2cf"; }
-    { locale = "vi"; arch = "linux-x86_64"; sha256 = "3f53c378fce2c5a7245103510714b2d99b8915ef78452d469cbd4f0343a3767d"; }
-    { locale = "zh-CN"; arch = "linux-i686"; sha256 = "6ac29a8081a339f334ea0b22ac49b81d79d26a22995ea592f1a78fe9c66a4edc"; }
-    { locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "82733b4f96f42fe3d0fd7e429e8f23bd1aa059890a6403cc991b3236f31399c6"; }
-    { locale = "zh-TW"; arch = "linux-i686"; sha256 = "4d376644e762630bd7e9077d616cd4b4c0175ea3fd3df04c4c76ac489d87cecf"; }
-    { locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "0044c3e78014df76fd09009142d75858fd8ac5abea54920d52870bf2d6599310"; }
+    { locale = "ar"; arch = "linux-i686"; sha256 = "141b3e5a5a51b0ed8f11bc9233d19bccc3116e55d568eb4995bcd48c91ba3390"; }
+    { locale = "ar"; arch = "linux-x86_64"; sha256 = "f2841d9da85e788d868eb56a43baa8e7d72d40c9c82ca60f4f958b9285be5bc3"; }
+    { locale = "ast"; arch = "linux-i686"; sha256 = "aa52c0672bf8c2b28ae5efb26aa552592aad6c637b660f9cb4533cad72b9a4fc"; }
+    { locale = "ast"; arch = "linux-x86_64"; sha256 = "1a083214fc2f31e52b0d03bffbef64e364b77457e447ddc134dc363004768b03"; }
+    { locale = "be"; arch = "linux-i686"; sha256 = "f3e7653a7f9957e9722cf29a7a97b751ffc2b19bd4982ff603f6460afb07445d"; }
+    { locale = "be"; arch = "linux-x86_64"; sha256 = "55d7082b20da1bbe23b8d1a2e1e07f6a02f9dd96b065cab1a8a2acd086790d21"; }
+    { locale = "bg"; arch = "linux-i686"; sha256 = "132fb89107e653cb30e9f6fffbca6ced0451811080b89058a652dcb5187601f3"; }
+    { locale = "bg"; arch = "linux-x86_64"; sha256 = "03868dab14f8bd671eed93a05c50c3836bb047e4195a2b8e92d04d3cf3244c67"; }
+    { locale = "bn-BD"; arch = "linux-i686"; sha256 = "ffa2c116e814da8f0a5995f382de0b4d614e72b55ecc905185c014abea763851"; }
+    { locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "74631bb2d75687aefc6e8dfa9414176a92de7a22890704f6f84603703a3dd880"; }
+    { locale = "br"; arch = "linux-i686"; sha256 = "3942e35a9ea655ac365a4b00f70d8b97e7833e50d00d7d07e5ce851956f55f00"; }
+    { locale = "br"; arch = "linux-x86_64"; sha256 = "33dba57581571faac7cc11aeafda68fce323c9fc322a3c8e43cbce794489ab39"; }
+    { locale = "ca"; arch = "linux-i686"; sha256 = "5001132684f89e6e4c4ab8d22f37739da4465577e850bed4748ad3079a0b592e"; }
+    { locale = "ca"; arch = "linux-x86_64"; sha256 = "3cfad5f05320d179b575bc263ceecef0c9bfec08e7a3471dd779be8798f8f8e8"; }
+    { locale = "cs"; arch = "linux-i686"; sha256 = "14879dadca5936473b42ccefc2485707330aa7062bd1c2094adafee0dde83a50"; }
+    { locale = "cs"; arch = "linux-x86_64"; sha256 = "92f39de732f2264c5658e3282d0a4259b437f81277c926b3fe0a1c51bb18a27b"; }
+    { locale = "cy"; arch = "linux-i686"; sha256 = "e38d9c45558bbf1414efff8568b79ed58c0383329923944aca72bcd075c71967"; }
+    { locale = "cy"; arch = "linux-x86_64"; sha256 = "43f11c8ea150c1b58031fd765fc5d789e56df68ef36dd989a8a67135d9a1e501"; }
+    { locale = "da"; arch = "linux-i686"; sha256 = "9815c3fb3c95d4fb73faeb9db10591a39131edcb846fb72b6c2b01ac132602f5"; }
+    { locale = "da"; arch = "linux-x86_64"; sha256 = "6435f69ebb748f2f81dfcd1da4d66030792e73735d11c788c4478cdb750de89d"; }
+    { locale = "de"; arch = "linux-i686"; sha256 = "d8601890fe1021c61b48cb755a98358fffb0e5c3de106d0408baa748c6e4ff21"; }
+    { locale = "de"; arch = "linux-x86_64"; sha256 = "96626e10573940ce9a77277f8776066e1f33d852ff1a9be25c613ea54b2ad3d0"; }
+    { locale = "dsb"; arch = "linux-i686"; sha256 = "c0cf3e5db343c031171cca6507839e18bb4232a498eb0ff87864c0d3f54c31d3"; }
+    { locale = "dsb"; arch = "linux-x86_64"; sha256 = "5c94f8200bf7e5bccdb4f454232707c1354d4cb87713648847d742d1d127b5bc"; }
+    { locale = "el"; arch = "linux-i686"; sha256 = "43b61ae50412d5df24f903bd1890be52164689b53ec9bbfe134b7bbb36952377"; }
+    { locale = "el"; arch = "linux-x86_64"; sha256 = "163e041e125f84db5f9d55f6e8a2e8d15b7ac6335187a55f00f7019b3038249c"; }
+    { locale = "en-GB"; arch = "linux-i686"; sha256 = "b34105daffdf9088fecd199e1525ebbc332ff6536487caa058d19daa4c7306c4"; }
+    { locale = "en-GB"; arch = "linux-x86_64"; sha256 = "ac54bf8c804d17ecebab6a865471ce5adf712466612eb435e5871a4ffcc7238a"; }
+    { locale = "en-US"; arch = "linux-i686"; sha256 = "2e60a2a5764cdee16659b125f7ad2dde7ff6e993c69a738d86fb39530e469328"; }
+    { locale = "en-US"; arch = "linux-x86_64"; sha256 = "f0b4b0d5a7f4b21845e76411cd75d59b0e34a341747cafcb3e871a00b1b2535e"; }
+    { locale = "es-AR"; arch = "linux-i686"; sha256 = "fa9de1698297336d3db8d7cc6c59ea1cad595c2d5caf8081f85fc217535d630d"; }
+    { locale = "es-AR"; arch = "linux-x86_64"; sha256 = "62bf96299b20de2b6ea17db2113fd8220c60507314d9c3dfbd2ef06557746298"; }
+    { locale = "es-ES"; arch = "linux-i686"; sha256 = "1e79df1375e29c6aaf2839584ee51e23a326587e02440c07f10969f82e29daa3"; }
+    { locale = "es-ES"; arch = "linux-x86_64"; sha256 = "e5ef4e579c83b1f982b5d071966b3c1be39b94aa128e0ef14f4244e51b19c6c9"; }
+    { locale = "et"; arch = "linux-i686"; sha256 = "110dc75c81abcca2199c2f6bee542fe0909bfbe678e91376a1413a81bac88edf"; }
+    { locale = "et"; arch = "linux-x86_64"; sha256 = "71f7f7d5d9025423438138a62728d3494f2227c3b1daf8945cbd20d65e7629b3"; }
+    { locale = "eu"; arch = "linux-i686"; sha256 = "ad2e6071fafe18f3db5d4af4d938450ec1a8f538e2a5efc7f8ce1d28f1f3dd66"; }
+    { locale = "eu"; arch = "linux-x86_64"; sha256 = "32c8b0e825912b97a36cedf19ead4eba8427e08ac059b4bb9fda15c568ce6cff"; }
+    { locale = "fi"; arch = "linux-i686"; sha256 = "203006ba5572a315f851e69e74779f92123df25d6a1964283bbf546c43ca0ecb"; }
+    { locale = "fi"; arch = "linux-x86_64"; sha256 = "f87904779b68a60aef440a7eb5cf490fe224bc25517d9fa463575fd35c4fc895"; }
+    { locale = "fr"; arch = "linux-i686"; sha256 = "4d92b6273006f6a20c6b405cfdd017930e7341230f0deefdbe8961a3ab2099d7"; }
+    { locale = "fr"; arch = "linux-x86_64"; sha256 = "a7858e1fca3007710053cd6ffcd8d17fe111ec3727e98cfc410f426fb4dd04a1"; }
+    { locale = "fy-NL"; arch = "linux-i686"; sha256 = "d222ea0506db332ab7590fc85dce4102613489506d7680bac31c82b855ae238e"; }
+    { locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "b466075727c3d3f709b9ddb1987f9fe69deb1efa34fecbd73aa1c5231ef844d8"; }
+    { locale = "ga-IE"; arch = "linux-i686"; sha256 = "d786389a7866d2be769c079ec65396fe3888968f80f3fbd8d54e355ac3098f91"; }
+    { locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "8134a011c31cf63a5538fea89ef332a28ab510fb08e1251a9d460ba83946f656"; }
+    { locale = "gd"; arch = "linux-i686"; sha256 = "a5b5cb6e9a2daf1587af84083cd680b14f49a0f998d4e6e80f09c37aebac0b0f"; }
+    { locale = "gd"; arch = "linux-x86_64"; sha256 = "7b15ab841f95eda59256c7cb4c9c876b0bea34df9f0e1d3af3bd144230d7254a"; }
+    { locale = "gl"; arch = "linux-i686"; sha256 = "7bee6ae14c9f43689ab2c7b9a7de60af9fe4d9d567efb94b26e3109af04d6c43"; }
+    { locale = "gl"; arch = "linux-x86_64"; sha256 = "b9a6e5bd2c62745a82fd3685a694a6f34d3327b60a62af6e283caf3a67d77f22"; }
+    { locale = "he"; arch = "linux-i686"; sha256 = "17a322f92322de536ead76e292d877ab8e9deff9855b1c12fc20855d3935a548"; }
+    { locale = "he"; arch = "linux-x86_64"; sha256 = "e542cfdfd29f7d54520dc86c9b73252e57fd3346874f9d629fd31b25be463471"; }
+    { locale = "hr"; arch = "linux-i686"; sha256 = "fe1fc94042eaeeedc1e7592cbedc5e4c922c5e05cd212feff8a654898d2c2a9e"; }
+    { locale = "hr"; arch = "linux-x86_64"; sha256 = "de191f3cc421ed5b06ce981c0431decb933799252107b27103bc3c45ac6995be"; }
+    { locale = "hsb"; arch = "linux-i686"; sha256 = "f55ad886854541ea1d684d168f8fb3c858fc8a11324dc14fb64340cb47f6d7fe"; }
+    { locale = "hsb"; arch = "linux-x86_64"; sha256 = "ee03f60c834c141d3340dca9ecfce8f427ee50a3b6b963f4a565a843e895f614"; }
+    { locale = "hu"; arch = "linux-i686"; sha256 = "8462e0a665d04b9273dbfc1095ef57831165438c21c34b5d04d22b51276fc047"; }
+    { locale = "hu"; arch = "linux-x86_64"; sha256 = "6cc42919c6417860e19fcc851b8210b9d6e405c4b2ff0bf51cffb18af733b488"; }
+    { locale = "hy-AM"; arch = "linux-i686"; sha256 = "2c3f4f4358387dad669254da46e21b4da1f54cedbc7be62c38448862a88edf37"; }
+    { locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "0556cb57c012554449d7044efaa5e8b4b938b15d55a19f91cb31ea5187b7ef76"; }
+    { locale = "id"; arch = "linux-i686"; sha256 = "26d31f04b836d3e5e3874c4e37d258effc8bd228223f6b963df3434d2276529c"; }
+    { locale = "id"; arch = "linux-x86_64"; sha256 = "55b2be7503278c0a41785796425fe35f5635e0c635d79a4246f7830a7cf6f075"; }
+    { locale = "is"; arch = "linux-i686"; sha256 = "29ce03e041c320aaa61c8ecefbe1a6cd2e9b96e916f3605f09a59cd271cfb741"; }
+    { locale = "is"; arch = "linux-x86_64"; sha256 = "44d7856e1779e86d715026a26fdc0db8beb8fac1bcba5c27ed652779f858c12e"; }
+    { locale = "it"; arch = "linux-i686"; sha256 = "47dd016eda154be31646105061570653ab61ab99d8bf873cf9e8e4b727847fc6"; }
+    { locale = "it"; arch = "linux-x86_64"; sha256 = "299941c56912734dd06c2f1dd89838d3a746dfde10df39f6caf198cf4fc6a332"; }
+    { locale = "ja"; arch = "linux-i686"; sha256 = "ff809f8f752612d242d5787f511b4821294855dd42027d7493f789200747575a"; }
+    { locale = "ja"; arch = "linux-x86_64"; sha256 = "babda834d5e6fa669691b974c4c4ea4b9207c3926796d0c1d76784b733d738a3"; }
+    { locale = "ko"; arch = "linux-i686"; sha256 = "a04ca9cd1cd435d4ab5d832efaeb1a6fee5e9e6c933c5a3a9b0e21bbc5141f24"; }
+    { locale = "ko"; arch = "linux-x86_64"; sha256 = "0390d47ca644679631b8bbb83cb45e404b4b7f1e4ad237d439318fd6464aeeb4"; }
+    { locale = "lt"; arch = "linux-i686"; sha256 = "9e9d3ed60a3ba5ef761937e5b2b06a4eaac1c6f6c1d72a9b3fe0ab7818e3d18f"; }
+    { locale = "lt"; arch = "linux-x86_64"; sha256 = "8d7cf2a173df6b7930a37244829934b2729341a8938288c988120010d1a52d2f"; }
+    { locale = "nb-NO"; arch = "linux-i686"; sha256 = "fde6089efa39e867f8c8b4b6d6e9d5c006f87c4ceaabb78517b34ea288cebe1e"; }
+    { locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "9ff74ec5e87468f3912b1ec847eff2d215c35224b4ef82ba29efaba4a48f2bb0"; }
+    { locale = "nl"; arch = "linux-i686"; sha256 = "349101916960741272549700a4050850730679826ef3f6c837b542628ac9b17b"; }
+    { locale = "nl"; arch = "linux-x86_64"; sha256 = "0bc2cf52b46f15976cd5355960b81106279c4cea9b7d55ac0360a56dd934ce6a"; }
+    { locale = "nn-NO"; arch = "linux-i686"; sha256 = "6eff1f88b362d81d71833b50606afffdb7e0210160bc9933226c472daa692259"; }
+    { locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "748726556948ebc59913a72965a54de67615217a93cf0351ece356524d8e3097"; }
+    { locale = "pa-IN"; arch = "linux-i686"; sha256 = "6606ee970387998235ed96fdbacc64a47fe2bc0d78061cf4205200517ab6f092"; }
+    { locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "0a77fe35ddce1921252d2e2acbeb09d6e719d34b4d81af8d6ef9c5c846359780"; }
+    { locale = "pl"; arch = "linux-i686"; sha256 = "b8d81eba8470a29768ded1c6882cdbf2f3306843754d29fa35e385b0a6efce25"; }
+    { locale = "pl"; arch = "linux-x86_64"; sha256 = "2b10f69274860e7af35cbb795042d058c9480ad195cd435e457923da2341c99d"; }
+    { locale = "pt-BR"; arch = "linux-i686"; sha256 = "4391c285e1db0767f7242fad4fbf6441572ef930acabc63209f1d2ac64e6d08c"; }
+    { locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "003060a341e1134870f96e1e032023884f3f22fa62261b07084e3cb8813423fb"; }
+    { locale = "pt-PT"; arch = "linux-i686"; sha256 = "d261cbc11bd9b176b656c3ae75f802aee4f1828e14f1a9f0e8c7822e9a24c090"; }
+    { locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "81fb37b9591a159e9d5ceff18921683037b4c965765b47e736c9124ba6268ee2"; }
+    { locale = "rm"; arch = "linux-i686"; sha256 = "a7d699ac74a568922a363eabaa38627564fbc715cdd3612a8f51e0c373594646"; }
+    { locale = "rm"; arch = "linux-x86_64"; sha256 = "ab9c84765f54f02e385b360025d1c70937af91350cbf8eea666f97aec4e36276"; }
+    { locale = "ro"; arch = "linux-i686"; sha256 = "00db7d515ee4abcba36713a7bac64a2afdfa1782bc3e4175ae2c69535c7b6cdf"; }
+    { locale = "ro"; arch = "linux-x86_64"; sha256 = "03da97e6c832ce49ccf6736ddac4a14b92768442f6f462b0174324964693aaa7"; }
+    { locale = "ru"; arch = "linux-i686"; sha256 = "d7d78792a83d76ce4c521674275b3b6443d0c12ad376b4ec3c34bc4edef64078"; }
+    { locale = "ru"; arch = "linux-x86_64"; sha256 = "bc4c751c5079d3863df1b0dd5717d7f5c07c031fefe798642ff3ff91e8f7512c"; }
+    { locale = "si"; arch = "linux-i686"; sha256 = "9525a7a704f262efa1ad18ab154d7f0eeec8f923f641621a38cce3be5c090cd4"; }
+    { locale = "si"; arch = "linux-x86_64"; sha256 = "2e847ce3ee90d27b7e20602844cbc1c3a9e458a7d449386e5bc8067163b6559d"; }
+    { locale = "sk"; arch = "linux-i686"; sha256 = "389e6dea7b61aced9ad491b57441963cf9c3f5f0c90a80778ccee71320a8bf53"; }
+    { locale = "sk"; arch = "linux-x86_64"; sha256 = "c36e78ce9aecaa23cf183a453e6ae817a52b84e2129f4e41fd409a61e1705c6a"; }
+    { locale = "sl"; arch = "linux-i686"; sha256 = "e8f1dd49850b2c359a66e8f79839a95d6e1a09de5cdd41a64c44315fdcea544c"; }
+    { locale = "sl"; arch = "linux-x86_64"; sha256 = "3ae2a85dadbaf99109fa971bb0c7a825d4ad3d1357f4d51bc7bb20455564ea68"; }
+    { locale = "sq"; arch = "linux-i686"; sha256 = "dd52238fbd564d49ae8f3dfcee7e608615d3e78bd99373b1bbcdf51b9e20c354"; }
+    { locale = "sq"; arch = "linux-x86_64"; sha256 = "cbeadcb1de666c42c9e5b42b2a6c1fa14f80e4c6454ea8cfc34b0ad5dd472bb8"; }
+    { locale = "sr"; arch = "linux-i686"; sha256 = "1318c997a56245b296b2f9ac004b07f87d6492448272c8978e78193fe484336b"; }
+    { locale = "sr"; arch = "linux-x86_64"; sha256 = "0898d16c990669028fbea084755221c747db48392b30b7c498770fcb5df7b328"; }
+    { locale = "sv-SE"; arch = "linux-i686"; sha256 = "50c76b8904b51a84136a1c69939e49541205ce8b804c2ce90cff196e826c275c"; }
+    { locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "bf3e5c83815458726317c8415963825975500452202f240200be0fab43b1e226"; }
+    { locale = "ta-LK"; arch = "linux-i686"; sha256 = "7d62ec98b8f01b12425e7692c4966faeeeb42ea66cd6105c37742698215bde5a"; }
+    { locale = "ta-LK"; arch = "linux-x86_64"; sha256 = "416cffbe25f2b00cd584fa455768b09c5f8d1bc7938263880903050f8c08fab4"; }
+    { locale = "tr"; arch = "linux-i686"; sha256 = "581d6c8df1611d749d0dda9d1f248ebf354825f8a8097624fd08338ea5e01d38"; }
+    { locale = "tr"; arch = "linux-x86_64"; sha256 = "24b1b9bfa251add2d7f3183b0c3aafdea6b4caa5bdbcea718462185d6dc63e5b"; }
+    { locale = "uk"; arch = "linux-i686"; sha256 = "97175dba275e382b2436e9b7a948c46f137ed38612e90ea43466dd3fe20c878b"; }
+    { locale = "uk"; arch = "linux-x86_64"; sha256 = "273b08710fbc57c30828736c38a158ff66ac788b2ca3726118367466cab09797"; }
+    { locale = "vi"; arch = "linux-i686"; sha256 = "e0391fdecb11b5daac913f57894970208b51e1e7f1665ff56cb7a68dba0c442a"; }
+    { locale = "vi"; arch = "linux-x86_64"; sha256 = "af51ee3bd2ac246a4b465aa65b13d1aa661dbce5e0988524532616fb9d2d651b"; }
+    { locale = "zh-CN"; arch = "linux-i686"; sha256 = "5e7d1543d41912ffa0a71137b90c40ab5569ffab65e8b99f0b62446561a78ca2"; }
+    { locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "f85c8086b462474e40b0b090f9b566aa55b228ec49ec18fa1b5987ec3efa048b"; }
+    { locale = "zh-TW"; arch = "linux-i686"; sha256 = "6f161428af67a1635364660a8ec6d7c785350204d5bac602ebcd32861e9baf62"; }
+    { locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "2088379539a9b4ece3012b603a5731c92567fa4b3e5c448ae54e2729c8df0658"; }
   ];
 }
diff --git a/pkgs/applications/networking/mailreaders/thunderbird/default.nix b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
index 32f77cfa2c22..093e7a22b921 100644
--- a/pkgs/applications/networking/mailreaders/thunderbird/default.nix
+++ b/pkgs/applications/networking/mailreaders/thunderbird/default.nix
@@ -13,7 +13,7 @@
   enableOfficialBranding ? false
 }:
 
-let version = "38.3.0"; in
+let version = "38.6.0"; in
 let verName = "${version}"; in
 
 stdenv.mkDerivation rec {
diff --git a/pkgs/applications/networking/msmtp/default.nix b/pkgs/applications/networking/msmtp/default.nix
index 363e98d46d25..e78605392be2 100644
--- a/pkgs/applications/networking/msmtp/default.nix
+++ b/pkgs/applications/networking/msmtp/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, openssl, pkgconfig, gnutls, gsasl, libidn }:
+{ stdenv, fetchurl, openssl, pkgconfig, gnutls, gsasl, libidn, Security }:
 
 stdenv.mkDerivation rec {
   version = "1.6.2";
@@ -9,7 +9,11 @@ stdenv.mkDerivation rec {
     sha256 = "12c7ljahb06pgn8yvvw526xvr11vnr6d4nr0apylixddpxycsvig";
   };
 
-  buildInputs = [ openssl pkgconfig gnutls gsasl libidn ];
+  buildInputs = [ openssl pkgconfig gnutls gsasl libidn ]
+    ++ stdenv.lib.optional stdenv.isDarwin Security;
+
+  configureFlags =
+    stdenv.lib.optional stdenv.isDarwin [ "--with-macosx-keyring" ];
 
   postInstall = ''
     cp scripts/msmtpq/msmtp-queue scripts/msmtpq/msmtpq $prefix/bin/
@@ -21,6 +25,6 @@ stdenv.mkDerivation rec {
       homepage = "http://msmtp.sourceforge.net/";
       license = stdenv.lib.licenses.gpl3;
       maintainers = [ stdenv.lib.maintainers.garbas ];
-      platforms = stdenv.lib.platforms.linux;
+      platforms = stdenv.lib.platforms.unix;
     };
 }
diff --git a/pkgs/applications/networking/newsreaders/liferea/default.nix b/pkgs/applications/networking/newsreaders/liferea/default.nix
index cd6f504465f4..4e7f74237812 100644
--- a/pkgs/applications/networking/newsreaders/liferea/default.nix
+++ b/pkgs/applications/networking/newsreaders/liferea/default.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://github.com/lwindolf/${pname}/releases/download/v${version}/${name}.tar.bz2";
-    sha256 = "0wpinar2cxyzq2j7ff7lznc08f0n6qjdm9aavsarbgdpaf2s1xvq";
+    sha256 = "0xyy0qm3h22b69if2hmg36jzvvljxb1w0zy2m2a28kdqfzpa6m8g";
   };
 
   buildInputs = with gst_all_1; [
@@ -27,8 +27,6 @@ stdenv.mkDerivation rec {
     makeWrapper
   ];
 
-  patches = [ ./liferea-fix-notification-header-location.patch ];
-
   preFixup = ''
     for f in "$out"/bin/*; do
       wrapProgram "$f" \
diff --git a/pkgs/applications/networking/newsreaders/liferea/liferea-fix-notification-header-location.patch b/pkgs/applications/networking/newsreaders/liferea/liferea-fix-notification-header-location.patch
deleted file mode 100644
index 3cd322460b08..000000000000
--- a/pkgs/applications/networking/newsreaders/liferea/liferea-fix-notification-header-location.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur a/src/notification/libnotify.c b/src/notification/libnotify.c
---- a/src/notification/libnotify.c	2016-01-28 19:33:19.000000000 +0100
-+++ b/src/notification/libnotify.c	2016-02-01 19:20:39.167580131 +0100
-@@ -40,7 +40,7 @@
- #include "ui/feed_list_view.h"
- #include "ui/ui_tray.h"
- 
--#include "notification/notification.h"
-+#include "../notification.h"
- 
- static gboolean supports_actions = FALSE;
- static gboolean supports_append  = FALSE;
diff --git a/pkgs/applications/networking/p2p/transmission/default.nix b/pkgs/applications/networking/p2p/transmission/default.nix
index e81ef7a4f9ff..dbd23195a1cd 100644
--- a/pkgs/applications/networking/p2p/transmission/default.nix
+++ b/pkgs/applications/networking/p2p/transmission/default.nix
@@ -4,7 +4,7 @@
 }:
 
 let
-  version = "2.84";
+  version = "2.90";
 in
 
 with { inherit (stdenv.lib) optional optionals optionalString; };
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   src = fetchurl {
     url = "https://transmission.cachefly.net/transmission-${version}.tar.xz";
-    sha256 = "1sxr1magqb5s26yvr5yhs1f7bmir8gl09niafg64lhgfnhv1kz59";
+    sha256 = "1lig7y9fhmv2ajgq1isj9wqgpcgignzlczs3dy95ahb8h6pqrzv9";
   };
 
   buildInputs = [ pkgconfig intltool file openssl curl libevent inotify-tools zlib ]
diff --git a/pkgs/applications/networking/remote/teamviewer/default.nix b/pkgs/applications/networking/remote/teamviewer/default.nix
index dd947d86daf8..1abedc890f46 100644
--- a/pkgs/applications/networking/remote/teamviewer/default.nix
+++ b/pkgs/applications/networking/remote/teamviewer/default.nix
@@ -52,7 +52,7 @@ stdenv.mkDerivation {
     ${if stdenv.system == "x86_64-linux" then ''
       sed -i "s,TV_LD64_PATH=.*,TV_LD64_PATH=$(cat ${ld64})," script/tvw_config
     '' else ''
-      sed -i ",TV_LD64_PATH=.*,d" script/tvw_config
+      sed -i "/TV_LD64_PATH=.*/d" script/tvw_config
     ''}
 
     sed -i "s,/opt/teamviewer,$out/share/teamviewer,g" desktop/teamviewer-*.desktop
diff --git a/pkgs/applications/networking/sniffers/wireshark/default.nix b/pkgs/applications/networking/sniffers/wireshark/default.nix
index 58be839d737a..9f810e2c5c65 100644
--- a/pkgs/applications/networking/sniffers/wireshark/default.nix
+++ b/pkgs/applications/networking/sniffers/wireshark/default.nix
@@ -11,7 +11,7 @@ assert withQt -> !withGtk && qt4 != null;
 with stdenv.lib;
 
 let
-  version = "2.0.0";
+  version = "2.0.2";
   variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
 in
 
@@ -20,7 +20,7 @@ stdenv.mkDerivation {
 
   src = fetchurl {
     url = "http://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.bz2";
-    sha256 = "1pci4vj23wamycfj4lxxmpxps96yq6jfmqn7hdvisw4539v6q0lh";
+    sha256 = "1hdrnsllkfbvfwsvlqvvky0z91q63mbbnjcri56nb9c5403zn8g9";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/networking/sync/backintime/common.nix b/pkgs/applications/networking/sync/backintime/common.nix
index 14fa69974e8a..c3f8e0f02c66 100644
--- a/pkgs/applications/networking/sync/backintime/common.nix
+++ b/pkgs/applications/networking/sync/backintime/common.nix
@@ -1,13 +1,15 @@
-{stdenv, fetchurl, makeWrapper, gettext, python3, python3Packages, rsync, cron, openssh, sshfsFuse, encfs }:
+{stdenv, fetchFromGitHub, makeWrapper, gettext, python3, python3Packages, rsync, cron, openssh, sshfsFuse, encfs }:
 
 stdenv.mkDerivation rec {
-  version = "1.1.6";
+  version = "1.1.12";
 
   name = "backintime-common-${version}";
 
-  src = fetchurl {
-    url = "https://launchpad.net/backintime/1.1/${version}/+download/backintime-${version}.tar.gz";
-    sha256 = "04yw1v6h959mmvc67mhh0km7vkxjzb7j1mniv5xfjdy27ryii1ig";
+  src = fetchFromGitHub {
+    owner = "bit-team";
+    repo = "backintime";
+    rev = "v${version}";
+    sha256 = "0n3x48wa8aa7i8fff85h3b5h3xpabk51ld0ymy3pkqh0krfgs59a";
   };
 
   buildInputs = [ makeWrapper gettext python3 python3Packages.dbus python3Packages.keyring openssh cron rsync sshfsFuse encfs ];
@@ -28,7 +30,7 @@ stdenv.mkDerivation rec {
     '';
 
   meta = {
-    homepage = https://launchpad.net/backintime;
+    homepage = https://github.com/bit-team/backintime;
     description = "Simple backup tool for Linux";
     license = stdenv.lib.licenses.gpl2;
     maintainers = [ stdenv.lib.maintainers.DamienCassou ];
diff --git a/pkgs/applications/networking/sync/rsync/base.nix b/pkgs/applications/networking/sync/rsync/base.nix
new file mode 100644
index 000000000000..86b90ea22ef2
--- /dev/null
+++ b/pkgs/applications/networking/sync/rsync/base.nix
@@ -0,0 +1,21 @@
+{ stdenv, fetchurl }:
+
+rec {
+  version = "3.2.1";
+  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 = "1hm1q04hz15509f0p9bflw4d6jzfvpm1d36dxjwihk1wzakn5ypc";
+  };
+  patches = fetchurl {
+    # signed with key 0048 C8B0 26D4 C96F 0E58  9C2F 6C85 9FB1 4B96 A8C5
+    url = "mirror://samba/rsync/rsync-patches-${version}.tar.gz";
+    sha256 = "09i3dcl37p22dp75vlnsvx7bm05ggafnrf1zwhf2kbij4ngvxvpd";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = http://rsync.samba.org/;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/applications/networking/sync/rsync/default.nix b/pkgs/applications/networking/sync/rsync/default.nix
index c13bb1b329df..b65eb43351ef 100644
--- a/pkgs/applications/networking/sync/rsync/default.nix
+++ b/pkgs/applications/networking/sync/rsync/default.nix
@@ -5,21 +5,15 @@
 
 assert enableACLs -> acl != null;
 
+let
+  base = import ./base.nix { inherit stdenv fetchurl; };
+in
 stdenv.mkDerivation rec {
-  name = "rsync-${version}";
-  version = "3.1.2";
+  name = "rsync-${base.version}";
 
-  mainSrc = fetchurl {
-    # signed with key 0048 C8B0 26D4 C96F 0E58  9C2F 6C85 9FB1 4B96 A8C5
-    url = "mirror://samba/rsync/src/rsync-${version}.tar.gz";
-    sha256 = "1hm1q04hz15509f0p9bflw4d6jzfvpm1d36dxjwihk1wzakn5ypc";
-  };
+  mainSrc = base.src;
 
-  patchesSrc = fetchurl {
-    # signed with key 0048 C8B0 26D4 C96F 0E58  9C2F 6C85 9FB1 4B96 A8C5
-    url = "mirror://samba/rsync/rsync-patches-${version}.tar.gz";
-    sha256 = "09i3dcl37p22dp75vlnsvx7bm05ggafnrf1zwhf2kbij4ngvxvpd";
-  };
+  patchesSrc = base.patches;
 
   srcs = [mainSrc] ++ stdenv.lib.optional enableCopyDevicesPatch patchesSrc;
   patches = stdenv.lib.optional enableCopyDevicesPatch "./patches/copy-devices.diff";
@@ -29,11 +23,8 @@ stdenv.mkDerivation rec {
 
   configureFlags = "--with-nobody-group=nogroup";
 
-  meta = with stdenv.lib; {
-    homepage = http://rsync.samba.org/;
+  meta = base.meta // {
     description = "A fast incremental file transfer utility";
-    license = licenses.gpl3Plus;
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ simons ehmry ];
+    maintainers = with stdenv.lib.maintainers; [ simons ehmry kampfschlaefer ];
   };
 }
diff --git a/pkgs/applications/networking/sync/rsync/rrsync.nix b/pkgs/applications/networking/sync/rsync/rrsync.nix
new file mode 100644
index 000000000000..7563b0ea1950
--- /dev/null
+++ b/pkgs/applications/networking/sync/rsync/rrsync.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, 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/pkgs/applications/networking/znc/1.4.nix b/pkgs/applications/networking/znc/1.4.nix
deleted file mode 100644
index fdd02aac0b5e..000000000000
--- a/pkgs/applications/networking/znc/1.4.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ stdenv, fetchurl, openssl, pkgconfig
-, withPerl ? false, perl
-, withPython ? false, python3
-, withTcl ? false, tcl
-, withCyrus ? true, cyrus_sasl
-}:
-
-with stdenv.lib;
-stdenv.mkDerivation rec {
-  name = "znc-1.4";
-
-  src = fetchurl {
-    url = "http://znc.in/releases/${name}.tar.gz";
-    sha256 = "0lkv58pq4d5lzcyx8v8anzinx0sx0zw0js4jij13jb8qxp88zsc6";
-  };
-
-  buildInputs = [ openssl pkgconfig ]
-    ++ optional withPerl perl
-    ++ optional withPython python3
-    ++ optional withTcl tcl
-    ++ optional withCyrus cyrus_sasl;
-
-  configureFlags = optionalString withPerl "--enable-perl "
-    + optionalString withPython "--enable-python "
-    + optionalString withTcl "--enable-tcl --with-tcl=${tcl}/lib "
-    + optionalString withCyrus "--enable-cyrus ";
-
-  meta = with stdenv.lib; {
-    description = "Advanced IRC bouncer";
-    homepage = http://wiki.znc.in/ZNC;
-    maintainers = with maintainers; [ viric ];
-    license = licenses.asl20;
-    platforms = platforms.unix;
-  };
-}
diff --git a/pkgs/applications/networking/znc/modules.nix b/pkgs/applications/networking/znc/modules.nix
index 9836d1fbb3b3..802c5f5ecb77 100644
--- a/pkgs/applications/networking/znc/modules.nix
+++ b/pkgs/applications/networking/znc/modules.nix
@@ -1,7 +1,6 @@
-{ stdenv, fetchurl, fetchgit,  znc }:
+{ stdenv, fetchurl, fetchgit, znc }:
 
 let
-
   zncDerivation = a@{
     name, src, module_name,
     buildPhase ? "${znc}/bin/znc-buildmod ${module_name}.cpp",
@@ -16,51 +15,75 @@ let
 
 in rec {
 
-  push = zncDerivation rec {
-    name = "znc-push-${version}";
-    version = "1.0.0";
-    module_name = "push";
+  clientbuffer = zncDerivation rec {
+    name = "znc-clientbuffer-${version}";
+    version = "git-2015-08-27";
+    module_name = "clientbuffer";
 
-    src = fetchurl {
-        url = "https://github.com/jreese/znc-push/archive/v${version}.tar.gz";
-        sha256 = "1v9a16b1d8mfzhddf4drh6rbxa0szr842g7614r8ninmc0gi7a2v";
+    src = fetchgit {
+      url = meta.repositories.git;
+      rev = "fe0f368e1fcab2b89d5c94209822d9b616cea840";
+      sha256 = "1knbkj1dm45s741qndsfclmk3pyxnihgwq2i1n75ip3wv8i1bf4b";
     };
 
-    meta = {
-      description = "Push notification service module for ZNC";
-      homepage = https://github.com/jreese/znc-push;
-      repositories.git = https://github.com/jreese/znc-push.git;
-      license = stdenv.lib.licenses.mit;
-      maintainers = [ stdenv.lib.maintainers.offline ];
+    meta = with stdenv.lib; {
+      description = "ZNC module for client specific buffers";
+      homepage = https://github.com/jpnurmi/znc-clientbuffer;
+      repositories.git = https://github.com/jpnurmi/znc-clientbuffer.git;
+      license = licenses.asl20;
+      maintainers = with maintainers; [ hrdinka ];
     };
   };
 
   fish = zncDerivation rec {
-    name = "znc-fish-8e1f150fda";
+    name = "znc-fish-${version}";
+    version = "git-2014-10-10";
     module_name = "fish";
 
     src = fetchgit {
-        url = meta.repositories.git;
-        rev = "8e1f150fdaf18dc33e023795584dec8255e6614e";
-        sha256 = "0vpk4336c191irl3g7wibblnbqf3903hjrci4gs0qgg1wvj7fw66";
+      url = meta.repositories.git;
+      rev = "9c580e018a1a08374e814fc06f551281cff827de";
+      sha256 = "0yvs0jkwwp18qxqvw1dvir91ggczz56ka00k0zlsb81csdi8xfvl";
     };
 
     meta = {
       description = "ZNC FiSH module";
       homepage = https://github.com/dctrwatson/znc-fish;
-      repositories.git = https://github.com/dctrwatson/znc-fish.git;
+      # this fork works with ZNC 1.6
+      repositories.git = https://github.com/jarrydpage/znc-fish.git;
       maintainers = [ stdenv.lib.maintainers.offline ];
     };
   };
 
+  playback = zncDerivation rec {
+    name = "znc-playback-${version}";
+    version = "git-2015-08-04";
+    module_name = "playback";
+
+    src = fetchgit {
+      url = meta.repositories.git;
+      rev = "8691abf75becc1f3d7b5bb5ad68dad17cd21863b";
+      sha256 = "0pd89p00yfir4lvw0107lc3qxzx8bgbm5lqq0lpwb6cahv3ipdra";
+    };
+
+    meta = with stdenv.lib; {
+      description = "An advanced playback module for ZNC";
+      homepage = https://github.com/jpnurmi/znc-playback;
+      repositories.git = https://github.com/jpnurmi/znc-playback.git;
+      license = licenses.asl20;
+      maintainers = with maintainers; [ hrdinka ];
+    };
+  };
+
   privmsg = zncDerivation rec {
-    name        = "znc-privmsg-c9f98690be";
+    name = "znc-privmsg-${version}";
+    version = "git-2015-02-22";
     module_name = "privmsg";
 
     src = fetchgit {
-      url    = meta.repositories.git;
-      rev    = "c9f98690beb4e3a7681468d5421ff11dc8e1ee8b";
-      sha256 = "dfeb28878b12b98141ab204191288cb4c3f7df153a01391ebf6ed6a32007247f";
+      url = meta.repositories.git;
+      rev = "9f1f98db56cbbea96d83e6628f657e0d62cd9517";
+      sha256 = "0n82z87gdxxragcaixjc80z8bw4bmfwbk0jrf9zs8kk42phlkkc2";
     };
 
     meta = {
@@ -70,4 +93,24 @@ in rec {
     };
   };
 
+  push = zncDerivation rec {
+    name = "znc-push-${version}";
+    version = "git-2015-12-07";
+    module_name = "push";
+
+    src = fetchgit {
+      url = "https://github.com/jreese/znc-push.git";
+      rev = "717a2b1741eee75456b0862ef76dbb5af906e936";
+      sha256 = "1lr5bhcy8156f7sbah7kjgz4g4mhkkwgvwjd2rxpbwnpq3ssza9k";
+    };
+
+    meta = {
+      description = "Push notification service module for ZNC";
+      homepage = https://github.com/jreese/znc-push;
+      repositories.git = https://github.com/jreese/znc-push.git;
+      license = stdenv.lib.licenses.mit;
+      maintainers = [ stdenv.lib.maintainers.offline ];
+    };
+  };
+
 }