特に理由はないのですが 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と同じですね。
これ、わざわざ宣言する意味あるのかな(笑)