git: 904a1e9137d6 - main - www/nyxt: New port: Keyboard-driven web browser which uses WebKitGTK backend

From: Nuno Teixeira <eduardo_at_FreeBSD.org>
Date: Sat, 01 Feb 2025 15:46:42 UTC
The branch main has been updated by eduardo:

URL: https://cgit.FreeBSD.org/ports/commit/?id=904a1e9137d6aaa7e438c79b4c9392176f915cbf

commit 904a1e9137d6aaa7e438c79b4c9392176f915cbf
Author:     Nuno Teixeira <eduardo@FreeBSD.org>
AuthorDate: 2025-02-01 15:31:27 +0000
Commit:     Nuno Teixeira <eduardo@FreeBSD.org>
CommitDate: 2025-02-01 15:35:53 +0000

    www/nyxt: New port: Keyboard-driven web browser which uses WebKitGTK backend
    
    Nyxt is a keyboard-driven web browser designed for hackers. Inspired by Emacs
    and Vim, it has familiar keybindings (Emacs, vi, CUA), and is infinitely
    extensible in Lisp.
    
    WWW:            https://nyxt.atlas.engineer/
    Co-authored by: shamaz.mazum[at]gmail[dot]com
    PR:             284258
---
 www/Makefile                           |   1 +
 www/nyxt/Makefile                      |  33 +++++++
 www/nyxt/distinfo                      |   3 +
 www/nyxt/files/patch-source_start.lisp |  10 ++
 www/nyxt/pkg-descr                     |   3 +
 www/nyxt/pkg-plist                     | 164 +++++++++++++++++++++++++++++++++
 6 files changed, 214 insertions(+)

diff --git a/www/Makefile b/www/Makefile
index 10e391039912..9c45f1ae3365 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -493,6 +493,7 @@
     SUBDIR += npm-node20
     SUBDIR += npm-node22
     SUBDIR += npm-node23
+    SUBDIR += nyxt
     SUBDIR += oauth2-proxy
     SUBDIR += obhttpd
     SUBDIR += offpunk
