During dynamic linking, if two or more versions of the same library is loaded into a single process, it is usually a sign of trouble (there are exceptions of course). I feel that this is more likely to happen in systems managed by Nix compared to those managed by conventional package managers. With conventional managers, most likely only one version of a library is installed in the system. But with Nix, there can be many. For example, assume AppX depends on LibA and LibB, and both LibA and LibB depends on LibC. If the version of LibC that LibA uses (through RPATH) is different from the version that LibB uses (say they were compiled with different compile time options), then when AppX is run, two versions of LibC will be loaded and bad things can happen. Is there any mechanism in Nix to prevent this from happening? For example, when building a package, will Nix (by default) try to make sure that only one version of a library is used (directly or indirectly) by an executable?