{ buildEnv, callPackage, makeWrapper }:

let
  sp = callPackage ./sp.nix {};
  mp = sp.overrideAttrs (oldAttrs: {
    sourceRoot = "${oldAttrs.src.name}/MP";
  });
in buildEnv {
  name = "iortcw";

  paths = [ sp mp ];

  pathsToLink = [ "/opt" ];

  nativeBuildInputs = [ makeWrapper ];

  # so we can launch sp from mp game and vice versa
  postBuild = ''
    for i in `find -L $out/opt/iortcw -maxdepth 1 -type f -executable`; do
      makeWrapper $i $out/bin/`basename $i` --chdir "$out/opt/iortcw"
    done
  '';

  meta = sp.meta // {
    description = "Game engine for Return to Castle Wolfenstein";
  };
}