diff --git a/www/nyxt/Makefile b/www/nyxt/Makefile
new file mode 100644
index 000000000000..c96b3de1610d
--- /dev/null
+++ b/www/nyxt/Makefile
@@ -0,0 +1,33 @@
+PORTNAME=	nyxt
+DISTVERSION=	3.12.0
+DISTVERSIONSUFFIX=	-source-with-submodules
+CATEGORIES=	www
+MASTER_SITES=	https://github.com/atlas-engineer/${PORTNAME}/releases/download/${DISTVERSION}/
+
+MAINTAINER=	eduardo@FreeBSD.org
+COMMENT=	Keyboard-driven web browser which uses WebKitGTK backend
+WWW=		https://nyxt.atlas.engineer/
+
+LICENSE=	BSD3CLAUSE CC-BY-SA-3.0
+LICENSE_COMB=	multi
+LICENSE_FILE_BSD3CLAUSE=	${WRKSRC}/licenses/SOURCE-LICENSE
+LICENSE_FILE_CC-BY-SA-3.0=	${WRKSRC}/licenses/ASSET-LICENSE
+
+BUILD_DEPENDS=	git>0:devel/git \
+		sbcl>0:lang/sbcl
+LIB_DEPENDS=	libfixposix.so:devel/libfixposix \
+		libwebkit2gtk-4.1.so:www/webkit2-gtk@41 \
+		libzstd.so:archivers/zstd
+
+USES=		desktop-file-utils gmake pkgconfig tar:xz
+
+MAKEFILE=	makefile
+WRKSRC=		${WRKDIR}
+
+OPTIONS_DEFINE=		GSTREAMER
+OPTIONS_DEFAULT=	GSTREAMER
+
+GSTREAMER_USES=	gstreamer
+GSTREAMER_USE=	GSTREAMER=bad,good,libav
+
+.include <bsd.port.mk>
diff --git a/www/nyxt/distinfo b/www/nyxt/distinfo
new file mode 100644
index 000000000000..f3c422abacb3
--- /dev/null
+++ b/www/nyxt/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1737014955
+SHA256 (nyxt-3.12.0-source-with-submodules.tar.xz) = 9355f6f0cc26505130b8e016b1d8457fe06e984aa1bcd516dae250445bc9a554
+SIZE (nyxt-3.12.0-source-with-submodules.tar.xz) = 18095860
diff --git a/www/nyxt/files/patch-source_start.lisp b/www/nyxt/files/patch-source_start.lisp
new file mode 100644
index 000000000000..3146b550a79a
--- /dev/null
+++ b/www/nyxt/files/patch-source_start.lisp
@@ -0,0 +1,10 @@
+--- source/start.lisp.orig	2025-01-16 09:15:11 UTC
++++ source/start.lisp
+@@ -434,6 +434,7 @@ - Start the browser with increased verbosity, a differ
+  (asdf:load-system :nyxt/gi-gtk)
+  (nyxt:ffi-initialize nyxt:*browser* '() (time:now)))
+ "))
++  (sb-int:set-floating-point-modes :traps nil)
+   (pushnew 'nyxt-source-registry asdf:*default-source-registries*)
+   (asdf:clear-configuration)
+   (let ((source-directory (files:expand *source-directory*)))
diff --git a/www/nyxt/pkg-descr b/www/nyxt/pkg-descr
new file mode 100644
index 000000000000..3cd835148089
--- /dev/null
+++ b/www/nyxt/pkg-descr
@@ -0,0 +1,3 @@
+Nyxt is a keyboard-driven web browser designed for hackers. Inspired by Emacs
+and Vim, it has familiar keybindings (Emacs, vi, CUA), and is infinitely
+extensible in Lisp.
diff --git a/www/nyxt/pkg-plist b/www/nyxt/pkg-plist
new file mode 100644
index 000000000000..e5f996a1cb8f
--- /dev/null
+++ b/www/nyxt/pkg-plist
@@ -0,0 +1,164 @@
+bin/nyxt
+share/applications/nyxt.desktop
+share/icons/hicolor/128x128/apps/nyxt.png
+share/icons/hicolor/16x16/apps/nyxt.png
+share/icons/hicolor/256x256/apps/nyxt.png
+share/icons/hicolor/32x32/apps/nyxt.png
+share/icons/hicolor/512x512/apps/nyxt.png
+share/icons/hicolor/scalable/apps/nyxt.svg
+share/metainfo/nyxt.metainfo.xml
+%%DATADIR%%/libraries/analysis/README.org
+%%DATADIR%%/libraries/analysis/analysis.lisp
+%%DATADIR%%/libraries/analysis/composite-sequence.lisp
+%%DATADIR%%/libraries/analysis/data.lisp
+%%DATADIR%%/libraries/analysis/dbscan.lisp
+%%DATADIR%%/libraries/analysis/document-vector.lisp
+%%DATADIR%%/libraries/analysis/package.lisp
+%%DATADIR%%/libraries/analysis/section.lisp
+%%DATADIR%%/libraries/analysis/stem.lisp
+%%DATADIR%%/libraries/analysis/tests/tests.lisp
+%%DATADIR%%/libraries/analysis/text-rank.lisp
+%%DATADIR%%/libraries/analysis/tokenize.lisp
+%%DATADIR%%/libraries/download-manager/engine.lisp
+%%DATADIR%%/libraries/download-manager/native.lisp
+%%DATADIR%%/libraries/download-manager/package.lisp
+%%DATADIR%%/libraries/nasdf/compilation-tests.lisp
+%%DATADIR%%/libraries/nasdf/install.lisp
+%%DATADIR%%/libraries/nasdf/log.lisp
+%%DATADIR%%/libraries/nasdf/nasdf.asd
+%%DATADIR%%/libraries/nasdf/nasdf.lisp
+%%DATADIR%%/libraries/nasdf/package.lisp
+%%DATADIR%%/libraries/nasdf/readme.org
+%%DATADIR%%/libraries/nasdf/submodules.lisp
+%%DATADIR%%/libraries/nasdf/systems.lisp
+%%DATADIR%%/libraries/nasdf/tests.lisp
+%%DATADIR%%/libraries/password-manager/package.lisp
+%%DATADIR%%/libraries/password-manager/password-keepassxc.lisp
+%%DATADIR%%/libraries/password-manager/password-pass.lisp
+%%DATADIR%%/libraries/password-manager/password-security.lisp
+%%DATADIR%%/libraries/password-manager/password.lisp
+%%DATADIR%%/libraries/text-buffer/package.lisp
+%%DATADIR%%/libraries/text-buffer/text-buffer.lisp
+%%DATADIR%%/libraries/theme/README.org
+%%DATADIR%%/libraries/theme/custom-modus-theme.png
+%%DATADIR%%/libraries/theme/dark-theme.svg
+%%DATADIR%%/libraries/theme/light-theme.svg
+%%DATADIR%%/libraries/theme/package.lisp
+%%DATADIR%%/libraries/theme/tests/tests.lisp
+%%DATADIR%%/libraries/theme/theme.lisp
+%%DATADIR%%/libraries/theme/utilities.lisp
+%%DATADIR%%/libraries/user-interface/package.lisp
+%%DATADIR%%/libraries/user-interface/user-interface.lisp
+%%DATADIR%%/nyxt.asd
+%%DATADIR%%/source/about.lisp
+%%DATADIR%%/source/auto-rules.lisp
+%%DATADIR%%/source/browser.lisp
+%%DATADIR%%/source/buffer.lisp
+%%DATADIR%%/source/changelog.lisp
+%%DATADIR%%/source/clipboard.lisp
+%%DATADIR%%/source/color.lisp
+%%DATADIR%%/source/command-commands.lisp
+%%DATADIR%%/source/command.lisp
+%%DATADIR%%/source/concurrency.lisp
+%%DATADIR%%/source/conditions.lisp
+%%DATADIR%%/source/configuration-commands.lisp
+%%DATADIR%%/source/configuration.lisp
+%%DATADIR%%/source/debug.lisp
+%%DATADIR%%/source/debugger.lisp
+%%DATADIR%%/source/describe.lisp
+%%DATADIR%%/source/dom.lisp
+%%DATADIR%%/source/external-editor.lisp
+%%DATADIR%%/source/foreign-interface.lisp
+%%DATADIR%%/source/global.lisp
+%%DATADIR%%/source/gpg.lisp
+%%DATADIR%%/source/help.lisp
+%%DATADIR%%/source/history.lisp
+%%DATADIR%%/source/input.lisp
+%%DATADIR%%/source/inspector.lisp
+%%DATADIR%%/source/keyscheme.lisp
+%%DATADIR%%/source/manual.lisp
+%%DATADIR%%/source/message.lisp
+%%DATADIR%%/source/migration.lisp
+%%DATADIR%%/source/mode.lisp
+%%DATADIR%%/source/mode/annotate.lisp
+%%DATADIR%%/source/mode/autofill.lisp
+%%DATADIR%%/source/mode/base.lisp
+%%DATADIR%%/source/mode/blocker.lisp
+%%DATADIR%%/source/mode/bookmark-frequent-visits.lisp
+%%DATADIR%%/source/mode/bookmark.lisp
+%%DATADIR%%/source/mode/bookmarklets.lisp
+%%DATADIR%%/source/mode/buffer-listing.lisp
+%%DATADIR%%/source/mode/certificate-exception.lisp
+%%DATADIR%%/source/mode/cruise-control.lisp
+%%DATADIR%%/source/mode/document.lisp
+%%DATADIR%%/source/mode/download.lisp
+%%DATADIR%%/source/mode/editor.lisp
+%%DATADIR%%/source/mode/emacs.lisp
+%%DATADIR%%/source/mode/expedition.lisp
+%%DATADIR%%/source/mode/file-manager.lisp
+%%DATADIR%%/source/mode/force-https.lisp
+%%DATADIR%%/source/mode/help.lisp
+%%DATADIR%%/source/mode/hint-prompt-buffer.lisp
+%%DATADIR%%/source/mode/hint.lisp
+%%DATADIR%%/source/mode/history-migration.lisp
+%%DATADIR%%/source/mode/history-tree.lisp
+%%DATADIR%%/source/mode/history.lisp
+%%DATADIR%%/source/mode/input-edit.lisp
+%%DATADIR%%/source/mode/keyscheme.lisp
+%%DATADIR%%/source/mode/list-history.lisp
+%%DATADIR%%/source/mode/macro-edit.lisp
+%%DATADIR%%/source/mode/message.lisp
+%%DATADIR%%/source/mode/no-image.lisp
+%%DATADIR%%/source/mode/no-procrastinate.lisp
+%%DATADIR%%/source/mode/no-script.lisp
+%%DATADIR%%/source/mode/no-sound.lisp
+%%DATADIR%%/source/mode/no-webgl.lisp
+%%DATADIR%%/source/mode/passthrough.lisp
+%%DATADIR%%/source/mode/password.lisp
+%%DATADIR%%/source/mode/plaintext-editor.lisp
+%%DATADIR%%/source/mode/preview.lisp
+%%DATADIR%%/source/mode/process.lisp
+%%DATADIR%%/source/mode/prompt-buffer.lisp
+%%DATADIR%%/source/mode/proxy.lisp
+%%DATADIR%%/source/mode/reading-line.lisp
+%%DATADIR%%/source/mode/record-input-field.lisp
+%%DATADIR%%/source/mode/reduce-bandwidth.lisp
+%%DATADIR%%/source/mode/reduce-tracking.lisp
+%%DATADIR%%/source/mode/remembrance.lisp
+%%DATADIR%%/source/mode/repeat.lisp
+%%DATADIR%%/source/mode/repl.lisp
+%%DATADIR%%/source/mode/search-buffer.lisp
+%%DATADIR%%/source/mode/small-web.lisp
+%%DATADIR%%/source/mode/spell-check.lisp
+%%DATADIR%%/source/mode/style.lisp
+%%DATADIR%%/source/mode/tts.lisp
+%%DATADIR%%/source/mode/user-script.lisp
+%%DATADIR%%/source/mode/vi.lisp
+%%DATADIR%%/source/mode/visual.lisp
+%%DATADIR%%/source/mode/watch.lisp
+%%DATADIR%%/source/package.lisp
+%%DATADIR%%/source/panel.lisp
+%%DATADIR%%/source/parenscript-macro.lisp
+%%DATADIR%%/source/prompt-buffer.lisp
+%%DATADIR%%/source/recent-buffers.lisp
+%%DATADIR%%/source/renderer-script.lisp
+%%DATADIR%%/source/renderer.lisp
+%%DATADIR%%/source/renderer/gi-gtk.lisp
+%%DATADIR%%/source/renderer/gtk-clipboard.lisp
+%%DATADIR%%/source/renderer/gtk.lisp
+%%DATADIR%%/source/renderer/qt.lisp
+%%DATADIR%%/source/search-engine.lisp
+%%DATADIR%%/source/spinneret-tags.lisp
+%%DATADIR%%/source/start.lisp
+%%DATADIR%%/source/status.lisp
+%%DATADIR%%/source/time.lisp
+%%DATADIR%%/source/tutorial.lisp
+%%DATADIR%%/source/types.lisp
+%%DATADIR%%/source/urls.lisp
+%%DATADIR%%/source/user-classes.lisp
+%%DATADIR%%/source/user-files.lisp
+%%DATADIR%%/source/user-interface.lisp
+%%DATADIR%%/source/utilities.lisp
+%%DATADIR%%/source/web-extensions-callbacks.lisp
+%%DATADIR%%/source/web-extensions.lisp
+%%DATADIR%%/source/window.lisp