summary refs log tree commit diff
path: root/pkgs/applications/networking/browsers
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/browsers')
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/chromium/plugins.nix2
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/build_fixes_46.patch14
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/default.nix10
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_46.patch (renamed from pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_42.patch)32
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/sources.nix24
-rw-r--r--pkgs/applications/networking/browsers/chromium/source/update.nix1
-rwxr-xr-xpkgs/applications/networking/browsers/chromium/update.sh39
-rw-r--r--pkgs/applications/networking/browsers/conkeror/default.nix6
-rw-r--r--pkgs/applications/networking/browsers/dillo/default.nix8
-rw-r--r--pkgs/applications/networking/browsers/dwb/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/default.nix14
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb2
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/sources.nix358
-rw-r--r--pkgs/applications/networking/browsers/firefox/default.nix68
-rw-r--r--pkgs/applications/networking/browsers/firefox/wrapper.nix1
-rw-r--r--pkgs/applications/networking/browsers/links2/default.nix10
-rw-r--r--pkgs/applications/networking/browsers/midori/default.nix3
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix18
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix6
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix42
-rw-r--r--pkgs/applications/networking/browsers/vimb/default.nix7
-rw-r--r--pkgs/applications/networking/browsers/vimprobable2/default.nix7
23 files changed, 332 insertions, 348 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index 1b5da0763e70..9a7f4a2757ef 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -41,8 +41,8 @@ let
 
   desktopItem = makeDesktopItem {
     name = "chromium";
-    exec = "chromium";
-    icon = "${chromium.browser}/share/icons/hicolor/48x48/apps/chromium.png";
+    exec = "chromium %U";
+    icon = "chromium";
     comment = "An open source web browser from Google";
     desktopName = "Chromium";
     genericName = "Web browser";
diff --git a/pkgs/applications/networking/browsers/chromium/plugins.nix b/pkgs/applications/networking/browsers/chromium/plugins.nix
index 5bb6a93d8d74..0b0e5bd08382 100644
--- a/pkgs/applications/networking/browsers/chromium/plugins.nix
+++ b/pkgs/applications/networking/browsers/chromium/plugins.nix
@@ -53,7 +53,7 @@ let
       wvDescription = "Playback of encrypted HTML audio/video content";
       wvMimeTypes = "application/x-ppapi-widevine-cdm";
       wvModule = "$widevine/lib/libwidevinecdmadapter.so";
-      wvInfo = "#${wvName}#${wvDescription}:${wvMimeTypes}";
+      wvInfo = "#${wvName}#${wvDescription};${wvMimeTypes}";
     in ''
       flashVersion="$(
         sed -n -r 's/.*"version": "([^"]+)",.*/\1/p' PepperFlash/manifest.json
diff --git a/pkgs/applications/networking/browsers/chromium/source/build_fixes_46.patch b/pkgs/applications/networking/browsers/chromium/source/build_fixes_46.patch
new file mode 100644
index 000000000000..c0aeb5d3a56c
--- /dev/null
+++ b/pkgs/applications/networking/browsers/chromium/source/build_fixes_46.patch
@@ -0,0 +1,14 @@
+diff --git a/chrome/test/data/webui_test_resources.grd b/chrome/test/data/webui_test_resources.grd
+index 6f8530d..f92a76a 100644
+--- a/chrome/test/data/webui_test_resources.grd
++++ b/chrome/test/data/webui_test_resources.grd
+@@ -6,9 +6,4 @@
+     </output>
+     <output filename="webui_test_resources.pak" type="data_package" />
+   </outputs>
+-  <release seq="1">
+-    <includes>
+-      <include name="IDR_WEBUI_TEST_I18N_PROCESS_CSS_TEST" file="webui/i18n_process_css_test.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
+-    </includes>
+-  </release>
+ </grit>
diff --git a/pkgs/applications/networking/browsers/chromium/source/default.nix b/pkgs/applications/networking/browsers/chromium/source/default.nix
index e8ad569adbfc..732568291d34 100644
--- a/pkgs/applications/networking/browsers/chromium/source/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/source/default.nix
@@ -17,8 +17,6 @@ let
     "s,^/,,"
   ]);
 
