about summary refs log tree commit diff
path: root/pkgs/servers/mautrix-signal/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/servers/mautrix-signal/default.nix')
-rw-r--r--pkgs/servers/mautrix-signal/default.nix68
1 files changed, 16 insertions, 52 deletions
diff --git a/pkgs/servers/mautrix-signal/default.nix b/pkgs/servers/mautrix-signal/default.nix
index eb886482c2ff1..3b913a2bd4627 100644
--- a/pkgs/servers/mautrix-signal/default.nix
+++ b/pkgs/servers/mautrix-signal/default.nix
@@ -1,72 +1,36 @@
-{ lib, python3, fetchFromGitHub }:
+{ lib, buildGoModule, fetchFromGitHub, olm, libsignal-ffi }:
 
-python3.pkgs.buildPythonPackage rec {
+buildGoModule {
   pname = "mautrix-signal";
-  version = "0.4.3";
+  # mautrix-signal's latest released version v0.4.3 still uses the Python codebase
+  # which is broken for new devices, see https://github.com/mautrix/signal/issues/388.
+  # The new Go version fixes this by using the official libsignal as a library and
+  # can be upgraded to directly from the Python version.
+  version = "unstable-2023-12-30";
 
   src = fetchFromGitHub {
     owner = "mautrix";
     repo = "signal";
-    rev = "refs/tags/v${version}";
-    sha256 = "sha256-QShyuwHiWRcP1hGkvCQfixvoUQ/FXr2DYC5VrcMKX48=";
+    rev = "6abe80e6c79b31b5dc37a484b65d346a1ffd4f05";
+    hash = "sha256-EDSP+kU0EmIaYbAB/hxAUTEay+H5aqn9ovBQFZg6wJk=";
   };
 
-  postPatch = ''
-    # the version mangling in mautrix_signal/get_version.py interacts badly with pythonRelaxDepsHook
-    substituteInPlace setup.py \
-      --replace 'version=version' 'version="${version}"'
-  '';
-
-  nativeBuildInputs = with python3.pkgs; [
-    pythonRelaxDepsHook
-  ];
-
-  pythonRelaxDeps = [
-    "mautrix"
+  buildInputs = [
+    olm
+    # must match the version used in https://github.com/mautrix/signal/tree/main/pkg/libsignalgo
+    # see https://github.com/mautrix/signal/issues/401
+    libsignal-ffi
   ];
 
-  propagatedBuildInputs = with python3.pkgs; [
-    commonmark
-    aiohttp
-    aiosqlite
-    asyncpg
-    attrs
-    commonmark
-    mautrix
-    phonenumbers
-    pillow
-    prometheus-client
-    pycryptodome
-    python-olm
-    python-magic
-    qrcode
-    ruamel-yaml
-    unpaddedbase64
-    yarl
-  ];
+  vendorHash = "sha256-f3sWX+mBouuxVKu+fZIYTWLXT64fllUWpcUYAxjzQpI=";
 
   doCheck = false;
 
-  postInstall = ''
-    mkdir -p $out/bin
-
-    # Make a little wrapper for running mautrix-signal with its dependencies
-    echo "$mautrixSignalScript" > $out/bin/mautrix-signal
-    echo "#!/bin/sh
-      exec python -m mautrix_signal \"\$@\"
-    " > $out/bin/mautrix-signal
-    chmod +x $out/bin/mautrix-signal
-    wrapProgram $out/bin/mautrix-signal \
-      --prefix PATH : "${python3}/bin" \
-      --prefix PYTHONPATH : "$PYTHONPATH"
-  '';
-
   meta = with lib; {
     homepage = "https://github.com/mautrix/signal";
     description = "A Matrix-Signal puppeting bridge";
     license = licenses.agpl3Plus;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ expipiplus1 ];
+    maintainers = with maintainers; [ expipiplus1 niklaskorz ma27 ];
     mainProgram = "mautrix-signal";
   };
 }