gnu: sbcl: Add comment explaining out-of-date version.
[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>
9605af1a 7;;; Copyright © 2018, 2019, 2020 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>
c21a2562
KY
15;;;
16;;; This file is part of GNU Guix.
17;;;
18;;; GNU Guix is free software; you can redistribute it and/or modify it
19;;; under the terms of the GNU General Public License as published by
20;;; the Free Software Foundation; either version 3 of the License, or (at
21;;; your option) any later version.
22;;;
23;;; GNU Guix is distributed in the hope that it will be useful, but
24;;; WITHOUT ANY WARRANTY; without even the implied warranty of
25;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26;;; GNU General Public License for more details.
27;;;
28;;; You should have received a copy of the GNU General Public License
29;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
30
0c3953ea 31(define-module (gnu packages web-browsers)
c21a2562
KY
32 #:use-module ((guix licenses) #:prefix license:)
33 #:use-module (guix packages)
34 #:use-module (gnu packages)
e71c7f6a 35 #:use-module (gnu packages backup)
c21a2562 36 #:use-module (gnu packages compression)
7610c3ca 37 #:use-module (gnu packages documentation)
c21a2562
KY
38 #:use-module (gnu packages fltk)
39 #:use-module (gnu packages fontutils)
e71c7f6a
RG
40 #:use-module (gnu packages freedesktop)
41 #:use-module (gnu packages glib)
700987f7 42 #:use-module (gnu packages gtk)
c5196ac7 43 #:use-module (gnu packages gnupg)
8bdc36d4 44 #:use-module (gnu packages libevent)
c5196ac7 45 #:use-module (gnu packages libidn)
acad932e 46 #:use-module (gnu packages lisp)
88f06fd0 47 #:use-module (gnu packages lisp-xyz)
700987f7 48 #:use-module (gnu packages lua)
49 #:use-module (gnu packages gnome)
e71c7f6a 50 #:use-module (gnu packages gnome-xyz)
c5196ac7 51 #:use-module (gnu packages ncurses)
c21a2562
KY
52 #:use-module (gnu packages perl)
53 #:use-module (gnu packages pkg-config)
7610c3ca 54 #:use-module (gnu packages python)
1b2f753d 55 #:use-module (gnu packages python-web)
44d10b1f 56 #:use-module (gnu packages python-xyz)
7610c3ca 57 #:use-module (gnu packages qt)
c21a2562 58 #:use-module (gnu packages image)
cd0322a3 59 #:use-module (gnu packages sqlite)
c21a2562 60 #:use-module (gnu packages tls)
700987f7 61 #:use-module (gnu packages webkit)
c21a2562 62 #:use-module (gnu packages xorg)
194d1ec3 63 #:use-module (gnu packages gcc)
c21a2562 64 #:use-module (guix download)
f0c817a7 65 #:use-module (guix git-download)
e71c7f6a 66 #:use-module (guix build-system cmake)
7610c3ca 67 #:use-module (guix build-system gnu)
700987f7 68 #:use-module (guix build-system glib-or-gtk)
acad932e 69 #:use-module (guix build-system python)
5b4db516
W
70 #:use-module (guix build-system asdf)
71 #:use-module (guix build-system go))
c21a2562 72
e71c7f6a
RG
73(define-public midori
74 (package
75 (name "midori")
76 (version "9.0")
77 (source
78 (origin
79 (method url-fetch)
80 (uri
81 (string-append "https://github.com/midori-browser/core/releases/"
82 "download/v" version "/" name "-v" version ".tar.gz"))
83 (sha256
84 (base32
85 "05i04qa83dnarmgkx4xsk6fga5lw1lmslh4rb3vhyyy4ala562jy"))))
86 (build-system cmake-build-system)
87 (arguments
88 `(#:imported-modules
89 (,@%cmake-build-system-modules
90 (guix build glib-or-gtk-build-system))
91 #:modules
92 ((guix build cmake-build-system)
93 ((guix build glib-or-gtk-build-system) #:prefix glib-or-gtk:)
94 (guix build utils))
95 #:phases
96 (modify-phases %standard-phases
97 (add-after 'install 'glib-or-gtk-compile-schemas
98 (assoc-ref glib-or-gtk:%standard-phases
99 'glib-or-gtk-compile-schemas))
100 (add-after 'install 'glib-or-gtk-wrap
101 (assoc-ref glib-or-gtk:%standard-phases
102 'glib-or-gtk-wrap)))))
103 (native-inputs
104 `(("glib:bin" ,glib "bin")
105 ("gtk+:bin" ,gtk+ "bin")
106 ("intltool" ,intltool)
107 ("pkg-config" ,pkg-config)))
108 (inputs
109 `(("adwaita-icon-theme" ,adwaita-icon-theme)
110 ("gcr" ,gcr)
111 ("glib" ,glib)
112 ("glib-networking" ,glib-networking)
113 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
114 ("gtk+" ,gtk+)
115 ("json-glib" ,json-glib)
116 ("libarchive" ,libarchive)
117 ("libpeas" ,libpeas)
118 ("libsoup" ,libsoup)
119 ("sqlite" ,sqlite)
120 ("vala" ,vala)
121 ("webkitgtk" ,webkitgtk)))
122 (synopsis "Lightweight graphical web browser")
123 (description "@code{Midori} is a lightweight, Webkit-based web browser.
124It features integration with GTK+3, configurable web search engine, bookmark
125management, extensions such as advertisement blocker and colorful tabs.")
126 (home-page "https://www.midori-browser.org")
127 (license license:lgpl2.1+)))
128
c21a2562
KY
129(define-public dillo
130 (package
131 (name "dillo")
132 (version "3.0.5")
133 (source (origin
134 (method url-fetch)
62418049
TGR
135 (uri (string-append "https://www.dillo.org/download/"
136 "dillo-" version ".tar.bz2"))
c21a2562
KY
137 (sha256
138 (base32
139 "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv"))))
140 (build-system gnu-build-system)
141 (arguments `(#:configure-flags '("--enable-ssl" "--enable-ipv6")))
142 (native-inputs `(("pkg-config" ,pkg-config)))
143 (inputs `(("fltk" ,fltk)
144 ("fontconfig" ,fontconfig)
4bd428a7 145 ("libjpeg" ,libjpeg-turbo)
c21a2562
KY
146 ("libpng" ,libpng)
147 ("libxcursor" ,libxcursor)
148 ("libxft" ,libxft)
149 ("libxi" ,libxi)
150 ("libxinerama" ,libxinerama)
5d3db373 151 ("openssl" ,openssl-1.0) ;XXX try latest openssl for dillo > 3.0.5
c21a2562
KY
152 ("perl" ,perl)
153 ("zlib" ,zlib)))
154 (synopsis "Very small and fast graphical web browser")
155 (description "Dillo is a minimalistic web browser particularly intended for
156older or slower computers and embedded systems.")
62418049 157 (home-page "https://www.dillo.org")
c21a2562 158 (license license:gpl3+)))
7610c3ca 159
8bdc36d4
KK
160(define-public links
161 (package
162 (name "links")
7696af42 163 (version "2.20.2")
8bdc36d4
KK
164 (source (origin
165 (method url-fetch)
166 (uri (string-append "http://links.twibright.com/download/"
5dcd4007 167 "links-" version ".tar.bz2"))
7696af42 168 (sha256
8bdc36d4 169 (base32
7696af42 170 "097ll98ympzfx7qfdyhc52yzvsp167x5nnjs6v8ih496wv80fksb"))))
8bdc36d4
KK
171 (build-system gnu-build-system)
172 (arguments
173 `(#:phases
174 (modify-phases %standard-phases
175 (replace 'configure
176 (lambda* (#:key outputs #:allow-other-keys)
177 ;; The tarball uses a very old version of autconf. It doesn't
178 ;; understand extra flags like `--enable-fast-install', so
179 ;; we need to invoke it with just what it understands.
180 (let ((out (assoc-ref outputs "out")))
181 ;; 'configure' doesn't understand '--host'.
182 ,@(if (%current-target-system)
183 `((setenv "CHOST" ,(%current-target-system)))
184 '())
185 (setenv "CONFIG_SHELL" (which "bash"))
b8b34be6
TGR
186 (invoke "./configure"
187 (string-append "--prefix=" out)
188 "--enable-graphics")
189 #t))))))
8bdc36d4
KK
190 (native-inputs `(("pkg-config" ,pkg-config)))
191 (inputs `(("zlib" ,zlib)
192 ("openssl" ,openssl)
4bd428a7 193 ("libjpeg" ,libjpeg-turbo)
8bdc36d4
KK
194 ("libtiff" ,libtiff)
195 ("libevent" ,libevent)
196 ("libpng" ,libpng)
197 ("libxt" ,libxt)))
198 (synopsis "Text and graphics mode web browser")
199 (description "Links is a graphics and text mode web browser, with many
200features including, tables, builtin image display, bookmarks, SSL and more.")
201 (home-page "http://links.twibright.com")
202 ;; The distribution contains a copy of GPLv2
203 ;; However, the copyright notices simply say:
204 ;; "This file is a part of the Links program, released under GPL."
205 ;; Therefore, under the provisions of Section 9, we can choose
206 ;; any version ever published by the FSF.
207 ;; One file (https.c) contains an exception permitting
208 ;; linking of the program with openssl.
209 (license license:gpl1+)))
210
700987f7 211(define-public luakit
212 (package
213 (name "luakit")
37956778 214 (version "2.1")
700987f7 215 (source (origin
320ba590
EF
216 (method git-fetch)
217 (uri (git-reference
218 (url "https://github.com/luakit/luakit.git")
219 (commit version)))
220 (file-name (git-file-name name version))
700987f7 221 (sha256
222 (base32
320ba590 223 "1qa90caxv1k6ak88fn0a7n7h0c4iv8szw6zn2axch8ig83i86az2"))))
700987f7 224 (inputs
b42b5afd 225 `(("lua-5.1" ,lua-5.1)
700987f7 226 ("gtk+" ,gtk+)
b42b5afd
MW
227 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
228 ("glib-networking" ,glib-networking)
229 ("lua5.1-filesystem" ,lua5.1-filesystem)
230 ("luajit" ,luajit)
231 ("webkitgtk" ,webkitgtk)
232 ("sqlite" ,sqlite)))
700987f7 233 (native-inputs
b42b5afd 234 `(("pkg-config" ,pkg-config)))
700987f7 235 (build-system glib-or-gtk-build-system)
236 (arguments
237 '(#:make-flags
238 (let ((out (assoc-ref %outputs "out")))
239 (list
240 "CC=gcc"
241 "LUA_BIN_NAME=lua"
242 "DEVELOPMENT_PATHS=0"
243 (string-append "PREFIX=" out)
244 (string-append "XDGPREFIX=" out "/etc/xdg")))
245 #:phases
246 (modify-phases %standard-phases
247 (add-before 'build 'lfs-workaround
248 (lambda _
249 (setenv "LUA_CPATH"
250 (string-append
251 (assoc-ref %build-inputs "lua5.1-filesystem")
252 "/lib/lua/5.1/?.so;;"))
253 #t))
254 (delete 'configure)
255 (delete 'check)
256 (add-after 'install 'wrap
257 (lambda* (#:key inputs outputs #:allow-other-keys)
258 (let* ((luakit (assoc-ref outputs "out"))
259 (lua5.1-filesystem (assoc-ref inputs "lua5.1-filesystem") )
260 (gtk (assoc-ref inputs "gtk+"))
261 (gtk-share (string-append gtk "/share")))
262 (wrap-program (string-append luakit "/bin/luakit")
263 `("LUA_CPATH" prefix
264 (,(string-append lua5.1-filesystem
f9984535
RM
265 "/lib/lua/5.1/?.so;;")))
266 `("XDG_CONFIG_DIRS" prefix
267 (,(string-append luakit "/etc/xdg/"))))
700987f7 268 #t))))))
269 (synopsis "Fast, lightweight, and simple browser based on WebKit")
270 (description "Luakit is a fast, lightweight, and simple to use
271micro-browser framework extensible by Lua using the WebKit web content engine
272and the GTK+ toolkit.")
273 (home-page "https://luakit.github.io/")
274 (license license:gpl3+)))
275
c5196ac7
KK
276(define-public lynx
277 (package
278 (name "lynx")
781e5158 279 (version "2.8.9rel.1")
c5196ac7
KK
280 (source (origin
281 (method url-fetch)
282 (uri (string-append
283 "http://invisible-mirror.net/archives/lynx/tarballs"
284 "/lynx" version ".tar.bz2"))
285 (sha256
286 (base32
781e5158 287 "15cmyyma2kz1hfaa6mwjgli8zwdzq3jv0q2cl6nwzycjfwyijzrq"))))
c5196ac7
KK
288 (build-system gnu-build-system)
289 (native-inputs `(("pkg-config" ,pkg-config)
290 ("perl" ,perl)))
291 (inputs `(("ncurses" ,ncurses)
292 ("libidn" ,libidn)
0e4cee0e 293 ("openssl" ,openssl)
c5196ac7
KK
294 ("libgcrypt" ,libgcrypt)
295 ("unzip" ,unzip)
296 ("zlib" ,zlib)
297 ("gzip" ,gzip)
298 ("bzip2" ,bzip2)))
299 (arguments
300 `(#:configure-flags
0e4cee0e 301 (let ((openssl (assoc-ref %build-inputs "openssl")))
c5196ac7
KK
302 `("--with-pkg-config"
303 "--with-screen=ncurses"
304 "--with-zlib"
305 "--with-bzlib"
0e4cee0e 306 ,(string-append "--with-ssl=" openssl)
c5196ac7
KK
307 ;; "--with-socks5" ; XXX TODO
308 "--enable-widec"
309 "--enable-ascii-ctypes"
310 "--enable-local-docs"
311 "--enable-htmlized-cfg"
312 "--enable-gzip-help"
313 "--enable-nls"
314 "--enable-ipv6"))
315 #:tests? #f ; no check target
dc1d3cde
KK
316 #:phases
317 (modify-phases %standard-phases
e3cea0d5
LF
318 (add-before 'configure 'set-makefile-shell
319 (lambda _ (substitute* "po/makefile.inn"
320 (("/bin/sh") (which "sh")))
321 #t))
dc1d3cde
KK
322 (replace 'install
323 (lambda* (#:key (make-flags '()) #:allow-other-keys)
b8b34be6
TGR
324 (apply invoke "make" "install-full" make-flags)
325 #t)))))
c5196ac7
KK
326 (synopsis "Text Web Browser")
327 (description
328 "Lynx is a fully-featured World Wide Web (WWW) client for users running
329cursor-addressable, character-cell display devices. It will display Hypertext
330Markup Language (HTML) documents containing links to files on the local
331system, as well as files on remote systems running http, gopher, ftp, wais,
332nntp, finger, or cso/ph/qi servers. Lynx can be used to access information on
333the WWW, or to build information systems intended primarily for local
334access.")
9c2917f9 335 (home-page "https://lynx.invisible-island.net/")
faf2843b
EF
336 ;; This was fixed in 2.8.9dev.10.
337 (properties `((lint-hidden-cve . ("CVE-2016-9179"))))
c5196ac7
KK
338 (license license:gpl2)))
339
7610c3ca
KK
340(define-public qutebrowser
341 (package
342 (name "qutebrowser")
9605af1a 343 (version "1.12.0")
7610c3ca
KK
344 (source
345 (origin
346 (method url-fetch)
a066e289 347 (uri (string-append "https://github.com/qutebrowser/"
7610c3ca
KK
348 "qutebrowser/releases/download/v" version "/"
349 "qutebrowser-" version ".tar.gz"))
350 (sha256
9605af1a 351 (base32 "0pywyhi4v6ymxpn85grrdr1agmcxsnm5jfqf3rlxqx5swbnxbfs1"))))
7610c3ca
KK
352 (build-system python-build-system)
353 (native-inputs
44ce3ebb 354 `(("python-attrs" ,python-attrs))) ; for tests
7610c3ca
KK
355 (inputs
356 `(("python-colorama" ,python-colorama)
357 ("python-cssutils" ,python-cssutils)
358 ("python-jinja2" ,python-jinja2)
359 ("python-markupsafe" ,python-markupsafe)
360 ("python-pygments" ,python-pygments)
361 ("python-pypeg2" ,python-pypeg2)
362 ("python-pyyaml" ,python-pyyaml)
44ce3ebb
MR
363 ;; FIXME: python-pyqtwebengine needs to come before python-pyqt so
364 ;; that it's __init__.py is used first.
365 ("python-pyqtwebengine" ,python-pyqtwebengine)
7610c3ca 366 ("python-pyqt" ,python-pyqt)
44ce3ebb
MR
367 ;; While qtwebengine is provided by python-pyqtwebengine, it's
368 ;; included here so we can wrap QTWEBENGINEPROCESS_PATH.
369 ("qtwebengine" ,qtwebengine)))
7610c3ca 370 (arguments
44ce3ebb
MR
371 `(;; FIXME: With the existance of qtwebengine, tests can now run. But
372 ;; they are still disabled because test phase hangs. It's not readily
373 ;; apparent as to why.
7e232d02 374 #:tests? #f
7610c3ca
KK
375 #:phases
376 (modify-phases %standard-phases
44ce3ebb
MR
377 (add-before 'check 'set-env-offscreen
378 (lambda _
379 (setenv "QT_QPA_PLATFORM" "offscreen")
380 #t))
7610c3ca
KK
381 (add-after 'install 'install-more
382 (lambda* (#:key outputs #:allow-other-keys)
383 (let* ((out (assoc-ref outputs "out"))
384 (app (string-append out "/share/applications"))
385 (hicolor (string-append out "/share/icons/hicolor")))
7610c3ca
KK
386 (install-file "doc/qutebrowser.1"
387 (string-append out "/share/man/man1"))
7610c3ca
KK
388 (for-each
389 (lambda (i)
390 (let ((src (format #f "icons/qutebrowser-~dx~d.png" i i))
391 (dest (format #f "~a/~dx~d/apps/qutebrowser.png"
392 hicolor i i)))
393 (mkdir-p (dirname dest))
394 (copy-file src dest)))
395 '(16 24 32 48 64 128 256 512))
396 (install-file "icons/qutebrowser.svg"
397 (string-append hicolor "/scalable/apps"))
d7c58c3e 398 (substitute* "misc/org.qutebrowser.qutebrowser.desktop"
7610c3ca
KK
399 (("Exec=qutebrowser")
400 (string-append "Exec=" out "/bin/qutebrowser")))
d7c58c3e 401 (install-file "misc/org.qutebrowser.qutebrowser.desktop" app)
44ce3ebb
MR
402 #t)))
403 (add-after 'wrap 'wrap-qt-process-path
404 (lambda* (#:key inputs outputs #:allow-other-keys)
405 (let* ((out (assoc-ref outputs "out"))
406 (bin (string-append out "/bin/qutebrowser"))
407 (qt-process-path (string-append
408 (assoc-ref inputs "qtwebengine")
409 "/lib/qt5/libexec/QtWebEngineProcess")))
410 (wrap-program bin
411 `("QTWEBENGINEPROCESS_PATH" ":" prefix (,qt-process-path)))
7610c3ca
KK
412 #t))))))
413 (home-page "https://qutebrowser.org/")
414 (synopsis "Minimal, keyboard-focused, vim-like web browser")
415 (description "qutebrowser is a keyboard-focused browser with a minimal
44ce3ebb 416GUI. It is based on PyQt5 and QtWebEngine.")
7610c3ca 417 (license license:gpl3+)))
f0c817a7
TE
418
419(define-public vimb
420 (package
421 (name "vimb")
0ed75a5f 422 (version "3.6.0")
f0c817a7
TE
423 (source
424 (origin
425 (method git-fetch)
426 (uri (git-reference
427 (url "https://github.com/fanglingsu/vimb/")
428 (commit version)))
429 (sha256
0ed75a5f 430 (base32 "0228khh3lqbal046k6akqah7s5igq9s0wjfjbdjam75kjj42pbhj"))
f0c817a7
TE
431 (file-name (git-file-name name version))))
432 (build-system glib-or-gtk-build-system)
433 (arguments
f51905a4 434 '(#:tests? #f ; no tests
f0c817a7
TE
435 #:make-flags (list "CC=gcc"
436 "DESTDIR="
437 (string-append "PREFIX=" %output))
438 #:phases
439 (modify-phases %standard-phases
440 (delete 'configure))))
441 (inputs
442 `(("glib-networking" ,glib-networking)
443 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
444 ("webkitgtk" ,webkitgtk)))
445 (native-inputs
446 `(("pkg-config" ,pkg-config)))
447 (home-page "https://fanglingsu.github.io/vimb/")
448 (synopsis "Fast and lightweight Vim-like web browser")
449 (description "Vimb is a fast and lightweight vim like web browser based on
450the webkit web browser engine and the GTK toolkit. Vimb is modal like the great
451vim editor and also easily configurable during runtime. Vimb is mostly keyboard
452driven and does not detract you from your daily work.")
453 (license license:gpl3+)))
18974c1e 454
aae704dd 455(define next-gtk-webkit
b96bd821
PN
456 (package
457 (name "next-gtk-webkit")
676e21e4 458 (version "1.5.0")
b96bd821
PN
459 (source
460 (origin
461 (method git-fetch)
462 (uri (git-reference
1be4989d
PN
463 ;; TODO: Mirror seems to hang, let's fallback to GitHub for now.
464 ;; (url "https://source.atlas.engineer/public/next")
465 (url "https://github.com/atlas-engineer/next")
b96bd821
PN
466 (commit version)))
467 (sha256
468 (base32
676e21e4 469 "1gqkp185wcwaxr8py90hqk44nqjblrrdwvig19gizrbzr2gx2zhy"))
b96bd821
PN
470 (file-name (git-file-name "next" version))))
471 (build-system glib-or-gtk-build-system)
472 (arguments
473 `(#:tests? #f ; no tests
474 #:make-flags (list "gtk-webkit"
f85ca6ed 475 "CC=gcc"
b96bd821
PN
476 (string-append "PREFIX=" %output))
477 #:phases
478 (modify-phases %standard-phases
479 (delete 'configure)
480 (replace 'install
481 (lambda* (#:key (make-flags '()) #:allow-other-keys)
482 (apply invoke "make" "install-gtk-webkit" make-flags))))))
483 (inputs
484 `(("glib-networking" ,glib-networking)
485 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
f85ca6ed 486 ("webkitgtk" ,webkitgtk)))
b96bd821 487 (native-inputs
f85ca6ed 488 `(("pkg-config" ,pkg-config)))
b96bd821 489 (home-page "https://next.atlas.engineer")
676e21e4 490 (synopsis "Extensible web-browser in Common Lisp")
b96bd821 491 (description "Next is a keyboard-oriented, extensible web-browser
676e21e4
PN
492designed for power users. The application has familiar Emacs and VI
493key-bindings and is fully configurable and extensible in Common Lisp.")
b96bd821 494 (license license:bsd-3)))
acad932e 495
b2455573 496(define sbcl-next-download-manager
acad932e
PN
497 (package
498 (inherit next-gtk-webkit)
b2455573 499 (name "sbcl-next-download-manager")
acad932e 500 (build-system asdf-build-system/sbcl)
acad932e 501 (arguments
b2455573
PN
502 `(#:tests? #f ; Need online access.
503 #:asd-file "next.asd"
1be4989d 504 #:asd-system-name "next/download-manager"))
acad932e 505 (inputs
754ee708 506 `(("cl-ppcre" ,sbcl-cl-ppcre)
b2455573 507 ("dexador" ,sbcl-dexador)
338defe0 508 ("log4cl" ,sbcl-log4cl)
b2455573
PN
509 ("lparallel" ,sbcl-lparallel)
510 ("quri" ,sbcl-quri)
511 ("str" ,sbcl-cl-str)))
512 (native-inputs
754ee708
PN
513 `(("trivial-features" ,sbcl-trivial-features)
514 ("prove-asdf" ,sbcl-prove-asdf)))
676e21e4 515 (synopsis "Extensible web-browser in Common Lisp (download manager)")))
b2455573 516
754ee708
PN
517(define sbcl-next-ring
518 (package
519 (inherit next-gtk-webkit)
520 (name "sbcl-next-ring")
521 (build-system asdf-build-system/sbcl)
522 (arguments
523 `(#:tests? #t
524 #:asd-file "next.asd"
525 #:asd-system-name "next/ring"))
526 (native-inputs
527 `(("trivial-features" ,sbcl-trivial-features)
528 ("prove-asdf" ,sbcl-prove-asdf)))
676e21e4 529 (synopsis "Extensible web-browser in Common Lisp (ring)")))
754ee708 530
ab0ede51
PN
531(define sbcl-next-history-tree
532 (package
533 (inherit next-gtk-webkit)
534 (name "sbcl-next-history-tree")
535 (build-system asdf-build-system/sbcl)
536 (arguments
537 `(#:tests? #t
538 #:asd-file "next.asd"
539 #:asd-system-name "next/history-tree"))
540 (native-inputs
541 `(("trivial-features" ,sbcl-trivial-features)
542 ("prove-asdf" ,sbcl-prove-asdf)))
676e21e4 543 (synopsis "Extensible web-browser in Common Lisp (history-tree)")))
ab0ede51
PN
544
545(define sbcl-next-password-manager
546 (package
547 (inherit next-gtk-webkit)
548 (name "sbcl-next-password-manager")
549 (build-system asdf-build-system/sbcl)
550 (arguments
551 `(#:tests? #t
552 #:asd-file "next.asd"
553 #:asd-system-name "next/password-manager"))
554 (inputs
555 `(("bordeaux-threads" ,sbcl-bordeaux-threads)
556 ("cl-annot" ,sbcl-cl-annot)
557 ("cl-ppcre" ,sbcl-cl-ppcre)
558 ("str" ,sbcl-cl-str)
559 ("trivial-clipboard" ,sbcl-trivial-clipboard)))
560 (native-inputs
561 `(("trivial-features" ,sbcl-trivial-features)
562 ("prove-asdf" ,sbcl-prove-asdf)))
676e21e4 563 (synopsis "Extensible web-browser in Common Lisp (password manager)")))
ab0ede51 564
90a31c73
PN
565(define sbcl-next-hooks
566 (package
567 (inherit next-gtk-webkit)
568 (name "sbcl-next-hooks")
569 (build-system asdf-build-system/sbcl)
570 (arguments
571 `(#:tests? #t
572 #:asd-file "next.asd"
573 #:asd-system-name "next/hooks"))
574 (inputs
575 `(("alexandria" ,sbcl-alexandria)
78cb6c34 576 ("serapeum" ,sbcl-serapeum)))
90a31c73
PN
577 (native-inputs
578 `(("trivial-features" ,sbcl-trivial-features)
579 ("prove-asdf" ,sbcl-prove-asdf)))
580 (synopsis "Infinitely extensible web-browser (hooks)")))
581
01bb2e30
PN
582(define-public next
583 (let ((version (package-version next-gtk-webkit)))
584 (package
585 (inherit next-gtk-webkit)
586 (name "next")
587 (build-system asdf-build-system/sbcl)
588 (outputs '("out" "lib"))
589 (arguments
590 `(#:tests? #f ; no tests
591 #:asd-system-name "next"
592 #:phases (modify-phases %standard-phases
593 (add-after 'unpack 'patch-platform-port-path
594 (lambda* (#:key inputs #:allow-other-keys)
595 (substitute* "source/ports/gtk-webkit.lisp"
596 (("\"next-gtk-webkit\"")
597 (string-append "\"" (assoc-ref inputs "next-gtk-webkit")
598 "/bin/next-gtk-webkit\"")))
599 #t))
600 (add-after 'patch-platform-port-path 'patch-version
601 ;; When the version is not just dot-separated numerals
602 ;; (e.g. a git-commit version), Guix modifies the .asd with
603 ;; an illegal version number, and then Next fails to query
604 ;; it. So we hard-code it here.
605 (lambda* (#:key inputs #:allow-other-keys)
606 (let ((version (format #f "~a" ,version)))
607 (substitute* "source/global.lisp"
608 (("version\\)\\)\\)")
609 (string-append "version)))
610(setf +version+ \"" version "\")"))))
611 #t))
612 (add-before 'cleanup 'move-bundle
613 (lambda* (#:key outputs #:allow-other-keys)
614 (define lib (assoc-ref outputs "lib"))
615 (define actual-fasl (string-append
acad932e 616 lib
01bb2e30
PN
617 "/lib/sbcl/next.fasl"))
618 (define expected-fasl (string-append
619 lib
620 "/lib/sbcl/next--system.fasl"))
621 (copy-file actual-fasl expected-fasl)
622 #t))
623 (add-after 'create-symlinks 'build-program
624 (lambda* (#:key outputs #:allow-other-keys)
625 (build-program
626 (string-append (assoc-ref outputs "out") "/bin/next")
627 outputs
628 #:entry-program '((next:entry-point) 0))))
629 (add-before 'build 'install-assets
630 ;; Since the ASDF build system generates a new .asd with a
631 ;; possibly suffixed and thus illegal version number, assets
632 ;; should not be installed after the 'build phase or else
633 ;; the illegal version will result in NIL in the .desktop
634 ;; file.
635 (lambda* (#:key outputs #:allow-other-keys)
636 (with-output-to-file "version"
637 (lambda _
638 (format #t "~a" ,(package-version next-gtk-webkit))))
639 (invoke "make" "install-assets"
640 (string-append "PREFIX="
262d6ed4
PN
641 (assoc-ref outputs "out")))))
642 (add-after 'unpack 'fix-lambda-list
643 ;; Starting from SBCL 2.0.2, Next 1.5.0 won't build
644 ;; because of a weird lambda list type.
645 (lambda _
646 (substitute* "source/keymap.lisp"
647 (("^\\(declaim .* define-key\\)\\)") ""))
648 (substitute* "source/search-buffer.lisp"
649 (("define-key :keymap keymap \"C-s\"") "define-key \"C-s\"")
650 (("\\(update-selection-highlight-hint :follow t :scroll t\\)\\)\\)")
651 "(update-selection-highlight-hint :follow t :scroll t)) :keymap keymap)")))))))
01bb2e30 652 (inputs
754ee708 653 `(("alexandria" ,sbcl-alexandria)
01bb2e30 654 ("bordeaux-threads" ,sbcl-bordeaux-threads)
754ee708 655 ("cl-annot" ,sbcl-cl-annot)
ab0ede51 656 ("cl-ansi-text" ,sbcl-cl-ansi-text)
01bb2e30
PN
657 ("cl-css" ,sbcl-cl-css)
658 ("cl-json" ,sbcl-cl-json)
659 ("cl-markup" ,sbcl-cl-markup)
660 ("cl-ppcre" ,sbcl-cl-ppcre)
661 ("cl-ppcre-unicode" ,sbcl-cl-ppcre-unicode)
ab0ede51 662 ("cl-prevalence" ,sbcl-cl-prevalence)
01bb2e30
PN
663 ("closer-mop" ,sbcl-closer-mop)
664 ("dbus" ,cl-dbus)
665 ("dexador" ,sbcl-dexador)
666 ("ironclad" ,sbcl-ironclad)
754ee708 667 ("local-time" ,sbcl-local-time)
01bb2e30
PN
668 ("log4cl" ,sbcl-log4cl)
669 ("lparallel" ,sbcl-lparallel)
670 ("mk-string-metrics" ,sbcl-mk-string-metrics)
671 ("parenscript" ,sbcl-parenscript)
90a31c73 672 ("plump" ,sbcl-plump)
01bb2e30 673 ("quri" ,sbcl-quri)
90a31c73 674 ("serapeum" ,sbcl-serapeum)
01bb2e30
PN
675 ("sqlite" ,sbcl-cl-sqlite)
676 ("str" ,sbcl-cl-str)
90a31c73 677 ("swank" ,sbcl-slime-swank)
01bb2e30
PN
678 ("trivia" ,sbcl-trivia)
679 ("trivial-clipboard" ,sbcl-trivial-clipboard)
680 ("unix-opts" ,sbcl-unix-opts)
681 ;; Local deps
754ee708
PN
682 ("next-gtk-webkit" ,next-gtk-webkit)
683 ("next-download-manager" ,sbcl-next-download-manager)
ab0ede51
PN
684 ("next-ring" ,sbcl-next-ring)
685 ("next-history-tree" ,sbcl-next-history-tree)
90a31c73
PN
686 ("next-password-manager" ,sbcl-next-password-manager)
687 ("next-hooks" ,sbcl-next-hooks)))
01bb2e30 688 (native-inputs
754ee708 689 `(("trivial-features" ,sbcl-trivial-features)
90a31c73 690 ("trivial-types" ,sbcl-trivial-types)
754ee708 691 ("prove-asdf" ,sbcl-prove-asdf)))
676e21e4 692 (synopsis "Extensible web-browser in Common Lisp"))))
01bb2e30
PN
693
694(define-public sbcl-next
695 (deprecated-package "sbcl-next" next))
5b4db516
W
696
697(define-public bombadillo
698 (package
699 (name "bombadillo")
700 (version "2.2.0")
701 (source (origin
702 (method git-fetch)
703 (uri (git-reference
704 (url "https://tildegit.org/sloum/bombadillo")
705 (commit version)))
706 (sha256
707 (base32
708 "1m52b1wk48gkqmjy8l0x3jaksrx2v8w6w59lhr7zaw2i0n4f5k0z"))
709 (file-name (git-file-name name version))))
710 (build-system go-build-system)
711 (arguments
712 `(#:import-path "tildegit.org/sloum/bombadillo"
713 #:install-source? #f
714 #:phases (modify-phases %standard-phases
715 (add-after 'install 'install-data
716 (lambda* (#:key outputs #:allow-other-keys)
717 (let* ((builddir "src/tildegit.org/sloum/bombadillo")
718 (out (assoc-ref outputs "out"))
719 (pkg (strip-store-file-name out))
720 (sharedir (string-append out "/share"))
721 (appdir (string-append sharedir "/applications"))
722 (docdir (string-append sharedir "/doc/" pkg))
723 (mandir (string-append sharedir "/man/man1"))
724 (pixdir (string-append sharedir "/pixmaps")))
725 (with-directory-excursion builddir
726 (install-file "bombadillo.desktop" appdir)
727 (install-file "LICENSE" docdir)
728 (install-file "bombadillo.1" mandir)
729 (install-file "bombadillo-icon.png" pixdir)
730 #t)))))))
731 (home-page "http://bombadillo.colorfield.space")
732 (synopsis "Terminal browser for the gopher, gemini, and finger protocols")
733 (description "Bombadillo is a non-web browser for the terminal with
734vim-like key bindings, a document pager, configurable settings, and robust
735command selection. The following protocols are supported as first-class
736citizens: gopher, gemini, finger, and local. There is also support for telnet,
737http, and https via third-party applications.")
738 (license license:gpl3+)))