4 ms·
However, you can use synthetic firmlinks to define arbitrary root-level paths that _are_ writable. See `man synthetic.conf` No, synthetic.conf only creates di
by danieldk 6y ago
However, you can use synthetic firmlinks to define arbitrary root-level paths that _are_ writable.
See `man synthetic.conf`
No, synthetic.conf only creates directories or symlinks. If it actually created firmlinks, the problem would probably be much smaller.
The problem with symlinks is that some builds use realpath. If /nix was a symlink to e.g. /usr/local/nix, this would result in /usr/local/nix being used in this builds. This leads to various build problems [1] and can result in the wrong paths ending up in binaries. If this happens on a builder, the resulting binaries are not portable between macOS + Nix machines.
So, instead the only way to get it currently working is to use synthetic.conf to create a new top-level directory and mount a APFS volume with the Nix store there.
If Apple actually allowed creating firmlinks with synthetic.conf, the Nix installation would be drastically simplified. /nix could just be a firmlink to e.g. /usr/local/nix, since realpath does not report the actual path on firmlinks.
[1] https://github.com/NixOS/nix/issues/2926#issuecomment-559989390 https://github.com/NixOS/nix/issues/2926#issuecomment-559989...
- aeontech 6y agoI stand corrected, I must have misunderstood the doc.