about summary refs log tree commit diff
path: root/pkgs/misc/emulators
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2018-03-05 12:49:52 +0100
committerVladimír Čunát <vcunat@gmail.com>2018-03-05 14:53:27 +0100
commit565bd805e6aea9258ead5449b46c5e56ae0568fb (patch)
tree81a23c558823fc865d180bb8b6318d24ec38729d /pkgs/misc/emulators
parent25a78f7234ced8840610178a695078b5b08d9e6b (diff)
parent97693915e1d31478528ee72e8d1fea5aa384577b (diff)
downloadnixlib-565bd805e6aea9258ead5449b46c5e56ae0568fb.tar
nixlib-565bd805e6aea9258ead5449b46c5e56ae0568fb.tar.gz
nixlib-565bd805e6aea9258ead5449b46c5e56ae0568fb.tar.bz2
nixlib-565bd805e6aea9258ead5449b46c5e56ae0568fb.tar.lz
nixlib-565bd805e6aea9258ead5449b46c5e56ae0568fb.tar.xz
nixlib-565bd805e6aea9258ead5449b46c5e56ae0568fb.tar.zst
nixlib-565bd805e6aea9258ead5449b46c5e56ae0568fb.zip
Merge branch 'master'
Diffstat (limited to 'pkgs/misc/emulators')
-rw-r--r--pkgs/misc/emulators/caprice32/default.nix29
-rw-r--r--pkgs/misc/emulators/citra/default.nix6
-rw-r--r--pkgs/misc/emulators/desmume/default.nix6
-rw-r--r--pkgs/misc/emulators/fceux/default.nix6
-rw-r--r--pkgs/misc/emulators/hatari/default.nix6
-rw-r--r--pkgs/misc/emulators/libdsk/default.nix19
-rw-r--r--pkgs/misc/emulators/nestopia/default.nix5
-rw-r--r--pkgs/misc/emulators/retroarch/cores.nix50
-rw-r--r--pkgs/misc/emulators/retroarch/default.nix63
-rw-r--r--pkgs/misc/emulators/rpcs3/default.nix41
-rw-r--r--pkgs/misc/emulators/xcpc/default.nix22
11 files changed, 199 insertions, 54 deletions
diff --git a/pkgs/misc/emulators/caprice32/default.nix b/pkgs/misc/emulators/caprice32/default.nix
new file mode 100644
index 000000000000..5928d53d5422
--- /dev/null
+++ b/pkgs/misc/emulators/caprice32/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, fetchFromGitHub, libpng, pkgconfig, SDL, freetype, zlib, mesa }:
+
+stdenv.mkDerivation rec {
+
+  repo = "caprice32";
+  version = "unstable-2018-02-10";
+  rev = "53de69543300f81af85df32cbd21bb5c68cab61e";
+  name = "${repo}-${version}";
+
+  src = fetchFromGitHub {
+    inherit rev repo;
+    owner = "ColinPitrat";
+    sha256 = "12yv56blm49qmshpk4mgc802bs51wv2ra87hmcbf2wxma39c45fy";
+  };
+
+  postPatch = "substituteInPlace cap32.cfg --replace /usr/local $out";
+
+  meta = with stdenv.lib; {
+    description = "A complete emulation of CPC464, CPC664 and CPC6128";
+    homepage = https://github.com/ColinPitrat/caprice32 ;
+    license = licenses.gpl2;
+    maintainers = [ maintainers.genesis ];
+    platforms = platforms.linux;
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ libpng SDL freetype zlib ];
+  makeFlags = [ "GIT_HASH=${src.rev}" "DESTDIR=$(out)" "prefix=/"];
+}
diff --git a/pkgs/misc/emulators/citra/default.nix b/pkgs/misc/emulators/citra/default.nix
index 2eebe089de32..db1de37da962 100644
--- a/pkgs/misc/emulators/citra/default.nix
+++ b/pkgs/misc/emulators/citra/default.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchgit, cmake, SDL2, qtbase, boost, curl, gtest }:
 
 stdenv.mkDerivation rec { 
-  name = "citra-2018-01-24";
+  name = "citra-2018-02-23";
 
   # Submodules
   src = fetchgit {
     url = "https://github.com/citra-emu/citra";
-    rev = "33b0b5163fdb08bc8aa1d7eb83e0931a14ed3046";
-    sha256 = "07z32d8lj84yy3l5iqpk37mnmvzjmppqhyqr64kbx14dh5hb6cbj";
+    rev = "e51a642a13b9c2eda43d875fe318f627e11d480f";
+    sha256 = "0cw9cqbljc87rjyr2alfryp04mxpvd5mdlyrmnp9yis3xr8g9sa1";
   };
 
   nativeBuildInputs = [ cmake ];
diff --git a/pkgs/misc/emulators/desmume/default.nix b/pkgs/misc/emulators/desmume/default.nix
index 54ad4bee3cd4..d177012546e9 100644
--- a/pkgs/misc/emulators/desmume/default.nix
+++ b/pkgs/misc/emulators/desmume/default.nix
@@ -3,7 +3,7 @@
 , libXmu
 , lua
 , agg, alsaLib, soundtouch, openal
-, desktop_file_utils
+, desktop-file-utils
 , gtk2, gtkglext, libglade, pangox_compat
 , libGLU, libpcap, SDL, zziplib }:
 
