lol

libretro-cores: - adding: 4do, desmume, fceumm, mame, mupen64plus, scummvm, snes9x, stella, picodrive, ppsspp and vba

retroarch:
- added retroarch wrapper for configured cores
- changed attributes, old retroarch is now retroarchBare*

+254 -18
+170
pkgs/misc/emulators/retroarch/cores.nix
··· 1 + { stdenv, fetchgit, pkgconfig, makeWrapper, python27 2 + , retroarch, fluidsynth, mesa, SDL, libpng, libjpeg, libvorbis, zlib }: 3 + 4 + let 5 + 6 + d2u = stdenv.lib.replaceChars ["-"] ["_"]; 7 + 8 + mkLibRetroCore = ({ core, src, description, ... }@a: 9 + stdenv.lib.makeOverridable stdenv.mkDerivation rec { 10 + 11 + name = "libretro-${core}-${version}"; 12 + version = "20140902"; 13 + inherit src; 14 + 15 + buildInputs = [ makeWrapper retroarch zlib ] ++ a.extraBuildInputs or []; 16 + 17 + buildPhase = "make -f Makefile.libretro"; 18 + installPhase = '' 19 + COREDIR="$out/lib/retroarch/cores" 20 + mkdir -p $out/bin 21 + mkdir -p $COREDIR 22 + mv ${d2u core}_libretro.so $COREDIR/. 23 + makeWrapper ${retroarch}/bin/retroarch $out/bin/retroarch-${core} \ 24 + --add-flags "-L $COREDIR/${d2u core}_libretro.so $@" 25 + ''; 26 + 27 + passthru.libretroCore = "/lib/retroarch/cores"; 28 + 29 + meta = with stdenv.lib; { 30 + inherit description; 31 + homepage = "http://www.libretro.com/"; 32 + license = licenses.gpl3Plus; 33 + maintainers = [ maintainers.edwtjo ]; 34 + platforms = platforms.linux; 35 + }; 36 + } // a); 37 + 38 + fetchRetro = { repo, rev, sha256 }: 39 + fetchgit { 40 + inherit rev sha256; 41 + url = "https://github.com/libretro/${repo}.git"; 42 + fetchSubmodules = true; 43 + }; 44 + 45 + in 46 + 47 + { 48 + 49 + _4do = (mkLibRetroCore rec { 50 + core = "4do"; 51 + src = fetchRetro { 52 + repo = core + "-libretro"; 53 + rev = "961812bc421f3fbfd83ea211783bb511a0b6d31c"; 54 + sha256 = "0217iq8sj8gn161c3mj632csl1da8ir2ffxxdillpcddv6ppsayl"; 55 + }; 56 + description = "Port of 4DO/libfreedo to libretro"; 57 + }).override { 58 + buildPhase = "make"; 59 + }; 60 + 61 + desmume = mkLibRetroCore rec { 62 + core = "desmume"; 63 + src = fetchRetro { 64 + repo = core + "-libretro"; 65 + rev = "1dd58e4a9fa375b6909cd8718165a429d4b8bd6d"; 66 + sha256 = "137bw9316qxm8s6p0bzyvk39dv5b5bn60fgllmyj9z5y8x5lrc9l"; 67 + }; 68 + description = "libretro wrapper for desmume NDS emulator"; 69 + }; 70 + 71 + fceumm = mkLibRetroCore rec { 72 + core = "fceumm"; 73 + src = fetchRetro { 74 + repo = "libretro-" + core; 75 + rev = "17e081541c9d36d0658e7139afa5b085aa0316c9"; 76 + sha256 = "0cn74z976rgjh7hf0yb1sdjlm347157893s2z397rgjvks8xssb0"; 77 + }; 78 + description = "FCEUmm libretro port"; 79 + }; 80 + 81 + mupen64plus = (mkLibRetroCore rec { 82 + core = "mupen64plus"; 83 + src = fetchRetro { 84 + repo = core + "-libretro"; 85 + rev = "2251b3aba2a5bb233ff49dd9b6472f2c0feb9b83"; 86 + sha256 = "04g93kj6n5vddbzfb30d8n711kg0yxfnl5v567aa854misn6gfxd"; 87 + }; 88 + description = "Libretro port of Mupen64 Plus, GL only"; 89 + 90 + extraBuildInputs = [ mesa ]; 91 + }).override { 92 + buildPhase = "make WITH_DYNAREC=${if stdenv.system == "x86_64-linux" then "x86_64" else "x86"}"; 93 + }; 94 + 95 + scummvm = (mkLibRetroCore rec { 96 + core = "scummvm"; 97 + src = fetchRetro { 98 + repo = core; 99 + rev = "c00247171ba8201614e85556c638b8825dc9f225"; 100 + sha256 = "1wir3x928b37va6gn14bmwsydkpk4afma5hppmbivw4qp8mj25pa"; 101 + }; 102 + description = "Libretro port of ScummVM"; 103 + 104 + extraBuildInputs = [ fluidsynth libjpeg libvorbis mesa SDL ]; 105 + }).override { 106 + buildPhase = "cd backends/platform/libretro/build/;make"; 107 + }; 108 + 109 + snes9x-next = mkLibRetroCore rec { 110 + core = "snes9x-next"; 111 + src = fetchRetro { 112 + repo = core; 113 + rev = "461d92be09e1857d215f51aeea448a8e180bbfdd"; 114 + sha256 = "0ci453qsyrv3brmy2szngis2xyvxilcv9yhc2qjz285mirg6fj57"; 115 + }; 116 + description = "Optimized port/rewrite of SNES9x 1.52+ to Libretro"; 117 + }; 118 + 119 + stella = (mkLibRetroCore rec { 120 + core = "stella"; 121 + src = fetchRetro { 122 + repo = core + "-libretro"; 123 + rev = "c7ee7ca7e8a29c986f49306c75832972f5749f72"; 124 + sha256 = "15wy9h3a2qk66lh8x40b3a9il0zkdflqil1h51zjmhq2zzsq8p95"; 125 + }; 126 + description = "Port of Stella to libretro"; 127 + }).override { 128 + buildPhase = "make"; 129 + }; 130 + 131 + picodrive = (mkLibRetroCore rec { 132 + core = "picodrive"; 133 + src = fetchRetro { 134 + repo = core; 135 + rev = "d84817550ac064fbba7ee718fb3baeda7d5546da"; 136 + sha256 = "17zh9m2v7h1cifzz8dcwqm4wn94zyhz6g85gf0aw6xylxahza627"; 137 + }; 138 + description = "Fast MegaDrive/MegaCD/32X emulator"; 139 + 140 + extraBuildInputs = [ libpng SDL ]; 141 + }).override { 142 + patchPhase = "sed -i -e 's,SDL_CONFIG=\".*\",SDL_CONFIG=\"${SDL}/bin/sdl-config\",' configure"; 143 + configurePhase = "./configure"; 144 + }; 145 + 146 + ppsspp = (mkLibRetroCore rec { 147 + core = "ppsspp"; 148 + src = fetchRetro { 149 + repo = "libretro-" + core; 150 + rev = "6ee828171218b26e124c5e8fa7877e6ee1d5ff79"; 151 + sha256 = "1559d4k3h0a2dv3684j4w924p2dg8z2j1fwhy7w9mhb5z4kddjhk"; 152 + }; 153 + description = "ppsspp libretro port"; 154 + 155 + extraBuildInputs = [ mesa ]; 156 + }).override{ 157 + buildPhase = "cd libretro && make"; 158 + }; 159 + 160 + vba-next = mkLibRetroCore rec { 161 + core = "vba-next"; 162 + src = fetchRetro { 163 + repo = core; 164 + rev = "fb095107f83df5f93b8ba4833eaf43901f42c0c0"; 165 + sha256 = "0fvq1dfll27vjbmyh4qsp2nw166jsd91sjmf1sl84z56ab3q3iw8"; 166 + }; 167 + description = "VBA-M libretro port"; 168 + }; 169 + 170 + }
+2 -2
pkgs/misc/emulators/retroarch/default.nix
··· 4 4 }: 5 5 6 6 stdenv.mkDerivation rec { 7 - name = "retroarch-0.9.9.7"; 7 + name = "retroarch-bare-0.9.9.7"; 8 8 9 9 src = fetchgit { 10 10 url = "https://github.com/libretro/RetroArch.git"; ··· 20 20 preConfigure = '' 21 21 configureFlags="--global-config-dir=$out/etc" 22 22 ''; 23 - 23 + 24 24 meta = { 25 25 description = "Modular multi-system game/emulator system"; 26 26 homepage = "http://www.libretro.com/";
+10 -7
pkgs/misc/emulators/retroarch/master.nix
··· 1 - { stdenv, fetchgit, pkgconfig, ffmpeg, mesa, nvidia_cg_toolkit, freetype, libxml2, libv4l 2 - , coreutils, python34, which, udev, alsaLib, libX11, libXext, libXxf86vm, libXdmcp, SDL 3 - , pulseaudio ? null }: 1 + { stdenv, fetchgit, pkgconfig, ffmpeg, mesa, nvidia_cg_toolkit 2 + , freetype, libxml2, libv4l, coreutils, python34, which, udev, alsaLib 3 + , libX11, libXext, libXxf86vm, libXdmcp, SDL, pulseaudio ? null }: 4 + 4 5 stdenv.mkDerivation rec { 5 - name = "retroarch-20140902"; 6 + name = "retroarch-bare-${version}"; 7 + version = "20140902"; 8 + 6 9 src = fetchgit { 7 10 url = git://github.com/libretro/RetroArch.git; 8 11 rev = "0856091296c2e47409f36e13007805d71db69483"; ··· 19 22 20 23 enableParallelBuilding = true; 21 24 22 - meta = { 25 + meta = with stdenv.lib; { 23 26 homepage = http://libretro.org/; 24 27 description = "Multi-platform emulator frontend for libretro cores"; 25 - license = stdenv.lib.licenses.gpl3; 26 - maintainers = with stdenv.lib.maintainers; [ MP2E ]; 28 + license = licenses.gpl3; 29 + maintainers = with maintainers; [ MP2E ]; 27 30 }; 28 31 }
+36
pkgs/misc/emulators/retroarch/wrapper.nix
··· 1 + { stdenv, lib, makeWrapper, retroarch, cores }: 2 + 3 + let 4 + 5 + p = builtins.parseDrvName retroarch.name; 6 + 7 + in 8 + 9 + stdenv.mkDerivation { 10 + name = "retroarch-" + p.version; 11 + version = p.version; 12 + 13 + buildInputs = [ makeWrapper ]; 14 + 15 + buildCommand = '' 16 + mkdir -p $out/lib 17 + $(for coreDir in $cores 18 + do 19 + $(ln -s $coreDir/*.so $out/lib/.) 20 + done) 21 + makeWrapper ${retroarch}/bin/retroarch $out/bin/retroarch \ 22 + --suffix-each LD_LIBRARY_PATH ':' "$cores" \ 23 + --add-flags "-L $out/lib/ --menu" \ 24 + ''; 25 + 26 + cores = map (x: x + x.libretroCore) cores; 27 + preferLocalBuild = true; 28 + 29 + meta = with retroarch.meta; { 30 + inherit license homepage; 31 + description = description 32 + + " (with cores: " 33 + + lib.concatStrings (lib.intersperse ", " (map (x: ""+x.name) cores)) 34 + + ")"; 35 + }; 36 + }
+36 -9
pkgs/top-level/all-packages.nix
··· 1220 1220 * objections before removal. The feature is integer coordinates 1221 1221 */ 1222 1222 graphviz_2_0 = callPackage ../tools/graphics/graphviz/2.0.nix { }; 1223 - 1223 + 1224 1224 /* Readded by Michael Raskin. There are programs in the wild 1225 1225 * that do want 2.32 but not 2.0 or 2.36. Please give a day's notice for 1226 1226 * objections before removal. The feature is libgraph. ··· 7169 7169 tomcat6 = callPackage ../servers/http/tomcat/6.0.nix { }; 7170 7170 7171 7171 tomcat7 = callPackage ../servers/http/tomcat/7.0.nix { }; 7172 - 7172 + 7173 7173 tomcat8 = callPackage ../servers/http/tomcat/8.0.nix { }; 7174 7174 7175 7175 tomcat_mysql_jdbc = callPackage ../servers/http/tomcat/jdbc/mysql { }; ··· 9819 9819 }; 9820 9820 9821 9821 stella = callPackage ../misc/emulators/stella { }; 9822 - 9822 + 9823 9823 linuxstopmotion = callPackage ../applications/video/linuxstopmotion { }; 9824 9824 9825 9825 sweethome3d = recurseIntoAttrs ( (callPackage ../applications/misc/sweethome3d { }) ··· 10215 10215 gtk_modules = [ libcanberra ]; 10216 10216 }; 10217 10217 10218 + wrapRetroArch = { retroarch }: 10219 + let 10220 + cfg = stdenv.lib.attrByPath [ "retroarch" ] {} config; 10221 + in 10222 + import ../misc/emulators/retroarch/wrapper.nix { 10223 + inherit stdenv lib makeWrapper retroarch; 10224 + cores = with libretro; 10225 + ([ ] 10226 + ++ lib.optional (cfg.enable4do or false) _4do 10227 + ++ lib.optional (cfg.enableDesmume or false) desmume 10228 + ++ lib.optional (cfg.enableFceumm or false) fceumm 10229 + ++ lib.optional (cfg.enableMupen64Plus or false) mupen64plus 10230 + ++ lib.optional (cfg.enablePicodrive or false) picodrive 10231 + ++ lib.optional (cfg.enablePPSSPP or false) ppsspp 10232 + ++ lib.optional (cfg.enableScummVM or false) scummvm 10233 + ++ lib.optional (cfg.enableSnes9xNext or false) snes9x-next 10234 + ++ lib.optional (cfg.enableStella or false) stella 10235 + ++ lib.optional (cfg.enableVbaNext or false) vba-next 10236 + ); 10237 + }; 10238 + 10218 10239 wxhexeditor = callPackage ../applications/editors/wxhexeditor { }; 10219 10240 10220 10241 wxcam = callPackage ../applications/video/wxcam { ··· 10222 10243 inherit intltool; 10223 10244 wxGTK = wxGTK28; 10224 10245 gtk = gtk2; 10225 - }; 10246 + }; 10226 10247 10227 10248 x11vnc = callPackage ../tools/X11/x11vnc { }; 10228 10249 ··· 10376 10397 zim = callPackage ../applications/office/zim { 10377 10398 pygtk = pyGtkGlade; 10378 10399 }; 10379 - 10400 + 10380 10401 zotero = callPackage ../applications/office/zotero { }; 10381 10402 10382 10403 zynaddsubfx = callPackage ../applications/audio/zynaddsubfx { }; 10383 - 10384 10404 10385 10405 ### GAMES 10386 10406 ··· 10897 10917 10898 10918 libnm-qt = callPackage ../development/libraries/libnm-qt { }; 10899 10919 10900 - massif-visualizer = callPackage ../development/tools/analysis/massif-visualizer { }; 10920 + massif-visualizer = callPackage ../development/tools/analysis/massif-visualizer { }; 10901 10921 10902 10922 networkmanagement = callPackage ../tools/networking/networkmanagement { }; 10903 10923 ··· 11477 11497 11478 11498 putty = callPackage ../applications/networking/remote/putty { }; 11479 11499 11480 - retroarch = callPackage ../misc/emulators/retroarch { }; 11481 - retroarchMaster = callPackage ../misc/emulators/retroarch/master.nix { }; 11500 + retroarchBare = callPackage ../misc/emulators/retroarch { }; 11501 + 11502 + retroarchBareMaster = callPackage ../misc/emulators/retroarch/master.nix { }; 11503 + 11504 + retroarch = wrapRetroArch { retroarch = retroarchBareMaster; }; 11505 + 11506 + libretro = recurseIntoAttrs (callPackage ../misc/emulators/retroarch/cores.nix { 11507 + retroarch = retroarchBareMaster; 11508 + }); 11482 11509 11483 11510 rssglx = callPackage ../misc/screensavers/rss-glx { }; 11484 11511