summary refs log tree commit diff
path: root/gnu/packages/matrix.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/matrix.scm')
-rw-r--r--gnu/packages/matrix.scm141
1 files changed, 138 insertions, 3 deletions
diff --git a/gnu/packages/matrix.scm b/gnu/packages/matrix.scm
index e6b0b99630..5300185b67 100644
--- a/gnu/packages/matrix.scm
+++ b/gnu/packages/matrix.scm
@@ -3,7 +3,6 @@
 ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
 ;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
-;;; Copyright © 2021 Felix Gruber <felgru@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,14 +22,18 @@
 (define-module (gnu packages matrix)
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages crypto)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages monitoring)
+  #:use-module (gnu packages python-build)
+  #:use-module (gnu packages python-check)
   #:use-module (gnu packages python-crypto)
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages xml)
   #:use-module (guix build-system python)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix packages))
 
 (define-public python-matrix-client
@@ -87,13 +90,13 @@ an LDAP server.")
 (define-public synapse
   (package
     (name "synapse")
-    (version "1.44.0")
+    (version "1.29.0")
     (source (origin
               (method url-fetch)
               (uri (pypi-uri "matrix-synapse" version))
               (sha256
                (base32
-                "1lgi1a4ksz4z78yb84bi29x4y080bx1dadib2wznvmwsfif0azx0"))))
+                "0if2yhpz8psg0661401mvxznldbfhk2j9rhbs25jdaqm9jsv6907"))))
     (build-system python-build-system)
     ;; TODO Run tests with ‘PYTHONPATH=. trial3 tests’.
     (propagated-inputs
@@ -150,3 +153,135 @@ Python/Twisted.  It is intended to showcase the concept of Matrix and let
 folks see the spec in the context of a codebase and let you run your own
 homeserver and generally help bootstrap the ecosystem.")
     (license license:asl2.0)))
+
+(define-public python-matrix-nio
+  (package
+    (name "python-matrix-nio")
+    (version "0.18.7")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "matrix-nio" version))
+       (sha256
+        (base32 "0cw4y6dx8n8hynxqlzzkj8p34nfbc2xryvmkr5yhmja31y4rks4k"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'install-tests
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (copy-recursively (string-append
+                                (assoc-ref inputs "tests") "/tests")
+                               "tests")
+             #t))
+         (replace 'check
+           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               ;; FIXME: two tests fail, for unknown reasons
+               (invoke "python" "-m" "pytest" "-vv" "tests" "-k"
+                       (string-append
+                        "not test_upload_binary_file_object "
+                        "and not test_connect_wrapper"))))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest-6)
+       ("python-hyperframe" ,python-hyperframe)
+       ("python-hypothesis" ,python-hypothesis-6.23)
+       ("python-hpack" ,python-hpack)
+       ("python-faker" ,python-faker)
+       ("python-pytest-aiohttp" ,python-pytest-aiohttp)
+       ("python-aioresponses" ,python-aioresponses)
+       ("python-pytest-benchmark" ,python-pytest-benchmark)
+       ("python-toml" ,python-toml)
+       ("tests"
+        ;; The release on pypi comes without tests.  We can't build from this
+        ;; checkout, though, because installation requires an invocation of
+        ;; poetry.
+        ,(origin
+           (method git-fetch)
+           (uri (git-reference
+                 (url "https://github.com/poljar/matrix-nio.git")
+                 (commit version)))
+           (file-name (git-file-name name version))
+           (sha256
+            (base32
+             "152prkndk53pfxm4in4xak4hwzyaxlbp6wv2zbk2xpzgyy9bvn3s"))))))
+    (propagated-inputs
+     `(("python-aiofiles" ,python-aiofiles)
+       ("python-aiohttp" ,python-aiohttp)
+       ("python-aiohttp-socks" ,python-aiohttp-socks)
+       ("python-atomicwrites" ,python-atomicwrites-1.4)
+       ("python-cachetools" ,python-cachetools)
+       ("python-future" ,python-future)
+       ("python-h11" ,python-h11)
+       ("python-h2" ,python-h2)
+       ("python-jsonschema" ,python-jsonschema)
+       ("python-logbook" ,python-logbook)
+       ("python-olm" ,python-olm)
+       ("python-peewee" ,python-peewee)
+       ("python-pycryptodome" ,python-pycryptodome)
+       ("python-unpaddedbase64" ,python-unpaddedbase64)))
+    (home-page "https://github.com/poljar/matrix-nio")
+    (synopsis
+     "Python Matrix client library, designed according to sans I/O principles")
+    (description
+     "Matrix nio is a multilayered Matrix client library.  The underlying base
+layer doesn't do any network IO on its own, but on top of that is a full
+fledged batteries-included asyncio layer using aiohttp.")
+    (license license:isc)))
+
+(define-public pantalaimon
+  (package
+    (name "pantalaimon")
+    (version "0.10.3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/matrix-org/pantalaimon")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "153d8083lj3qqirbv5q1d3igzd61a5kyzfk7xmv29sd3jbs8ysm9"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'downgrade-appdirs-requirement
+           (lambda _
+             (substitute* "setup.py"
+               ;; FIXME: Remove this once appdirs is updated.
+               ;; Upgrading python-appdirs requires rebuilting 3000+ packages,
+               ;; when 1.4.4 is a simple maintenance fix from 1.4.3.
+               (("appdirs >= 1.4.4") "appdirs >= 1.4.3"))))
+         (replace 'check
+           (lambda* (#:key tests? inputs outputs #:allow-other-keys)
+             (when tests?
+               (add-installed-pythonpath inputs outputs)
+               (invoke "pytest" "-vv" "tests")))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ("python-faker" ,python-faker)
+       ("python-pytest-aiohttp" ,python-pytest-aiohttp)
+       ("python-aioresponses" ,python-aioresponses)))
+    (propagated-inputs
+     `(("python-aiohttp" ,python-aiohttp)
+       ("python-appdirs" ,python-appdirs)
+       ("python-attrs" ,python-attrs)
+       ("python-cachetools" ,python-cachetools)
+       ("python-click" ,python-click)
+       ("python-janus" ,python-janus)
+       ("python-keyring" ,python-keyring)
+       ("python-logbook" ,python-logbook)
+       ("python-matrix-nio" ,python-matrix-nio)
+       ("python-peewee" ,python-peewee)
+       ("python-prompt-toolkit" ,python-prompt-toolkit)))
+    (home-page "https://github.com/matrix-org/pantalaimon")
+    (synopsis "Matrix proxy daemon that adds E2E encryption capabilities")
+    (description
+     "Pantalaimon is an end-to-end encryption aware Matrix reverse proxy
+daemon.  Pantalaimon acts as a good man in the middle that handles the
+encryption for you.  Messages are transparently encrypted and decrypted for
+clients inside of pantalaimon.")
+    (license license:asl2.0)))