store derivation
Nix式で書かれたものを、完全に展開・固定された低レベルの仕様
「derivataion」と呼んだ時、厳密にはこれのことを指す
.drvの中身
outputs
buildして生成されるproductらのpath
ここのpathにはまだなにもない
buildする前にpathが決まっている
なぜ?
この辺に書いている
1回読んだがちゃんと理解できなかったのでまた読もうmrsekut.icon
inputDrvs
input derivationのlist
ここが空白の場合は、他のderivationに依存していないことを表す
platform
x86_64-darwinなど
builder
env
builderに渡される環境変数など
参考
Nix Storeの中を眺めるといっぱいあるmrsekut.icon
順序的には
.drvfileをbuildすると、そこに書かれているoutput pathsに、目的のproductがinstallされる $ nix show-derivation <path>で中身を見れる
code:例
$ nix show-derivation /nix/store/z3hhlxbckx4g3n9sw91nnvlkjvyw754p-myname.drv
{
"/nix/store/z3hhlxbckx4g3n9sw91nnvlkjvyw754p-myname.drv": {
"outputs": {
"out": {
"path": "/nix/store/40s0qmrfb45vlh6610rk29ym318dswdr-myname"
}
},
"inputSrcs": [],
"inputDrvs": {},
"platform": "mysystem",
"builder": "mybuilder",
"args": [],
"env": {
"builder": "mybuilder",
"name": "myname",
"out": "/nix/store/40s0qmrfb45vlh6610rk29ym318dswdr-myname",
"system": "mysystem"
}
}
}