diff --git a/pkgs/tools/games/steamtinkerlaunch/default.nix b/pkgs/tools/games/steamtinkerlaunch/default.nix index 42935ad6e393..bf414fb2b34b 100644 --- a/pkgs/tools/games/steamtinkerlaunch/default.nix +++ b/pkgs/tools/games/steamtinkerlaunch/default.nix @@ -3,7 +3,6 @@ , gawk , git , lib -, makeWrapper , procps , stdenvNoCC , unixtools @@ -12,6 +11,7 @@ , xdotool , xorg , yad +, writeShellApplication }: stdenvNoCC.mkDerivation { @@ -25,31 +25,39 @@ stdenvNoCC.mkDerivation { hash = "sha256-CGtSGAm+52t2zFsPJEsm76w+FEHhbOd9NYuerGa31tc="; }; - # hardcode PROGCMD because #150841 - postPatch = '' - substituteInPlace steamtinkerlaunch --replace 'PROGCMD="''${0##*/}"' 'PROGCMD="steamtinkerlaunch"' - ''; - - nativeBuildInputs = [ makeWrapper ]; - installFlags = [ "PREFIX=\${out}" ]; - postInstall = '' - wrapProgram $out/bin/steamtinkerlaunch --prefix PATH : ${lib.makeBinPath [ - bash - gawk - git - procps - unixtools.xxd - unzip - wget - xdotool - xorg.xprop - xorg.xrandr - xorg.xwininfo - yad - ]} - ''; + postInstall = + let + # We (ab)use writeShellApplication to produce a header for a shell script + # here in order to add the runtimePath to the original script. We cannot + # wrap here as that always corrupts $0 in bash scripts which STL uses to + # install its compat tool. + header = writeShellApplication { + runtimeInputs = [ + bash + gawk + git + procps + unixtools.xxd + unzip + wget + xdotool + xorg.xprop + xorg.xrandr + xorg.xwininfo + yad + ]; + name = "stl-head"; + text = ""; + bashOptions = [ ]; + }; + in + '' + cp $out/bin/steamtinkerlaunch $TMPDIR/steamtinkerlaunch + install ${lib.getExe header} -T $out/bin/steamtinkerlaunch + tail -n +2 $TMPDIR/steamtinkerlaunch >> $out/bin/steamtinkerlaunch + ''; meta = with lib; { description = "Linux wrapper tool for use with the Steam client for custom launch options and 3rd party programs";