[{"data":1,"prerenderedAt":994},["ShallowReactive",2],{"navigation_docs_en":3,"\u002Fen\u002Freference\u002Fbuilders":85,"\u002Fen\u002Freference\u002Fbuilders-surround":989},[4,19,41,75],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":18},"Getting started","i-lucide-book-open","\u002Fen\u002Fgetting-started","en\u002F1.getting-started",[10,14],{"title":11,"path":12,"stem":13},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F1.getting-started\u002F1.installation",{"title":15,"path":16,"stem":17},"Your first Pin","\u002Fen\u002Fgetting-started\u002Ffirst-pin","en\u002F1.getting-started\u002F2.first-pin",false,{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":18},"Guides","i-lucide-route","\u002Fen\u002Fguides","en\u002F2.guides",[25,29,33,37],{"title":26,"path":27,"stem":28},"Updating and selecting Pins","\u002Fen\u002Fguides\u002Fupdating","en\u002F2.guides\u002F1.updating",{"title":30,"path":31,"stem":32},"Combining Checkers and Fetchers","\u002Fen\u002Fguides\u002Fcombinations","en\u002F2.guides\u002F2.combinations",{"title":34,"path":35,"stem":36},"Multiple Sources and patches","\u002Fen\u002Fguides\u002Fmulti-source","en\u002F2.guides\u002F3.multi-source",{"title":38,"path":39,"stem":40},"Packages and dependency hashes","\u002Fen\u002Fguides\u002Fdependencies","en\u002F2.guides\u002F4.dependencies",{"title":42,"icon":43,"path":44,"stem":45,"children":46,"page":18},"Reference","i-lucide-code","\u002Fen\u002Freference","en\u002F3.reference",[47,51,55,59,63,67,71],{"title":48,"path":49,"stem":50},"CLI","\u002Fen\u002Freference\u002Fcli","en\u002F3.reference\u002F1.cli",{"title":52,"path":53,"stem":54},"Runtime configuration","\u002Fen\u002Freference\u002Fconfiguration","en\u002F3.reference\u002F2.configuration",{"title":56,"path":57,"stem":58},"Pin declarations","\u002Fen\u002Freference\u002Fpins","en\u002F3.reference\u002F3.pins",{"title":60,"path":61,"stem":62},"Checkers","\u002Fen\u002Freference\u002Fcheckers","en\u002F3.reference\u002F4.checkers",{"title":64,"path":65,"stem":66},"Fetchers","\u002Fen\u002Freference\u002Ffetchers","en\u002F3.reference\u002F5.fetchers",{"title":68,"path":69,"stem":70},"Package Builders","\u002Fen\u002Freference\u002Fbuilders","en\u002F3.reference\u002F6.builders",{"title":72,"path":73,"stem":74},"Reader and Pins File","\u002Fen\u002Freference\u002Freader","en\u002F3.reference\u002F7.reader",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":18},"Troubleshooting","i-lucide-wrench","\u002Fen\u002Ftroubleshooting","en\u002F4.troubleshooting",[81],{"title":82,"path":83,"stem":84},"Common errors","\u002Fen\u002Ftroubleshooting\u002Fcommon-errors","en\u002F4.troubleshooting\u002F1.common-errors",{"id":86,"title":68,"body":87,"description":982,"extension":983,"links":984,"meta":985,"navigation":986,"path":69,"seo":987,"stem":70,"__hash__":988},"docs_en\u002Fen\u002F3.reference\u002F6.builders.md",{"type":88,"value":89,"toc":975},"minimark",[90,111,116,207,223,227,349,366,369,456,478,481,611,627,654,658,661,968,971],[91,92,93,94,98,99,102,103,106,107,110],"p",{},"Use these constructors in a Source's ",[95,96,97],"code",{},"packages",". The current public Builders are ",[95,100,101],{},"pin.goModule",", ",[95,104,105],{},"pin.npmPackage",", and ",[95,108,109],{},"pin.pnpmPackage",". There is no Cargo Builder; the crates.io Checker only checks versions.",[112,113,115],"h2",{"id":114},"fields-and-artifacts","Fields and artifacts",[117,118,119,138],"table",{},[120,121,122],"thead",{},[123,124,125,129,132,135],"tr",{},[126,127,128],"th",{},"Constructor",[126,130,131],{},"Required fields",[126,133,134],{},"Derived Hash",[126,136,137],{},"Dependency artifact",[139,140,141,163,183],"tbody",{},[123,142,143,148,153,158],{},[144,145,146],"td",{},[95,147,101],{},[144,149,150],{},[95,151,152],{},"root",[144,154,155],{},[95,156,157],{},"vendorHash",[144,159,160],{},[95,161,162],{},"goModules",[123,164,165,169,173,178],{},[144,166,167],{},[95,168,105],{},[144,170,171],{},[95,172,152],{},[144,174,175],{},[95,176,177],{},"npmDepsHash",[144,179,180],{},[95,181,182],{},"npmDeps",[123,184,185,189,197,202],{},[144,186,187],{},[95,188,109],{},[144,190,191,193,194],{},[95,192,152],{},", positive integer ",[95,195,196],{},"fetcherVersion",[144,198,199],{},[95,200,201],{},"pnpmDepsHash",[144,203,204],{},[95,205,206],{},"pnpmDeps",[91,208,209,211,212,215,216,102,219,222],{},[95,210,152],{}," is the dependency directory relative to the Source root. Set ",[95,213,214],{},"root = \".\""," explicitly even for the root directory. Other arguments are forwarded to the corresponding Nixpkgs Builder. The tool injects the locked ",[95,217,218],{},"src",[95,220,221],{},"version",", and dependency hash.",[112,224,226],{"id":225},"go-modules","Go Modules",[228,229,234],"pre",{"className":230,"code":231,"language":232,"meta":233,"style":233},"language-nix shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ pin }: {\n  fzf = pin.github {\n    target = \"junegunn\u002Ffzf\";\n    packages.default = pin.goModule { root = \".\"; };\n  };\n}\n","nix","",[95,235,236,255,275,296,337,343],{"__ignoreMap":233},[237,238,241,245,249,252],"span",{"class":239,"line":240},"line",1,[237,242,244],{"class":243},"sMK4o","{",[237,246,248],{"class":247},"sHdIc"," pin",[237,250,251],{"class":243}," }:",[237,253,254],{"class":243}," {\n",[237,256,258,262,265,267,270,273],{"class":239,"line":257},2,[237,259,261],{"class":260},"spNyl","  fzf",[237,263,264],{"class":243}," =",[237,266,248],{"class":247},[237,268,269],{"class":243},".",[237,271,272],{"class":247},"github",[237,274,254],{"class":243},[237,276,278,281,283,286,290,293],{"class":239,"line":277},3,[237,279,280],{"class":260},"    target",[237,282,264],{"class":243},[237,284,285],{"class":243}," \"",[237,287,289],{"class":288},"sfazB","junegunn\u002Ffzf",[237,291,292],{"class":243},"\"",[237,294,295],{"class":243},";\n",[237,297,299,302,305,308,310,312,314,317,320,323,325,327,329,331,334],{"class":239,"line":298},4,[237,300,301],{"class":260},"    packages",[237,303,269],{"class":304},"sTEyZ",[237,306,307],{"class":260},"default",[237,309,264],{"class":243},[237,311,248],{"class":247},[237,313,269],{"class":243},[237,315,316],{"class":247},"goModule",[237,318,319],{"class":243}," {",[237,321,322],{"class":260}," root",[237,324,264],{"class":243},[237,326,285],{"class":243},[237,328,269],{"class":288},[237,330,292],{"class":243},[237,332,333],{"class":243},";",[237,335,336],{"class":243}," };\n",[237,338,340],{"class":239,"line":339},5,[237,341,342],{"class":243},"  };\n",[237,344,346],{"class":239,"line":345},6,[237,347,348],{"class":243},"}\n",[91,350,351,352,355,356,358,359,362,363,365],{},"Uses ",[95,353,354],{},"pkgs.buildGoModule",", mapping ",[95,357,152],{}," to ",[95,360,361],{},"modRoot",". The hash covers ",[95,364,162],{},", not the final application.",[112,367,368],{"id":368},"npm",[228,370,372],{"className":230,"code":371,"language":232,"meta":233,"style":233},"{ pin }: {\n  cpa = pin.github {\n    target = \"seakee\u002FCPA-Manager-Plus\";\n    packages.web = pin.npmPackage { root = \".\"; };\n  };\n}\n",[95,373,374,384,399,414,448,452],{"__ignoreMap":233},[237,375,376,378,380,382],{"class":239,"line":240},[237,377,244],{"class":243},[237,379,248],{"class":247},[237,381,251],{"class":243},[237,383,254],{"class":243},[237,385,386,389,391,393,395,397],{"class":239,"line":257},[237,387,388],{"class":260},"  cpa",[237,390,264],{"class":243},[237,392,248],{"class":247},[237,394,269],{"class":243},[237,396,272],{"class":247},[237,398,254],{"class":243},[237,400,401,403,405,407,410,412],{"class":239,"line":277},[237,402,280],{"class":260},[237,404,264],{"class":243},[237,406,285],{"class":243},[237,408,409],{"class":288},"seakee\u002FCPA-Manager-Plus",[237,411,292],{"class":243},[237,413,295],{"class":243},[237,415,416,418,420,423,425,427,429,432,434,436,438,440,442,444,446],{"class":239,"line":298},[237,417,301],{"class":260},[237,419,269],{"class":304},[237,421,422],{"class":260},"web",[237,424,264],{"class":243},[237,426,248],{"class":247},[237,428,269],{"class":243},[237,430,431],{"class":247},"npmPackage",[237,433,319],{"class":243},[237,435,322],{"class":260},[237,437,264],{"class":243},[237,439,285],{"class":243},[237,441,269],{"class":288},[237,443,292],{"class":243},[237,445,333],{"class":243},[237,447,336],{"class":243},[237,449,450],{"class":239,"line":339},[237,451,342],{"class":243},[237,453,454],{"class":239,"line":345},[237,455,348],{"class":243},[91,457,351,458,355,461,358,463,466,467,469,470,473,474,477],{},[95,459,460],{},"pkgs.buildNpmPackage",[95,462,152],{},[95,464,465],{},"npmRoot"," and prefetching ",[95,468,182],{},". The upstream project needs matching ",[95,471,472],{},"package.json"," and ",[95,475,476],{},"package-lock.json"," files. The tool does not generate upstream lockfiles.",[112,479,480],{"id":480},"pnpm",[228,482,484],{"className":230,"code":483,"language":232,"meta":233,"style":233},"{ pin, pkgs }: {\n  app = pin.github {\n    target = \"QuantumNous\u002Fnew-api\";\n    packages.web = pin.pnpmPackage {\n      root = \"web\";\n      fetcherVersion = 3;\n      pnpm = pkgs.pnpm;\n    };\n  };\n}\n",[95,485,486,502,517,532,551,566,579,595,601,606],{"__ignoreMap":233},[237,487,488,490,492,495,498,500],{"class":239,"line":240},[237,489,244],{"class":243},[237,491,248],{"class":247},[237,493,494],{"class":243},",",[237,496,497],{"class":247}," pkgs",[237,499,251],{"class":243},[237,501,254],{"class":243},[237,503,504,507,509,511,513,515],{"class":239,"line":257},[237,505,506],{"class":260},"  app",[237,508,264],{"class":243},[237,510,248],{"class":247},[237,512,269],{"class":243},[237,514,272],{"class":247},[237,516,254],{"class":243},[237,518,519,521,523,525,528,530],{"class":239,"line":277},[237,520,280],{"class":260},[237,522,264],{"class":243},[237,524,285],{"class":243},[237,526,527],{"class":288},"QuantumNous\u002Fnew-api",[237,529,292],{"class":243},[237,531,295],{"class":243},[237,533,534,536,538,540,542,544,546,549],{"class":239,"line":298},[237,535,301],{"class":260},[237,537,269],{"class":304},[237,539,422],{"class":260},[237,541,264],{"class":243},[237,543,248],{"class":247},[237,545,269],{"class":243},[237,547,548],{"class":247},"pnpmPackage",[237,550,254],{"class":243},[237,552,553,556,558,560,562,564],{"class":239,"line":339},[237,554,555],{"class":260},"      root",[237,557,264],{"class":243},[237,559,285],{"class":243},[237,561,422],{"class":288},[237,563,292],{"class":243},[237,565,295],{"class":243},[237,567,568,571,573,577],{"class":239,"line":345},[237,569,570],{"class":260},"      fetcherVersion",[237,572,264],{"class":243},[237,574,576],{"class":575},"sbssI"," 3",[237,578,295],{"class":243},[237,580,582,585,587,589,591,593],{"class":239,"line":581},7,[237,583,584],{"class":260},"      pnpm",[237,586,264],{"class":243},[237,588,497],{"class":247},[237,590,269],{"class":243},[237,592,480],{"class":247},[237,594,295],{"class":243},[237,596,598],{"class":239,"line":597},8,[237,599,600],{"class":243},"    };\n",[237,602,604],{"class":239,"line":603},9,[237,605,342],{"class":243},[237,607,609],{"class":239,"line":608},10,[237,610,348],{"class":243},[91,612,351,613,616,617,619,620,622,623,626],{},[95,614,615],{},"pkgs.fetchPnpmDeps",". ",[95,618,196],{}," is the implementation version of the Nixpkgs dependency Fetcher, not the pnpm major version. Choose a value supported by your Nixpkgs. ",[95,621,480],{}," defaults to the supplied ",[95,624,625],{},"pkgs.pnpm","; override it explicitly to use another major version.",[91,628,629,630,616,633,635,636,473,639,102,642,645,646,649,650,653],{},"This example demonstrates subdirectory configuration. The locked upstream version must provide a compatible ",[95,631,632],{},"pnpm-lock.yaml",[95,634,152],{}," must be a nonempty string. The entire declared workspace is locked: nonempty ",[95,637,638],{},"pnpmWorkspaces",[95,640,641],{},"--filter",[95,643,644],{},"--filter-prod",", or ",[95,647,648],{},"-F"," filters in ",[95,651,652],{},"pnpmInstallFlags"," are not accepted.",[112,655,657],{"id":656},"downstream-usage","Downstream usage",[91,659,660],{},"Pass both the Pins File and configuration to the Reader to access named Packages. A downstream pnpm example:",[228,662,664],{"className":230,"code":663,"language":232,"meta":233,"style":233},"let\n  pkgs = import \u003Cnixpkgs> {};\n  pins = import ..\u002Fnix\u002Fpins.nix {\n    inherit pkgs;\n    file = .\u002Fpins.json;\n    config = .\u002Fpins-config.nix;\n  };\n  source = pins.app.sources.default;\nin\npkgs.stdenv.mkDerivation {\n  pname = \"app-web\";\n  version = pins.app.version;\n  src = source.src;\n  pnpmDeps = source.packages.web.pnpmDeps;\n  pnpmRoot = \"web\";\n  nativeBuildInputs = [ pkgs.nodejs pkgs.pnpm pkgs.pnpmConfigHook ];\n  buildPhase = \"pnpm run build\";\n  installPhase = ''\n    mkdir -p $out\n    cp -r web\u002Fdist\u002F. $out\u002F\n  '';\n}\n",[95,665,666,671,688,702,711,723,735,739,765,770,787,804,824,841,865,881,915,932,943,949,955,963],{"__ignoreMap":233},[237,667,668],{"class":239,"line":240},[237,669,670],{"class":575},"let\n",[237,672,673,676,678,682,685],{"class":239,"line":257},[237,674,675],{"class":260},"  pkgs",[237,677,264],{"class":243},[237,679,681],{"class":680},"s2Zo4"," import",[237,683,684],{"class":288}," \u003Cnixpkgs>",[237,686,687],{"class":243}," {};\n",[237,689,690,693,695,697,700],{"class":239,"line":277},[237,691,692],{"class":260},"  pins",[237,694,264],{"class":243},[237,696,681],{"class":680},[237,698,699],{"class":288}," ..\u002Fnix\u002Fpins.nix",[237,701,254],{"class":243},[237,703,704,707,709],{"class":239,"line":298},[237,705,706],{"class":575},"    inherit",[237,708,497],{"class":260},[237,710,295],{"class":243},[237,712,713,716,718,721],{"class":239,"line":339},[237,714,715],{"class":260},"    file",[237,717,264],{"class":243},[237,719,720],{"class":288}," .\u002Fpins.json",[237,722,295],{"class":243},[237,724,725,728,730,733],{"class":239,"line":345},[237,726,727],{"class":260},"    config",[237,729,264],{"class":243},[237,731,732],{"class":288}," .\u002Fpins-config.nix",[237,734,295],{"class":243},[237,736,737],{"class":239,"line":581},[237,738,342],{"class":243},[237,740,741,744,746,749,751,754,756,759,761,763],{"class":239,"line":597},[237,742,743],{"class":260},"  source",[237,745,264],{"class":243},[237,747,748],{"class":247}," pins",[237,750,269],{"class":243},[237,752,753],{"class":247},"app",[237,755,269],{"class":243},[237,757,758],{"class":247},"sources",[237,760,269],{"class":243},[237,762,307],{"class":247},[237,764,295],{"class":243},[237,766,767],{"class":239,"line":603},[237,768,769],{"class":575},"in\n",[237,771,772,775,777,780,782,785],{"class":239,"line":608},[237,773,774],{"class":247},"pkgs",[237,776,269],{"class":243},[237,778,779],{"class":247},"stdenv",[237,781,269],{"class":243},[237,783,784],{"class":247},"mkDerivation",[237,786,254],{"class":243},[237,788,790,793,795,797,800,802],{"class":239,"line":789},11,[237,791,792],{"class":260},"  pname",[237,794,264],{"class":243},[237,796,285],{"class":243},[237,798,799],{"class":288},"app-web",[237,801,292],{"class":243},[237,803,295],{"class":243},[237,805,807,810,812,814,816,818,820,822],{"class":239,"line":806},12,[237,808,809],{"class":260},"  version",[237,811,264],{"class":243},[237,813,748],{"class":247},[237,815,269],{"class":243},[237,817,753],{"class":247},[237,819,269],{"class":243},[237,821,221],{"class":247},[237,823,295],{"class":243},[237,825,827,830,832,835,837,839],{"class":239,"line":826},13,[237,828,829],{"class":260},"  src",[237,831,264],{"class":243},[237,833,834],{"class":247}," source",[237,836,269],{"class":243},[237,838,218],{"class":247},[237,840,295],{"class":243},[237,842,844,847,849,851,853,855,857,859,861,863],{"class":239,"line":843},14,[237,845,846],{"class":260},"  pnpmDeps",[237,848,264],{"class":243},[237,850,834],{"class":247},[237,852,269],{"class":243},[237,854,97],{"class":247},[237,856,269],{"class":243},[237,858,422],{"class":247},[237,860,269],{"class":243},[237,862,206],{"class":247},[237,864,295],{"class":243},[237,866,868,871,873,875,877,879],{"class":239,"line":867},15,[237,869,870],{"class":260},"  pnpmRoot",[237,872,264],{"class":243},[237,874,285],{"class":243},[237,876,422],{"class":288},[237,878,292],{"class":243},[237,880,295],{"class":243},[237,882,884,887,889,892,894,896,899,901,903,905,907,909,912],{"class":239,"line":883},16,[237,885,886],{"class":260},"  nativeBuildInputs",[237,888,264],{"class":243},[237,890,891],{"class":243}," [",[237,893,497],{"class":247},[237,895,269],{"class":243},[237,897,898],{"class":247},"nodejs",[237,900,497],{"class":247},[237,902,269],{"class":243},[237,904,480],{"class":247},[237,906,497],{"class":247},[237,908,269],{"class":243},[237,910,911],{"class":247},"pnpmConfigHook",[237,913,914],{"class":243}," ];\n",[237,916,918,921,923,925,928,930],{"class":239,"line":917},17,[237,919,920],{"class":260},"  buildPhase",[237,922,264],{"class":243},[237,924,285],{"class":243},[237,926,927],{"class":288},"pnpm run build",[237,929,292],{"class":243},[237,931,295],{"class":243},[237,933,935,938,940],{"class":239,"line":934},18,[237,936,937],{"class":260},"  installPhase",[237,939,264],{"class":243},[237,941,942],{"class":243}," ''\n",[237,944,946],{"class":239,"line":945},19,[237,947,948],{"class":288},"    mkdir -p $out\n",[237,950,952],{"class":239,"line":951},20,[237,953,954],{"class":288},"    cp -r web\u002Fdist\u002F. $out\u002F\n",[237,956,958,961],{"class":239,"line":957},21,[237,959,960],{"class":243},"  ''",[237,962,295],{"class":243},[237,964,966],{"class":239,"line":965},22,[237,967,348],{"class":243},[91,969,970],{},"Adjust application scripts, output directories, and installation steps for your project. Dependency prefetching and downstream installation should use the same pnpm package, Node.js, and root directory. The relative Reader path above follows the quick-start directory layout; other projects should use their own pinned Reader path.",[972,973,974],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":233,"searchDepth":257,"depth":257,"links":976},[977,978,979,980,981],{"id":114,"depth":257,"text":115},{"id":225,"depth":257,"text":226},{"id":368,"depth":257,"text":368},{"id":480,"depth":257,"text":480},{"id":656,"depth":257,"text":657},"Dependency hashes for Go Modules, npm, and pnpm, and how to use them downstream.","md",null,{},true,{"title":68,"description":982},"hEIMCrk34GhjYZi7d2Dof5giHkUaHjnVZLEQtIUYgGg",[990,992],{"title":64,"path":65,"stem":66,"description":991,"children":-1},"Fields and version mappings for GitHub, Git, Hugging Face, URL, and archive fetchers.",{"title":72,"path":73,"stem":74,"description":993,"children":-1},"Restore source code, patches, and named Packages from locked JSON results.",1791031185112]