Change:
Currently 3 releases (and over a year) behind. Package name: nyxt Latest released version: 3-pre-release-3 <!-- Search your package here: --- Current version on the unstable channel: 2.2.4 Current version on the stable/release channel: 2.2.4 <!-- Type the name of your package and try to find an open pull request for the package If you find an open pull request, you can review it! There's a high chance that you'll have the new version right away while helping the community! --- Notify maintainers <!-- If the result shows no maintainers, tag the person that last updated the package. --Note for maintainers: Please tag this issue in your PR.
Thanks for notifying! I haven't used Nyxt in a long while, so Ive missed the updates. I should remove myself as maintainer, but $LIFE has kept me incredibly occupied this last year. Apologies, but I will not be able to maintain Nyxt in nixpkgs for foreseeable future.
Nyxt recently released 3.0.0; this issue could be updated to reflect that the new version is out of pre-release! (I see two maintainers in the file. Are those GitHub usernames we could ping? It would be awesome to get the new version into NixOS 23.05! If it isn't already too late of course.)
I tried to build a new nyxt several weeks, but it failed with a wired . If someone knows how to fix it, please try to open a pr to update nyxt to version 3.0.
I've been trying to package 3.0.0, I was able to fix the error got and make it start compiling the lisp files, but now I'm stuck at another error. (full log: ) My progress is in this branch if anybody wants to try their hand at it:
Unfortunately, I don't know much about Nix and its package definitions and, particularly, how it manages CL libraries. Still I may be able to provide some high-level tips, since I've spotted some issues with the definition wrote. may have some clues too. Find the Guix package definition below. Notice that is deleted from the Nyxt sources. can be found at and you need to point to the latest commit (not the latest release). I'm also sharing the Guix package definition for below. Nyxt will soon delete from its sources.
Thanks for the heads-up! I switched out the nasdf source from the nyxt repo to the ntemplate repo. That branch is actually slightly out of date, in the end I was successfully able to get 3.0 to compile :-), but unfortunately it crashes on startup without opening any windows with this log: But, it works fine if I run it with or with , I wonder if the error is what's causing it, it seems like it tries to recomplie nyxt, but fails (maybe is related?). Heres the log running with for reference: <details<summaryLog when running with --profile nofile</summary</detailsI wonder if using <codesb-ext:save-lisp-and-die</codeinstead of <codeasdf:make</codeis the reason, though I can't get <codeasdf:make</codeto work with nix :-( Also, forgive if this is a dumb question, but what's the difference between <codenyxt/gtk-application</codeand <codenyxt/gi-gtk-application</code:sweat_smile: ? I see that in the makefile it's <codegi-gtk-application</codewhile the 2.2.4 nyxt nix package used <codegtk-application</code. <brI updated my branch (<a href=""</a) with the changes I made, forgive me if it's a bit messy, I plan on cleaning it up after getting nyxt fully working.
GI stands for GObject Introspection. They're similar, but should be used. Could you explain why it doesn't work with ? It does seem like it. But I don't understand why this is being done. The package definition should be able to generate the Nyxt binary, and then invoking should just work. It seems that, in the way you're packaging Nyxt, calling triggers re-compiling CL systems. It may be because it sees that the modification date of is newer than the modification date of other source library files it depends on. I'm wildly trying to shoot in the dark, sorry! Probably I'm not making much sense.
Okay! I'll package gi-gtk-application then. Welp, this got me to take another look at it, and that was the problem after all! for some reason it works with but not with , thankfully I was able to get working! The way I understand it is that compiles the file into the source directory where the .asd file is located, which is in the nix store (which is immutable), so the build would fail, but there existed a function to compile lisp programs that write to the source dir () that I didn't think about till today, using it makes work correctly, and using makes nyxt work perfectly! :tada: Though it is a bit of an hack, since builds the derivation twice, so it build nyxt once and compiles correctly, then it tries to build it again and fails due to not being able to write the compiled file, but then it uses the copied compiled file from the first build to corretly install nyxt. There might be a better way to go about using , but I haven't found any so far. Thanks for helping, it got me to take another look at the problem and find a solution :-) I'll start working on the pr soon (the branch is updated and should be functional if anybody wants to try using it now: ).
the merit is all yours! :partying_face: The Nyxt team sincerely appreciates your work :)
Nyxt has released version 3.1.0. See It seems that has noticed the release. Once again, thank you!

Discussion:
fingerprint = "4779 D1D5 3C97 2EAE 34A5  ED3D D8AF C4BF 0567 0F9D"; }]; }; <ins> dariof4 = { name = "dariof4"; email = "dazedtank@gmail.com"; github = "dariof4"; githubId = 9992814; }; </ins> darkonion0 = { name = "Alexandre Peruggia"; email = "darkgenius1@protonmail.com";

glib gdk-pixbuf cairo mailcap pango gtk3 glib-networking gsettings-desktop-schemas <del> xclip notify-osd enchant </del> <ins> notify-osd enchant </ins> ] ++ gstBuildInputs; GST_PLUGIN_SYSTEM_PATH_1_0 = lib.makeSearchPathOutput "lib" "lib/gstreamer-1.0" gstBuildInputs; <ins> # The executable is already built in sbclPackages.nyxt, buildPhase tries to build using the makefile which we ignore dontBuild = true; </ins> dontWrapGApps = true; installPhase = '' mkdir -p $out/share/applications/

