1. Each go package has an attribute name in nix, like anything else, that is not tied to its url.
2. Each go package has an url where to fetch the source from, which is not the import path to use the package.
3. Each go package has a number of old import url aliases (e.g. "code.google.com/...")
4. Whenever a package X depends on Y with an old import url, then X is rewritten to use the new url path of Y using govers.
So the problem is solved at our packaging level.
This is not to say it's the best solution, but certainly a good alternative solution.
1. Each go package has an attribute name in nix, like anything else, that is not tied to its url.
2. Each go package has an url where to fetch the source from, which is not the import path to use the package.
3. Each go package has a number of old import url aliases (e.g. "code.google.com/...")
4. Whenever a package X depends on Y with an old import url, then X is rewritten to use the new url path of Y using govers.
So the problem is solved at our packaging level.
This is not to say it's the best solution, but certainly a good alternative solution.