Subject: [PATCH] gnu: add citra (stable version)

From: [email-masked]
Date: Thu, 13 Oct 2022 14:59:47 +0000

From: florhizome <[email-masked]>

This adds the citra emulator for nintendo 3ds games - the nightly repo marks the stable version. NixOs does some things for compatibility checks that we don't but it works fine so far. :)

---
 gnu/packages/emulators.scm | 60 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 60 insertions(+)

diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 38795b703c..3121a71484 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -61,6 +61,7 @@ (define-module (gnu packages emulators)
   #:use-module (gnu packages cross-base)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages digest)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages elf)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fltk)
@@ -74,6 +75,7 @@ (define-module (gnu packages emulators)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libedit)
@@ -105,6 +107,7 @@ (define-module (gnu packages emulators)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages web)
   #:use-module (guix build-system cmake)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system meson)
@@ -245,9 +248,66 @@ (define-public desmume
      "DeSmuME is an emulator for the Nintendo DS handheld gaming console.")
     (license license:gpl2)))
 
+(define-public citra
+  (package
+    (name "citra")
+    (version "1785")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/citra-emu/citra-nightly")
+             (commit
+              (string-append "nightly-" version))
+             (recursive? #t)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "1grkrrxs1497i51spgnwmgfkqgkm7gplylhcrk67agaklx65d5s9"))))
+    (build-system qt-build-system)
+    (arguments
+     (list
+      #:configure-flags
+       #~(list "-DUSE_SYSTEM_BOOST=ON"
+               "-DCITRA_USE_BUNDLED_FFMPEG=OFF"
+               "-DCITRA_USE_BUNDLED_QT=OFF"
+               "-DCITRA_USE_BUNDLED_SDL2=OFF"
+               "-DCMAKE_BUILD_TYPE=Release"
+               "-DCITRA_ENABLE_COMPATIBILITY_REPORTING=OFF"
+               "-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=OFF"
+               "-DENABLE_QT_TRANSLATION=ON"
+               "-DENABLE_WEB_SERVICE=ON"
+               "-DENABLE_FFMPEG_AUDIO_DECODER=ON"
+               "-DUSE_DISCORD_PRESENCE=ON")
+       #:tests? #f
+       #:phases
+       #~(modify-phases %standard-phases
+           (add-before 'configure 'delete-check
+             (lambda _
+               (substitute* "CMakeLists.txt"
+                 (("check_submodules_present\\(\\)")"")))))))
+    (native-inputs
+     (list pkg-config doxygen))
+    (inputs
+     (list qtbase-5 qtmultimedia-5 qttools-5
+           qtwayland libpng libxkbcommon
+           openssl
+           ffmpeg pulseaudio curl rapidjson
+           sdl2 libusb boost))
+    ;;gstreamer-plugins-bad needed for camera support
+    (propagated-inputs (list gst-plugins-bad xdg-utils shared-mime-info))
+    (home-page "https://citra-emu.org")
+    (synopsis "Nintendo 3DS Emulator")
+    (description "Citra is an experimental open-source Nintendo 3DS
+ emulator/debugger written in C++.  It is written with portability in
+ mind, with builds actively maintained for Windows, Linux and macOS.
+ The \"nightly\" version marks the stable release.")
+    (license license:gpl3+)))
+
 ;; Building from recent Git because the official 5.0 release no longer builds.
 ;; Following commits and revision numbers of beta versions listed at
 ;; https://dolphin-emu.org/download/.
+
 (define-public dolphin-emu
   (let ((commit "a34823df61df65168aa40ef5e82e44defd4a0138")
         (revision "13178"))

base-commit: 86ec52f66735b122b9035eba56516fd16f3be958
prerequisite-patch-id: 253e1cc8278ab9981294f4e483c7b29a466672d9
-- 
2.38.0