@@ -26,9 +26,11 @@ stdenv.mkDerivation rec {
      })
   ];
 
+  CXXFLAGS = "-fpermissive";
+
   buildInputs =
   [ pkgconfig libtool intltool libXmu lua agg alsaLib soundtouch
-    openal desktop_file_utils gtk2 gtkglext libglade pangox_compat
+    openal desktop-file-utils gtk2 gtkglext libglade pangox_compat
     libGLU libpcap SDL zziplib ];
 
   configureFlags = [
diff --git a/pkgs/misc/emulators/fceux/default.nix b/pkgs/misc/emulators/fceux/default.nix
index ce8f8e030e30..70cf32d54cc2 100644
--- a/pkgs/misc/emulators/fceux/default.nix
+++ b/pkgs/misc/emulators/fceux/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl, scons, zlib, SDL, lua5_1, pkgconfig}:
 
 stdenv.mkDerivation {
-  name = "fceux-2.2.2";
+  name = "fceux-2.2.3";
 
   src = fetchurl {
-    url = mirror://sourceforge/fceultra/Source%20Code/2.2.2%20src/fceux-2.2.2.src.tar.gz;
-    sha256 = "1qg5bygla8ka30b7wqvq6dv84xc7pq0jspffh2jz75d1njyi2kc0";
+    url = mirror://sourceforge/fceultra/Source%20Code/2.2.3%20src/fceux-2.2.3.src.tar.gz;
+    sha256 = "0gl2i3qdmcm7v9m5kpfz98w05d8m33990jiwka043ya7lflxvrjb";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/misc/emulators/hatari/default.nix b/pkgs/misc/emulators/hatari/default.nix
index ed241de5b273..440eb681eb38 100644
--- a/pkgs/misc/emulators/hatari/default.nix
+++ b/pkgs/misc/emulators/hatari/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, zlib, SDL, cmake }:
 
 stdenv.mkDerivation rec {
-  name = "hatari-1.8.0";
+  name = "hatari-2.1.0";
 
   src = fetchurl {
-    url = "http://download.tuxfamily.org/hatari/1.8.0/${name}.tar.bz2";
-    sha256 = "1szznnndmbyc71751hir3dhybmbrx3rnxs6klgbv9qvqlmmlikvy";
+    url = "http://download.tuxfamily.org/hatari/2.1.0/${name}.tar.bz2";
+    sha256 = "0909l9fq20ninf8xgv5qf0a5y64cpk5ja1rsk2iaid1dx5h98agb";
   };
 
   # For pthread_cancel
diff --git a/pkgs/misc/emulators/libdsk/default.nix b/pkgs/misc/emulators/libdsk/default.nix
new file mode 100644
index 000000000000..c2103938accc
--- /dev/null
+++ b/pkgs/misc/emulators/libdsk/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  name = "libdsk-${version}";
+  version = "1.5.8";
+
+  src = fetchurl {
+    url = "http://www.seasip.info/Unix/LibDsk/${name}.tar.gz";
+    sha256 = "1fdypk6gjkb4i2ghnbn3va50y69pdym51jx3iz9jns4636z4sfqd";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A library for accessing discs and disc image files";
+    homepage = http://www.seasip.info/Unix/LibDsk/;
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.genesis ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/misc/emulators/nestopia/default.nix b/pkgs/misc/emulators/nestopia/default.nix
index 6bb91b2213a5..8a366ba737f3 100644
--- a/pkgs/misc/emulators/nestopia/default.nix
+++ b/pkgs/misc/emulators/nestopia/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig, SDL2, alsaLib, gtk3, libGLU
-, makeWrapper, libGLU_combined, libarchive, libao, unzip, xdg_utils, gsettings_desktop_schemas
+{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig, SDL2, alsaLib, gtk3
+, makeWrapper, libGLU_combined, libarchive, libao, unzip, xdg_utils, gsettings-desktop-schemas
 , epoxy, gdk_pixbuf, gnome3, wrapGAppsHook
 }:
 
@@ -25,7 +25,6 @@ stdenv.mkDerivation rec {
     epoxy
     gtk3
     gdk_pixbuf
-    libGLU
     libGLU_combined
     libarchive
     libao
diff --git a/pkgs/misc/emulators/retroarch/cores.nix b/pkgs/misc/emulators/retroarch/cores.nix
index ec7c55171714..d6b3b6a98706 100644
--- a/pkgs/misc/emulators/retroarch/cores.nix
+++ b/pkgs/misc/emulators/retroarch/cores.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchgit, cmake, pkgconfig, makeWrapper, python27, retroarch
+{ stdenv, fetchgit, fetchFromGitLab, cmake, pkgconfig, makeWrapper, python27, retroarch
 , alsaLib, fluidsynth, curl, hidapi, libGLU_combined, gettext, glib, gtk2, portaudio, SDL
 , ffmpeg, pcre, libevdev, libpng, libjpeg, libudev, libvorbis
 , miniupnpc, sfml, xorg, zlib }:
@@ -7,7 +7,7 @@ let
 
   d2u = stdenv.lib.replaceChars ["-"] ["_"];
 
-  mkLibRetroCore = ({ core, src, description, ... }@a:
+  mkLibRetroCore = ({ core, src, description, license, ... }@a:
   stdenv.lib.makeOverridable stdenv.mkDerivation rec {
 
     name = "libretro-${core}-${version}";
@@ -37,7 +37,7 @@ let
     meta = with stdenv.lib; {
       inherit description;
       homepage = https://www.libretro.com/;
-      license = licenses.gpl3Plus;
+      inherit license;
       maintainers = with maintainers; [ edwtjo hrdinka MP2E ];
       platforms = platforms.linux;
     };
@@ -50,7 +50,7 @@ let
     fetchSubmodules = true;
   };
 
-in
+in with stdenv.lib.licenses;
 
 {
 
@@ -62,6 +62,7 @@ in
       sha256 = "1n42f70vni2zavppayaq8xmsyx5cn40qi4zk4pgq1w3hh2q8mj72";
     };
     description = "Port of 4DO/libfreedo to libretro";
+    license = "Non-commercial";
   }).override {
     buildPhase = "make";
   };
@@ -74,6 +75,7 @@ in
       sha256 = "0p0k7kqfd6xg1qh6vgzgwp122miprb2bpzljgxd9kvigxihsl6f7";
     };
     description = "Port of Mednafen's PC Engine core to libretro";
+    license = gpl2;
   }).override {
     buildPhase = "make";
     name = "beetle-pce-fast";
@@ -87,6 +89,7 @@ in
       sha256 = "1k4b7g50ajzchjrm6d3v68hvri4k3hzvacn2l99i5yq3hxp7vs7x";
     };
     description = "Port of Mednafen's PSX Engine core to libretro";
+    license = gpl2;
   }).override {
     buildPhase = "make";
     name = "beetle-psx";
@@ -100,6 +103,7 @@ in
       sha256 = "1d1brysynwr6inlwfgv7gwkl3i9mf4lsaxd9wm2szw86g4diyn4c";
     };
     description = "Port of Mednafen's Saturn core to libretro";
