diff options
author | Alyssa Ross <hi@alyssa.is> | 2019-01-07 02:18:36 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2019-01-07 02:18:47 +0000 |
commit | 36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2 (patch) | |
tree | b3faaf573407b32aa645237a4d16b82778a39a92 /nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix | |
parent | 4e31070265257dc67d120c27e0f75c2344fdfa9a (diff) | |
parent | abf060725d7614bd3b9f96764262dfbc2f9c2199 (diff) | |
download | nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.gz nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.bz2 nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.lz nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.xz nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.tar.zst nixlib-36f56d99fa0a0765c9f1de4a5f17a9b05830c3f2.zip |
Add 'nixpkgs/' from commit 'abf060725d7614bd3b9f96764262dfbc2f9c2199'
git-subtree-dir: nixpkgs git-subtree-mainline: 4e31070265257dc67d120c27e0f75c2344fdfa9a git-subtree-split: abf060725d7614bd3b9f96764262dfbc2f9c2199
Diffstat (limited to 'nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix')
-rw-r--r-- | nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix new file mode 100644 index 000000000000..2d9692c0528e --- /dev/null +++ b/nixpkgs/pkgs/applications/networking/browsers/firefox-bin/default.nix @@ -0,0 +1,210 @@ +{ lib, stdenv, fetchurl, config, wrapGAppsHook +, alsaLib +, atk +, cairo +, curl +, cups +, dbus-glib +, dbus +, fontconfig +, freetype +, gconf +, gdk_pixbuf +, glib +, glibc +, gtk2 +, gtk3 +, kerberos +, libX11 +, libXScrnSaver +, libxcb +, libXcomposite +, libXcursor +, libXdamage +, libXext +, libXfixes +, libXi +, libXinerama +, libXrender +, libXt +, libcanberra-gtk2 +, libgnome +, libgnomeui +, libnotify +, defaultIconTheme +, libGLU_combined +, nspr +, nss +, pango +, libheimdal +, libpulseaudio +, systemd +, channel +, generated +, writeScript +, writeText +, xidel +, coreutils +, gnused +, gnugrep +, gnupg +, ffmpeg +}: + +let + + inherit (generated) version sources; + + mozillaPlatforms = { + "i686-linux" = "linux-i686"; + "x86_64-linux" = "linux-x86_64"; + }; + + arch = mozillaPlatforms.${stdenv.hostPlatform.system}; + + isPrefixOf = prefix: string: + builtins.substring 0 (builtins.stringLength prefix) string == prefix; + + sourceMatches = locale: source: + (isPrefixOf source.locale locale) && source.arch == arch; + + systemLocale = config.i18n.defaultLocale or "en-US"; + + policies = { + DisableAppUpdate = true; + }; + + policiesJson = writeText "no-update-firefox-policy.json" (builtins.toJSON { inherit policies; }); + + defaultSource = stdenv.lib.findFirst (sourceMatches "en-US") {} sources; + + source = stdenv.lib.findFirst (sourceMatches systemLocale) defaultSource sources; + + name = "firefox-${channel}-bin-unwrapped-${version}"; + +in + +stdenv.mkDerivation { + inherit name; + + src = fetchurl { inherit (source) url sha512; }; + + phases = [ "unpackPhase" "patchPhase" "installPhase" "fixupPhase" ]; + + libPath = stdenv.lib.makeLibraryPath + [ stdenv.cc.cc + alsaLib + (lib.getDev alsaLib) + atk + cairo + curl + cups + dbus-glib + dbus + fontconfig + freetype + gconf + gdk_pixbuf + glib + glibc + gtk2 + gtk3 + kerberos + libX11 + libXScrnSaver + libXcomposite + libXcursor + libxcb + libXdamage + libXext + libXfixes + libXi + libXinerama + libXrender + libXt + libcanberra-gtk2 + libgnome + libgnomeui + libnotify + libGLU_combined + nspr + nss + pango + libheimdal + libpulseaudio + (lib.getDev libpulseaudio) + systemd + ffmpeg + ] + ":" + stdenv.lib.makeSearchPathOutput "lib" "lib64" [ + stdenv.cc.cc + ]; + + inherit gtk3; + + buildInputs = [ wrapGAppsHook gtk3 defaultIconTheme ]; + + # "strip" after "patchelf" may break binaries. + # See: https://github.com/NixOS/patchelf/issues/10 + dontStrip = true; + dontPatchELF = true; + + patchPhase = '' + # Don't download updates from Mozilla directly + echo 'pref("app.update.auto", "false");' >> defaults/pref/channel-prefs.js + ''; + + installPhase = + '' + mkdir -p "$prefix/usr/lib/firefox-bin-${version}" + cp -r * "$prefix/usr/lib/firefox-bin-${version}" + + mkdir -p "$out/bin" + ln -s "$prefix/usr/lib/firefox-bin-${version}/firefox" "$out/bin/" + + for executable in \ + firefox firefox-bin plugin-container \ + updater crashreporter webapprt-stub + do + 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" + + gappsWrapperArgs+=(--argv0 "$out/bin/.firefox-wrapped") + + # See: https://github.com/mozilla/policy-templates/blob/master/README.md + mkdir -p "$out/lib/firefox-bin-${version}/distribution"; + ln -s ${policiesJson} "$out/lib/firefox-bin-${version}/distribution/policies.json"; + ''; + + passthru.execdir = "/bin"; + passthru.ffmpegSupport = true; + passthru.gssSupport = true; + # update with: + # $ nix-shell maintainers/scripts/update.nix --argstr package firefox-bin-unwrapped + passthru.updateScript = import ./update.nix { + inherit stdenv name channel writeScript xidel coreutils gnused gnugrep gnupg curl; + baseUrl = + if channel == "devedition" + then "http://archive.mozilla.org/pub/devedition/releases/" + else "http://archive.mozilla.org/pub/firefox/releases/"; + }; + meta = with stdenv.lib; { + description = "Mozilla Firefox, free web browser (binary package)"; + homepage = http://www.mozilla.org/firefox/; + license = { + free = false; + url = http://www.mozilla.org/en-US/foundation/trademarks/policy/; + }; + platforms = builtins.attrNames mozillaPlatforms; + maintainers = with maintainers; [ garbas ]; + }; +} |