Commit | Line | Data |
---|---|---|
a84399ed RG |
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name> | |
3 | ;;; | |
4 | ;;; This file is part of GNU Guix. | |
5 | ;;; | |
6 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
7 | ;;; under the terms of the GNU General Public License as published by | |
8 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
9 | ;;; your option) any later version. | |
10 | ;;; | |
11 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
12 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | ;;; GNU General Public License for more details. | |
15 | ;;; | |
16 | ;;; You should have received a copy of the GNU General Public License | |
17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
18 | ||
19 | (define-module (gnu packages telegram) | |
20 | #:use-module (gnu packages) | |
edfbb1d2 | 21 | #:use-module (gnu packages aidc) |
cda5fb48 | 22 | #:use-module (gnu packages animation) |
a84399ed | 23 | #:use-module (gnu packages assembly) |
edfbb1d2 | 24 | #:use-module (gnu packages audio) |
27fa4844 | 25 | #:use-module (gnu packages autotools) |
cda5fb48 | 26 | #:use-module (gnu packages check) |
edfbb1d2 RG |
27 | #:use-module (gnu packages cmake) |
28 | #:use-module (gnu packages compression) | |
29 | #:use-module (gnu packages cpp) | |
30 | #:use-module (gnu packages digest) | |
31 | #:use-module (gnu packages fcitx) | |
32 | #:use-module (gnu packages fcitx5) | |
adc3b7d3 HC |
33 | #:use-module (gnu packages freedesktop) |
34 | #:use-module (gnu packages gl) | |
edfbb1d2 RG |
35 | #:use-module (gnu packages glib) |
36 | #:use-module (gnu packages gnome) | |
d1e7a01c | 37 | #:use-module (gnu packages gnupg) |
edfbb1d2 | 38 | #:use-module (gnu packages gtk) |
a84399ed | 39 | #:use-module (gnu packages image) |
43b9419b | 40 | #:use-module (gnu packages jemalloc) |
edfbb1d2 RG |
41 | #:use-module (gnu packages kde-frameworks) |
42 | #:use-module (gnu packages language) | |
d1e7a01c | 43 | #:use-module (gnu packages libevent) |
edfbb1d2 | 44 | #:use-module (gnu packages libreoffice) |
a84399ed | 45 | #:use-module (gnu packages linux) |
edfbb1d2 | 46 | #:use-module (gnu packages lxqt) |
86f461d6 RG |
47 | #:use-module (gnu packages lua) |
48 | #:use-module (gnu packages perl) | |
a84399ed RG |
49 | #:use-module (gnu packages pkg-config) |
50 | #:use-module (gnu packages protobuf) | |
51 | #:use-module (gnu packages pulseaudio) | |
52 | #:use-module (gnu packages python) | |
49d8f954 RG |
53 | #:use-module (gnu packages python-check) |
54 | #:use-module (gnu packages python-web) | |
55 | #:use-module (gnu packages python-xyz) | |
edfbb1d2 | 56 | #:use-module (gnu packages qt) |
86f461d6 RG |
57 | #:use-module (gnu packages readline) |
58 | #:use-module (gnu packages textutils) | |
27fa4844 | 59 | #:use-module (gnu packages telephony) |
a84399ed RG |
60 | #:use-module (gnu packages tls) |
61 | #:use-module (gnu packages video) | |
86f461d6 | 62 | #:use-module (gnu packages web) |
adc3b7d3 | 63 | #:use-module (gnu packages xdisorg) |
a84399ed | 64 | #:use-module (gnu packages xiph) |
edfbb1d2 | 65 | #:use-module (gnu packages xorg) |
a84399ed RG |
66 | #:use-module ((guix licenses) #:prefix license:) |
67 | #:use-module (guix packages) | |
e76c93a5 | 68 | #:use-module (guix gexp) |
a84399ed | 69 | #:use-module (guix git-download) |
cda5fb48 | 70 | #:use-module (guix build-system cmake) |
8b4e8933 | 71 | #:use-module (guix build-system copy) |
edfbb1d2 | 72 | #:use-module (guix build-system glib-or-gtk) |
27fa4844 | 73 | #:use-module (guix build-system gnu) |
edfbb1d2 | 74 | #:use-module (guix build-system meson) |
49d8f954 | 75 | #:use-module (guix build-system python) |
edfbb1d2 | 76 | #:use-module (guix build-system qt)) |
a84399ed | 77 | |
a7164abc HC |
78 | (define %telegram-version "2.9.3") |
79 | ||
e76c93a5 HC |
80 | (define libvpx-for-telegram-desktop |
81 | (let ((commit "5b63f0f821e94f8072eb483014cfc33b05978bb9") | |
82 | (revision "112")) | |
83 | (origin | |
84 | (method git-fetch) | |
85 | (uri (git-reference | |
86 | (url "https://chromium.googlesource.com/webm/libvpx") | |
87 | (commit commit))) | |
88 | (file-name (git-file-name | |
89 | "libvpx-for-telegram-desktop" | |
90 | (git-version "1.9.0" revision commit))) | |
91 | (sha256 | |
92 | (base32 | |
93 | "1psvxaddihlw1k5n0anxif3qli6zyw2sa2ywn6mkb8six9myrp68"))))) | |
94 | ||
95 | (define libyuv-for-telegram-desktop | |
96 | (let ((commit "ad890067f661dc747a975bc55ba3767fe30d4452") | |
97 | (revision "2211")) | |
98 | (origin | |
99 | (method git-fetch) | |
100 | (uri (git-reference | |
101 | (url "https://chromium.googlesource.com/libyuv/libyuv") | |
102 | (commit commit))) | |
103 | (file-name (git-file-name | |
104 | "libyuv-for-telegram-desktop" | |
105 | (git-version "0" revision commit))) | |
106 | (sha256 | |
107 | (base32 | |
108 | "01knnk4h247rq536097n9n3s3brxlbby3nv3ppdgsqfda3k159ll"))))) | |
109 | ||
a7164abc HC |
110 | (define cmake-helpers-for-telegram-desktop |
111 | (origin | |
112 | (method git-fetch) | |
113 | (uri (git-reference | |
114 | (url "https://github.com/desktop-app/cmake_helpers.git") | |
115 | (commit "4d44d822e01b3b5fbec3ce824e01f56aa35d7f72"))) | |
116 | (file-name | |
117 | (git-file-name "cmake-helpers-for-telegram-desktop" %telegram-version)) | |
118 | (sha256 | |
119 | (base32 | |
120 | "0h6cjiqy014h2mz90h1z5a7plb3ihbnds4bja8994ybr1dy3m7m5")))) | |
121 | ||
122 | (define codegen-for-telegram-desktop | |
123 | (origin | |
124 | (method git-fetch) | |
125 | (uri (git-reference | |
126 | (url "https://github.com/desktop-app/codegen.git") | |
127 | (commit "248614b49cd7d5aff69d75a737f2e35b79fbb119"))) | |
128 | (file-name | |
129 | (git-file-name "codegen-for-telegram-desktop" %telegram-version)) | |
130 | (sha256 | |
131 | (base32 | |
132 | "00f7g2z6xmkbkrmi3q27hscjl44mg66wf9q0mz3rhy3jaa6cfdrk")))) | |
133 | ||
134 | (define lib-base-for-telegram-desktop | |
135 | (origin | |
136 | (method git-fetch) | |
137 | (uri (git-reference | |
138 | (url "https://github.com/desktop-app/lib_base.git") | |
139 | (commit "a23c05c44e4f01dc4428f4d75d4db98c59d313a6"))) | |
140 | (file-name | |
141 | (git-file-name "lib-base-for-telegram-desktop" %telegram-version)) | |
142 | (sha256 | |
143 | (base32 | |
144 | "0vh5zgxwalmbnvz8lzlnba87ch8vnpmcz6nvf56w09f3nlxvvq78")))) | |
145 | ||
146 | (define lib-crl-for-telegram-desktop | |
147 | (origin | |
148 | (method git-fetch) | |
149 | (uri (git-reference | |
150 | (url "https://github.com/desktop-app/lib_crl.git") | |
151 | (commit "3ccf2ed5095442e5874bba8852cb7dc4efeae29f"))) | |
152 | (file-name | |
153 | (git-file-name "lib-crl-for-telegram-desktop" %telegram-version)) | |
154 | (sha256 | |
155 | (base32 | |
156 | "11my7q54m4lvvlgma6pbdyjxi1cv1adk1gph2j50mh18sqlm8myz")))) | |
157 | ||
158 | (define lib-lottie-for-telegram-desktop | |
159 | (origin | |
160 | (method git-fetch) | |
161 | (uri (git-reference | |
162 | (url "https://github.com/desktop-app/lib_lottie.git") | |
163 | (commit "0770df009db7928df1d0cad0900dc5110106d229"))) | |
164 | (file-name | |
165 | (git-file-name "lib-lottie-for-telegram-desktop" %telegram-version)) | |
166 | (sha256 | |
167 | (base32 | |
168 | "1gj56ymlbk5dnk82jw674808m511lv9dky8891a5wm4gp3pph5jb")))) | |
169 | ||
170 | (define lib-qr-for-telegram-desktop | |
171 | (origin | |
172 | (method git-fetch) | |
173 | (uri (git-reference | |
174 | (url "https://github.com/desktop-app/lib_qr.git") | |
175 | (commit "2b08c71c6edcfc3e31f7d7f518cc963493b6e189"))) | |
176 | (file-name | |
177 | (git-file-name "lib-qr-for-telegram-desktop" %telegram-version)) | |
178 | (sha256 | |
179 | (base32 | |
180 | "05hrkmwgrczyjv87r507i2r7m1zr6k2i43mq3my0s6j4szr1rjq0")))) | |
181 | ||
182 | (define lib-rlottie-for-telegram-desktop | |
183 | (origin | |
184 | (method git-fetch) | |
185 | (uri (git-reference | |
186 | (url "https://github.com/desktop-app/lib_rlottie.git") | |
187 | (commit "0671bf70547381effcf442ec9618e04502a8adbc"))) | |
188 | (file-name | |
189 | (git-file-name "lib-rlottie-for-telegram-desktop" %telegram-version)) | |
190 | (sha256 | |
191 | (base32 | |
192 | "05qnza7j15356s8jq16pkbyp4zr586lssmd86lz5jq23lcb3raxv")))) | |
193 | ||
194 | (define lib-rpl-for-telegram-desktop | |
195 | (origin | |
196 | (method git-fetch) | |
197 | (uri (git-reference | |
198 | (url "https://github.com/desktop-app/lib_rpl.git") | |
199 | (commit "df721be3fa14a27dfc230d2e3c42bb1a7c9d0617"))) | |
200 | (file-name | |
201 | (git-file-name "lib-rpl-for-telegram-desktop" %telegram-version)) | |
202 | (sha256 | |
203 | (base32 | |
204 | "15fnv3ssn7rn5d0j52gggdvyqc2wm464678dj7v2x9h8lka2jjxn")))) | |
205 | ||
206 | (define lib-spellcheck-for-telegram-desktop | |
207 | (origin | |
208 | (method git-fetch) | |
209 | (uri (git-reference | |
210 | (url "https://github.com/desktop-app/lib_spellcheck.git") | |
211 | (commit "68c9b788958904aea7de79f986a0f82ec8c5b094"))) | |
212 | (file-name | |
213 | (git-file-name "lib-spellcheck-for-telegram-desktop" %telegram-version)) | |
214 | (sha256 | |
215 | (base32 | |
216 | "0d8s4wwk6fxf536mhzq2vb9qw3j0m8nqia7ylvvpsbc4kh09dadn")))) | |
217 | ||
218 | (define lib-storage-for-telegram-desktop | |
219 | (origin | |
220 | (method git-fetch) | |
221 | (uri (git-reference | |
222 | (url "https://github.com/desktop-app/lib_storage.git") | |
223 | (commit "403df6c4a29562bd417c92d410e49819f5a48cc1"))) | |
224 | (file-name | |
225 | (git-file-name "lib-storage-for-telegram-desktop" %telegram-version)) | |
226 | (sha256 | |
227 | (base32 | |
228 | "1zxvzfrxbj4d395fzyb5pm9wn3n8jyimxx88cyqjcdd46sx4h7r5")))) | |
229 | ||
230 | (define lib-tl-for-telegram-desktop | |
231 | (origin | |
232 | (method git-fetch) | |
233 | (uri (git-reference | |
234 | (url "https://github.com/desktop-app/lib_tl.git") | |
235 | (commit "45faed44e7f4d11fec79b7a70e4a35dc91ef3fdb"))) | |
236 | (file-name | |
237 | (git-file-name "lib-tl-for-telegram-desktop" %telegram-version)) | |
238 | (sha256 | |
239 | (base32 | |
240 | "0h43xvzklda02494d466jp52hl8c1kmav9f12dyld10dpf1w6c7m")))) | |
241 | ||
242 | (define lib-ui-for-telegram-desktop | |
243 | (origin | |
244 | (method git-fetch) | |
245 | (uri (git-reference | |
246 | (url "https://github.com/desktop-app/lib_ui.git") | |
247 | (commit "1b590f9e16eb9571a039f072d6fea66c607e419f"))) | |
248 | (file-name | |
249 | (git-file-name "lib-ui-for-telegram-desktop" %telegram-version)) | |
250 | (sha256 | |
251 | (base32 | |
252 | "0ighyhfp29h9h8c7vr70pnhcv2xnsr9ln084pssn8hb5z4pmb62f")))) | |
253 | ||
254 | (define lib-waylandshells-for-telegram-desktop | |
255 | (origin | |
256 | (method git-fetch) | |
257 | (uri (git-reference | |
258 | (url "https://github.com/desktop-app/lib_waylandshells.git") | |
259 | (commit "59b0ee55a68976d27f1bf7cec0e11d5939e185e7"))) | |
260 | (file-name | |
261 | (git-file-name "lib-waylandshells-for-telegram-desktop" %telegram-version)) | |
262 | (sha256 | |
263 | (base32 | |
264 | "0l2xrpc5mvvdlsj333pmkgfvn9wi1ijfdaaz8skfnw9icw52faaf")))) | |
265 | ||
266 | (define lib-webrtc-for-telegram-desktop | |
267 | (origin | |
268 | (method git-fetch) | |
269 | (uri (git-reference | |
270 | (url "https://github.com/desktop-app/lib_webrtc.git") | |
271 | (commit "ef49f953f12b112008a094a719f40939aaf39db4"))) | |
272 | (file-name | |
273 | (git-file-name "lib-webrtc-for-telegram-desktop" %telegram-version)) | |
274 | (sha256 | |
275 | (base32 | |
276 | "15k4xs3462p3ddp5cn9im3nvdiaijmxir8wxsf5yrj70ghy26ibw")))) | |
277 | ||
278 | (define lib-webview-for-telegram-desktop | |
279 | (origin | |
280 | (method git-fetch) | |
281 | (uri (git-reference | |
282 | (url "https://github.com/desktop-app/lib_webview.git") | |
283 | (commit "e06427c624515485774e2e2181d4afeb05ad5a67"))) | |
284 | (file-name | |
285 | (git-file-name "lib-webview-for-telegram-desktop" %telegram-version)) | |
286 | (sha256 | |
287 | (base32 | |
288 | "148z7xzfscynwwwqssdsd97npax6yn8zrd64xw8qzbwff2g2r7k4")))) | |
289 | ||
290 | (define tgcalls-for-telegram-desktop | |
291 | (origin | |
292 | (method git-fetch) | |
293 | (uri (git-reference | |
294 | (url "https://github.com/TelegramMessenger/tgcalls.git") | |
295 | (commit "81e97fa52e25b7775b62ce07bb653533d81e91b3"))) | |
296 | (file-name | |
297 | (git-file-name "tgcalls-for-telegram-desktop" %telegram-version)) | |
298 | (sha256 | |
299 | (base32 | |
300 | "0fvad87hyxli83xn19mgf8jjrrh6y6iaig14pckpbkg33vf4wqkj")))) | |
301 | ||
a84399ed | 302 | (define-public webrtc-for-telegram-desktop |
adc3b7d3 HC |
303 | (let ((commit "621f3da55331733bf0d1b223786b96b68c03dca1") |
304 | (revision "327")) | |
a84399ed RG |
305 | (hidden-package |
306 | (package | |
307 | (name "webrtc-for-telegram-desktop") | |
308 | (version | |
309 | (git-version "0" revision commit)) | |
310 | (source | |
311 | (origin | |
312 | (method git-fetch) | |
313 | (uri | |
314 | (git-reference | |
315 | (url "https://github.com/desktop-app/tg_owt.git") | |
316 | (commit commit))) | |
317 | (file-name | |
318 | (git-file-name name version)) | |
319 | (sha256 | |
adc3b7d3 HC |
320 | (base32 "1ks1572k1jj7pmzwm79p2gdgi31dd4bs761bphnx32zyq4c6skxk")) |
321 | (patches | |
322 | (search-patches | |
323 | ;; https://github.com/desktop-app/tg_owt/pull/101 | |
324 | "webrtc-for-telegram-desktop-fix-gcc12-cstdint.patch")) | |
a84399ed RG |
325 | (modules '((guix build utils) |
326 | (ice-9 ftw) | |
327 | (srfi srfi-1))) | |
328 | (snippet | |
e76c93a5 HC |
329 | #~(begin |
330 | (let ((keep | |
adc3b7d3 | 331 | '("abseil-cpp" "libsrtp" "rnnoise" |
e76c93a5 | 332 | ;; Not available in Guix. |
adc3b7d3 | 333 | "pffft"))) |
e76c93a5 HC |
334 | (with-directory-excursion "src/third_party" |
335 | (for-each delete-file-recursively | |
336 | (lset-difference string=? | |
337 | (scandir ".") | |
adc3b7d3 HC |
338 | (cons* "." ".." keep))))) |
339 | ;; Unbundle openh264. | |
340 | (substitute* "CMakeLists.txt" | |
341 | (("\\include\\(cmake\\/libopenh264\\.cmake\\)")"")))))) | |
a84399ed RG |
342 | (build-system cmake-build-system) |
343 | (arguments | |
e76c93a5 HC |
344 | (list |
345 | #:tests? #f ; No target | |
e76c93a5 HC |
346 | #:phases |
347 | #~(modify-phases %standard-phases | |
adc3b7d3 | 348 | (add-after 'unpack 'unpack-additional-sources |
e76c93a5 HC |
349 | (lambda _ |
350 | (let* ((third-party (string-append (getcwd) "/src/third_party")) | |
adc3b7d3 | 351 | (crc32c-to (string-append third-party "/crc32c/src")) |
e76c93a5 | 352 | (libyuv-to (string-append third-party "/libyuv"))) |
adc3b7d3 | 353 | (copy-recursively #$(package-source crc32c) crc32c-to) |
e76c93a5 HC |
354 | (copy-recursively #$libyuv-for-telegram-desktop |
355 | libyuv-to))))))) | |
adc3b7d3 | 356 | (native-inputs (list pkg-config python-wrapper yasm)) |
a84399ed | 357 | (inputs |
adc3b7d3 | 358 | (list abseil-cpp-cxxstd17 |
e76c93a5 HC |
359 | ffmpeg |
360 | libjpeg-turbo | |
361 | glib | |
adc3b7d3 HC |
362 | libdrm |
363 | libglvnd | |
364 | libvpx | |
e76c93a5 HC |
365 | libxcomposite |
366 | libxdamage | |
367 | libxrender | |
368 | libxrandr | |
adc3b7d3 HC |
369 | libxfixes |
370 | mesa | |
371 | openh264 | |
e76c93a5 HC |
372 | openssl |
373 | opus | |
adc3b7d3 | 374 | pipewire-0.3 |
e76c93a5 | 375 | protobuf |
e76c93a5 HC |
376 | libxext |
377 | libxtst)) | |
a84399ed RG |
378 | (synopsis "WebRTC support for Telegram Desktop") |
379 | (description "WebRTC-for-Telegram-Desktop is a custom WebRTC fork by | |
380 | Telegram project, for its use in telegram desktop client.") | |
381 | (home-page "https://github.com/desktop-app/tg_owt") | |
382 | (license | |
383 | (list | |
384 | ;; Abseil-CPP | |
385 | license:asl2.0 | |
386 | ;; LibYuv | |
387 | (license:non-copyleft "file:///src/third_party/libyuv/LICENSE") | |
a84399ed RG |
388 | ;; PFFFT |
389 | (license:non-copyleft "file:///src/third_party/pffft/LICENSE") | |
390 | ;; RnNoise | |
391 | license:gpl3 | |
adc3b7d3 | 392 | ;; LibSRTP, Crc32c and Others |
a84399ed | 393 | license:bsd-3)))))) |
cda5fb48 RG |
394 | |
395 | (define-public rlottie-for-telegram-desktop | |
396 | (let ((commit "cbd43984ebdf783e94c8303c41385bf82aa36d5b") | |
397 | (revision "671")) | |
398 | (hidden-package | |
399 | (package | |
400 | (inherit rlottie) | |
401 | (version | |
402 | (git-version "0.0.1" revision commit)) | |
403 | (source | |
404 | (origin | |
405 | (method git-fetch) | |
406 | (uri | |
407 | (git-reference | |
408 | (url "https://github.com/desktop-app/rlottie.git") | |
409 | (commit commit))) | |
410 | (file-name | |
411 | (git-file-name "rlottie-for-telegram-desktop" version)) | |
412 | (sha256 | |
413 | (base32 "1lxpbgbhps9rmck036mgmiknqrzpjxpas8n7qxykv6pwzn0c8n0c")))) | |
414 | (arguments | |
415 | `(#:configure-flags | |
416 | (list | |
417 | "-Dlog=true" | |
418 | "-Ddumptree=true" | |
419 | "-Dtest=true") | |
420 | #:phases | |
421 | (modify-phases %standard-phases | |
422 | (add-after 'unpack 'patch-cxx-flags | |
423 | (lambda _ | |
424 | (substitute* "meson.build" | |
425 | (("werror=true") | |
426 | "werror=false")) | |
427 | #t))))))))) | |
27fa4844 RG |
428 | |
429 | (define-public libtgvoip-for-telegram-desktop | |
b89b5ff3 RG |
430 | (let ((commit "13a5fcb16b04472d808ce122abd695dbf5d206cd") |
431 | (revision "88")) | |
27fa4844 RG |
432 | (hidden-package |
433 | (package | |
434 | (inherit libtgvoip) | |
435 | (version | |
436 | (git-version "2.4.4" revision commit)) | |
437 | (source | |
438 | (origin | |
439 | (method git-fetch) | |
440 | (uri | |
441 | (git-reference | |
442 | (url "https://github.com/telegramdesktop/libtgvoip.git") | |
443 | (commit commit))) | |
444 | (file-name | |
445 | (git-file-name "libtgvoip-for-telegram-desktop" version)) | |
446 | (sha256 | |
b89b5ff3 | 447 | (base32 "12p6s7vxkf1gh1spdckkdxrx7bjzw881ds9bky7l5fw751cwb3xd")))) |
27fa4844 RG |
448 | (arguments |
449 | `(#:configure-flags | |
450 | (list | |
451 | "--disable-static" | |
452 | "--disable-dsp" ; FIXME | |
453 | "--enable-audio-callback" | |
454 | "--with-alsa" | |
455 | "--with-pulse") | |
456 | #:phases | |
457 | (modify-phases %standard-phases | |
458 | (add-after 'unpack 'patch-linkers | |
459 | (lambda _ | |
460 | (substitute* "Makefile.am" | |
461 | (("\\$\\(CRYPTO_LIBS\\) \\$\\(OPUS_LIBS\\)") | |
462 | "$(CRYPTO_LIBS) $(OPUS_LIBS) $(ALSA_LIBS) $(PULSE_LIBS)")) | |
463 | (substitute* "tgvoip.pc.in" | |
464 | (("libcrypto opus") | |
465 | "libcrypto opus alsa libpulse")) | |
466 | #t))))) | |
467 | (native-inputs | |
8394619b | 468 | (list autoconf automake libtool pkg-config)))))) |
edfbb1d2 RG |
469 | |
470 | (define-public telegram-desktop | |
471 | (package | |
472 | (name "telegram-desktop") | |
a7164abc | 473 | (version %telegram-version) |
edfbb1d2 RG |
474 | (source |
475 | (origin | |
476 | (method git-fetch) | |
477 | (uri | |
478 | (git-reference | |
479 | (url "https://github.com/telegramdesktop/tdesktop.git") | |
480 | (commit | |
481 | (string-append "v" version)))) | |
482 | (file-name | |
483 | (git-file-name name version)) | |
484 | (sha256 | |
43b9419b | 485 | (base32 "0dzf1y3xhqvizg29bd1kya48cjbkq073d2x10ynwcmmx396l4nd8")) |
edfbb1d2 RG |
486 | (modules '((guix build utils) |
487 | (ice-9 ftw) | |
488 | (srfi srfi-1))) | |
489 | (snippet | |
a7164abc HC |
490 | #~(begin |
491 | (let ((keep | |
492 | '( ;; Not available in Guix. | |
493 | "SPMediaKeyTap" "statusnotifieritem" "tgcalls"))) | |
494 | (with-directory-excursion "Telegram/ThirdParty" | |
495 | (for-each delete-file-recursively | |
496 | (lset-difference string=? | |
497 | (scandir ".") | |
498 | (cons* "." ".." keep))))))))) | |
edfbb1d2 RG |
499 | (build-system qt-build-system) |
500 | (arguments | |
a7164abc HC |
501 | (list #:tests? #f ; No target |
502 | #:imported-modules | |
503 | `(,@%qt-build-system-modules | |
504 | (guix build glib-or-gtk-build-system)) | |
505 | #:modules | |
506 | '((guix build qt-build-system) | |
507 | ((guix build glib-or-gtk-build-system) | |
508 | #:prefix glib-or-gtk:) | |
509 | (guix build utils) | |
510 | (ice-9 match)) | |
511 | #:configure-flags | |
512 | #~(list | |
513 | ;; Client applications must provide their own API-ID and API-HASH, | |
514 | ;; see also <https://core.telegram.org/api/obtaining_api_id>. | |
34440547 HC |
515 | ;; Here, we snarf the keys from the official Snaps, which are |
516 | ;; also stored in <#$source/snap/snapcraft.yaml>. | |
517 | "-DTDESKTOP_API_ID=611335" | |
518 | "-DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c" | |
a7164abc HC |
519 | ;; Disable WebkitGTK support as it fails to link |
520 | "-DDESKTOP_APP_DISABLE_WEBKITGTK=ON" | |
521 | ;; Use bundled fonts as fallback. | |
522 | "-DDESKTOP_APP_USE_PACKAGED_FONTS=OFF") | |
523 | #:phases | |
524 | #~(modify-phases %standard-phases | |
525 | (add-after 'unpack 'make-writable | |
526 | (lambda _ | |
527 | (for-each make-file-writable (find-files ".")))) | |
528 | (add-after 'make-writable 'copy-inputs | |
529 | (lambda _ | |
530 | (for-each | |
531 | (match-lambda | |
532 | ((dst src) | |
533 | (copy-recursively src dst) | |
534 | (for-each make-file-writable (find-files dst)))) | |
535 | '(("cmake" #$cmake-helpers-for-telegram-desktop) | |
536 | ("Telegram/codegen" #$codegen-for-telegram-desktop) | |
537 | ("Telegram/lib_base" #$lib-base-for-telegram-desktop) | |
538 | ("Telegram/lib_crl" #$lib-crl-for-telegram-desktop) | |
539 | ("Telegram/lib_lottie" #$lib-lottie-for-telegram-desktop) | |
540 | ("Telegram/lib_qr" #$lib-qr-for-telegram-desktop) | |
541 | ("Telegram/lib_rlottie" #$lib-rlottie-for-telegram-desktop) | |
542 | ("Telegram/lib_rpl" #$lib-rpl-for-telegram-desktop) | |
543 | ("Telegram/lib_spellcheck" #$lib-spellcheck-for-telegram-desktop) | |
544 | ("Telegram/lib_storage" #$lib-storage-for-telegram-desktop) | |
545 | ("Telegram/lib_tl" #$lib-tl-for-telegram-desktop) | |
546 | ("Telegram/lib_ui" #$lib-ui-for-telegram-desktop) | |
547 | ("Telegram/lib_waylandshells" #$lib-waylandshells-for-telegram-desktop) | |
548 | ("Telegram/lib_webrtc" #$lib-webrtc-for-telegram-desktop) | |
549 | ("Telegram/lib_webview" #$lib-webview-for-telegram-desktop) | |
550 | ("Telegram/ThirdParty/tgcalls" #$tgcalls-for-telegram-desktop))))) | |
551 | (add-before 'configure 'patch-cxx-flags | |
552 | (lambda _ | |
553 | (substitute* "cmake/options_linux.cmake" (("class-memaccess") "all")))) | |
554 | (add-after 'install 'glib-or-gtk-compile-schemas | |
555 | (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas)) | |
556 | (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap | |
557 | (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))))) | |
edfbb1d2 | 558 | (native-inputs |
a7164abc HC |
559 | (list cmake-shared |
560 | extra-cmake-modules | |
561 | `(,glib "bin") | |
562 | `(,gtk+ "bin") | |
563 | pkg-config | |
564 | python-wrapper | |
565 | qttools-5)) | |
edfbb1d2 | 566 | (inputs |
a7164abc HC |
567 | (list alsa-lib |
568 | c++-gsl | |
569 | catch2 | |
570 | libexpected | |
571 | fcitx-qt5 | |
572 | fcitx5-qt | |
573 | ffmpeg | |
574 | glib | |
575 | glibmm-2.64 | |
576 | gtk+ | |
577 | hime | |
578 | hunspell | |
579 | jemalloc | |
580 | kwayland | |
581 | libdbusmenu-qt | |
582 | libjpeg-turbo | |
583 | libtgvoip-for-telegram-desktop | |
584 | lz4 | |
585 | materialdecoration | |
586 | minizip | |
587 | nimf | |
588 | openal | |
589 | openssl | |
590 | opus | |
591 | pulseaudio | |
592 | qrcodegen-cpp | |
593 | qtbase-5 | |
594 | qtsvg-5 | |
595 | qt5ct | |
596 | qtimageformats | |
597 | qtwayland | |
598 | range-v3 | |
599 | rlottie-for-telegram-desktop | |
600 | rnnoise | |
601 | webrtc-for-telegram-desktop | |
602 | libx11 | |
603 | libxcb | |
604 | xcb-util-keysyms | |
605 | xxhash | |
606 | zlib)) | |
607 | (propagated-inputs (list dconf)) | |
edfbb1d2 RG |
608 | (synopsis "Telegram Desktop") |
609 | (description "Telegram desktop is the official desktop version of the | |
46fdee4f | 610 | Telegram instant messenger.") |
edfbb1d2 RG |
611 | (home-page "https://desktop.telegram.org/") |
612 | (license | |
613 | (list | |
614 | ;; ThirdParty | |
615 | license:lgpl2.1+ | |
616 | ;; Others | |
617 | license:gpl3+)))) | |
8b4e8933 RG |
618 | |
619 | (define-public tl-parser | |
620 | (let ((commit "1933e76f8f4fb74311be723b432e4c56e3a5ec06") | |
621 | (revision "21")) | |
622 | (package | |
623 | (name "tl-parser") | |
624 | (version | |
625 | (git-version "0" revision commit)) | |
626 | (source | |
627 | (origin | |
628 | (method git-fetch) | |
629 | (uri | |
630 | (git-reference | |
631 | (url "https://github.com/vysheng/tl-parser.git") | |
632 | (commit commit))) | |
633 | (file-name | |
634 | (git-file-name name version)) | |
635 | (sha256 | |
636 | (base32 "13cwi247kajzpkbl86hnwmn1sn2h6rqndz6khajbqj0mlw9mv4hq")))) | |
637 | (build-system cmake-build-system) | |
638 | (arguments | |
639 | `(#:tests? #f ; No target | |
640 | #:imported-modules | |
641 | ((guix build copy-build-system) | |
642 | ,@%cmake-build-system-modules) | |
643 | #:modules | |
644 | (((guix build copy-build-system) | |
645 | #:prefix copy:) | |
646 | (guix build cmake-build-system) | |
647 | (guix build utils)) | |
648 | #:phases | |
649 | (modify-phases %standard-phases | |
650 | (replace 'install | |
651 | (lambda args | |
652 | (apply (assoc-ref copy:%standard-phases 'install) | |
653 | #:install-plan | |
654 | '(("." "bin" | |
655 | #:include ("tl-parser")) | |
656 | ("../source" "include/tl-parser" | |
657 | #:include-regexp ("\\.h$"))) | |
658 | args)))))) | |
659 | (synopsis "Parse tl scheme to tlo") | |
eb975174 TGR |
660 | (description "TL-Parser is a tl scheme to tlo file parser. It was |
661 | formerly a part of telegram-cli, but now being maintained separately.") | |
8b4e8933 RG |
662 | (home-page "https://github.com/vysheng/tl-parser") |
663 | (license license:gpl2+)))) | |
d1e7a01c RG |
664 | |
665 | (define-public tgl | |
666 | (let ((commit "ffb04caca71de0cddf28cd33a4575922900a59ed") | |
667 | (revision "181")) | |
668 | (package | |
669 | (name "tgl") | |
670 | (version | |
671 | (git-version "2.0.1" revision commit)) | |
672 | (source | |
673 | (origin | |
674 | (method git-fetch) | |
675 | (uri | |
676 | (git-reference | |
677 | (url "https://github.com/vysheng/tgl.git") | |
678 | (commit commit))) | |
679 | (file-name | |
680 | (git-file-name name version)) | |
681 | (sha256 | |
682 | (base32 "0cf5s7ygslb5klg1qv9qdc3hivhspmvh3zkacyyhd2yyikb5p0f9")))) | |
683 | (build-system gnu-build-system) | |
684 | (arguments | |
685 | `(#:tests? #f ; No target | |
686 | #:imported-modules | |
687 | ((guix build copy-build-system) | |
688 | ,@%gnu-build-system-modules) | |
689 | #:modules | |
690 | (((guix build copy-build-system) | |
691 | #:prefix copy:) | |
692 | (guix build gnu-build-system) | |
693 | (guix build utils)) | |
694 | #:configure-flags | |
695 | (list | |
696 | ;; Use gcrypt instead of openssl. | |
697 | "--disable-openssl" | |
698 | ;; Enable extended queries system. | |
699 | "--enable-extf" | |
700 | ;; Include libevent-based net and timers. | |
701 | "--enable-libevent") | |
702 | #:phases | |
703 | (modify-phases %standard-phases | |
704 | (add-after 'unpack 'trigger-bootstrap | |
705 | (lambda _ | |
706 | (delete-file "configure") | |
707 | #t)) | |
708 | (add-after 'trigger-bootstrap 'patch-tl-parser | |
709 | (lambda _ | |
710 | (delete-file "Makefile.tl-parser") | |
711 | (substitute* "Makefile.in" | |
712 | (("include \\$\\{srcdir\\}/Makefile\\.tl-parser") | |
713 | "") | |
714 | (("\\$\\{EXE\\}/tl-parser") | |
715 | "tl-parser")) | |
716 | #t)) | |
717 | (replace 'install | |
718 | (lambda args | |
719 | (apply (assoc-ref copy:%standard-phases 'install) | |
720 | #:install-plan | |
721 | '(("bin" "bin") | |
722 | ("." "include/tgl" | |
723 | #:include-regexp ("\\.h$")) | |
724 | ("libs" "lib/tgl")) | |
725 | args)))))) | |
726 | (native-inputs | |
8394619b | 727 | (list autoconf automake libtool pkg-config)) |
d1e7a01c | 728 | (inputs |
8394619b | 729 | (list libevent libgcrypt tl-parser zlib)) |
d1e7a01c RG |
730 | (synopsis "Telegram Library") |
731 | (description "TGL is the telegram library for telegram-cli.") | |
732 | (home-page "https://github.com/vysheng/tgl") | |
733 | (license license:lgpl2.1+)))) | |
86f461d6 RG |
734 | |
735 | (define-public telegram-cli | |
736 | (let ((commit "6547c0b21b977b327b3c5e8142963f4bc246187a") | |
737 | (revision "324")) | |
738 | (package | |
739 | (name "telegram-cli") | |
740 | (version | |
741 | (git-version "1.3.1" revision commit)) | |
742 | (source | |
743 | (origin | |
744 | (method git-fetch) | |
745 | (uri | |
746 | (git-reference | |
747 | (url "https://github.com/vysheng/tg.git") | |
748 | (commit commit))) | |
749 | (file-name | |
750 | (git-file-name name version)) | |
751 | (sha256 | |
752 | (base32 "0c1w7jgska71jjbvg1y09v52549pwa4zkdjly18yxywn7gayd2p6")))) | |
753 | (build-system gnu-build-system) | |
754 | (arguments | |
755 | `(#:tests? #f ; No target | |
756 | #:imported-modules | |
757 | ((guix build copy-build-system) | |
758 | ,@%gnu-build-system-modules) | |
759 | #:modules | |
760 | (((guix build copy-build-system) | |
761 | #:prefix copy:) | |
762 | (guix build gnu-build-system) | |
763 | (guix build utils)) | |
764 | #:configure-flags | |
765 | (list | |
766 | ;; Use gcrypt instead of openssl. | |
767 | "--disable-openssl") | |
768 | #:phases | |
769 | (modify-phases %standard-phases | |
770 | (add-after 'unpack 'trigger-bootstrap | |
771 | (lambda _ | |
772 | (delete-file "configure") | |
773 | #t)) | |
774 | (add-after 'trigger-bootstrap 'patch-tgl-and-tlparser | |
775 | (lambda* (#:key inputs #:allow-other-keys) | |
776 | (for-each delete-file | |
777 | (list | |
778 | "Makefile.tgl" | |
779 | "Makefile.tl-parser")) | |
780 | (substitute* "Makefile.in" | |
781 | (("include \\$\\{srcdir\\}/Makefile\\.tl-parser") | |
782 | "") | |
783 | (("include \\$\\{srcdir\\}/Makefile\\.tgl") | |
784 | "") | |
785 | (("-I\\$\\{srcdir\\}/tgl") | |
786 | (string-append "-I" (assoc-ref inputs "tgl") | |
787 | "/include/tgl")) | |
788 | (("AUTO=auto") | |
789 | (string-append "AUTO=" (assoc-ref inputs "tgl") | |
790 | "/include/tgl/auto")) | |
791 | (("LIB=libs") | |
792 | (string-append "LIB=" (assoc-ref inputs "tgl") | |
793 | "/lib/tgl"))) | |
794 | #t)) | |
795 | (replace 'install | |
796 | (lambda args | |
797 | (apply (assoc-ref copy:%standard-phases 'install) | |
798 | #:install-plan | |
799 | '(("bin" "bin") | |
800 | ("." "etc/telegram-cli" | |
801 | #:include-regexp ("\\.pub$") | |
802 | #:exclude ("tg-server.pub"))) | |
803 | args)))))) | |
804 | (native-inputs | |
8394619b | 805 | (list autoconf automake libtool pkg-config)) |
86f461d6 | 806 | (inputs |
8394619b LC |
807 | (list jansson |
808 | libconfig | |
809 | libevent | |
810 | libgcrypt | |
811 | lua | |
812 | openssl | |
813 | perl | |
814 | python | |
815 | readline | |
816 | tgl | |
817 | tl-parser | |
818 | zlib)) | |
86f461d6 RG |
819 | (synopsis "Telegram Messenger CLI") |
820 | (description "TG is the command-line interface for Telegram Messenger.") | |
821 | (home-page "https://github.com/vysheng/tg") | |
822 | (license license:gpl2+)))) | |
49d8f954 RG |
823 | |
824 | (define-public tgcli | |
825 | (package | |
826 | (name "tgcli") | |
827 | (version "0.3.1") | |
828 | (source | |
829 | (origin | |
830 | (method git-fetch) | |
831 | (uri | |
832 | (git-reference | |
833 | (url "https://github.com/erayerdin/tgcli") | |
834 | (commit (string-append "v" version)))) | |
835 | (file-name | |
836 | (git-file-name name version)) | |
837 | (sha256 | |
838 | (base32 "082zim7rh4r8qyscqimjh2sz7998vv9j1i2y2wwz2rgrlhkhly5r")))) | |
839 | (build-system python-build-system) | |
840 | (arguments | |
841 | `(#:phases | |
842 | (modify-phases %standard-phases | |
843 | ;; Test requirements referes to specific versions of packages, | |
844 | ;; which are too old. So we patch them to refer to any later versions. | |
845 | (add-after 'unpack 'patch-test-requirements | |
846 | (lambda _ | |
847 | (substitute* "dev.requirements.txt" | |
848 | (("==") ">=")))) | |
849 | (replace 'check | |
850 | (lambda* (#:key inputs outputs tests? #:allow-other-keys) | |
851 | (when tests? | |
852 | (add-installed-pythonpath inputs outputs) | |
853 | (invoke "pytest" "tests"))))))) | |
854 | (native-inputs | |
855 | `(("coveralls" ,python-coveralls) | |
856 | ("pytest" ,python-pytest) | |
857 | ("pytest-click" ,python-pytest-click) | |
858 | ("pytest-cov" ,python-pytest-cov) | |
859 | ("mkdocs" ,python-mkdocs) | |
860 | ("mkdocs-material" ,python-mkdocs-material) | |
861 | ("requests-mock" ,python-requests-mock))) | |
862 | (propagated-inputs | |
863 | `(("click" ,python-click) | |
864 | ("colorful" ,python-colorful) | |
865 | ("requests" ,python-requests) | |
866 | ("yaspin" ,python-yaspin))) | |
867 | (home-page "https://tgcli.readthedocs.io") | |
868 | (synopsis "Telegram Terminal Application") | |
869 | (description "TgCli is a telegram client to automate repetitive tasks.") | |
870 | (license license:asl2.0))) |