+    license = gpl2;
   }).override {
     buildPhase = "make";
     name = "beetle-saturn";
@@ -114,6 +118,7 @@ in
       sha256 = "0vkn1f38vwazpp3kbvvv8c467ghak6yfx00s48wkxwvhmak74a3s";
     };
     description = "Fork of bsnes with HLE DSP emulation restored";
+    license = gpl3;
   }).override {
     buildPhase = "make && cd out";
   };
@@ -126,6 +131,7 @@ in
       sha256 = "064gzfbr7yizmvi91ry5y6bzikj633kdqhvzycb9f1g6kspf8yyl";
     };
     description = "libretro wrapper for desmume NDS emulator";
+    license = gpl2;
   }).override {
     configurePhase = "cd desmume";
   };
@@ -138,6 +144,7 @@ in
       sha256 = "1cshlfmhph8dl3vgvn37imvp2b7xs2cx1r1ifp5js5psvhycrbz3";
     };
     description = "Port of Dolphin to libretro";
+    license = gpl2Plus;
 
     extraBuildInputs = [
       cmake curl libGLU_combined pcre pkgconfig sfml miniupnpc
@@ -166,6 +173,7 @@ in
       sha256 = "159dww8mxi95xz4ypw38vsn1g4k6z8sv415qqf0qriydwhw6mh2m";
     };
     description = "Port of Final Burn Alpha to libretro";
