以上です。だと味気ないので原因を簡単に。 crossとはdockerコマンドをラップしてRustでのクロスコンパイルを簡単に実現できるツールなのだけど、 現行のcrossの実装ではライブラリ、ツールチェーンをホストの環境からイメージ内にマウントすることで実現しているのだが、これが問題になる。
ご存知のようにNixOSではldすらハッシュ付きで/nix/store/xxxxxx-
みたいなパスに配置されており、
NixOSのrustupでもツールチェーンのインストール時にバイナリパッチで利用するldを書き換えてインストールするようにしてある。
なので存在しないldを読みに行こうとしてsh: 1: cargo: not found
なんて言われることになる。
幸いdocker in dockerはサポートされてあるのでdocker in dockerで使いましょう。 ホスト環境に依存しないdockerイメージにしてくれれば楽なんだけど……