-  pre44 = versionOlder version "44.0.0.0";
-
 in stdenv.mkDerivation {
   name = "chromium-source-${version}";
 
@@ -46,9 +44,11 @@ in stdenv.mkDerivation {
     done
   '';
 
-  patches = if pre44
-            then singleton ./nix_plugin_paths_42.patch
-            else singleton ./nix_plugin_paths_44.patch;
+  patches =
+    if versionOlder version "45.0.0.0"
+    then singleton ./nix_plugin_paths_44.patch
+    else singleton ./nix_plugin_paths_46.patch ++
+         optional (!versionOlder version "46.0.0.0") ./build_fixes_46.patch;
 
   patchPhase = let
     diffmod = sym: "/^${sym} /{s/^${sym} //;${transform ""};s/^/${sym} /}";
diff --git a/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_42.patch b/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_46.patch
index fb09763c997a..7482be7062d0 100644
--- a/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_42.patch
+++ b/pkgs/applications/networking/browsers/chromium/source/nix_plugin_paths_46.patch
@@ -1,8 +1,8 @@
 diff --git a/chrome/common/chrome_paths.cc b/chrome/common/chrome_paths.cc
-index 8a205a6..d5c24e1 100644
+index 74bf041..5f34198 100644
 --- a/chrome/common/chrome_paths.cc
 +++ b/chrome/common/chrome_paths.cc
-@@ -97,21 +97,14 @@ static base::LazyInstance<base::FilePath>
+@@ -66,21 +66,14 @@ static base::LazyInstance<base::FilePath>
      g_invalid_specified_user_data_dir = LAZY_INSTANCE_INITIALIZER;
  
  // Gets the path for internal plugins.
@@ -31,8 +31,8 @@ index 8a205a6..d5c24e1 100644
 +      *result = base::FilePath(value);
  }
  
- }  // namespace
-@@ -248,11 +241,11 @@ bool PathProvider(int key, base::FilePath* result) {
+ #if defined(OS_WIN)
+@@ -253,11 +246,11 @@ bool PathProvider(int key, base::FilePath* result) {
        create_dir = true;
        break;
      case chrome::DIR_INTERNAL_PLUGINS:
@@ -46,25 +46,7 @@ index 8a205a6..d5c24e1 100644
          return false;
        cur = cur.Append(kPepperFlashBaseDirectory);
        break;
-@@ -285,7 +278,7 @@ bool PathProvider(int key, base::FilePath* result) {
-       cur = cur.Append(FILE_PATH_LITERAL("script.log"));
-       break;
-     case chrome::FILE_FLASH_PLUGIN:
--      if (!GetInternalPluginsDirectory(&cur))
-+      if (!GetInternalPluginsDirectory(&cur, "FILEFLASH"))
-         return false;
-       cur = cur.Append(kInternalFlashPluginFileName);
-       break;
-@@ -295,7 +288,7 @@ bool PathProvider(int key, base::FilePath* result) {
-       cur = cur.Append(chrome::kPepperFlashPluginFilename);
-       break;
-     case chrome::FILE_EFFECTS_PLUGIN:
--      if (!GetInternalPluginsDirectory(&cur))
-+      if (!GetInternalPluginsDirectory(&cur, "FILE_EFFECTS"))
-         return false;
-       cur = cur.Append(kEffectsPluginFileName);
-       break;
-@@ -308,7 +301,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -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:
@@ -73,7 +55,7 @@ index 8a205a6..d5c24e1 100644
          return false;
        cur = cur.Append(kInternalNaClPluginFileName);
        break;
-@@ -343,7 +336,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -349,7 +342,7 @@ bool PathProvider(int key, base::FilePath* result) {
          cur = cur.DirName();
        }
  #else
@@ -82,7 +64,7 @@ index 8a205a6..d5c24e1 100644
          return false;
  #endif
        cur = cur.Append(FILE_PATH_LITERAL("pnacl"));
-@@ -372,7 +365,7 @@ bool PathProvider(int key, base::FilePath* result) {
+@@ -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:
diff --git a/pkgs/applications/networking/browsers/chromium/source/sources.nix b/pkgs/applications/networking/browsers/chromium/source/sources.nix
index 5410293a7924..16aa67db30f6 100644
--- a/pkgs/applications/networking/browsers/chromium/source/sources.nix
+++ b/pkgs/applications/networking/browsers/chromium/source/sources.nix
@@ -1,21 +1,21 @@
 # This file is autogenerated from update.sh in the parent directory.
 {
   dev = {
-    version = "45.0.2454.6";
-    sha256 = "09bhbq3hvsfiac7w6ajd6n1lcdzf2isg1s9sqabrnx9blyds7msh";
-    sha256bin32 = "1f38rfd9v91inhd9m2sfcj4bpvq5f03zn8ypvacr9mpwc47rylx3";
-    sha256bin64 = "1bfjpjisa0hqiy8kmmgh2mr6zyifpmhr7k5ai44h5szf36768bn6";
+    version = "47.0.2498.0";
+    sha256 = "1dvp7wwfbdzyvbqcfn538gf0dk6w6gc88nms0wl0ir4ka7rf7mz1";
+    sha256bin32 = "15jsmvhyzscf6g6czkg5vxzyj7vnkndmsapx0xf8hlw8d5zw3nq7";
+    sha256bin64 = "1mx605dh93ak0p68rrpb6xf46jygggk0jwj7k6ks21l4wnxha8d5";
   };
   beta = {
-    version = "44.0.2403.89";
-    sha256 = "161shml5w2i0crl57hkfnizgmii6d70lxxg4rjxmays8g6lrmpds";
-    sha256bin32 = "1vk022m9kz9fw82sd94zqzi988ald3p2vlha7pz5wm2dgibwr25g";
-    sha256bin64 = "0kvrpqy3fpfzchly65nrh8z2z2i49xpa3pm2k7k18sn0x4bycji0";
+    version = "45.0.2454.78";
+    sha256 = "1n3yp0jm3jqyw0xwji1451qjjpkvpsqabn7d2r9fj75gspsiwv6z";
+    sha256bin32 = "11x8f2nyhf4n1jdd8npvr3ddkp3himi6lxpml64h5gjd5j9gf32b";
+    sha256bin64 = "16gk14q3pc1fzg9dbwlqsay4jwddsh5b37h4p8zkqqymv9fp5qq9";
   };
   stable = {
-    version = "43.0.2357.134";
-    sha256 = "0nbn25pl3rgyqmy4p5dqr0v08xzkm08lpzsaxzszqpa4w7ivp8fk";
-    sha256bin32 = "1xmybw4vs8x2rrg43f7x7yn763wfzr5f8d1jpq49r42qr365q6vs";
-    sha256bin64 = "1y79135pmkhvv4cdhdy93jhm0jdx132a6spqqyyhbcr2sn26cq62";
+    version = "45.0.2454.85";
+    sha256 = "14acjc80dmypybbvm087szp0g0m1gil5hjj02x8c6k7alsjh731y";
+    sha256bin32 = "1945m765a05wfdfslrb22r1jpicyghfkf4h7ijzw1z9whmxa9y1v";
+    sha256bin64 = "0d63akpr3yp128v01xgz1nd364w7p89gkvjpr4qz99q67dh3z1q1";
   };
 }
diff --git a/pkgs/applications/networking/browsers/chromium/source/update.nix b/pkgs/applications/networking/browsers/chromium/source/update.nix
index e639cdb087bc..49864cf1c7b0 100644
--- a/pkgs/applications/networking/browsers/chromium/source/update.nix
+++ b/pkgs/applications/networking/browsers/chromium/source/update.nix
@@ -18,6 +18,7 @@ let
   debMirrors = [
     "http://95.31.35.30/chrome/pool/main/g"
     "http://mirror.pcbeta.com/google/chrome/deb/pool/main/g"
+    "http://repo.fdzh.org/chrome/deb/pool/main/g"
   ];
 
   tryChannel = channel: let
diff --git a/pkgs/applications/networking/browsers/chromium/update.sh b/pkgs/applications/networking/browsers/chromium/update.sh
index e82d22f34fd0..e079762420be 100755
--- a/pkgs/applications/networking/browsers/chromium/update.sh
+++ b/pkgs/applications/networking/browsers/chromium/update.sh
@@ -11,22 +11,6 @@ source "$(nix-build --no-out-link "$base_path/update.nix" -A updateHelpers)";
 
 ver_sha_table=""; # list of version:sha256
 
-sha_lookup()
-{
-    version="$1";
-
-    for ver_sha in $ver_sha_table;
-    do
-        if [ "x${ver_sha%:*}" = "x$version" ];
-        then
-            echo "${ver_sha##*:}";
-            return 0;
-        fi;
-    done;
-
-    return 1;
-}
-
 sha_insert()
 {
     version="$1";
@@ -72,22 +56,15 @@ get_channel_exprs()
         channel="${chline%%,*}";
         version="${chline##*,}";
 
-        echo -n "Checking if sha256 of version $version is cached..." >&2;
-        if sha256="$(sha_lookup "$version")";
+        sha256="$(get_sha256 "$channel" "$version")";
+        if [ $? -ne 0 ];
         then
-            echo " yes: $sha256" >&2;
-        else
-            echo " no." >&2;
-            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;
+            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";
diff --git a/pkgs/applications/networking/browsers/conkeror/default.nix b/pkgs/applications/networking/browsers/conkeror/default.nix
index 9715b46ed507..007c49b2733b 100644
--- a/pkgs/applications/networking/browsers/conkeror/default.nix
+++ b/pkgs/applications/networking/browsers/conkeror/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchgit, unzip, firefox, makeWrapper }:
 
 stdenv.mkDerivation {
-  name = "conkeror-1.0pre-20150319";
+  name = "conkeror-1.0pre-20150730";
 
   src = fetchgit {
     url = git://repo.or.cz/conkeror.git;
-    rev = "6450632b3f0c315f79e7a9856658083fe8fc9c29";
-    sha256 = "18cqz1n2n6aimmgd69mdrgmkjf4207k7yz11wihka6b5z1hfiv64";
+    rev = "a1f7e879b129df5cf14ea4ce80a9c1407380ed58";
+    sha256 = "12d8949a81a670037664dd930f7efe3d54b321aad48deea68343eba9aaea8785";
   };
 
   buildInputs = [ unzip makeWrapper ];
diff --git a/pkgs/applications/networking/browsers/dillo/default.nix b/pkgs/applications/networking/browsers/dillo/default.nix
index 6760e123ccb5..a54e5e0c3701 100644
--- a/pkgs/applications/networking/browsers/dillo/default.nix
+++ b/pkgs/applications/networking/browsers/dillo/default.nix
@@ -6,18 +6,16 @@
 , libXcursor, libXi, libXinerama }:
 
 stdenv.mkDerivation rec {
-  version = "3.0.4.1";
+  version = "3.0.5";
   name = "dillo-${version}";
 
   src = fetchurl {
     url = "http://www.dillo.org/download/${name}.tar.bz2";
-    sha256 = "0iw617nnrz3541jkw5blfdlk4x8jxb382pshi8nfc7xd560c95zd";
+    sha256 = "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv";
   };
 
   buildInputs = with stdenv.lib;
-    [ fltk openssl libjpeg libpng libXcursor libXi libXinerama ];
-
-  nativeBuildInputs = [ perl ];
+  [ perl fltk openssl libjpeg libpng libXcursor libXi libXinerama ];
 
   configureFlags =  "--enable-ssl";
 
diff --git a/pkgs/applications/networking/browsers/dwb/default.nix b/pkgs/applications/networking/browsers/dwb/default.nix
index 6f6ffd67a539..d79a5215ce21 100644
--- a/pkgs/applications/networking/browsers/dwb/default.nix
+++ b/pkgs/applications/networking/browsers/dwb/default.nix
@@ -30,5 +30,9 @@ stdenv.mkDerivation {
     platforms = platforms.mesaPlatforms;
     maintainers = with maintainers; [ pSub ];
     license = licenses.gpl3;
+
+    # dwb is no longer maintained by portix and efforts to keep it alive
+    # were not successful, see issue #7952 for discussion.
+    broken = true;
   };
 }
diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix
index ebc05a79af9e..336c727ea151 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/default.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix
@@ -129,19 +129,9 @@ stdenv.mkDerivation {
           "$out/usr/lib/firefox-bin-${version}/$executable"
       done
 
-      for executable in \
-        firefox firefox-bin plugin-container \
-        updater crashreporter webapprt-stub \
-        components/libdbusservice.so components/libmozgnome.so \
-        gmp-clearkey/0.1/libclearkey.so \
-        browser/components/libbrowsercomps.so \
-        libnssdbm3.so libsmime3.so libxul.so  libnss3.so libplc4.so \
-        libfreebl3.so libmozsqlite3.so libmozalloc.so libnspr4.so libssl3.so \
-        libsoftokn3.so libnssutil3.so libnssckbi.so libplds4.so
-      do
+      find . -executable -type f -exec \
         patchelf --set-rpath "$libPath" \
-          "$out/usr/lib/firefox-bin-${version}/$executable"
-      done
+          "$out/usr/lib/firefox-bin-${version}/{}" \;
 
       # Create a desktop item.
       mkdir -p $out/share/applications
diff --git a/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb b/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb
index eabff067f750..b7627e52068d 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb
+++ b/pkgs/applications/networking/browsers/firefox-bin/generate_sources.rb
@@ -8,7 +8,7 @@ version = if ARGV.empty?
             ARGV[0]
           end
 
-base_path = "http://download-installer.cdn.mozilla.net/pub/firefox/releases"
+base_path = "http://archive.mozilla.org/pub/firefox/releases"
 
 Source = Struct.new(:hash, :arch, :locale, :filename)
 
diff --git a/pkgs/applications/networking/browsers/firefox-bin/sources.nix b/pkgs/applications/networking/browsers/firefox-bin/sources.nix
index ebb5348795c3..b29cdec27e97 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/sources.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/sources.nix
@@ -4,185 +4,185 @@
 # ruby generate_source.rb > source.nix
 
 {
-  version = "39.0";
+  version = "40.0.3";
   sources = [
-    { locale = "ach"; arch = "linux-i686"; sha1 = "802ac533ba95ecfb4780f84d52698a2cc2d7ac82"; }
-    { locale = "ach"; arch = "linux-x86_64"; sha1 = "3c000ef496165cb4e0e104d72a381040a3bc6787"; }
-    { locale = "af"; arch = "linux-i686"; sha1 = "6fa249f63fe690f3459f4b0112f4945a502a79eb"; }
-    { locale = "af"; arch = "linux-x86_64"; sha1 = "f22b92d0fb0ed21f0e6a3a47c5f2fe873b3bfb56"; }
-    { locale = "an"; arch = "linux-i686"; sha1 = "650c772ef89bc5ef6efe5129ddf8feaf993c8f1d"; }
-    { locale = "an"; arch = "linux-x86_64"; sha1 = "e722d65e3b9b706e6b9214ae79543130ad6dba95"; }
-    { locale = "ar"; arch = "linux-i686"; sha1 = "8ff6fbc92e5b9cedfa17eda240fc89f14eb68f73"; }
-    { locale = "ar"; arch = "linux-x86_64"; sha1 = "a1e94f56148a554e522cd317d0f2384073020278"; }
-    { locale = "as"; arch = "linux-i686"; sha1 = "c6815876c23117a462d79eb5da291610c1d96feb"; }
-    { locale = "as"; arch = "linux-x86_64"; sha1 = "629997b112da84852a01606f7fa4f15448c0ebb3"; }
-    { locale = "ast"; arch = "linux-i686"; sha1 = "acda6aefe872e4982d0e8f3ac337d4243bb5e00f"; }
-    { locale = "ast"; arch = "linux-x86_64"; sha1 = "181d998305bb75ea5e99bb1b4b5059b54a724ab9"; }
-    { locale = "az"; arch = "linux-i686"; sha1 = "230ebfaf61efac65c9daae983ec2fd854a9c1dac"; }
-    { locale = "az"; arch = "linux-x86_64"; sha1 = "a8ddb38542bce008924e4b593691ae84a839e564"; }
-    { locale = "be"; arch = "linux-i686"; sha1 = "47a242cd2c91cd7435c8c959d5eaa8595710f6aa"; }
-    { locale = "be"; arch = "linux-x86_64"; sha1 = "db62ad921f9df2683522db1968db9b79edfbadf2"; }
-    { locale = "bg"; arch = "linux-i686"; sha1 = "c2fddb3667c5bb50fee3011cfb782b2dff7f4063"; }
-    { locale = "bg"; arch = "linux-x86_64"; sha1 = "1b891a9df513e9f099f68fe2f0429b00bd12505b"; }
-    { locale = "bn-BD"; arch = "linux-i686"; sha1 = "0ad965be5c9ce5468e65667dcb0390a9afabd7b0"; }
-    { locale = "bn-BD"; arch = "linux-x86_64"; sha1 = "301b659d5689de81ca60f7092176efaf48a50a18"; }
-    { locale = "bn-IN"; arch = "linux-i686"; sha1 = "df99d9e80ebda8c146724f893ae2de77cf2518ab"; }
-    { locale = "bn-IN"; arch = "linux-x86_64"; sha1 = "4b4cc8e588a518af8a922d32163249af115fac42"; }
-    { locale = "br"; arch = "linux-i686"; sha1 = "39976bf6a0c7bdfc1832a6f2c48e92324f4a6727"; }
-    { locale = "br"; arch = "linux-x86_64"; sha1 = "ea66a36ea70486f39c7cf7abbf637d37c04d32ef"; }
-    { locale = "bs"; arch = "linux-i686"; sha1 = "71eeeccd5bf5757d6ec4f9e1442c4fcfbf312d79"; }
-    { locale = "bs"; arch = "linux-x86_64"; sha1 = "10911d28d56d4083aea7eb2174d0d7dd78772215"; }
-    { locale = "ca"; arch = "linux-i686"; sha1 = "434532ff2cca7a0401a7aed8753d1c5578e98c1a"; }
-    { locale = "ca"; arch = "linux-x86_64"; sha1 = "2a6aaed334856d06ce8c426282f3345d9bcaa435"; }
-    { locale = "cs"; arch = "linux-i686"; sha1 = "e2445b13ab680f5dfd5d67e4e796170fbd6bd120"; }
-    { locale = "cs"; arch = "linux-x86_64"; sha1 = "ef1df48bd465a3b05d1046bf4627c1ae4f60ee06"; }
-    { locale = "cy"; arch = "linux-i686"; sha1 = "f95974e478e2d0fec7400424a33202e1e2b1e5b9"; }
-    { locale = "cy"; arch = "linux-x86_64"; sha1 = "c521abab2bffe24863c087f02d57ffafae47def7"; }
-    { locale = "da"; arch = "linux-i686"; sha1 = "f11b050caae304029ccf23ce2906fe18115adbc8"; }
-    { locale = "da"; arch = "linux-x86_64"; sha1 = "800e0f3b649c9a03d4e9cd2a4ccd8f14bbb5ed95"; }
-    { locale = "de"; arch = "linux-i686"; sha1 = "b9502be9396e00b69946f0094c5939a8a57da64b"; }
-    { locale = "de"; arch = "linux-x86_64"; sha1 = "84fab2779bc055821afdb5d7ff45e3ffe95e2858"; }
-    { locale = "dsb"; arch = "linux-i686"; sha1 = "5eee946bc2182990b310ed57fbf527e82f93bc8b"; }
-    { locale = "dsb"; arch = "linux-x86_64"; sha1 = "8b3219b071e836ecc4966e153ec0adb4e691de89"; }
-    { locale = "el"; arch = "linux-i686"; sha1 = "9759c69061d6419edb949c55f7e797302b477c78"; }
-    { locale = "el"; arch = "linux-x86_64"; sha1 = "db5025d393a763c7cd4ed447d61b640ee77e7e79"; }
-    { locale = "en-GB"; arch = "linux-i686"; sha1 = "4fdc423d6d15bd6a14030a526ad7017fd5bdf937"; }
-    { locale = "en-GB"; arch = "linux-x86_64"; sha1 = "0d8637f1ca6acfe494f963c936d8510c6c11f8bf"; }
-    { locale = "en-US"; arch = "linux-i686"; sha1 = "e05722e42ea1d844d8fe40672026cacb19575ccf"; }
-    { locale = "en-US"; arch = "linux-x86_64"; sha1 = "8143b339d0ceedaf797b49ca4b54bcc0c91925e3"; }
-    { locale = "en-ZA"; arch = "linux-i686"; sha1 = "fac507eebec642fd50f248ac184dbde4538ad0bb"; }
-    { locale = "en-ZA"; arch = "linux-x86_64"; sha1 = "2670a80c7ca5d5390df9fcee907afbe7a01f9f37"; }
-    { locale = "eo"; arch = "linux-i686"; sha1 = "a134117ddd446b63f325a38f818a80921adb5b2f"; }
-    { locale = "eo"; arch = "linux-x86_64"; sha1 = "5b073a912221e8e734ba17ecfe735d820f5febf3"; }
-    { locale = "es-AR"; arch = "linux-i686"; sha1 = "0e518d9fe0644a6ada9463ae14fa67c2c49bfd5f"; }
-    { locale = "es-AR"; arch = "linux-x86_64"; sha1 = "fa33935aa4abb696ea9a399cff0c1dc29beffab0"; }
-    { locale = "es-CL"; arch = "linux-i686"; sha1 = "3c7df32ed5d2570e62e35dcb9f9d91588d7584d2"; }
-    { locale = "es-CL"; arch = "linux-x86_64"; sha1 = "ced3821f7e334b2f0d5b5115cc04cbaf5bcdbe15"; }
-    { locale = "es-ES"; arch = "linux-i686"; sha1 = "6af75a3e116162591dd6a15c8903ee5182afe03b"; }
-    { locale = "es-ES"; arch = "linux-x86_64"; sha1 = "fa1ddbc5a3d9bd7c9cc424fe6c5e94c87d51eab2"; }
-    { locale = "es-MX"; arch = "linux-i686"; sha1 = "8110bdf4c8657e88f71b8a6bec1ca92f2eac0538"; }
-    { locale = "es-MX"; arch = "linux-x86_64"; sha1 = "30df4777fde7eba8724fab002cb7387203eeb82e"; }
-    { locale = "et"; arch = "linux-i686"; sha1 = "2f16472e5cd030a14e3cfa761a32c0ef5ffd395e"; }
-    { locale = "et"; arch = "linux-x86_64"; sha1 = "19a96b008a49e7a223ea2463edab7cda504e2ba5"; }
-    { locale = "eu"; arch = "linux-i686"; sha1 = "786db5ad8d92324d3086f7b2b8da71767829a8f2"; }
-    { locale = "eu"; arch = "linux-x86_64"; sha1 = "31273f797cb90615032611d2d86cac8cf6d28994"; }
-    { locale = "fa"; arch = "linux-i686"; sha1 = "e2980430f1cd25edb401862b83fb49f2d730ff5e"; }
-    { locale = "fa"; arch = "linux-x86_64"; sha1 = "dae850824c3eaaa31fec4aad19e38e2073d96f10"; }
-    { locale = "ff"; arch = "linux-i686"; sha1 = "f865672eaa7815f3bb527baf3946c62c01c76dbb"; }
-    { locale = "ff"; arch = "linux-x86_64"; sha1 = "aa207b51d24ca275b0cbd5ba4cd93ce16a6bd28a"; }
-    { locale = "fi"; arch = "linux-i686"; sha1 = "30ef856ecdadeba171977859324f010d441a51e9"; }
-    { locale = "fi"; arch = "linux-x86_64"; sha1 = "3ebbabc2346eeac01aaf88e91fd1fd55538c0770"; }
-    { locale = "fr"; arch = "linux-i686"; sha1 = "4dd376ccc6811d46be052fcf1aab82e50a3e0999"; }
-    { locale = "fr"; arch = "linux-x86_64"; sha1 = "f6409e276b400ecaa689d92fe5387662d1b5f2ab"; }
-    { locale = "fy-NL"; arch = "linux-i686"; sha1 = "751cd1092a58a8b6cde5d9e80790715d249ac11b"; }
-    { locale = "fy-NL"; arch = "linux-x86_64"; sha1 = "3cc75c55220f81b0291c16d2f237cb6a2d2609f0"; }
-    { locale = "ga-IE"; arch = "linux-i686"; sha1 = "2bfa436c566a4e2f0fe7847feccf3c157e026d4b"; }
-    { locale = "ga-IE"; arch = "linux-x86_64"; sha1 = "0b2ce0b246e107d99b13e497c64ad169e85eec51"; }
-    { locale = "gd"; arch = "linux-i686"; sha1 = "3afc8ad8747bfcbc5a7e6f2e6de37cbefb3967e7"; }
-    { locale = "gd"; arch = "linux-x86_64"; sha1 = "5bec8bcc0a67f304485b1efa7be5d952ce7985ce"; }
-    { locale = "gl"; arch = "linux-i686"; sha1 = "8fa3dfdc0d2da19f6c98dc76363c9e0d9d10f978"; }
-    { locale = "gl"; arch = "linux-x86_64"; sha1 = "4345cf5673267fb41c2c38f5fb92a3b0a9208cf0"; }
-    { locale = "gu-IN"; arch = "linux-i686"; sha1 = "e57883626a22d3935716417194e78a689c5535c2"; }
-    { locale = "gu-IN"; arch = "linux-x86_64"; sha1 = "be6095129ee3f3fc80f6705594a53c6ced996cb2"; }
-    { locale = "he"; arch = "linux-i686"; sha1 = "7ca70c0648b2f3928c1dc33288b48f488cf1d19b"; }
-    { locale = "he"; arch = "linux-x86_64"; sha1 = "f2eb7c6c33e8b4bc9a03bee587de4fe5b442ac95"; }
-    { locale = "hi-IN"; arch = "linux-i686"; sha1 = "32b242a2c6865fdad63ba4de701c566ffb33ef99"; }
-    { locale = "hi-IN"; arch = "linux-x86_64"; sha1 = "f83ceece81a71e6fb1494863b2970b2dc384d4c4"; }
-    { locale = "hr"; arch = "linux-i686"; sha1 = "77f9c855e5f728dcd3b4ff27ed656aa67217dd35"; }
-    { locale = "hr"; arch = "linux-x86_64"; sha1 = "f48bcf72d740f4a34bb7f888d977d4d39c141567"; }
-    { locale = "hsb"; arch = "linux-i686"; sha1 = "2db09bd59f3761bfdba8bad565e27e1b42a93727"; }
-    { locale = "hsb"; arch = "linux-x86_64"; sha1 = "99e0f119e5e79df5b20f686dd065fee5bda4511f"; }
-    { locale = "hu"; arch = "linux-i686"; sha1 = "0d601a679675c517a535bf706e7cbad9882a5d7c"; }
-    { locale = "hu"; arch = "linux-x86_64"; sha1 = "dbd3d180342d0946ab857bdd8d6bc30373e991b5"; }
-    { locale = "hy-AM"; arch = "linux-i686"; sha1 = "5f3e01cf375af38bee7014ff21fe75daf4e27071"; }
-    { locale = "hy-AM"; arch = "linux-x86_64"; sha1 = "a78fbb1cc4e6d10056cc7a3ccecf4750979c5953"; }
-    { locale = "id"; arch = "linux-i686"; sha1 = "7efc031614247ddb93a27531d3fa1d19ce21d516"; }
-    { locale = "id"; arch = "linux-x86_64"; sha1 = "e409bb73aad373791d83569dfb4a475bc617eac8"; }
-    { locale = "is"; arch = "linux-i686"; sha1 = "0e5c4e9173379457b6c8edd1812121fce84cda07"; }
-    { locale = "is"; arch = "linux-x86_64"; sha1 = "dc6cbffde61b6188080e458b4a31b634f4c0434c"; }
-    { locale = "it"; arch = "linux-i686"; sha1 = "d75318f8421f634eeacf15aaa91a28261324044c"; }
-    { locale = "it"; arch = "linux-x86_64"; sha1 = "b024d0e3498c3dd32757997a273d9f1051ccd47f"; }
-    { locale = "ja"; arch = "linux-i686"; sha1 = "f74c1c567582a207efb501892845d1c28d7b8751"; }
-    { locale = "ja"; arch = "linux-x86_64"; sha1 = "cb4151c0c1c6efa4c8ec5e4656de60b1abd65bac"; }
-    { locale = "kk"; arch = "linux-i686"; sha1 = "1e9d43eedb0bab9f428a80ee3c2721a944961562"; }
-    { locale = "kk"; arch = "linux-x86_64"; sha1 = "18a55f6ea18663922052411ebaed18c16c9f3050"; }
-    { locale = "km"; arch = "linux-i686"; sha1 = "f4f6af5a09072e004e7c8db7a10edc9ab8d474c3"; }
-    { locale = "km"; arch = "linux-x86_64"; sha1 = "43694f66fea7caf9b2f4d976564c00a99f7092e7"; }
-    { locale = "kn"; arch = "linux-i686"; sha1 = "3a94f8a0cadc729e97bb6a7b273b02d79c9012dd"; }
-    { locale = "kn"; arch = "linux-x86_64"; sha1 = "ec51644f69354aebac67f36e387d1a5b45d0dfa8"; }
-    { locale = "ko"; arch = "linux-i686"; sha1 = "599de739c08799b8e4082190a53de3ae0dfc6617"; }
-    { locale = "ko"; arch = "linux-x86_64"; sha1 = "338825804362d34911beaad146ca6d104bc69788"; }
-    { locale = "lij"; arch = "linux-i686"; sha1 = "f2a6112a81043cc9608594cd56680a2e075dfd36"; }
-    { locale = "lij"; arch = "linux-x86_64"; sha1 = "8650de76d89abdcba3d0e4bba8c2b90533e54ce6"; }
-    { locale = "lt"; arch = "linux-i686"; sha1 = "0ea6e49b51dfd12150334b6023e26419716cdb65"; }
-    { locale = "lt"; arch = "linux-x86_64"; sha1 = "a16c9e916462e3780159677528ffa35b9569a80b"; }
-    { locale = "lv"; arch = "linux-i686"; sha1 = "0255634959aa739ae6807a1c249e4c78f51f8316"; }
-    { locale = "lv"; arch = "linux-x86_64"; sha1 = "ada8dc2d3ea22c2afffac88b581dfc72a27f2f89"; }
-    { locale = "mai"; arch = "linux-i686"; sha1 = "fa932b9e6d9798753e7b89b91a5db6565fe2b695"; }
-    { locale = "mai"; arch = "linux-x86_64"; sha1 = "8a9252658d549d2cbc764197265275461db605b6"; }
-    { locale = "mk"; arch = "linux-i686"; sha1 = "641c882870dfa7fb23bed9c07def585477ff459d"; }
-    { locale = "mk"; arch = "linux-x86_64"; sha1 = "4b68d11f2a613bc8350d37dae899c2c65afe5dc9"; }
-    { locale = "ml"; arch = "linux-i686"; sha1 = "f636e9b8d5e268f7c124ef3f35f6933de83fed62"; }
-    { locale = "ml"; arch = "linux-x86_64"; sha1 = "ed98b20d8eb88a73b119c3a1435904f69529eabd"; }
-    { locale = "mr"; arch = "linux-i686"; sha1 = "d5ef4d4dbf4d0b63f526d102e95f28078096032a"; }
-    { locale = "mr"; arch = "linux-x86_64"; sha1 = "8e92bf456593359afb256c387578042c6085916f"; }
-    { locale = "ms"; arch = "linux-i686"; sha1 = "d94320d0c8aee23b6d3c603664caab45180b6069"; }
-    { locale = "ms"; arch = "linux-x86_64"; sha1 = "b9fdc0248d9656b3555c475643c7e07ca3c6b222"; }
-    { locale = "nb-NO"; arch = "linux-i686"; sha1 = "d49719c255a43151ed5e94d7024c39914ea27ec7"; }
-    { locale = "nb-NO"; arch = "linux-x86_64"; sha1 = "f2b1f00254ef350f817b5c1958384a9f5144f83e"; }
-    { locale = "nl"; arch = "linux-i686"; sha1 = "cc54828041f57f623de691a49e4bb055bd059c54"; }
-    { locale = "nl"; arch = "linux-x86_64"; sha1 = "5728a30bf53644a3b13bc00f5652e067cbe9100b"; }
-    { locale = "nn-NO"; arch = "linux-i686"; sha1 = "0f69ddbd963a19d104ee96589c405c55aa7140b2"; }
-    { locale = "nn-NO"; arch = "linux-x86_64"; sha1 = "26af2b8cf928fedb5442c5257289f5e38c4f8432"; }
-    { locale = "or"; arch = "linux-i686"; sha1 = "2da0842ebe8ae5a8e80061d0fc159a5d408c4464"; }
-    { locale = "or"; arch = "linux-x86_64"; sha1 = "b7cc446178a493589d8654236f6e9113aee48455"; }
-    { locale = "pa-IN"; arch = "linux-i686"; sha1 = "dd81dc403366a7fd0d395338878b8b8fcb858365"; }
-    { locale = "pa-IN"; arch = "linux-x86_64"; sha1 = "2ca8cc4c491f0ded4cef8e3826a3c1419a580051"; }
-    { locale = "pl"; arch = "linux-i686"; sha1 = "468d45392126ac7852012ed43d76d83e238dc2ac"; }
-    { locale = "pl"; arch = "linux-x86_64"; sha1 = "ed20af16563516671f32bb588728e90f29955964"; }
-    { locale = "pt-BR"; arch = "linux-i686"; sha1 = "b197bca20e972ce2f8851dc128fb212a7d293454"; }
-    { locale = "pt-BR"; arch = "linux-x86_64"; sha1 = "2cd05329c3612330fdc1354fe651cc13ab8d9a5f"; }
-    { locale = "pt-PT"; arch = "linux-i686"; sha1 = "1087ba6ba17aa102888e929ccf7acc6b2476e447"; }
-    { locale = "pt-PT"; arch = "linux-x86_64"; sha1 = "aa1907c10e980a8466c1604519ffa08aaabb2d7c"; }
-    { locale = "rm"; arch = "linux-i686"; sha1 = "fdb717a0f40b94a53077ff036a55c0f93b61a2cc"; }
-    { locale = "rm"; arch = "linux-x86_64"; sha1 = "af10206080a7ad21e5fda9cdf66a734ee33b07ac"; }
-    { locale = "ro"; arch = "linux-i686"; sha1 = "f08c67c6ea2a63c216f944453b4ce8b36f4ed840"; }
-    { locale = "ro"; arch = "linux-x86_64"; sha1 = "07efb37804ffab35f117eb32f9f645b554ac1dd8"; }
-    { locale = "ru"; arch = "linux-i686"; sha1 = "874f588d7ac5554ae4e8e134bfc272897f839f97"; }
-    { locale = "ru"; arch = "linux-x86_64"; sha1 = "af64b6eb8d33d6bd78ce86e4785be50babe5c919"; }
-    { locale = "si"; arch = "linux-i686"; sha1 = "672523b996c7021e06b4a713f7ac1239a3b1800f"; }
-    { locale = "si"; arch = "linux-x86_64"; sha1 = "2e594b56230c079a9f1735e9bab9dc4a9d9e31ab"; }
-    { locale = "sk"; arch = "linux-i686"; sha1 = "6edffa576d9829673c65400d4570b34dc787faad"; }
-    { locale = "sk"; arch = "linux-x86_64"; sha1 = "7b506fedbf3a25cd1ed54b05c9b5cb7b8c237ad8"; }
-    { locale = "sl"; arch = "linux-i686"; sha1 = "e8d1fea389b7cb75b7ccbf22ad5b8691e9bf1b6a"; }
-    { locale = "sl"; arch = "linux-x86_64"; sha1 = "20163798733ee36ffa510987b18d1eb67b82aca1"; }
-    { locale = "son"; arch = "linux-i686"; sha1 = "9076d0e9de6adb7fbd26dbd3cd89dd5728939aab"; }
-    { locale = "son"; arch = "linux-x86_64"; sha1 = "352aeb9f5ccb1e3bb87c8e47f93e96a049991412"; }
-    { locale = "sq"; arch = "linux-i686"; sha1 = "838c4c525a9f93117704851ad81b2c199a9c28fc"; }
-    { locale = "sq"; arch = "linux-x86_64"; sha1 = "0139a064056da0ed1730fd768da1322a9661bca9"; }
-    { locale = "sr"; arch = "linux-i686"; sha1 = "7d74018cd9948ee31e05b30ff1fb45a84d417494"; }
-    { locale = "sr"; arch = "linux-x86_64"; sha1 = "85c43e2359f444faf111efd83fb0dc3e1b0edb48"; }
-    { locale = "sv-SE"; arch = "linux-i686"; sha1 = "bc95ee926f82aba58691d923eb4cb963aa4cb64a"; }
-    { locale = "sv-SE"; arch = "linux-x86_64"; sha1 = "7c8946d6180e2c48a80958b6a790bf6c9231591e"; }
-    { locale = "ta"; arch = "linux-i686"; sha1 = "dfaad8f934869d714c94a95a775bcdcd67fda3c4"; }
-    { locale = "ta"; arch = "linux-x86_64"; sha1 = "5523c6df4e2b03ae71c865aabe6bb0dd0446fc87"; }
-    { locale = "te"; arch = "linux-i686"; sha1 = "7a61ca88c832af3d15f197ba01d66c6fc43465d3"; }
-    { locale = "te"; arch = "linux-x86_64"; sha1 = "696823890791a05c6cf0230d1063a30012873090"; }
-    { locale = "th"; arch = "linux-i686"; sha1 = "4a3b932813ad0ab07f467a598e9e85b847bbe142"; }
-    { locale = "th"; arch = "linux-x86_64"; sha1 = "f847f3f0fb07f97053066f4b4314d93e9614e6cf"; }
-    { locale = "tr"; arch = "linux-i686"; sha1 = "59eee567e30cf6321c234c60002b416faec07aa4"; }
-    { locale = "tr"; arch = "linux-x86_64"; sha1 = "b64dfdbdc75f87003f00883173084646a2617a29"; }
-    { locale = "uk"; arch = "linux-i686"; sha1 = "44e6b53ede97835847ed84defe4235cad513c653"; }
-    { locale = "uk"; arch = "linux-x86_64"; sha1 = "bb6f84f58a19c6287bbc84e0e7101fcd48bd720a"; }
-    { locale = "uz"; arch = "linux-i686"; sha1 = "1aec3ba9efd52a1f386e0bb075745a7c01c443a2"; }
-    { locale = "uz"; arch = "linux-x86_64"; sha1 = "2ce2caccb638c0467ba1382a15146ef1cc33fa72"; }
-    { locale = "vi"; arch = "linux-i686"; sha1 = "d8b339892c152254c89ec1d42ff9b7f128455aab"; }
-    { locale = "vi"; arch = "linux-x86_64"; sha1 = "e4503686f2a997e1c793ef8e3c80bccd3dc0e2f0"; }
-    { locale = "xh"; arch = "linux-i686"; sha1 = "d130fae691b91a1f1f7d15ca84f643ccf299b0e3"; }
-    { locale = "xh"; arch = "linux-x86_64"; sha1 = "18b5d09571f4db7b18dbbdb3f3c29c80480a16aa"; }
-    { locale = "zh-CN"; arch = "linux-i686"; sha1 = "303816f99659e2bbb8ecc4f9b1c83932a0c9205d"; }
-    { locale = "zh-CN"; arch = "linux-x86_64"; sha1 = "238b50b8bb745f2d80099354592c9b710c55f1d8"; }
-    { locale = "zh-TW"; arch = "linux-i686"; sha1 = "9159a6fea44a97a33390c527abf7730cdbbc9216"; }
-    { locale = "zh-TW"; arch = "linux-x86_64"; sha1 = "74e3c2292aed9c2a7de24d6f3693ac1d0ba4c41f"; }
+    { locale = "ach"; arch = "linux-i686"; sha1 = "68adee53b26075e18d0ef4d43da4260ec274d861"; }
+    { locale = "ach"; arch = "linux-x86_64"; sha1 = "8e2cc81fc414fb71e5a83c40b4a4197f6648af78"; }
+    { locale = "af"; arch = "linux-i686"; sha1 = "f36ae5a72738cfa70c6824a5929cb14faa60be1b"; }
+    { locale = "af"; arch = "linux-x86_64"; sha1 = "4b7a01e76db920d4aa1cbeb556cbe91b37070304"; }
+    { locale = "an"; arch = "linux-i686"; sha1 = "a71cc4c7f988f1b5470dec60a73643f53104a1b2"; }
+    { locale = "an"; arch = "linux-x86_64"; sha1 = "1c47a2b37a88d405a819c7bdbe84489a31e838dd"; }
+    { locale = "ar"; arch = "linux-i686"; sha1 = "d25ec2c169ea9a953636e0cbd4049095834c808d"; }
+    { locale = "ar"; arch = "linux-x86_64"; sha1 = "5f588ffb8e21ea15fb78dca128a33be734575e3e"; }
+    { locale = "as"; arch = "linux-i686"; sha1 = "aadbbc147c65d2436916e81bb43ca342f5c19a9d"; }
+    { locale = "as"; arch = "linux-x86_64"; sha1 = "9e04c39967e0a667b5a33f7436d555ac25ea4240"; }
+    { locale = "ast"; arch = "linux-i686"; sha1 = "9062edea598e4ec354259268be1fa2f85b8ba6d0"; }
+    { locale = "ast"; arch = "linux-x86_64"; sha1 = "98e6cac1de95a571ea6f88b18970c11b8056b8cb"; }
+    { locale = "az"; arch = "linux-i686"; sha1 = "4c23a1fb7e8ecdd1e20f9d398c387fbd766fa51e"; }
+    { locale = "az"; arch = "linux-x86_64"; sha1 = "5b4bb2a9906c7475c718ad0abd299606718c3880"; }
+    { locale = "be"; arch = "linux-i686"; sha1 = "e10d45e9c2de22d9af5db6750f5466d0fddce6d8"; }
+    { locale = "be"; arch = "linux-x86_64"; sha1 = "ce70351af3ce9f27051ae14e9a529cba9876aeb8"; }
+    { locale = "bg"; arch = "linux-i686"; sha1 = "e9546468eb2ddf67ea93563bd1a1c69736effa6b"; }
+    { locale = "bg"; arch = "linux-x86_64"; sha1 = "fb734bc851775335e4dbd795fb7a56ca30a2a7ae"; }
+    { locale = "bn-BD"; arch = "linux-i686"; sha1 = "36aeba40a75a80ab186bab0024607a263c92a8b5"; }
+    { locale = "bn-BD"; arch = "linux-x86_64"; sha1 = "e6f3833728864120906a7409561c09ace56713bb"; }
+    { locale = "bn-IN"; arch = "linux-i686"; sha1 = "c641603161439f8c982952db76a9a947a5e68f5f"; }
+    { locale = "bn-IN"; arch = "linux-x86_64"; sha1 = "97f560a79f9dffd208cc572875c9bd683ce7e0f7"; }
+    { locale = "br"; arch = "linux-i686"; sha1 = "08e490ecf22f1e6e2646ddb1bba508835593b6ae"; }
+    { locale = "br"; arch = "linux-x86_64"; sha1 = "e0b84df55b0ae2e216196037f62004d11074c618"; }
+    { locale = "bs"; arch = "linux-i686"; sha1 = "8f2f9e0870b27f4d184ee98052a78eff64192981"; }
+    { locale = "bs"; arch = "linux-x86_64"; sha1 = "8fbf417d8e2fe33d926bafc0fe4a4b433bd4ac93"; }
+    { locale = "ca"; arch = "linux-i686"; sha1 = "db308680eda482ebe59bd7807e433a3761b69160"; }
+    { locale = "ca"; arch = "linux-x86_64"; sha1 = "888fe735b223b2d233900c1f356de187a92eca02"; }
+    { locale = "cs"; arch = "linux-i686"; sha1 = "c3a185149605ec5818de19047c3a9be4cc8800b6"; }
+    { locale = "cs"; arch = "linux-x86_64"; sha1 = "6e6477d578bec18d7e67d35012c5d019f4055c65"; }
+    { locale = "cy"; arch = "linux-i686"; sha1 = "7990f07ca2fc0f28bdd2e96d5fe227b29f6eebaf"; }
+    { locale = "cy"; arch = "linux-x86_64"; sha1 = "11457870a82224739a5b02e7645703613b7c207b"; }
+    { locale = "da"; arch = "linux-i686"; sha1 = "9d96c67f5b22e6f8c114dd39230c666778d872b6"; }
+    { locale = "da"; arch = "linux-x86_64"; sha1 = "bff7b7716f2195fbb8e746b8e65498283c872710"; }
+    { locale = "de"; arch = "linux-i686"; sha1 = "7de018d1749c18a37da19db55a3070ef84e62ce4"; }
+    { locale = "de"; arch = "linux-x86_64"; sha1 = "44fe11de7503409417ad9c7ae0bf39c425c2dc90"; }
+    { locale = "dsb"; arch = "linux-i686"; sha1 = "2f9a019ff89e8b20d22d2e22cf58002a4d627228"; }
+    { locale = "dsb"; arch = "linux-x86_64"; sha1 = "f708084b81a3a98ac64e0e2ea4b6f97fe48a7209"; }
+    { locale = "el"; arch = "linux-i686"; sha1 = "77ddde8a32e0d81d5d7e136324117a4e07aaf7f0"; }
+    { locale = "el"; arch = "linux-x86_64"; sha1 = "dce4f745d77da895075b10f921b445e0df349edd"; }
+    { locale = "en-GB"; arch = "linux-i686"; sha1 = "7de8827e2929114f869af44e90dbac306b0ce9e7"; }
+    { locale = "en-GB"; arch = "linux-x86_64"; sha1 = "ead42059b82f9ab565a34fa3d6b3bc0f5a211a50"; }
+    { locale = "en-US"; arch = "linux-i686"; sha1 = "765f0120c223d07e84bc3ebf00eeef2e2907640e"; }
+    { locale = "en-US"; arch = "linux-x86_64"; sha1 = "0a317d7a0926e29e6dc8c563cf09fe667141da7d"; }
+    { locale = "en-ZA"; arch = "linux-i686"; sha1 = "52629a4afcc9f3224e3a8fdd12f2385ffd21cf00"; }
+    { locale = "en-ZA"; arch = "linux-x86_64"; sha1 = "d2fa0d6970a88de5125d89ae8263517a9bbc2346"; }
+    { locale = "eo"; arch = "linux-i686"; sha1 = "fbd01eae326465a8f4efeb08ff44d27f04e2ed66"; }
+    { locale = "eo"; arch = "linux-x86_64"; sha1 = "08b0f4d181ce1f0db0a799a7876315c6752c76af"; }
+    { locale = "es-AR"; arch = "linux-i686"; sha1 = "1a6d77533438619715e37b43c97f131ac7066ac0"; }
+    { locale = "es-AR"; arch = "linux-x86_64"; sha1 = "fae63a4b373d2074775dfa67ba7d4320cad59e61"; }
+    { locale = "es-CL"; arch = "linux-i686"; sha1 = "6068e7326eddf2d36afdd20dee1dd433abb0e3d0"; }
+    { locale = "es-CL"; arch = "linux-x86_64"; sha1 = "010544ad413acf7210c10aa3dc99ef0cdab6b475"; }
+    { locale = "es-ES"; arch = "linux-i686"; sha1 = "0378eb7346f686a8a25c71febfd933f3080e7e29"; }
+    { locale = "es-ES"; arch = "linux-x86_64"; sha1 = "01647b2981d62e2171f9e7b6e8286c542a00583a"; }
+    { locale = "es-MX"; arch = "linux-i686"; sha1 = "0f6194bce1a065d7b41fd8a46c52ea38874e9e56"; }
+    { locale = "es-MX"; arch = "linux-x86_64"; sha1 = "04f6cb55cb4f9171adf14c7a11ec0271d6c2cf3e"; }
+    { locale = "et"; arch = "linux-i686"; sha1 = "1da33a7e75efca19810ab7e739f2b81e0d48c379"; }
+    { locale = "et"; arch = "linux-x86_64"; sha1 = "44d8f989b04b16eff2bcf4945d3fa4387279dfc7"; }
+    { locale = "eu"; arch = "linux-i686"; sha1 = "60306283826c048acb1ad0232e9c1461f49f2a95"; }
+    { locale = "eu"; arch = "linux-x86_64"; sha1 = "16de3bde630a31c9330fd87ed7d994443371d84e"; }
+    { locale = "fa"; arch = "linux-i686"; sha1 = "728780b2668bb107db51f3804a53923d1a7c8298"; }
+    { locale = "fa"; arch = "linux-x86_64"; sha1 = "b31affd14286e7462e6c3bca472d88025c2b917b"; }
+    { locale = "ff"; arch = "linux-i686"; sha1 = "52d009168db00b167df1890dee39580ccca36ab6"; }
+    { locale = "ff"; arch = "linux-x86_64"; sha1 = "d65def2945ea4222965fa16e653cd0db8eec9454"; }
+    { locale = "fi"; arch = "linux-i686"; sha1 = "f62e88efed3d68b1ad88dfe9e8111d213b2c713b"; }
+    { locale = "fi"; arch = "linux-x86_64"; sha1 = "708ffd36d036b4c652ac1f20bf0cba2140035bc9"; }
+    { locale = "fr"; arch = "linux-i686"; sha1 = "310076f077abdd7834f341091a9541a27ce1f6ce"; }
+    { locale = "fr"; arch = "linux-x86_64"; sha1 = "5b2e56cf8173b5c4ab0949d9f5d099dbca8f27cb"; }
+    { locale = "fy-NL"; arch = "linux-i686"; sha1 = "de33f286bf9c6461335dc7cc9b997c6f52de34f6"; }
+    { locale = "fy-NL"; arch = "linux-x86_64"; sha1 = "b53848124a0d3d1d71a4e802d99a4344edd91e03"; }
+    { locale = "ga-IE"; arch = "linux-i686"; sha1 = "f3bdd90591fbaa6a15b1ae671e8633af3a2765ea"; }
+    { locale = "ga-IE"; arch = "linux-x86_64"; sha1 = "c8594b0932650c5850a84a35953b7116c432d0a9"; }
+    { locale = "gd"; arch = "linux-i686"; sha1 = "546818b38dc2e21afa2a51a29c2148bfe39ce33b"; }
+    { locale = "gd"; arch = "linux-x86_64"; sha1 = "a70e63927324099122edc032bb699e058c1ef36c"; }
+    { locale = "gl"; arch = "linux-i686"; sha1 = "75d6dc5dc3adc964be970dddc128e13baaac23dd"; }
+    { locale = "gl"; arch = "linux-x86_64"; sha1 = "2eba733d65e7582a23d84392288d10336e978009"; }
+    { locale = "gu-IN"; arch = "linux-i686"; sha1 = "97285fae817794cc05e9a121c33aafeff77442cb"; }
+    { locale = "gu-IN"; arch = "linux-x86_64"; sha1 = "063536c1cbc29c430a8e01674f3bb62ed94e18d9"; }
+    { locale = "he"; arch = "linux-i686"; sha1 = "a4be53b79cd1027f517562a0723233643b6e2020"; }
+    { locale = "he"; arch = "linux-x86_64"; sha1 = "4fcaf3a6347beaac041f9095609a92c03700e911"; }
+    { locale = "hi-IN"; arch = "linux-i686"; sha1 = "80d5db7c9a65de398663b3dc659723b12cdbe502"; }
+    { locale = "hi-IN"; arch = "linux-x86_64"; sha1 = "920bd570abce26d713f11666852fcf5d37d00331"; }
+    { locale = "hr"; arch = "linux-i686"; sha1 = "5de961d08a5bba30245b714271ab4ed5d24a3bc4"; }
+    { locale = "hr"; arch = "linux-x86_64"; sha1 = "fb30c3ab5b224a38416eb783ee30c3aa8b4a743b"; }
+    { locale = "hsb"; arch = "linux-i686"; sha1 = "31113c1b61217820f9a9e3dcace821aef612edd7"; }
+    { locale = "hsb"; arch = "linux-x86_64"; sha1 = "381bce247ea65fee04ee94d56e70cd30cc6959bd"; }
+    { locale = "hu"; arch = "linux-i686"; sha1 = "90515b7c36553cdf6b88b44146766c52d1a7acd5"; }
+    { locale = "hu"; arch = "linux-x86_64"; sha1 = "be0542fc76fedf82b46031dbeb9f4173be2a5313"; }
+    { locale = "hy-AM"; arch = "linux-i686"; sha1 = "4389ed68236bdc4697f3c8e5c53fe986ccb5f277"; }
+    { locale = "hy-AM"; arch = "linux-x86_64"; sha1 = "0bb311890b604d1300ffa887984b4217cfb3b925"; }
+    { locale = "id"; arch = "linux-i686"; sha1 = "8415b519f19a3c52a5d8418046a7a67d118a38e1"; }
+    { locale = "id"; arch = "linux-x86_64"; sha1 = "e492caab12e6dace9dc763209a8b0803e8216d2f"; }
+    { locale = "is"; arch = "linux-i686"; sha1 = "663d406a587449f33561173d6e6d275964b9172d"; }
+    { locale = "is"; arch = "linux-x86_64"; sha1 = "0f649b13c2dad302b0cf449915f5c1a5ab7e198c"; }
+    { locale = "it"; arch = "linux-i686"; sha1 = "490aeed8cd9878d0f22ea99df674d1dbe134a6f3"; }
+    { locale = "it"; arch = "linux-x86_64"; sha1 = "2fbe0baed7379d717174be8dee4b879e6e4afd81"; }
+    { locale = "ja"; arch = "linux-i686"; sha1 = "64144069a001bce53651aa5b8ec835c8c61bce1b"; }
+    { locale = "ja"; arch = "linux-x86_64"; sha1 = "66563588c41fed8e542c89756dc235773c6d201b"; }
+    { locale = "kk"; arch = "linux-i686"; sha1 = "c7e4a6544d4062958d48be26df3738b15871edcd"; }
+    { locale = "kk"; arch = "linux-x86_64"; sha1 = "5a0c5b2dd2dfe83ea9551fd63c249bc6b41c8afc"; }
+    { locale = "km"; arch = "linux-i686"; sha1 = "5f8bbbd2b77447660022464d19b3bb316eeb6b53"; }
+    { locale = "km"; arch = "linux-x86_64"; sha1 = "8211373a9ab45f43f2a895049f49c2b9b7af3670"; }
+    { locale = "kn"; arch = "linux-i686"; sha1 = "48b72a568ea55462d0d80194292ada525d24ee10"; }
+    { locale = "kn"; arch = "linux-x86_64"; sha1 = "27fbe84930417244c900ae864589fd063358e741"; }
+    { locale = "ko"; arch = "linux-i686"; sha1 = "f185c79195b7018edc97bd698d2f2f4f0f619968"; }
+    { locale = "ko"; arch = "linux-x86_64"; sha1 = "bcb4ceb162ae954a6c79ac6e83655b981eb0c168"; }
+    { locale = "lij"; arch = "linux-i686"; sha1 = "037516a147c18d03a74243ea680ec2da7b893b2f"; }
+    { locale = "lij"; arch = "linux-x86_64"; sha1 = "1a2efb6b3253da2e525b25b1e5cf794da203a112"; }
+    { locale = "lt"; arch = "linux-i686"; sha1 = "0200e608a4339158bafdafe32f39581d11ca4fea"; }
+    { locale = "lt"; arch = "linux-x86_64"; sha1 = "b5dd68b8d170b577f49508db110a7e3ef9aa1504"; }
+    { locale = "lv"; arch = "linux-i686"; sha1 = "5d9a22b515130e8c351fbbc71c5ee9c2586a98ca"; }
+    { locale = "lv"; arch = "linux-x86_64"; sha1 = "2b49dc4f3e43c4812239798b9096f4e89c5dc101"; }
+    { locale = "mai"; arch = "linux-i686"; sha1 = "530dfc4740f6c9c45163d51a49d4f6da8a1442c2"; }
+    { locale = "mai"; arch = "linux-x86_64"; sha1 = "927c9ca797e463336a8a7c66fef59fa585a0e985"; }
+    { locale = "mk"; arch = "linux-i686"; sha1 = "71984f44931f8c6e21a0e5a78d33301e9efd0c56"; }
+    { locale = "mk"; arch = "linux-x86_64"; sha1 = "14df4792bebc70fb27aba0e8fa9fa570b3c66cd2"; }
+    { locale = "ml"; arch = "linux-i686"; sha1 = "8301bc4d6919b849e1e0529d79fd56dfd7941e96"; }
+    { locale = "ml"; arch = "linux-x86_64"; sha1 = "5f7f352c4c6a316bfd8aa825771178be5e15def0"; }
+    { locale = "mr"; arch = "linux-i686"; sha1 = "2da181729cd1b9816d9530bfe2da47324595ceae"; }
+    { locale = "mr"; arch = "linux-x86_64"; sha1 = "4665e54e425d3b783c2ef045c7d4908862a604db"; }
+    { locale = "ms"; arch = "linux-i686"; sha1 = "48c57c3952cd918b4547f3aa17e52f856cb441d6"; }
+    { locale = "ms"; arch = "linux-x86_64"; sha1 = "769b7e80547be03bc81153c56da69b0660672a5b"; }
+    { locale = "nb-NO"; arch = "linux-i686"; sha1 = "c5123a9df2463883c38d748c360476ec16afafbd"; }
+    { locale = "nb-NO"; arch = "linux-x86_64"; sha1 = "50899fd2ddeeaa0011aa68f80ea23af808a2b13d"; }
+    { locale = "nl"; arch = "linux-i686"; sha1 = "8d2fa9624fe78538ac3be7afef67b5f077ea9087"; }
+    { locale = "nl"; arch = "linux-x86_64"; sha1 = "1ce05cc5d619ad8056720ee0a3aa1c142d323577"; }
+    { locale = "nn-NO"; arch = "linux-i686"; sha1 = "fc1e15e364b4b35ee097cb8a8e58f193cfab07fe"; }
+    { locale = "nn-NO"; arch = "linux-x86_64"; sha1 = "750189f10439b7d0592b5b1e5478571778a7b80c"; }
+    { locale = "or"; arch = "linux-i686"; sha1 = "562b5113560d43ab0332f12eb5b77f700adc3cac"; }
+    { locale = "or"; arch = "linux-x86_64"; sha1 = "7eea2b63095baaaf4077d21aec79a0262014231f"; }
+    { locale = "pa-IN"; arch = "linux-i686"; sha1 = "a474b711304003f7872f4d89482e460d6a5c6809"; }
+    { locale = "pa-IN"; arch = "linux-x86_64"; sha1 = "b44b52752754082dafa7cc2fe3ab820c15ad9dee"; }
+    { locale = "pl"; arch = "linux-i686"; sha1 = "5b4b8acd59a82feed1015e96efef60693bebc670"; }
+    { locale = "pl"; arch = "linux-x86_64"; sha1 = "be13540ad54f006884e5b15c80e60c24739a3afd"; }
+    { locale = "pt-BR"; arch = "linux-i686"; sha1 = "289f94519a382e07e9ea85c09c50ee0c1e4c78f8"; }
+    { locale = "pt-BR"; arch = "linux-x86_64"; sha1 = "ee789e0347ae16caeb803db227f917c2dec7402f"; }
+    { locale = "pt-PT"; arch = "linux-i686"; sha1 = "fdef92aba85eb308f77d5d218eab13ce1869720d"; }
+    { locale = "pt-PT"; arch = "linux-x86_64"; sha1 = "dac1e72db319e193b014d53ec2a937939bfda4ee"; }
+    { locale = "rm"; arch = "linux-i686"; sha1 = "8bdee17c004721832b978028c8249151522d1a53"; }
+    { locale = "rm"; arch = "linux-x86_64"; sha1 = "876ea6b07a58dcab72cc431bd4a956f6631616a4"; }
+    { locale = "ro"; arch = "linux-i686"; sha1 = "4de224d9b431e802274878b1ded2831a7976772d"; }
+    { locale = "ro"; arch = "linux-x86_64"; sha1 = "a620baccf62ead31da80d384ea65db816240180f"; }
+    { locale = "ru"; arch = "linux-i686"; sha1 = "979efbef49bbe7bdd21bb8b6cddf1c79d21e6d7c"; }
+    { locale = "ru"; arch = "linux-x86_64"; sha1 = "cce4b5be59a7072aee27b27496cfd2b36995592e"; }
+    { locale = "si"; arch = "linux-i686"; sha1 = "64fce36b5536da41b0d6e2144b1d8458fd29c1ec"; }
+    { locale = "si"; arch = "linux-x86_64"; sha1 = "cdf1ccb39f324ada803ebc606ef86f96b813151b"; }
+    { locale = "sk"; arch = "linux-i686"; sha1 = "a9933f868908c2dd361df41836c8af32e5849f48"; }
+    { locale = "sk"; arch = "linux-x86_64"; sha1 = "5462d38f1ea28c5a0abf7523f039f5ae0b4e860a"; }
+    { locale = "sl"; arch = "linux-i686"; sha1 = "a7e555402c5d7460696b86a2001333f66951a4b1"; }
+    { locale = "sl"; arch = "linux-x86_64"; sha1 = "ded2864cea9cdb70f25eaea61d6be6d4d5aaf822"; }
+    { locale = "son"; arch = "linux-i686"; sha1 = "fe596ad2b09ada772a38e7504f56776ee382851e"; }
+    { locale = "son"; arch = "linux-x86_64"; sha1 = "c920476a3e726708b447a7c3f9b38223fb5c705c"; }
+    { locale = "sq"; arch = "linux-i686"; sha1 = "16b4033cd9a05717ba5b32e57935a2a9b2e86e1e"; }
+    { locale = "sq"; arch = "linux-x86_64"; sha1 = "dfbf24d40bd5c098aa4c00be18db9adeb278b8a1"; }
+    { locale = "sr"; arch = "linux-i686"; sha1 = "18e143882f23f6bd2ea7b99849d840c5649b67da"; }
+    { locale = "sr"; arch = "linux-x86_64"; sha1 = "c748cbc2444151a2df6dc497b26bb6107cf603a0"; }
+    { locale = "sv-SE"; arch = "linux-i686"; sha1 = "36abc5c42eaf284249612e2bcf5940aeedadc6b7"; }
+    { locale = "sv-SE"; arch = "linux-x86_64"; sha1 = "73e1b14a3f00d73f85aced9b83cc281da6fff8eb"; }
+    { locale = "ta"; arch = "linux-i686"; sha1 = "621451f0be0f7d3edab0f4fdfaa2199d7e18941b"; }
+    { locale = "ta"; arch = "linux-x86_64"; sha1 = "89a750bd28b600375823f92fac3c1ac28e26f24a"; }
+    { locale = "te"; arch = "linux-i686"; sha1 = "0cab27456eb5b5124a848c1fcda70e3d8f2fd9d9"; }
+    { locale = "te"; arch = "linux-x86_64"; sha1 = "80c1b1e5cc6385f1e8b6922024726c36bc3360fb"; }
+    { locale = "th"; arch = "linux-i686"; sha1 = "4c23cebce4f2548f8692d5d36ab4295bc05a4597"; }
+    { locale = "th"; arch = "linux-x86_64"; sha1 = "e06d1ae0f6dc90766de010102864da5cccca14df"; }
+    { locale = "tr"; arch = "linux-i686"; sha1 = "0916aaa3a68831ad887708d13770e29edd129ea9"; }
+    { locale = "tr"; arch = "linux-x86_64"; sha1 = "a875fa64a788e3fe4b115fc01ad47b631d8aba27"; }
+    { locale = "uk"; arch = "linux-i686"; sha1 = "d9054dcf7d37ee6e88e462926d5f769bc1392342"; }
+    { locale = "uk"; arch = "linux-x86_64"; sha1 = "da23b4a2c9e4434ff927c6af81a3c823e546c24e"; }
+    { locale = "uz"; arch = "linux-i686"; sha1 = "ee12407db146542b1094342fd618678a8f6d20a3"; }
+    { locale = "uz"; arch = "linux-x86_64"; sha1 = "e4c433f31561006c5ba891ca701a03713d30e115"; }
+    { locale = "vi"; arch = "linux-i686"; sha1 = "07d95dbe0e967732a90b8c6dd1366010791a5286"; }
+    { locale = "vi"; arch = "linux-x86_64"; sha1 = "18b0a04c1e38476d85457b0a79942dbe2a0b6b04"; }
+    { locale = "xh"; arch = "linux-i686"; sha1 = "c4e1f30a92da9ded560209d9a4b8784ec19f9fa8"; }
+    { locale = "xh"; arch = "linux-x86_64"; sha1 = "22bfdd2d772f6080dc569b86f27e736c38e99374"; }
+    { locale = "zh-CN"; arch = "linux-i686"; sha1 = "1d72f825659eec22f52cacdcf4f5890957e8a38e"; }
+    { locale = "zh-CN"; arch = "linux-x86_64"; sha1 = "cd1cea8be94c3c4318e0bf9c283acade45f846ff"; }
+    { locale = "zh-TW"; arch = "linux-i686"; sha1 = "8ddfad29ebeccdddd3e5cdff3d8167a671e6821c"; }
+    { locale = "zh-TW"; arch = "linux-x86_64"; sha1 = "b4b36e9624ba93ddea2cca52d974acb67ba3407b"; }
   ];
 }
diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix
index 31375bd5a5bf..12d581b15666 100644
--- a/pkgs/applications/networking/browsers/firefox/default.nix
+++ b/pkgs/applications/networking/browsers/firefox/default.nix
@@ -3,8 +3,8 @@
 , freetype, fontconfig, file, alsaLib, nspr, nss, libnotify
 , yasm, mesa, sqlite, unzip, makeWrapper, pysqlite
 , hunspell, libevent, libstartup_notification, libvpx
-, cairo, gstreamer, gst_plugins_base, icu
-, enableGTK3 ? false
+, cairo, gstreamer, gst_plugins_base, icu, libpng, jemalloc, libpulseaudio
+, enableGTK3 ? false, fetchpatch
 , debugBuild ? false
 , # If you want the resulting program to call itself "Firefox" instead
   # of "Shiretoko" or whatever, enable this option.  However, those
@@ -16,16 +16,27 @@
 
 assert stdenv.cc ? libc && stdenv.cc.libc != null;
 
-let version = "39.0"; in
+let
 
-stdenv.mkDerivation rec {
-  name = "firefox-${version}";
+common = { pname, version, sha1 }: stdenv.mkDerivation rec {
+  name = "${pname}-${version}";
 
   src = fetchurl {
     url = "http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${version}/source/firefox-${version}.source.tar.bz2";
-    sha1 = "32785daee7ddb9da8d7509ef095258fc58fe838e";
+    inherit sha1;
   };
 
+  patches = if !enableGTK3 then null else [(fetchpatch {
+    name = "crash_OTMC+GTK3.patch";
+    # backported from 40.1
+    # https://bugzilla.mozilla.org/show_bug.cgi?id=1127752
+    # https://bugzilla.redhat.com/show_bug.cgi?id=1256875
+    url = "http://pkgs.fedoraproject.org/cgit/firefox.git/plain/"
+      + "mozilla-1127752.patch?id=571fefe2c8f741b92c865e9122af56f6258b3fc1";
+    sha256 = "04yq4lcq8ln2fmknz4c0zah77wxqp2mcgr8pjx860dmcmzvyi3p5";
+  })];
+  patchFlags = "-p2";
+
   buildInputs =
     [ pkgconfig gtk perl zip libIDL libjpeg zlib bzip2
       python dbus dbus_glib pango freetype fontconfig xlibs.libXi
@@ -33,8 +44,9 @@ stdenv.mkDerivation rec {
       alsaLib nspr nss libnotify xlibs.pixman yasm mesa
       xlibs.libXScrnSaver xlibs.scrnsaverproto pysqlite
       xlibs.libXext xlibs.xextproto sqlite unzip makeWrapper
-      hunspell libevent libstartup_notification libvpx cairo
-      gstreamer gst_plugins_base icu
+      hunspell libevent libstartup_notification libvpx /* cairo */
+      gstreamer gst_plugins_base icu libpng jemalloc
+      libpulseaudio # only headers are needed
     ]
     ++ lib.optional enableGTK3 gtk3;
 
@@ -48,26 +60,26 @@ stdenv.mkDerivation rec {
       "--with-system-nss"
       "--with-system-libevent"
       "--with-system-libvpx"
-      # "--with-system-png" # needs APNG support
-      # "--with-system-icu" # causes ‘ar: invalid option -- 'L'’ in Firefox 28.0
+      "--with-system-png" # needs APNG support
+      "--with-system-icu"
       "--enable-system-ffi"
       "--enable-system-hunspell"
       "--enable-system-pixman"
       "--enable-system-sqlite"
-      "--enable-system-cairo"
+      #"--enable-system-cairo"
       "--enable-gstreamer"
       "--enable-startup-notification"
-      # "--enable-content-sandbox"            # available since 26.0, but not much info available
-      # "--enable-content-sandbox-reporter"   # keeping disabled for now
+      "--enable-content-sandbox"            # available since 26.0, but not much info available
+      "--disable-content-sandbox-reporter"  # keeping disabled for now
       "--disable-crashreporter"
       "--disable-tests"
       "--disable-necko-wifi" # maybe we want to enable this at some point
       "--disable-installer"
       "--disable-updater"
-      "--disable-pulseaudio"
+      "--enable-jemalloc"
     ]
     ++ lib.optional enableGTK3 "--enable-default-toolkit=cairo-gtk3"
-    ++ (if debugBuild then [ "--enable-debug" "--enable-profiling"]
+    ++ (if debugBuild then [ "--enable-debug" "--enable-profiling" ]
                       else [ "--disable-debug" "--enable-release"
                              "--enable-optimize${lib.optionalString (stdenv.system == "i686-linux") "=-O1"}"
                              "--enable-strip" ])
@@ -79,7 +91,7 @@ stdenv.mkDerivation rec {
     ''
       mkdir ../objdir
       cd ../objdir
-      configureScript=../mozilla-release/configure
+      configureScript=../mozilla-*/configure
     '';
 
   preInstall =
@@ -96,14 +108,20 @@ stdenv.mkDerivation rec {
       # Remove SDK cruft. FIXME: move to a separate output?
       rm -rf $out/share/idl $out/include $out/lib/firefox-devel-*
     '' + lib.optionalString enableGTK3
+      # argv[0] must point to firefox itself
     ''
       wrapProgram "$out/bin/firefox" \
+        --argv0 "$out/bin/.firefox-wrapped" \
         --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:" \
         --suffix XDG_DATA_DIRS : "$XDG_ICON_DIRS"
+    '' +
+      # some basic testing
+    ''
+      "$out/bin/firefox" --version
     '';
 
   meta = {
-    description = "Web browser";
+    description = "A web browser" + lib.optionalString (pname == "firefox-esr") " (Extended Support Release)";
     homepage = http://www.mozilla.com/en-US/firefox/;
     maintainers = with lib.maintainers; [ eelco ];
     platforms = lib.platforms.linux;
@@ -113,4 +131,20 @@ stdenv.mkDerivation rec {
     inherit gtk nspr version;
     isFirefox3Like = true;
   };
+};
+
+in {
+
+  firefox = common {
+    pname = "firefox";
+    version = "40.0.3";
+    sha1 = "6ddda46bd6540ab3ae932fbb5ffec8e9a85cab13";
+  };
+
+  firefox-esr = common {
+    pname = "firefox-esr";
+    version = "38.2.1esr";
+    sha1 = "c596174e7273be5079bf55aecde33ec191d99538";
+  };
+
 }
diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix
index 409f7d29ba2f..db51dc8b148b 100644
--- a/pkgs/applications/networking/browsers/firefox/wrapper.nix
+++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix
@@ -47,7 +47,6 @@ stdenv.mkDerivation {
 
     ${ lib.optionalString libtrick
     ''
-    sed -e "s@exec @exec -a '$out/bin/${browserName}${nameSuffix}' @" -i "$out/bin/${browserName}${nameSuffix}"
     libdirname="$(echo "${browser}/lib/${browserName}"*)"
     libdirbasename="$(basename "$libdirname")"
     mkdir -p "$out/lib/$libdirbasename"
diff --git a/pkgs/applications/networking/browsers/links2/default.nix b/pkgs/applications/networking/browsers/links2/default.nix
index 9b9d9ab6db17..dcc61d4061dd 100644
--- a/pkgs/applications/networking/browsers/links2/default.nix
+++ b/pkgs/applications/networking/browsers/links2/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl
-, gpm, openssl, pkgconfig # Misc.
-, libpng, libjpeg, libtiff # graphic formats
+, gpm, openssl, pkgconfig, libev # Misc.
+, libpng, libjpeg, libtiff, librsvg # graphic formats
 , bzip2, zlib, xz # Transfer encodings
 , enableFB ? true
 , enableDirectFB ? false, directfb
@@ -8,16 +8,16 @@
 }:
 
 stdenv.mkDerivation rec {
-  version = "2.8";
+  version = "2.10";
   name = "links2-${version}";
 
   src = fetchurl {
     url = "${meta.homepage}/download/links-${version}.tar.bz2";
-    sha256 = "15h07498z52jfdahzgvkphg1f7qvxnpbyfn2xmsls0d2dwwdll3r";
+    sha256 = "0lqxg55sp1kphl7ykm2km0s2vsn92a0gmlgypmkqb984r060n3l4";
   };
 
   buildInputs =
-    [ libpng libjpeg libtiff gpm openssl xz bzip2 zlib ]
+    [ libev librsvg libpng libjpeg libtiff gpm openssl xz bzip2 zlib ]
     ++ stdenv.lib.optionals enableX11 [ libX11 libXau libXt ]
     ++ stdenv.lib.optional enableDirectFB [ directfb ];
 
diff --git a/pkgs/applications/networking/browsers/midori/default.nix b/pkgs/applications/networking/browsers/midori/default.nix
index d398cdd29421..5cdfcf5e975a 100644
--- a/pkgs/applications/networking/browsers/midori/default.nix
+++ b/pkgs/applications/networking/browsers/midori/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchurl, cmake, pkgconfig, intltool, vala, makeWrapper
 , gtk3, webkitgtk, librsvg, libnotify, sqlite
-, glib_networking, gsettings_desktop_schemas
+, glib_networking, gsettings_desktop_schemas, libsoup
 }:
 
 let
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
   buildInputs = [
     cmake pkgconfig intltool vala makeWrapper
     webkitgtk librsvg libnotify sqlite
+    (libsoup.override {gnomeSupport = true;})
   ];
 
   cmakeFlags = ''
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix
index 64ceebfa527c..65f9ef50f778 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, xorg, gtk, glib, gdk_pixbuf, dpkg, libXext, libXfixes
-, libXrender, libuuid, libXrandr, libXcomposite
+, libXrender, libuuid, libXrandr, libXcomposite, libpulseaudio
 }:
 
 with stdenv.lib;
@@ -10,18 +10,18 @@ let
     [gtk glib stdenv.cc.cc];
 
   rpathPlugin = makeLibraryPath
-    [ stdenv.cc.cc gtk glib xorg.libX11 gdk_pixbuf libXext libXfixes libXrender libXrandr libuuid libXcomposite ];
+    [ stdenv.cc.cc gtk glib xorg.libX11 gdk_pixbuf libXext libXfixes libXrender libXrandr libuuid libXcomposite libpulseaudio ];
 
 in
 
 stdenv.mkDerivation rec {
-  name = "bluejeans-2.100.41.8";
+  name = "bluejeans-${version}";
 
-  version = "2.100.41.8";
+  version = "2.100.102.8";
 
   src = fetchurl {
-    url = "https://swdl.bluejeans.com/skinny/bjnplugin_2.100.41.8-1_amd64.deb";
-    sha256 = "013m17lpgi6nhw2df10wvrsnsjxy5n7z41ab69vj5m9h0prw9vd1";
+    url = "https://swdl.bluejeans.com/skinny/bjnplugin_${version}-1_amd64.deb";
+    sha256 = "18f8jmhxvqy1yiiwlsssj7rjlfcb41xn16hnl6wv8r8r2mmic4v8";
   };
 
   phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
@@ -36,11 +36,11 @@ stdenv.mkDerivation rec {
       plugins=$out/lib/mozilla/plugins
       patchelf \
         --set-rpath "${rpathPlugin}" \
-        $plugins/npbjnplugin_2.100.41.8.so
+        $plugins/npbjnplugin_${version}.so
 
       patchelf \
         --set-rpath "${rpathInstaller}" \
-        $plugins/npbjninstallplugin_2.100.41.8.so
+        $plugins/npbjninstallplugin_${version}.so
     '';
 
   dontStrip = true;
@@ -51,6 +51,6 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = http://bluejeans.com;
     license = stdenv.lib.licenses.unfree;
-    maintainers = [ stdenv.lib.maintainers.ocharles ];
+    maintainers = with maintainers; [ ocharles kamilchm ];
   };
 }
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
index 0ded56b8aba5..01c643408757 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
@@ -36,7 +36,7 @@
 
 let
   # -> http://get.adobe.com/flashplayer/
-  version = "11.2.202.491";
+  version = "11.2.202.508";
 
   src =
     if stdenv.system == "x86_64-linux" then
@@ -47,7 +47,7 @@ let
       else rec {
         inherit version;
         url = "http://fpdownload.adobe.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.x86_64.tar.gz";
-        sha256 = "150zlnkq8jhhphfmyzdrpgi1y2sniqgx0a5ij994in3gvari9gpl";
+        sha256 = "1i0301vnz94pxcwm9wk1jjyv7gwywy6p7z26ikd5cg259myxbg75";
       }
     else if stdenv.system == "i686-linux" then
       if debug then
@@ -60,7 +60,7 @@ let
       else rec {
         inherit version;
         url = "http://fpdownload.adobe.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.i386.tar.gz";
-        sha256 = "0lwff46gjazjv04fpck0nhv47b4z1x79n09q5444npm1w5zjfgxy";
+        sha256 = "1483bi34ymchv1cqg57whxhlrhhvwhcw33zjgwzmy7bacxbkj9ia";
       }
     else throw "Flash Player is not supported on this platform";
 
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix
index 37d5cbe039f1..17012850a319 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/mozplugger/default.nix
@@ -1,36 +1,30 @@
-a :  
-let 
-  fetchurl = a.fetchurl;
+{ stdenv, fetchurl, firefox, libX11, xproto }:
+
+stdenv.mkDerivation rec {
+  name = "mozplugger-${version}";
+  version = "2.1.6";
 
-  version = a.lib.attrByPath ["version"] "1.12.0" a; 
-  buildInputs = with a; [
-    firefox libX11 xproto
-  ];
-in
-rec {
   src = fetchurl {
     url = "http://mozplugger.mozdev.org/files/mozplugger-${version}.tar.gz";
-    sha256 = "1vpggfmbv4h3srk80rgidd020i03hrkpb7cfxkwagkcd0zcal4hk";
+    sha256 = "1vszkq4kdbaxsrqr2xn9rq6ipza9fngdri79gvjqk3bvsdmg0k19";
   };
 
-  inherit buildInputs;
-  configureFlags = [];
-  makeFlags = ["linux" "prefix=" "root=$out"];
+  buildInputs = [ firefox libX11 xproto ];
 
-  preBuild = a.fullDepEntry(''
-    sed -e s@/usr/@"$out/"@g -i mozplugger.c
-  '') ["doUnpack" "minInit"];
+  installPhase = ''
+    mkdir -p "$out/etc" "$out/bin" "$out/lib/mozilla/plugins" "$out/share/man/man7"
+    cp mozpluggerrc "$out/etc"
+    cp mozplugger-{helper,controller,linker,update} "$out/bin"
+    cp mozplugger.so "$out/lib/mozilla/plugins"
+    cp mozplugger.7 "$out/share/man/man7"
 
-  postInstall = a.fullDepEntry(''
-    mkdir -p $out/share/${name}/plugin
-    ln -s $out/lib/mozilla/plugins/mozplugger.so $out/share/${name}/plugin
-  '') ["doMakeInstall" "minInit" "defEnsureDir"];
+    mkdir -p "$out/share/${name}/plugin"
+    ln -s "$out/lib/mozilla/plugins/mozplugger.so" "$out/share/${name}/plugin"
+  '';
 
-  /* doConfigure should be removed if not needed */
-  phaseNames = ["preBuild" "doMakeInstall" "postInstall"];
-      
-  name = "mozplugger-" + version;
   meta = {
     description = "Mozilla plugin for launching external program for handling in-page objects";
+    homepage = http://mozplugger.mozdev.org/;
+    license = stdenv.lib.licenses.gpl2Plus;
   };
 }
diff --git a/pkgs/applications/networking/browsers/vimb/default.nix b/pkgs/applications/networking/browsers/vimb/default.nix
index 3222e87ac650..84a2870b6d0a 100644
--- a/pkgs/applications/networking/browsers/vimb/default.nix
+++ b/pkgs/applications/networking/browsers/vimb/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, pkgconfig, libsoup, webkit, gtk, glib_networking
-, gsettings_desktop_schemas, makeWrapper, cacert
+, gsettings_desktop_schemas, makeWrapper
 }:
 
 stdenv.mkDerivation rec {
@@ -11,11 +11,6 @@ stdenv.mkDerivation rec {
     sha256 = "0h9m5qfs09lb0dz8a79yccmm3a5rv6z8gi5pkyfh8fqkgkh2940p";
   };
 
-  # Nixos default ca bundle
-  patchPhase = ''
-    sed -i s,/etc/ssl/certs/ca-certificates.crt,${cacert}/etc/ssl/certs/ca-bundle.crt, src/config.def.h
-  '';
-
   buildInputs = [ makeWrapper gtk libsoup pkgconfig webkit gsettings_desktop_schemas ];
 
   makeFlags = [ "PREFIX=$(out)" ];
diff --git a/pkgs/applications/networking/browsers/vimprobable2/default.nix b/pkgs/applications/networking/browsers/vimprobable2/default.nix
index ad5f8aa46912..6f8eede9b3f8 100644
--- a/pkgs/applications/networking/browsers/vimprobable2/default.nix
+++ b/pkgs/applications/networking/browsers/vimprobable2/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, makeWrapper, glib, glib_networking, gtk, libsoup, libX11, perl,
-  pkgconfig, webkit, gsettings_desktop_schemas, cacert }:
+  pkgconfig, webkit, gsettings_desktop_schemas }:
 
 stdenv.mkDerivation rec {
   version = "1.4.2";
@@ -9,11 +9,6 @@ stdenv.mkDerivation rec {
     sha256 = "13jdximksh9r3cgd2f8vms0pbsn3x0gxvyqdqiw16xp5fmdx5kzr";
   };
 
-  # Nixos default ca bundle
-  patchPhase = ''
-    sed -i s,/etc/ssl/certs/ca-certificates.crt,${cacert}/etc/ssl/certs/ca-bundle.crt, config.h
-  '';
-
   buildInputs = [ makeWrapper gtk libsoup libX11 perl pkgconfig webkit gsettings_desktop_schemas ];
 
   installPhase = ''