Subject: [bug#46013] [PATCH] gnu: nheko: Update to 0.8.0.

From: Michael Rohleder <[email-masked]>
Date: Thu, 21 Jan 2021 02:03:23 +0100

* gnu/packages/messaging.scm (nheko): Update to 0.8.0.
[arguments]: Remove -fpermissive flag, remove remove-Werror phase, add phase wrap-program.
[inputs]: Add gst-plugins-base, gst-plugins-bad, libnice, qtkeychain.
[description]: Add items for new features.
(mtxclient): Update to 0.4.0.
[arguments]: Remove set-home phase.
---
This nheko needs a newer mtxclient (and current nheko doesn't build with new mtxclient),
so we need to update them together.

I tested voice calls (which seems to work), but couldn't get video calls to work:
"[ui] [error] Missing GStreamer plugins: opengl qmlgl" (at runtime)
Do we have these gstreamer plugins?

I think the new features and fixes are worth a push (voice over matrix is nice and
enough for me) and perhaps the video thing can be fixed later on (I leaved it out of the
description).

(Hint for people upgrading from current nheko: One needs to remove ~/.config/nheko
and ~/.cache/nheko or this version will segfault.  This known upstream (and afaik won't
be fixed))

 gnu/packages/messaging.scm | 38 ++++++++++++++++++++------------------
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm
index 1820a146d1..b3a34fb4cb 100644
--- a/gnu/packages/messaging.scm
+++ b/gnu/packages/messaging.scm
@@ -2227,7 +2227,7 @@ QMatrixClient project.")
 (define-public mtxclient
   (package
     (name "mtxclient")
-    (version "0.3.1")
+    (version "0.4.0")
     (source
      (origin
        (method git-fetch)
@@ -2236,7 +2236,7 @@ QMatrixClient project.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1dg4dq20g0ah62j5s3gpsxqq4ny7lxkxdxa9q6g54hdwkrb9ms7x"))))
+        (base32 "1x820rcfz5r203dc8a0rzavcjjx10fsv1dicqg65m6kxx1w95j5r"))))
     (arguments
      `(#:configure-flags
        (list
@@ -2249,12 +2249,6 @@ QMatrixClient project.")
              (substitute* "CMakeLists.txt"
                (("add_test\\((BasicConnectivity|ClientAPI|MediaAPI|Encryption|Pushrules)")
                 "# add_test"))
-             #t))
-         (add-before 'configure 'set-home
-           (lambda _
-             ;; Tries to create package registry file
-             ;; So, set HOME.
-             (setenv "HOME" "/tmp")
              #t)))))
     (build-system cmake-build-system)
     (inputs
@@ -2277,7 +2271,7 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
 (define-public nheko
   (package
     (name "nheko")
-    (version "0.7.2")
+    (version "0.8.0")
     (source
      (origin
        (method git-fetch)
@@ -2286,30 +2280,34 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
              (commit (string-append "v" version))))
        (file-name (git-file-name name version))
        (sha256
-        (base32 "1cbhgaf9klgxdirrxj571fqwspm0byl75c1xc40l727a6qswvp7s"))))
+        (base32 "00d6wx3lcgbks74jkdyifqxf8nlravqh88fyljd0sy7kzbah9msf"))))
     (arguments
      `(#:tests? #f                      ;no test target
        #:configure-flags
        (list
-        "-DCMAKE_BUILD_TYPE=Release"
-        "-DCMAKE_CXX_FLAGS=-fpermissive")
+        "-DCMAKE_BUILD_TYPE=Release")
        #:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'remove-Werror
-           (lambda _
-             (substitute* "CMakeLists.txt"
-               (("-Werror") ""))
-             #t))
          (add-after 'unpack 'fix-determinism
            (lambda _
              ;; Make Qt deterministic.
              (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1")
-             #t)))))
+             #t))
+         (add-after 'install 'wrap-program
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH")))
+               (wrap-program (string-append out "/bin/nheko")
+                 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))
+               #t))))))
     (build-system qt-build-system)
     (inputs
      `(("boost" ,boost)
        ("cmark" ,cmark)
+       ("gst-plugins-base" ,gst-plugins-base) ;for voip
+       ("gst-plugins-bad" ,gst-plugins-bad)   ;for voip
        ("json-modern-cxx" ,json-modern-cxx)
+       ("libnice" ,libnice)             ;for voip
        ("libolm" ,libolm)
        ("lmdb" ,lmdb)
        ("lmdbxx" ,lmdbxx)
@@ -2318,6 +2316,7 @@ for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
        ("qtbase" ,qtbase)
        ("qtdeclarative" ,qtdeclarative)
        ("qtgraphicaleffects" ,qtgraphicaleffects)
+       ("qtkeychain" ,qtkeychain)
        ("qtmultimedia" ,qtmultimedia)
        ("qtquickcontrols2" ,qtquickcontrols2)
        ("qtsvg" ,qtsvg)
@@ -2336,10 +2335,12 @@ client.
 There is support for:
 @itemize
 @item E2E encryption (text messages only: attachments are currently sent unencrypted).
+@item VoIP calls (voice).
 @item User registration.
 @item Creating, joining & leaving rooms.
 @item Sending & receiving invites.
 @item Sending & receiving files and emoji.
+@item Replies with text, images and other media.
 @item Typing notifications.
 @item Username auto-completion.
 @item Message & mention notifications.
@@ -2348,6 +2349,7 @@ There is support for:
 @item Basic communities support.
 @item Room switcher (@key{ctrl-K}).
 @item Light, Dark & System themes.
+@item Creating seperate profiles (command line only, use -p).
 @end itemize")
     (license license:gpl3+)))
 
-- 
2.30.0