The Filesystem Hierarchy Standard Comes to Guix Containers
GNU Guix is different from most other GNU/Linux distributions and perhaps nowhere is that more obvious than the organization of the filesystem: Guix does not conform to the Filesystem Hierarchy Standard (FHS). In practical terms, this means there is no global /lib containing libraries, /bin containing binaries,¹ and so on. This is very much at the core of how Guix works and some of the convenient features, like per-user installation of programs (different versions, for instance) and a declarative system configuration where the system is determined from a configuration file.
However, this also leads to a difference in how many pieces of software expect their world to look like, relying on finding a library in /lib or an external tool in /bin. When these are hard coded and not overcome with appropriate build options, we patch code to refer to absolute paths in the store, like /gnu/store/hrgqa7m498wfavq4awai3xz86ifkjxdr-grep-3.6/bin/grep, to keep everything consistently contained within the store.
It all works great and is thanks to the hard work of everyone that has contributed to Guix. But what if we need a more FHS-like environment for developing, testing, or running a piece of software?