On Sun, Nov 13, 2022 at 04:49:05PM -0800, Tom Willemse wrote: > Hey Efraim, > > Efraim Flashner writes: > > > On Mon, Oct 31, 2022 at 12:18:50AM -0700, Tom Willemse wrote: > >> Hey Guix \o/ > >> > >> I've been wanting to package one of my little scripts in Guix Home and > >> it uses a little library I wrote for SCSH. I've been looking at how > >> Search Paths work and I'm having trouble figuring out how to make this > >> work. > >> > >> Search paths seem easy enough generally, I was able to add a simple > >> addition to my configuration by just adding this to the scsh package > >> definition: > >> > >> (native-search-paths > >> (list (search-path-specification > >> (variable "SCSH_LIB_DIRS") > >> (files '("share/scsh/site"))))) > > > > Try adding the 'separator' field, so it would look like this: > > > > (native-search-paths > > (list (search-path-specification > > (variable "SCSH_LIB_DIRS") > > (separator " ") > > (files '("share/scsh/site"))))) > > Thanks for the suggestion! Unfortunately this gets me a value of > `SCSH_LIB_DIRS' like > > /home/chelys/.guix-home/profile/share/scsh-0.7 > > which, when I try the command `scsh -ll mpd.scm -o mpd' causes the > following error to appear: > > error: Illegal path element in $SCSH_LIB_DIRS > $SCSH_LIB_DIRS: /home/chelys/.guix-home/profile/share/scsh-0.7 > The following element is not a string or #f: /home/chelys/.guix-home/profile/share/scsh-0.7 > > It's because SCSH treats the contents of `SCSH_LIB_DIRS' as "a sequence > of of s-expressions, which are `read' from the string"[1] and supports > either string values or the value #f. So `SCSH_LIB_DIRS' would have to > be in this case: > > "/home/chelys/.guix-home/profile/share/scsh-0.7" > > I guess this just isn't supported as yet in Guix? > I played around with a bunch of different options, and I wasn't able to get the search-path-specification to pass the directories as strings. If we change the file-type to 'string then it looks for strings, but it really means it's looking for individual files or for directories, so that's not the right change. IMO the easiest way to work around it (from scsh, not from guix) would be to use 'stringify' from (scheme utilities) in (scheme lib-dirs) (for the syntactic sugar around symbol->string) to make all the items in the search path into strings if they aren't already. Actually I have a simple diff I'll send upstream that should take care of it. If you could help test it that'd be great. I haven't been able to create a scenario where I had more than one path in the SCSH_LIB_DIRS. -- Efraim Flashner אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted