On 2022-11-11 12:40, jgart@dismail.de wrote: > On Fri, 11 Nov 2022 09:31:40 -0500 Jake Shilling wrote: >> my configuration files, I have a toplevel script which updates the >> %load-path: >> >> ``` >> (when (current-filename) >> (add-to-load-path >> (dirname (current-filename)))) >> ``` >> >> So when I load that file into the repl with C-c C-l all the subsequent >> use-modules work. > > You have to do all that before geiser will pick up the source files in > my guix checkout? You would only need to do that for a script that is not included in either your `GUILE_LOAD_PATH` environment variable or in 'geiser-guile-load-path. The directories set up in either of those places will be used to initialize %load-path when the guile repl starts. To give you a sense of where I'm using this: I have a repository [1] cloned to ~/dotfiles, which contains a script that generates a configuration for guix home. I want that script to know about other modules I make in the same directory, but I don't what scheme programs I work on in other places to be aware of my dotfiles helpers. Putting that block at the top of the file is what makes that work (i.e. ~/dotfiles is only in my %load-path after I evaluate ~/dotfiles/config.scm). This same dotfiles repository also makes use of modules that come from different channels (mostly the default guix channel and RDE [2]). I do want these modules to be visible in ever guile repl though no matter what script I'm working on, so I handle that by setting my GUILE_LOAD_PATH: ``` GUILE_LOAD_PATH="/run/current-system/profile/share/guile/site/3.0:${HOME}/.config/guix/current/share/guile/site/3.0" ``` Any time I add a new channel and run `guix pull`, that channel is going to be checked out to ${HOME}/.config/guix/current/share/guile/site/3.0 and be picked up by default. This works for me because I'm not actively working on the guix source code, so I don't want to manage that as a project cloned down manually. For me, guix is just a collection of modules to use in my other scripts. All that is to say, you only need to do something like the block above if you have a directory that should only be visible to certain projects/script files. If you add any directory to the geiser-guile-load-path then it is going to be picked up anyway and you don't need to do anything special. [1] https://gitlab.com/shilling.jake/dotfiles/-/blob/master/config.scm#L5 [2] https://sr.ht/~abcdw/rde/ > > Just doing the following as recommended in the guix manual is not enough? > >> (with-eval-after-load 'geiser-guile >> (add-to-list 'geiser-guile-load-path "~/guix")) > > My source checkout of guix is in `~/guix`. > That is definitly enouhg to make sure ~/guix is processed by guile and then Gieser. The only caveat is that if you forget to update the repository there, or forget to guix pull, then you could end up with Geiser looking at a different version of the guix modules than what is actually installed in your profile. -- Best regards, Jake Shilling