summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/emulators/dolphin-emu
diff options
context:
space:
mode:
authorAndersonTorres <torres.anderson.85@protonmail.com>2022-02-15 23:28:16 -0300
committerAndersonTorres <torres.anderson.85@protonmail.com>2022-02-16 01:38:20 -0300
commit8d65e832f0a18f60e2040940c80d96373ac8b88c (patch)
tree3d6ade66b2a81403e3852b80b9e7c660699b6ed6 /pkgs/applications/emulators/dolphin-emu
parent19574af0af3ffaf7c9e359744ed32556f34536bd (diff)
Move misc/emulators to applications/emulators - part 1
Emulators form a class by themselves. So, they should be moved to applications/.
Diffstat (limited to 'pkgs/applications/emulators/dolphin-emu')
-rw-r--r--pkgs/applications/emulators/dolphin-emu/default.nix122
-rw-r--r--pkgs/applications/emulators/dolphin-emu/master.nix89
-rw-r--r--pkgs/applications/emulators/dolphin-emu/primehack.nix151
3 files changed, 362 insertions, 0 deletions
diff --git a/pkgs/applications/emulators/dolphin-emu/default.nix b/pkgs/applications/emulators/dolphin-emu/default.nix
new file mode 100644
index 000000000000..c2d73d3e7fff
--- /dev/null
+++ b/pkgs/applications/emulators/dolphin-emu/default.nix
@@ -0,0 +1,122 @@
+{ stdenv
+, lib
+, fetchpatch
+, pkg-config
+, cmake
+, bluez
+, ffmpeg
+, libao
+, gtk2
+, glib
+, libGLU
+, libGL
+, gettext
+, libpthreadstubs
+, libXrandr
+, libXext
+, readline
+, openal
+, libXdmcp
+, portaudio
+, fetchFromGitHub
+, libusb1
+, libevdev
+, wxGTK30
+, soundtouch
+, miniupnpc
+, mbedtls
+, curl
+, lzo
+, sfml
+, libpulseaudio ? null
+}:
+
+stdenv.mkDerivation rec {
+ pname = "dolphin-emu";
+ version = "5.0";
+
+ src = fetchFromGitHub {
+ owner = "dolphin-emu";
+ repo = "dolphin";
+ rev = version;
+ sha256 = "07mlfnh0hwvk6xarcg315x7z2j0qbg9g7cm040df9c8psiahc3g6";
+ };
+
+ patches = [
+ # Fix build with soundtouch 2.1.2
+ (fetchpatch {
+ url = "https://src.fedoraproject.org/rpms/dolphin-emu/raw/a1b91fdf94981e12c8889a02cba0ec2267d0f303/f/dolphin-emu-5.0-soundtouch-exception-fix.patch";
+ name = "dolphin-emu-5.0-soundtouch-exception-fix.patch";
+ sha256 = "0yd3l46nja5qiknnl30ryad98f3v8911jwnr67hn61dzx2kwbbaw";
+ })
+ # Fix build with gcc 8
+ (fetchpatch {
+ url = "https://salsa.debian.org/games-team/dolphin-emu/raw/9b7b4aeac1b60dcf28bdcafbed6bc498b2aeb0ad/debian/patches/03_gcc8.patch";
+ name = "03_gcc8.patch";
+ sha256 = "1da95gb8c95kd5cjhdvg19cv2z863lj3va5gx3bqc7g8r36glqxr";
+ })
+ ];
+
+ postPatch = ''
+ substituteInPlace Source/Core/VideoBackends/OGL/RasterFont.cpp \
+ --replace " CHAR_WIDTH " " CHARWIDTH "
+ '';
+
+ cmakeFlags = [
+ "-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"
+ "-DENABLE_LTO=True"
+ ];
+
+ nativeBuildInputs = [
+ pkg-config
+ cmake
+ ];
+
+ buildInputs = [
+ bluez
+ ffmpeg
+ libao
+ libGLU
+ libGL
+ gtk2
+ glib
+ gettext
+ libpthreadstubs
+ libXrandr
+ libXext
+ readline
+ openal
+ libevdev
+ libXdmcp
+ portaudio
+ libpulseaudio
+ libevdev
+ libXdmcp
+ portaudio
+ libusb1
+ libpulseaudio
+ wxGTK30
+ soundtouch
+ miniupnpc
+ mbedtls
+ curl
+ lzo
+ sfml
+ ];
+
+ postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
+ install -D $src/Data/51-usb-device.rules $out/etc/udev/rules.d/51-usb-device.rules
+ '';
+
+ meta = with lib; {
+ homepage = "https://dolphin-emu.org/";
+ description = "Gamecube/Wii/Triforce emulator for x86_64 and ARMv8";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ MP2E ashkitten ];
+ # x86_32 is an unsupported platform.
+ # Enable generic build if you really want a JIT-less binary.
+ platforms = [ "x86_64-linux" ];
+ };
+}
diff --git a/pkgs/applications/emulators/dolphin-emu/master.nix b/pkgs/applications/emulators/dolphin-emu/master.nix
new file mode 100644
index 000000000000..56e107300b54
--- /dev/null
+++ b/pkgs/applications/emulators/dolphin-emu/master.nix
@@ -0,0 +1,89 @@
+{ lib, stdenv, fetchFromGitHub, pkg-config, cmake
+, wrapQtAppsHook, qtbase, bluez, ffmpeg, libao, libGLU, libGL, pcre, gettext
+, libXrandr, libusb1, lzo, libpthreadstubs, libXext, libXxf86vm, libXinerama
+, libSM, libXdmcp, readline, openal, udev, libevdev, portaudio, curl, alsa-lib
+, miniupnpc, enet, mbedtls, soundtouch, sfml, writeScript
+, vulkan-loader ? null, libpulseaudio ? null
+
+# - Inputs used for Darwin
+, CoreBluetooth, ForceFeedback, IOKit, OpenGL, libpng, hidapi }:
+
+stdenv.mkDerivation rec {
+ pname = "dolphin-emu";
+ version = "5.0-15993";
+
+ src = fetchFromGitHub {
+ owner = "dolphin-emu";
+ repo = "dolphin";
+ rev = "5e595616379a694789fe749e40a27ef069f0090e";
+ sha256 = "1kid8qjn8r7dxh2yc1y6yal6qkfxij0ymi3zryxsnym3rjh1jds9";
+ fetchSubmodules = true;
+ };
+
+ nativeBuildInputs = [ cmake pkg-config ]
+ ++ lib.optional stdenv.isLinux wrapQtAppsHook;
+
+ buildInputs = [
+ curl ffmpeg libao libGLU libGL pcre gettext libpthreadstubs libpulseaudio
+ libXrandr libXext libXxf86vm libXinerama libSM readline openal libXdmcp lzo
+ portaudio libusb1 libpng hidapi miniupnpc enet mbedtls soundtouch sfml
+ qtbase
+ ] ++ lib.optionals stdenv.isLinux [
+ bluez udev libevdev alsa-lib vulkan-loader
+ ] ++ lib.optionals stdenv.isDarwin [
+ CoreBluetooth OpenGL ForceFeedback IOKit
+ ];
+
+ cmakeFlags = [
+ "-DUSE_SHARED_ENET=ON"
+ "-DENABLE_LTO=ON"
+ "-DDOLPHIN_WC_REVISION=${src.rev}"
+ "-DDOLPHIN_WC_DESCRIBE=${version}"
+ "-DDOLPHIN_WC_BRANCH=master"
+ ] ++ lib.optionals stdenv.isDarwin [
+ "-DOSX_USE_DEFAULT_SEARCH_PATH=True"
+ ];
+
+ qtWrapperArgs = lib.optionals stdenv.isLinux [
+ "--prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib"
+ # https://bugs.dolphin-emu.org/issues/11807
+ # The .desktop file should already set this, but Dolphin may be launched in other ways
+ "--set QT_QPA_PLATFORM xcb"
+ ];
+
+ # - Allow Dolphin to use nix-provided libraries instead of building them
+ postPatch = ''
+ sed -i -e 's,DISTRIBUTOR "None",DISTRIBUTOR "NixOS",g' CMakeLists.txt
+ '' + lib.optionalString stdenv.isDarwin ''
+ sed -i -e 's,if(NOT APPLE),if(true),g' CMakeLists.txt
+ sed -i -e 's,if(LIBUSB_FOUND AND NOT APPLE),if(LIBUSB_FOUND),g' \
+ CMakeLists.txt
+ '';
+
+ postInstall = lib.optionalString stdenv.hostPlatform.isLinux ''
+ install -D $src/Data/51-usb-device.rules $out/etc/udev/rules.d/51-usb-device.rules
+ '';
+
+
+ passthru.updateScript = writeScript "dolphin-update-script" ''
+ #!/usr/bin/env nix-shell
+ #!nix-shell -i bash -p curl jq common-updater-scripts
+ set -eou pipefail
+ json="$(curl -s https://dolphin-emu.org/update/latest/beta)"
+ version="$(jq -r '.shortrev' <<< "$json")"
+ rev="$(jq -r '.hash' <<< "$json")"
+ update-source-version dolphin-emu-beta "$version" --rev="$rev"
+ '';
+
+ meta = with lib; {
+ homepage = "https://dolphin-emu.org";
+ description = "Gamecube/Wii/Triforce emulator for x86_64 and ARMv8";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ MP2E ashkitten xfix ];
+ branch = "master";
+ # x86_32 is an unsupported platform.
+ # Enable generic build if you really want a JIT-less binary.
+ broken = stdenv.isDarwin;
+ platforms = [ "x86_64-linux" "x86_64-darwin" ];
+ };
+}
diff --git a/pkgs/applications/emulators/dolphin-emu/primehack.nix b/pkgs/applications/emulators/dolphin-emu/primehack.nix
new file mode 100644
index 000000000000..90510d645226
--- /dev/null
+++ b/pkgs/applications/emulators/dolphin-emu/primehack.nix
@@ -0,0 +1,151 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pkg-config
+, cmake
+, wrapQtAppsHook
+, qtbase
+, bluez
+, ffmpeg
+, libao
+, libGLU
+, libGL
+, pcre
+, gettext
+, libXrandr
+, libusb1
+, lzo
+, libpthreadstubs
+, libXext
+, libXxf86vm
+, libXinerama
+, libSM
+, libXdmcp
+, readline
+, openal
+, udev
+, libevdev
+, portaudio
+, curl
+, alsa-lib
+, miniupnpc
+, enet
+, mbedtls
+, soundtouch
+, sfml
+, fmt
+, vulkan-loader
+, libpulseaudio
+
+# - Inputs used for Darwin
+, CoreBluetooth
+, ForceFeedback
+, IOKit
+, OpenGL
+, libpng
+, hidapi
+}:
+
+stdenv.mkDerivation rec {
+ pname = "dolphin-emu-primehack";
+ version = "1.0.5";
+
+ src = fetchFromGitHub {
+ owner = "shiiion";
+ repo = "dolphin";
+ rev = version;
+ sha256 = "011qghswgh9l7k993lfn1hrwhgyrv9m33smgspsjq50jww6r27fl";
+ fetchSubmodules = true;
+ };
+
+ nativeBuildInputs = [
+ pkg-config
+ cmake
+ ] ++ lib.optional stdenv.isLinux wrapQtAppsHook;
+
+ buildInputs = [
+ curl
+ ffmpeg
+ libao
+ libGLU
+ libGL
+ pcre
+ gettext
+ libpthreadstubs
+ libpulseaudio
+ libXrandr
+ libXext
+ libXxf86vm
+ libXinerama
+ libSM
+ readline
+ openal
+ libXdmcp
+ lzo
+ portaudio
+ libusb1
+ libpng
+ hidapi
+ miniupnpc
+ enet
+ mbedtls
+ soundtouch
+ sfml
+ fmt
+ qtbase
+ ] ++ lib.optionals stdenv.isLinux [
+ bluez
+ udev
+ libevdev
+ alsa-lib
+ vulkan-loader
+ ] ++ lib.optionals stdenv.isDarwin [
+ CoreBluetooth
+ OpenGL
+ ForceFeedback
+ IOKit
+ ];
+
+ cmakeFlags = [
+ "-DUSE_SHARED_ENET=ON"
+ "-DENABLE_LTO=ON"
+ ] ++ lib.optionals stdenv.isDarwin [
+ "-DOSX_USE_DEFAULT_SEARCH_PATH=True"
+ ];
+
+ qtWrapperArgs = lib.optionals stdenv.isLinux [
+ "--prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib"
+ # https://bugs.dolphin-emu.org/issues/11807
+ # The .desktop file should already set this, but Dolphin may be launched in other ways
+ "--set QT_QPA_PLATFORM xcb"
+ ];
+
+ # - Allow Dolphin to use nix-provided libraries instead of building them
+ postPatch = ''
+ substituteInPlace CMakeLists.txt --replace 'DISTRIBUTOR "None"' 'DISTRIBUTOR "NixOS"'
+ '' + lib.optionalString stdenv.isDarwin ''
+ substituteInPlace CMakeLists.txt --replace 'if(NOT APPLE)' 'if(true)'
+ substituteInPlace CMakeLists.txt --replace 'if(LIBUSB_FOUND AND NOT APPLE)' 'if(LIBUSB_FOUND)'
+ '';
+
+ postInstall = ''
+ mv $out/bin/dolphin-emu $out/bin/dolphin-emu-primehack
+ mv $out/bin/dolphin-emu-nogui $out/bin/dolphin-emu-primehack-nogui
+ mv $out/share/applications/dolphin-emu.desktop $out/share/applications/dolphin-emu-primehack.desktop
+ mv $out/share/icons/hicolor/256x256/apps/dolphin-emu.png $out/share/icons/hicolor/256x256/apps/dolphin-emu-primehack.png
+ substituteInPlace $out/share/applications/dolphin-emu-primehack.desktop --replace 'dolphin-emu' 'dolphin-emu-primehack'
+ '' + lib.optionalString stdenv.hostPlatform.isLinux ''
+ install -D $src/Data/51-usb-device.rules $out/etc/udev/rules.d/51-usb-device.rules
+ '';
+
+ meta = with lib; {
+ homepage = "https://github.com/shiiion/dolphin";
+ description = "Gamecube/Wii/Triforce emulator for x86_64 and ARMv8";
+ license = licenses.gpl2Plus;
+ maintainers = with maintainers; [ MP2E ashkitten Madouura ];
+ # x86_32 is an unsupported platform.
+ # Enable generic build if you really want a JIT-less binary.
+ broken = stdenv.isDarwin;
+ platforms = [ "x86_64-linux" "x86_64-darwin" ];
+ };
+}