One comment below. > + (native-inputs > + `(("clang" ,clang-11) > + ("lld" ,lld) > + ("llvm" ,llvm-11))) This looks rather suspicious from a cross-compilation perspective. IIUC, lld and llvm are used for two purposes: * for compiling the "zig" compiler --> native-inputs is ok (or is GCC used to compile the zig compiler?) * as a run-time dependency of "zig" --> should be 'inputs' Therefore, shouldn't "lld" and "llvm" be added to "inputs" as well? TODO to self: define a variant of disallowed-references disallowed-references/native that refers to the package in 'native-inputs' instead of 'inputs'. Perhaps explicitely whitelist some inputs (llvm, lld, maybe some implicit libc inputs?). Note: according to me, *all* inputs in native-inputs should be added to disallowed-references *by default* when cross-compiling. Alternatively, I guess ‘we’ could simply add a comment ;; Cross-compilation is currently unsupported. and leave cross-compilation for later. My comments are mostly about ‘giving the good example’ on how to use inputs & native-inputs and avoid giving ‘bad examples’ of package definitions without marking them as such. Greetings, Maxime.