Loading pkgs/tools/games/steamtinkerlaunch/default.nix +63 −23 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ , gawk , git , lib , makeWrapper , procps , stdenvNoCC , unixtools Loading @@ -12,6 +11,7 @@ , xdotool , xorg , yad , writeShellApplication }: stdenvNoCC.mkDerivation { Loading @@ -25,17 +25,28 @@ stdenvNoCC.mkDerivation { hash = "sha256-CGtSGAm+52t2zFsPJEsm76w+FEHhbOd9NYuerGa31tc="; }; # hardcode PROGCMD because #150841 postPatch = '' substituteInPlace steamtinkerlaunch --replace 'PROGCMD="''${0##*/}"' 'PROGCMD="steamtinkerlaunch"' ''; nativeBuildInputs = [ makeWrapper ]; outputs = [ "out" "steamcompattool" ]; installFlags = [ "PREFIX=\${out}" ]; postInstall = '' wrapProgram $out/bin/steamtinkerlaunch --prefix PATH : ${lib.makeBinPath [ nativeBuildInputs = let # We need a `steam` command in order to install the compat tool fakeSteam = writeShellApplication { name = "steam"; text = "exit 0"; }; in [ fakeSteam ]; 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 Loading @@ -48,7 +59,36 @@ stdenvNoCC.mkDerivation { xorg.xrandr xorg.xwininfo yad ]} ]; name = "stl-head"; text = ""; bashOptions = [ ]; }; fakeYad = writeShellApplication { name = "yad"; text = "echo ${yad.version} FAKE"; }; in '' cp $out/bin/steamtinkerlaunch $TMPDIR/steamtinkerlaunch install ${lib.getExe header} -T $out/bin/steamtinkerlaunch tail -n +2 $TMPDIR/steamtinkerlaunch >> $out/bin/steamtinkerlaunch # Create a fake steam dir, it checks this and reads a few values steamdir=$TMPDIR/.local/share/Steam/ mkdir -p $steamdir/config/ echo \"path\" \"$steamdir\" > $steamdir/config/config.vdf mkdir $TMPDIR/.steam/ ln -s $steamdir $TMPDIR/.steam/steam cp -a $out/bin/steamtinkerlaunch $TMPDIR/steamtinkerlaunch # yad cannot print its version without a graphical session https://github.com/v1cont/yad/issues/277 substituteInPlace $TMPDIR/steamtinkerlaunch --replace ${yad} ${fakeYad} HOME=$TMPDIR $TMPDIR/steamtinkerlaunch compat add cp -a $steamdir/compatibilitytools.d/SteamTinkerLaunch $steamcompattool # It creates this symlink but it points to $TMPDIR ln -sfn $out/bin/steamtinkerlaunch $steamcompattool/ ''; meta = with lib; { Loading Loading
pkgs/tools/games/steamtinkerlaunch/default.nix +63 −23 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ , gawk , git , lib , makeWrapper , procps , stdenvNoCC , unixtools Loading @@ -12,6 +11,7 @@ , xdotool , xorg , yad , writeShellApplication }: stdenvNoCC.mkDerivation { Loading @@ -25,17 +25,28 @@ stdenvNoCC.mkDerivation { hash = "sha256-CGtSGAm+52t2zFsPJEsm76w+FEHhbOd9NYuerGa31tc="; }; # hardcode PROGCMD because #150841 postPatch = '' substituteInPlace steamtinkerlaunch --replace 'PROGCMD="''${0##*/}"' 'PROGCMD="steamtinkerlaunch"' ''; nativeBuildInputs = [ makeWrapper ]; outputs = [ "out" "steamcompattool" ]; installFlags = [ "PREFIX=\${out}" ]; postInstall = '' wrapProgram $out/bin/steamtinkerlaunch --prefix PATH : ${lib.makeBinPath [ nativeBuildInputs = let # We need a `steam` command in order to install the compat tool fakeSteam = writeShellApplication { name = "steam"; text = "exit 0"; }; in [ fakeSteam ]; 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 Loading @@ -48,7 +59,36 @@ stdenvNoCC.mkDerivation { xorg.xrandr xorg.xwininfo yad ]} ]; name = "stl-head"; text = ""; bashOptions = [ ]; }; fakeYad = writeShellApplication { name = "yad"; text = "echo ${yad.version} FAKE"; }; in '' cp $out/bin/steamtinkerlaunch $TMPDIR/steamtinkerlaunch install ${lib.getExe header} -T $out/bin/steamtinkerlaunch tail -n +2 $TMPDIR/steamtinkerlaunch >> $out/bin/steamtinkerlaunch # Create a fake steam dir, it checks this and reads a few values steamdir=$TMPDIR/.local/share/Steam/ mkdir -p $steamdir/config/ echo \"path\" \"$steamdir\" > $steamdir/config/config.vdf mkdir $TMPDIR/.steam/ ln -s $steamdir $TMPDIR/.steam/steam cp -a $out/bin/steamtinkerlaunch $TMPDIR/steamtinkerlaunch # yad cannot print its version without a graphical session https://github.com/v1cont/yad/issues/277 substituteInPlace $TMPDIR/steamtinkerlaunch --replace ${yad} ${fakeYad} HOME=$TMPDIR $TMPDIR/steamtinkerlaunch compat add cp -a $steamdir/compatibilitytools.d/SteamTinkerLaunch $steamcompattool # It creates this symlink but it points to $TMPDIR ln -sfn $out/bin/steamtinkerlaunch $steamcompattool/ ''; meta = with lib; { Loading