From b5526585c2de2e66c9111a5484dee65806acbcf5 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Mon, 11 Jul 2022 18:23:52 -0500 Subject: treewide: inject xdg-open into wrappers as $PATH suffix The xdg-open utility is only ever a runtime dependency and its dependents only expect that it accept a URI as a command line argument and do something with it that the user would expect. For such as a trivial relationship it should be possible for users to override xdg-open with something else in their PATH. --- pkgs/applications/networking/appgate-sdp/default.nix | 3 ++- pkgs/applications/networking/browsers/brave/default.nix | 3 ++- pkgs/applications/networking/browsers/firefox/wrapper.nix | 3 ++- pkgs/applications/networking/browsers/google-chrome/default.nix | 3 ++- pkgs/applications/networking/instant-messengers/armcord/default.nix | 2 +- .../applications/networking/instant-messengers/bluejeans/default.nix | 3 ++- pkgs/applications/networking/instant-messengers/franz/generic.nix | 3 ++- pkgs/applications/networking/instant-messengers/slack/default.nix | 5 +++-- .../networking/instant-messengers/telegram/tdesktop/default.nix | 2 +- pkgs/applications/networking/instant-messengers/wavebox/default.nix | 3 ++- pkgs/applications/networking/nextcloud-client/default.nix | 3 ++- 11 files changed, 21 insertions(+), 12 deletions(-) (limited to 'pkgs/applications/networking') diff --git a/pkgs/applications/networking/appgate-sdp/default.nix b/pkgs/applications/networking/appgate-sdp/default.nix index 7dd69aeebcdca..a5bc03596d4dc 100644 --- a/pkgs/applications/networking/appgate-sdp/default.nix +++ b/pkgs/applications/networking/appgate-sdp/default.nix @@ -141,8 +141,9 @@ stdenv.mkDerivation rec { --prefix PATH : ${makeBinPath [ iproute2 networkmanager dnsmasq ]} \ --set LD_LIBRARY_PATH $out/opt/appgate/service + # make xdg-open overrideable at runtime makeWrapper $out/opt/appgate/Appgate $out/bin/appgate \ - --prefix PATH : ${makeBinPath [ xdg-utils ]} \ + --suffix PATH : ${makeBinPath [ xdg-utils ]} \ --set LD_LIBRARY_PATH $out/opt/appgate:${makeLibraryPath deps} wrapProgram $out/opt/appgate/linux/set_dns --set PYTHONPATH $PYTHONPATH diff --git a/pkgs/applications/networking/browsers/brave/default.nix b/pkgs/applications/networking/browsers/brave/default.nix index 67c950f3f9a27..932e33026f788 100644 --- a/pkgs/applications/networking/browsers/brave/default.nix +++ b/pkgs/applications/networking/browsers/brave/default.nix @@ -73,7 +73,7 @@ let libxkbcommon libXScrnSaver libXcomposite libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender libxshmfence libXtst libuuid mesa nspr nss pango pipewire udev wayland - xdg-utils xorg.libxcb zlib snappy + xorg.libxcb zlib snappy ] ++ optional pulseSupport libpulseaudio ++ optional libvaSupport libva; @@ -170,6 +170,7 @@ stdenv.mkDerivation rec { gappsWrapperArgs+=( --prefix LD_LIBRARY_PATH : ${rpath} --prefix PATH : ${binpath} + --suffix PATH : ${lib.makeBinPath [ xdg-utils ]} ${optionalString (enableFeatures != []) '' --add-flags "--enable-features=${strings.concatStringsSep "," enableFeatures}" ''} diff --git a/pkgs/applications/networking/browsers/firefox/wrapper.nix b/pkgs/applications/networking/browsers/firefox/wrapper.nix index 35a98e6c8c609..6f1de80c24bdb 100644 --- a/pkgs/applications/networking/browsers/firefox/wrapper.nix +++ b/pkgs/applications/networking/browsers/firefox/wrapper.nix @@ -271,11 +271,12 @@ 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" \ - --prefix PATH ':' "${xdg-utils}/bin" \ + --suffix PATH ':' "${xdg-utils}/bin" \ --suffix PATH ':' "$out/bin" \ --set MOZ_APP_LAUNCHER "${launcherName}" \ --set MOZ_SYSTEM_DIR "$out/lib/mozilla" \ diff --git a/pkgs/applications/networking/browsers/google-chrome/default.nix b/pkgs/applications/networking/browsers/google-chrome/default.nix index c1c431f7300d9..def7c989e5bcc 100644 --- a/pkgs/applications/networking/browsers/google-chrome/default.nix +++ b/pkgs/applications/networking/browsers/google-chrome/default.nix @@ -63,7 +63,7 @@ let dbus gdk-pixbuf gcc-unwrapped.lib systemd libexif pciutils - liberation_ttf curl util-linux xdg-utils wget + liberation_ttf curl util-linux wget flac harfbuzz icu libpng opusWithCustomModes snappy speechd bzip2 libcap at-spi2-atk at-spi2-core libkrb5 libdrm libglvnd mesa coreutils @@ -145,6 +145,7 @@ in stdenv.mkDerivation { makeWrapper "$out/share/google/$appname/google-$appname" "$exe" \ --prefix LD_LIBRARY_PATH : "$rpath" \ --prefix PATH : "$binpath" \ + --suffix PATH : "${lib.makeBinPath [ xdg-utils ]}" \ --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:${addOpenGLRunpath.driverLink}/share" \ --set CHROME_WRAPPER "google-chrome-$dist" \ --add-flags ${escapeShellArg commandLineArgs} \ diff --git a/pkgs/applications/networking/instant-messengers/armcord/default.nix b/pkgs/applications/networking/instant-messengers/armcord/default.nix index 6f6a6e0b337e5..9a0766a926552 100644 --- a/pkgs/applications/networking/instant-messengers/armcord/default.nix +++ b/pkgs/applications/networking/instant-messengers/armcord/default.nix @@ -108,7 +108,7 @@ stdenv.mkDerivation rec { # Wrap the startup command makeWrapper $out/opt/ArmCord/armcord $out/bin/armcord \ --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath buildInputs}" \ - --prefix PATH : ${lib.makeBinPath [ xdg-utils ]} \ + --suffix PATH : ${lib.makeBinPath [ xdg-utils ]} \ "''${gappsWrapperArgs[@]}" # Fix desktop link diff --git a/pkgs/applications/networking/instant-messengers/bluejeans/default.nix b/pkgs/applications/networking/instant-messengers/bluejeans/default.nix index c74bffdd5e2a7..3779624aaa778 100644 --- a/pkgs/applications/networking/instant-messengers/bluejeans/default.nix +++ b/pkgs/applications/networking/instant-messengers/bluejeans/default.nix @@ -111,10 +111,11 @@ stdenv.mkDerivation rec { cc $localtime64_stub -shared -o "${placeholder "out"}"/opt/BlueJeans/liblocaltime64_stub.so + # make xdg-open overrideable at runtime makeWrapper $out/opt/BlueJeans/bluejeans-v2 $out/bin/bluejeans \ --set LD_LIBRARY_PATH "${libPath}":"${placeholder "out"}"/opt/BlueJeans \ --set LD_PRELOAD "$out"/opt/BlueJeans/liblocaltime64_stub.so \ - --prefix PATH : ${lib.makeBinPath [ xdg-utils ]} + --suffix PATH : ${lib.makeBinPath [ xdg-utils ]} substituteInPlace "$out"/share/applications/bluejeans-v2.desktop \ --replace "/opt/BlueJeans/bluejeans-v2" "$out/bin/bluejeans" diff --git a/pkgs/applications/networking/instant-messengers/franz/generic.nix b/pkgs/applications/networking/instant-messengers/franz/generic.nix index 7438e5496acd4..44546aabe2239 100644 --- a/pkgs/applications/networking/instant-messengers/franz/generic.nix +++ b/pkgs/applications/networking/instant-messengers/franz/generic.nix @@ -85,9 +85,10 @@ stdenv.mkDerivation rec { dontWrapGApps = true; postFixup = '' + # make xdg-open overrideable at runtime wrapProgram $out/opt/${name}/${pname} \ --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath runtimeDependencies}" \ - --prefix PATH : ${xdg-utils}/bin \ + --suffix PATH : ${xdg-utils}/bin \ "''${gappsWrapperArgs[@]}" ''; } diff --git a/pkgs/applications/networking/instant-messengers/slack/default.nix b/pkgs/applications/networking/instant-messengers/slack/default.nix index 5d497546095b4..50693abe8ba7f 100644 --- a/pkgs/applications/networking/instant-messengers/slack/default.nix +++ b/pkgs/applications/networking/instant-messengers/slack/default.nix @@ -164,11 +164,12 @@ let patchelf --set-rpath ${rpath}:$out/lib/slack $file || true done - # Replace the broken bin/slack symlink with a startup wrapper + # Replace the broken bin/slack symlink with a startup wrapper. + # Make xdg-open overrideable at runtime. rm $out/bin/slack makeWrapper $out/lib/slack/slack $out/bin/slack \ --prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH \ - --prefix PATH : ${lib.makeBinPath [xdg-utils]} \ + --suffix PATH : ${lib.makeBinPath [xdg-utils]} \ --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--enable-features=UseOzonePlatform --ozone-platform=wayland}}" # Fix the desktop link diff --git a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix index 3f1468126fd87..bc7fa4a14bca9 100644 --- a/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix +++ b/pkgs/applications/networking/instant-messengers/telegram/tdesktop/default.nix @@ -173,7 +173,7 @@ env.mkDerivation rec { wrapProgram $out/bin/telegram-desktop \ "''${gappsWrapperArgs[@]}" \ "''${qtWrapperArgs[@]}" \ - --prefix PATH : ${lib.makeBinPath [ xdg-utils]} \ + --suffix PATH : ${lib.makeBinPath [ xdg-utils]} \ --set XDG_RUNTIME_DIR "XDG-RUNTIME-DIR" sed -i $out/bin/telegram-desktop \ -e "s,'XDG-RUNTIME-DIR',\"\''${XDG_RUNTIME_DIR:-/run/user/\$(id --user)}\"," diff --git a/pkgs/applications/networking/instant-messengers/wavebox/default.nix b/pkgs/applications/networking/instant-messengers/wavebox/default.nix index 26a6b43d4489a..cf6410def0d1e 100644 --- a/pkgs/applications/networking/instant-messengers/wavebox/default.nix +++ b/pkgs/applications/networking/instant-messengers/wavebox/default.nix @@ -53,8 +53,9 @@ in stdenv.mkDerivation { ''; postFixup = '' + # make xdg-open overrideable at runtime makeWrapper $out/opt/wavebox/Wavebox $out/bin/wavebox \ - --prefix PATH : ${xdg-utils}/bin + --suffix PATH : ${xdg-utils}/bin ''; meta = with lib; { diff --git a/pkgs/applications/networking/nextcloud-client/default.nix b/pkgs/applications/networking/nextcloud-client/default.nix index ec2d717e359d2..51b95a3f2a4db 100644 --- a/pkgs/applications/networking/nextcloud-client/default.nix +++ b/pkgs/applications/networking/nextcloud-client/default.nix @@ -79,7 +79,8 @@ mkDerivation rec { "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libsecret ]}" # See also: https://bugreports.qt.io/browse/QTBUG-85967 "--set QML_DISABLE_DISK_CACHE 1" - "--prefix PATH : ${lib.makeBinPath [ xdg-utils ]}" + # make xdg-open overrideable at runtime + "--suffix PATH : ${lib.makeBinPath [ xdg-utils ]}" ]; cmakeFlags = [ -- cgit 1.4.1