Is Nix good? Afaik the main selling point is that the package manager stores different software versions by hash, so all are accessible. Not sure how that works with everything else
it sort of is. The whole thing is made of what’s in /nix and it sets read-only attributes to all of it. You can modify it however you like by simply rebuilding it with updated configuration and you can switch at runtime or reboot.
I’m not super adcanced in it and you beter off referring to NixOS docs to learn about it specifically, but trying to answer your question, it creates symbolic links of libs or binaries and manipulates PATH, LD_PATH and others. Some packages will also have speciall wrapper scripts that prepare the environment for a binary to run.
The downside is that you can’t just run Linux binary directly when it’s dynamically linked and you need to use what’s in the repo or use special overlay to imitate FHS
Is Nix good? Afaik the main selling point is that the package manager stores different software versions by hash, so all are accessible. Not sure how that works with everything else
Isn’t it immutable? That’s a pretty big difference in itself
edit: Thank you for the replies, I’ll have to learn more!
No, Nix isn’t actually immutable. It runs packages in isolation, but they can still affect your file system.
it sort of is. The whole thing is made of what’s in /nix and it sets read-only attributes to all of it. You can modify it however you like by simply rebuilding it with updated configuration and you can switch at runtime or reboot.
How does stuff that’s not made specifically for nix discover it? E.g. how would gcc find the libraries it needs in /nix?
I’m not super adcanced in it and you beter off referring to NixOS docs to learn about it specifically, but trying to answer your question, it creates symbolic links of libs or binaries and manipulates PATH, LD_PATH and others. Some packages will also have speciall wrapper scripts that prepare the environment for a binary to run.
The downside is that you can’t just run Linux binary directly when it’s dynamically linked and you need to use what’s in the repo or use special overlay to imitate FHS
Got it, thanks 😁 I was looking for this kind of a tldr answer
To add on, every single package is manually defined and set in the PATH inside the derivation (which is what packages software in Nix).
Removed by mod