+    license = "Non-commercial";
   }).override {
     buildPhase = ''
       cd svn-current/trunk \
@@ -182,6 +190,7 @@ in
       sha256 = "0jnwh1338q710x47bzrx319g5xbq9ipv35kyjlbkrzhqjq1blz0b";
     };
     description = "FCEUmm libretro port";
+    license = gpl2;
   };
 
   gambatte = mkLibRetroCore rec {
@@ -192,6 +201,7 @@ in
       sha256 = "0h7hyj630nk1s32wx02y4q9x2lp6wbnh6nkc9ihf4pygcsignmwr";
     };
     description = "Gambatte libretro port";
+    license = gpl2;
   };
 
   genesis-plus-gx = mkLibRetroCore rec {
@@ -202,6 +212,22 @@ in
       sha256 = "0s11ddpnb44q4xjkl7dylldhi9y5zqywqavpk0bbwyj84r1cbz3c";
     };
     description = "Enhanced Genesis Plus libretro port";
+    license = "Non-commercial";
+  };
+
+  higan-sfc = (mkLibRetroCore rec {
+    core = "higan-sfc";
+    src = fetchFromGitLab {
+      owner = "higan";
+      repo = "higan";
+      rev = "d3f592013a27cb78f17d84f90a6be6cf6f6af1d1";
+      sha256 = "19d4cbwg8d085xq5lmql4v5l4ckgwqzc59ha5yfgv3w4qfp4dmij";
+    };
+    description = "Accurate SNES / Super Famicom emulator";
+    license = gpl3;
+  }).override {
+    makefile = "GNUmakefile";
+    buildPhase = "cd higan && make compiler=g++ target=libretro binary=library && cd out";
   };
 
   mame = (mkLibRetroCore {
@@ -212,6 +238,7 @@ in
       sha256 = "0blfvq28hgv9kkpijd8c9d9sa5g2qr448clwi7wrj8kqfdnrr8m1";
     };
     description = "Port of MAME to libretro";
+    license = gpl2Plus;
 
     extraBuildInputs = [ alsaLib libGLU_combined portaudio python27 xorg.libX11 ];
   }).override {
@@ -230,6 +257,7 @@ in
       sha256 = "1b30sa861r4bhbqkx6vkklh4iy625bpzki2ks4ivvjns1ijczvc7";
     };
     description = "Port of mGBA to libretro";
