fetchFromGitHub
NixのFetcher
defaultでは内部でfetchzipを使っているが、
いくつかのoptionを有効にすると内部でfetchgitを使うようになるらしい ref
たぶん気にしなくて良いと思うmrsekut.icon
docs
4つの引数
owner
GitHubのauthor名
repo
GitHubのrepository名
rev
Gitのcommit id
sha256
nix-prefetch-scriptsで取得できるsha256
docsには「the hash of the extracted directory」書いているがよくわからない
よくわからなくても指定はできるので以下の例を参照
例
2021/6/28現在でここを見てみる
zshのpluginとしてenhancdを使うために以下のような指定をしている
code:nix
name = "enhancd";
file = "init.sh";
src = pkgs.fetchFromGitHub {
owner = "b4b4r07";
repo = "enhancd";
rev = "aec0e0c1c0b1376e87da74b8940fda5657269948";
sha256 = "13n2c2kj25g8aqvlkb5j4vzcz5a4a22yc8v6ary651lpqgckx7cg";
};
enhancdは、「b4b4r07/enhancd」なのでownerとrepoはそのまま
2021/6/28現在のenhancdのmasterの最新commitはこれなので、そのcommit idであるaec..がrevに指定されている
sha256も環境を汚さずに確認することが出来る
nix-shellを使ってnix-prefetch-gitを入れる
code:shell
$ nix-shell -p nix-prefetch-scripts
nix-prefetch-git https://github.com/b4b4r07/enhancd
...
{
"url": "https://github.com/b4b4r07/enhancd",
"rev": "aec0e0c1c0b1376e87da74b8940fda5657269948",
"date": "2021-02-01T03:33:49+09:00",
"path": "/nix/store/pb8nycx17wlar7na1b2jr2svdg3ai294-enhancd",
"sha256": "13n2c2kj25g8aqvlkb5j4vzcz5a4a22yc8v6ary651lpqgckx7cg",
"fetchSubmodules": false,
"deepClone": false,
"leaveDotGit": false
}
このsha256の値である13n..が上で指定されている値である
#??
これ自動で最新のものを指定するように設定できないの?
手動でおっかけるのめんどすぎでは?
それがFlakesかmrsekut.icon
参考
nix - What is the meaning of sha256 in nixpkgs.fetchgit? Where does the value come from? - Stack Overflow