Commit 1dc34aa9 authored by Atemu's avatar Atemu
Browse files

steamtinkerlaunch: add steamcompattool output

This makes it possible to integrate this into our steam derivation's
extraCompatPackages
parent 309fcf6e
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -25,8 +25,20 @@ stdenvNoCC.mkDerivation {
    hash = "sha256-CGtSGAm+52t2zFsPJEsm76w+FEHhbOd9NYuerGa31tc=";
  };

  outputs = [ "out" "steamcompattool" ];

  installFlags = [ "PREFIX=\${out}" ];

  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
@@ -52,11 +64,31 @@ stdenvNoCC.mkDerivation {
        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; {