gnu: Use 'modify-phases' syntax.
[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>
c5196ac7 3;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
8bdc36d4 4;;; Copyright © 2015, 2016 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>
c21a2562
KY
7;;;
8;;; This file is part of GNU Guix.
9;;;
10;;; GNU Guix is free software; you can redistribute it and/or modify it
11;;; under the terms of the GNU General Public License as published by
12;;; the Free Software Foundation; either version 3 of the License, or (at
13;;; your option) any later version.
14;;;
15;;; GNU Guix is distributed in the hope that it will be useful, but
16;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;;; GNU General Public License for more details.
19;;;
20;;; You should have received a copy of the GNU General Public License
21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
0c3953ea 23(define-module (gnu packages web-browsers)
c21a2562
KY
24 #:use-module ((guix licenses) #:prefix license:)
25 #:use-module (guix packages)
26 #:use-module (gnu packages)
27 #:use-module (gnu packages compression)
7610c3ca 28 #:use-module (gnu packages documentation)
c21a2562
KY
29 #:use-module (gnu packages fltk)
30 #:use-module (gnu packages fontutils)
c5196ac7 31 #:use-module (gnu packages gnupg)
8bdc36d4 32 #:use-module (gnu packages libevent)
c5196ac7
KK
33 #:use-module (gnu packages libidn)
34 #:use-module (gnu packages ncurses)
c21a2562
KY
35 #:use-module (gnu packages perl)
36 #:use-module (gnu packages pkg-config)
7610c3ca
KK
37 #:use-module (gnu packages python)
38 #:use-module (gnu packages qt)
c21a2562
KY
39 #:use-module (gnu packages image)
40 #:use-module (gnu packages tls)
41 #:use-module (gnu packages xorg)
42 #:use-module (guix download)
7610c3ca
KK
43 #:use-module (guix build-system gnu)
44 #:use-module (guix build-system python))
c21a2562
KY
45
46(define-public dillo
47 (package
48 (name "dillo")
49 (version "3.0.5")
50 (source (origin
51 (method url-fetch)
52 (uri (string-append "http://www.dillo.org/download/"
53 name "-" version ".tar.bz2"))
54 (sha256
55 (base32
56 "12ql8n1lypv3k5zqgwjxlw1md90ixz3ag6j1gghfnhjq3inf26yv"))))
57 (build-system gnu-build-system)
58 (arguments `(#:configure-flags '("--enable-ssl" "--enable-ipv6")))
59 (native-inputs `(("pkg-config" ,pkg-config)))
60 (inputs `(("fltk" ,fltk)
61 ("fontconfig" ,fontconfig)
62 ("libjpeg" ,libjpeg)
63 ("libpng" ,libpng)
64 ("libxcursor" ,libxcursor)
65 ("libxft" ,libxft)
66 ("libxi" ,libxi)
67 ("libxinerama" ,libxinerama)
68 ("openssl" ,openssl)
69 ("perl" ,perl)
70 ("zlib" ,zlib)))
71 (synopsis "Very small and fast graphical web browser")
72 (description "Dillo is a minimalistic web browser particularly intended for
73older or slower computers and embedded systems.")
74 (home-page "http://www.dillo.org")
75 (license license:gpl3+)))
7610c3ca 76
8bdc36d4
KK
77(define-public links
78 (package
79 (name "links")
80 (version "2.14")
81 (source (origin
82 (method url-fetch)
83 (uri (string-append "http://links.twibright.com/download/"
84 name "-" version ".tar.bz2"))
85 (sha256
86 (base32
87 "1f24y83wa1vzzjq5kp857gjqdpnmf8pb29yw7fam0m8wxxw0c3gp"))))
88 (build-system gnu-build-system)
89 (arguments
90 `(#:phases
91 (modify-phases %standard-phases
92 (replace 'configure
93 (lambda* (#:key outputs #:allow-other-keys)
94 ;; The tarball uses a very old version of autconf. It doesn't
95 ;; understand extra flags like `--enable-fast-install', so
96 ;; we need to invoke it with just what it understands.
97 (let ((out (assoc-ref outputs "out")))
98 ;; 'configure' doesn't understand '--host'.
99 ,@(if (%current-target-system)
100 `((setenv "CHOST" ,(%current-target-system)))
101 '())
102 (setenv "CONFIG_SHELL" (which "bash"))
103 (zero?
104 (system* "./configure"
105 (string-append "--prefix=" out)
106 "--enable-graphics"))))))))
107 (native-inputs `(("pkg-config" ,pkg-config)))
108 (inputs `(("zlib" ,zlib)
109 ("openssl" ,openssl)
110 ("libjpeg" ,libjpeg)
111 ("libtiff" ,libtiff)
112 ("libevent" ,libevent)
113 ("libpng" ,libpng)
114 ("libxt" ,libxt)))
115 (synopsis "Text and graphics mode web browser")
116 (description "Links is a graphics and text mode web browser, with many
117features including, tables, builtin image display, bookmarks, SSL and more.")
118 (home-page "http://links.twibright.com")
119 ;; The distribution contains a copy of GPLv2
120 ;; However, the copyright notices simply say:
121 ;; "This file is a part of the Links program, released under GPL."
122 ;; Therefore, under the provisions of Section 9, we can choose
123 ;; any version ever published by the FSF.
124 ;; One file (https.c) contains an exception permitting
125 ;; linking of the program with openssl.
126 (license license:gpl1+)))
127
c5196ac7
KK
128(define-public lynx
129 (package
130 (name "lynx")
6fb622bf 131 (version "2.8.9dev.15")
c5196ac7
KK
132 (source (origin
133 (method url-fetch)
134 (uri (string-append
135 "http://invisible-mirror.net/archives/lynx/tarballs"
136 "/lynx" version ".tar.bz2"))
137 (sha256
138 (base32
6fb622bf 139 "16bdr7ai130ps67px8ssxnjxp5j6m4rin3in7jm22fxk0a8p2428"))))
c5196ac7
KK
140 (build-system gnu-build-system)
141 (native-inputs `(("pkg-config" ,pkg-config)
142 ("perl" ,perl)))
143 (inputs `(("ncurses" ,ncurses)
144 ("libidn" ,libidn)
145 ("gnutls" ,gnutls)
146 ("libgcrypt" ,libgcrypt)
147 ("unzip" ,unzip)
148 ("zlib" ,zlib)
149 ("gzip" ,gzip)
150 ("bzip2" ,bzip2)))
151 (arguments
152 `(#:configure-flags
153 (let ((gnutls (assoc-ref %build-inputs "gnutls")))
154 `("--with-pkg-config"
155 "--with-screen=ncurses"
156 "--with-zlib"
157 "--with-bzlib"
158 ,(string-append "--with-gnutls=" gnutls)
159 ;; "--with-socks5" ; XXX TODO
160 "--enable-widec"
161 "--enable-ascii-ctypes"
162 "--enable-local-docs"
163 "--enable-htmlized-cfg"
164 "--enable-gzip-help"
165 "--enable-nls"
166 "--enable-ipv6"))
167 #:tests? #f ; no check target
dc1d3cde
KK
168 #:phases
169 (modify-phases %standard-phases
170 (replace 'install
171 (lambda* (#:key (make-flags '()) #:allow-other-keys)
172 (zero? (apply system* "make" "install-full" make-flags)))))))
c5196ac7
KK
173 (synopsis "Text Web Browser")
174 (description
175 "Lynx is a fully-featured World Wide Web (WWW) client for users running
176cursor-addressable, character-cell display devices. It will display Hypertext
177Markup Language (HTML) documents containing links to files on the local
178system, as well as files on remote systems running http, gopher, ftp, wais,
179nntp, finger, or cso/ph/qi servers. Lynx can be used to access information on
180the WWW, or to build information systems intended primarily for local
181access.")
182 (home-page "http://lynx.isc.org/")
183 (license license:gpl2)))
184
7610c3ca
KK
185(define-public qutebrowser
186 (package
187 (name "qutebrowser")
d209ce43 188 (version "0.11.0")
7610c3ca
KK
189 (source
190 (origin
191 (method url-fetch)
192 (uri (string-append "https://github.com/The-Compiler/"
193 "qutebrowser/releases/download/v" version "/"
194 "qutebrowser-" version ".tar.gz"))
195 (sha256
196 (base32
d209ce43 197 "13ihx66jm1dd6vx8px7pm0kbzf2sf9x43hhivc1rp17kahnxxdyv"))))
7610c3ca
KK
198 (build-system python-build-system)
199 (native-inputs
200 `(("asciidoc" ,asciidoc)))
201 (inputs
202 `(("python-colorama" ,python-colorama)
203 ("python-cssutils" ,python-cssutils)
204 ("python-jinja2" ,python-jinja2)
205 ("python-markupsafe" ,python-markupsafe)
206 ("python-pygments" ,python-pygments)
207 ("python-pypeg2" ,python-pypeg2)
208 ("python-pyyaml" ,python-pyyaml)
209 ("python-pyqt" ,python-pyqt)
210 ("qtwebkit" ,qtwebkit)))
211 (arguments
212 `(#:tests? #f ;no tests
213 #:phases
214 (modify-phases %standard-phases
215 (add-after 'install 'install-more
216 (lambda* (#:key outputs #:allow-other-keys)
217 (let* ((out (assoc-ref outputs "out"))
218 (app (string-append out "/share/applications"))
219 (hicolor (string-append out "/share/icons/hicolor")))
220 (system* "a2x" "-f" "manpage" "doc/qutebrowser.1.asciidoc")
221 (install-file "doc/qutebrowser.1"
222 (string-append out "/share/man/man1"))
223
224 (for-each
225 (lambda (i)
226 (let ((src (format #f "icons/qutebrowser-~dx~d.png" i i))
227 (dest (format #f "~a/~dx~d/apps/qutebrowser.png"
228 hicolor i i)))
229 (mkdir-p (dirname dest))
230 (copy-file src dest)))
231 '(16 24 32 48 64 128 256 512))
232 (install-file "icons/qutebrowser.svg"
233 (string-append hicolor "/scalable/apps"))
234
235 (substitute* "qutebrowser.desktop"
236 (("Exec=qutebrowser")
237 (string-append "Exec=" out "/bin/qutebrowser")))
238 (install-file "qutebrowser.desktop" app)
239 #t))))))
240 (home-page "https://qutebrowser.org/")
241 (synopsis "Minimal, keyboard-focused, vim-like web browser")
242 (description "qutebrowser is a keyboard-focused browser with a minimal
243GUI. It is based on PyQt5 and QtWebKit.")
244 (license license:gpl3+)))