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