The documentation for `with-extensions' says: > In the same vein, sometimes you want to import not just pure-Scheme > modules, but also “extensions” such as Guile bindings to C libraries > or other “full-blown” packages. However it does not actually add those C libraries into (guile-extensions-path), which means that trying to actually use a library imported this way will lead to an error. I guess `load-path-expression' in (guix gexp) needs to also append to the `guile-extensions-path' based on the search-paths of the imported packages? Reproduction is simple. Make sure you *do not* have guile-yamlpp installed in your profile. Then build the `test' into a store item. --8<---------------cut here---------------start------------->8--- (use-modules (gnu packages guile-xyz)) (define test (with-extensions (list guile-yamlpp) (program-file "test" #~(use-modules (yamlpp))))) --8<---------------cut here---------------end--------------->8--- And try to run it: --8<---------------cut here---------------start------------->8--- $ /gnu/store/nq0sahcnph5sxms4irq4inv2hq2hfbzr-test Backtrace: 19 (primitive-load "/gnu/store/nq0sahcnph5sxms4irq4inv2hq2hfbzr-test") In ice-9/eval.scm: 721:20 18 (primitive-eval _) In ice-9/psyntax.scm: 1229:36 17 (expand-top-sequence _ _ _ #f _ _ _) 1221:19 16 (parse _ (("placeholder" placeholder)) ((top) #(ribcage () () ())) _ e (eval) #) 259:10 15 (parse _ (("placeholder" placeholder)) (()) _ c&e (eval) (hygiene guile-user)) In ice-9/boot-9.scm: 3935:20 14 (process-use-modules _) 222:17 13 (map1 (((yamlpp)))) 3936:31 12 (_ ((yamlpp))) 3327:17 11 (resolve-interface (yamlpp) #:select _ #:hide _ #:prefix _ #:renamer _ # _) In ice-9/threads.scm: 390:8 10 (_ _) In ice-9/boot-9.scm: 3253:13 9 (_) In ice-9/threads.scm: 390:8 8 (_ _) In ice-9/boot-9.scm: 3544:20 7 (_) 2836:4 6 (save-module-excursion _) 3564:26 5 (_) In unknown file: 4 (primitive-load-path "yamlpp" #) In yamlpp.scm: 65:1 3 (_) In unknown file: 2 (load-extension "libguile-yamlpp" "init") In system/foreign-library.scm: 190:25 1 (load-foreign-library _ #:extensions _ #:search-ltdl-library-path? _ # _ # _ # …) In unknown file: 0 (dlopen "libguile-yamlpp.so" 1) ERROR: In procedure dlopen: In procedure dlopen: file "libguile-yamlpp.so", message "libguile-yamlpp.so: cannot open shared object file: No such file or directory" --8<---------------cut here---------------end--------------->8--- Have a nice day, Tomas -- There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors.