Nix Flake は定期的に nix flake update を打つことで nixpkgs などの依存する inputs を最新に保つことができます。
GitHub でコードを管理している場合 Dependabot でこれを行いたくなりますが、これまで Dependabot は Nix Flake をサポートしていませんでした。そのため自前で nix flake update を打つための workflow を用意して実行するというのが定番[1]でした。
そんな中 Dependabot が Nix Flake の更新を公式にサポートしたことが 4 月 7 日にアナウンスされました。これを使うと自前で workflow を用意しなくても更新を行うことができます。ということで Waq のレポジトリで試してみました。
まず以下のような YAML ファイルを .github/dependabot.yml として保存します。
version: 2
updates:
- package-ecosystem: nix
directory: / # flake.nix があるディレクトリを指定する。
schedule:
interval: daily # 一日一回動作させる。
すると flake.nix が依存している inputs(参考)が更新されると、それに追従するための PR が各 input ごとに作成されます:
- opam-repository: https://github.com/ushitora-anqou/waq/pull/19
- opam-nix: https://github.com/ushitora-anqou/waq/pull/20
- bombon: https://github.com/ushitora-anqou/waq/pull/21
- waq-external-repo: https://github.com/ushitora-anqou/waq/pull/22
- nixpkgs: https://github.com/ushitora-anqou/waq/pull/23
dependabot.yml に groups の設定をしておくと、複数の inputs の更新を一つの PR にまとめることもできます。例えば以下のように設定すると全ての inputs の更新が一つの PR にまとまります(参考)。
version: 2
updates:
- package-ecosystem: nix
directory: /
schedule:
interval: daily
# 以下を追加
groups:
dependencies:
patterns:
- "*"
注釈
-
本当に定番かどうかは知りません(は?)がちょくちょく見かける気がします。 ↩