summary refs log tree commit diff
path: root/pkgs/applications/networking/browsers
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2016-01-19 09:55:31 +0100
committerVladimír Čunát <vcunat@gmail.com>2016-01-19 09:55:31 +0100
commit716aac2519a7571e7f5fd984a886d579a4a051c5 (patch)
tree53cf89cf764d787f4dc8f08474479892b9733177 /pkgs/applications/networking/browsers
parentf8472457a440de3c44f6f604142d678b6ae2a762 (diff)
parent53b389327e34de319dc0dbda2b6bcab1a69db69d (diff)
downloadnixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar.gz
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar.bz2
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar.lz
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar.xz
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.tar.zst
nixlib-716aac2519a7571e7f5fd984a886d579a4a051c5.zip
Merge branch 'staging' into closure-size
Diffstat (limited to 'pkgs/applications/networking/browsers')
-rw-r--r--pkgs/applications/networking/browsers/chromium/browser.nix2
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix11
-rw-r--r--pkgs/applications/networking/browsers/chromium/plugins.nix71
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/sources.nix358
-rw-r--r--pkgs/applications/networking/browsers/firefox/default.nix20
-rw-r--r--pkgs/applications/networking/browsers/firefox/wrapper.nix63
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/netsurf/default.nix86
-rw-r--r--pkgs/applications/networking/browsers/netsurf/haru.nix26
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libCSS.nix20
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libParserUtils.nix21
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnsbmp.nix21
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnsgif.nix21
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix22
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix22
-rw-r--r--pkgs/applications/networking/browsers/netsurf/netsurf.nix38
-rw-r--r--pkgs/applications/networking/browsers/surf/default.nix42
-rw-r--r--pkgs/applications/networking/browsers/vimb/default.nix4
-rw-r--r--pkgs/applications/networking/browsers/w3m/default.nix42
20 files changed, 351 insertions, 547 deletions
diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix
index c1f2cbbce4d5..2fb33fda6105 100644
--- a/pkgs/applications/networking/browsers/chromium/browser.nix
+++ b/pkgs/applications/networking/browsers/chromium/browser.nix
@@ -34,7 +34,7 @@ mkChromiumDerivation (base: rec {
   meta = {
     description = "An open source web browser from Google";
     homepage = http://www.chromium.org/;
-    maintainers = with maintainers; [ chaoflow aszlig ];
+    maintainers = with maintainers; [ chaoflow ];
     license = licenses.bsd3;
     platforms = platforms.linux;
   };
diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix
index bf870e144e56..c0c5e485e59c 100644
--- a/pkgs/applications/networking/browsers/chromium/default.nix
+++ b/pkgs/applications/networking/browsers/chromium/default.nix
@@ -64,20 +64,17 @@ let
 in stdenv.mkDerivation {
   name = "chromium${suffix}-${chromium.browser.version}";
 
-  buildInputs = [ makeWrapper ] ++ chromium.plugins.enabledPlugins;
+  buildInputs = [ makeWrapper ];
 
   buildCommand = let
     browserBinary = "${chromium.browser}/libexec/chromium/chromium";
-    mkEnvVar = key: val: "--set '${key}' '${val}'";
-    envVars = chromium.plugins.settings.envVars or {};
-    flags = chromium.plugins.settings.flags or [];
+    getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")";
   in with stdenv.lib; ''
     mkdir -p "$out/bin" "$out/share/applications"
 
     ln -s "${chromium.browser}/share" "$out/share"
-    makeWrapper "${browserBinary}" "$out/bin/chromium" \
-      ${concatStrings (mapAttrsToList mkEnvVar envVars)} \
-      --add-flags "${concatStringsSep " " flags}"
+    eval makeWrapper "${browserBinary}" "$out/bin/chromium" \
+      ${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled}
 
     ln -s "$out/bin/chromium" "$out/bin/chromium-browser"
     ln -s "${chromium.browser}/share/icons" "$out/share/icons"
diff --git a/pkgs/applications/networking/browsers/chromium/plugins.nix b/pkgs/applications/networking/browsers/chromium/plugins.nix
index 0b0e5bd08382..dda976905610 100644
--- a/pkgs/applications/networking/browsers/chromium/plugins.nix
+++ b/pkgs/applications/networking/browsers/chromium/plugins.nix
@@ -8,6 +8,34 @@
 with stdenv.lib;
 
 let
+  # Generate a shell fragment that emits flags appended to the
+  # final makeWrapper call for wrapping the browser's main binary.
+  #
+  # Note that this is shell-escaped so that only the variable specified
+  # by the "output" attribute is substituted.
+  mkPluginInfo = { output ? "out", allowedVars ? [ output ]
+                 , flags ? [], envVars ? {}
+                 }: let
+    shSearch = ["'"] ++ map (var: "\$${var}") allowedVars;
+    shReplace = ["'\\''"] ++ map (var: "'\"\${${var}}\"'") allowedVars;
+    # We need to triple-escape "val":
+    #  * First because makeWrapper doesn't do any quoting of its arguments by
+    #    itself.
+    #  * Second because it's passed to the makeWrapper call separated by IFS but
+    #    not by the _real_ arguments, for example the Widevine plugin flags
+    #    contain spaces, so they would end up as separate arguments.
+    #  * Third in order to be correctly quoted for the "echo" call below.
+    shEsc = val: "'${replaceStrings ["'"] ["'\\''"] val}'";
+    mkSh = val: "'${replaceStrings shSearch shReplace (shEsc val)}'";
+    mkFlag = flag: ["--add-flags" (shEsc flag)];
+    mkEnvVar = key: val: ["--set" (shEsc key) (shEsc val)];
+    envList = mapAttrsToList mkEnvVar envVars;
+    quoted = map mkSh (flatten ((map mkFlag flags) ++ envList));
+  in ''
+    mkdir -p "''$${output}/nix-support"
+    echo ${toString quoted} > "''$${output}/nix-support/wrapper-flags"
+  '';
+
   plugins = stdenv.mkDerivation {
     name = "chromium-binary-plugins";
 
@@ -61,40 +89,29 @@ let
 
       install -vD PepperFlash/libpepflashplayer.so \
         "$flash/lib/libpepflashplayer.so"
-      mkdir -p "$flash/nix-support"
-      cat > "$flash/nix-support/chromium-plugin.nix" <<NIXOUT
-        { flags = [
-            "--ppapi-flash-path='$flash/lib/libpepflashplayer.so'"
-            "--ppapi-flash-version=$flashVersion"
-          ];
-        }
-      NIXOUT
+
+      ${mkPluginInfo {
+        output = "flash";
+        allowedVars = [ "flash" "flashVersion" ];
+        flags = [
+          "--ppapi-flash-path=$flash/lib/libpepflashplayer.so"
+          "--ppapi-flash-version=$flashVersion"
+        ];
+      }}
 
       install -vD libwidevinecdm.so \
         "$widevine/lib/libwidevinecdm.so"
       install -vD libwidevinecdmadapter.so \
         "$widevine/lib/libwidevinecdmadapter.so"
-      mkdir -p "$widevine/nix-support"
-      cat > "$widevine/nix-support/chromium-plugin.nix" <<NIXOUT
-        { flags = [ "--register-pepper-plugins='${wvModule}${wvInfo}'" ];
-          envVars.NIX_CHROMIUM_PLUGIN_PATH_WIDEVINE = "$widevine/lib";
-        }
-      NIXOUT
+
+      ${mkPluginInfo {
+        output = "widevine";
+        flags = [ "--register-pepper-plugins=${wvModule}${wvInfo}" ];
+        envVars.NIX_CHROMIUM_PLUGIN_PATH_WIDEVINE = "$widevine/lib";
+      }}
     '';
 
-    passthru = let
-      enabledPlugins = optional enablePepperFlash plugins.flash
+    passthru.enabled = optional enablePepperFlash plugins.flash
                     ++ optional enableWideVine    plugins.widevine;
-      getNix = plugin: import "${plugin}/nix-support/chromium-plugin.nix";
-      mergeAttrsets = let
-        f = v: if all isAttrs v then mergeAttrsets v
-          else if all isList  v then concatLists   v
-          else if tail v == []  then head          v
-          else head (tail v);
-      in fold (l: r: zipAttrsWith (_: f) [ l r ]) {};
-    in {
-      inherit enabledPlugins;
-      settings = mergeAttrsets (map getNix enabledPlugins);
-    };
   };
 in plugins
diff --git a/pkgs/applications/networking/browsers/firefox-bin/sources.nix b/pkgs/applications/networking/browsers/firefox-bin/sources.nix
index 57f0550a793d..14806cef25a1 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_sources.rb > sources.nix
 
 {
-  version = "43.0.2";
+  version = "43.0.4";
   sources = [
-    { locale = "ach"; arch = "linux-i686"; sha256 = "da9307cb24c75665adc6a5e02d3045eac9babd33c6da778167644d13cc685de2"; }
-    { locale = "ach"; arch = "linux-x86_64"; sha256 = "1a8f13b44107e9689aa339f19c8247142ce82ef9a63bb4be077c212d4d4ad03c"; }
-    { locale = "af"; arch = "linux-i686"; sha256 = "b8dcbf287b350becd7a4e1d812a2251bf10861fe6fe3c85ea9b56e4aafa2a156"; }
-    { locale = "af"; arch = "linux-x86_64"; sha256 = "241a503d4cd2793c538a5cc1ad0990b2a5cd40a584504cf5dde77a28d2f47049"; }
-    { locale = "an"; arch = "linux-i686"; sha256 = "530f5e4743384e543e4cf829f00e5f37adccf64b4af5067aab1e316aba72c579"; }
-    { locale = "an"; arch = "linux-x86_64"; sha256 = "1bbde5a3c897ebed7c7820362257626835c1adfafb29a20e80bcc4b1c40407b4"; }
-    { locale = "ar"; arch = "linux-i686"; sha256 = "f254b2f7117b866e2c8611d5367fc1e2a8e20e1997746204234ae6869c01f6e9"; }
-    { locale = "ar"; arch = "linux-x86_64"; sha256 = "bec6a50c9ce11906edb09591ed1f37d94291fb67b2d4ab9a8f5f87b0e837c0be"; }
-    { locale = "as"; arch = "linux-i686"; sha256 = "b894da79ba753489a3f0509aa54abb9cf67c84e80a73bc00d0e7e7483e1c4ac9"; }
-    { locale = "as"; arch = "linux-x86_64"; sha256 = "ef435b67eac29cf4024ad8df1d4efd413ea58fd76c0e4ec2f2595e7c90743953"; }
-    { locale = "ast"; arch = "linux-i686"; sha256 = "96566e2de543bb4b3bba195b99efb8ec1c01f6ec969dc75293ed66033b52a92b"; }
-    { locale = "ast"; arch = "linux-x86_64"; sha256 = "29f9ccdfc93a72db314df43564fce754ddc678b89a55035f23582bf4a7c66135"; }
-    { locale = "az"; arch = "linux-i686"; sha256 = "cc58914388b53df51d5bd78f0e63286166bbf278e691b8589bc7db18257627c5"; }
-    { locale = "az"; arch = "linux-x86_64"; sha256 = "7f1db3428190e1bbc01506a029df8c81a0ea67b301f161a5bb297c47d5db41d8"; }
-    { locale = "be"; arch = "linux-i686"; sha256 = "c8bd88c4ffb98d8611d760b144f46ab3cef4f7808f2b1008cd5aa75eadaf02eb"; }
-    { locale = "be"; arch = "linux-x86_64"; sha256 = "1b063e4e4a33b9d29f01d7c98a942446d738b195877a617dd454c2697fd6a539"; }
-    { locale = "bg"; arch = "linux-i686"; sha256 = "1186851b6a27a2d23572c9fa0a9bfabcfca1925d36e7fa79e5918541892bcda9"; }
-    { locale = "bg"; arch = "linux-x86_64"; sha256 = "d185c5eb1640d13ee9fd049db41d267af728de56f833bc32a182f69c4921d1c0"; }
-    { locale = "bn-BD"; arch = "linux-i686"; sha256 = "fcc0a0c46e913cb7b4d44c502f62ece83ae8d22703419edafd15321b77758625"; }
-    { locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "d1e066c2347e109fab28e525b5780edb9c5c063322745d971e4ad79a110568f6"; }
-    { locale = "bn-IN"; arch = "linux-i686"; sha256 = "3a85767878b840411c57d176af597666aaeaede9a290032f374629eac536eeca"; }
-    { locale = "bn-IN"; arch = "linux-x86_64"; sha256 = "a3314e2a9f74d9f2c85e592a74e1353b2f048349ba65bf4cfdf35c72b130cd61"; }
-    { locale = "br"; arch = "linux-i686"; sha256 = "a6cd3445e65ca3c818856d6a3b9069aa437ea638f11bb8be520db73604150090"; }
-    { locale = "br"; arch = "linux-x86_64"; sha256 = "9c9f5720b568d768933d7d55bfa7853bb7918bcc651b7c2e281ccf3d2a5e2218"; }
-    { locale = "bs"; arch = "linux-i686"; sha256 = "9c0844cc1dde7712219626148988df642ab10e81494d4794a51a61bb92ddd110"; }
-    { locale = "bs"; arch = "linux-x86_64"; sha256 = "44d91b25d18aa108adf49677069ebd75236f82c7016ee9d518e2ff3f6ad40ffb"; }
-    { locale = "ca"; arch = "linux-i686"; sha256 = "5669828dec411832064e790e65203dabd3703a86090e87a931c6bd495fd39bc7"; }
-    { locale = "ca"; arch = "linux-x86_64"; sha256 = "1e1cec512fb7038327488ce884e171ecda23ae26f98d39159ca96b8acea2029a"; }
-    { locale = "cs"; arch = "linux-i686"; sha256 = "a7bdf99153ae8351c3f4f98db5e65d2a0598457dc0774508fc6ebe26c40ff43e"; }
-    { locale = "cs"; arch = "linux-x86_64"; sha256 = "16fd46498fa33334a5bd1cf06351b410f7df41526c195de21959bf837ce5d488"; }
-    { locale = "cy"; arch = "linux-i686"; sha256 = "8a251c77bbdb6a44163285cacb3a78ffe85835cbe0b9156ad300e733c9ee3934"; }
-    { locale = "cy"; arch = "linux-x86_64"; sha256 = "61f2b6b13d9ce1066b6207b16865a038cb35c51f61a5bc05503cf948704320f7"; }
-    { locale = "da"; arch = "linux-i686"; sha256 = "d1e5d20f7b396bb8b823e7a15a6e220fb930601c2df6e9fc5ca588d3ffce1698"; }
-    { locale = "da"; arch = "linux-x86_64"; sha256 = "a5f20fb678a51a526ebd135b149c6769dda46827174259cabbc4912c6f0619d5"; }
-    { locale = "de"; arch = "linux-i686"; sha256 = "74e9e40b191fd56e99708910c8798d4a8588271a90eef6f7658e042a0765d0e5"; }
-    { locale = "de"; arch = "linux-x86_64"; sha256 = "470781e1debb2085fa538008cd3203c64b534b5a88c6a6ac01418a3ef344216b"; }
-    { locale = "dsb"; arch = "linux-i686"; sha256 = "459e0d6c55ad822bae10a47a7b14004153a3f3363026556568d7108411318104"; }
-    { locale = "dsb"; arch = "linux-x86_64"; sha256 = "97fd138bb33c80a3213b33d4796573b65d4659b888959730cc02e726bcc65388"; }
-    { locale = "el"; arch = "linux-i686"; sha256 = "41b684530ed9bd80c03cb0cd8b1e4de8b3af383f611884965e98215ade1dd8c7"; }
-    { locale = "el"; arch = "linux-x86_64"; sha256 = "b1a7f2a4de87510b9630c6cade94b7f628bbf04289119d3912ea0eb5260b55b2"; }
-    { locale = "en-GB"; arch = "linux-i686"; sha256 = "3c40217b451bd28dd5f1aebcb9a9f7aafdfa3c9c7fd635d69674912a9e73f77c"; }
-    { locale = "en-GB"; arch = "linux-x86_64"; sha256 = "6aa6cd0945bbe97b30e431fdb09a4deb45a0aba6e1283f881a35732b7403e247"; }
-    { locale = "en-US"; arch = "linux-i686"; sha256 = "dd6c585c24e1e9212b65eabee8e52c5dbc9e4acce4fc51c32aacd82b3c6333e3"; }
-    { locale = "en-US"; arch = "linux-x86_64"; sha256 = "9c56ff8734eb860a6038f6bd00d98aeabe57037e230c66d551aac451a27efa79"; }
-    { locale = "en-ZA"; arch = "linux-i686"; sha256 = "0335775eb1a073d1889e8a43f913ea096bbd735a0b98687c75c7fde5eb636f44"; }
-    { locale = "en-ZA"; arch = "linux-x86_64"; sha256 = "5ab68e226bfc141167a477779181c48a84cabe80f250c874182ad0364d0c3dd5"; }
-    { locale = "eo"; arch = "linux-i686"; sha256 = "99a0cf562a067cd30d1047814c1984364b1702e93e638016a4fe8910868cfcdf"; }
-    { locale = "eo"; arch = "linux-x86_64"; sha256 = "ba0bc0093bf2b0ea82eb958fdf06683f4941bd9a44138c793175a0b9e5a86ad4"; }
-    { locale = "es-AR"; arch = "linux-i686"; sha256 = "3adaec2ccb2b1949492c27c466daa5809afc690bf0559418d2d60faae0b5456a"; }
-    { locale = "es-AR"; arch = "linux-x86_64"; sha256 = "67f774442c64d653d624a270eea1202fad389f926c6b7dee56ef965e65311ef0"; }
-    { locale = "es-CL"; arch = "linux-i686"; sha256 = "ee56546d943795434a6759a55dec6e848f244691dc234f4c62746aa1f73cb85d"; }
-    { locale = "es-CL"; arch = "linux-x86_64"; sha256 = "cdbf12f21efb2e18d23ef9c6322c96469c72140200fa47c554067df3a9f89b8d"; }
-    { locale = "es-ES"; arch = "linux-i686"; sha256 = "d3518ffe26d3c21beb009c657b93cf2f01be416f697d89beac497c71044f134a"; }
-    { locale = "es-ES"; arch = "linux-x86_64"; sha256 = "ae34d9f586b28b1063cfebb755edc2a11214085f3a185f31d757c2358493ed13"; }
-    { locale = "es-MX"; arch = "linux-i686"; sha256 = "09a03624363efba7e5d707c312f58e577019b8b7987d817fe1cf77bf2afa7dfc"; }
-    { locale = "es-MX"; arch = "linux-x86_64"; sha256 = "820c50a0991779f664be8013e10a6db2833caa4b1fed370a7d6a8eb71f5766f3"; }
-    { locale = "et"; arch = "linux-i686"; sha256 = "bb2d259606836c5d01d149f2735639cad7411efcd5e0e5deacdc3f1bbae8d80d"; }
-    { locale = "et"; arch = "linux-x86_64"; sha256 = "17265f828cb3232cca73b3bf5b806cf361769c77bfef0e6571a16eb73036cccb"; }
-    { locale = "eu"; arch = "linux-i686"; sha256 = "0bedcadc3b60ecb58af25d5950fe693063eb80f65d6d85e72ff0cdab3e7f2030"; }
-    { locale = "eu"; arch = "linux-x86_64"; sha256 = "371d5648c7ffaf325ef34030ad0a9971246bc1df354fc11dd66bc461dce303fc"; }
-    { locale = "fa"; arch = "linux-i686"; sha256 = "a7c55492f08e5f44d5cccb015d00abf8b8e74dec7da37e937f8d0f76a4c49338"; }
-    { locale = "fa"; arch = "linux-x86_64"; sha256 = "6fe831c56d96dbed1c4a6859ba58dc20bbdf43efbc2bb225a707df7966f8b9dc"; }
-    { locale = "ff"; arch = "linux-i686"; sha256 = "5cf4f3235db02c385ffc355e0fa1060b79afd5a8899ff31da1d0dad4d065e4cf"; }
-    { locale = "ff"; arch = "linux-x86_64"; sha256 = "0576772ddcbdbe3d26ae20dd47b4e635de709c34eb6a797afab7743ac68815bf"; }
-    { locale = "fi"; arch = "linux-i686"; sha256 = "8edd2e8058fc848456b2dc1bb54f669159b232b5423dcde6638e5d61294f1ffe"; }
-    { locale = "fi"; arch = "linux-x86_64"; sha256 = "94bd189308502abea3d6d762378220097d3d743cc42872e6c43cdcd86aa51b4f"; }
-    { locale = "fr"; arch = "linux-i686"; sha256 = "652f87501ba2a5baf1de865d7a607837a9ed623834c2d796baf4e3891fc78a6b"; }
-    { locale = "fr"; arch = "linux-x86_64"; sha256 = "94c3725ea6fc2a7833e9ee60fdcd0ae3a53c80ce7f13ca00634b5d99b12a4607"; }
-    { locale = "fy-NL"; arch = "linux-i686"; sha256 = "8d9ed839afa148da954acfdca139dbcf9f235c097fc7c562a8ab52f9ece68b4b"; }
-    { locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "650c8a50b8473fd09dbcd1c818ca8c3ab0c6618696198124f32e0153307e2aa3"; }
-    { locale = "ga-IE"; arch = "linux-i686"; sha256 = "a70af727b36bc7d084211a880318f3a9f73977ff75f728b50cc4bfa9398c61d2"; }
-    { locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "01d3635c38068facc135fcca979517d729999db52f4a00c0b2ee27cf830df870"; }
-    { locale = "gd"; arch = "linux-i686"; sha256 = "9763cbe0387cb86f91cdd6b1dfa6e257cc40c4525c753869ee091bfe49f172e8"; }
-    { locale = "gd"; arch = "linux-x86_64"; sha256 = "16d3452fdbabada41626d981dee0e48282d672d9d6073b363ede9e86c4ed56ce"; }
-    { locale = "gl"; arch = "linux-i686"; sha256 = "facde8f17e2f90e49a02b36d016535e1123c7f78ac44ee1110c80dc472e84133"; }
-    { locale = "gl"; arch = "linux-x86_64"; sha256 = "b0955c4381f7f0013e9e0b1dcf8d8c53a3bf694af6970638b2e88dc080771ed7"; }
-    { locale = "gu-IN"; arch = "linux-i686"; sha256 = "cb42e0750736bd14c81bbb76bb05e02c97e798b01d9f41bad091295f9bbb5655"; }
-    { locale = "gu-IN"; arch = "linux-x86_64"; sha256 = "c497650eda2e4fc0f99b9d9c1ef0df33b0ea7b6e32d2eb7d4ee109e5ae1f2add"; }
-    { locale = "he"; arch = "linux-i686"; sha256 = "d4cc561b6ce55f0820e6bd8479de9fd1ed53fd228e7cef28a890aebd687c26aa"; }
-    { locale = "he"; arch = "linux-x86_64"; sha256 = "9294083a0ce8b06cc565c9d643d3e45d50393a5abff230dde8fe42aa29d8b870"; }
-    { locale = "hi-IN"; arch = "linux-i686"; sha256 = "3493dda678fe94e13d34a62d194b612037f472546b96a94de2390706139636ef"; }
-    { locale = "hi-IN"; arch = "linux-x86_64"; sha256 = "db45625e758d3db82705373004cc16176f8376bf087ac11da06c7c22e613dc2a"; }
-    { locale = "hr"; arch = "linux-i686"; sha256 = "227399d033c4a7877387ac965d84ac265600bc16614de1b99618f39808b92894"; }
-    { locale = "hr"; arch = "linux-x86_64"; sha256 = "a4f061ed24c66f936da13f8d93eb311f8fda7cc468d7cc9f71a4c747bbd9af19"; }
-    { locale = "hsb"; arch = "linux-i686"; sha256 = "41bc010d4cca63bc77b8d637e6ca2731e3c5900b6783955335aae0ee3d2eedae"; }
-    { locale = "hsb"; arch = "linux-x86_64"; sha256 = "4618d03269cad3fe8ca3d618de581d37fef37b9276e72613d2c12b212bb2c894"; }
-    { locale = "hu"; arch = "linux-i686"; sha256 = "be456ef5df061985f7413fc7af45b4f0b86ac4a99a57d3574d8ad6dba727a8fe"; }
-    { locale = "hu"; arch = "linux-x86_64"; sha256 = "c229ca2c9fba2ac98e912e5c5f4500d423b1f2cbf768e539112e97c0f0fe410b"; }
-    { locale = "hy-AM"; arch = "linux-i686"; sha256 = "0a569d1b8c8d685c3eb5701471420aa47110c737504a105f660dca72a82490af"; }
-    { locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "b15c86feb6d69005244f409290489d8f5ffaff0c85ec876ba931be38c7de07b0"; }
-    { locale = "id"; arch = "linux-i686"; sha256 = "dc8ca98414ccc67087c896c84a0a223026f12ed9fec499eba6203b8ec0b3e6e7"; }
-    { locale = "id"; arch = "linux-x86_64"; sha256 = "6a831ab4c2605fdbac15ac81853a19f5c8633756ad5136f93c3eb76637e2b997"; }
-    { locale = "is"; arch = "linux-i686"; sha256 = "02e9a2022c0da27e069689d25ba80c1d04dc29e6a045833fa1c5e503b5ca9f9a"; }
-    { locale = "is"; arch = "linux-x86_64"; sha256 = "0ffd2b8f1fdafd91ae4e089c075446f57adcc748bea4994d40207e5cba9a5655"; }
-    { locale = "it"; arch = "linux-i686"; sha256 = "f84d5304a37e33883322c9c508f4d342f99901c9339d293308ef78bb561a3c40"; }
-    { locale = "it"; arch = "linux-x86_64"; sha256 = "78c5cb912d6c24d5a7636fd400470d298e4f58493ca6fd3e5f6b88e4b8037e77"; }
-    { locale = "ja"; arch = "linux-i686"; sha256 = "a3d563846ef60176712574a9f66d24a785f749390afde21cbc4823e9d30cc3ba"; }
-    { locale = "ja"; arch = "linux-x86_64"; sha256 = "56bdf673d645dff09e96970fc4cb33b1810d57051e7c12f6fe1ba01fa971e293"; }
-    { locale = "kk"; arch = "linux-i686"; sha256 = "a5b10502bacf265e2157b7246457c33adcf037e4e28291e26a7fdd9f53f94638"; }
-    { locale = "kk"; arch = "linux-x86_64"; sha256 = "2a7c74168d040653cbc31d6d03846b9165f617cebb74388818d73d681056561d"; }
-    { locale = "km"; arch = "linux-i686"; sha256 = "26e696f0a03d7d6c3541563f89ba08d06a47039ca93f15d2f1909db7ca1b8d08"; }
-    { locale = "km"; arch = "linux-x86_64"; sha256 = "18676450680d18631a855dcf91fd4592f8e3e908b04122476ae62d619bfbdd4f"; }
-    { locale = "kn"; arch = "linux-i686"; sha256 = "cf6c95c0f06381f3aa4eb03c8854a530e63b0b5c6d971dc019a5c6cf81f80b0b"; }
-    { locale = "kn"; arch = "linux-x86_64"; sha256 = "fabd1b824a4593454f8c9d7c6c47f7244ec9d1800cbe397042fb3bc41a75d09b"; }
-    { locale = "ko"; arch = "linux-i686"; sha256 = "d3d9ff36de18ca424511df1ddbd4c49c84499491510a064a6f55f15599e1c172"; }
-    { locale = "ko"; arch = "linux-x86_64"; sha256 = "e8eef3e4c6201e1d1e936ee6ec53f875b6c2a0496d308b8fbe03b5cbdf229bec"; }
-    { locale = "lij"; arch = "linux-i686"; sha256 = "de6b35a675539d1bf0ff1c8f3837ba030da64b0e51c30e594515ac13578495f5"; }
-    { locale = "lij"; arch = "linux-x86_64"; sha256 = "9d2351a7bed09127b618cfd86f2d394fdefcbbf2801da3a60a697982b5bbb9f1"; }
-    { locale = "lt"; arch = "linux-i686"; sha256 = "5e5c3d5083b8d71a249f9e5009072132c9524063fa0cdb1f47ad0ff5260725c7"; }
-    { locale = "lt"; arch = "linux-x86_64"; sha256 = "c57df2ce20d09070514f783a12e179ff05a4ac14e7ec67b0081f284f70079468"; }
-    { locale = "lv"; arch = "linux-i686"; sha256 = "30267f85939965eab0ec50f4c869a0a42fa0d0775ae516088f9a3ff57f1bf3d2"; }
-    { locale = "lv"; arch = "linux-x86_64"; sha256 = "c1389231d627df347910d28172a823da18f2ebd5697093035faa499da24755eb"; }
-    { locale = "mai"; arch = "linux-i686"; sha256 = "6dec829e1ea28f8c4480d0517f72909d2d652fd827693dc919298906b62b47d2"; }
-    { locale = "mai"; arch = "linux-x86_64"; sha256 = "29ed57ad173243d7cc2460a534c3f63709e235db74810a0d6f12dc460c5f4a52"; }
-    { locale = "mk"; arch = "linux-i686"; sha256 = "98d4c529ca979e4ba03b3c1640feb0c93ca1ac2a92ac07403a39a07adce8df44"; }
-    { locale = "mk"; arch = "linux-x86_64"; sha256 = "53d6752d67e3277afe3ea239ceb1f890edc5a15fe078d41bc074246598376603"; }
-    { locale = "ml"; arch = "linux-i686"; sha256 = "321d682e8e1e42e8e4522d791e7e7ae13d1622d740038f3586813099f0275d96"; }
-    { locale = "ml"; arch = "linux-x86_64"; sha256 = "f0dfba4cd8fd961ef6c088ef9139b8ce5e33fcefa8cda142c9f51bfae663c092"; }
-    { locale = "mr"; arch = "linux-i686"; sha256 = "b40b8fbbe5ab56055d57f7b9a67ff00e84b7c7d19afc7bb07b4311ef3fb6c66b"; }
-    { locale = "mr"; arch = "linux-x86_64"; sha256 = "3bb64e13d59a1c65460282e4236655a0c2997d894e9b897a8dc3b20a4baca3c9"; }
-    { locale = "ms"; arch = "linux-i686"; sha256 = "15aeda467f0c0c893dd923ee56fcf2547242f0a4089709ce0cbdb27778c71b1b"; }
-    { locale = "ms"; arch = "linux-x86_64"; sha256 = "32cea21ff68efd7c384746c32c0138464fbae4d25065fe58d6d56e191ee5b082"; }
-    { locale = "nb-NO"; arch = "linux-i686"; sha256 = "371af3de1ae68ba242cc55cb7c080008ca305c61d5c8c4e687f53568bcb8f416"; }
-    { locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "54e17787e0d31893dcba314e98cfb795fd6f85e335a0e84ce35a0f44a56b6e1d"; }
-    { locale = "nl"; arch = "linux-i686"; sha256 = "92df7a99107ccd938800161e759beb6269a6a30f69c892064e130280a3caa692"; }
-    { locale = "nl"; arch = "linux-x86_64"; sha256 = "41c1bfc828917d58cf8f334b8d2b333ddb50dd416faaae41a0c063bd8c23942c"; }
-    { locale = "nn-NO"; arch = "linux-i686"; sha256 = "ad96e3c670c244d366ce0d600d87a308d95e51309ab86becf1c8c69245dbed0f"; }
-    { locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "eee10d92a2bcc32507936c3c2c5c2c220a4de955aa8b48d23f0d923c9b0faa48"; }
-    { locale = "or"; arch = "linux-i686"; sha256 = "1ddaa000c9b3d5a7dccdddaeb8fda53ba821935bf24ee5c2ca0053e3b2900bd7"; }
-    { locale = "or"; arch = "linux-x86_64"; sha256 = "0d62ab80bdd5853d8dfae01d9420929d9321d1f6b9f40d372c6241f1345de76a"; }
-    { locale = "pa-IN"; arch = "linux-i686"; sha256 = "accdde423ac5c518d14b435d00e1f536cd240f31108b58f0b5e1a925637faab4"; }
-    { locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "89ae2f460c6fdab846d6b41dba84f63c94a7bfc1f61e3e79da5d643d4c1a1fca"; }
-    { locale = "pl"; arch = "linux-i686"; sha256 = "d8e043d8ba0c223f0232facef10b6d2e2ee13733bf8670a9101796bfddb3c2f1"; }
-    { locale = "pl"; arch = "linux-x86_64"; sha256 = "f6ada91433d48b699c02fddf22e2d8aa36e6b0cc365b73625bf6fb80ed3fb877"; }
-    { locale = "pt-BR"; arch = "linux-i686"; sha256 = "b2d294d7761cfc3c8a58ee072bb8a0b82cc79724f6b103073632e682fda32f60"; }
-    { locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "642c56b5d510f5efc8a365be956789d7760bfe983aa397ae194eef5bd15f601b"; }
-    { locale = "pt-PT"; arch = "linux-i686"; sha256 = "6bc224414c39047c42040ebaaa7e7d61bb09939a9878ec4a2d7d7e8c31a7ecfc"; }
-    { locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "cc00a2fb38fed6ffef5a6a6931b043c65948c18f3d502a0e3ae641a1847203b7"; }
-    { locale = "rm"; arch = "linux-i686"; sha256 = "2cebf2678e1a469447205a7495f17185259d73a72439f8fd400eee957e571bbc"; }
-    { locale = "rm"; arch = "linux-x86_64"; sha256 = "32fe2ef01b0d495476768eff7e4750c2c82196e60f50c2e824adbf611f275289"; }
-    { locale = "ro"; arch = "linux-i686"; sha256 = "289cef6b438a59bac459c203a6b1b2965b089f1487ea78ff524a6a68f5996862"; }
-    { locale = "ro"; arch = "linux-x86_64"; sha256 = "7df67b1a5a12297a214d1f794c84b58ca12a182ee780e2574116214dfc785388"; }
-    { locale = "ru"; arch = "linux-i686"; sha256 = "65fd6a9a90b4e5c8fc784850dd5bce41901b0d241dae9c37110bf99643d52d32"; }
-    { locale = "ru"; arch = "linux-x86_64"; sha256 = "585683dca4c427ecbcc17d42465b6e374a76d5266b908df1b47f4a1ad81e7794"; }
-    { locale = "si"; arch = "linux-i686"; sha256 = "6567d5ab15a1bd20426569a6480d6e44f2c1917145fa607357f0d3d0502c840a"; }
-    { locale = "si"; arch = "linux-x86_64"; sha256 = "f0aad93013b6070516851a13352d1aabd0d10bd7891eaea878d3632c1b295296"; }
-    { locale = "sk"; arch = "linux-i686"; sha256 = "c6da9d539302dca6ad8e3165ca595eb80438fb4caea11979c0e07ca215696929"; }
-    { locale = "sk"; arch = "linux-x86_64"; sha256 = "236dd9171f471849e8cddb2b8ff0166e41bdedcb0bb3c1662fdffa83c3e89374"; }
-    { locale = "sl"; arch = "linux-i686"; sha256 = "4b9160bfa7579fc893a40387f0185cb74d7db2cfb0eabd2aa032259ed53b7a97"; }
-    { locale = "sl"; arch = "linux-x86_64"; sha256 = "56bc853e4e5e21d08b2ccd04687388473c45ac4403d0b51ed41d8a6a3a26e396"; }
-    { locale = "son"; arch = "linux-i686"; sha256 = "b73fcee703ce937ec25993da5e09163541fef9eaa4e65ec7d5358f1dfa1b596f"; }
-    { locale = "son"; arch = "linux-x86_64"; sha256 = "95ef838ac58e82ec435ddf7e2ea0bbf8b8d1bdb34832aa664d1ad8f5abbd9a13"; }
-    { locale = "sq"; arch = "linux-i686"; sha256 = "370313d2cf543ab3aeaa5de11f748d69a168a82d6e29c27d4c398bb577fdb06d"; }
-    { locale = "sq"; arch = "linux-x86_64"; sha256 = "a86a6604169ab6d9bc2657a0d26db0a3f96b2927223c5a43128dcf49bad243f1"; }
-    { locale = "sr"; arch = "linux-i686"; sha256 = "a7ad2ec678944f37cfee69025871369b658013f77df9df0f1bbfd9cbc03666d2"; }
-    { locale = "sr"; arch = "linux-x86_64"; sha256 = "b081bc35064722b4de95f4e29c4ee203bca124ebe0c33bbf91f0e11f904928f7"; }
-    { locale = "sv-SE"; arch = "linux-i686"; sha256 = "5a6fe1f1c7e1d5bd91a0c82e47ce5b88e31611cf51d6452afde3ef06d2d1a695"; }
-    { locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "9a09a020acabfaef4fa25d94723fa437c57761f0dbd9bda880b8ca3acb5248df"; }
-    { locale = "ta"; arch = "linux-i686"; sha256 = "0e0839d5a899576f3fd796079748dba8612526bd5f855e8718eccb3ed05944c0"; }
-    { locale = "ta"; arch = "linux-x86_64"; sha256 = "cdcd8e06216289df7cdb4f82f01207a7112fa4f52040bd70c2f497b3d701730a"; }
-    { locale = "te"; arch = "linux-i686"; sha256 = "e4609f803edb243ba8c8fbfb7ecea2e652a9e94adeec2f6c03af42c2e8bc5b74"; }
-    { locale = "te"; arch = "linux-x86_64"; sha256 = "b9151a27be6a8de94fa25b53dfb85e765cc2ff823c2de6a0d0583883fc30ea48"; }
-    { locale = "th"; arch = "linux-i686"; sha256 = "48349866a10948cc0b4f8b6bc2fecd5dcbd4d09ff4ba569f7fb3e569edadd976"; }
-    { locale = "th"; arch = "linux-x86_64"; sha256 = "ef38e6a99cc8cb9e32e95af0ae7f7c99b82310e28b082b6aa085aa80f180ef60"; }
-    { locale = "tr"; arch = "linux-i686"; sha256 = "fbad5fa2196dddb5061fec1f47fa7af85c0a824f520588b7446d2740928e34cd"; }
-    { locale = "tr"; arch = "linux-x86_64"; sha256 = "c644f251f1e43acc3baa550b540750fb7d11c2f440c7906e1955d34694a0d718"; }
-    { locale = "uk"; arch = "linux-i686"; sha256 = "9db7dc494734011ed61c5286fcb1f4b4dfb418528792ef92fbfc3734a9618129"; }
-    { locale = "uk"; arch = "linux-x86_64"; sha256 = "06cbcceb189bad7174cf46678535cd4bfb1062e5ac878fd313fc341315001106"; }
-    { locale = "uz"; arch = "linux-i686"; sha256 = "cfa94474277edc7739c11795b2907b894c87f5c573c43aaf5a951a2f13a9c8ef"; }
-    { locale = "uz"; arch = "linux-x86_64"; sha256 = "e3a581e965fbb3711e6ca6d6d5b378eded8e8ea9767f94993c50632b6f4a7aed"; }
-    { locale = "vi"; arch = "linux-i686"; sha256 = "ecd4a5b8fa66e78cdb93b04eb2b3a5ac354bd5e231d8f4bcbf2acfb94b5190b5"; }
-    { locale = "vi"; arch = "linux-x86_64"; sha256 = "1d52852d973d5d6bea8ef860b216aff4eea59dff576f13ae67aa9b96ef0c9878"; }
-    { locale = "xh"; arch = "linux-i686"; sha256 = "24befe5e2fe2001ab3827543f97b52ecd15f5cbad89d977584aa4dc08a0e9c11"; }
-    { locale = "xh"; arch = "linux-x86_64"; sha256 = "4cafc2a6028d8141e47b09a9d8d96404cb4b5806cfaab452566f9a7baff89f25"; }
-    { locale = "zh-CN"; arch = "linux-i686"; sha256 = "80ec43ed8918fa452271988d53875f184196460b15086fe793af4842458ab790"; }
-    { locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "1d3fc933a5b3f4082fac9176f6a802e01f8a26d711c339116799e58629843f27"; }
-    { locale = "zh-TW"; arch = "linux-i686"; sha256 = "a255ce81f6ac1774ae6c8a5b9208169864a672f22f7037c93f01758c4eaa357b"; }
-    { locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "27b048c3df2ff25fd6f7c33cc30016e8a657a2f30ef7b0da9a2f4097c1b5e494"; }
+    { locale = "ach"; arch = "linux-i686"; sha256 = "88e62cbc7a46a4bdc9822a7155a7a92fd856472323fe93c2c6684262b8e71056"; }
+    { locale = "ach"; arch = "linux-x86_64"; sha256 = "e0eb56995f078a72c0bcf8a38a68e3087ca6c229181d0ca75052d2b784acd6f3"; }
+    { locale = "af"; arch = "linux-i686"; sha256 = "826a7c46b08813698c6fc6cfa3faf8d8fb3c6bfa2d9126d2668f91f34fa5874a"; }
+    { locale = "af"; arch = "linux-x86_64"; sha256 = "74efde0018f1c0a0d8afab8a069c7dc2ace12a9c2e8ccc5021601aa472581ea1"; }
+    { locale = "an"; arch = "linux-i686"; sha256 = "bd7c8cd1473fa7b15905fc2a9aa5595a7ffe4e6a53a4c832dfbe3393236a2706"; }
+    { locale = "an"; arch = "linux-x86_64"; sha256 = "73e97be9965dea6416d88b7edb609ed1c7cecbb48c363370dec68854ebcc2b05"; }
+    { locale = "ar"; arch = "linux-i686"; sha256 = "30fbc1adfda1487093ed3ca3571bc4c02132b8fd65a67c937e10d5a53fffe2c5"; }
+    { locale = "ar"; arch = "linux-x86_64"; sha256 = "5c7b899f37cd894b79c74e95c03e131e8809fd147316d21ac5d9e0165840bdbb"; }
+    { locale = "as"; arch = "linux-i686"; sha256 = "2dc43867cd934830c79050e2080570e86fe63ab9ce80252599a7ac29ef21408a"; }
+    { locale = "as"; arch = "linux-x86_64"; sha256 = "73c6712729087bbebc335e631505dca89fbfc9eedf6fcec220f66f50e013f938"; }
+    { locale = "ast"; arch = "linux-i686"; sha256 = "3b76e984e74737f0bd22e10c017bbfc3ff9346a9bf83ec09d959cdc0c5b4c36c"; }
+    { locale = "ast"; arch = "linux-x86_64"; sha256 = "2b9b732d19498b78c72d8f0bcf0852c7d209c3a3e0c891fbef6be753e39bc9a3"; }
+    { locale = "az"; arch = "linux-i686"; sha256 = "8889cf66294a788b59754a4331c6fe4ceccf5d4efedb402d144f27384e491b46"; }
+    { locale = "az"; arch = "linux-x86_64"; sha256 = "cca620118720374edf45b8dba81ffa5086f640bb1c10b67cfe6286aa2afc3a6f"; }
+    { locale = "be"; arch = "linux-i686"; sha256 = "33543ed7c2f68457573729fa95fb306a3c509d8ecda937d5d638d6d158979ced"; }
+    { locale = "be"; arch = "linux-x86_64"; sha256 = "58c567f2b6657f533bcc20d39f29715a503a0a9d59e05ccf9b4f3f3ba64280ca"; }
+    { locale = "bg"; arch = "linux-i686"; sha256 = "5b87663b5887a8eeceee3c0e54c99c66ca673bbf78b434cdcac659891c1f3333"; }
+    { locale = "bg"; arch = "linux-x86_64"; sha256 = "ebcf93c8b5ae952f244426988defbfe0638cf81a8dc4c372613be08f9e0d8f45"; }
+    { locale = "bn-BD"; arch = "linux-i686"; sha256 = "30af81108a6f9ea31a623666ebfb68d99ec256e27cc8d18921bfe2780753ba4c"; }
+    { locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "082ddb0fce87e1399dc95cb94fcc71ebe334f7e611497c0b0bb8186edf46e8e5"; }
+    { locale = "bn-IN"; arch = "linux-i686"; sha256 = "3e8af6555a65ee403b8fdd3a78842ec4f7c16fb3c590f77d9ddd76e9631d564c"; }
+    { locale = "bn-IN"; arch = "linux-x86_64"; sha256 = "78bf008a03318c1d58788433a07b71b63bd52cd2befcc68f8c6320d5ff5dc387"; }
+    { locale = "br"; arch = "linux-i686"; sha256 = "77ff1b40b9cc81b1c6bc63d74e68687ad92f5eb0cee265cd5d9528c38a36bd12"; }
+    { locale = "br"; arch = "linux-x86_64"; sha256 = "a4784a6b2d356f633deefefbc237f5aa662334765a334f968d60afc0aa76ccab"; }
+    { locale = "bs"; arch = "linux-i686"; sha256 = "5fc7d9cbd892c83f40e0cda6b8e6b4e993948530bef355457015a6976ce097f6"; }
+    { locale = "bs"; arch = "linux-x86_64"; sha256 = "4fc83306fca0a6458e66fa082eb8afe6d07ecbf5a3b309d3906ca16f00fc5d31"; }
+    { locale = "ca"; arch = "linux-i686"; sha256 = "c72b7f343e62f479dd2fc37f22af3c462890a886727a2b5a1f140992e3069c92"; }
+    { locale = "ca"; arch = "linux-x86_64"; sha256 = "81d44ab8e493816180ce46d86a0b061ddada85b820c21b91d18f62b3fdfa455e"; }
+    { locale = "cs"; arch = "linux-i686"; sha256 = "c2fb062c3fce0c4c174bcf3987108176d9cbe8da19a06b5db46e0b6d65b244ec"; }
+    { locale = "cs"; arch = "linux-x86_64"; sha256 = "81afcae57081c20a7a1e03c28a4d8dd26b3c89608591b7a7171be91bd24789d6"; }
+    { locale = "cy"; arch = "linux-i686"; sha256 = "bf5f4bdb6fbaea7d0de662921d5e6096d413f799fd3ca1876d42146f14667e5d"; }
+    { locale = "cy"; arch = "linux-x86_64"; sha256 = "cc4057fb04da6db0d2ba315fe9ff015a0e0fc1542843adb4a65621936f849d98"; }
+    { locale = "da"; arch = "linux-i686"; sha256 = "10468470db91eccc1234b34fc4f933b909df68284f9cee8125fbdb5c5802a45a"; }
+    { locale = "da"; arch = "linux-x86_64"; sha256 = "34e29284e753686f00e4019902b75aa071d0eb87bafec8c31cc4029989ec210f"; }
+    { locale = "de"; arch = "linux-i686"; sha256 = "f5b2e2c7fdbd0f91e0ce581dfcbbb253d627a4aac45a914eab763de6b2fb6750"; }
+    { locale = "de"; arch = "linux-x86_64"; sha256 = "7366de80f3717f62768055613bb6767a39716808e394d623cff18e649b1a5a02"; }
+    { locale = "dsb"; arch = "linux-i686"; sha256 = "1a69cb59bd213323ddf5576f2f060def74735b50576c5048f030170a8e4a54d1"; }
+    { locale = "dsb"; arch = "linux-x86_64"; sha256 = "89c431dc58a91ff9c7b31b9a5f988aabd7265a23697e870cd746320c0dde9760"; }
+    { locale = "el"; arch = "linux-i686"; sha256 = "cb6c72d842895714a7ce5f0acc7e2de721befd8605ce567811f5e626f9349a50"; }
+    { locale = "el"; arch = "linux-x86_64"; sha256 = "8b33af54b8e00acba75446a5921ebf41e570f66cf86d38bf46b9238d2b2b57ef"; }
+    { locale = "en-GB"; arch = "linux-i686"; sha256 = "17685f4d47efa9ca8a2ca220960d7819e11c728516d4c0f67f789f5dc29e9606"; }
+    { locale = "en-GB"; arch = "linux-x86_64"; sha256 = "702f8da239eadcbf92cc8e286716836ec889a64276a92e51ee26cc5338e4398e"; }
+    { locale = "en-US"; arch = "linux-i686"; sha256 = "be03a282b7da67899c988f89423594b91e017ce5f4569d55ea23f6ba28f59414"; }
+    { locale = "en-US"; arch = "linux-x86_64"; sha256 = "0ba5a1868386c715ea1f48393b035305d4bef67ed1838b7bfacf5bff8b36716f"; }
+    { locale = "en-ZA"; arch = "linux-i686"; sha256 = "790462e745744b05a5fc27d9518f02e88f678bc1f95140dad970abdff0ec7aaf"; }
+    { locale = "en-ZA"; arch = "linux-x86_64"; sha256 = "ab1ff49b84beb7a5a02a70cbaba9d3110cdd76653486799038fd05936b9db499"; }
+    { locale = "eo"; arch = "linux-i686"; sha256 = "d6be5d333050ca0d1ecd78082b9daf7955a068915af6ef2694b3f6d60595cd94"; }
+    { locale = "eo"; arch = "linux-x86_64"; sha256 = "6ea5dd2bd55bd0211ce67f398b24a37f26b012250b8e7b1b4a9d5ef619e19051"; }
+    { locale = "es-AR"; arch = "linux-i686"; sha256 = "1b16ed83eed980b0ea8b99e989bab1882b6d2a497fd643f109f0610425c693d8"; }
+    { locale = "es-AR"; arch = "linux-x86_64"; sha256 = "3aad55c9d10012c5b22154e8562a034e30ce6ef0b579047649a43afd0645d6e2"; }
+    { locale = "es-CL"; arch = "linux-i686"; sha256 = "f22705f5dee51be7bdced48c6c8f48780529f22a566d9d8784a10c2fe8427b92"; }
+    { locale = "es-CL"; arch = "linux-x86_64"; sha256 = "8dc4c8854169db3c22c09b723002852c452cdcf8d0bde94b089af9fcf0ae0f28"; }
+    { locale = "es-ES"; arch = "linux-i686"; sha256 = "7bd24886bc72db5479c1aa2c8a48359858c1e87e8444a5cc8f0ef3e141744806"; }
+    { locale = "es-ES"; arch = "linux-x86_64"; sha256 = "c69a6be864d1c865013b00a1b8fb748da96be2ddc65cb178eeca6e165aa1ccff"; }
+    { locale = "es-MX"; arch = "linux-i686"; sha256 = "a52775fe1038fbef208d760c4069187943387b0717076b32a54647d9e319890b"; }
+    { locale = "es-MX"; arch = "linux-x86_64"; sha256 = "56c2e14770c2c6d40213f159715a3c269bf3b6c5985ddb4851b6f50f2ca93a39"; }
+    { locale = "et"; arch = "linux-i686"; sha256 = "648fbeb1dc15d76685d80afdad2b6a797eb25f30b27bb405e11725ccc53ef164"; }
+    { locale = "et"; arch = "linux-x86_64"; sha256 = "400f9cd73854034edd7b392367a7961638c921e78885064bdbc567ed3c508d38"; }
+    { locale = "eu"; arch = "linux-i686"; sha256 = "727e0d1d692be4f472f1172d8901d94d58e201ab9c2e30b80684564b3ecaf325"; }
+    { locale = "eu"; arch = "linux-x86_64"; sha256 = "476f207657fb9a5c3bc89493b06900b4fe46a06aca7854e4f37bbe8c8d98c064"; }
+    { locale = "fa"; arch = "linux-i686"; sha256 = "2de4b2b0f02918c8ff538db66272196479ad95cf8e239ccf9e1a244d5553456e"; }
+    { locale = "fa"; arch = "linux-x86_64"; sha256 = "3c04ec5ebd27b815a215ff815dcc86ec05f81a5a0d606e60ed14135b76679fe2"; }
+    { locale = "ff"; arch = "linux-i686"; sha256 = "07b19ce6be53c16c6f299a2640a3a597475644fef63edf702242e245001b1eb0"; }
+    { locale = "ff"; arch = "linux-x86_64"; sha256 = "d0a4e2d3b155c0fd5fa12162dd73d6077be30a9cdd3ccdf5566748a7af4fe2c6"; }
+    { locale = "fi"; arch = "linux-i686"; sha256 = "f5e9e4222bfc1c34d58befaccf501d741cdcf3ee9bfda034ea8600a906c9a912"; }
+    { locale = "fi"; arch = "linux-x86_64"; sha256 = "d48f0673a768b6265119a3097061ae437711a81fbf7f665b8fec079f0516b1ca"; }
+    { locale = "fr"; arch = "linux-i686"; sha256 = "67eb797623354f037b49745c9ef7ddfa3a0cfce03f984add560a33ab2955fc97"; }
+    { locale = "fr"; arch = "linux-x86_64"; sha256 = "6bcba534539f9b5f42397c82e2c1a6affa6eec473c09e6d71c5315f9acef35b0"; }
+    { locale = "fy-NL"; arch = "linux-i686"; sha256 = "fe4b44c9b50abc001bb4bcf6e046a9b18f30a42170b4662daf5d35c17089f4ad"; }
+    { locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "8238342ac06af2d4e0b7ef8ea26d1960af996ac7d401f0e11b3b666ebafe0df8"; }
+    { locale = "ga-IE"; arch = "linux-i686"; sha256 = "9f59d32123141d624b9fa16f885ff9e1cc989628e33074bb2a546d9c54be07eb"; }
+    { locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "29785a5a2cc09750c8ea391ca6b2d8812e5a68185807d76ec295c3ca86c21da9"; }
+    { locale = "gd"; arch = "linux-i686"; sha256 = "bd4dcb330e8733c3443e763a2fcd49085b5027ec032ee6f641ac1211534fdb6a"; }
+    { locale = "gd"; arch = "linux-x86_64"; sha256 = "5508260caa85a450a2496a7e261aebff847301d4f981bd0caf0208aa65c0bc10"; }
+    { locale = "gl"; arch = "linux-i686"; sha256 = "7e6df6be5937c01d8bbf65cd6d107fba76f1c59794f7e2ed81ac9db1384abe34"; }
+    { locale = "gl"; arch = "linux-x86_64"; sha256 = "b5370fd005569fa1544099fb4629ea344f81b43fc10188dbb3cbc5926b5df53a"; }
+    { locale = "gu-IN"; arch = "linux-i686"; sha256 = "5256e889efd097decc2b55f4d928c9847f6e9499b25947de068d357db4d70c59"; }
+    { locale = "gu-IN"; arch = "linux-x86_64"; sha256 = "2b51d50b49965c766081d35b1a426e1c3a858038bb88807522a7dcbc8c97b815"; }
+    { locale = "he"; arch = "linux-i686"; sha256 = "b71d83c274d82f63ab175978bd661e047ad73586249f6e24d33d17c1e9ba4ec6"; }
+    { locale = "he"; arch = "linux-x86_64"; sha256 = "4c3dd5066a9b5ca04ab222af8d7009419fe34d0bc41bf5f78e6370d6e975c4e5"; }
+    { locale = "hi-IN"; arch = "linux-i686"; sha256 = "33f3591e2d75bcc539cc57e68e865183b307a8eb8153c0b48bacc0bc62ea48f4"; }
+    { locale = "hi-IN"; arch = "linux-x86_64"; sha256 = "25eef40150db99b56dc46deaf78525951d8ae838886427838c9d78bab41c6b7e"; }
+    { locale = "hr"; arch = "linux-i686"; sha256 = "d83ab7b48cd7fc4637fbb4c19edd0974db121186289b04da01414fbdc78ad7e9"; }
+    { locale = "hr"; arch = "linux-x86_64"; sha256 = "8a1d3055aedc504cf0f34e41931464752148dd1859c807f689978fb80504a5ab"; }
+    { locale = "hsb"; arch = "linux-i686"; sha256 = "d9dfc43216b0c6281a311edc6c0fed79344cbb4f4cfdcf153f3ba37a4221199b"; }
+    { locale = "hsb"; arch = "linux-x86_64"; sha256 = "2ec46b326249e0049de0a110896672191edf0837d4f224ff3b0f88a21edf1a22"; }
+    { locale = "hu"; arch = "linux-i686"; sha256 = "6c7cecaf0865bd80eceefe2541b5cbdbdc457a367b66a3cb7f8f3d73cf3118f4"; }
+    { locale = "hu"; arch = "linux-x86_64"; sha256 = "d33903cda04f3be9e147dd69c55a58fa76f1bfc0abdb8346c641b76c5f20aacf"; }
+    { locale = "hy-AM"; arch = "linux-i686"; sha256 = "a7006e239fc119c1af332e1fdcd3ed42aed59deb6e22a092c9d3ed5c7eafa11e"; }
+    { locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "89b0def0f9d9177fa0c0f1f7630d52bf3d6380ab27c475019fc6b1dddeca32b6"; }
+    { locale = "id"; arch = "linux-i686"; sha256 = "15fd16ebb3c82755a1ff70a172658c3928ad495194b975de8270b0dadf8fd10b"; }
+    { locale = "id"; arch = "linux-x86_64"; sha256 = "7cfe30a94db8722d0cf3c5f68f636c76e7e98c8f34f67f95724c80499c89ec64"; }
+    { locale = "is"; arch = "linux-i686"; sha256 = "0a066fed6ed9ca4a1514166c8b1ac5e097b5d32522dc39bee3a644f241f7448a"; }
+    { locale = "is"; arch = "linux-x86_64"; sha256 = "4fbef4c8c25690e3c23f3fcd27196714c691c9ea023d81b82763867a7547deab"; }
+    { locale = "it"; arch = "linux-i686"; sha256 = "451b17760fd2f3b99cda0f1711fc3e74320ef0e86b41ea89205c00395b1ac46a"; }
+    { locale = "it"; arch = "linux-x86_64"; sha256 = "e12206fd4993e75ecd3398130758cb1cc4f103c5792a9b59956766d975840653"; }
+    { locale = "ja"; arch = "linux-i686"; sha256 = "ef954070ef7f3eafb9727ee848627145dfc884fc46445374d5b618d344359432"; }
+    { locale = "ja"; arch = "linux-x86_64"; sha256 = "6795c8d63e2cbad65d347bb07503725f85ef464767020df605bdc5dfbdd4cf60"; }
+    { locale = "kk"; arch = "linux-i686"; sha256 = "752594014a72770d33784a99782b24bebaadeb83bda57880f3d0bdb94c2ef56e"; }
+    { locale = "kk"; arch = "linux-x86_64"; sha256 = "a5b26f9f5b9194592e4749770e85cfe35d308ce5cffceea00e9aea5a90a5ef95"; }
+    { locale = "km"; arch = "linux-i686"; sha256 = "57c6072b4dd026daa11b7877fc05ff8aea383eb1d0a8cd1798bd26246f013145"; }
+    { locale = "km"; arch = "linux-x86_64"; sha256 = "fe5a4aae238d74a26614014547294226b49155a7c7fe5fe8a4d2955ee9bfc457"; }
+    { locale = "kn"; arch = "linux-i686"; sha256 = "53b5a81b33115e6892dc6d98a275d675a576eb721290af271262314f33a8a5d3"; }
+    { locale = "kn"; arch = "linux-x86_64"; sha256 = "7a73aea8c228b3491c12735240fbdb8715d8236e89b8634f8b8eae435a6b33f2"; }
+    { locale = "ko"; arch = "linux-i686"; sha256 = "7060ad8b0e78eaebcb6ef7b4976866ddbcca8123daca4ebd7e0ace9792c55a00"; }
+    { locale = "ko"; arch = "linux-x86_64"; sha256 = "b3858ed759dc5c3bf383bff0620d28e939e2a906b266bf9ad28409c45835da82"; }
+    { locale = "lij"; arch = "linux-i686"; sha256 = "efda293d3583806b80695c0f102151574623180a192826e66e90c34599e13444"; }
+    { locale = "lij"; arch = "linux-x86_64"; sha256 = "235138d5b83242a50e194c09d687edfad8a4f912d8434c749dec15a271a38d8e"; }
+    { locale = "lt"; arch = "linux-i686"; sha256 = "0fccd7402f84ef47bc14cd91da4c9aecfceda90588293e47c3473ba5849e8ba2"; }
+    { locale = "lt"; arch = "linux-x86_64"; sha256 = "de27a346f47ad06ade89b4da1809b7ab8aff10e491352b88185d4fab1aaa5613"; }
+    { locale = "lv"; arch = "linux-i686"; sha256 = "e4daced301792d86a7d5bb194da1ff4b9fb1ab7e8583ff3810ed5dca2c57c2c2"; }
+    { locale = "lv"; arch = "linux-x86_64"; sha256 = "e6f6b914d0b8e1a349087c893cd91807e6d8159f4f8db27c2c89b8304a21aca8"; }
+    { locale = "mai"; arch = "linux-i686"; sha256 = "f61a475f0646b6935abf6ca4b07d88a65e782ad6a5fbd17ab2c7cbc0e386f9b0"; }
+    { locale = "mai"; arch = "linux-x86_64"; sha256 = "091597ef122a51e27e69aa02d84c0de37b3bcc4aab38326a160d8836f82d9235"; }
+    { locale = "mk"; arch = "linux-i686"; sha256 = "336f74b4f6f0fc0ca24af1b287bb049ba37aedd760c60b71560c32aa21d902a4"; }
+    { locale = "mk"; arch = "linux-x86_64"; sha256 = "7026aaee3d615fd5401881728fce02d69a74dd08bcf4ad32cdbde6e48e9750fa"; }
+    { locale = "ml"; arch = "linux-i686"; sha256 = "412212198a4bfb35964baa84d55bdec89a30ad47be0e54c7be64e3bbaa8166f9"; }
+    { locale = "ml"; arch = "linux-x86_64"; sha256 = "50c0c3f6931e6a1a498d075847dec4796db804d296b0bcb7254576d910c88f51"; }
+    { locale = "mr"; arch = "linux-i686"; sha256 = "f457de6b5e6692cdac57f9cc8b5bace0f3c678cb40848963f91dad36aa53e7cb"; }
+    { locale = "mr"; arch = "linux-x86_64"; sha256 = "9a88a56a56d5448e6ffdcc2aa15b70bc6300750dae11c25047036873bd0f1bf7"; }
+    { locale = "ms"; arch = "linux-i686"; sha256 = "1254482bd8d0c2fef0a728415e0053b1e68951c1a4de32ea38e3a8435ef8be11"; }
+    { locale = "ms"; arch = "linux-x86_64"; sha256 = "6daecbd8ab6eaeab01139037a950e5e48766f20290bd13daa9f2177a0bed7a37"; }
+    { locale = "nb-NO"; arch = "linux-i686"; sha256 = "ae92dcc94f43a80e335b9dcbc82a1831ede646e173eb1a6b76a3a5c076f70598"; }
+    { locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "813d1965cd6b15e8bd1b40f77e787086ff38dfbafbfdb6ef3d958543ec566d9e"; }
+    { locale = "nl"; arch = "linux-i686"; sha256 = "bfe3bd48305674bc3e7f9edc318585e605e31e59bf55c1095ba08f82f1e92fe6"; }
+    { locale = "nl"; arch = "linux-x86_64"; sha256 = "d9f6062d09d4c505656e4f1c3fe098b896beffb9ee299ba5d544a91d97288d8c"; }
+    { locale = "nn-NO"; arch = "linux-i686"; sha256 = "9c5b3343070f2f986aa13cd6f03a184643cfa5a0214fe2d3696cfd5f81efa4cb"; }
+    { locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "bb128791f7f9dc18b282aec0892987b2d315103bd56d646b22113f74e379db0f"; }
+    { locale = "or"; arch = "linux-i686"; sha256 = "2a5e0a25d654015bec541cca26491312746552b052a6ff1e93daa7e83d5c5539"; }
+    { locale = "or"; arch = "linux-x86_64"; sha256 = "97f524aa830ebbbe80396db69b798463c1bb973a57edb3bf04350cf343b9f345"; }
+    { locale = "pa-IN"; arch = "linux-i686"; sha256 = "f4e38e9124fc916766c1b7d3b1eb5612e5358d5ff7cb60127f6c9ef00360ca2f"; }
+    { locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "415b0f6e0c9ca0c9a415d96c821ab72c15b5d2863109c6411d1d35f3835fc92a"; }
+    { locale = "pl"; arch = "linux-i686"; sha256 = "d001a0047d2ef866ae2ad7675b3e45a7055ceaf84e031a24c72b239b42fdd98e"; }
+    { locale = "pl"; arch = "linux-x86_64"; sha256 = "cbea32c4b8989fc5f0bf948ab5d80ab715fac7fcc179dee169ac9d725ab2b43a"; }
+    { locale = "pt-BR"; arch = "linux-i686"; sha256 = "ea9073faecd9cb850dae9c69a85368f9ad8ec9e00c9aba988205aedfc2e63bd3"; }
+    { locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "c3c57dcc4a5790b36668b8e255674945e61ee9d6ef69704f39d499ad57510a79"; }
+    { locale = "pt-PT"; arch = "linux-i686"; sha256 = "854692a0be4be1b34e958c34a7318dd818e310439d01ee552910a067cf6f6624"; }
+    { locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "0143d2dc4cf2979f8744dd282f937f9e8084393e4c7836219eb182618062d1cc"; }
+    { locale = "rm"; arch = "linux-i686"; sha256 = "81f96f818ce68ee25fe1ed7b1c831ed95d26a3fb034bac836707bf93ffaa140a"; }
+    { locale = "rm"; arch = "linux-x86_64"; sha256 = "3824d40ecbebc2df46f865e0375119c9fe5dd1dd5a0f4c193de984134ee6e7c7"; }
+    { locale = "ro"; arch = "linux-i686"; sha256 = "218b36a99038e08dde7677bc8e89f1b74b5456da2f5e5e1a081eea7ab19bb7e5"; }
+    { locale = "ro"; arch = "linux-x86_64"; sha256 = "2007623afeacb1b11ed4e93dafad6f47d1365ff8505282c858168ef95d31b724"; }
+    { locale = "ru"; arch = "linux-i686"; sha256 = "708780c7f96b0f48f177780fe48c4613b3548eb5b08ba37d1471781de2fe5653"; }
+    { locale = "ru"; arch = "linux-x86_64"; sha256 = "589e950adc3258ad2064233ecfc5e385d301096e0fc08b3a5cc9eebc0454ac6e"; }
+    { locale = "si"; arch = "linux-i686"; sha256 = "eec26f6c23c5e58913387264ad9cd52d5571ad95b1047490530c2c7cecee4584"; }
+    { locale = "si"; arch = "linux-x86_64"; sha256 = "3c71e67434e42be6ef9970c948030c58198cb941ee39d50845afc2a96c85abe0"; }
+    { locale = "sk"; arch = "linux-i686"; sha256 = "558f5ab75ade19ac57fc939c4314233004fbafb2232e9d4bdc6ee938cf0d0e2c"; }
+    { locale = "sk"; arch = "linux-x86_64"; sha256 = "d8a19e75930a0e902b261b6a4872f47daa16baa736fcf4b6e86ba3e947a05fb2"; }
+    { locale = "sl"; arch = "linux-i686"; sha256 = "c69f8782bdfddc06e4fcce994ce8bf79031c47fd60132fbdab42083d7645fbac"; }
+    { locale = "sl"; arch = "linux-x86_64"; sha256 = "ed1da31169d61b4eb6f3f7858dfd5ab7bb436a9c3ae66882d00a19929d48ded0"; }
+    { locale = "son"; arch = "linux-i686"; sha256 = "e1e4b663f699ed623ccf4d91966d1d0b6f17aa831a14b86316898590b559790f"; }
+    { locale = "son"; arch = "linux-x86_64"; sha256 = "5c51bfb471b8870aa04d3e66bb1cc465a7e3d7f36badb91bb0cdd56789ba9657"; }
+    { locale = "sq"; arch = "linux-i686"; sha256 = "7523bdbc44826267f710d1758c3d64fc5b2711ea26559e8eee8d803174a5f801"; }
+    { locale = "sq"; arch = "linux-x86_64"; sha256 = "929bca0a3d2eb67d02c1af5df073fca04db1e70ec95cae622f87c70c5138559c"; }
+    { locale = "sr"; arch = "linux-i686"; sha256 = "464da5be343009f180d829cc88e01cc7eaef953195f4b3396156a019fd17a36e"; }
+    { locale = "sr"; arch = "linux-x86_64"; sha256 = "f84234ba1c6c0eaaf9b73d40546e482dd024bad6bc1aa9b0f19351af064abacf"; }
+    { locale = "sv-SE"; arch = "linux-i686"; sha256 = "c1c25d2226f47102969272777fa985694430e227a6e58c1a3fc3da479ed6a69f"; }
+    { locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "10ae8036fc64d7bd0226ec9b8e9614b5bb24d995d0701d23b471f65767de81cf"; }
+    { locale = "ta"; arch = "linux-i686"; sha256 = "ca3fb46ad1d80fb9d37bc0b3844b8d3972640772edba1ab6485eaf10d257654f"; }
+    { locale = "ta"; arch = "linux-x86_64"; sha256 = "f8d229cb8257262adac057831f7080f431e356eb4ffdd512e8ea8b6ba8e6d702"; }
+    { locale = "te"; arch = "linux-i686"; sha256 = "78d326fc7baed0aee612b542fda5333a83d2874c20a396a4cea0ae4d4c9b45e3"; }
+    { locale = "te"; arch = "linux-x86_64"; sha256 = "fc827807c3793c15fa7650614da558773fd884d5aabf8e181c8822e4109a6832"; }
+    { locale = "th"; arch = "linux-i686"; sha256 = "37681476c04f02dd5fe3e815da3c6569cfedf1d1627826122c934caab8bca74c"; }
+    { locale = "th"; arch = "linux-x86_64"; sha256 = "d63640093f26d53257b5f1b6ea3c8b620498a21cd7ad1144bb3b5d85d63967ac"; }
+    { locale = "tr"; arch = "linux-i686"; sha256 = "a37e2833f4ad4e9c13d4da88f22f8a9cf7ad77b238f2d00f914a27f276ba99da"; }
+    { locale = "tr"; arch = "linux-x86_64"; sha256 = "869fc9c719a7a619e15b98007f60b3f92dd8f7c46fd27e4fc864a8b829e13da0"; }
+    { locale = "uk"; arch = "linux-i686"; sha256 = "c832506a00c22cbc2589814642340bbb1067fd31e414db4f426a8a451991083e"; }
+    { locale = "uk"; arch = "linux-x86_64"; sha256 = "9597216b353369221867741de9f9fcd030adccf1d9ffe2b127c7b858b51e04f4"; }
+    { locale = "uz"; arch = "linux-i686"; sha256 = "d67274f1e39b479674b4909b0e072dff712db0146577f4ea36736ac0d94e3dae"; }
+    { locale = "uz"; arch = "linux-x86_64"; sha256 = "95477afad170df8efcedb493e5ffa9366f1abc8d451860b899457c8a296afbe0"; }
+    { locale = "vi"; arch = "linux-i686"; sha256 = "d453f7cb7f1fd662d1a1fecc701880a3d45c223d842d91061ab5f815333b8680"; }
+    { locale = "vi"; arch = "linux-x86_64"; sha256 = "f19bf0b83a4389aa4bb1e1f7d434be12c266c0575b13cabed541a4ac38c2d810"; }
+    { locale = "xh"; arch = "linux-i686"; sha256 = "4d1c8c365511b195da7e18c10cda8f6599d840598e4623bffb445a67a42590cf"; }
+    { locale = "xh"; arch = "linux-x86_64"; sha256 = "607a62d71718fb2ba89c2a3b75acc13fde048f5d05a692783da955af344a16d1"; }
+    { locale = "zh-CN"; arch = "linux-i686"; sha256 = "635a980f48bd8c0f93ff2666ad7f761e80a255fb54647704e2514c6ba7b9bf60"; }
+    { locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "3eb083c8de026db0727b4fd206fc9045981c5672af7ebf6e0653ee28f5aa8bc0"; }
+    { locale = "zh-TW"; arch = "linux-i686"; sha256 = "515749c690b64a7d047df00291aed071dc90e5582e9ab0e4bc560635ef7d888a"; }
+    { locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "256316348c9d5cf525f0b2f2c09db968714135e21677d122b6bca6e87471a9f3"; }
   ];
 }
diff --git a/pkgs/applications/networking/browsers/firefox/default.nix b/pkgs/applications/networking/browsers/firefox/default.nix
index 6ee926db693d..566247fc0d43 100644
--- a/pkgs/applications/networking/browsers/firefox/default.nix
+++ b/pkgs/applications/networking/browsers/firefox/default.nix
@@ -19,7 +19,7 @@ assert stdenv.cc ? libc && stdenv.cc.libc != null;
 let
 
 common = { pname, version, sha256 }: stdenv.mkDerivation rec {
-  name = "${pname}-${version}";
+  name = "${pname}-unwrapped-${version}";
 
   src = fetchurl {
     url =
@@ -83,8 +83,8 @@ common = { pname, version, sha256 }: stdenv.mkDerivation rec {
     ''
       mkdir ../objdir
       cd ../objdir
-      if [ -e ../${name} ]; then
-        configureScript=../${name}/configure
+      if [ -e ../${pname}-${version} ]; then
+        configureScript=../${pname}-${version}/configure
       else
         configureScript=../mozilla-*/configure
       fi
@@ -99,7 +99,7 @@ common = { pname, version, sha256 }: stdenv.mkDerivation rec {
   postInstall =
     ''
       # For grsecurity kernels
-      paxmark m $out/lib/${name}/{firefox,firefox-bin,plugin-container}
+      paxmark m $out/lib/${pname}-${version}/{firefox,firefox-bin,plugin-container}
 
       # Remove SDK cruft. FIXME: move to a separate output?
       rm -rf $out/share/idl $out/include $out/lib/firefox-devel-*
@@ -131,16 +131,16 @@ common = { pname, version, sha256 }: stdenv.mkDerivation rec {
 
 in {
 
-  firefox = common {
+  firefox-unwrapped = common {
     pname = "firefox";
-    version = "43.0";
-    sha256 = "1slg5m05z67q29mrpjv0a753c4vy1vxhx7p3f75494yfvi0ngcd5";
+    version = "43.0.4";
+    sha256 = "0xjs4j26h8fyy8izrcc482vfvgg4gqzap5kh17jfv7flhn9akkvn";
   };
 
-  firefox-esr = common {
+  firefox-esr-unwrapped = common {
     pname = "firefox-esr";
-    version = "38.5.0esr";
-    sha256 = "086vkhrls9g0cxf50izfzcf2h60syswqrlzyi2z21awhwg7r07ra";
+    version = "38.5.2esr";
+    sha256 = "0xqirpiys2pgzk9hs4s93svknc0sss8ry60zar7n9jj74cgz590m";
   };
 
 }
diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix
index db51dc8b148b..8c805b0bf5fe 100644
--- a/pkgs/applications/networking/browsers/firefox/wrapper.nix
+++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix
@@ -1,11 +1,58 @@
-{ stdenv, lib, browser, makeDesktopItem, makeWrapper, plugins, gst_plugins, libs, gtk_modules
-, browserName, desktopName, nameSuffix, icon, libtrick ? true
+{ stdenv, lib, makeDesktopItem, makeWrapper, config
+
+## various stuff that can be plugged in
+, gnash, flashplayer, hal-flash
+, MPlayerPlugin, gecko_mediaplayer, gst_all, xorg, libpulseaudio, libcanberra
+, supportsJDK, jrePlugin, icedtea_web
+, trezor-bridge, bluejeans, djview4
+, google_talk_plugin, fribid, gnome3/*.gnome_shell*/
+}:
+
+## configurability of the wrapper itself
+browser :
+{ browserName ? (lib.head (lib.splitString "-" browser.name))  # name of the executable
+, name ? (browserName + "-" + (builtins.parseDrvName browser.name).version)
+, desktopName ? # browserName with first letter capitalized
+  (lib.toUpper (lib.substring 0 1 browserName) + lib.substring 1 (-1) browserName)
+, nameSuffix ? ""
+, icon ? browserName, libtrick ? true
 }:
 
-let p = builtins.parseDrvName browser.name; in
+let
+  cfg = stdenv.lib.attrByPath [ browserName ] {} config;
+  enableAdobeFlash = cfg.enableAdobeFlash or false;
+  enableGnash = cfg.enableGnash or false;
+  jre = cfg.jre or false;
+  icedtea = cfg.icedtea or false;
 
+  plugins =
+     assert !(enableGnash && enableAdobeFlash);
+     assert !(jre && icedtea);
+     ([ ]
+      ++ lib.optional enableGnash gnash
+      ++ lib.optional enableAdobeFlash flashplayer
+      ++ lib.optional (cfg.enableDjvu or false) (djview4)
+      ++ lib.optional (cfg.enableMPlayer or false) (MPlayerPlugin browser)
+      ++ lib.optional (cfg.enableGeckoMediaPlayer or false) gecko_mediaplayer
+      ++ lib.optional (supportsJDK && jre && jrePlugin ? mozillaPlugin) jrePlugin
+      ++ lib.optional icedtea icedtea_web
+      ++ lib.optional (cfg.enableGoogleTalkPlugin or false) google_talk_plugin
+      ++ lib.optional (cfg.enableFriBIDPlugin or false) fribid
+      ++ lib.optional (cfg.enableGnomeExtensions or false) gnome3.gnome_shell
+      ++ lib.optional (cfg.enableTrezor or false) trezor-bridge
+      ++ lib.optional (cfg.enableBluejeans or false) bluejeans
+     );
+  libs = [ gst_all.gstreamer gst_all.gst-plugins-base ]
+         ++ lib.optionals (cfg.enableQuakeLive or false)
+         (with xorg; [ stdenv.cc libX11 libXxf86dga libXxf86vm libXext libXt alsaLib zlib ])
+         ++ lib.optional (enableAdobeFlash && (cfg.enableAdobeFlashDRM or false)) hal-flash
+         ++ lib.optional (config.pulseaudio or false) libpulseaudio;
+  gst-plugins = with gst_all; [ gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-ffmpeg ];
+  gtk_modules = [ libcanberra ];
+
+in
 stdenv.mkDerivation {
-  name = "${p.name}-with-plugins-${p.version}";
+  inherit name;
 
   desktopItem = makeDesktopItem {
     name = browserName;
@@ -26,7 +73,7 @@ stdenv.mkDerivation {
     ];
   };
 
-  buildInputs = [makeWrapper] ++ gst_plugins;
+  buildInputs = [makeWrapper] ++ gst-plugins;
 
   buildCommand = ''
     if [ ! -x "${browser}/bin/${browserName}" ]
@@ -82,11 +129,15 @@ stdenv.mkDerivation {
   libs = map (x: x + "/lib") libs ++ map (x: x + "/lib64") libs;
   gtk_modules = map (x: x + x.gtkModule) gtk_modules;
 
-  meta = {
+  passthru = { unwrapped = browser; };
+
+  meta = browser.meta // {
     description =
       browser.meta.description
       + " (with plugins: "
       + lib.concatStrings (lib.intersperse ", " (map (x: x.name) plugins))
       + ")";
+    hydraPlatforms = [];
+    priority = (browser.meta.priority or 0) - 1; # prefer wrapper over the package
   };
 }
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix
index 5b3ceeae70a0..80c9b1b31d8e 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/bluejeans/default.nix
@@ -17,11 +17,11 @@ in
 stdenv.mkDerivation rec {
   name = "bluejeans-${version}";
 
-  version = "2.100.102.8";
+  version = "2.125.24.5";
 
   src = fetchurl {
     url = "https://swdl.bluejeans.com/skinny/bjnplugin_${version}-1_amd64.deb";
-    sha256 = "18f8jmhxvqy1yiiwlsssj7rjlfcb41xn16hnl6wv8r8r2mmic4v8";
+    sha256 = "0lxxd7icfqcpg5rb4njkk4ybxmisv4c509yisznxspi49qfxirwq";
   };
 
   phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
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 d60ae8ea1dbc..9521e1debd7c 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
@@ -57,11 +57,11 @@ let
 in
 stdenv.mkDerivation rec {
   name = "flashplayer-${version}";
-  version = "11.2.202.554";
+  version = "11.2.202.559";
 
   src = fetchurl {
     url = "https://fpdownload.macromedia.com/pub/flashplayer/installers/archive/fp_${version}_archive.zip";
-    sha256 = "0pjan07k419pk3lmfdl5vww0ipf5b76cxqhxwjrikb1fc4x993fi";
+    sha256 = "1vb01pd1jhhh86r01nwdzcf66d72jksiyiyp92hs4khy6n5qfsl3";
   };
 
   buildInputs = [ unzip ];
diff --git a/pkgs/applications/networking/browsers/netsurf/default.nix b/pkgs/applications/networking/browsers/netsurf/default.nix
deleted file mode 100644
index 07184bfd9f2c..000000000000
--- a/pkgs/applications/networking/browsers/netsurf/default.nix
+++ /dev/null
@@ -1,86 +0,0 @@
-{ pkgs }:
-with pkgs;
-
-rec {
-
-  libParserUtils = import ./libParserUtils.nix {
-    inherit fetchurl pkgconfig stdenv lib;
-  };
-
-  libCSS = import ./libCSS.nix {
-    inherit fetchurl sourceFromHead stdenv lib pkgconfig libParserUtils
-      libwapcaplet;
-  };
-
-  libnsbmp = import ./libnsbmp.nix {
-    inherit fetchurl stdenv lib;
-  };
-
-  libnsgif = import ./libnsgif.nix {
-    inherit fetchurl stdenv lib;
-  };
-
-  libwapcaplet = import ./libwapcaplet.nix {
-    inherit fetchurl sourceFromHead stdenv lib;
-  };
-
-  libsvgtiny = import ./libsvgtiny.nix {
-    inherit fetchurl sourceFromHead stdenv lib pkgconfig gperf libxml2;
-  };
-
-  hubub = stdenv.mkDerivation {
-    name = "Hubbub-0.0.1";
-
-    src = fetchurl {
-      url = http://www.netsurf-browser.org/projects/releases/hubbub-0.0.1-src.tar.gz;
-      sha256 = "1pwcnxp3h5ysnr3nxhnwghaabri5zjaibrcarsrrnhkn2gvvv81v";
-    };
-
-    installPhase = "make PREFIX=$out install";
-    buildInputs = [pkgconfig libParserUtils];
-
-    meta = { 
-      description = "HTML5 compliant parsing library, written in C";
-      homepage = http://www.netsurf-browser.org/projects/hubbub/;
-      license = stdenv.lib.licenses.mit;
-      maintainers = [lib.maintainers.marcweber];
-      platforms = lib.platforms.linux;
-    };
-  };
-
-  /*
-  # unfinished - experimental
-  libdom = stdenv.mkDerivation {
-    name = "libdom-devel";
-
-    # REGION AUTO UPDATE:     { name="libdom"; type = "svn"; url = "svn://svn.netsurf-browser.org/trunk/dom"; groups = "netsurf_group"; }
-    src= sourceFromHead "libdom-9721.tar.gz"
-                 (fetchurl { url = "http://mawercer.de/~nix/repos/libdom-9721.tar.gz"; sha256 = "ca4b94a8dd32036787331a14133c36a49daded40bdb4c04edc3eab99e2193abc"; });
-    # END
-    installPhase = "make PREFIX=$out install";
-    buildInputs = [pkgconfig];
-
-    meta = { 
-      description = "implementation of the W3C DOM, written in C";
-      homepage = http://www.netsurf-browser.org/projects/hubbub/;
-      license = stdenv.lib.licenses.mit;
-      maintainers = [lib.maintainers.marcweber];
-      platforms = lib.platforms.linux;
-    };
-  };
-  */
-
-  netsurfHaru = import ./haru.nix {
-    inherit fetchurl sourceFromHead stdenv lib zlib libpng; 
-  };
-
-  browser = import ./netsurf.nix {
-    inherit fetchurl sourceFromHead stdenv lib pkgconfig
-      libnsbmp libnsgif libsvgtiny libwapcaplet hubub libParserUtils
-      libpng libxml2 libCSS lcms curl libmng glib gtk;
-    libharu = netsurfHaru;
-    inherit (gnome) libglade;
-  };
-
-
-}
diff --git a/pkgs/applications/networking/browsers/netsurf/haru.nix b/pkgs/applications/networking/browsers/netsurf/haru.nix
deleted file mode 100644
index 7aa362c613fd..000000000000
--- a/pkgs/applications/networking/browsers/netsurf/haru.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-args: with args;
-stdenv.mkDerivation {
-
-  name = "netsurf-haru-trunk";
-
-  # REGION AUTO UPDATE:     { name="netsurf_haru"; type = "svn"; url = "svn://svn.netsurf-browser.org/trunk/libharu"; groups = "netsurf_group"; }
-  src= sourceFromHead "netsurf_haru-9721.tar.gz"
-               (fetchurl { url = "http://mawercer.de/~nix/repos/netsurf_haru-9721.tar.gz"; sha256 = "8113492823e1069f428ef8970c2c7a09b4c36c645480ce81f8351331ce097656"; });
-  # END
-
-  preConfigure = "cd upstream";
-  configureFlags = "--with-zlib=${zlib} --with-png=${libpng}";
-
-  buildInputs = [zlib libpng];
-
-  installPhase = "make PREFIX=$out install";
-
-  meta = {
-    description = "cross platform, open source library for generating PDF files";
-    homepage = http://libharu.org/wiki/Main_Page;
-    license = with stdenv.lib.licenses; [ libpng zlib ];
-    maintainers = [args.lib.maintainers.marcweber];
-    platforms = args.lib.platforms.linux;
-    broken = true;
-  };
-}
diff --git a/pkgs/applications/networking/browsers/netsurf/libCSS.nix b/pkgs/applications/networking/browsers/netsurf/libCSS.nix
deleted file mode 100644
index 99192fda113a..000000000000
--- a/pkgs/applications/networking/browsers/netsurf/libCSS.nix
+++ /dev/null
@@ -1,20 +0,0 @@
-args: with args;
-stdenv.mkDerivation {
-  name = "libCSS-devel";
-
-  # REGION AUTO UPDATE:       { name="libCSS"; type = "svn"; url = "svn://svn.netsurf-browser.org/trunk/libcss"; groups = "netsurf_group"; }
-  src= sourceFromHead "libCSS-9721.tar.gz"
-               (fetchurl { url = "http://mawercer.de/~nix/repos/libCSS-9721.tar.gz"; sha256 = "47b44653f7b53c21da6224ffb1f81df934cc711d6a5795c5584755a8bd48e5ac"; });
-  # END
-
-  installPhase = "make PREFIX=$out install";
-  buildInputs = [pkgconfig libParserUtils libwapcaplet];
-
-  meta = { 
-    description = "A CSS parser and selection engine, written in C"; # used by netsurf
-    homepage = http://www.netsurf-browser.org/projects/libcss/;
-    license = stdenv.lib.licenses.mit;
-    maintainers = [args.lib.maintainers.marcweber];
-    platforms = args.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix b/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix
deleted file mode 100644
index 3c2b7693be7f..000000000000
--- a/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-args: with args;
-stdenv.mkDerivation {
-  name = "libParserUtils-0.0.1";
-
-  src = fetchurl {
-    url = http://www.netsurf-browser.org/projects/releases/libparserutils-0.0.1-src.tar.gz;
-    sha256 = "0r9ia32kgvcfjy82xyiyihyg9yhh3l9pdzk6sp6d6gh2sbglxvas";
-  };
-
-  installPhase = "make PREFIX=$out install";
-  buildInputs = [pkgconfig];
-
-  meta = { 
-    description = "A library for building efficient parsers, written in C";
-    homepage = http://www.netsurf-browser.org/projects/libparserutils/;
-    license = stdenv.lib.licenses.mit;
-    maintainers = [args.lib.maintainers.marcweber];
-    platforms = args.lib.platforms.linux;
-    broken = true;
-  };
-}
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix b/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
deleted file mode 100644
index 083850bb5450..000000000000
--- a/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-args: with args;
-stdenv.mkDerivation {
-  name = "libnsbmp-0.0.1";
-
-  src = fetchurl {
-    url = http://www.netsurf-browser.org/projects/releases/libnsbmp-0.0.1-src.tar.gz;
-    sha256 = "1ldng20w5f725rhfns3v58x1mh3d93zwrx4c8f88rsm6wym14ka2";
-  };
-
-  installPhase = "make PREFIX=$out install";
-  buildInputs = [];
-
-  meta = { 
-    description = "A decoding library for BMP and ICO image file formats"; # used by netsurf
-    homepage = http://www.netsurf-browser.org/projects/libnsbmp/;
-    license = stdenv.lib.licenses.mit;
-    maintainers = [args.lib.maintainers.marcweber];
-    platforms = args.lib.platforms.linux;
-    broken = true;
-  };
-}
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix b/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
deleted file mode 100644
index 5e2acb4f313f..000000000000
--- a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
+++ /dev/null
@@ -1,21 +0,0 @@
-args: with args;
-stdenv.mkDerivation {
-  name = "libnsgif-0.0.1";
-
-  src = fetchurl {
-    url = http://www.netsurf-browser.org/projects/releases/libnsgif-0.0.1-src.tar.gz;
-    sha256 = "0lnvyhfdb9dm979fly33mi2jlf2rfx9ldx93viawvana63sidwsl";
-  };
-
-  installPhase = "make PREFIX=$out install";
-  buildInputs = [];
-
-  meta = {
-    description = "A decoding library for gif image file formats"; # used by netsurf
-    homepage = http://www.netsurf-browser.org/projects/libnsgif/;
-    license = stdenv.lib.licenses.mit;
-    maintainers = [args.lib.maintainers.marcweber];
-    platforms = args.lib.platforms.linux;
-    broken = true;
-  };
-}
diff --git a/pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix b/pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix
deleted file mode 100644
index 1e9f74a1ffd4..000000000000
--- a/pkgs/applications/networking/browsers/netsurf/libsvgtiny.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-args: with args;
-stdenv.mkDerivation {
-  name = "libsvgtiny-devel";
-
-  # REGION AUTO UPDATE:      { name="libsvgtiny"; type = "svn"; url = "svn://svn.netsurf-browser.org/trunk/libsvgtiny"; groups = "netsurf_group"; }
-  src= sourceFromHead "libsvgtiny-9721.tar.gz"
-               (fetchurl { url = "http://mawercer.de/~nix/repos/libsvgtiny-9721.tar.gz"; sha256 = "0c4c8e357c220218a32ef789eb2ba8226a403d4c2b550d7c65f351a0af5d1a71"; });
-  # END
-
-  NIX_CFLAGS_COMPILE = "-Wno-error=cpp";
-
-  installPhase = "make PREFIX=$out install";
-  buildInputs = [pkgconfig gperf libxml2];
-
-  meta = { 
-    description = "implementation of SVG Tiny, written in C";
-    homepage = http://www.netsurf-browser.org/projects/libsvgtiny/;
-    license = stdenv.lib.licenses.mit;
-    maintainers = [args.lib.maintainers.marcweber];
-    platforms = args.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix b/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix
deleted file mode 100644
index a4cd09d1d860..000000000000
--- a/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-args: with args;
-stdenv.mkDerivation {
-  name = "libwapcaplet-devel";
-
-  # REGION AUTO UPDATE:     { name="libwapcaplet"; type = "svn"; url = "svn://svn.netsurf-browser.org/trunk/libwapcaplet"; groups = "netsurf_group"; }
-  src= sourceFromHead "libwapcaplet-9721.tar.gz"
-               (fetchurl { url = "http://mawercer.de/~nix/repos/libwapcaplet-9721.tar.gz"; sha256 = "7f9f32ca772c939d67f3bc8bf0705544c2b2950760da3fe6a4e069ad0f77d91a"; });
-  # END
-
-  NIX_CFLAGS_COMPILE = "-Wno-error=cpp";
-
-  installPhase = "make PREFIX=$out install";
-  buildInputs = [];
-
-  meta = { 
-    description = "A string internment library, written in C";
-    homepage = http://www.netsurf-browser.org/projects/libwapcaplet/;
-    license = stdenv.lib.licenses.mit;
-    maintainers = [args.lib.maintainers.marcweber];
-    platforms = args.lib.platforms.linux;
-  };
-}
diff --git a/pkgs/applications/networking/browsers/netsurf/netsurf.nix b/pkgs/applications/networking/browsers/netsurf/netsurf.nix
deleted file mode 100644
index f7e90b61a941..000000000000
--- a/pkgs/applications/networking/browsers/netsurf/netsurf.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-args: with args;
-stdenv.mkDerivation {
-
-  name = "netsurf-devel";
-  # REGION AUTO UPDATE:      { name="netsurf"; type = "svn"; url = "svn://svn.netsurf-browser.org/trunk/netsurf"; groups = "netsurf_group"; }
-  src= sourceFromHead "netsurf-9721.tar.gz"
-               (fetchurl { url = "http://mawercer.de/~nix/repos/netsurf-9721.tar.gz"; sha256 = "4705f059596fbd95b1a80d9a6c5d08daf051fd0e5e868ccd40b30af8a45e8f56"; });
-  # END
-
-  # name = "netsurf-2.1";
-  /*
-  src = fetchurl {
-    url = http://www.netsurf-browser.org/downloads/releases/netsurf-2.1-src.tar.gz;
-    sha256 = "10as2skm0pklx8bb8s0z2hh72f17snavkhj7dhi8r4sjr10wz8nd";
-  };
-  */
-
-  buildInputs = [pkgconfig
-    libnsbmp libnsgif libwapcaplet libsvgtiny hubub libParserUtils
-    curl libpng libxml2 lcms glib libharu libmng
-    gtk libglade libCSS];
-
-  buildPhase = "make PREFIX=$out";
-  installPhase = "make PREFIX=$out install";
-
-  meta = with args.lib; {
-    description = "free, open source web browser";
-    homepage = http://www.netsurf-browser.org;
-    license = with licenses; [
-      gpl2
-      mit /* visual work */
-    ];
-    maintainers = with maintainers; [ marcweber ];
-    platforms = platforms.linux;
-  };
-
-}
-
diff --git a/pkgs/applications/networking/browsers/surf/default.nix b/pkgs/applications/networking/browsers/surf/default.nix
new file mode 100644
index 000000000000..fcaaec63b9e6
--- /dev/null
+++ b/pkgs/applications/networking/browsers/surf/default.nix
@@ -0,0 +1,42 @@
+{stdenv, fetchurl, makeWrapper, gtk, webkit, pkgconfig, glib, glib_networking, libsoup, gsettings_desktop_schemas, patches ? null}:
+
+stdenv.mkDerivation rec {
+  name = "surf-${version}";
+  version="0.7";
+
+  src = fetchurl {
+    url = "http://dl.suckless.org/surf/surf-${version}.tar.gz";
+    sha256 = "0jj93izd8fizxfa6ln9w1h9bwki81sz5dhskh5x1rl34zd38aq4m";
+  };
+
+  buildInputs = [ gtk makeWrapper webkit gsettings_desktop_schemas pkgconfig glib libsoup ];
+
+  # Allow users set their own list of patches
+  inherit patches;
+
+  buildPhase = " make ";
+
+  # `-lX11' to make sure libX11's store path is in the RPATH
+  NIX_LDFLAGS = "-lX11";
+  preConfigure = ''sed -i "s@PREFIX = /usr/local@PREFIX = $out@g" config.mk'';
+  installFlags = [ "PREFIX=/" "DESTDIR=$(out)" ];
+
+  preFixup = ''
+    wrapProgram "$out/bin/surf" \
+      --prefix GIO_EXTRA_MODULES : ${glib_networking.out}/lib/gio/modules \
+      --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
+  '';
+
+  meta = {
+    description = "Simple web browser";
+    longDescription = ''
+      Surf is a simple web browser based on WebKit/GTK+. It is able to display
+      websites and follow links. It supports the XEmbed protocol which makes it
+      possible to embed it in another application. Furthermore, one can point
+      surf to another URI by setting its XProperties.
+      '';
+    homepage = http://surf.suckless.org;
+    license = stdenv.lib.licenses.mit;
+    platforms = stdenv.lib.platforms.linux;
+  };
+}
diff --git a/pkgs/applications/networking/browsers/vimb/default.nix b/pkgs/applications/networking/browsers/vimb/default.nix
index d67c8abf4569..ddaaa68f60d4 100644
--- a/pkgs/applications/networking/browsers/vimb/default.nix
+++ b/pkgs/applications/networking/browsers/vimb/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "vimb-${version}";
-  version = "2.9";
+  version = "2.11";
 
   src = fetchurl {
     url = "https://github.com/fanglingsu/vimb/archive/${version}.tar.gz";
-    sha256 = "0h9m5qfs09lb0dz8a79yccmm3a5rv6z8gi5pkyfh8fqkgkh2940p";
+    sha256 = "0d9rankzgmnx5423pyfkbxy0qxw3ck2vrdjdnlhddy15wkk87i9f";
   };
 
   buildInputs = [ makeWrapper gtk libsoup pkgconfig webkit gsettings_desktop_schemas ];
diff --git a/pkgs/applications/networking/browsers/w3m/default.nix b/pkgs/applications/networking/browsers/w3m/default.nix
index 6f37477c1b37..076b3faf11f5 100644
--- a/pkgs/applications/networking/browsers/w3m/default.nix
+++ b/pkgs/applications/networking/browsers/w3m/default.nix
@@ -1,10 +1,10 @@
-{ stdenv, fetchurl, fetchpatch
+{ stdenv, fetchgit, fetchpatch
 , ncurses, boehmgc, gettext, zlib
 , sslSupport ? true, openssl ? null
 , graphicsSupport ? true, imlib2 ? null
 , x11Support ? graphicsSupport, libX11 ? null
 , mouseSupport ? !stdenv.isDarwin, gpm-ncurses ? null
-, perl, man
+, perl, man, pkgconfig
 }:
 
 assert sslSupport -> openssl != null;
@@ -15,11 +15,12 @@ assert mouseSupport -> gpm-ncurses != null;
 with stdenv.lib;
 
 stdenv.mkDerivation rec {
-  name = "w3m-0.5.3";
+  name = "w3m-0.5.3-2015-12-20";
 
-  src = fetchurl {
-    url = "mirror://sourceforge/w3m/${name}.tar.gz";
-    sha256 = "1qx9f0kprf92r1wxl3sacykla0g04qsi0idypzz24b7xy9ix5579";
+  src = fetchgit {
+    url = "git://anonscm.debian.org/collab-maint/w3m.git";
+    rev = "e0b6e022810271bd0efcd655006389ee3879e94d";
+    sha256 = "1vahm3719hb0m20nc8k88165z35f8b15qasa0whhk78r12bls1q6";
   };
 
   NIX_LDFLAGS = optionalString stdenv.isSunOS "-lsocket -lnsl";
@@ -29,44 +30,17 @@ stdenv.mkDerivation rec {
   PERL = "${perl}/bin/perl";
   MAN = "${man}/bin/man";
 
-  # the Arch patches were pulled from:
-  # https://aur.archlinux.org/cgit/aur.git/?h=w3m-mouse
   patches = [
     ./RAND_egd.libressl.patch
     (fetchpatch {
-      name = "file_handle.patch";
-      url = "https://aur.archlinux.org/cgit/aur.git/plain/file_handle.patch?h=w3m-mouse&id=5b5f0fbb59f674575e87dd368fed834641c35f03";
-      sha256 = "0kkqm68ig9d658kf1iwa1dwcf651f6dy2j98gplcks1mn3bdlak4";
-    })
-    (fetchpatch {
-      name = "form_unknown.patch";
-      url = "https://aur.archlinux.org/cgit/aur.git/plain/form_unknown.patch?h=w3m-mouse&id=5b5f0fbb59f674575e87dd368fed834641c35f03";
-      sha256 = "1mbfclid3bihb1xv7sxcahprn3slzd6ga8rjzlq4rbq80bl053fw";
-    })
-    (fetchpatch {
-      name = "gc72.patch";
-      url = "https://aur.archlinux.org/cgit/aur.git/plain/gc72.patch?h=w3m-mouse&id=5b5f0fbb59f674575e87dd368fed834641c35f03";
-      sha256 = "1n6anaw17by0s6rn25bwkgj2mck7ffspizpwbijvx1ynk451459a";
-    })
-    (fetchpatch {
       name = "https.patch";
       url = "https://aur.archlinux.org/cgit/aur.git/plain/https.patch?h=w3m-mouse&id=5b5f0fbb59f674575e87dd368fed834641c35f03";
       sha256 = "08skvaha1hjyapsh8zw5dgfy433mw2hk7qy9yy9avn8rjqj7kjxk";
     })
-    (fetchpatch {
-      name = "perl.patch";
-      url = "https://aur.archlinux.org/cgit/aur.git/plain/perl.patch?h=w3m-mouse&id=5b5f0fbb59f674575e87dd368fed834641c35f03";
-      sha256 = "15cq7cwh0d2v64i8by44rgxw48156sgh872921hxrqdakr95p3gy";
-    })
-    (fetchpatch {
-      name = "w3m_rgba.patch";
-      url = "https://aur.archlinux.org/cgit/aur.git/plain/w3m_rgba.patch?h=w3m-mouse&id=5b5f0fbb59f674575e87dd368fed834641c35f03";
-      sha256 = "1dhp1p6z621ayyl9zip9w35x2cxyhhj72jv5dvf0zp4rk6cjm781";
-    })
   ] ++ optional (graphicsSupport && !x11Support) [ ./no-x11.patch ]
     ++ optional stdenv.isCygwin ./cygwin.patch;
 
-  buildInputs = [ncurses boehmgc gettext zlib]
+  buildInputs = [ pkgconfig ncurses boehmgc gettext zlib ]
     ++ optional sslSupport openssl
     ++ optional mouseSupport gpm-ncurses
     ++ optional graphicsSupport imlib2