I've investigated the possible solutions to avoid including the paths into the binaries. I've found this: https://github.com/golang/go/issues/16860 It's still unresolved and only planned for Go 1.13. In the meantime, I've played with the -trimpath option to see if I could get something out of it. I've added this to Go's (build) function: --8<---------------cut here---------------start------------->8--- "-asmflags=all=-trimpath=/gnu/store" "-gcflags=all=-trimpath=/gnu/store" --8<---------------cut here---------------end--------------->8--- The resulting binary is indeed trimmed, but that's not enough: it seems that Guix detects the remaining part of the path as a store item and includes it in the list of requisites. Is this really how Guix works? It does not need the full path? Go supports only one call to -trimpath, so we can't even set this to the Go inputs. Regarding Boyer-Moore over the binary, we would have to apply the changes for all recursive Go libraries. Now is there a reliable way to detect what's a Go library and what is not? We don't want to patch non-Go libraries, right? (Let's not forget that there is CGo...) If we can't think of a way to detect a Go library, Boyer-Moore does not seem to be a solution either. And we might have to wait for Go 1.13... -- Pierre Neidhardt https://ambrevar.xyz/