about summary refs log tree commit diff
path: root/nixpkgs/pkgs/misc/emulators/pcsx2/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/misc/emulators/pcsx2/default.nix')
-rw-r--r--nixpkgs/pkgs/misc/emulators/pcsx2/default.nix74
1 files changed, 74 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/misc/emulators/pcsx2/default.nix b/nixpkgs/pkgs/misc/emulators/pcsx2/default.nix
new file mode 100644
index 000000000000..95e94eeaff51
--- /dev/null
+++ b/nixpkgs/pkgs/misc/emulators/pcsx2/default.nix
@@ -0,0 +1,74 @@
+{ alsaLib, cmake, fetchFromGitHub, glib, gtk2, gettext, libaio, libpng
+, makeWrapper, perl, pkgconfig, portaudio, SDL2, soundtouch, stdenv
+, wxGTK30, zlib }:
+
+stdenv.mkDerivation rec {
+  name = "pcsx2-${version}";
+  version = "1.4.0";
+
+  src = fetchFromGitHub {
+    owner = "PCSX2";
+    repo = "pcsx2";
+    rev = "v${version}";
+    sha256 = "0s7mxq2cgzwjfsq0vhpz6ljk7wr725nxg48128iyirf85585l691";
+  };
+
+  postPatch = "sed '1i#include \"x86intrin.h\"' -i common/src/x86emitter/cpudetect.cpp";
+
+  configurePhase = ''
+    mkdir -p build
+    cd build
+
+    cmake \
+      -DBIN_DIR="$out/bin" \
+      -DCMAKE_BUILD_PO=TRUE \
+      -DCMAKE_BUILD_TYPE=Release \
+      -DCMAKE_INSTALL_PREFIX="$out" \
+      -DDISABLE_ADVANCE_SIMD=TRUE \
+      -DDISABLE_PCSX2_WRAPPER=TRUE \
+      -DDOC_DIR="$out/share/doc/pcsx2" \
+      -DGAMEINDEX_DIR="$out/share/pcsx2" \
+      -DGLSL_SHADER_DIR="$out/share/pcsx2" \
+      -DGTK2_GLIBCONFIG_INCLUDE_DIR='${glib.out}/lib/glib-2.0/include' \
+      -DGTK2_GDKCONFIG_INCLUDE_DIR='${gtk2.out}/lib/gtk-2.0/include' \
+      -DGTK2_INCLUDE_DIRS='${gtk2.dev}/include/gtk-2.0' \
+      -DPACKAGE_MODE=TRUE \
+      -DPLUGIN_DIR="$out/lib/pcsx2" \
+      -DREBUILD_SHADER=TRUE \
+      ..
+  '';
+
+  postFixup = ''
+    wrapProgram $out/bin/PCSX2 \
+      --set __GL_THREADED_OPTIMIZATIONS 1
+  '';
+
+  nativeBuildInputs = [ cmake perl pkgconfig ];
+
+  buildInputs = [
+    alsaLib glib gettext gtk2 libaio libpng makeWrapper portaudio SDL2
+    soundtouch wxGTK30 zlib
+  ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    description = "Playstation 2 emulator";
+    longDescription= ''
+      PCSX2 is an open-source PlayStation 2 (AKA PS2) emulator. Its purpose
+      is to emulate the PS2 hardware, using a combination of MIPS CPU
+      Interpreters, Recompilers and a Virtual Machine which manages hardware
+      states and PS2 system memory. This allows you to play PS2 games on your
+      PC, with many additional features and benefits.
+    '';
+    homepage = https://pcsx2.net;
+    maintainers = with maintainers; [ hrdinka ];
+
+    # PCSX2's source code is released under LGPLv3+. It However ships
+    # additional data files and code that are licensed differently.
+    # This might be solved in future, for now we should stick with
+    # license.free
+    license = licenses.free;
+    platforms = platforms.i686;
+  };
+}