Subject: [PATCH]: Update Nyxt to 3.12.0

From: André A. Gomes <[email-masked]>
Date: Mon, 21 Oct 2024 22:16:10 +0300

Hello Guix,

Attached, thanks.

Please note that I am one of the Nyxt developers.  The changes reflect
that fact that the Lisp dependencies are pinned as git submodules.  The
tests are temporarily disabled since they fail due to undocumented
exported symbols (which is unreasonable).  I only noticed it after the
release, but I'll fix it for the next release.

-- 
André A. Gomes
"You cannot even find the ruins..."
>From 3a6970e3f5661c3948cda7a9ab0d256d46f2c948 Mon Sep 17 00:00:00 2001
From: "Andre A. Gomes" <[email-masked]>
Date: Mon, 21 Oct 2024 22:10:30 +0300
Subject: [PATCH] gnu: nyxt: Update to 3.12.0.

* gnu/packages/web-browsers.scm (nyxt): Update to 3.12.0.
---
 gnu/packages/web-browsers.scm | 184 +++++++++++++++++-----------------
 1 file changed, 92 insertions(+), 92 deletions(-)

diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm
index 7f04af981a..492ac9e1e1 100644
--- a/gnu/packages/web-browsers.scm
+++ b/gnu/packages/web-browsers.scm
@@ -57,6 +57,7 @@ (define-module (gnu packages web-browsers)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages c)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages curl)
   #:use-module (gnu packages databases)
