unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: Raghav Gururajan <rg@raghavgururajan.name>
To: help-guix@gnu.org
Subject: Help with fixing seg-fault in telegram
Date: Fri, 22 Jan 2021 00:30:12 -0500	[thread overview]
Message-ID: <e2a963a1-3c7b-77e3-2ca1-3905f4b9957e@raghavgururajan.name> (raw)

[-- Attachment #1: Type: text/plain, Size: 353 bytes --]

Hello Folks!

I am stuck with telegram-desktop segfaulting while answering calls.

STEPS TO REPRODUCE:
[1] Apply attached diff file on top of master 
(296156d9d1def88ccfda7d46cdcb574a4a52947b).
[2] Install telegram-desktop.
[3] Login and make/answer calls.

Here is the gdb trace: https://paste.debian.net/plain/1182169

Any ideas please?

Regards,
RG.

[-- Attachment #2: diff.diff --]
[-- Type: text/x-patch, Size: 61944 bytes --]

diff --git a/gnu/local.mk b/gnu/local.mk
index eb28104add..c1347120bb 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -534,6 +534,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/task-management.scm		\
   %D%/packages/tbb.scm				\
   %D%/packages/tcl.scm				\
+  %D%/packages/telegram.scm                 \
   %D%/packages/telephony.scm			\
   %D%/packages/terminals.scm			\
   %D%/packages/terraform.scm			\
@@ -914,6 +915,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/cursynth-wave-rand.patch			\
   %D%/packages/patches/cvs-CVE-2017-12836.patch		\
   %D%/packages/patches/cyrus-sasl-ac-try-run-fix.patch		\
+  %D%/packages/patches/c++-gsl-find-system-gtest.patch		\
   %D%/packages/patches/date-output-pkg-config-files.patch	\
   %D%/packages/patches/datefudge-gettimeofday.patch		\
   %D%/packages/patches/dbacl-include-locale.h.patch		\
diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm
index 56b32792fe..ab74650066 100644
--- a/gnu/packages/cmake.scm
+++ b/gnu/packages/cmake.scm
@@ -31,6 +31,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix deprecation)
   #:use-module (guix build-system gnu)
@@ -43,6 +44,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages file)
   #:use-module (gnu packages hurd)
+  #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages serialization)
@@ -52,6 +54,33 @@
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
+(define-public cmake-shared
+  (package
+    (name "cmake-shared")
+    (version "1.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/lirios/cmake-shared.git")
+         (commit
+          (string-append "v" version))))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "1srd3jmlalf0szgyp88ymhbnwds4qiywmf8lq1pif9g8irjjhdry"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f))                    ; No target
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (synopsis "Shared CMake functions and macros")
+    (description "CMake-Shared are shared functions and macros for projects
+using the CMake build system.")
+    (home-page "https://github.com/lirios/cmake-shared/")
+    (license license:bsd-3)))
+
 ;;; Build phases shared between 'cmake-bootstrap' and the later variants
 ;;; that use cmake-build-system.
 (define %common-build-phases
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 45d3faeafb..afb8be076f 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -39,16 +39,19 @@
   #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages c)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages cmake)
   #:use-module (gnu packages code)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
+  #:use-module (gnu packages documentation)
   #:use-module (gnu packages gcc)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libunwind)
@@ -63,6 +66,105 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages web))
 
+(define-public rlottie
+  (package
+    (name "rlottie")
+    (version "0.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/Samsung/rlottie.git")
+         (commit
+          (string-append "v" version))))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "10bxr1zf9wxl55d4cw2j02r6sgqln7mbxplhhfvhw0z92fi40kr3"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        "-Dlog=true"
+        "-Dtest=true")))
+    (native-inputs
+     `(("googletest" ,googletest)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Lottie Animation Library")
+    (description "Rlottie is a platform independent standalone c++ library for
+rendering vector based animations and art in realtime.")
+    (home-page "https://github.com/Samsung/rlottie/")
+    (license license:expat)))
+
+(define-public range-v3
+  (package
+    (name "range-v3")
+    (version "0.11.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/ericniebler/range-v3.git")
+         (commit version)))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "18230bg4rq9pmm5f8f65j444jpq56rld4fhmpham8q3vr1c1bdjh"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("doxygen" ,doxygen)
+       ("perl" ,perl)))
+    (inputs
+     `(("boost" ,boost)))
+    (synopsis "Range library for C++14/17/20")
+    (description "Range-v3 is an extension of the Standard Template Library that
+makes its iterators and algorithms more powerful by making them composable.
+Unlike other range-like solutions which, seek to do away with iterators, in
+range-v3 ranges are an abstration layer on top of iterators.")
+    (home-page "https://github.com/ericniebler/range-v3/")
+    (license
+     (list
+      ;; Elements of Programming
+      (license:x11-style "file:///LICENSE.txt")
+      ;; SGI STL
+      license:sgifreeb2.0
+      ;;; LibC++ (dual-licensed)
+      license:expat
+      license:ncsa
+      ;; Others
+      license:boost1.0))))
+
+(define-public c++-gsl
+  (package
+    (name "c++-gsl")
+    (version "3.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/microsoft/GSL.git")
+         (commit
+          (string-append "v" version))))
+       (file-name
+        (git-file-name name version))
+       (patches
+        (search-patches
+         "c++-gsl-find-system-gtest.patch"))
+       (sha256
+        (base32 "0gbvr48f03830g3154bjhw92b8ggmg6wwh5xyb8nppk9v6w752l0"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("googletest" ,googletest)
+       ("pkg-config" ,pkg-config)))
+    (synopsis "Guidelines Support Library")
+    (description "c++-gsl contains functions and types that are suggested for
+use by the C++ Core Guidelines maintained by the Standard C++ Foundation.")
+    (home-page "https://github.com/microsoft/GSL/")
+    (license license:expat)))
+
 (define-public libzen
   (package
     (name "libzen")
diff --git a/gnu/packages/fcitx.scm b/gnu/packages/fcitx.scm
index d52edf1750..93cea7a24d 100644
--- a/gnu/packages/fcitx.scm
+++ b/gnu/packages/fcitx.scm
@@ -19,11 +19,13 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages fcitx)
-  #:use-module ((guix licenses) #:select (gpl2+))
+  #:use-module ((guix licenses) #:select (gpl2+ bsd-3))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system qt)
   #:use-module (gnu packages check)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages enchant)
@@ -33,14 +35,69 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages iso-codes)
+  #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages man)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
   #:use-module (gnu packages sqlite)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages xorg))
