diff options
Diffstat (limited to 'gnu/packages/messaging.scm')
-rw-r--r-- | gnu/packages/messaging.scm | 164 |
1 files changed, 52 insertions, 112 deletions
diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index 061e2fe236..f075d28e0a 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -18,7 +18,7 @@ ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org> ;;; Copyright © 2019, 2020 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si> -;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> +;;; Copyright © 2020, 2021 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Reza Alizadeh Majd <r.majd@pantherx.org> @@ -1836,79 +1836,6 @@ including psyced.") (synopsis "PSYC library in C") (license license:agpl3+))) -;; This commit removes the historic bundled pcre and makes psyclpc reproducible. -(define-public psyclpc - (let* ((commit "61cf9aa81297085e5c40170fd01221c752f8deba") - (revision "2")) - (package - (name "psyclpc") - (version (string-append "20160821-" revision "." (string-take commit 7))) - (source (origin - (method git-fetch) - (uri (git-reference - (url "git://git.psyced.org/git/psyclpc") - (commit commit))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "1viwqymbhn3cwvx0zl58rlzl5gw47zxn0ldg2nbi55ghm5zxl1z5")))) - (build-system gnu-build-system) - (arguments - `(#:tests? #f ; There are no tests/checks. - #:configure-flags - ;; If you have questions about this part, look at - ;; "src/settings/psyced" and the ebuild. - (list - "--enable-use-tls=yes" - "--enable-use-mccp" ; Mud Client Compression Protocol, leave this enabled. - (string-append "--prefix=" - (assoc-ref %outputs "out")) - ;; src/Makefile: Set MUD_LIB to the directory which contains - ;; the mud data. defaults to MUD_LIB = @libdir@ - (string-append "--libdir=" - (assoc-ref %outputs "out") - "/opt/psyced/world") - (string-append "--bindir=" - (assoc-ref %outputs "out") - "/opt/psyced/bin") - ;; src/Makefile: Set ERQ_DIR to directory which contains the - ;; stuff which ERQ can execute (hopefully) savely. Was formerly - ;; defined in config.h. defaults to ERQ_DIR= @libexecdir@ - (string-append "--libexecdir=" - (assoc-ref %outputs "out") - "/opt/psyced/run")) - #:phases - (modify-phases %standard-phases - (add-before 'configure 'chdir-to-src - ;; We need to pass this as env variables - ;; and manually change the directory. - (lambda _ - (chdir "src") - (setenv "CONFIG_SHELL" (which "sh")) - (setenv "SHELL" (which "sh")) - #t))) - #:make-flags (list "install-all"))) - (inputs - `(("zlib" ,zlib) - ("openssl" ,openssl-1.0) - ("pcre" ,pcre))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("bison" ,bison) - ("gettext" ,gettext-minimal) - ("help2man" ,help2man) - ("autoconf" ,autoconf) - ("automake" ,automake))) - (home-page "http://lpc.psyc.eu/") - (synopsis "psycLPC is a multi-user network server programming language") - (description - "LPC is a bytecode language, invented to specifically implement -multi user virtual environments on the internet. This technology is used for -MUDs and also the psyced implementation of the Protocol for SYnchronous -Conferencing (PSYC). psycLPC is a fork of LDMud with some new features and -many bug fixes.") - (license license:gpl2)))) - (define-public loudmouth (package (name "loudmouth") @@ -2297,7 +2224,7 @@ QMatrixClient project.") (define-public mtxclient (package (name "mtxclient") - (version "0.3.1") + (version "0.5.1") (source (origin (method git-fetch) @@ -2306,7 +2233,7 @@ QMatrixClient project.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1dg4dq20g0ah62j5s3gpsxqq4ny7lxkxdxa9q6g54hdwkrb9ms7x")))) + (base32 "1xznfx2bhw0ahwmkxm0rs05vz05ijk5k4190rj6qp3bvb9byiajh")))) (arguments `(#:configure-flags (list @@ -2319,12 +2246,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 @@ -2347,7 +2268,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.2") (source (origin (method git-fetch) @@ -2356,30 +2277,60 @@ 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 "0362hkbprc6jqlgmvzwxyvify4b1ldjakyqdz55m25xsypbpv2f3")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "third_party"))))) (arguments `(#:tests? #f ;no test target #:configure-flags - (list - "-DCMAKE_BUILD_TYPE=Release" - "-DCMAKE_CXX_FLAGS=-fpermissive") + '("-DCMAKE_BUILD_TYPE=Release" + "-DBUILD_DOCS=ON" + ;; Fix required because we are using a static SingleApplication + "-DCMAKE_CXX_FLAGS= \"-DQAPPLICATION_CLASS=QApplication\" " + ;; Compile Qml will make Nheko faster, but you will need to recompile + ;; it, when you update Qt. That's fine for us. + "-DCOMPILE_QML=ON") #:phases (modify-phases %standard-phases - (add-after 'unpack 'remove-Werror - (lambda _ - (substitute* "CMakeLists.txt" - (("-Werror") "")) - #t)) + (add-after 'unpack 'unbundle-dependencies + (lambda* (#:key inputs #:allow-other-keys) + (let ((single-app (assoc-ref inputs "single-application"))) + (substitute* "CMakeLists.txt" + ;; Remove include and source dirs,replace with the correct one + (("third_party/blurhash/blurhash.cpp") "") + (("third_party/cpp-httplib-0.5.12") + (string-append "\"" single-app "/include\"")) + (("add_subdirectory.*third_party/SingleApplication.*") "") + ;; Link using the correct static/shared libs + (("SingleApplication::SingleApplication") + (string-append + ;; Dynamic libraries + "httplib" "\n" "blurhash" "\n" + ;; Static library + single-app "/lib/libSingleApplication.a")))))) (add-after 'unpack 'fix-determinism (lambda _ ;; Make Qt deterministic. - (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1") - #t))))) + (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1"))) + (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))))))))) (build-system qt-build-system) (inputs `(("boost" ,boost) + ("blurhash" ,blurhash) + ("cpp-httplib" ,cpp-httplib) ("cmark" ,cmark) + ("gst-plugins-base" ,gst-plugins-base) + ("gst-plugins-bad" ,gst-plugins-bad) ; sdp & webrtc for voip + ("gst-plugins-good" ,gst-plugins-good) ; rtpmanager for voip ("json-modern-cxx" ,json-modern-cxx) + ("libnice" ,libnice) ; for voip ("libolm" ,libolm) ("lmdb" ,lmdb) ("lmdbxx" ,lmdbxx) @@ -2387,15 +2338,18 @@ for the Matrix protocol. It is built on to of @code{Boost.Asio}.") ("openssl" ,openssl) ("qtbase" ,qtbase-5) ("qtdeclarative" ,qtdeclarative) + ("qtkeychain" ,qtkeychain) ("qtgraphicaleffects" ,qtgraphicaleffects) ("qtmultimedia" ,qtmultimedia) ("qtquickcontrols2" ,qtquickcontrols2) ("qtsvg" ,qtsvg) ("spdlog" ,spdlog) - ("tweeny" ,tweeny) + ("single-application" ,single-application-qt5) ("zlib" ,zlib))) (native-inputs - `(("pkg-config" ,pkg-config) + `(("doxygen" ,doxygen) + ("graphviz" ,graphviz) + ("pkg-config" ,pkg-config) ("qtlinguist" ,qttools))) (home-page "https://github.com/Nheko-Reborn/nheko") (synopsis "Desktop client for Matrix using Qt and C++14") @@ -2403,22 +2357,8 @@ for the Matrix protocol. It is built on to of @code{Boost.Asio}.") 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") +Many matrix features are supported, including user registration, rooms, typing +notification, emojis, E2E encryption, and voip calls.") (license license:gpl3+))) (define-public quaternion |