Nixの再現性
from Nix
Nix Flakes, Part 1: An introduction and tutorial - Tweag
#WIP
時代の流れや実装のことを全く知らないので曖昧なことしか書けないけどmrsekut.icon
誤解もあると思うので、ここに書いてることは信用せずにリンク先を読んでほしい
従来のNixの再現性の問題
derivation graphへのnix fileの評価は、実際はあまり再現性がない
Nix filesは以下のようなものにアクセスできる
~/.config/nixpkgs/config.nixのような設定ファイル
環境変数
Git repositories
$NIX_PATH
コマンドライン引数
builtins.currentSystem
.nixとかでversionを指定していたとしても、上記のようなパラメータが色々あるので完全に気密できていないため、完璧な再現ができない
何らかのtoolを使いたい時、一般的にはNixpkgsを使うことになるが、そこで全てが揃うわけではない
import <nixpkgs>は再現性がない
nixpkgs自体のversionが変わりうるため
nixpkgsをpinする方法もある
これはfetchTarballを使っている
ていうかそもそもこれのversion管理ってnix内でなんでやってないの #??
fetchGitやfetchTarballを使えば固定できるが、git hashを更新しないといけないのでめんどい
https://serokell.io/blog/what-is-nix
NixはアンチFHS
FHSは再現性と相性が悪い
この辺を解決し、楽に利用できるようにする
例えば、$ nix shell github:edolstra/helloのようにして実行する
nixpkgsの再現性の問題の解決
Flakes
niv
Reproducible Builds