From what I gather it goes something like this:
- every package is assigned a hash
- every package lists their dependencies through their hashes
- different versions of packages have different hashes
- when you launch an application it creates an environment with all its dependencies, this means that two applications that both use the same library at the same version share that library. However if they both require the same lib but not the same version of that lib they don’t share it.
Which solves DLL hell as far as i understand it.
you have to set up the
XDG_DATA_DIRS
environment variable to take into account~/.nix-profile/share
the desktop icons will only appear after a relogin though.