News for hackers. Stuff that matters.
Re:What Is Nix? by foldr on Thursday May 21, 2020 @03:46AM (#23255827)
The problem here really seems to be with nix. The /nix path shouldn't be hard coded. (Security concerns aside, I don't want a package manager to clutter up my root directory.)
Re:What Is Nix? by casept on Thursday May 21, 2020 @04:22AM (#23256035)
It's necessary to hardcode paths in order to ensure that the exact version of a dependency is linked into the executable. Without this mechanism, nix packages would not be reproducible and self-contained.

Also, the path isn't really hardcoded. You can use a custom path, but that means you can't use binary caches.

Re:What Is Nix? by foldr on Thursday May 21, 2020 @05:11AM (#23256343)
I'm sure there are reasons for it, but it still sucks.

It ought to be possible to use binary caches and still swap out the path. (Modifying a string in an ELF executable isn't that hard.)

Re:What Is Nix? by catern on Thursday May 21, 2020 @10:45AM (#23258972)
It's not just ELF executables that hardcode the path. There's a ton of different ways to run software which all use hardcoded paths. Which is good! That's the entire value proposition of Nix, in a way, that it's now safe to use hardcoded paths. But you can't edit all those different hardcoded paths in all those different filetypes.
Re:What Is Nix? by foldr on Friday May 22, 2020 @04:57AM (#23269995)
Where else are paths hardcoded? This seems like a huge mess.
Re:What Is Nix? by catern on Friday May 22, 2020 @04:59PM (#23276941)
Just picking one example off the top of my head, pkg-config files.
Re:What Is Nix? by bennofs on Thursday May 21, 2020 @05:59AM (#23256597)
Modifying a string in ELF is hard. As long as the string has the same length as the original one, it has a good chance to work (but still fails for compressed data). But if you want an arbitrary directory, you need to replace it with a different length path, and that will probably break a lot of things.
Re:What Is Nix? by takeda on Thursday May 21, 2020 @12:00PM (#23260071)
The nix author created utility called patchelf which is used by nix all the time during the build (to rewrite library paths).

As far as I know it creates a new elf each time it is called (it doesn't modify a file on place) so the length of library name is not an issue.

Re:What Is Nix? by foldr on Thursday May 21, 2020 @07:01AM (#23256943)
It's not that hard if you leave some spare space for string constants in the .rodata section. Nix already patches ELF executables as things stand.
Re:What Is Nix? by ris on Thursday May 21, 2020 @06:03AM (#23256624)
The problem is how it affects all the hashes, which aren't recalculable in such an easy way.
Re:What Is Nix? by foldr on Thursday May 21, 2020 @07:00AM (#23256938)
Could you not check the hashes before doing the substitution?