+    license = mpl20;
   };
 
   mupen64plus = (mkLibRetroCore rec {
@@ -240,6 +268,7 @@ in
       sha256 = "0q5kvjz7rpk7mp75cdywqjgmy10c0h7ky26hh1x90d39y94idcd8";
     };
     description = "Libretro port of Mupen64 Plus, GL only";
+    license = gpl2;
 
     extraBuildInputs = [ libGLU_combined libpng ];
   }).override {
@@ -254,6 +283,7 @@ in
       sha256 = "17ac7dhasch6f4lpill8c5scsvaix0jvbf1cp797qbll4hk84f2q";
     };
     description = "nestopia undead libretro port";
+    license = gpl2;
   }).override {
     buildPhase = "cd libretro && make";
   };
@@ -266,6 +296,7 @@ in
       sha256 = "19396v50azrb52ifjk298zgcbxn8dvfvp6zwrnzsk6mp8ff7qcqw";
     };
     description = "Parallel Mupen64plus rewrite for libretro.";
+    license = gpl2;
 
     extraBuildInputs = [ libGLU_combined libpng ];
   }).override {
@@ -280,6 +311,7 @@ in
       sha256 = "0fl9r6jj2x9231md5zc4scra79j5hfn1n2z67scff1375xg1k64h";
     };
     description = "Fast MegaDrive/MegaCD/32X emulator";
+    license = "MAME";
 
     extraBuildInputs = [ libpng SDL ];
   }).override {
@@ -295,6 +327,7 @@ in
       sha256 = "06k1gzmypz61dslynrw4b5i161rhj43y6wnr2nhbzvwcv5bw8w8r";
     };
     description = "ppsspp libretro port";
+    license = gpl2;
     extraBuildInputs = [ libGLU_combined ffmpeg ];
   }).override {
     buildPhase = "cd libretro && make";
@@ -308,6 +341,7 @@ in
       sha256 = "02vkl3y5dmyzifsviphspqv03a2rdyf36zpjpgfg7x0s226f56ja";
     };
     description = "Prboom libretro port";
+    license = gpl2;
   }).override {
     buildPhase = "make";
   };
@@ -320,6 +354,7 @@ in
       sha256 = "18lizdb9zjlfhh8ibvmcscldlf3mw4aj8nds3pah68cd2lw170w1";
     };
     description = "QuickNES libretro port";
+    license = lgpl21Plus;
   }).override {
     buildPhase = "make";
   };
@@ -332,6 +367,7 @@ in
       sha256 = "0d8wzpv7pcyh437gmvi439vim26wyrjmi5hj97wvyvggywjwrx8m";
     };
     description = "Reicast libretro port";
+    license = gpl2;
     extraBuildInputs = [ libGLU_combined ];
   }).override {
     buildPhase = "make";
@@ -345,6 +381,7 @@ in
       sha256 = "097i2dq3hw14hicsplrs36j1qa3r45vhzny5v4aw6qw4aj34hksy";
     };
     description = "Libretro port of ScummVM";
+    license = gpl2;
     extraBuildInputs = [ fluidsynth libjpeg libvorbis libGLU_combined SDL ];
   }).override {
     buildPhase = "cd backends/platform/libretro/build && make";
@@ -358,6 +395,7 @@ in
       sha256 = "02f04ss45km32lp68diyfkix1gryx89qy8cc80189ipwnx80pgip";
     };
     description = "Port of SNES9x git to libretro";
+    license = "Non-commercial";
   }).override {
     buildPhase = "cd libretro && make";
   };
@@ -370,6 +408,7 @@ in
       sha256 = "1vhgsrg9l562nincfvpj2h2dqkkblg1qmh0v47jqlqgmgl2b1zij";
     };
     description = "Optimized port/rewrite of SNES9x 1.52+ to Libretro";
+    license = "Non-commercial";
   }).override {
     buildPhase = ''
       make -f Makefile.libretro
@@ -385,6 +424,7 @@ in
       sha256 = "18r1yyfzvjq2hq04d94y37kzsq6aywh1aim69a3imk8kh46gwrh0";
     };
     description = "Port of Stella to libretro";
+    license = gpl2;
   }).override {
     buildPhase = "make";
   };
