diff options
author | AndersonTorres <torres.anderson.85@protonmail.com> | 2022-02-15 23:28:16 -0300 |
---|---|---|
committer | AndersonTorres <torres.anderson.85@protonmail.com> | 2022-02-16 01:38:20 -0300 |
commit | 8d65e832f0a18f60e2040940c80d96373ac8b88c (patch) | |
tree | 3d6ade66b2a81403e3852b80b9e7c660699b6ed6 /pkgs/applications/emulators/dolphin-emu | |
parent | 19574af0af3ffaf7c9e359744ed32556f34536bd (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.nix | 122 | ||||
-rw-r--r-- | pkgs/applications/emulators/dolphin-emu/master.nix | 89 | ||||
-rw-r--r-- | pkgs/applications/emulators/dolphin-emu/primehack.nix | 151 |
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" ]; + }; +} |