Nix flakeで特定リビジョンのパッケージだけをビルドする
やり方
code:bash
$ nix flake github:NixOS/nixpkgs/{revHash}#{package}
文脈
そうすると時々 webkitgtk とか QtWebEngine の更新が多数降ってくる時がある
その上で webkitgtk や QtWebEngine の公式バイナリキャッシュがないと自前でビルドすることになる
→ つまり同時に webkitgtk や QtWebEngine の 2, 3並列ビルドが発生する
→ 即ち死(主にメモリとCPU)
いくら Ryzen 9 3950 + 128GB RAM + 128GB Swap + 64 GB zSwap でもムリな物はムリ
そのため、これらのパッケージを一つずつビルドしたい!という事が今回の要件
もう少し具体的に
まず flake.lock に入っている nixpkgs の commit hash を見る
見るべき項目は下記(抜粋)
code:flake.lock
"nixpkgs": {
"locked": {
"lastModified": 1724467107,
"narHash": "sha256-oZW7ymnqv9yyd6Ey04j/fjp+X7kayKEpBUbnAHlcGU4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0b6fa5ee40c14df33494d4ed9da1251e872fb0c2",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixpkgs",
"type": "github"
}
},
上記の場合目的の commit hash は 0b6fa5ee40c14df33494d4ed9da1251e872fb0c2
次に上記の commit hash を用いて nix build を行ない、特定のパッケージのみをビルドする
例えば
$ nix build github:NixOS/nixpkgs/0b6fa5ee40c14df33494d4ed9da1251e872fb0c2#webkitgtk_6_0
この状態でビルドが完了すると /nix/store にコンパイルされたバイナリが入る(はず)
この結果、nixos-rebuild boot --flake /etc/nixpkgs#nixos しても激重同時ビルドは走らない!
以上です