projects/guix·blob java-team · refs

960 lines · 35.4 KiB

1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2014 John Darrington <[email protected]>
3;;; Copyright © 2014, 2019 Mark H Weaver <[email protected]>
4;;; Copyright © 2015, 2016, 2019, 2021-2023, 2025 Efraim Flashner <[email protected]>
5;;; Copyright © 2016 Kei Kebreau <[email protected]>
6;;; Copyright © 2017, 2024, 2025 Eric Bavier <[email protected]>
7;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <[email protected]>
8;;; Copyright © 2018 Rutger Helling <[email protected]>
9;;; Copyright © 2018 Timo Eisenmann <[email protected]>
10;;; Copyright © 2018 Pierre Neidhardt <[email protected]>
11;;; Copyright © 2019 Clément Lassieur <[email protected]>
12;;; Copyright © 2019 Brett Gilio <[email protected]>
13;;; Copyright © 2020 Raghav Gururajan <[email protected]>
14;;; Copyright © 2020 B. Wilson <[email protected]>
15;;; Copyright © 2020 Michael Rohleder <[email protected]>
16;;; Copyright © 2020 Nicolò Balzarotti <[email protected]>
17;;; Copyright © 2020 Alexandru-Sergiu Marton <[email protected]>
18;;; Copyright © 2020 Hartmut Goebel <[email protected]>
19;;; Copyright © 2021, 2022 Cage <[email protected]>
20;;; Copyright © 2021 Benoit Joly <[email protected]>
21;;; Copyright © 2021 Alexander Krotov <[email protected]>
22;;; Copyright © 2020 Hartmut Goebel <[email protected]>
23;;; Copyright © 2021 Christopher Howard <[email protected]>
24;;; Copyright © 2023 Herman Rimm <[email protected]>
25;;; Copyright © 2024 Zheng Junjie <[email protected]>
26;;; Copyright © 2025 Sergey Trofimov <[email protected]>
27;;; Copyright © 2025 Janneke Nieuwenhuizen <[email protected]>
28;;; Copyright © 2025 jgart <[email protected]>
29;;;
30;;; This file is part of GNU Guix.
31;;;
32;;; GNU Guix is free software; you can redistribute it and/or modify it
33;;; under the terms of the GNU General Public License as published by
34;;; the Free Software Foundation; either version 3 of the License, or (at
35;;; your option) any later version.
36;;;
37;;; GNU Guix is distributed in the hope that it will be useful, but
38;;; WITHOUT ANY WARRANTY; without even the implied warranty of
39;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
40;;; GNU General Public License for more details.
41;;;
42;;; You should have received a copy of the GNU General Public License
43;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
44
45(define-module (gnu packages web-browsers)
46 #:use-module (guix build-system cmake)
47 #:use-module (guix build-system glib-or-gtk)
48 #:use-module (guix build-system gnu)
49 #:use-module (guix build-system go)
50 #:use-module (guix build-system meson)
51 #:use-module (guix build-system pyproject)
52 #:use-module (guix download)
53 #:use-module (guix gexp)
54 #:use-module (guix git-download)
55 #:use-module ((guix licenses) #:prefix license:)
56 #:use-module (guix packages)
57 #:use-module (guix utils)
58 #:use-module (gnu packages)
59 #:use-module (gnu packages autotools)
60 #:use-module (gnu packages backup)
61 #:use-module (gnu packages base)
62 #:use-module (gnu packages bash)
63 #:use-module (gnu packages bison)
64 #:use-module (gnu packages compression)
65 #:use-module (gnu packages curl)
66 #:use-module (gnu packages databases)
67 #:use-module (gnu packages documentation)
68 #:use-module (gnu packages fltk)
69 #:use-module (gnu packages fontutils)
70 #:use-module (gnu packages fonts)
71 #:use-module (gnu packages freedesktop)
72 #:use-module (gnu packages fribidi)
73 #:use-module (gnu packages gcc)
74 #:use-module (gnu packages gettext)
75 #:use-module (gnu packages glib)
76 #:use-module (gnu packages gnome)
77 #:use-module (gnu packages gnome-xyz)
78 #:use-module (gnu packages gnupg)
79 #:use-module (gnu packages golang)
80 #:use-module (gnu packages gstreamer)
81 #:use-module (gnu packages gtk)
82 #:use-module (gnu packages image)
83 #:use-module (gnu packages imagemagick)
84 #:use-module (gnu packages javascript)
85 #:use-module (gnu packages libevent)
86 #:use-module (gnu packages libidn)
87 #:use-module (gnu packages libunistring)
88 #:use-module (gnu packages linux)
89 #:use-module (gnu packages lisp)
90 #:use-module (gnu packages lisp-check)
91 #:use-module (gnu packages lisp-xyz)
92 #:use-module (gnu packages lua)
93 #:use-module (gnu packages man)
94 #:use-module (gnu packages markup)
95 #:use-module (gnu packages mp3)
96 #:use-module (gnu packages ncurses)
97 #:use-module (gnu packages pcre)
98 #:use-module (gnu packages perl)
99 #:use-module (gnu packages pkg-config)
100 #:use-module (gnu packages python)
101 #:use-module (gnu packages python-crypto)
102 #:use-module (gnu packages python-build)
103 #:use-module (gnu packages python-web)
104 #:use-module (gnu packages python-xyz)
105 #:use-module (gnu packages qt)
106 #:use-module (gnu packages readline)
107 #:use-module (gnu packages regex)
108 #:use-module (gnu packages sdl)
109 #:use-module (gnu packages sqlite)
110 #:use-module (gnu packages suckless)
111 #:use-module (gnu packages tcl)
112 #:use-module (gnu packages text-editors)
113 #:use-module (gnu packages tls)
114 #:use-module (gnu packages web)
115 #:use-module (gnu packages webkit)
116 #:use-module (gnu packages xdisorg)
117 #:use-module (gnu packages xml)
118 #:use-module (gnu packages xorg)
119 #:use-module ((guix search-paths) #:select ($SSL_CERT_DIR $SSL_CERT_FILE)))
120
121(define-public midori
122 (package
123 (name "midori")
124 (version "9.0")
125 (source
126 (origin
127 (method url-fetch)
128 (uri
129 (string-append "https://github.com/midori-browser/core/releases/"
130 "download/v" version "/" name "-v" version ".tar.gz"))
131 (sha256
132 (base32
133 "05i04qa83dnarmgkx4xsk6fga5lw1lmslh4rb3vhyyy4ala562jy"))))
134 (build-system cmake-build-system)
135 (arguments
136 `(#:imported-modules
137 (,@%cmake-build-system-modules
138 (guix build glib-or-gtk-build-system))
139 #:modules
140 ((guix build cmake-build-system)
141 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
142 (guix build utils))
143 #:configure-flags
144 ;; Relax gcc-14's strictness.
145 '("-DCMAKE_C_FLAGS=-Wno-error=int-conversion")
146 #:phases
147 (modify-phases %standard-phases
148 (add-after 'install 'glib-or-gtk-compile-schemas
149 (assoc-ref glib-or-gtk:%standard-phases
150 'glib-or-gtk-compile-schemas))
151 (add-after 'install 'glib-or-gtk-wrap
152 (assoc-ref glib-or-gtk:%standard-phases
153 'glib-or-gtk-wrap)))))
154 (native-inputs
155 `(("desktop-file-utils" ,desktop-file-utils) ;for tests
156 ("glib:bin" ,glib "bin")
157 ("gtk+:bin" ,gtk+ "bin")
158 ("intltool" ,intltool)
159 ("pkg-config" ,pkg-config)
160 ("which" ,which))) ;for tests
161 (inputs
162 `(("adwaita-icon-theme" ,adwaita-icon-theme)
163 ("gcr" ,gcr-3)
164 ("glib" ,glib)
165 ("glib-networking" ,glib-networking)
166 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
167 ("gtk+" ,gtk+)
168 ("json-glib" ,json-glib)
169 ("libarchive" ,libarchive)
170 ("libpeas" ,libpeas)
171 ("sqlite" ,sqlite)
172 ("vala" ,vala)
173 ("webkitgtk" ,webkitgtk-with-libsoup2)))
174 (synopsis "Lightweight graphical web browser")
175 (description "@code{Midori} is a lightweight, Webkit-based web browser.
176It features integration with GTK+3, configurable web search engine, bookmark
177management, extensions such as advertisement blocker and colorful tabs.")
178 (home-page "https://www.midori-browser.org")
179 (license license:lgpl2.1+)))
180
181(define-public links
182 (package
183 (name "links")
184 (version "2.30")
185 (source (origin
186 (method url-fetch)
187 (uri (string-append "http://links.twibright.com/download/"
188 "links-" version ".tar.bz2"))
189 (sha256
190 (base32
191 "0rpi2l1v9b8d86z9dm91n312aavz7g12z1xp7kf7qlhib9miqqy4"))))
192 (build-system gnu-build-system)
193 (arguments
194 (list
195 #:configure-flags #~(list "--enable-graphics")
196 #:phases
197 #~(modify-phases %standard-phases
198 (replace 'configure
199 (lambda* (#:key outputs (configure-flags '()) #:allow-other-keys)
200 ;; The tarball uses a very old version of autoconf. It doesn't
201 ;; understand extra flags like `--enable-fast-install', so
202 ;; we need to invoke it with just what it understands.
203 (let ((out (assoc-ref outputs "out")))
204 ;; 'configure' doesn't understand '--host'.
205 #$@(if (%current-target-system)
206 #~((setenv "CHOST" #$(%current-target-system)))
207 #~())
208 (setenv "CONFIG_SHELL" (which "bash"))
209 (apply invoke "./configure"
210 (string-append "--prefix=" out)
211 configure-flags)))))))
212 (native-inputs (list pkg-config))
213 (inputs
214 (list gpm
215 libevent
216 libjpeg-turbo
217 libpng
218 libtiff
219 libxt
220 openssl
221 zlib))
222 (synopsis "Text and graphics mode web browser")
223 (description "Links is a graphics and text mode web browser, with many
224features including, tables, builtin image display, bookmarks, SSL and more.")
225 (home-page "http://links.twibright.com")
226 ;; The distribution contains a copy of GPLv2
227 ;; However, the copyright notices simply say:
228 ;; "This file is a part of the Links program, released under GPL."
229 ;; Therefore, under the provisions of Section 9, we can choose
230 ;; any version ever published by the FSF.
231 ;; One file (https.c) contains an exception permitting
232 ;; linking of the program with openssl.
233 (license license:gpl1+)))
234
235(define-public elinks
236 (package
237 (name "elinks")
238 (version "0.19.1")
239 (source
240 (origin
241 (method git-fetch)
242 (uri (git-reference
243 (url "https://github.com/rkd77/elinks")
244 (commit (string-append "v" version))))
245 (file-name (git-file-name name version))
246 (sha256
247 (base32
248 "1802lh9zsmwmsd4b4kzxzgv3y8f6fmi6i0cjjbwmnkdfivcal3v9"))))
249 (build-system meson-build-system)
250 (arguments
251 (list
252 #:configure-flags
253 #~(list "-D256-colors=true"
254 "-Dbrotli=true"
255 "-Dcgi=true"
256 "-Dfinger=true"
257 "-Dgemini=true"
258 "-Dgopher=true"
259 ;; FIXME: gpm is disabled because Meson cannot find its shared
260 ;; library even though "gpm" is given as an input.
261 "-Dgpm=false"
262 "-Dhtml-highlight=true"
263 "-Dlibev=true"
264 "-Dlzma=true"
265 "-Dnntp=true"
266 "-Dreproducible=true"
267 "-Dsource-date-epoch=1"
268 "-Dtest=true"
269 "-Dtrue-color=true"
270 ;; Fix GCC 14 build
271 "-Dc_args=-Wno-implicit-function-declaration")))
272 (native-inputs
273 (list autoconf
274 automake
275 gettext-minimal
276 perl
277 pkg-config
278 python-minimal))
279 (inputs
280 (list brotli
281 bzip2
282 curl
283 expat
284 gnutls
285 gpm
286 libcss
287 libdom
288 libev
289 libgcrypt
290 libidn
291 lua
292 openssl
293 tre
294 xz
295 zlib))
296 (home-page "http://elinks.cz/")
297 (synopsis "Advanced text mode web browser")
298 (description
299 "ELinks is a feature-rich program for browsing the web in text mode.
300It can render both frames and tables, is highly customisable and can be
301extended via Lua scripts. It is like an enhanced Lynx and Links.")
302 (license license:gpl2+)))
303
304(define-public luakit
305 (package
306 (name "luakit")
307 (version "2.4.0")
308 (source (origin
309 (method git-fetch)
310 (uri (git-reference
311 (url "https://github.com/luakit/luakit")
312 (commit version)))
313 (file-name (git-file-name name version))
314 (sha256
315 (base32
316 "15l0xb8ddv9j8hlrd4d11brngpss77ih9f8m08jfc18ir4rb32y5"))))
317 (build-system glib-or-gtk-build-system)
318 (arguments
319 (list
320 #:tests? #false ;require un-packaged "luassert"
321 #:test-target "run-tests"
322 #:make-flags
323 #~(list (string-append "CC=" #$(cc-for-target))
324 "LUA_BIN_NAME=lua"
325 "DEVELOPMENT_PATHS=0"
326 (string-append "PREFIX=" #$output)
327 (string-append "XDGPREFIX=" #$output "/etc/xdg"))
328 #:phases
329 #~(modify-phases %standard-phases
330 (add-before 'build 'lfs-workaround
331 (lambda _
332 (setenv "LUA_CPATH"
333 (string-append #$(this-package-input "lua5.1-filesystem")
334 "/lib/lua/5.1/?.so;;"))))
335 (add-before 'build 'set-version
336 (lambda _
337 (setenv "VERSION_FROM_GIT" #$version)))
338 (delete 'configure)
339 (add-after 'install 'wrap
340 (lambda _
341 (wrap-program (string-append #$output "/bin/luakit")
342 `("LUA_CPATH" prefix
343 (,(string-append #$(this-package-input "lua5.1-filesystem")
344 "/lib/lua/5.1/?.so;;")))
345 `("XDG_CONFIG_DIRS" prefix
346 (,(string-append #$output "/etc/xdg/")))))))))
347 (native-inputs
348 (list pkg-config))
349 (inputs
350 (list bash-minimal
351 glib-networking
352 gsettings-desktop-schemas
353 gtk+
354 lua-5.1
355 lua5.1-filesystem
356 luajit
357 sqlite
358 webkitgtk-for-gtk3))
359 (synopsis "Fast, lightweight, and simple browser based on WebKit")
360 (description "Luakit is a fast, lightweight, and simple to use
361micro-browser framework extensible by Lua using the WebKit web content engine
362and the GTK+ toolkit.")
363 (home-page "https://luakit.github.io/")
364 (license license:gpl3+)))
365
366(define-public lynx
367 (package
368 (name "lynx")
369 (version "2.9.2")
370 (source (origin
371 (method url-fetch)
372 (uri (string-append
373 "http://invisible-mirror.net/archives/lynx/tarballs"
374 "/lynx" version ".tar.bz2"))
375 (sha256
376 (base32
377 "1kh7zfv7m9srqapppandx3hkc82rr7r9fkhz22g6d4fr6scvhx3k"))))
378 (build-system gnu-build-system)
379 (native-inputs (list pkg-config perl))
380 (inputs (list ncurses
381 libidn
382 openssl
383 libgcrypt
384 unzip
385 zlib
386 gzip
387 bzip2))
388 (native-search-paths (list $SSL_CERT_DIR $SSL_CERT_FILE))
389 (arguments
390 (list #:configure-flags
391 #~(let ((openssl #$(this-package-input "openssl")))
392 (list "--with-pkg-config"
393 "--with-screen=ncurses"
394 "--with-zlib"
395 "--with-bzlib"
396 (string-append "--with-ssl=" openssl)
397 ;; "--with-socks5" ; XXX TODO
398 "--enable-widec"
399 "--enable-ascii-ctypes"
400 "--enable-local-docs"
401 "--enable-htmlized-cfg"
402 "--enable-gzip-help"
403 "--enable-nls"
404 "--enable-ipv6"))
405 #:tests? #f ; no check target
406 #:phases
407 #~(modify-phases %standard-phases
408 (add-before 'configure 'set-makefile-shell
409 (lambda _ (substitute* "po/makefile.inn"
410 (("/bin/sh") (which "sh")))))
411 (replace 'install
412 (lambda* (#:key (make-flags '()) #:allow-other-keys)
413 (apply invoke "make" "install-full" make-flags))))))
414 (synopsis "Text Web Browser")
415 (description
416 "Lynx is a fully-featured @acronym{WWW, World Wide Web} client for users
417of cursor-addressable, character-cell display devices. It will display
418@acronym{HTML, Hypertext Markup Language} documents containing links to files
419on the local system, as well as files on remote systems running http, gopher,
420ftp, wais, nntp, finger, or cso/ph/qi servers.
421
422Lynx can be used to access information on the WWW, or to build information
423systems intended primarily for local access.")
424 (home-page "https://lynx.invisible-island.net/")
425 (license license:gpl2)))
426
427(define-public qutebrowser
428 (package
429 (name "qutebrowser")
430 (version "3.7.0")
431 (source
432 (origin
433 (method git-fetch)
434 (uri (git-reference
435 (url "https://github.com/qutebrowser/qutebrowser")
436 (commit (string-append "v" version))))
437 (file-name (git-file-name name version))
438 (sha256
439 (base32 "1mg4nghf9zw6z1qrw7c6zpbcdzsqr5al5s2svms0wa4dp45rzp69"))))
440 (build-system pyproject-build-system)
441 (native-inputs
442 (list python-setuptools
443 python-wheel
444 python-attrs ; for tests
445 asciidoc))
446 (inputs
447 (list bash-minimal
448 python-colorama
449 python-jinja2
450 python-markupsafe
451 python-pygments
452 python-pynacl
453 python-pypeg2
454 python-pyyaml
455 python-pyqt-6
456 python-pyqtwebengine-6
457 python-tldextract
458 ;; While qtwebengine is provided by python-pyqtwebengine-6, it's
459 ;; included here so we can wrap QTWEBENGINE_RESOURCES_PATH.
460 qtwebengine))
461 (arguments
462 `(;; FIXME: With the existence of qtwebengine, tests can now run. But
463 ;; they are still disabled because test phase hangs. It's not readily
464 ;; apparent as to why.
465 #:tests? #f
466 #:phases
467 (modify-phases %standard-phases
468 (add-after 'unpack 'patch-systemdir
469 (lambda* (#:key outputs #:allow-other-keys)
470 (let ((out (assoc-ref outputs "out")))
471 (substitute* "qutebrowser/utils/standarddir.py"
472 (("/usr/share") (string-append out "/share"))))))
473 (add-after 'unpack 'find-userscripts
474 (lambda* (#:key outputs #:allow-other-keys)
475 (substitute* "qutebrowser/commands/userscripts.py"
476 (("os.path.join.*system=True)")
477 (string-append "os.path.join(\""
478 (assoc-ref outputs "out")
479 "\", \"share\", \"qutebrowser\"")))))
480 (add-before 'build 'build-docs
481 (lambda _
482 (substitute* "scripts/asciidoc2html.py"
483 (("sys.executable, \"-m\", \"asciidoc\"")
484 "\"asciidoc\""))
485 (invoke "python" "scripts/asciidoc2html.py")))
486 (add-before 'check 'set-env-offscreen
487 (lambda _
488 (setenv "QT_QPA_PLATFORM" "offscreen")))
489 (add-after 'install 'install-more
490 (lambda* (#:key outputs #:allow-other-keys)
491 (let ((out (assoc-ref outputs "out")))
492 (rename-file "misc/Makefile" "Makefile")
493 (substitute* "Makefile"
494 ((".*setup\\.py.*") ""))
495 (invoke "make" "install" (string-append "PREFIX=" out))
496 (delete-file-recursively (string-append out "/share/metainfo")))))
497 (add-after 'install-more 'wrap-scripts
498 (lambda* (#:key inputs outputs #:allow-other-keys)
499 (let* ((out (assoc-ref outputs "out"))
500 (python (assoc-ref inputs "python"))
501 (path (string-append out "/lib/python"
502 ,(version-major+minor (package-version
503 python))
504 "/site-packages:"
505 (getenv "GUIX_PYTHONPATH"))))
506 (for-each
507 (lambda (file)
508 (wrap-program file
509 `("GUIX_PYTHONPATH" ":" prefix (,path))))
510 (append
511 (find-files
512 (string-append out "/share/qutebrowser/scripts") "\\.py$")
513 (find-files
514 (string-append out "/share/qutebrowser/userscripts")))))))
515 (add-after 'wrap 'wrap-qt-process-path
516 (lambda* (#:key inputs outputs #:allow-other-keys)
517 (wrap-program (search-input-file outputs "bin/qutebrowser")
518 `("QTWEBENGINE_RESOURCES_PATH" =
519 (,(search-input-directory
520 inputs "/share/qt6/resources")))))))))
521 (home-page "https://qutebrowser.org/")
522 (synopsis "Minimal, keyboard-focused, vim-like web browser")
523 (description "qutebrowser is a keyboard-focused browser with a minimal
524GUI. It is based on PyQt6 and QtWebEngine.")
525 (license license:gpl3+)))
526
527(define-public vimb
528 (package
529 (name "vimb")
530 (version "3.7.1")
531 (source
532 (origin
533 (method git-fetch)
534 (uri (git-reference
535 (url "https://github.com/fanglingsu/vimb/")
536 (commit version)))
537 (sha256
538 (base32 "13gq6grhkscb0ms35k527fc49yrnkd4p3d1i0hv3pl4h6571s7ny"))
539 (file-name (git-file-name name version))))
540 (build-system glib-or-gtk-build-system)
541 (arguments
542 (list #:tests? #f ; no tests
543 #:make-flags #~(list (string-append "CC=" #$(cc-for-target))
544 "DESTDIR="
545 (string-append "PREFIX=" #$output))
546 #:phases
547 #~(modify-phases %standard-phases
548 (delete 'configure))))
549 (inputs (list glib-networking gsettings-desktop-schemas webkitgtk-for-gtk3))
550 (native-inputs (list pkg-config))
551 (home-page "https://fanglingsu.github.io/vimb/")
552 (synopsis "Fast and lightweight Vim-like web browser")
553 (description "Vimb is a fast and lightweight vim like web browser based on
554the webkit web browser engine and the GTK toolkit. Vimb is modal like the great
555vim editor and also easily configurable during runtime. Vimb is mostly keyboard
556driven and does not detract you from your daily work.")
557 (license license:gpl3+)))
558
559(define-public lagrange
560 (package
561 (name "lagrange")
562 (version "1.20.5")
563 (source
564 (origin
565 (method url-fetch)
566 (uri
567 (string-append "https://git.skyjake.fi/skyjake/lagrange/releases/"
568 "download/v" version "/lagrange-" version ".tar.gz"))
569 (sha256
570 (base32 "1kha8p9bfhfr7bs3ihpzji3jz9qgwizz1f580nylnlrz418x9wkr"))
571 (modules '((guix build utils)))
572 (snippet
573 '(begin
574 ;; TODO: unbundle fonts.
575 (delete-file-recursively "lib/fribidi")
576 (delete-file-recursively "lib/harfbuzz")
577 (delete-file-recursively "lib/sealcurses")))))
578 (build-system cmake-build-system)
579 (arguments
580 (list
581 #:tests? #false ;no tests
582 #:configure-flags
583 #~(list "-DTFDN_ENABLE_SSE41=OFF"
584 (string-append "-DUNISTRING_DIR="
585 #$(this-package-input "libunistring")))))
586 (native-inputs
587 (list pkg-config zip))
588 (inputs
589 (list freetype
590 fribidi
591 harfbuzz
592 libmpg123
593 libunistring
594 libwebp
595 openssl
596 pcre
597 sdl2
598 zlib))
599 (native-search-paths
600 (list (search-path-specification
601 (variable "XDG_DATA_DIRS")
602 (files '("share")))))
603 (home-page "https://gmi.skyjake.fi/lagrange/")
604 (synopsis "Graphical Gemini client")
605 (description
606 "Lagrange is a desktop GUI client for browsing Geminispace. It offers
607modern conveniences familiar from web browsers, such as smooth scrolling,
608inline image viewing, multiple tabs, visual themes, Unicode fonts, bookmarks,
609history, and page outlines.")
610 (properties
611 '((release-monitoring-url . "https://git.skyjake.fi/gemini/lagrange/releases")))
612 (license license:bsd-2)))
613
614(define-public gmni
615 (package
616 (name "gmni")
617 (version "1.0")
618 (source (origin
619 (method git-fetch)
620 (uri (git-reference
621 (url "https://git.sr.ht/~sircmpwn/gmni")
622 (commit version)))
623 (sha256
624 (base32
625 "0bky9fd8iyr13r6gj4aynb7j9nd36xdprbgq6nh5hz6jiw04vhfw"))
626 (file-name (git-file-name name version))))
627 (build-system gnu-build-system)
628 (arguments
629 (list
630 #:tests? #f ;no check target
631 #:make-flags #~(list #$(string-append "CC=" (cc-for-target)))))
632 (inputs
633 (list bearssl))
634 (native-inputs
635 (list pkg-config scdoc))
636 (home-page "https://sr.ht/~sircmpwn/gmni")
637 (synopsis "Minimalist command line Gemini client")
638 (description "The gmni package includes:
639
640@itemize
641@item A CLI utility (like curl): gmni
642@item A line-mode browser: gmnlm
643@end itemize")
644 (license (list license:gpl3+
645 (license:non-copyleft
646 "https://curl.se/docs/copyright.html"
647 "Used only for files taken from curl.")))))
648
649(define-public bombadillo
650 (package
651 (name "bombadillo")
652 (version "2.4.0")
653 (source (origin
654 (method git-fetch)
655 (uri (git-reference
656 (url "https://tildegit.org/sloum/bombadillo")
657 (commit version)))
658 (sha256
659 (base32
660 "03gcd813bmiy7ad179zg4p61nfa9z5l94sdmsmmn2x204h1ksd8n"))
661 (file-name (git-file-name name version))))
662 (build-system go-build-system)
663 (arguments
664 (list
665 #:import-path "tildegit.org/sloum/bombadillo"
666 #:install-source? #f
667 #:phases
668 #~(modify-phases %standard-phases
669 (add-after 'install 'install-data
670 (lambda _
671 (let* ((builddir "src/tildegit.org/sloum/bombadillo")
672 (pkg (strip-store-file-name #$output))
673 (sharedir (string-append #$output "/share"))
674 (appdir (string-append sharedir "/applications"))
675 (docdir (string-append sharedir "/doc/" pkg))
676 (mandir (string-append sharedir "/man/man1"))
677 (pixdir (string-append sharedir "/pixmaps")))
678 (with-directory-excursion builddir
679 (install-file "bombadillo.desktop" appdir)
680 (install-file "bombadillo.1" mandir)
681 (install-file "bombadillo-icon.png" pixdir))))))
682 #:test-flags #~(list "-vet=off")))
683 (home-page "https://bombadillo.colorfield.space")
684 (synopsis "Terminal browser for the gopher, gemini, and finger protocols")
685 (description "Bombadillo is a non-web browser for the terminal with
686vim-like key bindings, a document pager, configurable settings, and robust
687command selection. The following protocols are supported as first-class
688citizens: gopher, gemini, finger, and local. There is also support for telnet,
689http, and https via third-party applications.")
690 (license license:gpl3+)))
691
692(define-public tinmop
693 (package
694 (name "tinmop")
695 (version "0.9.9.14142135623730951")
696 (source
697 (origin
698 (method git-fetch)
699 (uri (git-reference
700 (url "https://codeberg.org/cage/tinmop")
701 (commit (string-append "v" version))))
702 (file-name (git-file-name name version))
703 (sha256
704 (base32 "0dgx0p1g9xq2kq71ycq5mfjj5h5sw8xs26nk648w3lc8a6764mji"))))
705 (build-system gnu-build-system)
706 (native-inputs
707 (list autoconf
708 automake
709 bash-completion
710 gettext-minimal
711 libjpeg-turbo
712 imagemagick
713 mandoc
714 nano
715 openssl
716 pkg-config
717 sbcl
718 tk
719 unzip
720 which
721 xdg-utils))
722 (inputs
723 (list xsel
724 ncurses
725 sbcl-access
726 sbcl-alexandria
727 sbcl-babel
728 sbcl-bordeaux-threads
729 sbcl-cl+ssl
730 sbcl-cl-base64
731 sbcl-cl-colors2
732 sbcl-cl-html5-parser
733 sbcl-cl-i18n
734 sbcl-cl-ppcre
735 sbcl-cl-spark
736 sbcl-cl-sqlite
737 sbcl-clunit2
738 sbcl-croatoan
739 sbcl-chronicity
740 sbcl-crypto-shortcuts
741 sbcl-drakma
742 sbcl-esrap
743 sbcl-flexi-streams
744 sbcl-ieee-floats
745 sbcl-local-time
746 sbcl-log4cl
747 sbcl-marshal
748 sbcl-nodgui
749 sbcl-parse-number
750 sbcl-percent-encoding
751 sbcl-purgatory
752 sbcl-sxql
753 sbcl-sxql-composer
754 sbcl-tooter
755 sbcl-trivial-clipboard
756 sbcl-unix-opts
757 sbcl-usocket
758 sbcl-yason
759 sdl2-ttf
760 sqlite))
761 (arguments
762 `(#:tests? #f
763 #:strip-binaries? #f
764 #:phases
765 (modify-phases %standard-phases
766 (add-after 'unpack 'set-home
767 (lambda _
768 (setenv "HOME" "/tmp")
769 #t))
770 (add-after 'unpack 'fix-configure.ac
771 (lambda _
772 (delete-file "configure")
773 (substitute* "configure.ac"
774 (("AC_PATH_PROG.+CURL")
775 "dnl")
776 (("AC_PATH_PROGS.+GIT")
777 "dnl")
778 (("AC_PATH_PROG.+GPG")
779 "dnl")
780 (("AC_PATH_PROG.+SDL2")
781 "dnl ")
782 (("AC_CHECK_HEADER.+ttf")
783 "dnl "))
784 (substitute* "Makefile.am"
785 (("dist_completion_DATA")
786 "#")
787 (("completiondir")
788 "#"))
789 #t)))))
790 (synopsis
791 "Gemini, gopher, kami and mastodon/pleroma client with a terminal interface")
792 (description
793 "This package provides a Gemini, gopher, kami and mastodon/pleroma client
794with a terminal interface, for Gemini also a GUI is available.")
795 (home-page "https://www.autistici.org/interzona/tinmop.html")
796 (license license:gpl3+)))
797
798(define-public telescope
799 (package
800 (name "telescope")
801 (version "0.9")
802 (source
803 (origin
804 (method url-fetch)
805 (uri (string-append "https://github.com/omar-polo/telescope/releases/download/"
806 version "/telescope-" version ".tar.gz"))
807 (sha256
808 (base32 "1xbwdm3xcahwl6sjqx6f8hhx7nyzyygkjsnxglwxazp8zlmchqy9"))))
809 (build-system gnu-build-system)
810 (arguments
811 `(#:tests? #f)) ;no tests
812 (native-inputs
813 (list gettext-minimal pkg-config))
814 (inputs
815 (list libgrapheme libressl ncurses))
816 (home-page "https://telescope.omarpolo.com/")
817 (synopsis "Gemini client with a terminal interface")
818 (description "Telescope is a w3m-like browser for Gemini.")
819 (license license:x11)))
820
821(define-public leo
822 ;; PyPi only provides a wheel.
823 (let ((commit "88cc10a87afe2ec86be06e6ea2bcd099f5360b74")
824 (version "1.0.4")
825 (revision "1"))
826 (package
827 (name "leo")
828 (version (git-version version revision commit))
829 (source
830 (origin
831 (method git-fetch)
832 (uri (git-reference
833 (url "https://github.com/xyzshantaram/leo")
834 (commit commit)))
835 (file-name (git-file-name name version))
836 (sha256
837 (base32 "0jp4v4jw82qqynqqs7x35g5yvm1sd48cvbqh7j2r1ixw1z6ldhc4"))))
838 (build-system pyproject-build-system)
839 (arguments (list #:tests? #f)) ; No tests.
840 (native-inputs (list python-setuptools))
841 (home-page "https://github.com/xyzshantaram/leo")
842 (synopsis "Gemini client written in Python")
843 (description
844 "@command{leo} is a gemini client written in Python with no external
845dependencies that fully implements the Gemini spec. A list of URLs can be
846saved to a file for further viewing in another window.")
847 (license license:expat))))
848
849(define-public av-98
850 (package
851 (name "av-98")
852 (version "1.4")
853 (properties '((upstream-name . "AV-98")))
854 (source
855 (origin
856 (method git-fetch)
857 (uri (git-reference
858 (url "https://git.sr.ht/~solderpunk/AV-98")
859 (commit (string-append "v" version))))
860 (file-name (git-file-name name version))
861 (sha256
862 (base32 "04dzkzsan1cnrslsvfgn1whpwald8xy34wqzvq81hd2mvw9a2n69"))))
863 (build-system pyproject-build-system)
864 (arguments
865 (list
866 #:tests? #f ; No tests.
867 #:phases
868 #~(modify-phases %standard-phases
869 (add-before 'sanity-check 'configure-sanity-check
870 (lambda _
871 (setenv "HOME" (getcwd)))))))
872 (native-inputs (list python-setuptools))
873 (home-page "https://git.sr.ht/~solderpunk/AV-98")
874 (synopsis "Command line Gemini client")
875 (description
876 "AV-98 is an experimental client for the Gemini protocol. Features include
877@itemize
878@item TOFU or CA server certificate validation;
879@item Extensive client certificate support if an openssl binary is available;
880@item Ability to specify external handler programs for different MIME types;
881@item Gopher proxy support;
882@item Advanced navigation tools like tour and mark (as per VF-1);
883@item Bookmarks;
884@item IPv6 support;
885@item Support for any character encoding recognised by Python.
886@end itemize")
887 (license license:bsd-2)))
888
889(define-public dillo
890 (package
891 (name "dillo")
892 (version "3.3.0")
893 (source
894 (origin
895 (method git-fetch)
896 (uri (git-reference
897 (url "https://git.dillo-browser.org/dillo")
898 (commit (string-append "v" version))))
899 (file-name (git-file-name name version))
900 (sha256
901 (base32 "14mrm84br4p6iq3ihzlyq07p8v8cdvrh8zhs9yhv1dxbdkjxhdrk"))))
902 (build-system gnu-build-system)
903 (native-inputs (list autoconf automake))
904 (inputs (list fltk-1.3
905 fontconfig
906 openssl
907 libjpeg-turbo
908 libpng
909 libwebp
910 libxext
911 libx11
912 libxfixes
913 libxft
914 libxrender
915 zlib))
916 (home-page "https://dillo-browser.org/")
917 (synopsis "Very small and fast graphical web browser")
918 (description
919 "Dillo is a minimalistic web browser particularly intended for
920-older or slower computers and embedded systems.")
921 (license license:gpl3+)))
922
923(define-public edbrowse
924 (package
925 (name "edbrowse")
926 (version "3.8.18")
927 (source
928 (origin
929 (method git-fetch)
930 (uri (git-reference
931 (url "https://github.com/edbrowse/edbrowse")
932 (commit (string-append "v" version))))
933 (file-name (git-file-name name version))
934 (sha256
935 (base32 "04fly77d20h1g6i36rv3pca44vpi0adin8k3hfan57bxy9nx8iww"))))
936 (build-system gnu-build-system)
937 (inputs (list curl-ssh pcre2 quickjs-ng openssl readline unixodbc))
938 (native-inputs (list perl pkg-config))
939 (arguments
940 (list
941 #:make-flags
942 #~(list (string-append "CC=" #$(cc-for-target))
943 (string-append "PREFIX=" #$output)
944 "CPPFLAGS=-DQ_NG=1"
945 "QUICKJS_LIB_NAME=qjs")
946 #:tests? #f ; Edbrowse doesn't have tests
947 #:phases
948 #~(modify-phases %standard-phases
949 (delete 'configure))))
950 (home-page "https://edbrowse.org/")
951 (synopsis "Command-line editor and web browser")
952 (description "Edbrowse is a combination editor, browser, and mail client that is
953100% text based. The interface is similar to /bin/ed, though there are many more
954features, such as editing multiple files simultaneously, and rendering html. This
955program was originally written for blind users, but many sighted users have taken
956advantage of the unique scripting capabilities of this program, which can be found
957nowhere else. A batch job, or cron job, can access web pages on the internet, submit
958forms, and send email, with no human intervention whatsoever. edbrowse can also tap
959into databases through odbc. It was primarily written by Karl Dahlke.")
960 (license license:gpl2+)))