When a program contains: (use-modules (foo bar))
Guile searches for a file named foo/bar.scm (or foo/bar) in its search path. The search path is defined by the user, using the GUILE_LOAD_PATH environment variable etc. (info "(guile) Load Paths"). So the source file of that module, foo/bar.scm, can be moved around on the file system, as long as GUILE_LOAD_PATH is adjusted to list the directory that contains this file. Does that answer your question? Ludo’.