From 43eecf9c7a7e119fb400e57dfebf86f0345890ea Mon Sep 17 00:00:00 2001 From: K900 Date: Wed, 20 Sep 2023 14:26:20 +0300 Subject: [PATCH] firefox-bin: cleanup, use autoPatchelfHook --- .../browsers/firefox-bin/default.nix | 175 ++++-------------- 1 file changed, 41 insertions(+), 134 deletions(-) diff --git a/pkgs/applications/networking/browsers/firefox-bin/default.nix b/pkgs/applications/networking/browsers/firefox-bin/default.nix index 31d1ef692065..c3b34bf2b78c 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/default.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/default.nix @@ -1,44 +1,13 @@ -{ lib, stdenv, fetchurl, config, wrapGAppsHook +{ lib, stdenv, fetchurl, config, wrapGAppsHook, autoPatchelfHook , 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 +, libva , pciutils -, heimdal -, libpulseaudio -, systemd +, pipewire +, adwaita-icon-theme , channel , generated , writeScript @@ -48,9 +17,7 @@ , gnused , gnugrep , gnupg -, ffmpeg , runtimeShell -, mesa # firefox wants gbm for drm+dmabuf , systemLocale ? config.i18n.defaultLocale or "en_US" }: @@ -95,115 +62,54 @@ stdenv.mkDerivation { 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 - heimdal - libpulseaudio - systemd - ffmpeg - ] + ":" + lib.makeSearchPathOutput "lib" "lib64" [ - stdenv.cc.cc - ]; - - inherit gtk3; - - nativeBuildInputs = [ wrapGAppsHook ]; - buildInputs = [ gtk3 adwaita-icon-theme ]; - - # "strip" after "patchelf" may break binaries. - # See: https://github.com/NixOS/patchelf/issues/10 - dontStrip = true; - dontPatchELF = true; - - postPatch = '' - # Don't download updates from Mozilla directly - echo 'pref("app.update.auto", "false");' >> defaults/pref/channel-prefs.js - ''; + nativeBuildInputs = [ wrapGAppsHook autoPatchelfHook ]; + buildInputs = [ + gtk3 + adwaita-icon-theme + alsa-lib + dbus-glib + libXtst + ]; + runtimeDependencies = [ + curl + libva.out + pciutils + ]; + appendRunpaths = [ + "${pipewire.lib}/lib" + ]; installPhase = '' - mkdir -p "$prefix/usr/lib/firefox-bin-${version}" - cp -r * "$prefix/usr/lib/firefox-bin-${version}" + mkdir -p "$prefix/lib/firefox-bin-${version}" + cp -r * "$prefix/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 \ - glxtest vaapitest - 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") + ln -s "$prefix/lib/firefox-bin-${version}/firefox" "$out/bin/" # 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 lib writeScript xidel coreutils gnused gnugrep gnupg curl runtimeShell; - baseUrl = - if channel == "devedition" - then "https://archive.mozilla.org/pub/devedition/releases/" - else "https://archive.mozilla.org/pub/firefox/releases/"; + passthru = { + binaryName = "firefox"; + libName = "firefox-bin-${version}"; + ffmpegSupport = true; + gssSupport = true; + gtk3 = gtk3; + + # update with: + # $ nix-shell maintainers/scripts/update.nix --argstr package firefox-bin-unwrapped + updateScript = import ./update.nix { + inherit pname channel lib writeScript xidel coreutils gnused gnugrep gnupg curl runtimeShell; + baseUrl = + if channel == "devedition" + then "https://archive.mozilla.org/pub/devedition/releases/" + else "https://archive.mozilla.org/pub/firefox/releases/"; + }; }; + meta = with lib; { changelog = "https://www.mozilla.org/en-US/firefox/${version}/releasenotes/"; description = "Mozilla Firefox, free web browser (binary package)"; @@ -213,5 +119,6 @@ stdenv.mkDerivation { platforms = builtins.attrNames mozillaPlatforms; hydraPlatforms = []; maintainers = with maintainers; [ taku0 lovesegfault ]; + mainProgram = "firefox"; }; }