Commit d88ea29d authored by Florian Klink's avatar Florian Klink
Browse files

minivmac: init at 2024.06.08

parent 54a3f8fe
Loading
Loading
Loading
Loading
+53 −0
Original line number Diff line number Diff line
{
  stdenv,
  lib,
  fetchFromGitHub,
  buildPackages,
  alsa-lib,
  xorg,
}:

stdenv.mkDerivation rec {
  pname = "minivmac-erichelgeson";
  version = "2024.06.08";

  src = fetchFromGitHub {
    owner = "erichelgeson";
    repo = "minivmac";
    rev = version;
    hash = "sha256-iiEE0ioXh3keKUPfAB+YcE1iggGLpxT9N8LSVFDhttE=";
  };

  buildInputs = [ xorg.libX11 ];

  makeFlags = [ "PREFIX=${placeholder "out"}" ];

  configurePhase = ''
    ${lib.getExe' buildPackages.stdenv.cc "cc"} setup/tool.c -o setup_t
    ./setup_t -t lx64 > setup.sh

    # Patch hardcoded references in setup.sh to cross-aware counterparts
    substituteInPlace setup.sh --replace 'gcc ' '${stdenv.cc.targetPrefix}cc '
    substituteInPlace setup.sh --replace 'strip --strip-unneeded' '${stdenv.cc.targetPrefix}strip --strip-unneeded'

    sh < ./setup.sh
  '';

  installPhase = ''
    install -Dm755 -t $out/bin ./minivmac
  '';

  # ensure libasound can be dlopen()'ed
  postFixup = ''
    patchelf --add-rpath "${lib.getLib alsa-lib}/lib" $out/bin/minivmac
  '';

  meta = with lib; {
    description = "miniature early Macintosh emulator (fork from erichelgeson)";
    homepage = "https://github.com/erichelgeson/minivmac";
    license = licenses.gpl2;
    maintainers = [ maintainers.flokli ];
    platforms = platforms.linux;
    sourceProvenance = [ sourceTypes.fromSource ];
  };
}