diff options
author | Sandro <sandro.jaeckel@gmail.com> | 2023-04-30 01:41:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-30 01:41:19 +0200 |
commit | 5034b5e7bde0e311273027627dd83fc6cc11529d (patch) | |
tree | 8d6f9d0e9769f19cbe0b39ce990997955dc6fbe6 /pkgs/applications/emulators | |
parent | 729c796d49b69d4826ee55d27750a488543c139d (diff) | |
parent | 28288bfb69cbe2212a6f1b2d60a8a3a801c8a414 (diff) |
Merge pull request #224564 from jchw-forks/init/86Box
86Box: init at 3.11
Diffstat (limited to 'pkgs/applications/emulators')
-rw-r--r-- | pkgs/applications/emulators/86box/default.nix | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/pkgs/applications/emulators/86box/default.nix b/pkgs/applications/emulators/86box/default.nix new file mode 100644 index 0000000000000..a6b3ca0d66c3d --- /dev/null +++ b/pkgs/applications/emulators/86box/default.nix @@ -0,0 +1,74 @@ +{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, makeWrapper, freetype, SDL2 +, glib, pcre2, openal, rtmidi, fluidsynth, jack2, alsa-lib, qt5, libvncserver +, discord-gamesdk, libpcap + +, enableDynarec ? with stdenv.hostPlatform; isx86 || isAarch +, enableNewDynarec ? enableDynarec && stdenv.hostPlatform.isAarch +, enableVncRenderer ? false +, unfreeEnableDiscord ? false +}: + +stdenv.mkDerivation rec { + pname = "86Box"; + version = "3.11"; + + src = fetchFromGitHub { + owner = "86Box"; + repo = "86Box"; + rev = "v${version}"; + hash = "sha256-n3Q/NUiaC6/EZyBUn6jUomnQCqr8tvYKPI5JrRRFScI="; + }; + + nativeBuildInputs = [ + cmake + pkg-config + makeWrapper + qt5.wrapQtAppsHook + ]; + + buildInputs = [ + freetype + SDL2 + glib + openal + rtmidi + pcre2 + jack2 + libpcap + qt5.qtbase + qt5.qttools + ] ++ lib.optional stdenv.isLinux alsa-lib + ++ lib.optional enableVncRenderer libvncserver; + + cmakeFlags = lib.optional stdenv.isDarwin "-DCMAKE_MACOSX_BUNDLE=OFF" + ++ lib.optional enableNewDynarec "-DNEW_DYNAREC=ON" + ++ lib.optional enableVncRenderer "-DVNC=ON" + ++ lib.optional (!enableDynarec) "-DDYNAREC=OFF" + ++ lib.optional (!unfreeEnableDiscord) "-DDISCORD=OFF"; + + # Some libraries are loaded dynamically, but QLibrary doesn't seem to search + # the runpath, so use a wrapper instead. + postFixup = let + libPath = lib.makeLibraryPath ([ + libpcap + fluidsynth + ] ++ lib.optional unfreeEnableDiscord discord-gamesdk); + libPathVar = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH"; + in + '' + wrapProgram $out/bin/86Box \ + "''${qtWrapperArgs[@]}" \ + --prefix ${libPathVar} : "${libPath}" + ''; + + # Do not wrap twice. + dontWrapQtApps = true; + + meta = with lib; { + description = "Emulator of x86-based machines based on PCem."; + homepage = "https://86box.net/"; + license = with licenses; [ gpl2Only ] ++ optional unfreeEnableDiscord unfree; + maintainers = [ maintainers.jchw ]; + platforms = platforms.linux; + }; +} |