+  #:use-module (gnu packages xorg)
+  #:use-module (gnu packages xdisorg))
+
+(define-public fcitx-qt5
+  (package
+    (name "fcitx-qt5")
+    (version "1.2.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/fcitx/fcitx-qt5.git")
+         (commit version)))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "1d56bp11jp85b2r4syw1clfg4vqxqfh7gygpwz8wk5sxmfmmdq83"))))
+    (build-system qt-build-system)
+    (arguments
+     `(#:tests? #f                      ; No target
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-install-dir
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "quickphrase-editor/CMakeLists.txt"
+               (("\\$\\{FCITX4_ADDON_INSTALL_DIR\\}")
+                (string-append
+                 (assoc-ref outputs "out")
+                 "/lib/fcitx")))
+             (substitute* "platforminputcontext/CMakeLists.txt"
+               (("\\$\\{CMAKE_INSTALL_QTPLUGINDIR\\}")
+                (string-append
+                 (assoc-ref outputs "out")
+                 "/lib/qt5/plugins")))
+             #t)))))
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("fcitx" ,fcitx)
+       ("libintl" ,intltool)
+       ("libxkbcommon" ,libxkbcommon)))
+    (propagated-inputs
+     `(("qtbase" ,qtbase)))
+    (synopsis "Fcitx Qt5 Input Context")
+    (description "This package provides a Qt5 frontend for fcitx.")
+    (home-page "https://github.com/fcitx/fcitx-qt5/")
+    (license
+     (list
+      ;; Plugin
+      bsd-3
+      ;; Others
+      gpl2+))))
 
 (define-public presage
   (package
diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm
index ef35349ec2..6dd37005ae 100644
--- a/gnu/packages/freedesktop.scm
+++ b/gnu/packages/freedesktop.scm
@@ -2021,14 +2021,15 @@ useful with system integration.")
        ("xvfb" ,xorg-server-for-tests)))
     (inputs
      `(("dbus-glib" ,dbus-glib)
-       ("gtk+" ,gtk+)
-       ("libdbusmenu" ,libdbusmenu)
        ("libindicator" ,libindicator)
        ("python@2" ,python-2)
        ("python2-pygtk" ,python2-pygtk)
        ("python2-pygobject-2" ,python2-pygobject-2)
        ;; ("mono" ,mono) ; requires non-packaged gapi
        ("vala" ,vala)))
+    (propagated-inputs
+     `(("gtk+" ,gtk+)
+       ("libdbusmenu" ,libdbusmenu)))
     (arguments
      ;; FIXME: do not hardcode gtk version
      `(#:configure-flags '("--with-gtk=3")
diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm
index 3f17465039..67b519aa56 100644
--- a/gnu/packages/language.scm
+++ b/gnu/packages/language.scm
@@ -23,36 +23,311 @@
 
 (define-module (gnu packages language)
   #:use-module (gnu packages)
+  #:use-module (gnu packages anthy)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages audio)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages docbook)
+  #:use-module (gnu packages emacs)
+  #:use-module (gnu packages freedesktop)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages gtk)
+  #:use-module (gnu packages ibus)
   #:use-module (gnu packages java)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages man)
+  #:use-module (gnu packages ncurses)
   #:use-module (gnu packages ocr)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #:use-module (gnu packages perl-check)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages swig)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages web)
   #:use-module (gnu packages xml)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg)
   #:use-module (guix packages)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module ((guix licenses)
                 #:select
-                (bsd-3 gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+ perl-license zpl2.1))
+                (bsd-3 gpl2 gpl2+ gpl3 gpl3+ lgpl2.1 lgpl2.1+ lgpl3+ perl-license zpl2.1 fdl1.2+))
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils))
 
+(define-public nimf
+  (package
+    (name "nimf")
+    (version "1.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/hamonikr/nimf.git")
+         (commit
+          (string-append "nimf-" version))))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "01qi7flmaqrn2fk03sa42r0caks9d8lsv88s0bgxahhxwk1x76gc"))))
+    (build-system glib-or-gtk-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     `(#:imported-modules
+       (,@%glib-or-gtk-build-system-modules
+        (guix build cmake-build-system)
+        (guix build qt-build-system))
+       #:modules
+       ((guix build glib-or-gtk-build-system)
+        ((guix build qt-build-system)
+         #:prefix qt:)
+        (guix build utils))
+       #:configure-flags
+       (list
+        "--with-im-config-data"
+        "--with-imsettings-data"
+        (string-append "--with-html-dir="
+                       (assoc-ref %outputs "doc")
+                       "/share/gtk-doc/html"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-flags
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "configure.ac"
+               (("-Werror")
+                "-Wno-error"))
+             #t))
+         (add-after 'patch-flags 'patch-docbook-xml
+           (lambda* (#:key inputs #:allow-other-keys)
+             (with-directory-excursion "docs"
+               (substitute* "nimf-docs.xml"
+                 (("http://www.oasis-open.org/docbook/xml/4.3/")
+                  (string-append (assoc-ref inputs "docbook-xml-4.3")
+                                 "/xml/dtd/docbook/"))))
+             #t))
+         (add-after 'patch-docbook-xml 'patch-paths
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (substitute* "configure.ac"
+               (("/usr/share/anthy/anthy.dic")
+                (string-append (assoc-ref inputs "anthy")
+                               "/share/anthy/anthy.dic")))
+             (substitute* "configure.ac"
+               (("/usr/bin:\\$GTK3_LIBDIR/libgtk-3-0")
+                (string-append (assoc-ref inputs "gtk+:bin")
+                               "/bin:$GTK3_LIBDIR/libgtk-3-0"))
+               (("/usr/bin:\\$GTK2_LIBDIR/libgtk2.0-0")
+                (string-append (assoc-ref inputs "gtk+-2:bin")
+                               "/bin:$GTK2_LIBDIR/libgtk2.0-0")))
+             (substitute* "modules/clients/gtk/Makefile.am"
+               (("\\$\\(GTK3_LIBDIR\\)")
+                (string-append (assoc-ref outputs "out")
+                               "/lib"))
+               (("\\$\\(GTK2_LIBDIR\\)")
+                (string-append (assoc-ref outputs "out")
+                               "/lib")))
+             (substitute* "modules/clients/qt4/Makefile.am"
+               (("\\$\\(QT4_LIB_DIR\\)")
+                (string-append (assoc-ref outputs "out")
+                               "/lib")))
+             (substitute* "modules/clients/qt5/Makefile.am"
+               (("\\$\\(QT5_IM_MODULE_DIR\\)")
+                (string-append (assoc-ref outputs "out")
+                               "/lib/qt5/plugins/inputmethods")))
+             (substitute* '("bin/nimf-settings/Makefile.am"
+                            "data/apparmor-abstractions/Makefile.am"
+                            "data/Makefile.am" "data/im-config/Makefile.am"
+                            "data/imsettings/Makefile.am")
+               (("/etc")
+                (string-append (assoc-ref outputs "out")
+                               "/etc"))
+               (("/usr/share")
+                (string-append (assoc-ref outputs "out")
+                               "/share")))
+             #t))
+         (add-after 'install 'qt-wrap
+           (assoc-ref qt:%standard-phases 'qt-wrap)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("docbook-xml-4.3" ,docbook-xml-4.3)
+       ("gettext" ,gettext-minimal)
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk+-2:bin" ,gtk+-2 "bin")
+       ("gtk+:bin" ,gtk+ "bin")
+       ("gtk-doc" ,gtk-doc)
+       ("intltool" ,intltool)
+       ("libtool" ,libtool)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("which" ,which)))
+    (inputs
+     `(("anthy" ,anthy)
+       ("appindicator" ,libappindicator)
+       ("gtk+-2" ,gtk+-2)
+       ("gtk+" ,gtk+)
+       ("hangul" ,libhangul)
+       ("m17n-db" ,m17n-db)
+       ("m17n-lib" ,m17n-lib)
+       ("qt-4" ,qt-4)
+       ("qtbase" ,qtbase)
+       ("rime" ,librime)
+       ("rsvg" ,librsvg)
+       ("wayland" ,wayland)
+       ("wayland-protocols" ,wayland-protocols)
+       ("x11" ,libx11)
+       ("xkbcommon" ,libxkbcommon)
+       ("xklavier" ,libxklavier)))
+    (propagated-inputs
+     `(("glib" ,glib)))
+    (synopsis "Lightweight input method framework")
+    (description "Nimf is a lightweight, fast and extensible input method
+framework.  This package provides a fork of the original nimf project, that
+focusses especially on Korean input (Hangul, Hanja, ...).")
+    (home-page "https://github.com/hamonikr/nimf/")
+    (license lgpl3+)))
+
+(define-public hime
+  (package
+    (name "hime")
+    (version "0.9.11")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/hime-ime/hime.git")
+         (commit
+          (string-append "v" version))))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "1wn0ici78x5qh6hvv50bf76ld7ds42hzzl4l5qz34hp8wyvrwakw"))))
+    (build-system glib-or-gtk-build-system)
+    (arguments
+     `(#:tests? #f                      ; No target
+       #:imported-modules
+       (,@%glib-or-gtk-build-system-modules
+        (guix build cmake-build-system)
+        (guix build qt-build-system))
+       #:modules
+       ((guix build glib-or-gtk-build-system)
+        ((guix build qt-build-system)
+         #:prefix qt:)
+        (guix build utils))
+       #:configure-flags
+       (list
+        ;; FIXME
+        ;; error: unknown type name ‘GtkStatusIcon’
+        "--disable-system-tray")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-std
+           (lambda _
+             (substitute* "configure"
+               (("gnu17")
+                "gnu11")
+               (("gnu++17")
+                "gnu++11"))
+             #t))
+         (add-after 'install 'qt-wrap
+           (assoc-ref qt:%standard-phases 'qt-wrap)))))
+    (native-inputs
+     `(("gettext" ,gettext-minimal)
+       ("pkg-config" ,pkg-config)
+       ("whereis" ,util-linux)))
+    (inputs
+     `(("anthy" ,anthy)
+       ("appindicator" ,libappindicator)
+       ("chewing" ,libchewing)
+       ("gtk+" ,gtk+)
+       ("qtbase" ,qtbase)
+       ("xtst" ,libxtst)))
+    (synopsis "HIME Input Method Editor")
+    (description "Hime is an extremely easy-to-use input method framework.  It
+is lightweight, stable, powerful and supports many commonly used input methods,
+including Cangjie, Zhuyin, Dayi, Ranked, Shrimp, Greek, Anthy, Korean, Latin,
+Random Cage Fighting Birds, Cool Music etc.")
+    (home-page "http://hime-ime.github.io/")
+    (license
+     (list
+      gpl2+
+      lgpl2.1+
+      ;; Documentation
+      fdl1.2+))))
+
+(define-public libchewing
+  (package
+    (name "libchewing")
+    (version "0.5.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/chewing/libchewing.git")
+         (commit
+          (string-append "v" version))))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "04d09w6xdd08v6laj9y4qmqsijw5i2jvshcilhh4vg6cfnfgl2my"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'disable-failing-tests
+           (lambda _
+             (substitute* "test/Makefile.am"
+               (("	test-bopomofo ")
+                "")
+               (("	test-config ")
+                "")
+               (("	test-reset ")
+                "")
+               (("	test-symbol ")
+                "")
+               (("	test-keyboardless ")
+                "")
+               (("	test-special-symbol ")
+                "")
+               (("	test-keyboard ")
+                "")
+               (("	test-regression ")
+                "")
+               (("	test-userphrase ")
+                ""))
+             #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ("texinfo" ,texinfo)))
+    (inputs
+     `(("ncurses" ,ncurses)
+       ("sqlite" ,sqlite)))
+    (synopsis "Chinese phonetic input method")
+    (description "Chewing is an intelligent phonetic (Zhuyin/Bopomofo) input
+method, one of the most popular choices for Traditional Chinese users.")
+    (home-page "http://chewing.im/")
+    (license lgpl2.1+)))
+
 (define-public liblouis
   (package
     (name "liblouis")
diff --git a/gnu/packages/patches/c++-gsl-find-system-gtest.patch b/gnu/packages/patches/c++-gsl-find-system-gtest.patch
new file mode 100644
index 0000000000..2def650292
--- /dev/null
+++ b/gnu/packages/patches/c++-gsl-find-system-gtest.patch
@@ -0,0 +1,96 @@
+From f5cf01083baf7e8dc8318db3648bc6098dc32d67 Mon Sep 17 00:00:00 2001
+From: Nicholas Guriev <guriev-ns@ya.ru>
+Date: Sat, 18 Apr 2020 13:30:17 +0300
+Subject: [PATCH] Search for GoogleTest via pkg-config first
+
+---
+ tests/CMakeLists.txt | 55 ++++++++++++++++++++++++--------------------
+ 1 file changed, 30 insertions(+), 25 deletions(-)
+
+diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
+index 02193197..53d475c2 100644
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -1,36 +1,41 @@
+ cmake_minimum_required(VERSION 3.0.2)
+ 
+ project(GSLTests CXX)
++include(FindPkgConfig)
+ 
+ # will make visual studio generated project group files
+ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+ 
+-configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
+-execute_process(
+-    COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
+-    RESULT_VARIABLE result
+-    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
+-)
+-if(result)
+-    message(FATAL_ERROR "CMake step for googletest failed: ${result}")
+-endif()
++pkg_search_module(GTestMain gtest_main)
++if (NOT GTestMain_FOUND)
++    configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
++    execute_process(
++        COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
++        RESULT_VARIABLE result
++        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
++    )
++    if(result)
++        message(FATAL_ERROR "CMake step for googletest failed: ${result}")
++    endif()
+ 
+-execute_process(
+-    COMMAND ${CMAKE_COMMAND} --build .
+-    RESULT_VARIABLE result
+-    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
+-)
+-if(result)
+-    message(FATAL_ERROR "CMake step for googletest failed: ${result}")
+-endif()
++    execute_process(
++        COMMAND ${CMAKE_COMMAND} --build .
++        RESULT_VARIABLE result
++        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download
++    )
++    if(result)
++        message(FATAL_ERROR "CMake step for googletest failed: ${result}")
++    endif()
+ 
+-set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
++    set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
++    set(GTestMain_LIBRARIES gtest_main)
+ 
+-add_subdirectory(
+-    ${CMAKE_CURRENT_BINARY_DIR}/googletest-src
+-    ${CMAKE_CURRENT_BINARY_DIR}/googletest-build
+-    EXCLUDE_FROM_ALL
+-)
++    add_subdirectory(
++        ${CMAKE_CURRENT_BINARY_DIR}/googletest-src
++        ${CMAKE_CURRENT_BINARY_DIR}/googletest-build
++        EXCLUDE_FROM_ALL
++    )
++endif()
+ 
+ if (MSVC AND (GSL_CXX_STANDARD EQUAL 17))
+     set(GSL_CPLUSPLUS_OPT -Zc:__cplusplus -permissive-)
+@@ -149,7 +154,7 @@ function(add_gsl_test name)
+     target_link_libraries(${name}
+         GSL
+         gsl_tests_config
+-        gtest_main
++        ${GTestMain_LIBRARIES}
+     )
+     add_test(
+         ${name}
+@@ -254,7 +259,7 @@ function(add_gsl_test_noexcept name)
+     target_link_libraries(${name}
+         GSL
+         gsl_tests_config_noexcept
+-        gtest_main
++        ${GTestMain_LIBRARIES}
+     )
+     add_test(
+       ${name}
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 79d41b3e73..a0409b0060 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -45,6 +45,7 @@
   #:use-module (guix build-system gnu)
   #:use-module (guix build-system trivial)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix packages)
   #:use-module (guix deprecation)
   #:use-module (guix utils)
@@ -72,6 +73,7 @@
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages icu4c)
   #:use-module (gnu packages image)
+  #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages llvm)
@@ -103,6 +105,91 @@
   #:use-module (gnu packages xml)
   #:use-module (srfi srfi-1))
 
+(define-public qt5ct
+  (package
+    (name "qt5ct")
+    (version "1.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append "mirror://sourceforge/qt5ct/qt5ct-" version ".tar.bz2"))
+       (sha256
+        (base32 "1lnx4wqk87lbr6lqc64w5g5ppjjv75kq2r0q0bz9gfpryzdw8xxg"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; No target
+       #:imported-modules
+       (,@%gnu-build-system-modules
+        (guix build cmake-build-system)
+        (guix build qt-build-system))
+       #:modules
+       ((guix build gnu-build-system)
+        ((guix build qt-build-system)
+         #:prefix qt:)
+        (guix build utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "qt5ct.pro"
+               (("\\$\\$\\[QT_INSTALL_BINS\\]/lrelease")
+                (string-append (assoc-ref inputs "qttools")
+                               "/bin/lrelease")))
+             #t))
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (invoke "qmake"
+                       (string-append "PREFIX=" out)
+                       (string-append "BINDIR=" out "/bin")
+                       (string-append "DATADIR=" out "/share")
+                       (string-append "PLUGINDIR=" out "/lib/qt5/plugins")))
+             #t))
+         (add-after 'install 'qt-wrap
+           (assoc-ref qt:%standard-phases 'qt-wrap)))))
+    (native-inputs
+     `(("qttools" ,qttools)))
+    (inputs
+     `(("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)))
+    (synopsis "Qt5 Configuration Tool")
+    (description "Qt5CT is a program that allows users to configure Qt5
+settings (such as icons, themes, and fonts) in desktop environments or
+window managers, that don't provide Qt integration by themselves.")
+    (home-page "https://qt5ct.sourceforge.io/")
+    (license license:bsd-2)))
+
+(define-public materialdecoration
+  (package
+    (name "materialdecoration")
+    (version "1.1.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/lirios/materialdecoration.git")
+         (commit "2079487116c6c794af3a15452342a69293039b46")))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "1pczmxbmnsgj9s1g6ap55qq2q4ccibcnhsw9b6cl5rzgc48izy06"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("cmake-shared" ,cmake-shared)
+       ("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("qtbase" ,qtbase)
+       ("qtwayland" ,qtwayland)
+       ("wayland" ,wayland)))
+    (synopsis "Material Decoration for Qt")
+    (description "MaterialDecoration is a client-side decoration for Qt
+applications on Wayland.")
+    (home-page "https://github.com/lirios/materialdecoration")
+    (license license:lgpl3+)))
+
 (define-public grantlee
   (package
     (name "grantlee")
diff --git a/gnu/packages/telegram.scm b/gnu/packages/telegram.scm
new file mode 100644
index 0000000000..44666a43ac
--- /dev/null
+++ b/gnu/packages/telegram.scm
@@ -0,0 +1,832 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages telegram)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages aidc)
+  #:use-module (gnu packages assembly)
+  #:use-module (gnu packages audio)
+  #:use-module (gnu packages autotools)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages check)
+  #:use-module (gnu packages cmake)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages cpp)
+  #:use-module (gnu packages digest)
+  #:use-module (gnu packages fcitx)
+  #:use-module (gnu packages fcitx5)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages glib)
+  #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages image)
+  #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages language)
+  #:use-module (gnu packages libevent)
+  #:use-module (gnu packages libreoffice)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages lxqt)
+  #:use-module (gnu packages lua)
+  #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages protobuf)
+  #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages textutils)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xiph)
+  #:use-module (gnu packages xorg)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix git-download)
+  #:use-module (guix build-system cmake)
+  #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix build-system meson)
+  #:use-module (guix build-system qt))
+
+(define-public tg-owt
+  (let ((commit "fa86fcc00c218813d61a272a56feab55c76a1ab9")
+        (revision "1"))
+    (package
+      (name "tg-owt")
+      (version
+       (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/desktop-app/tg_owt.git")
+           (commit commit)))
+         (file-name
+          (git-file-name name version))
+         (sha256
+          (base32 "06gcrlym6vqqw7zlds9lpwyg37d5m81d87h16aps19v0v9gzan0l"))
+         (modules '((guix build utils)
+                    (ice-9 ftw)
+                    (srfi srfi-1)))
+         (snippet
+          `(begin
+             (let ((keep
+                    '( ;; Custom forks which are incompatible with the ones in Guix.
+                      "abseil-cpp" "libsrtp" "openh264" "rnnoise"
+                      ;; Not available in Guix.
+                      "pffft" "usrsctp"
+                      ;; Has cmake support files for libvpx input.
+                      "libvpx")))
+               (with-directory-excursion "src/third_party"
+                 (for-each delete-file-recursively
+                           (lset-difference string=?
+                                            (scandir ".")
+                                            (cons* "." ".." keep))))
+               #t)))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:tests? #f                    ; No target
+         #:configure-flags
+         (list
+          "-DCMAKE_C_FLAGS=-fPIC"
+          "-DCMAKE_CXX_FLAGS=-fPIC")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'copy-inputs
+             (lambda* (#:key inputs outputs #:allow-other-keys)
+               (let* ((libvpx-from (assoc-ref inputs "libvpx"))
+                      (libyuv-from (assoc-ref inputs "libyuv"))
+                      (libvpx-to (string-append (getcwd)
+                                                "/src/third_party/libvpx/source/libvpx"))
+                      (libyuv-to (string-append (getcwd)
+                                                "/src/third_party/libyuv")))
+                 (copy-recursively libvpx-from libvpx-to)
+                 (copy-recursively libyuv-from libyuv-to))
+               #t)))))
+      (native-inputs
+       `(("pkg-config" ,pkg-config)
+         ("python" ,python-wrapper)
+         ("yasm" ,yasm)))
+      (inputs
+       `(("alsa" ,alsa-lib)
+         ("ffmpeg" ,ffmpeg)
+         ("libjpeg" ,libjpeg-turbo)
+         ("libvpx"
+          ,(origin
+             (method git-fetch)
+             (uri
+              (git-reference
+               (url "https://chromium.googlesource.com/webm/libvpx")
+               (commit "5b63f0f821e94f8072eb483014cfc33b05978bb9")))
+             (file-name
+              (git-file-name "libvpx-for-tg-owt" version))
+             (sha256
+              (base32 "1psvxaddihlw1k5n0anxif3qli6zyw2sa2ywn6mkb8six9myrp68"))))
+         ("libyuv"
+          ,(origin
+             (method git-fetch)
+             (uri
+              (git-reference
+               (url "https://chromium.googlesource.com/libyuv/libyuv")
+               (commit "ad890067f661dc747a975bc55ba3767fe30d4452")))
+             (file-name
+              (git-file-name "libyuv-for-tg-owt" version))
+             (sha256
+              (base32 "01knnk4h247rq536097n9n3s3brxlbby3nv3ppdgsqfda3k159ll"))))
+         ("openssl" ,openssl)
+         ("opus" ,opus)
+         ("protobuf" ,protobuf)
+         ("pulseaudio" ,pulseaudio)))
+      (synopsis "WebRTC support for Telegram-Desktop")
+      (description "Tg_owt is a custom WebRTC fork by Telegram project,
+for its use in telegram desktop client.")
+      (home-page "https://github.com/desktop-app/tg_owt")
+      (license
+       (list
+        ;; Abseil-CPP
+        license:asl2.0
+        ;; LibYuv
+        (license:non-copyleft "file:///src/third_party/libyuv/LICENSE")
+        ;; OpenH264
+        license:bsd-2
+        ;; PFFFT
+        (license:non-copyleft "file:///src/third_party/pffft/LICENSE")
+        ;; RnNoise
+        license:gpl3
+        ;; LibSRTP, LibVPx, UsrSCTP and Others
+        license:bsd-3)))))
+
+(define-public tg-rlottie
+  (let ((commit "cbd43984ebdf783e94c8303c41385bf82aa36d5b")
+        (revision "1"))
+    (package
+      (name "tg-rlottie")
+      (version
+       (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/desktop-app/rlottie.git")
+           (commit commit)))
+         (file-name
+          (git-file-name name version))
+         (sha256
+          (base32 "1lxpbgbhps9rmck036mgmiknqrzpjxpas8n7qxykv6pwzn0c8n0c"))))
+      (build-system meson-build-system)
+      (arguments
+       `(#:configure-flags
+         (list
+          "-Dlog=true"
+          "-Ddumptree=true"
+          "-Dtest=true")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'patch-cxx-flags
+             (lambda _
+               (substitute* "meson.build"
+                 (("werror=true")
+                  "werror=false"))
+               #t)))))
+      (native-inputs
+       `(("googletest" ,googletest)
+         ("pkg-config" ,pkg-config)))
+      (synopsis "Lottie Animation Library for Telegram-Desktop")
+      (description "TG-Rlottie is a custom fork of rlottie, modified for its use
+in telegram-desktop.  Rlottie is a platform independent standalone c++ library
+for rendering vector based animations and art in realtime.")
+      (home-page "https://github.com/desktop-app/rlottie")
+      (license license:expat))))
+
+(define-public tg-voip
+  (package
+    (name "tg-voip")
+    (version "2.4.4")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/telegramdesktop/libtgvoip.git")
+         (commit "37d98e984fd6fa389262307db826d52ab86c8241")))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "13dzvyq8p20nlhjihv18aj6y97czk07qdl0k6v81vp6mbwcldg7h"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:configure-flags
+       (list
+        "--disable-static"
+        "--disable-dsp" ; FIXME
+        "--enable-audio-callback"
+        "--with-alsa"
+        "--with-pulse")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-linkers
+           (lambda _
+             (substitute* "Makefile.am"
+               (("\\$\\(CRYPTO_LIBS\\) \\$\\(OPUS_LIBS\\)")
+                "$(CRYPTO_LIBS) $(OPUS_LIBS) $(ALSA_LIBS) $(PULSE_LIBS)"))
+             (substitute* "tgvoip.pc.in"
+               (("libcrypto opus")
+                "libcrypto opus alsa libpulse"))
+             #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alsa" ,alsa-lib)
+       ("openssl" ,openssl)
+       ("opus" ,opus)
+       ("pulseaudio" ,pulseaudio)))
+    (synopsis "Telegram VoIP Library")
+    (description "Tg-VoIP is the VoIP library for Telegram Desktop application.")
+    (home-page "https://github.com/telegramdesktop/libtgvoip")
+    (license license:unlicense)))
+
+(define-public telegram-desktop
+  (package
+    (name "telegram-desktop")
+    (version "2.5.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/telegramdesktop/tdesktop.git")
+         (commit
+          (string-append "v" version))))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "0drirhkr9gnm1g03lcqmvap5ljlk859c29gbsm63hhsgv15dlw0y"))
+       (modules '((guix build utils)
+                  (ice-9 ftw)
+                  (srfi srfi-1)))
+       (snippet
+        `(begin
+           (let ((keep
+                  '( ;; Not available in Guix.
+                    "SPMediaKeyTap" "statusnotifieritem" "tgcalls")))
+             (with-directory-excursion "Telegram/ThirdParty"
+               (for-each delete-file-recursively
+                         (lset-difference string=?
+                                          (scandir ".")
+                                          (cons* "." ".." keep))))
+             #t)))))
+    (build-system qt-build-system)
+    (arguments
+     `(#:tests? #f                      ; No target
+       #:imported-modules
+       (,@%qt-build-system-modules
+        (guix build glib-or-gtk-build-system))
+       #:modules
+       ((guix build qt-build-system)
+        ((guix build glib-or-gtk-build-system)
+         #:prefix glib-or-gtk:)
+        (guix build utils)
+        (ice-9 match))
+       #:configure-flags
+       (list
+        ;; Client applications must provide their own API-ID and API-HASH,
+        ;; see also <https://core.telegram.org/api/obtaining_api_id>.
+        ;; In case, that the credentials below fail to work, contact
+        ;;   Raghav Gururajan <rg@raghavgururajan.name>
+        "-DTDESKTOP_API_ID=2791056"
+        "-DTDESKTOP_API_HASH=582d6d0b44f7a2de949e99271fd8b3f2"
+        ;; Use bundled fonts as fallback.
+        "-DDESKTOP_APP_USE_PACKAGED_FONTS=OFF")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'make-writable
+           (lambda _
+             (for-each make-file-writable (find-files "."))
+             #t))
+         (add-after 'make-writable 'copy-inputs
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (for-each
+              (match-lambda
+                ((dst src)
+                 (copy-recursively src dst)
+                 (for-each make-file-writable (find-files dst))))
+              `(("cmake" ,(assoc-ref inputs "cmake-helpers"))
+                ("Telegram/codegen" ,(assoc-ref inputs "codegen-source"))
+                ("Telegram/lib_base" ,(assoc-ref inputs "lib-base-source"))
+                ("Telegram/lib_crl" ,(assoc-ref inputs "lib-crl-source"))
+                ("Telegram/lib_lottie"
+                 ,(assoc-ref inputs "lib-lottie-source"))
+                ("Telegram/lib_qr" ,(assoc-ref inputs "lib-qr-source"))
+                ("Telegram/lib_rlottie"
+                 ,(assoc-ref inputs "lib-rlottie-source"))
+                ("Telegram/lib_rpl" ,(assoc-ref inputs "lib-rpl-source"))
+                ("Telegram/lib_spellcheck"
+                 ,(assoc-ref inputs "lib-spellcheck-source"))
+                ("Telegram/lib_storage"
+                 ,(assoc-ref inputs "lib-storage-source"))
+                ("Telegram/lib_tl" ,(assoc-ref inputs "lib-tl-source"))
+                ("Telegram/lib_ui" ,(assoc-ref inputs "lib-ui-source"))
+                ("Telegram/lib_webrtc" ,(assoc-ref inputs "lib-webrtc-source"))
+                ("Telegram/ThirdParty/tgcalls"
+                 ,(assoc-ref inputs "tgcalls-source"))))
+             #t))
+         (add-before 'configure 'patch-cxx-flags
+           (lambda _
+             (substitute* "cmake/options_linux.cmake"
+               (("class-memaccess") "all"))
+             #t))
+         (add-after 'install 'glib-or-gtk-compile-schemas
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
+         (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
+           (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))))
+    (native-inputs
+     `(("cmake-helpers"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/cmake_helpers.git")
+             (commit "a81345a28d407fb5acd5267ec6afa1864f4e8d5b")))
+           (file-name
+            (git-file-name "cmake-helpers-for-telegram-desktop" version))
+           (sha256
+            (base32 "0s5hxip68dmkaspjq6j30wx1r5v4prnrjza79hdbznz6i57a2248"))))
+       ("cmake-shared" ,cmake-shared)
+       ("extra-cmake-modules" ,extra-cmake-modules)
+       ("gcc" ,gcc-9)
+       ("glib:bin" ,glib "bin")
+       ("gobject-introspection" ,gobject-introspection)
+       ("gtk+:bin" ,gtk+ "bin")
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ("qttools" ,qttools)))
+    (inputs
+     `(("alsa" ,alsa-lib)
+       ("c++-gsl" ,c++-gsl)
+       ("catch" ,catch-framework2)
+       ("codegen-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/codegen.git")
+             (commit "127968de8129e8ccfa6ac50721c70415a5a087c3")))
+           (file-name
+            (git-file-name "codegen" version))
+           (sha256
+            (base32 "036hzjrsk134ky62192nra43rsln5kh5gz20q1920s922661zky2"))))
+       ("expected" ,libexpected)
+       ("fcitx-qt5" ,fcitx-qt5)
+       ("fcitx5-qt" ,fcitx5-qt)
+       ("ffmpeg" ,ffmpeg)
+       ("glib" ,glib)
+       ("gtk+" ,gtk+)
+       ("hime" ,hime)
+       ("hunspell" ,hunspell)
+       ("iconv" ,libiconv)
+       ("lib-base-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/lib_base.git")
+             (commit "81df0d0b7842be2b6c88f93dfa136b8efea4c9ad")))
+           (file-name
+            (git-file-name "lib-base-for-telegram-desktop" version))
+           (sha256
+            (base32 "0ikddprjnjvg0ic8jr2886xq0f18syp587q6z2kci9xmdnvjl217"))))
+       ("lib-crl-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/lib_crl.git")
+             (commit "16150bf71d79382738114b913f137ec1a1a7630c")))
+           (file-name
+            (git-file-name "lib-crl-for-telegram-desktop" version))
+           (sha256
+            (base32 "0qhagdr26aqb9w7wnchcmk1j7ln28x3wbkkkm06b8h0mybksbj7q"))))
+       ("lib-lottie-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/lib_lottie.git")
+             (commit "fb40f379d82ffa1fc7506e9a8dddcf48847715ae")))
+           (file-name
+            (git-file-name "lib-lottie-for-telegram-desktop" version))
+           (sha256
+            (base32 "1vq0mqxcrrv7akcqk9cl4mm61zw6dcfmy8adl0pcp49kynm64saw"))))
+       ("lib-qr-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/lib_qr.git")
+             (commit "92ce41a690a463eb462089a4eb1e51e019308018")))
+           (file-name
+            (git-file-name "lib-qr-for-telegram-desktop" version))
+           (sha256
+            (base32 "182939nv7xs9b3bgah3gl5y9hx5r59mabd2jw3z6717vc96qi2pj"))))
+       ("lib-rlottie-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/lib_rlottie.git")
+             (commit "0671bf70547381effcf442ec9618e04502a8adbc")))
+           (file-name
+            (git-file-name "lib-rlottie-for-telegram-desktop" version))
+           (sha256
+            (base32 "05qnza7j15356s8jq16pkbyp4zr586lssmd86lz5jq23lcb3raxv"))))
+       ("lib-rpl-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/lib_rpl.git")
+             (commit "e1b96399d9031c4ef0354631e6bb375029d29d9f")))
+           (file-name
+            (git-file-name "lib-rpl-for-telegram-desktop" version))
+           (sha256
+            (base32 "1wvqazljd2kq1fxlj250jhjrig529499bym9p81dx33kh1l9dgss"))))
+       ("lib-spellcheck-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/lib_spellcheck.git")
+             (commit "1b540b38ed78e9a3cba93e9ba4ce4525ab692277")))
+           (file-name
+            (git-file-name "lib-spellcheck-for-telegram-desktop" version))
+           (sha256
+            (base32 "0a7042h5zrdvgs7v153ral2dh1zj84di5yjcmgcry5k4s1im9di7"))))
+       ("lib-storage-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/lib_storage.git")
+             (commit "cbe51722b73cfa9ff27bd59294b08aa5ee33c936")))
+           (file-name
+            (git-file-name "lib-storage-for-telegram-desktop" version))
+           (sha256
+            (base32 "045l5xsyagyz17gbhmmvl2miss4nb92p0dmza7yfs9pkg9gs0f87"))))
+       ("lib-tl-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/lib_tl.git")
+             (commit "404c83d77e5edb8a39f8e9f56a6340960fe5070e")))
+           (file-name
+            (git-file-name "lib-tl-for-telegram-desktop" version))
+           (sha256
+            (base32 "1k34nkvvcjqw5q81n1qmklid60cvzjk4lmn9qjimk437m6wbii7f"))))
+       ("lib-ui-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/lib_ui.git")
+             (commit "1e2799245cf2720a329ecb5cf5644fded669cce6")))
+           (file-name
+            (git-file-name "lib-ui-for-telegram-desktop" version))
+           (sha256
+            (base32 "0kd4njcvic2700f00qn25vn3b80vsd2flsm3pi2synnldkiy8lcw"))))
+       ("lib-webrtc-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/desktop-app/lib_webrtc.git")
+             (commit "4bc51d6f6d5740159fdb51cb1593e80ce149ed4e")))
+           (file-name
+            (git-file-name "lib-webrtc-for-telegram-desktop" version))
+           (sha256
+            (base32 "06hpyq4qglrj3cb1xg8ghlmzm9ra8f5n6vm7hcy67n2wk8sy4cal"))))
+       ("libdbusmenu-qt" ,libdbusmenu-qt)
+       ("libjpeg" ,libjpeg-turbo)
+       ("lz4" ,lz4)
+       ("materialdecoration" ,materialdecoration)
+       ("minizip" ,minizip)
+       ("nimf" ,nimf)
+       ("openal" ,openal)
+       ("openssl" ,openssl)
+       ("opus" ,opus)
+       ("pulseaudio" ,pulseaudio)
+       ("qrcodegen" ,qrcodegen-cpp)
+       ("qt" ,qtbase)
+       ("qt5ct" ,qt5ct)
+       ("qtimageformats" ,qtimageformats)
+       ("qtwayland" ,qtwayland)
+       ("range-v3" ,range-v3)
+       ("tg-owt" ,tg-owt)
+       ("tg-rlottie" ,tg-rlottie)
+       ("tg-voip" ,tg-voip)
+       ("tgcalls-source"
+        ,(origin
+           (method git-fetch)
+           (uri
+            (git-reference
+             (url "https://github.com/TelegramMessenger/tgcalls.git")
+             (commit "178983f72312ca8bd422bc73810fd63f1a89bd9d")))
+           (file-name
+            (git-file-name "tgcalls-for-telegram-desktop" version))
+           (sha256
+            (base32 "1xad65c9m6mj6zdj08flafvh8xjkd7xi9r1agcyc64y69lr427d0"))))
+       ("x11" ,libx11)
+       ("xcb" ,libxcb)
+       ("xcb-keysyms" ,xcb-util-keysyms)
+       ("xxhash" ,xxhash)
+       ("zlib" ,zlib)))
+    (propagated-inputs
+     `(("dconf" ,dconf)))
+    (synopsis "Telegram Desktop")
+    (description "Telegram desktop is the official desktop version of the
+Telegram instant messager.")
+    (home-page "https://desktop.telegram.org/")
+    (license
+     (list
+      ;; ThirdParty
+      license:lgpl2.1+
+      ;; Others
+      license:gpl3+))))
+
+(define-public tl-parser
+  (let ((commit "1933e76f8f4fb74311be723b432e4c56e3a5ec06")
+        (revision "1"))
+    (package
+      (name "tl-parser")
+      (version
+       (git-version "0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri
+          (git-reference
+           (url "https://github.com/vysheng/tl-parser.git")
+           (commit commit)))
+         (file-name
+          (git-file-name name version))
+         (sha256
+          (base32 "13cwi247kajzpkbl86hnwmn1sn2h6rqndz6khajbqj0mlw9mv4hq"))))
+      (build-system cmake-build-system)
+      (arguments
+       `(#:tests? #f                    ; No target
+         #:phases
+         (modify-phases %standard-phases
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (bin (string-append out "/bin"))
+                      (include (string-append out "/include"))
+                      (source (string-append (getenv "TEMP") "/source"))
+                      (build (string-append (getenv "TEMP") "/build")))
+                 ;; Install executables.
+                 (with-directory-excursion build
+                   (for-each
+                    (lambda (file)
+                      (install-file file bin))
+                    (list
+                     "tl-parser")))
+                 ;; Install headers.
+                 (for-each
+                  (lambda (file)
+                    (install-file file (string-append include "/tl-parser")))
+                  (find-files source "\\.h$")))
+               #t)))))
+      (synopsis "Parse tl scheme to tlo")
+      (description "TL-Parser is a tl scheme to tlo file parser.  It was formely
+a part of telegram-cli, but now being maintained separately.")
+      (home-page "https://github.com/vysheng/tl-parser")
+      (license license:gpl2+))))
+
+(define-public tgl
+  (package
+    (name "tgl")
+    (version "2.0.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/vysheng/tgl.git")
+         (commit "ffb04caca71de0cddf28cd33a4575922900a59ed")))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "0cf5s7ygslb5klg1qv9qdc3hivhspmvh3zkacyyhd2yyikb5p0f9"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; No target
+       #:configure-flags
+       (list
+        ;; Use gcrypt instead of openssl.
+        "--disable-openssl"
+        ;; Enable extended queries system.
+        "--enable-extf"
+        ;; Include libevent-based net and timers.
+        "--enable-libevent")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'trigger-bootstrap
+           (lambda _
+             (delete-file "configure")
+             #t))
+         (add-after 'trigger-bootstrap 'patch-tl-parser
+           (lambda _
+             (delete-file "Makefile.tl-parser")
+             (substitute* "Makefile.in"
+               (("include \\$\\{srcdir\\}/Makefile\\.tl-parser")
+                "")
+               (("\\$\\{EXE\\}/tl-parser")
+                "tl-parser"))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin-to (string-append out "/bin"))
+                    (include-to (string-append out "/include"))
+                    (lib-to (string-append out "/lib"))
+                    (source (string-append (getenv "TEMP") "/source"))
+                    (bin-from (string-append source "/bin"))
+                    (lib-from (string-append source "/libs")))
+               ;; Install executables.
+               (with-directory-excursion bin-from
+                 (for-each
+                  (lambda (file)
+                    (install-file file bin-to))
+                  (list
+                   "generate")))
+               ;; Install headers.
+               (with-directory-excursion source
+                 (for-each
+                  (lambda (file)
+                    (install-file file (string-append include-to "/tgl/crypto"))
+                    (delete-file file))
+                  (find-files "crypto" "\\.h$"))
+                 (for-each
+                  (lambda (file)
+                    (install-file file (string-append include-to "/tgl/auto"))
+                    (delete-file file))
+                  (find-files "auto" "\\.h$"))
+                 (for-each
+                  (lambda (file)
+                    (install-file file (string-append include-to "/tgl"))
+                    (delete-file file))
+                  (find-files "." "\\.h$")))
+               ;; Install libraries.
+               (for-each
+                (lambda (file)
+                  (install-file file (string-append lib-to "/tgl")))
+                (find-files lib-from "\\.(a|so)$")))
+             #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libevent" ,libevent)
+       ("libgcrypt" ,libgcrypt)
+       ("tl-parser" ,tl-parser)
+       ("zlib" ,zlib)))
+    (synopsis "Telegram Library")
+    (description "TGL is the telegram library for telegram-cli.")
+    (home-page "https://github.com/vysheng/tgl")
+    (license license:lgpl2.1+)))
+
+(define-public telegram-cli
+  (package
+    (name "telegram-cli")
+    (version "1.3.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri
+        (git-reference
+         (url "https://github.com/vysheng/tg.git")
+         (commit "6547c0b21b977b327b3c5e8142963f4bc246187a")))
+       (file-name
+        (git-file-name name version))
+       (sha256
+        (base32 "0c1w7jgska71jjbvg1y09v52549pwa4zkdjly18yxywn7gayd2p6"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f                      ; No target
+       #:configure-flags
+       (list
+        ;; Use gcrypt instead of openssl.
+        "--disable-openssl")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'trigger-bootstrap
+           (lambda _
+             (delete-file "configure")
+             #t))
+         (add-after 'trigger-bootstrap 'patch-tgl-and-tlparser
+           (lambda* (#:key inputs #:allow-other-keys)
+             (for-each delete-file
+                       (list
+                        "Makefile.tgl"
+                        "Makefile.tl-parser"))
+             (substitute* "Makefile.in"
+               (("include \\$\\{srcdir\\}/Makefile\\.tl-parser")
+                "")
+               (("include \\$\\{srcdir\\}/Makefile\\.tgl")
+                "")
+               (("-I\\$\\{srcdir\\}/tgl")
+                (string-append "-I" (assoc-ref inputs "tgl")
+                               "/include/tgl"))
+               (("AUTO=auto")
+                (string-append "AUTO=" (assoc-ref inputs "tgl")
+                               "/include/tgl/auto"))
+               (("LIB=libs")
+                (string-append "LIB=" (assoc-ref inputs "tgl")
+                               "/lib/tgl")))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (source (string-append (getenv "TEMP") "/source")))
+               ;; Install client.
+               (install-file
+                (string-append source "/bin/telegram-cli")
+                (string-append out "/bin"))
+               ;; Install daemon.
+               (install-file
+                (string-append source "/start-telegram-daemon")
+                (string-append out "/bin"))
+               ;; Install daemon script.
+               (install-file
+                (string-append source "/telegram-daemon")
+                (string-append out "/etc/init.d"))
+               ;; Install server public-key.
+               (install-file
+                (string-append source "/server.pub")
+                (string-append out "/etc/telegram-cli")))
+             #t))
+         (add-after 'install 'patch-daemon-files
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out")))
+               (with-directory-excursion out
+                 (substitute* "etc/init.d/telegram-daemon"
+                   (("KOT\\'s meta engine")
+                    "Telegram Messaging System")
+                   (("/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin")
+                    "$PATH")
+                   (("\\$ROOT/usr/share/telegram-daemon/bin")
+                    (string-append out "/bin"))
+                   (("/etc/init\\.d")
+                    (string-append out "/etc/init.d")))
+                 (substitute* "bin/start-telegram-daemon"
+                   (("msg-search-engine")
+                    "telegram-cli")
+                   (("\\$root/usr/share/telegram-daemon/bin")
+                    (string-append out "/bin")))))
+             #t)))))
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("jansson" ,jansson)
+       ("libconfig" ,libconfig)
+       ("libevent" ,libevent)
+       ("libgcrypt" ,libgcrypt)
+       ("lua" ,lua)
+       ("openssl" ,openssl)
+       ("perl" ,perl)
+       ("python" ,python)
+       ("readline" ,readline)
+       ("tgl" ,tgl)
+       ("tl-parser" ,tl-parser)
+       ("zlib" ,zlib)))
+    (synopsis "Telegram Messenger CLI")
+    (description "TG is the command-line interface for Telegram Messenger.")
+    (home-page "https://github.com/vysheng/tgl")
+    (license license:gpl2+)))

             reply	other threads:[~2021-01-22  5:31 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-22  5:30 Raghav Gururajan [this message]
2021-01-25 17:28 ` Help with fixing seg-fault in telegram raingloom

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e2a963a1-3c7b-77e3-2ca1-3905f4b9957e@raghavgururajan.name \
    --to=rg@raghavgururajan.name \
    --cc=help-guix@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).