From fd49f733fae41ef811575412e51b21762108020a Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 15 Jan 2025 20:24:25 +0800 Subject: [PATCH 1/2] firefox: wrapper: use __structuredAttrs = true --- pkgs/applications/networking/browsers/firefox/wrapper.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index 9679e5d039c7..2d90bca10c71 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -181,6 +181,7 @@ let ############################# in stdenv.mkDerivation { + __structuredAttrs = true; inherit pname version; desktopItem = makeDesktopItem ({ From 6f10797ac2628a91ab6a051fe396638c34589bb4 Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 15 Jan 2025 21:16:51 +0800 Subject: [PATCH 2/2] firefox; wrapper: specify makeWrapperArgs as an attribute Provide a way to override makeWrapperArgs --- .../networking/browsers/firefox/wrapper.nix | 84 ++++++++++++++----- 1 file changed, 61 insertions(+), 23 deletions(-) diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index 2d90bca10c71..374d581855e1 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -180,7 +180,7 @@ let # # ############################# - in stdenv.mkDerivation { + in stdenv.mkDerivation (finalAttrs: { __structuredAttrs = true; inherit pname version; @@ -246,6 +246,62 @@ let nativeBuildInputs = [ makeWrapper lndir jq ]; buildInputs = [ browser.gtk3 ]; + makeWrapperArgs = [ + "--prefix" + "LD_LIBRARY_PATH" + ":" + "${finalAttrs.libs}" + + "--suffix" + "GTK_PATH" + ":" + "${lib.concatStringsSep ":" finalAttrs.gtk_modules}" + + "--suffix" "PATH" + ":" + "${placeholder "out"}/bin" + + "--set" + "MOZ_APP_LAUNCHER" + launcherName + + "--set" + "MOZ_LEGACY_PROFILES" + "1" + + "--set" + "MOZ_ALLOW_DOWNGRADE" + "1" + + "--suffix" + "XDG_DATA_DIRS" + ":" + "${adwaita-icon-theme}/share" + + "--set-default" + "MOZ_ENABLE_WAYLAND" + "1" + + ] ++ lib.optionals (!xdg-utils.meta.broken) [ + # make xdg-open overrideable at runtime + "--suffix" + "PATH" + ":" + "${lib.makeBinPath [ xdg-utils ]}" + + ] ++ lib.optionals hasMozSystemDirPatch [ + "--set" + "MOZ_SYSTEM_DIR" + "${placeholder "out"}/lib/mozilla" + + ] ++ lib.optionals (!hasMozSystemDirPatch && allNativeMessagingHosts != [ ]) [ + "--run" + ''mkdir -p ''${MOZ_HOME:-~/.mozilla}/native-messaging-hosts'' + + ] ++ lib.optionals (!hasMozSystemDirPatch) (lib.concatMap (ext: [ + "--run" + ''ln -sfLt ''${MOZ_HOME:-~/.mozilla}/native-messaging-hosts ${ext}/lib/mozilla/native-messaging-hosts/*'' + ]) allNativeMessagingHosts); buildCommand = '' if [ ! -x "${browser}/bin/${applicationName}" ] @@ -314,27 +370,9 @@ let mv "$executablePath" "$oldExe" fi - # make xdg-open overrideable at runtime - makeWrapper "$oldExe" \ - "''${executablePath}${nameSuffix}" \ - --prefix LD_LIBRARY_PATH ':' "$libs" \ - --suffix-each GTK_PATH ':' "$gtk_modules" \ - ${lib.optionalString (!xdg-utils.meta.broken) "--suffix PATH ':' \"${xdg-utils}/bin\""} \ - --suffix PATH ':' "$out/bin" \ - --set MOZ_APP_LAUNCHER "${launcherName}" \ - '' + lib.optionalString hasMozSystemDirPatch '' - --set MOZ_SYSTEM_DIR "$out/lib/mozilla" \ - '' + '' - --set MOZ_LEGACY_PROFILES 1 \ - --set MOZ_ALLOW_DOWNGRADE 1 \ - --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \ - --suffix XDG_DATA_DIRS : '${adwaita-icon-theme}/share' \ - --set-default MOZ_ENABLE_WAYLAND 1 \ - '' + lib.optionalString (!hasMozSystemDirPatch) '' - ${lib.optionalString (allNativeMessagingHosts != []) "--run \"mkdir -p \\\${MOZ_HOME:-~/.mozilla}/native-messaging-hosts\""} \ - ${lib.concatMapStringsSep " " (ext: "--run \"ln -sfLt \\\${MOZ_HOME:-~/.mozilla}/native-messaging-hosts ${ext}/lib/mozilla/native-messaging-hosts/*\"") allNativeMessagingHosts} \ - '' + '' - "''${oldWrapperArgs[@]}" + appendToVar makeWrapperArgs --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" + concatTo makeWrapperArgs oldWrapperArgs + makeWrapper "$oldExe" "''${executablePath}${nameSuffix}" ''${makeWrapperArgs[@]} ############################# # # # END EXTRA PREF CHANGES # @@ -432,5 +470,5 @@ let hydraPlatforms = []; priority = (browser.meta.priority or lib.meta.defaultPriority) - 1; # prefer wrapper over the package }; - }; + }); in lib.makeOverridable wrapper