Man page related collisions

Everything is working fine, I’m just curious about the collisions which are always reported on an upgrade. I get many of them, and they all seem to be related to man pages, and look like this:

warning: collision between `/nix/store/vjb7j8723gwwcw2d7bcdirxkr5g07llw-podman-4.7.2-man/share/man/man1/podman-exec.1.gz' and `/nix/store/c36fzzn93aa7xszp1vvxwz2ywxyfayr9-podman-4.7.2-man/share/man/man1/podman-exec.1.gz

As I said, everything works, I’m just curious what this means. The collision is obviously handled gracefully but doesn’t seem to ever be “fixed” because the warnings are always there, primarily related to podman. What is happening under the hood?

For some reasons (that might be totally fine) there are to slightly different versions of podman linked into your system closure and both provide a file (podman-exec.1.gz) to be linked as /run/current-system/share/man/man1/podman-exec.1.gz. And both have the same priority, so Nix has to throw a coin to select one as link target.
This is fine if the files are the same and can be ignored. If you want to solve this, you have to fiddle with priorities in Nix, but many of these should dimply vanish if once (if ever…) CA derivations arrive.

Ty

I only have a simple configuration.nix file, which declares (is that the right term?) podman and podman-compose and enables virtualization.podman. Where else might the other version be being declared?

If you want to solve this, you have to fiddle with priorities in Nix, but many of these should dimply vanish if once (if ever…) CA derivations arrive.

What are “CA derivations”? (I like to fiddle when I’ve got some time :wink:

You can play around with nix why-depends or nix-tree to see why the two store paths you mentioned above are pulled into /run/current-system.


CA derivations: Ca-derivations - NixOS Wiki
In short: The hash in the nix store path of a derivation is determined by the inputs. CA derivations compute the hash on the build results. Say, you have two build of podman, one linking to libA, version 1.11.3 and the other one to libA, version 1.11.4 but otherwise identical, they likely will produce identical man pages and thus you would only have one /nix/store/somehash-podman-4.7.2-man.

Thanks again for your time. I look forward to exploring.