about summary refs log tree commit diff
path: root/pkgs/applications/networking/browsers/firefox-bin/default.nix
diff options
context:
space:
mode:
authorRok Garbas <rok@garbas.si>2016-12-01 18:58:16 +0100
committerRok Garbas <rok@garbas.si>2016-12-09 03:19:07 +0100
commit3a1d52ff4f818aa918f429a67bee473192e9d2f1 (patch)
tree85dd567fdad7e0c319d54dc1bf91db2a9691704b /pkgs/applications/networking/browsers/firefox-bin/default.nix
parenteee070e49cdafc037b57ca5c6396ba152794fe53 (diff)
downloadnixlib-3a1d52ff4f818aa918f429a67bee473192e9d2f1.tar
nixlib-3a1d52ff4f818aa918f429a67bee473192e9d2f1.tar.gz
nixlib-3a1d52ff4f818aa918f429a67bee473192e9d2f1.tar.bz2
nixlib-3a1d52ff4f818aa918f429a67bee473192e9d2f1.tar.lz
nixlib-3a1d52ff4f818aa918f429a67bee473192e9d2f1.tar.xz
nixlib-3a1d52ff4f818aa918f429a67bee473192e9d2f1.tar.zst
nixlib-3a1d52ff4f818aa918f429a67bee473192e9d2f1.zip
updateScript: initital work
Diffstat (limited to 'pkgs/applications/networking/browsers/firefox-bin/default.nix')
-rw-r--r--pkgs/applications/networking/browsers/firefox-bin/default.nix49
1 files changed, 48 insertions, 1 deletions
diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix
index 7a87b1df3861..dd767d6984f6 100644
--- a/pkgs/applications/networking/browsers/firefox-bin/default.nix
+++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix
@@ -38,6 +38,11 @@
 , libpulseaudio
 , systemd
 , generated ? import ./sources.nix
+, writeScript
+, xidel
+, coreutils
+, gnused
+, gnugrep
 }:
 
 assert stdenv.isLinux;
@@ -62,10 +67,12 @@ let
 
   source = stdenv.lib.findFirst (sourceMatches systemLocale) defaultSource sources;
 
+  name = "firefox-bin-unwrapped-${version}";
+
 in
 
 stdenv.mkDerivation {
-  name = "firefox-bin-unwrapped-${version}";
+  inherit name;
 
   src = fetchurl { inherit (source) url sha512; };
 
@@ -165,6 +172,46 @@ stdenv.mkDerivation {
     '';
 
   passthru.ffmpegSupport = true;
+  passthru.updateScript =
+    let
+      version = (builtins.parseDrvName name).version;
+      isBeta = builtins.stringLength version + 1 == builtins.stringLength (builtins.replaceStrings ["b"] ["bb"] version);
+    in
+      writeScript "update-firefox-bin" ''
+        PATH=${coreutils}/bin:${gnused}/bin:${gnugrep}/bin:${xidel}/bin:${curl}/bin
+
+        pushd pkgs/applications/networking/browsers/firefox-bin
+
+        tmpfile=`mktemp`
+        url=http://archive.mozilla.org/pub/firefox/releases/
+        version=`xidel -q $url --extract "//a" | \
+                 sed s"/.$//" | \
+                 grep "^[0-9]" | \
+                 sort --version-sort | \
+                 grep -v "funnelcake" | \
+                 grep -e "${if isBeta then "b" else ""}\([[:digit:]]\|[[:digit:]][[:digit:]]\)$" | ${if isBeta then "" else "grep -v \"b\" |"} \
+                 tail -1`
+        shasums=`curl --silent $url$version/SHA512SUMS`
+
+        echo "{" > $tmpfile
+        echo "  version = \"$version\";" >> $tmpfile
+        echo "  sources = [" >> $tmpfile
+        for arch in linux-x86_64 linux-i686; do
+            for line in `echo "$shasums" | grep $arch | grep "firefox-$version.tar.bz2$" | tr " " ":"`; do
+            echo "    { url = \"$url$version/$arch/`echo $line | cut -d\":\" -f3`\";" >> $tmpfile
+            echo "      locale = \"`echo $line | cut -d\":\" -f3 | sed \"s/$arch\///\" | sed \"s/\/.*//\"`\";" >> $tmpfile
+            echo "      arch = \"$arch\";" >> $tmpfile
+            echo "      sha512 = \"`echo $line | cut -d\":\" -f1`\";" >> $tmpfile
+            echo "    }" >> $tmpfile
+          done
+        done
+        echo "  ];" >> $tmpfile
+        echo "}" >> $tmpfile
+
+        cat $tmpfile > ${if isBeta then "beta_" else ""}sources.nix
+
+        popd
+      '';
 
   meta = with stdenv.lib; {
     description = "Mozilla Firefox, free web browser (binary package)";