特に理由はないのですが Zig を触ってみたくなったので、Nix で Zig プロジェクトを管理する方法を調べました。 最初に出てきた検索結果は(流石に)mitchellh の zig-overlay です。 ドキュメントが十分にあって分かりやすいですが、使用例の一部が目に留まりました。
|
|
flake-utils を使った flake では普通lib.eachDefaultSystem
を呼ぶことが多いのですが、この例では対応システムを明示的に宣言していますね。
具体的にどのシステムが対応されるのか知りたくて、すぐnix repl
を叩いてみたんですけど、そこで、外部の flake はどうやって読み込むんだっけ?って気づいて手が止まりました。
現行ディレクトリに flake がある場合は:lf
で済みますが、zig-overlay は GitHub 上での flake なので、別の方法が必要です。
ネットで調べてみるとbuiltins.getFlake
という関数があり、これで flake の出力を直接取れそうです。
nix-repl> zig = builtins.getFlake "github:mitchellh/zig-overlay"
nix-repl> builtins.attrNames zig.packages
[
"aarch64-darwin"
"aarch64-linux"
"x86_64-darwin"
"x86_64-linux"
]
つまり、先ほど見たsystems
はflake-utils.lib.defaultSystems
と同じですね。
これ、わざわざ宣言する意味あるのかな(笑)