Compiling from source

Hi guys.

I am trying to compile Nyxt from scratch as per instructions on the github page:

  1. $LISP to create a new Lisp REPL (replace $LISP with sbcl or any supported Common Lisp compiler).
  2. Execute (require :asdf) if ASDF is not already loaded.
  3. Execute (asdf:load-asd "/full/path/to/nyxt.asd") to load the Nyxt system definition (you must use absolute pathnames).
  4. Execute (ql:quickload :nyxt/gi-gtk) to load the Nyxt system into your Lisp image.
  5. Execute (nyxt:start) to open your first Nyxt window.

I git cloned and ran step #4, but i get the following error:


[package new-let].................................
[package gmap]....................................
[package rev-fun-bind]............................
[package lexical-contexts]........................
[package mt19937].................................
[package fset]....................................
[package fset-user]...............................
..................................................
..................................................
..................................................
....
To load "nyxt/gi-gtk":
  Load 1 ASDF system:
    nyxt/gi-gtk
; Loading "nyxt/gi-gtk"
To load "nsymbols/star":
  Load 2 ASDF systems:
    asdf closer-mop
  Install 1 Quicklisp release:
    nsymbols
; Fetching #<URL "http://beta.quicklisp.org/archive/nsymbols/2023-02-14/nsymbols-20230214-git.tgz">
; 32.59KB
==================================================
33,369 bytes in 0.13 seconds (246.87KB/sec)
; Loading "nsymbols/star"
..
To load "nyxt/gi-gtk":
  Load 1 ASDF system:
    nyxt/gi-gtk
; Loading "nyxt/gi-gtk"

debugger invoked on a QUICKLISP-CLIENT:SYSTEM-NOT-FOUND in thread
#<THREAD "main thread" RUNNING {1001880173}>:
  System "prompter" not found

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
  0: [CONTINUE               ] Try again
  1: [ABORT                  ] Give up on "prompter"
  2:                           Give up on "nyxt/gi-gtk"
  3: [REGISTER-LOCAL-PROJECTS] Register local projects and try again.
  4:                           Exit debugger, returning to top level.

((LABELS QUICKLISP-CLIENT::RECURSE :IN QUICKLISP-CLIENT::COMPUTE-LOAD-STRATEGY) "prompter")
   source: (CERROR "Try again" 'SYSTEM-NOT-FOUND :NAME NAME)
0] 

Any suggestions on how to resolve that issue?

Hello! So the thing is that not all of our libraries are yet in Quicklisp, so what you can do is manually clone the prompter library and place it in a place that Quicklisp will find it!

Additionally, what might be a lot easier is just doing a recursive clone of the project with all of the submodules and copying those to a place that Quicklisp will find them. That way, you can be sure you have all of the correct modules.

Thank you for the quick answer. I am not sure I understood you correctly. However I hadn't had SBCL installed yet so I did this, installed quicklisp, then cloned prompter into the quicklisp/local-projects/ folder and also extracted nyxt into that.

Not working however. Sorry for the inconvenience. Any further lead would be much appreciated.

Try putting it into ~/common-lisp/ folder. ~quicklisp/local-projects/ is Quicklisp-specific, while ~/common-lisp/ is also working for ASDF, which we’re using in our default build procedure.

Hey guys. Just dropping in to assist with the compilation process, I managed to compile from source. I upgraded to Debian 12 to run the LEM editor so it was time to try and compile Nyxt as well. These instructions should work on Debian 11 I believe.

Details:

  1. Tried various options for compiling on this page: nyxt/documents/README.org at master · atlas-engineer/nyxt · GitHub

  2. These days I used ~/common-lisp for projects so I put all source code in there.

  3. Pull the source for Nyxt: git clone --recurse-submodules GitHub - atlas-engineer/nyxt: Nyxt - the hacker's browser. ~/common-lisp/nyxt

  4. Pull the source code for GTK dependencies just in case: git clone GitHub - joachifm/cl-webkit: A binding to WebKitGTK+ for Common Lisp ~/common-lisp/cl-webkit

  5. Update Quicklisp just in case: (ql:update-dist “quicklisp”)

  6. CD into Nyxt source dir and use the make script to compile Nyxt: make all

  7. On the first try it errored out because there was a file it could not write to because it already exists. I cannot remember the name but it was a hidden file called .lisp or something like that. Anyway, it was not something my system used, deleted the file, and I compiled the Nyxt binary successfully.

It is SO NICE to have a single binary I can drag around (on supported platforms) and have a full browser experience. Nyxt is really turning out to be something amazing.

I hope that helps those that want a compiled binary for their system.

@holycow thanks for the feedback!

Notice that if you download the sources with the git submodules you should get all of the Lisp dependencies, so you should be able to run make all without Quicklisp or cloning Lisp dependencies manually.

@holycow do you happen to have any experience with packaging in Debian? We would love to have a Nyxt PPA but none of us uses a Debian-based distribution so we lack the knowledge/experience.

Hi, sorry for the late reply, my schedule is quite tight.

While I don’t have experience packaging for Debian, I am a sysadmin and picking that up would be no problem. I can look into it and see if I can take this on given what is currently on my plate.

Nyxt compiles nicely into a single binary so I don’t have to worry about dependencies so this should be pretty straight forward.

Give me a bet to get back to you on this.

@holycow we really appreciate your time and interest in the project.

Thank you!