Unverified Commit 24c474ca authored by Sandro Jäckel's avatar Sandro Jäckel Committed by GitHub
Browse files

me3: init at 0.11.0 (#498117)

parents c67b51a4 a5019cfe
Loading
Loading
Loading
Loading
+103 −0
Original line number Diff line number Diff line
{
  fetchFromGitHub,
  lib,
  makeWrapper,
  pkgsCross,
  replaceVars,
  rustPlatform,
  steam,
  symlinkJoin,
}:

let
  version = "0.11.0";

  # me3 creates a pipe under /tmp needed by the compat tool subprocess
  steam-run =
    (steam.override {
      privateTmp = false;
    }).run-free;

  src = fetchFromGitHub {
    owner = "garyttierney";
    repo = "me3";
    tag = "v${version}";
    sha256 = "sha256-XyeMVPGzNF2syipLz9HPtUg7lhxcEq434FnRH3Ax+HM=";
  };

  cargoHash = "sha256-T1HeYe9FUC5oy/SDeEd6vV4D9YIGIXMkbzf43gRNyt8=";

  me3-cli = rustPlatform.buildRustPackage (final: {
    inherit cargoHash version src;
    pname = "me3-cli";

    # Wrap the compat tool subprocess to support proton's pressure vessel
    patches = [
      (replaceVars ./steam-run.patch {
        steamRun = lib.getExe steam-run;
      })
    ];

    cargoBuildFlags = [
      "--package"
      "me3-cli"
    ];

    cargoTestFlags = final.cargoBuildFlags;

    postInstall = ''
      install -Dm444 distribution/linux/me3-launch.desktop \
        $out/share/applications/me3-launch.desktop
      install -Dm444 distribution/linux/me3.xml \
        $out/share/mime/packages/me3.xml
      install -Dm444 distribution/assets/me3.png \
        $out/share/icons/hicolor/128x128/apps/me3.png
    '';
  });

  me3-windows = pkgsCross.mingwW64.rustPlatform.buildRustPackage (final: {
    inherit cargoHash version src;
    pname = "me3-windows";

    CARGO_TARGET_X86_64_PC_WINDOWS_GNU_RUSTFLAGS = "-Clink-arg=-lmcfgthread";
    RUSTC_BOOTSTRAP = 1;

    cargoBuildFlags = [
      "--package"
      "me3-launcher"
      "--package"
      "me3-mod-host"
    ];

    cargoTestFlags = final.cargoBuildFlags;

    # Remove useless libme3_mod_host.dll.a
    postInstall = ''
      rm -r $out/lib
    '';
  });
in
symlinkJoin {
  inherit version;
  name = "me3";

  paths = [
    me3-cli
    me3-windows
  ];

  nativeBuildInputs = [ makeWrapper ];

  postBuild = ''
    wrapProgram $out/bin/me3 \
      --set WINEPATH $out/bin \
      --add-flags "--windows-binaries-dir $out/bin"
  '';

  meta = {
    description = "Framework for modding and instrumenting games.";
    homepage = "https://github.com/garyttierney/me3";
    license = lib.licenses.mit;
    maintainers = [ lib.maintainers.icedborn ];
  };
}
+17 −0
Original line number Diff line number Diff line
--- a/crates/cli/src/commands/launch/strategy/compat_tool.rs
+++ b/crates/cli/src/commands/launch/strategy/compat_tool.rs
@@ -260,10 +260,10 @@
             tool = parent_tool;
         }
 
-        let mut command = Command::new(
-            args.pop_front()
-                .ok_or_eyre("Compat Tool produced invalid command")?,
-        );
+        let program = args.pop_front()
+            .ok_or_eyre("Compat Tool produced invalid command")?;
+        let mut command = Command::new("@steamRun@");
+        command.arg(program);
         command.args(args);
         command.arg(exe);
         command.arg("--");