Hi Guix, The first patch ‘gnu: Explicitely pass the guile binary to wrap-script.’ does what it say what it does. This is important for picking up the guile binary for the architecture in --target instead of the guile from native-inputs. (The unpatched & patched package definitions do not have a guile native-input, so before this patch they wouldn't pick up a guile at all -- packages in inputs do not contribute to the $PATH when cross-compiling.) The second patch ‘gnu: Make guile packages cross-compilable when the fix is trivial.’ only touches guile libraries. It adds guile to the native-inputs when required, sometimes it adds guile to inputs and sometimes it copies propagated-inputs & inputs to native-inputs when cross-compiling. It also fixes some other cross-compilations issues like autoconf being in inputs instead of native-inputs. The second patch only touches gnu/packages/guile-xyz.scm; other packages are ignored. Also ignored are: emacsy-minimal (there have been patches and/or bug reports lately) guile-bash (retired project) and guile-studio (it is an Emacs package). Suggested testing method: (start shell script) # BAD_PACKAGES: fails to compile BAD_PACKAGES="guile2.0-commonmark guile3.0-ncurses-with-gpm guile-dbi guile2.2-pfds" # OK_PACKAGES: compiles & cross-compiles OK_PACKAGES="guildhall guile-daemon guile-dsv guile-filesystem guile2.0-filesystem guile2.2-filesystem guile-syntax-highlight guile2.2- syntax-highlight guile-sjson guile-sparql guile-email guile-mastodon guile-parted guile2.2-parted guile-config guile-hall guile-wisp guile-commonmark guile-stis-parser guile-persist guile-file-names guile-srfi-158 guile-semver jupyter-guile-kernel guile-ics srfi-64- driver guile-websocket g-wrap guile-webutils guile-srfi-159 guile-torrent guile-irc guile-machine-code guile2.2-sjson guile2.2-dsv guile2.2-email guile2.2-config guile2.2-hall guile2.2-ics guile2.2-wisp guile2.2-commonmark guile2.2-semver guile2.2-webutils guile-redis guile2.2-redis guile2.0-redis guile-irregex guile2.0-irregex guile2.2-irregex mcron guile2.2-mcron guile-srfi-89 guile-srfi-145 guile- srfi-180 guile-jpeg guile-hashing guile2.2-hashing guile-packrat guile-ac-d-bus guile-lens guile2.2-lens guile-rdf guile-jsonld guile- struct-pack guile-laesare guile-mkdir-p guile-jwt guile-r6rs-protobuf guile-shapefile schmutz guile-cbor guile-8sync guile-squee guile2.2- squee guile-colorized guile2.2-colorized guile-pfds guile-prometheus guile-aa-tree guile-simple-zmq guile2.2-simple-zmq guile-debbugs guile-email-latest guile-miniadapton guile-lib guile2.0-lib guile2.2-lib guile-minikanren guile2.0-minikanren guile2.2-minikanren python- on-guile" # NOT_CROSS_COMPILABLE: self-describing (compiles natively) NOT_CROSS_COMPILABLE="guile-cv guile-gi guile-ncurses g-golf guile-picture-language guile-sly guile-aspell guile-fibers guile-sodium guile-reader guile-udev haunt guile2.2-haunt guile2.0-haunt guile2.2-ncurses guile-ncurses-with-gpm guile-xosd artanis guile-xapian guile2.2-xapian guile-newt guile2.2-newt guile2.2-reader guile-avahi guile2.0-pg guile-libyaml guile-eris guile-ffi-fftw " make # replace aarch64 with architecture of choice and maybe adjust -M and -c ./pre-inst-env guix build $OK_PACKAGES $NOT_CROSS_COMPILABLE -M6 -c1 --fallback ./pre-inst-env guix build $OK_PACKAGES -M6 -c1 --target=aarch64-linux-gnu --fallback make as-derivation (end shell script) Greetings, Maxime