Clarification on Package Names and Versions

The compelling reason is that numerous projects require a specific version of a dependency (consider glibc) in order to function.

An example of that which has recently come up is glibc. If you have a binary which needs to run on ubu 18.04 or later, you need to link with glibc-2.27. Linking with any later version means your binary will not function on that platform.

nix with version 20.03 links glibc-2.32 by default. The latest distros of fedora and ubuntu run 2.31. So a binary built with nix will not run with any common distro even after patchelf.

Very nice. It would be good to be able to say

      buildInputs = [ glibc_2_27   ]   # etc

and have the program work.

Currently that is not possible.

FWIW, all of this is irrelevant of the projects goal is that nix builds packages specifically for nixos, and nixos only runs projects that have been designed to build on nixos.

If it is an explicit goal that nix function as a package manager for debian and redhat systems (not to mention darwin, arch etc) then the package versions are absolutely central to that function.