{ stdenv, fetchgit, fetchFromGitHub, fetchFromGitLab, cmake, pkgconfig, makeWrapper, python27, python37, retroarch , alsaLib, fluidsynth, curl, hidapi, libGLU_combined, gettext, glib, gtk2, portaudio, SDL , ffmpeg, pcre, libevdev, libpng, libjpeg, udev, libvorbis , miniupnpc, sfml, xorg, zlib, nasm, libpcap, boost }: let d2u = stdenv.lib.replaceChars ["-"] ["_"]; mkLibRetroCore = ({ core, src, description, license, broken ? false, ... }@a: stdenv.lib.makeOverridable stdenv.mkDerivation rec { name = "libretro-${core}-${version}"; version = "2019-09-29"; inherit src; buildInputs = [ makeWrapper retroarch zlib ] ++ a.extraBuildInputs or []; makefile = "Makefile.libretro"; installPhase = '' COREDIR="$out/lib/retroarch/cores" mkdir -p $out/bin mkdir -p $COREDIR mv ${d2u core}_libretro${stdenv.hostPlatform.extensions.sharedLibrary} $COREDIR/. makeWrapper ${retroarch}/bin/retroarch $out/bin/retroarch-${core} \ --add-flags "-L $COREDIR/${d2u core}_libretro${stdenv.hostPlatform.extensions.sharedLibrary} $@" ''; enableParallelBuilding = true; passthru = { core = core; libretroCore = "/lib/retroarch/cores"; }; meta = with stdenv.lib; { inherit description; homepage = https://www.libretro.com/; inherit license; maintainers = with maintainers; [ edwtjo hrdinka MP2E ]; platforms = platforms.unix; }; } // a); fetchRetro = { repo, rev, sha256 }: fetchgit { inherit rev sha256; url = "https://github.com/libretro/${repo}.git"; fetchSubmodules = true; }; in with stdenv.lib.licenses; { _4do = (mkLibRetroCore rec { core = "4do"; src = fetchRetro { repo = core + "-libretro"; rev = "b6ad4bc8548f2f3792cd929ccf26d9078b73a1c0"; sha256 = "0j2bd9cnnd5k99l9qr4wd5q9b4ciplia6ywp90xg6422s1im2iw0"; }; description = "Port of 4DO/libfreedo to libretro"; license = "Non-commercial"; }).override { makefile = "Makefile"; buildPhase = "make"; }; atari800 = (mkLibRetroCore rec { core = "atari800"; src = fetchRetro { repo = "libretro-" + core; rev = "efc0bc71e3cb8a4f957d07fe808cc002ed9c13b9"; sha256 = "150hmazi4p5p18gpjmkrn1k9j719cd9gy7jn0jiy3jbk2cxxsjn6"; }; description = "Port of Atari800 to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = "make"; }; beetle-snes = (mkLibRetroCore rec { core = "mednafen-snes"; src = fetchRetro { repo = "beetle-bsnes-libretro"; rev = "6aee84d454570bb17dff5975df28febdbcb72938"; sha256 = "0nk9xlypg3jhpbwd9z5bjbgzlkz842hy9rq14k1nwn0qz6d88kld"; }; description = "Port of Mednafen's SNES core to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = "make"; }; beetle-gba = (mkLibRetroCore rec { core = "mednafen-gba"; src = fetchRetro { repo = "beetle-gba-libretro"; rev = "135afdbb9591655a3e016b75abba07e481f6d406"; sha256 = "0fc0x24qn4y7pz3mp1mm1ain31aj9pznp1irr0k7hvazyklzy9g3"; }; description = "Port of Mednafen's GameBoy Advance core to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = "make"; }; beetle-lynx = (mkLibRetroCore rec { core = "mednafen-lynx"; src = fetchRetro { repo = "beetle-lynx-libretro"; rev = "928f7cf5b39f0363e55667572ff455e37489998e"; sha256 = "0f03wzdr6f0fpy889i9a2834jg5lvcriyl98pajp75m7whm9r9cc"; }; description = "Port of Mednafen's Lynx core to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = "make"; }; beetle-ngp = (mkLibRetroCore rec { core = "mednafen-ngp"; src = fetchRetro { repo = "beetle-ngp-libretro"; rev = "6130e4057c3d8f9172f0c49bb9b6c61bd1a572d5"; sha256 = "10k7spjrhggjgzb370bwv7fgk0nb6xri9ym6cm4qvnrkcwxm7i9p"; }; description = "Port of Mednafen's NeoGeo Pocket core to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = "make"; }; beetle-pce-fast = let der = (mkLibRetroCore { core = "mednafen-pce-fast"; src = fetchRetro { repo = "beetle-pce-fast-libretro"; rev = "7bbbdf111c1ce52ab4a97e911ebdaa6836ee881a"; sha256 = "1p0kk5a2yi05yl0hspzv9q0n96yx9riaaacbmnq76li0i3ihkf6l"; }; description = "Port of Mednafen's PC Engine core to libretro"; license = gpl2; }); in der.override { makefile = "Makefile"; buildPhase = "make"; name = "beetle-pce-fast-${der.version}"; }; beetle-pcfx = (mkLibRetroCore rec { core = "mednafen-pcfx"; src = fetchRetro { repo = "beetle-pcfx-libretro"; rev = "e04f695202a7295e4b6f2122ae947279ac9df007"; sha256 = "0pdlz05pjqxp19da13dr3wd20hgxw8z5swhflyf7ksjgvz5rxb4r"; }; description = "Port of Mednafen's PCFX core to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = "make"; }; beetle-psx = let der = (mkLibRetroCore { core = "mednafen-psx"; src = fetchRetro { repo = "beetle-psx-libretro"; rev = "f55db8655408104a6e20af667657423f08566c85"; sha256 = "17iz8r2wy8zqh63j78ijwxasdnmg8dh9mmqn1qr4hvf4fj53ckk8"; }; description = "Port of Mednafen's PSX Engine core to libretro"; license = gpl2; }); in der.override { makefile = "Makefile"; buildPhase = "make"; name = "beetle-psx-${der.version}"; }; beetle-saturn = let der = (mkLibRetroCore { core = "mednafen-saturn"; src = fetchRetro { repo = "beetle-saturn-libretro"; rev = "3313cc6760c14cffa9226e0cfd41debc11df8bdd"; sha256 = "1z2zfn5cpsr3x6bvr562vqvmp4pjjhv5a6jcp09gfsy2gkyispr2"; }; description = "Port of Mednafen's Saturn core to libretro"; license = gpl2; }); in der.override { makefile = "Makefile"; buildPhase = "make"; name = "beetle-saturn-${der.version}"; meta.platforms = [ "x86_64-linux" "aarch64-linux" ]; }; beetle-supergrafx = (mkLibRetroCore rec { core = "mednafen-supergrafx"; src = fetchRetro { repo = "beetle-supergrafx-libretro"; rev = "857e41146e3b0a51def3baea49d2eec80f18102b"; sha256 = "0r3v4qy4rx4mnr7w4s779f6f2bjyp69m42blimacl1l9f6hmcv5h"; }; description = "Port of Mednafen's SuperGrafx core to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = "make"; }; beetle-wswan = (mkLibRetroCore rec { core = "mednafen-wswan"; src = fetchRetro { repo = "beetle-wswan-libretro"; rev = "925cb8c77af1678ceab24f04c2790cb95389def1"; sha256 = "0kqsqn655z6nnr2s1xdbf37ds99gyhqfd7dx0wmx3sy1fshjg5wm"; }; description = "Port of Mednafen's WonderSwan core to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = "make"; }; beetle-vb = (mkLibRetroCore rec { core = "mednafen-vb"; src = fetchRetro { repo = "beetle-vb-libretro"; rev = "9066cdafa29ac054243a679baded49212661f47b"; sha256 = "0gsniz5kk4xdiprcfyqjcss2vkrphi48wbr29gqvpf7l8gpnwx8p"; }; description = "Port of Mednafen's VirtualBoy core to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = "make"; }; bluemsx = (mkLibRetroCore rec { core = "bluemsx"; src = fetchRetro { repo = core + "-libretro"; rev = "ddd89ff1fa534816e48521bd930b721f2d39975a"; sha256 = "0hiqhc1ckj3ydy0q1v8hwjkkyh2564f7wlqypmshjcc47n296xyf"; }; description = "Port of BlueMSX to libretro"; license = gpl2; }).override { buildPhase = "make"; }; bsnes-mercury = let bname = "bsnes-mercury"; in (mkLibRetroCore { core = bname + "-accuracy"; src = fetchRetro { repo = bname; rev = "4a382621da58ae6da850f1bb003ace8b5f67968c"; sha256 = "0z8psz24nx8497vpk2wya9vs451rzzw915lkw3qiq9bzlzg9r2wv"; }; description = "Fork of bsnes with HLE DSP emulation restored"; license = gpl3; }).override { makefile = "Makefile"; buildPhase = "make && cd out"; }; desmume = (mkLibRetroCore rec { core = "desmume"; src = fetchRetro { repo = core; rev = "e8cf461f83eebb195f09e70090f57b07d1bcdd9f"; sha256 = "0rc8s5226wn39jqs5yxi30jc1snc0p106sfym7kgi98hy5na8yab"; }; description = "libretro wrapper for desmume NDS emulator"; license = gpl2; extraBuildInputs = [ libpcap libGLU_combined xorg.libX11 ]; }).override { makefile = "desmume/src/frontend/libretro/Makefile.libretro"; configurePhase = "cd desmume/src/frontend/libretro"; buildPhase = "make"; }; desmume2015 = (mkLibRetroCore rec { core = "desmume2015"; src = fetchRetro { repo = core; rev = "c27bb71aa28250f6da1576e069b4b8cc61986beb"; sha256 = "1m7g1wwpnnprmki3rixknggjmxbp7d4hwxgkqr041shmrm0rhafd"; }; description = "libretro wrapper for desmume NDS emulator from 2015"; license = gpl2; extraBuildInputs = [ libpcap libGLU_combined xorg.libX11 ]; }).override { makefile = "desmume/Makefile.libretro"; configurePhase = "cd desmume"; buildPhase = "make"; }; dolphin = (mkLibRetroCore { core = "dolphin"; src = fetchRetro { repo = "dolphin"; rev = "11a7ed402c7178da1d9d57c6e5e5a05a4dc6a2c8"; sha256 = "11jrcczkbyns01rvxb5rd22fbkbfn2h81f6pfxbhi13fl4ljim9x"; }; description = "Port of Dolphin to libretro"; license = gpl2Plus; broken = true; extraBuildInputs = [ cmake curl libGLU_combined pcre pkgconfig sfml gettext hidapi libevdev udev ] ++ (with xorg; [ libSM libX11 libXi libpthreadstubs libxcb xcbutil libXext libXrandr libXinerama libXxf86vm ]); }).override { cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" "-DLIBRETRO=ON" "-DLIBRETRO_STATIC=1" "-DENABLE_QT=OFF" "-DENABLE_LTO=OFF" "-DUSE_UPNP=OFF" "-DUSE_DISCORD_PRESENCE=OFF" ]; dontUseCmakeBuildDir = "yes"; buildPhase = "make"; }; dosbox = (mkLibRetroCore rec { core = "dosbox"; src = fetchRetro { repo = core + "-libretro"; rev = "e4ed503b14ed59d5d745396ef1cc7d52cf912328"; sha256 = "13bx0ln9hwn6hy4sv0ivqmjgjbfq8svx15dsa24hwd8lkf0kakl4"; }; description = "Port of DOSBox to libretro"; license = gpl2; }).override { buildPhase = "make"; }; fba = (mkLibRetroCore rec { core = "fba"; src = fetchRetro { repo = core + "-libretro"; rev = "89245384c7d181e286d6f34995253419f946becb"; sha256 = "1pg351qhbq5x8qmaq6c30v8ynic8jv3gbxy2kq5iknka80g1lkck"; }; description = "Port of Final Burn Alpha to libretro"; license = "Non-commercial"; }).override { makefile = "svn-current/trunk/makefile.libretro"; buildPhase = '' cd svn-current/trunk \ && make -f makefile.libretro \ && mv fbalpha2012_libretro${stdenv.hostPlatform.extensions.sharedLibrary} fba_libretro${stdenv.hostPlatform.extensions.sharedLibrary} ''; }; fceumm = mkLibRetroCore rec { core = "fceumm"; src = fetchRetro { repo = "libretro-" + core; rev = "0e315e0ca0093ebda06a97835cec6ad4af81db7a"; sha256 = "12bvvxmvafjvrvwxl5gzr583g48s0isx2fgvjgkrx175vk2amaf4"; }; description = "FCEUmm libretro port"; license = gpl2; }; flycast = (mkLibRetroCore rec { core = "flycast"; src = fetchRetro { repo = core; rev = "45a15205dfc05cfc4df2488cad7c2b4988c5aa0f"; sha256 = "18glxd57kddq6p2bwq0qknyq6bv8dxklqks4w2jy2yccvwxdxy2i"; }; description = "Flycast libretro port"; license = gpl2; extraBuildInputs = [ libGLU_combined ]; }).override { makefile = "Makefile"; buildPhase = "make"; }; gambatte = mkLibRetroCore rec { core = "gambatte"; src = fetchRetro { repo = core + "-libretro"; rev = "4d9ad7b29946ec0a914b2d6a735b6c2704ed1f23"; sha256 = "156pvvlch5izbgbw4ddxhiwgzpp52irr3nqaz813i5f02fiq5wya"; }; description = "Gambatte libretro port"; license = gpl2; }; genesis-plus-gx = mkLibRetroCore { core = "genesis-plus-gx"; src = fetchRetro { repo = "Genesis-Plus-GX"; rev = "0e4357bd64533d7fd93b5f01620b92595025fab5"; sha256 = "1nryy00844h3ra97j40g38lj7036ibm2l8002qid7r5r9kggclqx"; }; description = "Enhanced Genesis Plus libretro port"; license = "Non-commercial"; }; gpsp = (mkLibRetroCore rec { core = "gpsp"; src = fetchRetro { repo = core; rev = "24af89596e6484ff5a7a08efecfa8288cfbc02f3"; sha256 = "1jc5i70cab5f23yc9sfv8iyvmwmc4sb33f413il2vlhsfdxklyk7"; }; description = "Port of gpSP to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = "make"; }; handy = (mkLibRetroCore rec { core = "handy"; src = fetchRetro { repo = "libretro-" + core; rev = "6b19a4fad1b394f6a1351c88f60991d4878ff05b"; sha256 = "0lhkrwh3rirdidxb8kfcg8wk9gjsc7g6qpkv74h6f09rb4y75w1y"; }; description = "Port of Handy to libretro"; license = "Handy-License"; }).override { makefile = "Makefile"; buildPhase = "make"; }; hatari = (mkLibRetroCore rec { core = "hatari"; src = fetchRetro { repo = core; rev = "ec1b59c4b6c7ca7d0d23d60cfe2cb61911b11173"; sha256 = "1pm821s2cz93xr7qx7dv0imr44bi4pvdvlnjl486p83vff9yawfg"; }; description = "Port of Hatari to libretro"; license = gpl2; extraBuildInputs = [ cmake SDL ]; }).override { makefile = "Makefile.libretro"; buildPhase = "make"; }; higan-sfc = (mkLibRetroCore { core = "higan-sfc"; src = fetchFromGitLab { owner = "higan"; repo = "higan"; rev = "d3f592013a27cb78f17d84f90a6be6cf6f6af1d1"; sha256 = "19d4cbwg8d085xq5lmql4v5l4ckgwqzc59ha5yfgv3w4qfp4dmij"; }; description = "Accurate SNES / Super Famicom emulator"; license = gpl3; broken = true; }).override { makefile = "GNUmakefile"; buildPhase = "cd higan && make compiler=g++ target=libretro binary=library && cd out"; }; mame = (mkLibRetroCore { core = "mame"; src = fetchRetro { repo = "mame"; rev = "f4aac49f3d56fbd653628ac456c23ac9a6b857ae"; sha256 = "1pjpnwdj73319hgcjhganzrcz2zn4fnjydah989haqh3id5j3zam"; }; description = "Port of MAME to libretro"; license = gpl2Plus; extraBuildInputs = [ alsaLib libGLU_combined portaudio python27 xorg.libX11 ]; }).override { postPatch = '' # Prevent the failure during the parallel building of: # make -C 3rdparty/genie/build/gmake.linux -f genie.make obj/Release/src/host/lua-5.3.0/src/lgc.o mkdir -p 3rdparty/genie/build/gmake.linux/obj/Release/src/host/lua-5.3.0/src ''; buildPhase = "make -f Makefile.libretro"; }; mame2000 = (mkLibRetroCore rec { core = "mame2000"; src = fetchRetro { repo = core + "-libretro"; rev = "0a8a174f5e755cdd476895207003c5d07cfa6af2"; sha256 = "03k0cfgd4wfl31dv5xb6xjd4h7sh0k0qw6wbspwi0lgswmhz97bb"; }; description = "Port of MAME ~2000 to libretro"; license = gpl2Plus; }).override { makefile = "Makefile"; buildPhase = "make"; }; mame2003 = (mkLibRetroCore rec { core = "mame2003"; src = fetchRetro { repo = core + "-libretro"; rev = "170d5b6490953d40edc39defe69945d005f8ec03"; sha256 = "0slsf59sn5lijr1mrx5ffc9z81ra1wcw7810mb52djqyvm15r9zl"; }; description = "Port of MAME ~2003 to libretro"; license = gpl2Plus; }).override { makefile = "Makefile"; buildPhase = "make"; }; mame2003-plus = (mkLibRetroCore rec { core = "mame2003-plus"; src = fetchRetro { repo = core + "-libretro"; rev = "d9a56a3af908ae9100b4c9feebff4b918363f241"; sha256 = "1c16chfs4b2j1x1bmrklh8ssqki850k787qwq7b95dyxksj2bpx1"; }; description = "Port of MAME ~2003+ to libretro"; license = gpl2Plus; }).override { makefile = "Makefile"; buildPhase = "make"; }; mame2010 = (mkLibRetroCore rec { core = "mame2010"; src = fetchRetro { repo = core + "-libretro"; rev = "4ced2c31f1100eefc7f4483b474b8a680a3b3f2b"; sha256 = "1a8ijj0sixr6xrqfgimna0ipfj2bb2kvj4mb45hb8a18mwn6y0mc"; }; description = "Port of MAME ~2010 to libretro"; license = gpl2Plus; }).override { makefile = "Makefile"; buildPhase = "make"; }; mame2015 = (mkLibRetroCore rec { core = "mame2015"; src = fetchRetro { repo = core + "-libretro"; rev = "e3a28398f54cd6b2c24b7165d215b046b79c10f5"; sha256 = "1fgwi37zgp2s92bkz03gch3ivgyjgdi3xycrd8z7x87gi20a79x9"; }; description = "Port of MAME ~2015 to libretro"; license = gpl2Plus; extraBuildInputs = [ python27 alsaLib ]; }).override { makefile = "Makefile"; buildPhase = "make"; }; mame2016 = (mkLibRetroCore rec { core = "mame2016"; src = fetchRetro { repo = core + "-libretro"; rev = "ea4c1ffa75eb3fb0096158b71706b8b84d86d12c"; sha256 = "1qyvdymmjv5q0k3najgfdxzf1yr6bnysnsl19v753yj29xs4hwzp"; }; description = "Port of MAME ~2016 to libretro"; license = gpl2Plus; extraBuildInputs = [ python27 alsaLib ]; }).override { postPatch = '' # Prevent the failure during the parallel building of: # make -C 3rdparty/genie/build/gmake.linux -f genie.make obj/Release/src/host/lua-5.3.0/src/lgc.o mkdir -p 3rdparty/genie/build/gmake.linux/obj/Release/src/host/lua-5.3.0/src ''; buildPhase = "make -f Makefile.libretro"; }; mesen = (mkLibRetroCore rec { core = "mesen"; src = fetchFromGitHub { owner = "SourMesen"; repo = core; rev = "942633dd3dbb73cc3abd748f6d5440c78abbea09"; sha256 = "0a95wd64vnblksacapxwxla9j2iw8a5hbdm111cldrni12q87iq2"; }; description = "Port of Mesen to libretro"; license = gpl3; }).override { makefile = "Libretro/Makefile"; buildPhase = "cd Libretro && make"; }; mgba = mkLibRetroCore rec { core = "mgba"; src = fetchRetro { repo = core; rev = "4865aaabc2a46c635f218f7b51f8fc5cc2c4c8ac"; sha256 = "1mdzwcsl5bafmgqfh0a1bgfgilisffxsygcby0igsq2bgkal47mm"; }; description = "Port of mGBA to libretro"; license = mpl20; }; mupen64plus = (mkLibRetroCore rec { core = "mupen64plus-next"; src = fetchRetro { repo = "mupen64plus-libretro-nx"; # + "-libretro-nx"; rev = "f77c16f9f1dd911fd2254becc8a28adcdafe8aa1"; sha256 = "0j6vrkwch9lwmlhyz7fp1ha0bby54gvbwk91hwbv35f6dvs0aw0d"; }; description = "Libretro port of Mupen64 Plus, GL only"; license = gpl2; extraBuildInputs = [ libGLU_combined libpng nasm xorg.libX11 ]; }).override { makefile = "Makefile"; buildPhase = "make"; }; nestopia = (mkLibRetroCore rec { core = "nestopia"; src = fetchRetro { repo = core; rev = "7f48c211c281880d122981da119a4455a9bebbde"; sha256 = "05p3a559633dzw222rs1fh48v657mdyirl1qfqzkhqiar9rxf31g"; }; description = "nestopia undead libretro port"; license = gpl2; }).override { makefile = "libretro/Makefile"; buildPhase = "cd libretro && make"; }; o2em = (mkLibRetroCore rec { core = "o2em"; src = fetchRetro { repo = "libretro-" + core; rev = "d6731b9b2592654ce4f1b64c1b1da17b32e7c94c"; sha256 = "0809qw16y7ablxfayf0lbzvq7wqdmjp0afdb0vcgv193vvhhp58q"; }; description = "Port of O2EM to libretro"; license = artistic1; }).override { makefile = "Makefile"; buildPhase = "make"; }; parallel-n64 = (mkLibRetroCore rec { core = "parallel-n64"; src = fetchRetro { repo = core; rev = "30f4fd3c2456145763eb76aead7485a1b86ba6bd"; sha256 = "0kbyzmscmfi6f842clzaff4k6xcb5410fwhv8n6vv42xk6ljfvgh"; }; description = "Parallel Mupen64plus rewrite for libretro."; license = gpl2; extraBuildInputs = [ libGLU_combined libpng ]; }).override { makefile = "Makefile"; buildPhase = "make"; }; pcsx_rearmed = (mkLibRetroCore rec { core = "pcsx_rearmed"; src = fetchRetro { repo = core; rev = "eb6943ee04b0f30a6f1cebfe399a94bacd1dfb45"; sha256 = "0xikdirvjal4mdr5y9dl9gcxhdilqzq43f909b0z8vc069vj1wjz"; }; description = "Port of PCSX ReARMed to libretro"; license = gpl2; }).override { configurePhase = "rm configure"; buildPhase = "make -f Makefile.libretro"; }; picodrive = (mkLibRetroCore rec { core = "picodrive"; src = fetchRetro { repo = core; rev = "28dcfd6f43434e6828ee647223a0576bfe858c24"; sha256 = "19a1b6q8fhf7wxzyf690va1ixzlxlzyslv1zxm0ll5pfsqf2y3gx"; }; description = "Fast MegaDrive/MegaCD/32X emulator"; license = "MAME"; extraBuildInputs = [ libpng SDL ]; }).override { patchPhase = "sed -i -e 's,SDL_CONFIG=\".*\",SDL_CONFIG=\"${SDL.dev}/bin/sdl-config\",' configure"; configurePhase = "./configure"; }; play = (mkLibRetroCore rec { core = "play"; src = fetchRetro { repo = "play-"; rev = "fedc1e1c2918a7490a881cdb4ec951a828c19671"; sha256 = "0hwxx7h61gd29a2gagwjbvxk2hgwdk1wxg4nx90zrizb8nczwnl6"; }; description = "Port of Play! to libretro"; license = bsd2; extraBuildInputs = [ cmake boost ]; }).override { cmakeFlags = [ "-DBUILD_PLAY=OFF -DBUILD_LIBRETRO_CORE=ON" ]; buildPhase = "make"; }; ppsspp = (mkLibRetroCore rec { core = "ppsspp"; src = fetchgit { url = "https://github.com/hrydgard/ppsspp"; rev = "bf1777f7d3702e6a0f71c7ec1fc51976e23c2327"; sha256 = "17sym0vk72lzbh9a1501mhw98c78x1gq7k1fpy69nvvb119j37wa"; }; description = "ppsspp libretro port"; license = gpl2; extraBuildInputs = [ cmake libGLU_combined ffmpeg python37 xorg.libX11 ]; }).override { cmakeFlags = "-DLIBRETRO=ON"; makefile = "Makefile"; buildPhase = '' make \ && mv lib/ppsspp_libretro${stdenv.hostPlatform.extensions.sharedLibrary} ppsspp_libretro${stdenv.hostPlatform.extensions.sharedLibrary} ''; }; prboom = (mkLibRetroCore rec { core = "prboom"; src = fetchRetro { repo = "libretro-" + core; rev = "4c690eb6b569a276c5b2a87680718f715477eae2"; sha256 = "02vkl3y5dmyzifsviphspqv03a2rdyf36zpjpgfg7x0s226f56ja"; }; description = "Prboom libretro port"; license = gpl2; }).override { buildPhase = "make"; }; prosystem = (mkLibRetroCore rec { core = "prosystem"; src = fetchRetro { repo = core + "-libretro"; rev = "cb4aa3ee72f98b0891a7bac5c9dac458cdba4d34"; sha256 = "0yvzmks9zz1hf7mv6cd2qin1p3yx00dbrcxlm0yysy5q5jiigblg"; }; description = "Port of ProSystem to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = "make"; }; quicknes = (mkLibRetroCore rec { core = "quicknes"; src = fetchRetro { repo = "QuickNES_Core"; rev = "cd302d998d102c9461a924b81817e48b9ea1518f"; sha256 = "1sczs1jqcbhpkb5xpcqqdcnxlz7bqmanm4gdnnc12c19snl7999b"; }; description = "QuickNES libretro port"; license = lgpl21Plus; }).override { makefile = "Makefile"; buildPhase = "make"; }; scummvm = (mkLibRetroCore rec { core = "scummvm"; src = fetchRetro { repo = core; rev = "e07a6ede61c364fb87630fa7507a4f8482d882e0"; sha256 = "0i88z53q28lwzmadxincab4m66qbzcbmasgildybj8db0z2z8jm0"; }; description = "Libretro port of ScummVM"; license = gpl2; extraBuildInputs = [ fluidsynth libjpeg libvorbis libGLU_combined SDL ]; }).override { makefile = "backends/platform/libretro/build/Makefile"; buildPhase = "cd backends/platform/libretro/build && make"; }; snes9x = (mkLibRetroCore rec { core = "snes9x"; src = fetchRetro { repo = core; rev = "29b78df8c9f0f48ed4605d08a187a134b3b316d6"; sha256 = "004h1pkxvbn4zlh8bqs6z17k04jw5wzbwklpgvmb7hbxshsi4qid"; }; description = "Port of SNES9x git to libretro"; license = "Non-commercial"; }).override { makefile = "libretro/Makefile"; buildPhase = "cd libretro && make"; }; snes9x2002 = (mkLibRetroCore rec { core = "snes9x2002"; src = fetchRetro { repo = core; rev = "354bcb5acea0aa45b56ae553e0b2b4f10792dfeb"; sha256 = "05gvjjxy6ci5pax3frd9g8k9mkqskab5g6rvfjab7cc4zrxrg23f"; }; description = "Optimized port/rewrite of SNES9x 1.39 to Libretro"; license = "Non-commercial"; }).override { makefile = "Makefile"; buildPhase = "make"; }; snes9x2005 = (mkLibRetroCore rec { core = "snes9x2005"; src = fetchRetro { repo = core; rev = "e5cadd2f21fb64e8c7194ad006b39e6f555c4a5b"; sha256 = "1q0xrw3f8zm2k19sva8cz28yx815w8a6y1xsl0i6bb3cai3q1hyx"; }; description = "Optimized port/rewrite of SNES9x 1.43 to Libretro"; license = "Non-commercial"; }).override { makefile = "Makefile"; buildPhase = '' make USE_BLARGG_APU=1 \ && mv snes9x2005_plus_libretro${stdenv.hostPlatform.extensions.sharedLibrary} snes9x2005_libretro${stdenv.hostPlatform.extensions.sharedLibrary} ''; }; snes9x2010 = (mkLibRetroCore rec { core = "snes9x2010"; src = fetchRetro { repo = core; rev = "e945cbae0f8c472e1567a319817c9228b775dd71"; sha256 = "1pj5p4a2hy7hk90bzy4vnkz3b6nc8n1niqibgwhyfsc22xlxqsfr"; }; description = "Optimized port/rewrite of SNES9x 1.52+ to Libretro"; license = "Non-commercial"; }).override { buildPhase = '' make -f Makefile.libretro ''; }; stella = (mkLibRetroCore rec { core = "stella"; src = fetchRetro { repo = core + "2014-libretro"; rev = "6d74ad9a0fd779145108cf1213229798d409ed37"; sha256 = "0b1nsk92rr64xxj8jc9vpjqgrmm3554096zl031ymr94j5cc87q9"; }; description = "Port of Stella to libretro"; license = gpl2; }).override { makefile = "Makefile"; buildPhase = '' make \ && mv stella2014_libretro${stdenv.hostPlatform.extensions.sharedLibrary} stella_libretro${stdenv.hostPlatform.extensions.sharedLibrary} ''; }; vba-next = mkLibRetroCore rec { core = "vba-next"; src = fetchRetro { repo = core; rev = "3580ae6acb1a90c4e982e57597458da07eca4f41"; sha256 = "0fz8z04kf9g1i5x5slyvx5kb07garzxvhcqnwmqn5j574xh1lc6d"; }; description = "VBA-M libretro port with modifications for speed"; license = gpl2; }; vba-m = (mkLibRetroCore rec { core = "vbam"; src = fetchRetro { repo = core + "-libretro"; rev = "9ccdeac3aa9db00720bb80eff5c9924362144efa"; sha256 = "0rq89i9f483j93shhp2p3vqsnb2abpwz6wdnsycfwxgblczmi22y"; }; description = "vanilla VBA-M libretro port"; license = gpl2; }).override { makefile = "src/libretro/Makefile"; buildPhase = "cd src/libretro && make"; }; vecx = (mkLibRetroCore rec { core = "vecx"; src = fetchRetro { repo = "libretro-" + core; rev = "26585ee701499550e484c11f005db18e926827d9"; sha256 = "0vz2aksc8mqnw55f2bvvawj21mxf60fp93r0sr55hdccn9h7355k"; }; description = "Port of Vecx to libretro"; license = gpl3; }).override { buildPhase = "make"; }; virtualjaguar = (mkLibRetroCore rec { core = "virtualjaguar"; src = fetchRetro { repo = core + "-libretro"; rev = "7bdd8658880b53bf2bcbae0741323fe18f9041f5"; sha256 = "0zbrsfhvx293ijazy1w19qha19hprsi0zv8295sa0gq8kyh0xhyw"; }; description = "Port of VirtualJaguar to libretro"; license = gpl3; }).override { makefile = "Makefile"; buildPhase = "make"; }; yabause = (mkLibRetroCore rec { core = "yabause"; src = fetchRetro { repo = core; rev = "08d09cb88a69ee4c2986693fb813e0eb58d71481"; sha256 = "0z55yam1l7m21kbjwn44sp4md9g7p95b27vcxr7i0v08gnkwwvv1"; }; description = "Port of Yabause to libretro"; license = gpl2; }).override { makefile = "yabause/src/libretro/Makefile"; buildPhase = "cd yabause/src/libretro && make"; }; }