diff mbox series

[bug#57675,v2,5/5] gnu: telegram-desktop: Update to 4.1.1.

Message ID y768rmu6nqr.wl-hako@ultrarare.space
State New
Headers show
Series gnu: telegram-desktop: Update to 4.1.1. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git-branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Hilton Chain Sept. 8, 2022, 12:42 p.m. UTC
* gnu/packages/patches/lib-base-for-telegram-desktop-support-musl.patch: New
file.
* gnu/local.mk: Add patch.
* gnu/packages/telegram.scm (telegram-desktop): Update to 4.1.1 and simplify
inputs style.
[source]:
1. Patch: Add support for musl.
2. Bundled 3rd-party libraries: Add rlottie, libtgvoip and dispatch. Remove
SPMediaKeyTap and statusnotifieritem which are no longer available in source.
[#:configure-flags]:
1. Available flags with default values are written and commented out.
2. Use Telegram's API id for their Snap builds.
3. Build a generic package with DESKTOP_APP_USE_PACKAGED_LAZY on.
[#:phases]:
1. Copy checkouts for dispatch, fcitx-qt5, fcitx5-qt, hime, nimf, rlottie and
libtgvoip into source.
2. Build and install with cmake utility.
3. Don't patch C++ flags as they are not there any more.
[native-inputs]
1. Use variable external-sources to manage source chekouts.
2. Bump cmake-helpers checkout.
3. Add ninja for use with cmake.
4. Add clang-toolchain as it's suggested by Telegram, cmake would used it
automatically.
5. Drop cmake-shared, extra-cmake-modules, glib:bin, gobject-introspection,
gtk+:bin and qttools-5.
[inputs]
1. Use variable external-sources to manage source chekouts.
2. Add checkouts for dispatch, fcitx-qt5, fcitx5-qt, hime, nimf, rlottie and
libtgvoip.
3. Bump checkouts for codegen, lib_base, lib_crl, lib_lottie, lib_qr, lib_rpl,
lib_spellcheck,lib_storage, lib_tl, lib_ui, lib_waylandshells, lib_webrtc,
lib_webview and tgcalls.
4. Patch lib_base for musl support.
5. Drop unneeded inputs.
[license]
1. Sync with source tree changes.
---
 gnu/local.mk                                  |   1 +
 ...se-for-telegram-desktop-support-musl.patch |  35 +
 gnu/packages/telegram.scm                     | 735 ++++++++++--------
 3 files changed, 446 insertions(+), 325 deletions(-)
 create mode 100644 gnu/packages/patches/lib-base-for-telegram-desktop-support-musl.patch

--
2.37.2
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index d0e5aeb125..aa2fa69ddd 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1354,6 +1354,7 @@  dist_patch_DATA =						\
   %D%/packages/patches/julia-tracker-16-compat.patch		\
   %D%/packages/patches/julia-allow-parallel-build.patch		\
   %D%/packages/patches/kdbusaddons-kinit-file-name.patch	\
+  %D%/packages/patches/lib-base-for-telegram-desktop-support-musl.patch	\
   %D%/packages/patches/libffi-3.3-powerpc-fixes.patch		\
   %D%/packages/patches/libffi-float128-powerpc64le.patch	\
   %D%/packages/patches/libobjc2-unbundle-robin-map.patch	\
diff --git a/gnu/packages/patches/lib-base-for-telegram-desktop-support-musl.patch b/gnu/packages/patches/lib-base-for-telegram-desktop-support-musl.patch
new file mode 100644
index 0000000000..1a3a70286f
--- /dev/null
+++ b/gnu/packages/patches/lib-base-for-telegram-desktop-support-musl.patch
@@ -0,0 +1,35 @@ 
+Stub out some glibc-specific functions
+
+This allows support for alternative libcs like musl
+
+diff --git a/base/platform/linux/base_info_linux.cpp b/base/platform/linux/base_info_linux.cpp
+index 714d8dc..b70cc23 100644
+--- a/base/platform/linux/base_info_linux.cpp
++++ b/base/platform/linux/base_info_linux.cpp
+@@ -22,7 +22,7 @@
+
+ #include <sys/utsname.h>
+
+-#ifdef Q_OS_LINUX
++#if defined(Q_OS_LINUX) && defined(__GLIBC__)
+ #include <gnu/libc-version.h>
+ #endif // Q_OS_LINUX
+
+@@ -200,7 +200,7 @@ QString AutoUpdateKey() {
+ }
+
+ QString GetLibcName() {
+-#ifdef Q_OS_LINUX
++#if defined(Q_OS_LINUX) && defined(__GLIBC__)
+ 	return "glibc";
+ #endif // Q_OS_LINUX
+
+@@ -208,7 +208,7 @@ QString GetLibcName() {
+ }
+
+ QString GetLibcVersion() {
+-#ifdef Q_OS_LINUX
++#if defined(Q_OS_LINUX) && defined(__GLIBC__)
+ 	static const auto result = [&] {
+ 		const auto version = QString::fromLatin1(gnu_get_libc_version());
+ 		return QVersionNumber::fromString(version).isNull() ? QString() : version;
diff --git a/gnu/packages/telegram.scm b/gnu/packages/telegram.scm
index 78ec2558c7..24f9b9bbfc 100644
--- a/gnu/packages/telegram.scm
+++ b/gnu/packages/telegram.scm
@@ -1,5 +1,6 @@ 
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
+;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -28,8 +29,10 @@  (define-module (gnu packages telegram)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages digest)
+  #:use-module (gnu packages enchant)
   #:use-module (gnu packages fcitx)
   #:use-module (gnu packages fcitx5)
+  #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
@@ -42,6 +45,7 @@  (define-module (gnu packages telegram)
   #:use-module (gnu packages libevent)
   #:use-module (gnu packages libreoffice)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages llvm)
   #:use-module (gnu packages lxqt)
   #:use-module (gnu packages lua)
   #:use-module (gnu packages ninja)
@@ -60,6 +64,7 @@  (define-module (gnu packages telegram)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages webkit)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xorg)
@@ -229,339 +234,419 @@  (define-public webrtc-for-telegram-desktop
 (define-public telegram-desktop
   (package
     (name "telegram-desktop")
-    (version "2.9.3")
-    (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 "0dzf1y3xhqvizg29bd1kya48cjbkq073d2x10ynwcmmx396l4nd8"))
-       (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)))))
+    (version "4.1.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/telegramdesktop/tdesktop")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0zhwaql1fk0nqr1x2lchcswz61x7sb2297qdxiysgqamr0fk9ppn"))
+              (modules '((guix build utils)
+                         (ice-9 ftw)
+                         (srfi srfi-1)))
+              (snippet #~(begin
+                           (let ((keep
+                                  '(;; Custom fork
+                                    "rlottie" "libtgvoip"
+                                    ;; Not available in Guix.
+                                    "dispatch" "tgcalls")))
+                             (with-directory-excursion "Telegram/ThirdParty"
+                               (for-each delete-file-recursively
+                                         (lset-difference string=?
+                                                          (scandir ".")
+                                                          (cons* "." ".." keep)))))))))
     (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"
-        ;; Disable WebkitGTK support as it fails to link
-        "-DDESKTOP_APP_DISABLE_WEBKITGTK=ON"
-        ;; 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_waylandshells" ,(assoc-ref inputs "lib-waylandshells-source"))
-                ("Telegram/lib_webrtc" ,(assoc-ref inputs "lib-webrtc-source"))
-                ("Telegram/lib_webview" ,(assoc-ref inputs "lib-webview-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)))))
+     (list #: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
+           #~`(;; https://github.com/telegramdesktop/tdesktop/blob/dev/snap/snapcraft.yaml
+               ;; see also <https://core.telegram.org/api/obtaining_api_id>.
+               "-DTDESKTOP_API_ID=611335"
+               "-DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c"
+               ,(string-append "-DTDESKTOP_LAUTCHER_BASENAME=" #$name)
+
+               ;; NOTE: Options commented are default values.
+               ;; See also: comments in inputs.
+
+               ;; "-DDESKTOP_APP_USE_PACKAGED=ON"
+               ;; "-DDESKTOP_APP_DISABLE_DBUS_INTEGRATION=OFF"
+               ;; "-DDESKTOP_APP_DISABLE_WAYLAND_INTEGRATION=OFF"
+               ;; "-DDESKTOP_APP_DISABLE_X11_INTEGRATION=OFF"
+               ;; "-DDESKTOP_APP_DISABLE_SPELLCHECK=OFF"
+               ;; "-DDESKTOP_APP_USE_ENCHANT=OFF"
+               ;; "-DDESKTOP_APP_LOTTIE_USE_CACHE=ON"
+
+               ;; "-DLIBTGVOIP_DISABLE_ALSA=OFF"
+               ;; "-DLIBTGVOIP_DISABLE_PULSEAUDIO=OFF"
+
+               ;; Build all the available detected features in the build
+               ;; environment.
+               "-DDESKTOP_APP_USE_PACKAGED_LAZY=ON")
+           #:phases
+           #~(modify-phases %standard-phases
+               (add-after 'unpack 'make-writable
+                 (lambda _
+                   (for-each make-file-writable (find-files "."))))
+               (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_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_waylandshells" ,(assoc-ref inputs "lib-waylandshells-source"))
+                      ("Telegram/lib_webrtc" ,(assoc-ref inputs "lib-webrtc-source"))
+                      ("Telegram/lib_webview" ,(assoc-ref inputs "lib-webview-source"))
+                      ("Telegram/ThirdParty/dispatch" ,(assoc-ref inputs "dispatch-source"))
+                      ("Telegram/ThirdParty/fcitx-qt5" ,(assoc-ref inputs "fcitx-qt5-source"))
+                      ("Telegram/ThirdParty/fcitx5-qt" ,(assoc-ref inputs "fcitx5-qt-source"))
+                      ("Telegram/ThirdParty/hime" ,(assoc-ref inputs "hime-source"))
+                      ("Telegram/ThirdParty/nimf" ,(assoc-ref inputs "nimf-source"))
+                      ("Telegram/ThirdParty/rlottie" ,(assoc-ref inputs "rlottie-source"))
+                      ("Telegram/ThirdParty/tgcalls" ,(assoc-ref inputs "tgcalls-source"))
+                      ("Telegram/ThirdParty/libtgvoip" ,(assoc-ref inputs "libtgvoip-source"))))))
+               (replace 'build
+                 (lambda* (#:key (make-flags '())
+                           (parallel-build? #t) #:allow-other-keys)
+                   (apply invoke "cmake" "--build" "."
+                          `(,@(if parallel-build?
+                                  `("-j" ,(number->string (parallel-job-count)))
+                                  '())
+                             ,@make-flags))))
+               (replace 'install
+                 (lambda* (#:key (make-flags '()) #:allow-other-keys)
+                   (apply invoke "cmake" "--install" "." make-flags)))
+               (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 "4d44d822e01b3b5fbec3ce824e01f56aa35d7f72")))
-           (file-name
-            (git-file-name "cmake-helpers-for-telegram-desktop" version))
-           (sha256
-            (base32 "0h6cjiqy014h2mz90h1z5a7plb3ihbnds4bja8994ybr1dy3m7m5"))))
-       ("cmake-shared" ,cmake-shared)
-       ("extra-cmake-modules" ,extra-cmake-modules)
-       ("glib:bin" ,glib "bin")
-       ("gobject-introspection" ,gobject-introspection)
-       ("gtk+:bin" ,gtk+ "bin")
-       ("pkg-config" ,pkg-config)
-       ("python" ,python-wrapper)
-       ("qttools-5" ,qttools-5)))
+     (let ((external-sources
+            `(("cmake-helpers"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/cmake_helpers")
+                        (commit "0702ef4cdd8ab888fdadaa4f5b2eb0c9d5844b69")))
+                  (file-name
+                   (git-file-name "cmake-helpers-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "16lsm3pb8md4ksr2ps3bnkvr0jygdamkxyirxgz214n6wa281zk1")))))))
+       (modify-inputs external-sources
+         (append clang-toolchain ninja pkg-config python-wrapper))))
     (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 "248614b49cd7d5aff69d75a737f2e35b79fbb119")))
-           (file-name
-            (git-file-name "codegen" version))
-           (sha256
-            (base32 "00f7g2z6xmkbkrmi3q27hscjl44mg66wf9q0mz3rhy3jaa6cfdrk"))))
-       ("expected" ,libexpected)
-       ("fcitx-qt5" ,fcitx-qt5)
-       ("fcitx5-qt" ,fcitx5-qt)
-       ("ffmpeg" ,ffmpeg)
-       ("glib" ,glib)
-       ("glibmm" ,glibmm-2.64)
-       ("gtk+" ,gtk+)
-       ("hime" ,hime)
-       ("hunspell" ,hunspell)
-       ("jemalloc" ,jemalloc)
-       ("kwayland" ,kwayland)
-       ("lib-base-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/desktop-app/lib_base.git")
-             (commit "a23c05c44e4f01dc4428f4d75d4db98c59d313a6")))
-           (file-name
-            (git-file-name "lib-base-for-telegram-desktop" version))
-           (sha256
-            (base32 "0vh5zgxwalmbnvz8lzlnba87ch8vnpmcz6nvf56w09f3nlxvvq78"))))
-       ("lib-crl-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/desktop-app/lib_crl.git")
-             (commit "3ccf2ed5095442e5874bba8852cb7dc4efeae29f")))
-           (file-name
-            (git-file-name "lib-crl-for-telegram-desktop" version))
-           (sha256
-            (base32 "11my7q54m4lvvlgma6pbdyjxi1cv1adk1gph2j50mh18sqlm8myz"))))
-       ("lib-lottie-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/desktop-app/lib_lottie.git")
-             (commit "0770df009db7928df1d0cad0900dc5110106d229")))
-           (file-name
-            (git-file-name "lib-lottie-for-telegram-desktop" version))
-           (sha256
-            (base32 "1gj56ymlbk5dnk82jw674808m511lv9dky8891a5wm4gp3pph5jb"))))
-       ("lib-qr-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/desktop-app/lib_qr.git")
-             (commit "2b08c71c6edcfc3e31f7d7f518cc963493b6e189")))
-           (file-name
-            (git-file-name "lib-qr-for-telegram-desktop" version))
-           (sha256
-            (base32 "05hrkmwgrczyjv87r507i2r7m1zr6k2i43mq3my0s6j4szr1rjq0"))))
-       ("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 "df721be3fa14a27dfc230d2e3c42bb1a7c9d0617")))
-           (file-name
-            (git-file-name "lib-rpl-for-telegram-desktop" version))
-           (sha256
-            (base32 "15fnv3ssn7rn5d0j52gggdvyqc2wm464678dj7v2x9h8lka2jjxn"))))
-       ("lib-spellcheck-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/desktop-app/lib_spellcheck.git")
-             (commit "68c9b788958904aea7de79f986a0f82ec8c5b094")))
-           (file-name
-            (git-file-name "lib-spellcheck-for-telegram-desktop" version))
-           (sha256
-            (base32 "0d8s4wwk6fxf536mhzq2vb9qw3j0m8nqia7ylvvpsbc4kh09dadn"))))
-       ("lib-storage-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/desktop-app/lib_storage.git")
-             (commit "403df6c4a29562bd417c92d410e49819f5a48cc1")))
-           (file-name
-            (git-file-name "lib-storage-for-telegram-desktop" version))
-           (sha256
-            (base32 "1zxvzfrxbj4d395fzyb5pm9wn3n8jyimxx88cyqjcdd46sx4h7r5"))))
-       ("lib-tl-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/desktop-app/lib_tl.git")
-             (commit "45faed44e7f4d11fec79b7a70e4a35dc91ef3fdb")))
-           (file-name
-            (git-file-name "lib-tl-for-telegram-desktop" version))
-           (sha256
-            (base32 "0h43xvzklda02494d466jp52hl8c1kmav9f12dyld10dpf1w6c7m"))))
-       ("lib-ui-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/desktop-app/lib_ui.git")
-             (commit "1b590f9e16eb9571a039f072d6fea66c607e419f")))
-           (file-name
-            (git-file-name "lib-ui-for-telegram-desktop" version))
-           (sha256
-            (base32 "0ighyhfp29h9h8c7vr70pnhcv2xnsr9ln084pssn8hb5z4pmb62f"))))
-       ("lib-waylandshells-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/desktop-app/lib_waylandshells.git")
-             (commit "59b0ee55a68976d27f1bf7cec0e11d5939e185e7")))
-           (file-name
-            (git-file-name "lib-waylandshells-for-telegram-desktop" version))
-           (sha256
-            (base32 "0l2xrpc5mvvdlsj333pmkgfvn9wi1ijfdaaz8skfnw9icw52faaf"))))
-       ("lib-webrtc-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/desktop-app/lib_webrtc.git")
-             (commit "ef49f953f12b112008a094a719f40939aaf39db4")))
-           (file-name
-            (git-file-name "lib-webrtc-for-telegram-desktop" version))
-           (sha256
-            (base32 "15k4xs3462p3ddp5cn9im3nvdiaijmxir8wxsf5yrj70ghy26ibw"))))
-       ("lib-webview-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/desktop-app/lib_webview.git")
-             (commit "e06427c624515485774e2e2181d4afeb05ad5a67")))
-           (file-name
-            (git-file-name "lib-webview-for-telegram-desktop" version))
-           (sha256
-            (base32 "148z7xzfscynwwwqssdsd97npax6yn8zrd64xw8qzbwff2g2r7k4"))))
-       ("libdbusmenu-qt" ,libdbusmenu-qt)
-       ("libjpeg" ,libjpeg-turbo)
-       ("libtgvoip" ,libtgvoip-for-telegram-desktop)
-       ("lz4" ,lz4)
-       ("materialdecoration" ,materialdecoration)
-       ("minizip" ,minizip)
-       ("nimf" ,nimf)
-       ("openal" ,openal)
-       ("openssl" ,openssl)
-       ("opus" ,opus)
-       ("pulseaudio" ,pulseaudio)
-       ("qrcodegen" ,qrcodegen-cpp)
-       ("qt" ,qtbase-5)
-       ("qtsvg-5" ,qtsvg-5)
-       ("qt5ct" ,qt5ct)
-       ("qtimageformats" ,qtimageformats)
-       ("qtwayland" ,qtwayland)
-       ("range-v3" ,range-v3)
-       ("rlottie" ,rlottie-for-telegram-desktop)
-       ("rnnoise" ,rnnoise)
-       ("tgcalls-source"
-        ,(origin
-           (method git-fetch)
-           (uri
-            (git-reference
-             (url "https://github.com/TelegramMessenger/tgcalls.git")
-             (commit "81e97fa52e25b7775b62ce07bb653533d81e91b3")))
-           (file-name
-            (git-file-name "tgcalls-for-telegram-desktop" version))
-           (sha256
-            (base32 "0fvad87hyxli83xn19mgf8jjrrh6y6iaig14pckpbkg33vf4wqkj"))))
-       ("webrtc" ,webrtc-for-telegram-desktop)
-       ("x11" ,libx11)
-       ("xcb" ,libxcb)
-       ("xcb-keysyms" ,xcb-util-keysyms)
-       ("xxhash" ,xxhash)
-       ("zlib" ,zlib)))
-    (propagated-inputs
-     (list dconf))
+     (let ((external-sources
+            `(("codegen-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/codegen")
+                        (commit "8815d7aec9b901191d08445f29e2edd0aeba7b2c")))
+                  (file-name
+                   (git-file-name "codegen" version))
+                  (sha256
+                   (base32 "1ly958mjk25kfcpa174kvg134p9r751ixi275afj5kr57by9mbq2"))))
+              ("lib-base-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_base")
+                        (commit "37fab6b4da32c91bc5d049baad2e9ad51cfcd195")))
+                  (file-name
+                   (git-file-name "lib-base-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "1b2zc0ag5w46vwjz2240yj9aniyv09yjyrwif32994drfq6l10k5"))
+                  (patches
+                   (search-patches "lib-base-for-telegram-desktop-support-musl.patch"))))
+              ("lib-crl-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_crl")
+                        (commit "4e620bc383d032aadea8e6af02661f8c76695cec")))
+                  (file-name
+                   (git-file-name "lib-crl-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "17bngj247qwq0dg4h37xdi5v1mk22y4yp7sp6ph3irmnz4awah0x"))))
+              ("lib-lottie-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_lottie")
+                        (commit "f3563bc6b0e042095d4d667d013f62cb8ae62b65")))
+                  (file-name
+                   (git-file-name "lib-lottie-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "0i0w6lcrmqln7axnlazcqkaj4z0lzn0gl3z59hng40ard76cgvsg"))))
+              ("lib-qr-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_qr")
+                        (commit "501f4c3502fd872ab4d777df8911bdac32de7c48")))
+                  (file-name
+                   (git-file-name "lib-qr-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "0hmwqj7a9vcy8wq7pd1qprl68im3zl5f1wzcn2zzk2wvi0389k9f"))))
+              ("lib-rpl-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_rpl")
+                        (commit "fd31f5bf382d2679eccdb1abaf8240a56c6a7abe")))
+                  (file-name
+                   (git-file-name "lib-rpl-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "1fpq8nyh8wx6zkb3sjjrx9ydqzyhw4483bdk1i9blp0ijn9xxdxf"))))
+              ("lib-spellcheck-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_spellcheck")
+                        (commit "b2f2b7b6bce60bc1c6429a6b5ec4bc5891baa060")))
+                  (file-name
+                   (git-file-name "lib-spellcheck-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "1v8xdbwza457wmjkfmpys46g5g1aw7yabjab6knxd4p4vhyjhbwh"))))
+              ("lib-storage-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_storage")
+                        (commit "839609369d04615475cb1518636de3619106a917")))
+                  (file-name
+                   (git-file-name "lib-storage-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "1l26h2fmqp9dcpr6pfvdd5sjb68j7yh0ms2lnr8na7jf5xqmkwwm"))))
+              ("lib-tl-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_tl")
+                        (commit "0d234b5aabf43d598e0cb0867566ee570d9e2755")))
+                  (file-name
+                   (git-file-name "lib-tl-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "1wc8d94h4ga36yl9g8h67j914xwpwv7rmkrrvvslgbgxb7sxcd96"))))
+              ("lib-ui-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_ui")
+                        (commit "2f5d5e0e79bf52ab04047bc93a4b624d6d33d46a")))
+                  (file-name
+                   (git-file-name "lib-ui-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "09kmc1igh37wafngwk6raqx2wrlxg10lf9p72j84sxs05hbybfcn"))))
+              ("lib-waylandshells-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_waylandshells")
+                        (commit "271290b93c65b6fb634cb9c69bff97f51b74f3a7")))
+                  (file-name
+                   (git-file-name "lib-waylandshells-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "02d966kbpqf029wwma17vicmc8n5iaksibaq6d81jmh770p2vsc9"))))
+              ("lib-webrtc-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_webrtc")
+                        (commit "9b11599c3c56047cfa4c68b69f1fcc93b602c33a")))
+                  (file-name
+                   (git-file-name "lib-webrtc-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "0158jx8hj4fv6qpw5pgcr2mdlihj0dxs060dg3iy61zz6q68z5dq"))))
+              ("lib-webview-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/lib_webview")
+                        (commit "546df65eb2424550ed84ce14fc9c5d1bb3586f35")))
+                  (file-name
+                   (git-file-name "lib-webview-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "0zzjwyw82bggncmmsw969lnjl04pklmqjqm77jjzadinivl52z0l"))))
+              ("tgcalls-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/TelegramMessenger/tgcalls")
+                        (commit "82c4921045c440b727c38e464f3a0539708423ff")))
+                  (file-name
+                   (git-file-name "tgcalls-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "1109r17abh66yz91b65fn2g4ryfybnsr5g6075sjhbah1gccv9mk"))))
+              ("libtgvoip-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/telegramdesktop/libtgvoip")
+                        (commit "78a8e22bedb0d06004da8bafeba88b7474cb89a4")))
+                  (file-name
+                   (git-file-name "libtgvoip-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "1y1jvm4i0i4fkl6c0bgcv2cpzziyyn1pywxqz726q008hwki941h"))))
+              ("dispatch-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/apple/swift-corelibs-libdispatch")
+                        (commit "ecc678d79f38cf63d24b6d16e18f69a9117d8d73")))
+                  (file-name
+                   (git-file-name "dispatch-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "0hy4q6x3bgphazmpl3v62995abc9fpi8y7yg9aiblzsqkxmgjmqn"))))
+              ("fcitx-qt5-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/fcitx/fcitx-qt5")
+                        (commit "c2feea444ab79e6a8d6d205d4c7b13ab1db353c9")))
+                  (file-name
+                   (git-file-name "fcitx-qt5-for-telegram-desktop" version))
+                  (sha256
+                   (base32
+                    "1y10n2l0rbzpvsryw0mikyv9hic8wxd8gwr0ax37niwjbkil2zv8"))))
+              ("fcitx5-qt-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/fcitx/fcitx5-qt")
+                        (commit "fd06094f48e8281b6dc3fd4aaadfcd216c426a5a")))
+                  (file-name
+                   (git-file-name "fcitx5-qt-for-telegram-desktop" version))
+                  (sha256
+                   (base32
+                    "15mhcv3m39fi375ccd05hr8va4js9lkj0vllypnq90v43fcvawr1"))))
+              ("hime-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/hime-ime/hime")
+                        (commit "9b3e6f9ab59d1fe4d9de73d3bf0fed7789f921c5")))
+                  (file-name
+                   (git-file-name "hime-for-telegram-desktop" version))
+                  (sha256
+                   (base32
+                    "1b98ql30ihbqz1zwlm0c3c1qmxp3gdz96wsic3h6ypqcr3xyj28f"))))
+              ("nimf-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/hamonikr/nimf")
+                        (commit "181f9467fc1883c228fc272330ab2f000bfae163")))
+                  (file-name
+                   (git-file-name "nimf-for-telegram-desktop" version))
+                  (sha256
+                   (base32
+                    "0kk430bx3w9n8c1d42ng5gicx44gi9bsjd60n2927wdpm6jxm2yl"))))
+              ("rlottie-source"
+               ,(origin
+                  (method git-fetch)
+                  (uri (git-reference
+                        (url "https://github.com/desktop-app/rlottie")
+                        (commit "8c69fc20cf2e150db304311f1233a4b55a8892d7")))
+                  (file-name
+                   (git-file-name "rlottie-for-telegram-desktop" version))
+                  (sha256
+                   (base32 "14gwg3sn6xdx9ymnx5r0vfm4pk8dwk92s10a1wdvfbjpyrxll64i")))))))
+       (modify-inputs external-sources
+         (append c++-gsl                ;Required
+                 jemalloc
+                 libexpected
+                 minizip
+                 openal
+                 qrcodegen-cpp
+                 qt5compat
+                 qtbase
+                 qtimageformats
+                 qtsvg-5
+                 range-v3
+                 rnnoise
+                 webrtc-for-telegram-desktop
+                 xxhash
+                 zlib
+                 ;; Has options
+                 fcitx-qt5            ;DESKTOP_APP_USE_PACKAGED_LAZY
+                 fcitx5-qt
+                 hime
+                 nimf
+                 glibmm-2.64          ;DESKTOP_APP_DISABLE_DBUS_INTEGRATION
+                 enchant              ;DESKTOP_APP_USE_ENCHANT
+                 hunspell             ;DESKTOP_APP_DISABLE_SPELLCHECK
+                 lz4                  ;DESKTOP_APP_LOTTIE_USE_CACHE
+                 alsa-lib             ;LIBTGVOIP_DISABLE_ALSA
+                 pulseaudio           ;LIBTGVOIP_DISABLE_PULSEAUDIO
+                 qtwayland            ;DESKTOP_APP_DISABLE_WAYLAND_INTEGRATION
+                 wayland
+                 libxcb               ;DESKTOP_APP_DISABLE_X11_INTEGRATION
+                 xcb-util-keysyms
+                 ;; Optional
+                 webkitgtk))))
     (synopsis "Telegram Desktop")
     (description "Telegram desktop is the official desktop version of the
 Telegram instant messenger.")
     (home-page "https://desktop.telegram.org/")
-    (license
-     (list
-      ;; ThirdParty
-      license:lgpl2.1+
-      ;; Others
-      license:gpl3+))))
+    (license (list
+              ;; Telegram/ThirdParty/dispatch
+              license:asl2.0
+
+              ;; Telegram/ThirdParty/fcitx-qt5 (platform input context plugin)
+              ;; Telegram/ThirdParty/fcitx5-qt (Fcitx5Qt4DBusAddons library
+              ;; and input context plugin, Fcitx5Qt5DBusAddons library and Qt5
+              ;; platform input context plugin)
+              license:bsd-3
+
+              ;; Telegram/ThirdParty/rlottie/src/vector/pixman
+              ;; Telegram/ThirdParty/rlottie/src/vector/stb
+              ;; Telegram/ThirdParty/rlottie/src/vector/rapidjson
+              license:expat
+
+              ;; Telegram/ThirdParty/rlottie/src/vector/freetype
+              license:freetype
+
+              ;; Telegram/ThirdParty/hime (files not mentioned below)
+              license:lgpl2.1
+
+              ;; Telegram/ThirdParty/fcitx5-qt (files not mentioned above)
+              ;; Telegram/ThirdParty/rlottie
+              ;; Telegram/ThirdParty/rlottie/src/vector
+              license:lgpl2.1+
+
+              ;; Telegram/ThirdParty/nimf
+              ;; Telegram/ThirdParty/tgcalls
+              license:lgpl3
+
+              ;; Telegram/ThirdParty/fcitx-qt5 (files not mentioned above)
+              ;; Telegram/ThirdParty/hime (Qt immodules)
+              license:gpl2
+
+              ;; Others
+              license:gpl3+))))

 (define-public tl-parser
   (let ((commit "1933e76f8f4fb74311be723b432e4c56e3a5ec06")