hraban / cl-nix-lite

Common Lisp module for Nix, without Quicklisp
GNU Affero General Public License v3.0
29 stars 2 forks source link

Help using this with Sly in (nixified) Emacs #4

Open evertedsphere opened 3 weeks ago

evertedsphere commented 3 weeks ago

Hello, I just stumbled upon this repo from this Reddit post. The packaging works great in SBCL by itself.

However, when I try to use a Sly REPL, whether one started directly from Emacs or an sbcl REPL with (slynk:create-server ..), Sly attempts to create lots of FASLs for the Lisp code it comes with, which fails with the classic "Read-only file system" error because I have a nixified (Doom) Emacs setup and the stuff it expects to be in ~/.emacs.d is actually in the Nix store.

If I install slynk via lispDependencies, surprisingly, I get the same FASL errors pointing to the cl-nix-lite paths in the Nix store. Is this expected? (Note that there are other dependencies that are not as straightforward to install, like slynk-stepper.)

Would it be possible to package Sly's CL dependencies in cl-nix-lite? I'd be happy to help with, say, testing it out and writing documentation.

I'm quite new to CL development, so I'm sure how everything fits together yet. If you need any more diagnostic information, let me know how I can help.

hraban commented 3 weeks ago

I've never used Sly so I'd need to do a bit of preparing on my end to debug it, but I do use this with SLIME. I created a lil' package actually that allows you to load systems from cl-nix-lite on the fly: https://github.com/hraban/cl-nix-lite/tree/master/examples/emacs-slime

It's highly POC as I note in that doc, but it does the trick for me. The primary point is to only load the (built) packages into your asdf load path: not the src (because some packages try to write to their own source dirs on load), and not the other cl-nix-lite config (because that's for building, and you'd end up trying to write to the store). See the implementation of that .lisp file for more info.

If there's a specific error , let me know and I'm happy to take a look.

evertedsphere commented 1 week ago

It does work with SLIME.

I created a lil' package actually that allows you to load systems from cl-nix-lite on the fly: https://github.com/hraban/cl-nix-lite/tree/master/examples/emacs-slime

This works for me too; very impressive.