Subject: mtxclient -> 0.4.1 Nheko -> 0.8.1
From: "K I" <[email-masked]>
To: "guix-patches" <[email-masked]>
Date: Fri, 19 Mar 2021 19:22:43 -0600 (MDT)
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

I do not know my way around git so I am offering this code to someone if they want to add it to guix proper. There were only slight changes needed.

Both packages built and ran for me.

(define-public mtxclient
  (package
    (name "mtxclient")
    (version "0.4.1")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/Nheko-Reborn/mtxclient")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1044zil3izhb3whhfjah7w0kg5mr3hys32cjffky681d3mb3wi5n"))))
    (arguments
     `(#:configure-flags
       (list
        ;; Disable example binaries (not installed)
        "-DBUILD_LIB_EXAMPLES=OFF")
       #:phases
       (modify-phases %standard-phases
         (add-before 'configure 'disable-network-tests
           (lambda _
             (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
     `(("boost" ,boost)
       ("json-modern-cxx" ,json-modern-cxx)
       ("libolm" ,libolm)
       ("libsodium" ,libsodium)
       ("openssl" ,openssl)
       ("spdlog" ,spdlog)
       ("zlib" ,zlib)))
    (native-inputs
     `(("googletest" ,googletest)
       ("pkg-config" ,pkg-config)))
    (home-page "https://github.com/Nheko-Reborn/mtxclient")
    (synopsis "Client API library for the Matrix protocol")
    (description "@code{mtxclient} is a C++ library that implements client API for the Matrix protocol.  It is built on to of @code{Boost.Asio}.")
    (license license:expat)))

(define-public nheko
  (package
    (name "nheko")
    (version "0.8.1")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/Nheko-Reborn/nheko")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1v7k3ifzi05fdr06hmws1wkfl1bmhrnam3dbwahp086vkj0r8524"))))
    (arguments
     `(#:tests? #f                      ;no test target
       #:configure-flags
       (list
        "-DCMAKE_BUILD_TYPE=Release"
        "-DCMAKE_CXX_FLAGS=-fpermissive")
       #: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)))))
    (build-system qt-build-system)
    (inputs
     `(("boost" ,boost)
       ("cmark" ,cmark)
       ("json-modern-cxx" ,json-modern-cxx)
       ("libolm" ,libolm)
       ("lmdb" ,lmdb)
       ("lmdbxx" ,lmdbxx)
       ("mtxclient-new" ,mtxclient-new)
       ("openssl" ,openssl)
       ("qtbase" ,qtbase)
       ("qtdeclarative" ,qtdeclarative)
       ("qtgraphicaleffects" ,qtgraphicaleffects)
       ("qtkeychain" ,qtkeychain)
       ("qtmultimedia" ,qtmultimedia)
       ("qtquickcontrols2" ,qtquickcontrols2)
       ("qtsvg" ,qtsvg)
       ("spdlog" ,spdlog)
       ("tweeny" ,tweeny)
       ("zlib" ,zlib)))
    (native-inputs
     `(("pkg-config" ,pkg-config)
       ("qtlinguist" ,qttools)))
    (home-page "https://github.com/Nheko-Reborn/nheko")
    (synopsis "Desktop client for Matrix using Qt and C++14")
    (description "@code{Nheko} want to provide a native desktop app for the
Matrix protocol that feels more like a mainstream chat app and less like an IRC
client.

There is support for:
@itemize
@item E2E encryption (text messages only: attachments are currently sent unencrypted).
@item User registration.
@item Creating, joining & leaving rooms.
@item Sending & receiving invites.
@item Sending & receiving files and emoji.
@item Typing notifications.
@item Username auto-completion.
@item Message & mention notifications.
@item Redacting messages.
@item Read receipts.
@item Basic communities support.
@item Room switcher (@key{ctrl-K}).
@item Light, Dark & System themes.
@end itemize")
    (license license:gpl3+)))