diff options
Diffstat (limited to 'pkgs/applications/networking/browsers/firefox-bin/default.nix')
-rw-r--r-- | pkgs/applications/networking/browsers/firefox-bin/default.nix | 49 |
1 files changed, 38 insertions, 11 deletions
diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix index 152089286b485..90d1d7a15026d 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/default.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, config +{ stdenv, fetchurl, config, makeWrapper , alsaLib , atk , cairo @@ -13,7 +13,8 @@ , glibc , gst_plugins_base , gstreamer -, gtk +, gtk2 +, gtk3 , libX11 , libXScrnSaver , libXcomposite @@ -26,6 +27,7 @@ , libcanberra , libgnome , libgnomeui +, defaultIconTheme , mesa , nspr , nss @@ -33,14 +35,23 @@ , libheimdal , libpulseaudio , systemd +, channel ? "stable" }: assert stdenv.isLinux; -# imports `version` and `sources` -with (import ./sources.nix); - let + + generated = if channel == "stable" then (import ./sources.nix) + else if channel == "beta" then (import ./beta_sources.nix) + else if channel == "developer" then { version = "48.0a2"; sources = [ + { locale = "en-US"; arch = "linux-i686"; sha512 = "3xa9lmq4phx7vfd74ha1bq108la96m4jyq11h2m070rbcjv5pg6ck2pxphr2im55lym7h6saw2l4lpzcr5xvnfmj1a7fdhszswjl3s4"; } + { locale = "en-US"; arch = "linux-x86_64"; sha512 = "1vndwja68xbn3rfq15ffksagr7fm2ns84cib4bhx654425hp5ghfpiszl7qwyxg8s28srqdfsl9w8hp7qxsz5gmmiznf05zxfv487w7"; } + ]; } + else builtins.abort "Wrong channel! Channel must be one of `stable`, `beta` or `developer`"; + + inherit (generated) version sources; + arch = if stdenv.system == "i686-linux" then "linux-i686" else "linux-x86_64"; @@ -63,8 +74,10 @@ stdenv.mkDerivation { name = "firefox-bin-unwrapped-${version}"; src = fetchurl { - url = "http://download-installer.cdn.mozilla.net/pub/firefox/releases/${version}/${source.arch}/${source.locale}/firefox-${version}.tar.bz2"; - inherit (source) sha256; + url = if channel == "developer" + then "http://download-installer.cdn.mozilla.net/pub/firefox/nightly/latest-mozilla-aurora/firefox-${version}.${source.locale}.${source.arch}.tar.bz2" + else "http://download-installer.cdn.mozilla.net/pub/firefox/releases/${version}/${source.arch}/${source.locale}/firefox-${version}.tar.bz2"; + inherit (source) sha512; }; phases = "unpackPhase installPhase"; @@ -85,7 +98,8 @@ stdenv.mkDerivation { glibc gst_plugins_base gstreamer - gtk + gtk2 + gtk3 libX11 libXScrnSaver libXcomposite @@ -105,10 +119,12 @@ stdenv.mkDerivation { libheimdal libpulseaudio systemd - ] + ":" + stdenv.lib.makeSearchPathOutputs "lib64" ["lib"] [ + ] + ":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" [ stdenv.cc.cc ]; + buildInputs = [ makeWrapper gtk3 defaultIconTheme ]; + # "strip" after "patchelf" may break binaries. # See: https://github.com/NixOS/patchelf/issues/10 dontStrip = 1; @@ -125,14 +141,19 @@ stdenv.mkDerivation { firefox firefox-bin plugin-container \ updater crashreporter webapprt-stub do - patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - "$out/usr/lib/firefox-bin-${version}/$executable" + if [ -e "$out/usr/lib/firefox-bin-${version}/$executable" ]; then + patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + "$out/usr/lib/firefox-bin-${version}/$executable" + fi done find . -executable -type f -exec \ patchelf --set-rpath "$libPath" \ "$out/usr/lib/firefox-bin-${version}/{}" \; + # wrapFirefox expects "$out/lib" instead of "$out/usr/lib" + ln -s "$out/usr/lib" "$out/lib" + # Create a desktop item. mkdir -p $out/share/applications cat > $out/share/applications/firefox.desktop <<EOF @@ -144,6 +165,11 @@ stdenv.mkDerivation { GenericName=Web Browser Categories=Application;Network; EOF + + wrapProgram "$out/bin/firefox" \ + --argv0 "$out/bin/.firefox-wrapped" \ + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:" \ + --suffix XDG_DATA_DIRS : "$XDG_ICON_DIRS" ''; meta = with stdenv.lib; { @@ -154,5 +180,6 @@ stdenv.mkDerivation { url = http://www.mozilla.org/en-US/foundation/trademarks/policy/; }; platforms = platforms.linux; + maintainers = with maintainers; [ garbas ]; }; } |