cp -f $src/assets/nyxt_''${i}x''${i}.png "$out/share/icons/hicolor/''${i}x''${i}/apps/nyxt.png" done <ins> # Need to suffix PATH with xclip to be able to copy/paste in Nyxt even if xclip/xsel/wl-clipboard are not in the user's PATH </ins> mkdir -p $out/bin && makeWrapper $src/bin/nyxt $out/bin/nyxt  <ins> --suffix PATH : ${lib.makeBinPath [ xclip ]}  </ins> --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "${GST_PLUGIN_SYSTEM_PATH_1_0}"  --argv0 nyxt "''${gappsWrapperArgs[@]}" '';

description = "Infinitely extensible web-browser (with Lisp development files using WebKitGTK platform port)"; homepage = "https://nyxt.atlas.engineer"; license = licenses.bsd3; <del> maintainers = with maintainers; [ lewo payas ]; </del> <ins> maintainers = with maintainers; [ lewo dariof4 ]; </ins> platforms = platforms.all; }; }

lispLibs = super.mathkit.lispLibs ++ [ super.sb-cga ]; }; <ins> quri_7_0 = build-asdf-system { inherit (super.quri) pname systems lispLibs; version = "0.7.0"; src = pkgs.fetchFromGitHub { owner = "fukamachi"; repo = "quri"; rev = "0.7.0"; sha256 = "sha256-/9p67rfbkdrx5nn4kXEUAM9MzV7NYUsRcKsrP/e2MlA="; }; }; cl-colors2_0_5_3 = build-asdf-system { inherit (super.cl-colors2) pname systems lispLibs; version = "0.5.3"; src = pkgs.fetchgit { url = "https://notabug.org/cage/cl-colors2"; rev = "refs/tags/v0.5.3"; sha256 = "sha256-anYkLJoNOVBQoXzWVBgbEusQDdud0RA8nZzedl8V93w="; }; }; cl-webkit2_3_5_8 = build-asdf-system { inherit (super.cl-webkit2) pname systems nativeLibs lispLibs; version = "3.5.8"; src = pkgs.fetchFromGitHub { owner = "joachifm"; repo = "cl-webkit"; rev = "3.5.8"; sha256 = "sha256-wZ/zRRJlTiOIny4BsU+wsFtxtS5YKx3WalwpCVQPFSY="; }; }; prompter = build-asdf-system { pname = "prompter"; version = "0.1.0"; src = pkgs.fetchFromGitHub { owner = "atlas-engineer"; repo = "prompter"; rev = "0.1.0"; sha256 = "sha256-Duv7L2lMjr3VXsoujQDOMNHCbdUDX4RWoncVm9LDCZE="; }; lispLibs = [ self.cl-containers self.nclasses_0_5_0 super.alexandria super.calispel super.closer-mop super.lparallel super.moptilities super.serapeum super.str super.trivial-package-local-nicknames ]; }; nasdf-unstable = build-asdf-system { inherit (super.nasdf) pname systems; version = "20230524-git"; src = pkgs.fetchFromGitHub { owner = "atlas-engineer"; repo = "ntemplate"; rev = "51a884f388ec526c32914093fcad6bb2434e3c14"; sha256 = "sha256-bjQPkiHAxhjsHCnWpCGMsmQlGDJFGtQEdevnhK2k+kY="; }; }; njson_1_0_0 = build-asdf-system { inherit (super.njson) pname; version = "1.0.0"; src = pkgs.fetchFromGitHub { owner = "atlas-engineer"; repo = "njson"; rev = "1.0.0"; sha256 = "sha256-zeOxkoi5cPl1sw1oEOaMsKhhs3Pb8EzzKTjvuDNj/Ko="; }; lispLibs = [ self.nasdf-unstable super.cl-json ]; systems = [ "njson" "njson/cl-json" ]; }; nsymbols_0_3_1 = build-asdf-system { inherit (super.nsymbols) pname; version = "0.3.1"; src = pkgs.fetchFromGitHub { owner = "atlas-engineer"; repo = "nsymbols"; rev = "0.3.1"; sha256 = "sha256-KcrE06bG5Khp5/807wb/TbPG3nWTlNWHrDpmK6bm7ZM="; }; lispLibs = [ super.closer-mop ]; systems = [ "nsymbols" "nsymbols/star" ]; }; nclasses_0_5_0 = build-asdf-system { inherit (super.nclasses) pname systems; version = "0.5.0"; src = pkgs.fetchFromGitHub { owner = "atlas-engineer"; repo = "nclasses"; rev = "0.5.0"; sha256 = "sha256-UcavZ0fCA2hkVU/CqUZfyCqJ8gXKPpXTCP0WLUIF1Ss="; }; lispLibs = [ self.nasdf-unstable super.moptilities ]; }; nfiles_1_1_2 = build-asdf-system { inherit (super.nfiles) pname systems; version = "1.1.2"; src = pkgs.fetchFromGitHub { owner = "atlas-engineer"; repo = "nfiles"; rev = "1.1.2"; sha256 = "sha256-YsVcCFrJIFL9Z4wQNAv6chiz6wB/eB8v/EUMXPLs3fw="; }; lispLibs = [ self.nasdf-unstable self.nclasses_0_5_0 self.quri_7_0 super.alexandria super.iolib super.serapeum super.trivial-garbage super.trivial-package-local-nicknames super.trivial-types ]; }; </ins> nyxt-gtk = build-asdf-system { inherit (super.nyxt) pname; <del> version = "2.2.4"; </del> <ins> version = "3.1.0"; </ins> <del> lispLibs = super.nyxt.lispLibs ++ (with super; [ cl-cffi-gtk cl-webkit2 mk-string-metrics cl-css ]); </del> <ins> lispLibs = with super; [ self.nasdf-unstable self.prompter self.cl-colors2_0_5_3 self.njson_1_0_0 self.nsymbols_0_3_1 self.nclasses_0_5_0 self.nfiles_1_1_2 self.quri_7_0 self.cl-webkit2_3_5_8 self.swank alexandria bordeaux-threads calispel cl-base64 cl-gopher cl-html-diff cl-json cl-ppcre cl-ppcre-unicode cl-prevalence cl-qrencode cl-tld closer-mop cl-containers dissect moptilities dexador enchant flexi-streams history-tree idna iolib lass local-time lparallel log4cl montezuma ndebug nhooks nkeymaps osicat parenscript py-configparser serapeum str phos plump clss spinneret slynk trivia trivial-clipboard trivial-features trivial-garbage trivial-package-local-nicknames trivial-types unix-opts cluffer cl-cffi-gtk cl-gobject-introspection ]; </ins> <del> src = pkgs.fetchzip { url = "https://github.com/atlas-engineer/nyxt/archive/2.2.4.tar.gz"; sha256 = "12l7ir3q29v06jx0zng5cvlbmap7p709ka3ik6x29lw334qshm9b"; </del> <ins> src = pkgs.fetchFromGitHub { owner = "atlas-engineer"; repo = "nyxt"; rev = "3.1.0"; sha256 = "sha256-H3AlslECb/VvIC6zAGkLNTaGJ/nb97J6RXAN8sEgAgY="; </ins> }; nativeBuildInputs = [ pkgs.makeWrapper ];

pkgs.gnome.adwaita-icon-theme ]; <ins> # This is needed since asdf:make tries to write in the directory of the .asd file of the system it's compiling postConfigure = '' export CL_SOURCE_REGISTRY=$CL_SOURCE_REGISTRY:$(pwd)// ''; </ins> buildScript = pkgs.writeText "build-nyxt.lisp" '' (load "${super.nyxt.asdfFasl}/asdf.${super.nyxt.faslExt}") <del> (asdf:load-system :nyxt/gtk-application) (sb-ext:save-lisp-and-die "nyxt" :executable t #+sb-core-compression :compression #+sb-core-compression t :toplevel #'nyxt:entry-point) </del> <ins> ;; There's a weird error while copy/pasting in Nyxt that manifests with sb-ext:save-lisp-and-die, so we use asdf:make instead (asdf:make :nyxt/gi-gtk-application) </ins> ''; <del> # Run with WEBKIT_FORCE_SANDBOX=0 if getting a runtime error # See https://github.com/atlas-engineer/nyxt/issues/1781 </del> # TODO(kasper): use wrapGAppsHook installPhase = super.nyxt.installPhase + '' rm -v $out/nyxt mkdir -p $out/bin cp -v nyxt $out/bin wrapProgram $out/bin/nyxt  <del> --set WEBKIT_FORCE_SANDBOX 0  </del> --prefix LD_LIBRARY_PATH : $LD_LIBRARY_PATH  --prefix XDG_DATA_DIRS : $XDG_ICON_DIRS  --prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH  <ins> --prefix GI_TYPELIB_PATH : $GI_TYPELIB_PATH  </ins> --prefix GIO_EXTRA_MODULES ":" ${pkgs.dconf.lib}/lib/gio/modules/  --prefix GIO_EXTRA_MODULES ":" ${pkgs.glib-networking}/lib/gio/modules/ '';

sbcl_2_3_4 = wrapLisp { pkg = callPackage ../development/compilers/sbcl/2.x.nix { version = "2.3.4"; }; faslExt = "fasl"; <ins> flags = [ "--dynamic-space-size" "3000" ]; </ins> }; sbcl_2_3_5 = wrapLisp { pkg = callPackage ../development/compilers/sbcl/2.x.nix { version = "2.3.5"; }; faslExt = "fasl"; <ins> flags = [ "--dynamic-space-size" "3000" ]; </ins> }; sbcl = sbcl_2_3_5;