mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-22 05:33:23 +00:00
08ea534e67
Darwin support was marked broken in 2019 with Firefox 69 and has missed therefore missed out and not been tested on the following 29 major releases since. It cannot be supported again without a darwin user stepping up to take care and work on and test every major release, which hasn't happened since I took over maintainership. The recommendation of the people that tend to the firefox source build is for darwin users to use firefox-bin instead.
214 lines
4.8 KiB
Nix
214 lines
4.8 KiB
Nix
{ lib, stdenv, fetchurl, config, wrapGAppsHook
|
|
, alsa-lib
|
|
, atk
|
|
, cairo
|
|
, curl
|
|
, cups
|
|
, dbus-glib
|
|
, dbus
|
|
, fontconfig
|
|
, freetype
|
|
, gdk-pixbuf
|
|
, glib
|
|
, glibc
|
|
, gtk3
|
|
, libkrb5
|
|
, libX11
|
|
, libXScrnSaver
|
|
, libxcb
|
|
, libXcomposite
|
|
, libXcursor
|
|
, libXdamage
|
|
, libXext
|
|
, libXfixes
|
|
, libXi
|
|
, libXinerama
|
|
, libXrender
|
|
, libXrandr
|
|
, libXt
|
|
, libXtst
|
|
, libcanberra
|
|
, libnotify
|
|
, adwaita-icon-theme
|
|
, libGLU, libGL
|
|
, nspr
|
|
, nss
|
|
, pango
|
|
, pipewire
|
|
, pciutils
|
|
, libheimdal
|
|
, libpulseaudio
|
|
, systemd
|
|
, channel
|
|
, generated
|
|
, writeScript
|
|
, writeText
|
|
, xidel
|
|
, coreutils
|
|
, gnused
|
|
, gnugrep
|
|
, gnupg
|
|
, ffmpeg
|
|
, runtimeShell
|
|
, mesa # firefox wants gbm for drm+dmabuf
|
|
, systemLocale ? config.i18n.defaultLocale or "en_US"
|
|
}:
|
|
|
|
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;
|
|
|
|
policies = {
|
|
DisableAppUpdate = true;
|
|
} // config.firefox.policies or {};
|
|
|
|
policiesJson = writeText "firefox-policies.json" (builtins.toJSON { inherit policies; });
|
|
|
|
defaultSource = lib.findFirst (sourceMatches "en-US") {} sources;
|
|
|
|
mozLocale =
|
|
if systemLocale == "ca_ES@valencia"
|
|
then "ca-valencia"
|
|
else lib.replaceStrings ["_"] ["-"] systemLocale;
|
|
|
|
source = lib.findFirst (sourceMatches mozLocale) defaultSource sources;
|
|
|
|
pname = "firefox-${channel}-bin-unwrapped";
|
|
|
|
in
|
|
|
|
stdenv.mkDerivation {
|
|
inherit pname version;
|
|
|
|
src = fetchurl { inherit (source) url sha256; };
|
|
|
|
libPath = lib.makeLibraryPath
|
|
[ stdenv.cc.cc
|
|
alsa-lib
|
|
atk
|
|
cairo
|
|
curl
|
|
cups
|
|
dbus-glib
|
|
dbus
|
|
fontconfig
|
|
freetype
|
|
gdk-pixbuf
|
|
glib
|
|
glibc
|
|
gtk3
|
|
libkrb5
|
|
mesa
|
|
libX11
|
|
libXScrnSaver
|
|
libXcomposite
|
|
libXcursor
|
|
libxcb
|
|
libXdamage
|
|
libXext
|
|
libXfixes
|
|
libXi
|
|
libXinerama
|
|
libXrender
|
|
libXrandr
|
|
libXt
|
|
libXtst
|
|
libcanberra
|
|
libnotify
|
|
libGLU libGL
|
|
nspr
|
|
nss
|
|
pango
|
|
pipewire
|
|
pciutils
|
|
libheimdal
|
|
libpulseaudio
|
|
systemd
|
|
ffmpeg
|
|
] + ":" + lib.makeSearchPathOutput "lib" "lib64" [
|
|
stdenv.cc.cc
|
|
];
|
|
|
|
inherit gtk3;
|
|
|
|
buildInputs = [ wrapGAppsHook gtk3 adwaita-icon-theme ];
|
|
|
|
# "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.binaryName = "firefox";
|
|
passthru.libName = "firefox-bin-${version}";
|
|
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 pname channel writeScript xidel coreutils gnused gnugrep gnupg curl runtimeShell;
|
|
baseUrl =
|
|
if channel == "devedition"
|
|
then "http://archive.mozilla.org/pub/devedition/releases/"
|
|
else "http://archive.mozilla.org/pub/firefox/releases/";
|
|
};
|
|
meta = with lib; {
|
|
description = "Mozilla Firefox, free web browser (binary package)";
|
|
homepage = "http://www.mozilla.org/firefox/";
|
|
license = licenses.mpl20;
|
|
platforms = builtins.attrNames mozillaPlatforms;
|
|
hydraPlatforms = [];
|
|
maintainers = with maintainers; [ taku0 lovesegfault ];
|
|
};
|
|
}
|