2026年リモート Mac CIでは Flake 入力ロックが再現性の芯で、律速は substituter 越境/nix に落ちがちです。nix.conf(順序・鍵・max-jobscores)と lock 更新/ロールバックリトライと水位を一枚にまとめます。ホーム技術ブログ一覧Registry 越境 pull 決定表並列とディスク FAQ

2026 シナリオ:入力ロックと substituter の律速

Flakeflake.lock で入力を固定しますが、越境 CI では substituter への HTTP/nix の IO が律速になりやすく、max-jobs を上げすぎるとディスク競合が先に出ます。

早引き:多リージョンなら近接キャッシュを substituters 先頭へ。監査重視なら社内キャッシュ+trusted-public-keys の IaC 配布

優先して潰すリスク(チェック順)
  • untrusted substitutertrusted-public-keys の欠落・タイプミスを runner 全体で潰す。
  • HTTP 連鎖失敗max-jobs を一段下げ、バックオフ後に同一コマンドを再試行。
  • /nix 枯渇:使用率 85% で新規大ビルドをキュー、90% 付近で nix-collect-garbage 方針を発火。

nix.conf 雛形(substituters・鍵・max-jobs・cores)

/etc/nix/nix.conf を runner に配布し、flake の nixConfig だけに頼らない(鍵不一致は気づきにくい)。

キー役割越境 runner 初期目安上げる/広げる条件
substituters左から問合せ近接を左へログで順序調整
trusted-public-keys署名検証公式+自前鍵キャッシュ追加時に必ず追加
max-jobs並列度1〜2(共有機)専用・SSD 快調で段階的に増加
cores1 ジョブのスレッド0 または 50〜75%余熱・他テナントを見て調整
substituters = https://cache.nixos.org https://YOUR_CACHE.cachix.org https://nix-cache.internal.example.invalid
trusted-public-keys = cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= YOUR_CACHIX_PUBLIC_KEY_PLACEHOLDER YOUR_SELFHOSTED_CACHE_PUBLIC_KEY_PLACEHOLDER
max-jobs = 2
cores = 0

認証付きキャッシュは access-tokens/netrc をrunner 専用ユーザーに限定。

対照表:本機ストア vs 公開 substituter vs 自前キャッシュ

経路レイテンシ再現性運用コスト向く条件(2026 実務)
本機 store最短lock と整合蓄積型warm-up 可
公開 substituter越境で遅い鍵で検証標準依存中心
自前キャッシュ近接で安定社内統制多 runner・帯域課金

ログの from https:// 比率が高いほど越境律速。近接キャッシュを検討。

Flake lock の更新・ロールバックと失敗リトライ

lock 更新は専用コミットに分離し、git diff flake.lock を PR で必ず見る(2026は入力 URL 改ざん検知も同列がおすすめ)。

コマンド早見(コピー)

nix flake update
nix flake lock --update-input nixpkgs
git restore --source=HEAD^ flake.lock
for i in 1 2 3 4; do
  NIX_MAX_JOBS="${NIX_MAX_JOBS:-2}" nix build ".#${FLAKE_ATTR_PLACEHOLDER}" --print-build-logs --accept-flake-config && break
  case "$i" in 1) sleep "${B1:-4}";; 2) sleep "${B2:-12}";; 3) sleep "${B3:-30}";; *) sleep "${B4:-90}";; esac
  export NIX_MAX_JOBS=$(( ${NIX_MAX_JOBS:-2} > 1 ? ${NIX_MAX_JOBS:-2} - 1 : 1 ))
done

HTTP 失敗は待機 4→12→30→90 秒(上限 120)を挟み、各段で max-jobs を一段下げるか substituters の順を見直す。

/nix ボリューム水位(パラメータ一覧)

指標警告スロットル停止・GC
/nix 使用率78〜80%85% で大容量 drv のキュー90%:ジョブ延期+nix-collect-garbage -d 方針
空き容量(絶対)< 25 GB< 12 GB< 6 GB:世代 LRU/共有キャッシュへ逃がす

FAQ(substituter・lock・TLS)

Q. ignoring untrusted substituter と出る
A. trusted-public-keys にそのキャッシュの公開鍵を追加し、nix show-config で runner 実効設定を確認。flake の nixConfig だけ更新してもデーモンが読まないケースに注意。

Q. lock を上げたらビルドだけ壊れた
A. git diff flake.lock で入力 URL と rev を点検し、問題入力だけ nix flake lock --override-input でピン留め。緊急時は git restore でロールバック。

Q. 社内 TLS 検査で substituter が失敗
A. システム/Nix の信頼ストアに社内ルート CA を配布し、プロキシは HTTPS_PROXY と Nix の設定を二重に確認。越境直結が難しい場合は近接の自前キャッシュへ寄せる。

まとめと次の一手(購入・資料)

要点はlock レビューsubstituter+鍵max-jobs/ディスク水位の三点。2026は近接キャッシュの価値が上がるため、本表を Runbook 1 枚に。

Nix CI の再現検証は専用リモート Macで。ホーム料金購入ヘルプセンターログイン不要技術ブログ一覧Registry 越境 pull 決定表

Nix Flake CI

substituter と lock をリモート Mac で踏み固める

料金・購入・ヘルプはログイン不要。まずはプラン比較とブログ一覧からどうぞ。