何もしていないのにパソコンが壊れた。
エンジニアにあるまじき発言ではあるが何もしていないのにパソコン (環境) が壊れてしまった。
Nix
PC の環境構築に Nix と呼ばれるパッケージ管理システムを使っている。 Nix を使っていると何が嬉しいのか、はインターネット上に熱い思いを語っている人たちに任せるとして、ここ数週間この Nix によって管理していた環境が壊れてしまった。壊れたというのは語弊があり、正確にはパッケージの更新ができない状態に陥っている。
Nix とは言ったが、macOS を使っているので正確には
の組合せになる。
この環境で sudo darwin-rebuild switch --flake
を実行すると数週間前から次のようなエラーが発生するようになった。
この影響でアプリケーションのインストールもアップロードもできなくなってしまった。
原因はエラーメッセージにもあるように現在の環境が arm64-apple-darwin
として認識されていることだろう。
これのせいで業務にも支障が出そうだったので調べていたら GitHub で関連する Issue が見つかったのでメモしておく。関連する Issue の様子を見ると解消には時間がかかりそうだ。
システム名称の変更
どうやら事の発端は NixOS/nixpkgs に lib/systems: use Darwin architecture names for config
and uname
by emilazy · Pull Request #393213 · NixOS/nixpkgs という PR が入ったことのようだ。
これまで ARM 64 ビット macOS (Apple Silicon) は aarch64-apple-darwin
という名称で扱われていたがこの PR から arm64-apple-darwin
という名称に変更されている。この変更自体も LLVM 20 での変更に対応するための修正であるため、一番悪いのは LLVM。
AArch64 と arm64 という名称の使い分けについて意識していなかったが、LLVM の文脈では LLVM のバックエンドの aarch64 と arm64 の違い - 組み込みの人。 に書かれているように AArch64 は ARM によって作られたもので、ARM64 は Apple が作ったものらしい。この記事では AArch64 の方に統一する動きがあったようだけど、月日が流れてまた別れることになったということなのかな…。
確かに手元で uname -m
を実行すると arm64
と表示される。
このあたりの不一致を解消したいのだろうが、この影響でビルドに失敗するパッケージが出ているようだ。
- scummvm: fix aarch64-darwin ranlib path by niklaskorz · Pull Request #407897 · NixOS/nixpkgs
- bug: Firefox refusing to build on standalone MacOS setup · Issue #6878 · nix-community/home-manager
- Nix standalone on MacOS's system string is
arm64-apple-darwin
and notaarch64-darwin
· Issue #401364 · NixOS/nixpkgs - copilot-language-server-fhs: Can't build on darwin · Issue #408666 · NixOS/nixpkgs
このあたりの PR、Issue の内容を見ると stdenv.hostPlatform.config
を使わずにハードコーディングしていたようなパッケージや stdenv.hostPlatform.darwinArch
を使っているパッケージがあおりを受けているようだ。
解決方法
調査中。現時点では nixpkgs の対応を待つしかない気がする。
全てのパッケージが使えない状態ということはないはずなので原因となっているパッケージを特定するしかないかもしれない。
おわりに
早く解決してくれー。