@@ -104,8 +105,10 @@ (define-module (gnu packages web-browsers)
   #:use-module (gnu packages tcl)
   #:use-module (gnu packages text-editors)
   #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
   #:use-module (gnu packages web)
   #:use-module (gnu packages webkit)
+  #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xorg))
 
 (define-public midori
@@ -601,127 +604,124 @@ (define-public vimb
 (define-public nyxt
   (package
     (name "nyxt")
-    (version "3.11.7")
+    (version "3.12.0")
     (source
      (origin
        (method git-fetch)
        (uri (git-reference
              (url "https://github.com/atlas-engineer/nyxt")
-             (commit version)))
+             (commit version)
+             (recursive? #t)))
        (sha256
         (base32
-         "0qrlks2b4a02b1lf8ah5cv3y32kh8yxnxkvfgrnia92g72xpj4j2"))
+         "0nilfqcsily1y7x641cby5wsbh5va6jcfn8bx3fr90gjgccwvay0"))
        (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (arguments
-     `(#:make-flags (list "nyxt" "NYXT_SUBMODULES=false"
+     `(#:make-flags (list "nyxt"
                           (string-append "DESTDIR=" (assoc-ref %outputs "out"))
                           "PREFIX=")
        #:strip-binaries? #f             ; Stripping breaks SBCL binaries.
+       #:tests? #f
        #:phases
        (modify-phases %standard-phases
          (delete 'configure)
+         (add-before 'build 'fix-so-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "_build/cl-plus-ssl/src/reload.lisp"
+               (("libssl.so" all)
+                (string-append (assoc-ref inputs "openssl") "/lib/" all))
+               (("libcrypto.so" all)
+                (string-append (assoc-ref inputs "openssl") "/lib/" all)))
+             (substitute* "_build/iolib/src/syscalls/ffi-functions-unix.lisp"
+               (("\\(:default \"libfixposix\"\\)")
+                (string-append "(:default \""
+                               (assoc-ref inputs "libfixposix")
+                               "/lib/libfixposix\")")))
+             (substitute* "_build/cl-sqlite/sqlite-ffi.lisp"
+               (("libsqlite3" all)
+                (string-append (assoc-ref inputs "sqlite") "/lib/" all)))
+             (substitute* "_build/cl-gobject-introspection/src/init.lisp"
+               (("libgobject-2\\.0\\.so")
+                (search-input-file inputs "/lib/libgobject-2.0.so"))
+               (("libgirepository-1\\.0\\.so")
+                (search-input-file inputs "/lib/libgirepository-1.0.so")))
+             (substitute* "_build/cl-webkit/webkit2/webkit2.init.lisp"
+               (("libwebkit2gtk" all)
+                (string-append (assoc-ref inputs "webkitgtk-for-gtk3") "/lib/" all)))
+             (substitute* "_build/cl-cffi-gtk/glib/glib.init.lisp"
+               (("libglib-[0-9.]*\\.so" all)
+                (search-input-file inputs (string-append "/lib/" all)))
+               (("libgthread-[0-9.]*\\.so" all)
+                (search-input-file inputs (string-append "/lib/" all))))
+             (substitute* "_build/cl-cffi-gtk/gobject/gobject.init.lisp"
+               (("libgobject-[0-9.]*\\.so" all)
+                (search-input-file inputs (string-append "/lib/" all))))
+             (substitute* "_build/cl-cffi-gtk/gio/gio.init.lisp"
+               (("libgio-[0-9.]*\\.so" all)
+                (search-input-file inputs (string-append "/lib/" all))))
+             (substitute* "_build/cl-cffi-gtk/cairo/cairo.init.lisp"
+               (("libcairo\\.so" all)
+                (search-input-file inputs (string-append "/lib/" all))))
+             (substitute* "_build/cl-cffi-gtk/pango/pango.init.lisp"
+               (("libpango-[0-9.]*\\.so" all)
+                (search-input-file inputs (string-append "/lib/" all)))
+               (("libpangocairo-[0-9.]*\\.so" all)
+                (search-input-file inputs (string-append "/lib/" all))))
+             (substitute* "_build/cl-cffi-gtk/gdk-pixbuf/gdk-pixbuf.init.lisp"
+               (("libgdk_pixbuf-[0-9.]*\\.so" all)
+                (search-input-file inputs (string-append "/lib/" all))))
+             (substitute* "_build/cl-cffi-gtk/gdk/gdk.init.lisp"
+               (("libgdk-[0-9]\\.so" all)
+                (search-input-file inputs (string-append "/lib/" all))))
+             (substitute* "_build/cl-cffi-gtk/gdk/gdk.package.lisp"
+               (("libgtk-[0-9]\\.so" all)
+                (search-input-file inputs (string-append "/lib/" all))))))
+         (add-after 'unpack 'fix-clipboard-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "_build/trivial-clipboard/src/text.lisp"
+               (("\"xsel\"")
+                (string-append "\"" (assoc-ref inputs "xsel") "/bin/xsel\""))
+               (("\"wl-copy\"")
+                (string-append "\"" (assoc-ref inputs "wl-clipboard") "/bin/wl-copy\""))
+               (("\"wl-paste\"")
+                (string-append "\"" (assoc-ref inputs "wl-clipboard") "/bin/wl-paste\"")))))
          (add-before 'build 'fix-common-lisp-cache-folder
            (lambda _ (setenv "HOME" "/tmp")))
          (add-before 'check 'configure-tests
-           (lambda _ (setenv "NYXT_TESTS_NO_NETWORK" "1")))
+           (lambda _ (setenv "NASDF_TESTS_NO_NETWORK" "1")))
          (add-after 'install 'wrap-program
            (lambda* (#:key inputs outputs #:allow-other-keys)
-             (let* ((bin (string-append (assoc-ref outputs "out") "/bin/nyxt"))
-                    (glib-networking (assoc-ref inputs "glib-networking"))
-                    (libs '("gsettings-desktop-schemas"))
-                    (path (string-join
-                           (map (lambda (lib)
-                                  (string-append (assoc-ref inputs lib) "/lib"))
-                                libs)
-                           ":"))
-                    (gi-path (getenv "GI_TYPELIB_PATH"))
-                    (xdg-path (string-join
-                               (map (lambda (lib)
-                                      (string-append (assoc-ref inputs lib) "/share"))
-                                    libs)
-                               ":")))
-               (wrap-program bin
+             (let ((gsettings (assoc-ref inputs "gsettings-desktop-schemas")))
+               (wrap-program (string-append (assoc-ref outputs "out") "/bin/nyxt")
                  `("GIO_EXTRA_MODULES" prefix
-                   (,(string-append glib-networking "/lib/gio/modules")))
-                 `("GI_TYPELIB_PATH" prefix (,gi-path))
-                 `("LD_LIBRARY_PATH" ":" prefix (,path))
-                 `("XDG_DATA_DIRS" ":" prefix (,xdg-path)))))))))
+                   (,(string-append (assoc-ref inputs "glib-networking")
+                                    "/lib/gio/modules")))
+                 `("GI_TYPELIB_PATH" prefix (,(getenv "GI_TYPELIB_PATH")))
+                 `("LD_LIBRARY_PATH" ":" prefix (,(string-append gsettings "/lib")))
+                 `("XDG_DATA_DIRS" ":" prefix (,(string-append gsettings "/share"))))))))))
     (native-inputs (list cl-lisp-unit2 sbcl))
-    (inputs (list bash-minimal
-                  sbcl-alexandria
-                  sbcl-bordeaux-threads
-                  sbcl-calispel
-                  sbcl-cl-base64
-                  sbcl-cl-colors2
-                  sbcl-cl-containers
-                  sbcl-cl-gopher
-                  sbcl-cl-html-diff
-                  sbcl-cl-json
-                  sbcl-cl-ppcre
-                  sbcl-cl-prevalence
-                  sbcl-cl-qrencode
-                  sbcl-cl-sqlite
-                  sbcl-cl-str
-                  sbcl-cl-tld
-                  sbcl-closer-mop
-                  sbcl-clss
-                  sbcl-cluffer
-                  sbcl-custom-hash-table
-                  sbcl-dexador
-                  sbcl-dissect
-                  sbcl-enchant
-                  sbcl-flexi-streams
-                  sbcl-history-tree
-                  sbcl-iolib
-                  sbcl-lass
-                  sbcl-local-time
-                  sbcl-log4cl
-                  sbcl-lparallel
-                  sbcl-montezuma
-                  sbcl-moptilities
-                  sbcl-named-readtables
-                  sbcl-nclasses
-                  sbcl-ndebug
-                  sbcl-nfiles
-                  sbcl-nhooks
-                  sbcl-njson
-                  sbcl-nkeymaps
-                  sbcl-nsymbols
-                  sbcl-parenscript
-                  sbcl-phos
-                  sbcl-plump
-                  sbcl-prompter
-                  sbcl-py-configparser
-                  sbcl-quri
-                  sbcl-serapeum
-                  sbcl-slime-swank
-                  sbcl-slynk
-                  sbcl-spinneret
-                  sbcl-trivia
-                  sbcl-trivial-clipboard
-                  sbcl-trivial-custom-debugger
-                  sbcl-trivial-features
-                  sbcl-trivial-garbage
-                  sbcl-trivial-package-local-nicknames
-                  sbcl-trivial-types
-                  sbcl-unix-opts
-                  ;; WebKitGTK deps
-                  sbcl-cl-cffi-gtk
-                  sbcl-cl-webkit
+    (inputs (list cairo
+                  git
+                  glib
                   glib-networking
-                  gsettings-desktop-schemas
-                  cl-gobject-introspection
-                  gtk+                  ; For the main loop
-                  webkitgtk-for-gtk3    ; Required when we use its typelib
                   gobject-introspection
-                  pkg-config
-                  ;; Useful for video playback
+                  gsettings-desktop-schemas
                   gst-libav
                   gst-plugins-bad
                   gst-plugins-base
                   gst-plugins-good
-                  gst-plugins-ugly))
+                  gst-plugins-ugly
+                  gtk+
+                  gdk-pixbuf
+                  libfixposix
+                  openssl
+                  pango
+                  pkg-config
+                  sqlite
+                  webkitgtk-for-gtk3
+                  wl-clipboard
+                  xsel))
     (synopsis "Extensible web-browser in Common Lisp")
     (home-page "https://nyxt-browser.com/")
     (description "Nyxt is a keyboard-oriented, extensible web-browser designed
-- 
2.46.0