I’m trying to use
stdenvNoCC.mkDerivation to build Mac software that relies on Apple frameworks. It definitely used to work (maybe before I upgraded to Nix 2.4?), i.e., Carbon and other framework headers were picked up in the derivation build. Now that doesn’t seem to be the case. Has something changed?
For various reasons, I’m reluctant to use
stdenv.mkDerivation and add
Not using flakes (at least not yet).
I don’t know Apple stuff, but if I choose not to get a compiler, I would not expect Frameworks.
stdenvNoCC is meant for trivial tasks like composing configs and shuffling with files.
The only way
stdenvNoCC would pick up Apple frameworks is if the derivation is impure and Xcode or the command-line tools are installed. You can see an example of this in the MoltenVK derivation in nixpkgs.
Yes, thank you. Turns out that my problem occurred because sometimes installing Xcode command-line tools with
xcode-select --install does not do the trick, and that I additionally have to go and install the package manually from Apple’s developer site. That made the Carbon headers visible to the
Impure derivations definitely leave something to be desired.
Can you elaborate on “the right way” to install Xcode?
I’m writing a guide and dodging this pitfall or noting it might be a good inclusion.
I don’t know if it can be called “the right way”, but I ran into a problem where the recommended
xcode-select --install command-line incantation doesn’t fully install everything needed. I then downloaded “Command Line Tools for Xcode” of the appropriate version (link here, Apple Developer login required), and ran the installer. After that, the built-in compiler mysteriously started recognizing frameworks (like Carbon) again.