diff options
Diffstat (limited to 'gnu/packages/web-browsers.scm')
-rw-r--r-- | gnu/packages/web-browsers.scm | 111 |
1 files changed, 110 insertions, 1 deletions
diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index f63f269ae0..578cfca560 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018 Timo Eisenmann <eisenmann@fn.de> +;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,6 +37,7 @@ #:use-module (gnu packages gnupg) #:use-module (gnu packages libevent) #:use-module (gnu packages libidn) + #:use-module (gnu packages lisp) #:use-module (gnu packages lua) #:use-module (gnu packages gnome) #:use-module (gnu packages ncurses) @@ -52,7 +54,8 @@ #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system glib-or-gtk) - #:use-module (guix build-system python)) + #:use-module (guix build-system python) + #:use-module (guix build-system asdf)) (define-public dillo (package @@ -359,3 +362,109 @@ the webkit web browser engine and the GTK toolkit. Vimb is modal like the great vim editor and also easily configurable during runtime. Vimb is mostly keyboard driven and does not detract you from your daily work.") (license license:gpl3+))) + +(define-public next-gtk-webkit + (let ((commit "b8899341bbdefd0a33412608fbb0b1f92f818c65")) + (package + (name "next-gtk-webkit") + (version (git-version "1.0.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://source.atlas.engineer/public/next") + (commit commit))) + (sha256 + (base32 + "12jmf1b9qr85il9h15mb9vpsfh1wzcln9x9xpn4lps0kkccnpkz9")) + (file-name (git-file-name "next" version)))) + (build-system glib-or-gtk-build-system) + (arguments + `(#:tests? #f ; no tests + #:make-flags (list "gtk-webkit" + "CC=gcc" + (string-append "PREFIX=" %output)) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'install + (lambda* (#:key (make-flags '()) #:allow-other-keys) + (apply invoke "make" "install-gtk-webkit" make-flags)))))) + (inputs + `(("glib-networking" ,glib-networking) + ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("webkitgtk" ,webkitgtk))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://next.atlas.engineer") + (synopsis "Infinitely extensible web-browser (user interface only)") + (description "Next is a keyboard-oriented, extensible web-browser +inspired by Emacs and designed for power users. The application has familiar +key-bindings, is fully configurable and extensible in Lisp, and has powerful +features for productive professionals.") + (license license:bsd-3)))) + +(define-public sbcl-next + (package + (inherit next-gtk-webkit) + (name "sbcl-next") + (build-system asdf-build-system/sbcl) + (outputs '("out" "lib")) + (arguments + `(#:tests? #f ; no tests + #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-platform-port-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "source/ports/gtk-webkit.lisp" + (("\"next-gtk-webkit\"") + (string-append "\"" (assoc-ref inputs "next-gtk-webkit") + "/bin/next-gtk-webkit\""))))) + (add-before 'cleanup 'move-bundle + (lambda* (#:key outputs #:allow-other-keys) + (define lib (assoc-ref outputs "lib")) + (define actual-fasl (string-append + lib + "/lib/sbcl/next.fasl")) + (define expected-fasl (string-append + lib + "/lib/sbcl/next--system.fasl")) + (pk actual-fasl) + (pk expected-fasl) + (copy-file actual-fasl expected-fasl) + #t)) + (add-after 'create-symlinks 'build-program + (lambda* (#:key outputs #:allow-other-keys) + (build-program + (string-append (assoc-ref outputs "out") "/bin/next") + outputs + #:entry-program '((next:start-with-port) 0)))) + (add-before 'build 'install-assets + ;; Since the ASDF build system generates a new .asd with a + ;; possibly suffixed and thus illegal version number, assets + ;; should not be installed after the 'build phase or else + ;; the illegal version will result in NIL in the .desktop + ;; file. + (lambda* (#:key outputs #:allow-other-keys) + (invoke "make" "install-assets" + (string-append "PREFIX=" + (assoc-ref outputs "out")))))))) + (inputs + `(("next-gtk-webkit" ,next-gtk-webkit) + ;; Lisp libraries: + ("trivial-features" ,sbcl-trivial-features) + ("alexandria" ,sbcl-alexandria) + ("cl-strings" ,sbcl-cl-strings) + ("cl-string-match" ,sbcl-cl-string-match) + ("puri" ,sbcl-puri) + ("queues.simple-queue" ,sbcl-queues.simple-queue) + ("sqlite" ,sbcl-cl-sqlite) + ("parenscript" ,sbcl-parenscript) + ("cl-json" ,sbcl-cl-json) + ("swank" ,sbcl-slime-swank) + ("cl-markup" ,sbcl-cl-markup) + ("cl-css" ,sbcl-cl-css) + ("usocket" ,sbcl-usocket) + ("bordeaux-threads" ,sbcl-bordeaux-threads) + ("s-xml-rpc" ,sbcl-s-xml-rpc) + ("unix-opts" ,sbcl-unix-opts))) + (synopsis "Infinitely extensible web-browser (with Lisp development files)"))) |