New in macOS Big Sur 11.0.1, the system ships with a built-in dynamic linker cache of all system-provided libraries. As part of this change, copies of dynamic libraries are no longer present on the filesystem. Code that attempts to check for dynamic library presence by looking for a file at a path or enumerating a directory will fail. Instead, check for library presence by attempting to dlopen() the path, which will correctly check for the library in the cache. (62986286) This means that we no longer ship individual dylib files on disk. You should try passing in the -isysroot <PATH_TO_MACOS_SDK> flag to your clang link invocation.
Here's a good example of the kind of work to be done managing Darwin changes
The big solution is to update the expressions so that they can run with the new placement of Apple's runtime libraries.
[darwin (Big Sur): tbd based stdenv #98541](https://github.com/NixOS/nixpkgs/pull/98541) [darwin: Big Sur-compatible stdenv bootstrap #107013](https://github.com/NixOS/nixpkgs/pull/107013) [the fixes](https://gist.github.com/LnL7/a17a042dd21258b957279637bb6be627)
for more background.
Apple/darwin/Mac is and always will be a moving target:
The important change is:
Many Mac/Nix issues boil down to just being able to locate the right name.
_OBJC_CLASS_$_NSArray is undefined
If you are just missing
\_NS\* symbols you just need
Also of interest is using the NixOS virtual machine.