Multiple derivations with the same output paths?

Recently, I set the “keep-outputs” option in /etc/nix/nix.conf to true. I was surprised to find that, even with this option set, the “dev” and “info” outputs of the version of Guile I have installed (guile-2.2.3) were considered “dead”. It appears that the deriver according to the binary substitute I got from does not match the derivation nix reports locally. Can anyone explain why this would be? Additionally, how would I go about getting the deriver in /nix/var/nix/db/db.sqlite to match the store derivation reported by nix-env?

$ nix-env --version
nix-env (Nix) 2.0.1

$ cat ~/.nix-defexpr/channels_root/nixos/svn-revision 

$ nix-env -qaA nixos.guile --out-path
guile-2.2.3  dev=/nix/store/v2y174yp164nbz1y2qnikhhakbi8q6ky-guile-2.2.3-dev;info=/nix/store/rcg371bbsqi8ylc71pvyzs49cp4idfir-guile-2.2.3-info;/nix/store/4kgcsv8d0dk77x6yj6vzq02347qq4cxi-guile-2.2.3

$ nix-env -qaA nixos.guile --drv-path
guile-2.2.3  /nix/store/gxdzbn1qbd06lk4py4wbsb9qglz06a5f-guile-2.2.3.drv

$ nix-store -q --deriver /nix/store/4kgcsv8d0dk77x6yj6vzq02347qq4cxi-guile-2.2.3

Please let me know if any additional information is required.

Any fixed-output derivation with a given name and hash will always produce the same output path. If other derivations depend on these, you’ll get different drv hashes but still the same output paths. I’m guessing this is a case of this happening, though I don’t know which fixed-output drv in guile’s closure might have changed. Maybe nix-diff can help if you can get a hold of the jlpba4… drv file.