gnu: lagrange: Update to 1.3.3.
[jackhill/guix/guix.git] / gnu / packages / web-browsers.scm
CommitLineData
c21a2562 1;;; GNU Guix --- Functional package management for GNU
8bdc36d4 2;;; Copyright © 2014 John Darrington <jmd@gnu.org>
5d3db373 3;;; Copyright © 2014, 2019 Mark H Weaver <mhw@netris.org>
320ba590 4;;; Copyright © 2015, 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
3c8ba11a 5;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
7610c3ca 6;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
4ba90a55 7;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
c648781c 8;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
f0c817a7 9;;; Copyright © 2018 Timo Eisenmann <eisenmann@fn.de>
18974c1e 10;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
0e4cee0e 11;;; Copyright © 2019 Clément Lassieur <clement@lassieur.org>
d7c58c3e 12;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
e71c7f6a 13;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
5b4db516 14;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
cc0aaf20 15;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
199ebb12 16;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
6e4f62ad 17;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
865728dd 18;;; Copyright © 2021 Cage <cage-dev@twistfold.it>
1463e950 19;;; Copyright © 2021 Benoit Joly <benoit@benoitj.ca>
8ec8fe0f 20;;; Copyright © 2021 Alexander Krotov <krotov@iitp.ru>
c21a2562
KY
21;;;
22;;; This file is part of GNU Guix.
23;;;
24;;; GNU Guix is free software; you can redistribute it and/or modify it
25;;; under the terms of the GNU General Public License as published by
26;;; the Free Software Foundation; either version 3 of the License, or (at
27;;; your option) any later version.
28;;;
29;;; GNU Guix is distributed in the hope that it will be useful, but
30;;; WITHOUT ANY WARRANTY; without even the implied warranty of
31;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32;;; GNU General Public License for more details.
33;;;
34;;; You should have received a copy of the GNU General Public License
35;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
36
0c3953ea 37(define-module (gnu packages web-browsers)
dfb99268
TGR
38 #:use-module (guix build-system asdf)
39 #:use-module (guix build-system cmake)
40 #:use-module (guix build-system glib-or-gtk)
41 #:use-module (guix build-system gnu)
42 #:use-module (guix build-system go)
43 #:use-module (guix build-system python)
44 #:use-module (guix download)
45 #:use-module (guix git-download)
c21a2562
KY
46 #:use-module ((guix licenses) #:prefix license:)
47 #:use-module (guix packages)
6e4f62ad 48 #:use-module (guix utils)
c21a2562 49 #:use-module (gnu packages)
e71c7f6a 50 #:use-module (gnu packages backup)
c21a2562 51 #:use-module (gnu packages compression)
865728dd 52 #:use-module (gnu packages curl)
7610c3ca 53 #:use-module (gnu packages documentation)
c21a2562
KY
54 #:use-module (gnu packages fltk)
55 #:use-module (gnu packages fontutils)
199ebb12 56 #:use-module (gnu packages fonts)
e71c7f6a 57 #:use-module (gnu packages freedesktop)
dfb99268 58 #:use-module (gnu packages gcc)
865728dd 59 #:use-module (gnu packages gettext)
e71c7f6a 60 #:use-module (gnu packages glib)
dfb99268
TGR
61 #:use-module (gnu packages gnome)
62 #:use-module (gnu packages gnome-xyz)
c5196ac7 63 #:use-module (gnu packages gnupg)
dfb99268
TGR
64 #:use-module (gnu packages gtk)
65 #:use-module (gnu packages image)
8bdc36d4 66 #:use-module (gnu packages libevent)
c5196ac7 67 #:use-module (gnu packages libidn)
8ec8fe0f 68 #:use-module (gnu packages libunistring)
4cd05788 69 #:use-module (gnu packages linux)
acad932e 70 #:use-module (gnu packages lisp)
88f06fd0 71 #:use-module (gnu packages lisp-xyz)
700987f7 72 #:use-module (gnu packages lua)
6e4f62ad 73 #:use-module (gnu packages man)
199ebb12 74 #:use-module (gnu packages markup)
8ec8fe0f 75 #:use-module (gnu packages mp3)
865728dd 76 #:use-module (gnu packages nano)
c5196ac7 77 #:use-module (gnu packages ncurses)
8ec8fe0f 78 #:use-module (gnu packages pcre)
c21a2562
KY
79 #:use-module (gnu packages perl)
80 #:use-module (gnu packages pkg-config)
7610c3ca 81 #:use-module (gnu packages python)
1b2f753d 82 #:use-module (gnu packages python-web)
44d10b1f 83 #:use-module (gnu packages python-xyz)
7610c3ca 84 #:use-module (gnu packages qt)
8ec8fe0f 85 #:use-module (gnu packages sdl)
cd0322a3 86 #:use-module (gnu packages sqlite)
c21a2562 87 #:use-module (gnu packages tls)
700987f7 88 #:use-module (gnu packages webkit)
dfb99268 89 #:use-module (gnu packages xorg))
c21a2562 90
e71c7f6a
RG
91(define-public midori
92 (package
93 (name "midori")
94 (version "9.0")
95 (source
96 (origin
97 (method url-fetch)
98 (uri
99 (string-append "https://github.com/midori-browser/core/releases/"
100 "download/v" version "/" name "-v" version ".tar.gz"))
101 (sha256
102 (base32
103 "05i04qa83dnarmgkx4xsk6fga5lw1lmslh4rb3vhyyy4ala562jy"))))
104 (build-system cmake-build-system)
105 (arguments
106 `(#:imported-modules
107 (,@%cmake-build-system-modules
108 (guix build glib-or-gtk-build-system))
109 #:modules
110 ((guix build cmake-build-system)
111 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
112 (guix build utils))
113 #:phases
114 (modify-phases %standard-phases
115 (add-after 'install 'glib-or-gtk-compile-schemas
116 (assoc-ref glib-or-gtk:%standard-phases
117 'glib-or-gtk-compile-schemas))
118 (add-after 'install 'glib-or-gtk-wrap
119 (assoc-ref glib-or-gtk:%standard-phases
120 'glib-or-gtk-wrap)))))
121 (native-inputs
122 `(("glib:bin" ,glib "bin")
123 ("gtk+:bin" ,gtk+ "bin")
124 ("intltool" ,intltool)
125 ("pkg-config" ,pkg-config)))
126 (inputs
127 `(("adwaita-icon-theme" ,adwaita-icon-theme)
128 ("gcr" ,gcr)
129 ("glib" ,glib)
130 ("glib-networking" ,glib-networking)
131 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
132 ("gtk+" ,gtk+)
133 ("json-glib" ,json-glib)
134 ("libarchive" ,libarchive)
135 ("libpeas" ,libpeas)
136 ("libsoup" ,libsoup)
137 ("sqlite" ,sqlite)
138 ("vala" ,vala)
139 ("webkitgtk" ,webkitgtk)))
140 (synopsis "Lightweight graphical web browser")
141 (description "@code{Midori} is a lightweight, Webkit-based web browser.
142It features integration with GTK+3, configurable web search engine, bookmark
143management, extensions such as advertisement blocker and colorful tabs.")
144 (home-page "https://www.midori-browser.org")
145 (license license:lgpl2.1+)))
146
c21a2562
KY
147(define-public dillo
148 (package
149 (name "dillo")
150 (version "3.0.5")
151 (source (origin
152 (method url-fetch)
62418049
TGR
153 (uri (string-append "https://www.dillo.org/download/"
154 "dillo-" version ".tar.bz2"))
c21a2562
KY
155 (sha256
156 (base32
157 "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv"))))
158 (build-system gnu-build-system)
159 (arguments `(#:configure-flags '("--enable-ssl" "--enable-ipv6")))
160 (native-inputs `(("pkg-config" ,pkg-config)))
161 (inputs `(("fltk" ,fltk)
162 ("fontconfig" ,fontconfig)
4bd428a7 163 ("libjpeg" ,libjpeg-turbo)
c21a2562
KY
164 ("libpng" ,libpng)
165 ("libxcursor" ,libxcursor)
166 ("libxft" ,libxft)
167 ("libxi" ,libxi)
168 ("libxinerama" ,libxinerama)
5d3db373 169 ("openssl" ,openssl-1.0) ;XXX try latest openssl for dillo > 3.0.5
c21a2562
KY
170 ("perl" ,perl)
171 ("zlib" ,zlib)))
172 (synopsis "Very small and fast graphical web browser")
173 (description "Dillo is a minimalistic web browser particularly intended for
174older or slower computers and embedded systems.")
62418049 175 (home-page "https://www.dillo.org")
c21a2562 176 (license license:gpl3+)))
7610c3ca 177
8bdc36d4
KK
178(define-public links
179 (package
180 (name "links")
86a119e3 181 (version "2.22")
8bdc36d4
KK
182 (source (origin
183 (method url-fetch)
184 (uri (string-append "http://links.twibright.com/download/"
5dcd4007 185 "links-" version ".tar.bz2"))
7696af42 186 (sha256
8bdc36d4 187 (base32
86a119e3 188 "0k88qbmq0mf6zmk2v158c0rxvqbi7ysn58xyf4qqw7kz79mrhr03"))))
8bdc36d4
KK
189 (build-system gnu-build-system)
190 (arguments
191 `(#:phases
192 (modify-phases %standard-phases
193 (replace 'configure
194 (lambda* (#:key outputs #:allow-other-keys)
195 ;; The tarball uses a very old version of autconf. It doesn't
196 ;; understand extra flags like `--enable-fast-install', so
197 ;; we need to invoke it with just what it understands.
198 (let ((out (assoc-ref outputs "out")))
199 ;; 'configure' doesn't understand '--host'.
200 ,@(if (%current-target-system)
201 `((setenv "CHOST" ,(%current-target-system)))
202 '())
203 (setenv "CONFIG_SHELL" (which "bash"))
b8b34be6
TGR
204 (invoke "./configure"
205 (string-append "--prefix=" out)
206 "--enable-graphics")
207 #t))))))
4cd05788
TGR
208 (native-inputs `(("linux-libre-headers" ,linux-libre-headers)
209 ("pkg-config" ,pkg-config)))
210 (inputs `(("gpm" ,gpm)
211 ("libevent" ,libevent)
4bd428a7 212 ("libjpeg" ,libjpeg-turbo)
8bdc36d4 213 ("libpng" ,libpng)
77986a6a
TGR
214 ("libtiff" ,libtiff)
215 ("libxt" ,libxt)
216 ("openssl" ,openssl)
217 ("zlib" ,zlib)))
8bdc36d4
KK
218 (synopsis "Text and graphics mode web browser")
219 (description "Links is a graphics and text mode web browser, with many
220features including, tables, builtin image display, bookmarks, SSL and more.")
221 (home-page "http://links.twibright.com")
222 ;; The distribution contains a copy of GPLv2
223 ;; However, the copyright notices simply say:
224 ;; "This file is a part of the Links program, released under GPL."
225 ;; Therefore, under the provisions of Section 9, we can choose
226 ;; any version ever published by the FSF.
227 ;; One file (https.c) contains an exception permitting
228 ;; linking of the program with openssl.
229 (license license:gpl1+)))
230
700987f7 231(define-public luakit
232 (package
233 (name "luakit")
3f0d9455 234 (version "2.2")
700987f7 235 (source (origin
320ba590
EF
236 (method git-fetch)
237 (uri (git-reference
b0e7b699 238 (url "https://github.com/luakit/luakit")
320ba590
EF
239 (commit version)))
240 (file-name (git-file-name name version))
700987f7 241 (sha256
242 (base32
3f0d9455 243 "0km5nxn6innzn8pfsvlkxvfj2z5g46fp6dy5bnmaklbn13mqlcrn"))))
700987f7 244 (inputs
b42b5afd 245 `(("lua-5.1" ,lua-5.1)
700987f7 246 ("gtk+" ,gtk+)
b42b5afd
MW
247 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
248 ("glib-networking" ,glib-networking)
249 ("lua5.1-filesystem" ,lua5.1-filesystem)
250 ("luajit" ,luajit)
251 ("webkitgtk" ,webkitgtk)
252 ("sqlite" ,sqlite)))
700987f7 253 (native-inputs
b42b5afd 254 `(("pkg-config" ,pkg-config)))
700987f7 255 (build-system glib-or-gtk-build-system)
256 (arguments
257 '(#:make-flags
258 (let ((out (assoc-ref %outputs "out")))
259 (list
260 "CC=gcc"
261 "LUA_BIN_NAME=lua"
262 "DEVELOPMENT_PATHS=0"
263 (string-append "PREFIX=" out)
264 (string-append "XDGPREFIX=" out "/etc/xdg")))
265 #:phases
266 (modify-phases %standard-phases
267 (add-before 'build 'lfs-workaround
268 (lambda _
269 (setenv "LUA_CPATH"
270 (string-append
271 (assoc-ref %build-inputs "lua5.1-filesystem")
272 "/lib/lua/5.1/?.so;;"))
273 #t))
274 (delete 'configure)
275 (delete 'check)
276 (add-after 'install 'wrap
277 (lambda* (#:key inputs outputs #:allow-other-keys)
278 (let* ((luakit (assoc-ref outputs "out"))
279 (lua5.1-filesystem (assoc-ref inputs "lua5.1-filesystem") )
280 (gtk (assoc-ref inputs "gtk+"))
281 (gtk-share (string-append gtk "/share")))
282 (wrap-program (string-append luakit "/bin/luakit")
283 `("LUA_CPATH" prefix
284 (,(string-append lua5.1-filesystem
f9984535
RM
285 "/lib/lua/5.1/?.so;;")))
286 `("XDG_CONFIG_DIRS" prefix
287 (,(string-append luakit "/etc/xdg/"))))
700987f7 288 #t))))))
289 (synopsis "Fast, lightweight, and simple browser based on WebKit")
290 (description "Luakit is a fast, lightweight, and simple to use
291micro-browser framework extensible by Lua using the WebKit web content engine
292and the GTK+ toolkit.")
293 (home-page "https://luakit.github.io/")
294 (license license:gpl3+)))
295
c5196ac7
KK
296(define-public lynx
297 (package
298 (name "lynx")
201a507b 299 (version "2.9.0dev.6")
c5196ac7
KK
300 (source (origin
301 (method url-fetch)
302 (uri (string-append
303 "http://invisible-mirror.net/archives/lynx/tarballs"
304 "/lynx" version ".tar.bz2"))
305 (sha256
306 (base32
201a507b 307 "1cjkpwxc1r8x8q73bgh9a4skaph1bwa0anml6f6lvf7lh5zvxw3q"))))
c5196ac7
KK
308 (build-system gnu-build-system)
309 (native-inputs `(("pkg-config" ,pkg-config)
310 ("perl" ,perl)))
311 (inputs `(("ncurses" ,ncurses)
312 ("libidn" ,libidn)
0e4cee0e 313 ("openssl" ,openssl)
c5196ac7
KK
314 ("libgcrypt" ,libgcrypt)
315 ("unzip" ,unzip)
316 ("zlib" ,zlib)
317 ("gzip" ,gzip)
318 ("bzip2" ,bzip2)))
319 (arguments
320 `(#:configure-flags
0e4cee0e 321 (let ((openssl (assoc-ref %build-inputs "openssl")))
c5196ac7
KK
322 `("--with-pkg-config"
323 "--with-screen=ncurses"
324 "--with-zlib"
325 "--with-bzlib"
0e4cee0e 326 ,(string-append "--with-ssl=" openssl)
c5196ac7
KK
327 ;; "--with-socks5" ; XXX TODO
328 "--enable-widec"
329 "--enable-ascii-ctypes"
330 "--enable-local-docs"
331 "--enable-htmlized-cfg"
332 "--enable-gzip-help"
333 "--enable-nls"
334 "--enable-ipv6"))
335 #:tests? #f ; no check target
dc1d3cde
KK
336 #:phases
337 (modify-phases %standard-phases
e3cea0d5
LF
338 (add-before 'configure 'set-makefile-shell
339 (lambda _ (substitute* "po/makefile.inn"
340 (("/bin/sh") (which "sh")))
341 #t))
dc1d3cde
KK
342 (replace 'install
343 (lambda* (#:key (make-flags '()) #:allow-other-keys)
b8b34be6
TGR
344 (apply invoke "make" "install-full" make-flags)
345 #t)))))
c5196ac7
KK
346 (synopsis "Text Web Browser")
347 (description
348 "Lynx is a fully-featured World Wide Web (WWW) client for users running
349cursor-addressable, character-cell display devices. It will display Hypertext
350Markup Language (HTML) documents containing links to files on the local
351system, as well as files on remote systems running http, gopher, ftp, wais,
352nntp, finger, or cso/ph/qi servers. Lynx can be used to access information on
353the WWW, or to build information systems intended primarily for local
354access.")
9c2917f9 355 (home-page "https://lynx.invisible-island.net/")
faf2843b
EF
356 ;; This was fixed in 2.8.9dev.10.
357 (properties `((lint-hidden-cve . ("CVE-2016-9179"))))
c5196ac7
KK
358 (license license:gpl2)))
359
199ebb12 360(define-public kristall
361 ;; Fixes to the build system applied after the latest tag
362 ;; Use tagged release when updating
363 (let ((commit "204b08a9303e75cd8d4c252b0554935062766f86")
364 (revision "1"))
365 (package
366 (name "kristall")
367 (version (string-append "0.3-" revision "." (string-take commit 7)))
368 (source
369 (origin
370 (method git-fetch)
371 (uri (git-reference
372 (url "https://github.com/MasterQ32/kristall")
373 (commit commit)))
374 (file-name (git-file-name name version))
375 (sha256
376 (base32
377 "1mymq0dh6r0829x74j0jkw8hw46amqwbznlf1b4ra6w77h9yz3lj"))
378 (modules '((srfi srfi-1)
379 (ice-9 ftw)
380 (guix build utils)))
381 (snippet
382 '(let ((preserved-lib-files '("luis-l-gist")))
383 (with-directory-excursion "lib"
384 (for-each
385 (lambda (directory)
386 (simple-format #t "deleting: ~A\n" directory)
387 (delete-file-recursively directory))
388 (lset-difference string=?
389 (scandir ".")
390 (cons* "." ".." preserved-lib-files))))
391 ;; Contains executable of 7z and pscp
392 (delete-file-recursively "ci/tools")
393 ;; Remove bundled fonts
394 (delete-file-recursively "src/fonts")
395 #t))))
396 (build-system gnu-build-system)
397 (arguments
398 `(#:modules ((guix build gnu-build-system)
399 (guix build qt-utils)
400 (guix build utils))
401 #:imported-modules (,@%gnu-build-system-modules
402 (guix build qt-utils))
403 #:make-flags
404 (list (string-append "PREFIX=" %output))
405 #:phases
406 (modify-phases %standard-phases
407 (delete 'configure) ; no ./configure script
408 (delete 'check) ; no check target
409 (add-before 'build 'set-program-version
410 (lambda _
411 ;; configure.ac relies on ‘git --describe’ to get the version.
412 ;; Patch it to just return the real version number directly.
413 (substitute* "src/kristall.pro"
414 (("(KRISTALL_VERSION=).*" _ match)
415 (string-append match ,version "\n")))
416 #t))
417 (add-before 'build 'dont-use-bundled-cmark
418 (lambda _
419 (substitute* "src/kristall.pro"
420 (("(^include\\(.*cmark.*)" _ match)
421 (string-append
422 "LIBS += -I" (assoc-ref %build-inputs "cmark") " -lcmark")))
423 #t))
424 (add-before 'build 'dont-use-bundled-breeze-stylesheet
425 (lambda _
426 (substitute* "src/kristall.pro"
427 (("../lib/BreezeStyleSheets/breeze.qrc")
428 (string-append
429 (assoc-ref %build-inputs "breeze-stylesheet") "/breeze.qrc")))
430 #t))
431 (add-before 'build 'dont-use-bundled-fonts
432 (lambda _
433 (substitute* "src/kristall.pro"
434 ((".*fonts.qrc.*") ""))
435 (substitute* "src/main.cpp"
436 (("/fonts/OpenMoji-Color")
437 (string-append
438 (assoc-ref %build-inputs "font-openmoji")
439 "/share/fonts/truetype/OpenMoji-Color"))
440 (("/fonts/NotoColorEmoji")
441 (string-append
442 (assoc-ref %build-inputs "font-google-noto")
443 "/share/fonts/truetype/NotoColorEmoji")))
444 #t))
445 (add-after 'install 'wrap-program
446 (lambda* (#:key outputs #:allow-other-keys)
447 (let ((out (assoc-ref outputs "out")))
448 (wrap-qt-program out "kristall"))
449 #t)))))
450 (native-inputs
451 `(("breeze-stylesheet"
452 ,(let ((commit "2d595a956f8a5f493aa51139a470b768a6d82cce")
453 (revision "0"))
454 (origin
455 (method git-fetch)
456 (uri
457 (git-reference
458 (url "https://github.com/Alexhuszagh/BreezeStyleSheets")
459 (commit "2d595a956f8a5f493aa51139a470b768a6d82cce")))
460 (file-name (git-file-name "breeze-stylesheet"
461 (git-version "0" revision commit)))
462 (sha256
463 (base32
464 "1kvkxkisi3czldnb43ig60l55pi4a3m2a4ixp7krhpf9fc5wp294")))))))
465 (inputs
466 `(("cmark" ,cmark)
467 ("font-google-noto" ,font-google-noto)
468 ("font-openmoji" ,font-openmoji)
469 ("openssl" ,openssl)
470 ("qtbase" ,qtbase)
471 ("qtmultimedia" ,qtmultimedia)
472 ("qtsvg" ,qtsvg)))
473 (home-page "https://kristall.random-projects.net")
474 (synopsis "Small-internet graphical client")
475 (description "Graphical small-internet client with with many features
476including multi-protocol support (gemini, HTTP, HTTPS, gopher, finger),
477bookmarks, TSL certificates management, outline generation and a tabbed
478interface.")
479 (license (list license:gpl3+
480 ;; for breeze-stylesheet
481 license:expat)))))
482
7610c3ca
KK
483(define-public qutebrowser
484 (package
485 (name "qutebrowser")
9de5d77f 486 (version "2.2.0")
7610c3ca
KK
487 (source
488 (origin
489 (method url-fetch)
a066e289 490 (uri (string-append "https://github.com/qutebrowser/"
7610c3ca
KK
491 "qutebrowser/releases/download/v" version "/"
492 "qutebrowser-" version ".tar.gz"))
493 (sha256
9de5d77f 494 (base32 "0anxhrkxqb35mxr7jr820xcfw0v514s92wffsiqap2a2sqaj0pgs"))))
7610c3ca
KK
495 (build-system python-build-system)
496 (native-inputs
44ce3ebb 497 `(("python-attrs" ,python-attrs))) ; for tests
7610c3ca
KK
498 (inputs
499 `(("python-colorama" ,python-colorama)
500 ("python-cssutils" ,python-cssutils)
1463e950 501 ("python-importlib-resources" ,python-importlib-resources)
7610c3ca
KK
502 ("python-jinja2" ,python-jinja2)
503 ("python-markupsafe" ,python-markupsafe)
504 ("python-pygments" ,python-pygments)
505 ("python-pypeg2" ,python-pypeg2)
506 ("python-pyyaml" ,python-pyyaml)
44ce3ebb
MR
507 ;; FIXME: python-pyqtwebengine needs to come before python-pyqt so
508 ;; that it's __init__.py is used first.
509 ("python-pyqtwebengine" ,python-pyqtwebengine)
7610c3ca 510 ("python-pyqt" ,python-pyqt)
44ce3ebb
MR
511 ;; While qtwebengine is provided by python-pyqtwebengine, it's
512 ;; included here so we can wrap QTWEBENGINEPROCESS_PATH.
513 ("qtwebengine" ,qtwebengine)))
7610c3ca 514 (arguments
44ce3ebb
MR
515 `(;; FIXME: With the existance of qtwebengine, tests can now run. But
516 ;; they are still disabled because test phase hangs. It's not readily
517 ;; apparent as to why.
7e232d02 518 #:tests? #f
7610c3ca
KK
519 #:phases
520 (modify-phases %standard-phases
44ce3ebb
MR
521 (add-before 'check 'set-env-offscreen
522 (lambda _
523 (setenv "QT_QPA_PLATFORM" "offscreen")
524 #t))
7610c3ca
KK
525 (add-after 'install 'install-more
526 (lambda* (#:key outputs #:allow-other-keys)
527 (let* ((out (assoc-ref outputs "out"))
528 (app (string-append out "/share/applications"))
529 (hicolor (string-append out "/share/icons/hicolor")))
7610c3ca
KK
530 (install-file "doc/qutebrowser.1"
531 (string-append out "/share/man/man1"))
7610c3ca
KK
532 (for-each
533 (lambda (i)
534 (let ((src (format #f "icons/qutebrowser-~dx~d.png" i i))
535 (dest (format #f "~a/~dx~d/apps/qutebrowser.png"
536 hicolor i i)))
537 (mkdir-p (dirname dest))
538 (copy-file src dest)))
539 '(16 24 32 48 64 128 256 512))
540 (install-file "icons/qutebrowser.svg"
541 (string-append hicolor "/scalable/apps"))
d7c58c3e 542 (substitute* "misc/org.qutebrowser.qutebrowser.desktop"
7610c3ca
KK
543 (("Exec=qutebrowser")
544 (string-append "Exec=" out "/bin/qutebrowser")))
d7c58c3e 545 (install-file "misc/org.qutebrowser.qutebrowser.desktop" app)
44ce3ebb
MR
546 #t)))
547 (add-after 'wrap 'wrap-qt-process-path
548 (lambda* (#:key inputs outputs #:allow-other-keys)
549 (let* ((out (assoc-ref outputs "out"))
550 (bin (string-append out "/bin/qutebrowser"))
551 (qt-process-path (string-append
552 (assoc-ref inputs "qtwebengine")
553 "/lib/qt5/libexec/QtWebEngineProcess")))
554 (wrap-program bin
f4d139d0 555 `("QTWEBENGINEPROCESS_PATH" = (,qt-process-path)))
7610c3ca
KK
556 #t))))))
557 (home-page "https://qutebrowser.org/")
558 (synopsis "Minimal, keyboard-focused, vim-like web browser")
559 (description "qutebrowser is a keyboard-focused browser with a minimal
44ce3ebb 560GUI. It is based on PyQt5 and QtWebEngine.")
7610c3ca 561 (license license:gpl3+)))
f0c817a7
TE
562
563(define-public vimb
564 (package
565 (name "vimb")
0ed75a5f 566 (version "3.6.0")
f0c817a7
TE
567 (source
568 (origin
569 (method git-fetch)
570 (uri (git-reference
571 (url "https://github.com/fanglingsu/vimb/")
572 (commit version)))
573 (sha256
0ed75a5f 574 (base32 "0228khh3lqbal046k6akqah7s5igq9s0wjfjbdjam75kjj42pbhj"))
f0c817a7
TE
575 (file-name (git-file-name name version))))
576 (build-system glib-or-gtk-build-system)
577 (arguments
f51905a4 578 '(#:tests? #f ; no tests
f0c817a7
TE
579 #:make-flags (list "CC=gcc"
580 "DESTDIR="
581 (string-append "PREFIX=" %output))
582 #:phases
583 (modify-phases %standard-phases
584 (delete 'configure))))
585 (inputs
586 `(("glib-networking" ,glib-networking)
587 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
588 ("webkitgtk" ,webkitgtk)))
589 (native-inputs
590 `(("pkg-config" ,pkg-config)))
591 (home-page "https://fanglingsu.github.io/vimb/")
592 (synopsis "Fast and lightweight Vim-like web browser")
593 (description "Vimb is a fast and lightweight vim like web browser based on
594the webkit web browser engine and the GTK toolkit. Vimb is modal like the great
595vim editor and also easily configurable during runtime. Vimb is mostly keyboard
596driven and does not detract you from your daily work.")
597 (license license:gpl3+)))
18974c1e 598
ec70df72 599(define-public nyxt
573489fb
PN
600 (package
601 (name "nyxt")
602 ;; Package the pre-release because latest stable 1.5.0 does not build
603 ;; anymore.
a2f3a456 604 (version "2-pre-release-6")
573489fb
PN
605 (source
606 (origin
607 (method git-fetch)
608 (uri (git-reference
609 ;; TODO: Mirror seems to hang, let's fallback to GitHub for now.
610 ;; (url "https://source.atlas.engineer/public/nyxt")
611 (url "https://github.com/atlas-engineer/nyxt")
612 (commit version)))
613 (sha256
614 (base32
a2f3a456 615 "0kcqp3p070i6x2jj27h8pxzvmhrzsl4kl3vkc8m76abkxc9lvn03"))
573489fb
PN
616 (file-name (git-file-name "nyxt" version))))
617 (build-system gnu-build-system)
618 (arguments
619 `(#:make-flags (list "nyxt" "NYXT_INTERNAL_QUICKLISP=false"
620 (string-append "DESTDIR=" (assoc-ref %outputs "out"))
621 "PREFIX=")
622 #:strip-binaries? #f ; Stripping breaks SBCL binaries.
623 #:phases
624 (modify-phases %standard-phases
573489fb
PN
625 (delete 'configure)
626 (add-before 'build 'fix-common-lisp-cache-folder
627 (lambda _
628 (setenv "HOME" "/tmp")
629 #t))
0da64c60
PN
630 (add-before 'build 'set-version
631 (lambda _
632 (setenv "NYXT_VERSION" ,version)
633 #t))
634 (add-before 'check 'configure-tests
635 (lambda _
636 (setenv "NYXT_TESTS_NO_NETWORK" "1")
637 (setenv "NYXT_TESTS_ERROR_ON_FAIL" "1")
638 #t))
573489fb
PN
639 (add-after 'install 'wrap-program
640 (lambda* (#:key inputs outputs #:allow-other-keys)
641 (let* ((bin (string-append (assoc-ref outputs "out") "/bin/nyxt"))
642 (glib-networking (assoc-ref inputs "glib-networking"))
643 (libs '("gsettings-desktop-schemas"))
644 (path (string-join
645 (map (lambda (lib)
646 (string-append (assoc-ref inputs lib) "/lib"))
647 libs)
648 ":"))
649 (gi-path (string-join
650 (map (lambda (lib)
21e79225
PN
651 (string-append (assoc-ref inputs lib)
652 "/lib/girepository-1.0"))
573489fb
PN
653 libs)
654 ":"))
655 (xdg-path (string-join
656 (map (lambda (lib)
657 (string-append (assoc-ref inputs lib) "/share"))
658 libs)
659 ":")))
660 (wrap-program bin
661 `("GIO_EXTRA_MODULES" prefix
662 (,(string-append glib-networking "/lib/gio/modules")))
663 `("GI_TYPELIB_PATH" prefix (,gi-path))
664 `("LD_LIBRARY_PATH" ":" prefix (,path))
665 `("XDG_DATA_DIRS" ":" prefix (,xdg-path)))
666 #t))))))
667 (native-inputs
668 `(("prove" ,sbcl-prove)
669 ("sbcl" ,sbcl)))
670 (inputs
0057027f
PN
671 `(("alexandria" ,sbcl-alexandria)
672 ("bordeaux-threads" ,sbcl-bordeaux-threads)
2e7c2dc8 673 ("cl-calispel" ,sbcl-calispel)
0057027f
PN
674 ("cl-containers" ,sbcl-cl-containers)
675 ("cl-css" ,sbcl-cl-css)
a2f3a456
PN
676 ("cl-custom-hash-table" ,sbcl-custom-hash-table)
677 ("cl-html-diff" ,sbcl-cl-html-diff)
0057027f
PN
678 ("cl-json" ,sbcl-cl-json)
679 ("cl-markup" ,sbcl-cl-markup)
680 ("cl-ppcre" ,sbcl-cl-ppcre)
681 ("cl-prevalence" ,sbcl-cl-prevalence)
682 ("closer-mop" ,sbcl-closer-mop)
683 ("cluffer" ,sbcl-cluffer)
684 ("dexador" ,sbcl-dexador)
685 ("enchant" ,sbcl-enchant)
a2f3a456 686 ("file-attributes" ,sbcl-file-attributes)
0057027f 687 ("fset" ,sbcl-fset)
a2f3a456 688 ("hu.dwim.defclass-star" ,sbcl-hu.dwim.defclass-star)
0057027f
PN
689 ("iolib" ,sbcl-iolib)
690 ("local-time" ,sbcl-local-time)
691 ("log4cl" ,sbcl-log4cl)
0057027f
PN
692 ("mk-string-metrics" ,sbcl-mk-string-metrics)
693 ("moptilities" ,sbcl-moptilities)
2e7c2dc8 694 ("named-readtables" ,sbcl-named-readtables)
0057027f
PN
695 ("parenscript" ,sbcl-parenscript)
696 ("plump" ,sbcl-plump)
697 ("quri" ,sbcl-quri)
698 ("serapeum" ,sbcl-serapeum)
699 ("str" ,sbcl-cl-str)
700 ("swank" ,sbcl-slime-swank)
701 ("trivia" ,sbcl-trivia)
702 ("trivial-clipboard" ,sbcl-trivial-clipboard)
703 ("trivial-features" ,sbcl-trivial-features)
704 ("trivial-package-local-nicknames" ,sbcl-trivial-package-local-nicknames)
705 ("trivial-types" ,sbcl-trivial-types)
706 ("unix-opts" ,sbcl-unix-opts)
573489fb 707 ;; WebKitGTK deps
0057027f
PN
708 ("cl-cffi-gtk" ,sbcl-cl-cffi-gtk)
709 ("cl-webkit" ,sbcl-cl-webkit)
573489fb
PN
710 ("glib-networking" ,glib-networking)
711 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
712 (synopsis "Extensible web-browser in Common Lisp")
713 (home-page "https://nyxt.atlas.engineer")
714 (description "Nyxt is a keyboard-oriented, extensible web-browser
676e21e4
PN
715designed for power users. The application has familiar Emacs and VI
716key-bindings and is fully configurable and extensible in Common Lisp.")
573489fb 717 (license license:bsd-3)))
90a31c73 718
01bb2e30 719(define-public next
ec70df72 720 (deprecated-package "next" nyxt))
01bb2e30
PN
721
722(define-public sbcl-next
ec70df72 723 (deprecated-package "sbcl-next" nyxt))
5b4db516 724
8ec8fe0f
AK
725(define-public lagrange
726 (package
727 (name "lagrange")
4ba90a55 728 (version "1.3.3")
8ec8fe0f
AK
729 (source
730 (origin
731 (method url-fetch)
732 (uri
733 (string-append "https://git.skyjake.fi/skyjake/lagrange/releases/"
734 "download/v" version "/lagrange-" version ".tar.gz"))
735 (sha256
4ba90a55 736 (base32 "19gafa8mz6zb5n37gfgan51clyxq8vw2grrvsb2l58ksynxwhwf4"))))
8ec8fe0f
AK
737 (build-system cmake-build-system)
738 (arguments
739 `(#:tests? #false)) ;no tests
740 (native-inputs
741 `(("pkg-config" ,pkg-config)))
742 (inputs
743 `(("libunistring" ,libunistring)
744 ("mpg123" ,mpg123)
745 ("openssl" ,openssl)
746 ("pcre" ,pcre)
747 ("sdl2" ,sdl2)
748 ("zlib" ,zlib)))
749 (home-page "https://gmi.skyjake.fi/lagrange/")
750 (synopsis "Graphical Gemini client")
751 (description
752 "Lagrange is a desktop GUI client for browsing Geminispace. It offers
753modern conveniences familiar from web browsers, such as smooth scrolling,
754inline image viewing, multiple tabs, visual themes, Unicode fonts, bookmarks,
755history, and page outlines.")
756 (license license:bsd-2)))
757
6e4f62ad
ASM
758(define-public gmni
759 (let ((commit "d8f0870446c471a42612d6a8e853ad9b723a6d39")
760 (revision "0"))
761 (package
762 (name "gmni")
763 (version (git-version "0" revision commit))
764 (source (origin
765 (method git-fetch)
766 (uri (git-reference
767 (url "https://git.sr.ht/~sircmpwn/gmni")
768 (commit commit)))
769 (sha256
770 (base32
771 "1h0iqm7l0i06glf5b2872w656s1mjdiqva14zh6sl4f5yp7zmvwr"))
772 (file-name (git-file-name name version))))
773 (build-system gnu-build-system)
774 (arguments
775 `(#:tests? #f ; no check target
776 #:make-flags (list (string-append "CC=" ,(cc-for-target)))))
777 (inputs
778 `(("openssl" ,openssl)))
779 (native-inputs
780 `(("pkg-config" ,pkg-config)
781 ("scdoc" ,scdoc)))
782 (home-page "https://sr.ht/~sircmpwn/gmni")
783 (synopsis "Minimalist command line Gemini client")
784 (description "The gmni package includes:
785
786@itemize
787@item A CLI utility (like curl): gmni
788@item A line-mode browser: gmnlm
789@end itemize")
790 (license (list license:gpl3+
791 (license:non-copyleft
792 "https://curl.se/docs/copyright.html"
793 "Used only for files taken from curl."))))))
794
5b4db516
W
795(define-public bombadillo
796 (package
797 (name "bombadillo")
d2ff5931 798 (version "2.3.3")
5b4db516
W
799 (source (origin
800 (method git-fetch)
801 (uri (git-reference
802 (url "https://tildegit.org/sloum/bombadillo")
803 (commit version)))
804 (sha256
805 (base32
d2ff5931 806 "02w6h44sxzmk3bkdidl8xla0i9rwwpdqljnvcbydx5kyixycmg0q"))
5b4db516
W
807 (file-name (git-file-name name version))))
808 (build-system go-build-system)
809 (arguments
810 `(#:import-path "tildegit.org/sloum/bombadillo"
811 #:install-source? #f
812 #:phases (modify-phases %standard-phases
813 (add-after 'install 'install-data
814 (lambda* (#:key outputs #:allow-other-keys)
815 (let* ((builddir "src/tildegit.org/sloum/bombadillo")
816 (out (assoc-ref outputs "out"))
817 (pkg (strip-store-file-name out))
818 (sharedir (string-append out "/share"))
819 (appdir (string-append sharedir "/applications"))
820 (docdir (string-append sharedir "/doc/" pkg))
821 (mandir (string-append sharedir "/man/man1"))
822 (pixdir (string-append sharedir "/pixmaps")))
823 (with-directory-excursion builddir
824 (install-file "bombadillo.desktop" appdir)
5b4db516
W
825 (install-file "bombadillo.1" mandir)
826 (install-file "bombadillo-icon.png" pixdir)
827 #t)))))))
70e1199c 828 (home-page "https://bombadillo.colorfield.space")
5b4db516
W
829 (synopsis "Terminal browser for the gopher, gemini, and finger protocols")
830 (description "Bombadillo is a non-web browser for the terminal with
831vim-like key bindings, a document pager, configurable settings, and robust
832command selection. The following protocols are supported as first-class
833citizens: gopher, gemini, finger, and local. There is also support for telnet,
834http, and https via third-party applications.")
835 (license license:gpl3+)))
865728dd 836
837(define-public tinmop
838 (package
839 (name "tinmop")
a9184453 840 (version "0.6.2")
865728dd 841 (source
842 (origin
843 (method git-fetch)
844 (uri (git-reference
845 (url "https://notabug.org/cage/tinmop")
846 (commit (string-append "v" version))))
847 (file-name (git-file-name name version))
848 (sha256
a9184453 849 (base32 "1fz52agvxnavz375apb1pjalf3myjllr4pc096b6qvc6vzhadg4c"))))
865728dd 850 (build-system gnu-build-system)
851 (native-inputs
852 `(("curl" ,curl)
853 ("gettext" ,gnu-gettext)
854 ("gnupg" ,gnupg)
855 ("sbcl" ,sbcl)))
856 (inputs
857 `(("access" ,sbcl-access)
858 ("alexandria" ,sbcl-alexandria)
859 ("babel" ,sbcl-babel)
860 ("bordeaux-threads" ,sbcl-bordeaux-threads)
861 ("cl-base64" ,sbcl-cl-base64)
862 ("cl-colors2" ,sbcl-cl-colors2)
863 ("cl-html5-parser" ,sbcl-cl-html5-parser)
864 ("cl-i18n" ,sbcl-cl-i18n)
865 ("cl-ppcre" ,sbcl-cl-ppcre)
866 ("cl-spark" ,sbcl-cl-spark)
867 ("cl-sqlite" ,sbcl-cl-sqlite)
868 ("cl+ssl" ,sbcl-cl+ssl)
869 ("clunit2" ,sbcl-clunit2)
870 ("croatoan" ,sbcl-croatoan)
871 ("crypto-shortcuts" ,sbcl-crypto-shortcuts)
872 ("drakma" ,sbcl-drakma)
873 ("esrap" ,sbcl-esrap)
874 ("ieee-floats" ,sbcl-ieee-floats)
875 ("local-time" ,sbcl-local-time)
876 ("log4cl" ,sbcl-log4cl)
877 ("marshal" ,sbcl-marshal)
878 ("nano" ,nano)
879 ("openssl" ,openssl)
880 ("osicat" ,sbcl-osicat)
881 ("parse-number" ,sbcl-parse-number)
882 ("percent-encoding" ,sbcl-percent-encoding)
883 ("sxql" ,sbcl-sxql)
884 ("sxql-composer" ,sbcl-sxql-composer)
885 ("tooter" ,sbcl-tooter)
886 ("unix-opts" ,sbcl-unix-opts)
887 ("usocket" ,sbcl-usocket)
888 ("xdg-utils" ,xdg-utils)))
889 (arguments
890 `(#:tests? #f
891 #:strip-binaries? #f
892 #:phases
893 (modify-phases %standard-phases
894 (add-after 'unpack 'set-home
895 (lambda _
896 (setenv "HOME" "/tmp")
897 #t))
898 (add-after 'configure 'fix-asdf
899 (lambda* (#:key inputs #:allow-other-keys)
900 (substitute* "Makefile.in"
901 (("LISP_COMPILER) ")
902 "LISP_COMPILER) --eval \"(require 'asdf)\" --eval \"(push \\\"$$(pwd)/\\\" asdf:*central-registry*)\" "))
903 #t)))))
904 (synopsis "Gemini and pleroma client with a terminal interface")
905 (description
906 "This package provides a Gemini and pleroma client with a terminal
907interface.")
908 (home-page "https://www.autistici.org/interzona/tinmop.html")
909 (license license:gpl3+)))