@@ -397,6 +437,7 @@ in
       sha256 = "03s4rh7dbbhbfc4pfdvr9jcbxrp4ijg8yp49s1xhr7sxsblj2vpv";
     };
     description = "VBA-M libretro port with modifications for speed";
+    license = gpl2;
   };
 
   vba-m = (mkLibRetroCore rec {
@@ -407,6 +448,7 @@ in
       sha256 = "043djmqvh2grc25hwjw4b5kfx57b89ryp6fcl8v632sm35l3dd6z";
     };
     description = "vanilla VBA-M libretro port";
+    license = gpl2;
   }).override {
     buildPhase = "cd src/libretro && make";
   };
diff --git a/pkgs/misc/emulators/retroarch/default.nix b/pkgs/misc/emulators/retroarch/default.nix
index f30d50ef4d0c..e898a5804b06 100644
--- a/pkgs/misc/emulators/retroarch/default.nix
+++ b/pkgs/misc/emulators/retroarch/default.nix
@@ -1,61 +1,52 @@
-{ stdenv, fetchFromGitHub, makeDesktopItem, coreutils, which, pkgconfig
+{ stdenv, fetchFromGitHub, which, pkgconfig, makeWrapper
 , ffmpeg, libGLU_combined, freetype, libxml2, python34
+, libobjc, AppKit, Foundation
+, alsaLib ? null
+, libpulseaudio ? null
+, libv4l ? null
+, libX11 ? null
+, libXdmcp ? null
+, libXext ? null
+, libXxf86vm ? null
+, SDL2 ? null
+, udev ? null
 , enableNvidiaCgToolkit ? false, nvidia_cg_toolkit ? null
-, alsaLib ? null, libv4l ? null
-, udev ? null, libX11 ? null, libXext ? null, libXxf86vm ? null
-, libXdmcp ? null, SDL ? null, libpulseaudio ? null
+, withVulkan ? stdenv.isLinux, vulkan-loader ? null
 }:
 
 with stdenv.lib;
 
-let
-  desktopItem = makeDesktopItem {
-    name = "retroarch";
-    exec = "retroarch";
-    icon = "retroarch";
-    comment = "Multi-Engine Platform";
-    desktopName = "RetroArch";
-    genericName = "Libretro Frontend";
-    categories = "Game;Emulator;";
-    #keywords = "multi;engine;emulator;xmb;";
-  };
-in
-
 stdenv.mkDerivation rec {
   name = "retroarch-bare-${version}";
-  version = "1.6.0";
+  version = "1.7.1";
 
   src = fetchFromGitHub {
     owner = "libretro";
     repo = "RetroArch";
-    sha256 = "1ym2kws58fbavkc3giz5xqaqiqqdbf7wrz7y7iw53p1bnkc3l8yi";
+    sha256 = "0qv8ci76f5kwv5b49ijgpc6jdfp6sm21fw5hq06mq6ygyiy9vdzf";
     rev = "v${version}";
   };
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ ffmpeg libGLU_combined freetype libxml2 coreutils python34 which SDL ]
-                ++ optional enableNvidiaCgToolkit nvidia_cg_toolkit
-                ++ optionals stdenv.isLinux [ udev alsaLib libX11 libXext libXxf86vm libXdmcp libv4l libpulseaudio ];
-
-  configureScript = "sh configure";
+  nativeBuildInputs = [ pkgconfig ]
+                      ++ optional withVulkan [ makeWrapper ];
 
-  patchPhase = ''
-    export GLOBAL_CONFIG_DIR=$out/etc
-    sed -e 's#/bin/true#${coreutils}/bin/true#' -i qb/qb.libs.sh
-  '';
+  buildInputs = [ ffmpeg freetype libxml2 libGLU_combined python34 SDL2 which ]
+                ++ optional enableNvidiaCgToolkit nvidia_cg_toolkit
+                ++ optional withVulkan [ vulkan-loader ]
+                ++ optionals stdenv.isDarwin [ libobjc AppKit Foundation ]
+                ++ optionals stdenv.isLinux [ alsaLib libpulseaudio libv4l libX11
+                                              libXdmcp libXext libXxf86vm udev ];
 
-  postInstall = ''
-    mkdir -p $out/share/icons/hicolor/scalable/apps
-    cp -p -T ./media/retroarch.svg $out/share/icons/hicolor/scalable/apps/retroarch.svg
+  enableParallelBuilding = true;
 
-    mkdir -p "$out/share/applications"
-    cp ${desktopItem}/share/applications/* $out/share/applications
+  postInstall = optional withVulkan ''
+    wrapProgram $out/bin/retroarch --prefix LD_LIBRARY_PATH ':' ${vulkan-loader}/lib
   '';
 
-  enableParallelBuilding = true;
+  preFixup = "rm $out/bin/retroarch-cg2glsl";
 
   meta = {
-    homepage = http://libretro.org/;
+    homepage = https://libretro.com;
     description = "Multi-platform emulator frontend for libretro cores";
     license = licenses.gpl3;
     platforms = platforms.all;
diff --git a/pkgs/misc/emulators/rpcs3/default.nix b/pkgs/misc/emulators/rpcs3/default.nix
new file mode 100644
index 000000000000..140149bde495
--- /dev/null
+++ b/pkgs/misc/emulators/rpcs3/default.nix
@@ -0,0 +1,41 @@
+{ stdenv, lib, fetchgit, cmake, pkgconfig
+, qtbase, openal, glew, llvm_4, vulkan-loader, libpng, ffmpeg, libevdev
+, pulseaudioSupport ? true, libpulseaudio
+, waylandSupport ? true, wayland
+, alsaSupport ? true, alsaLib
+}:
+
+stdenv.mkDerivation rec {
+  name = "rpcs3-${version}";
+  version = "2018-02-23";
+
+  src = fetchgit {
+    url = "https://github.com/RPCS3/rpcs3";
+    rev = "41bd07274f15b8f1be2475d73c3c75ada913dabb";
+    sha256 = "1v28m64ahakzj4jzjkmdd7y8q75pn9wjs03vprbnl0z6wqavqn0x";
+  };
+
+  cmakeFlags = [
+    "-DUSE_SYSTEM_LIBPNG=ON"
+    "-DUSE_SYSTEM_FFMPEG=ON"
+    "-DUSE_NATIVE_INSTRUCTIONS=OFF"
+  ];
+
+  nativeBuildInputs = [ cmake pkgconfig ];
+
+  buildInputs = [
+    qtbase openal glew llvm_4 vulkan-loader libpng ffmpeg libevdev
+  ] ++ lib.optional pulseaudioSupport libpulseaudio
+    ++ lib.optional alsaSupport alsaLib
+    ++ lib.optional waylandSupport wayland;
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "PS3 emulator/debugger";
+    homepage = "https://rpcs3.net/";
+    maintainers = with maintainers; [ abbradar ];
+    license = licenses.gpl2;
+    platforms = [ "x86_64-linux" ];
+  };
+}
diff --git a/pkgs/misc/emulators/xcpc/default.nix b/pkgs/misc/emulators/xcpc/default.nix
new file mode 100644
index 000000000000..5eb6e3b160ef
--- /dev/null
+++ b/pkgs/misc/emulators/xcpc/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, libdsk, pkgconfig, glib, libXaw, libX11, libXext, lesstif }:
+
+stdenv.mkDerivation rec {
+  version = "20070122";
+  name = "xcpc-${version}";
+
+  src = fetchurl {
+    url = "mirror://sourceforge/xcpc/${name}.tar.gz";
+    sha256 = "0hxsbhmyzyyrlidgg0q8izw55q0z40xrynw5a1c3frdnihj9jf7n";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ glib libdsk libXaw libX11 libXext lesstif ];
+
+  meta = with stdenv.lib; {
+    description = "A portable Amstrad CPC 464/664/6128 emulator written in C";
+    homepage = https://www.xcpc-emulator.net;
+    license = licenses.gpl2Plus;
+    maintainers = [ maintainers.genesis ];
+    platforms = platforms.linux;
+  };
+}