[{"data":1,"prerenderedAt":560},["ShallowReactive",2],{"navigation_docs_en":3,"\u002Fen\u002Fguides\u002Fcombinations":85,"\u002Fen\u002Fguides\u002Fcombinations-surround":555},[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":30,"body":87,"description":548,"extension":549,"links":550,"meta":551,"navigation":552,"path":31,"seo":553,"stem":32,"__hash__":554},"docs_en\u002Fen\u002F2.guides\u002F2.combinations.md",{"type":88,"value":89,"toc":543},"minimark",[90,94,99,268,271,275,362,380,384,521,529,539],[91,92,93],"p",{},"A Checker selects the Version to lock. A Fetcher determines how to obtain the contents of that Version. They do not need to use the same platform.",[95,96,98],"h2",{"id":97},"get-a-version-from-cratesio","Get a version from crates.io",[100,101,106],"pre",{"className":102,"code":103,"language":104,"meta":105,"style":105},"language-nix shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ pin }: {\n  ripgrep = pin.mk {\n    checker = pin.checker.crate { target = \"ripgrep\"; };\n    fetcher = pin.fetcher.zip {\n      url = version: \"https:\u002F\u002Fgithub.com\u002FBurntSushi\u002Fripgrep\u002Farchive\u002Frefs\u002Ftags\u002F${version}.tar.gz\";\n    };\n  };\n}\n","nix","",[107,108,109,128,148,192,214,250,256,262],"code",{"__ignoreMap":105},[110,111,114,118,122,125],"span",{"class":112,"line":113},"line",1,[110,115,117],{"class":116},"sMK4o","{",[110,119,121],{"class":120},"sHdIc"," pin",[110,123,124],{"class":116}," }:",[110,126,127],{"class":116}," {\n",[110,129,131,135,138,140,143,146],{"class":112,"line":130},2,[110,132,134],{"class":133},"spNyl","  ripgrep",[110,136,137],{"class":116}," =",[110,139,121],{"class":120},[110,141,142],{"class":116},".",[110,144,145],{"class":120},"mk",[110,147,127],{"class":116},[110,149,151,154,156,158,160,163,165,168,171,174,176,179,183,186,189],{"class":112,"line":150},3,[110,152,153],{"class":133},"    checker",[110,155,137],{"class":116},[110,157,121],{"class":120},[110,159,142],{"class":116},[110,161,162],{"class":120},"checker",[110,164,142],{"class":116},[110,166,167],{"class":120},"crate",[110,169,170],{"class":116}," {",[110,172,173],{"class":133}," target",[110,175,137],{"class":116},[110,177,178],{"class":116}," \"",[110,180,182],{"class":181},"sfazB","ripgrep",[110,184,185],{"class":116},"\"",[110,187,188],{"class":116},";",[110,190,191],{"class":116}," };\n",[110,193,195,198,200,202,204,207,209,212],{"class":112,"line":194},4,[110,196,197],{"class":133},"    fetcher",[110,199,137],{"class":116},[110,201,121],{"class":120},[110,203,142],{"class":116},[110,205,206],{"class":120},"fetcher",[110,208,142],{"class":116},[110,210,211],{"class":120},"zip",[110,213,127],{"class":116},[110,215,217,220,222,225,228,230,233,236,239,242,245,247],{"class":112,"line":216},5,[110,218,219],{"class":133},"      url",[110,221,137],{"class":116},[110,223,224],{"class":120}," version",[110,226,227],{"class":116},":",[110,229,178],{"class":116},[110,231,232],{"class":181},"https:\u002F\u002Fgithub.com\u002FBurntSushi\u002Fripgrep\u002Farchive\u002Frefs\u002Ftags\u002F",[110,234,235],{"class":116},"${",[110,237,238],{"class":120},"version",[110,240,241],{"class":116},"}",[110,243,244],{"class":181},".tar.gz",[110,246,185],{"class":116},[110,248,249],{"class":116},";\n",[110,251,253],{"class":112,"line":252},6,[110,254,255],{"class":116},"    };\n",[110,257,259],{"class":112,"line":258},7,[110,260,261],{"class":116},"  };\n",[110,263,265],{"class":112,"line":264},8,[110,266,267],{"class":116},"}\n",[91,269,270],{},"This example reads the version from crates.io but fetches source from a GitHub archive. Before using it, confirm that registry versions match repository tag names. A Fetcher's version mapping does not change the original Version stored in the Pins File.",[95,272,274],{"id":273},"track-a-git-branch","Track a Git branch",[100,276,278],{"className":102,"code":277,"language":104,"meta":105,"style":105},"{ pin }: {\n  project = pin.git {\n    target = \"https:\u002F\u002Fgithub.com\u002FNixOS\u002Fpatchelf.git\";\n    mode = \"branch\";\n    branch = \"master\";\n  };\n}\n",[107,279,280,290,306,322,338,354,358],{"__ignoreMap":105},[110,281,282,284,286,288],{"class":112,"line":113},[110,283,117],{"class":116},[110,285,121],{"class":120},[110,287,124],{"class":116},[110,289,127],{"class":116},[110,291,292,295,297,299,301,304],{"class":112,"line":130},[110,293,294],{"class":133},"  project",[110,296,137],{"class":116},[110,298,121],{"class":120},[110,300,142],{"class":116},[110,302,303],{"class":120},"git",[110,305,127],{"class":116},[110,307,308,311,313,315,318,320],{"class":112,"line":150},[110,309,310],{"class":133},"    target",[110,312,137],{"class":116},[110,314,178],{"class":116},[110,316,317],{"class":181},"https:\u002F\u002Fgithub.com\u002FNixOS\u002Fpatchelf.git",[110,319,185],{"class":116},[110,321,249],{"class":116},[110,323,324,327,329,331,334,336],{"class":112,"line":194},[110,325,326],{"class":133},"    mode",[110,328,137],{"class":116},[110,330,178],{"class":116},[110,332,333],{"class":181},"branch",[110,335,185],{"class":116},[110,337,249],{"class":116},[110,339,340,343,345,347,350,352],{"class":112,"line":216},[110,341,342],{"class":133},"    branch",[110,344,137],{"class":116},[110,346,178],{"class":116},[110,348,349],{"class":181},"master",[110,351,185],{"class":116},[110,353,249],{"class":116},[110,355,356],{"class":112,"line":252},[110,357,261],{"class":116},[110,359,360],{"class":112,"line":258},[110,361,267],{"class":116},[91,363,364,365,368,369,371,372,375,376,379],{},"Git's ",[107,366,367],{},"head",", ",[107,370,333],{},", and ",[107,373,374],{},"ref"," modes return a commit ID; ",[107,377,378],{},"tag"," mode returns the original tag. Even as the branch advances, downstream consumers use the commit locked in the Pins File.",[95,381,383],{"id":382},"get-a-version-from-npm","Get a version from npm",[100,385,387],{"className":102,"code":386,"language":104,"meta":105,"style":105},"{ pin }: {\n  vite = pin.mk {\n    checker = pin.checker.npm { target = \"vite\"; distTag = \"latest\"; };\n    fetcher = pin.fetcher.url {\n      url = version: \"https:\u002F\u002Fregistry.npmjs.org\u002Fvite\u002F-\u002Fvite-${version}.tgz\";\n    };\n  };\n}\n",[107,388,389,399,414,462,481,509,513,517],{"__ignoreMap":105},[110,390,391,393,395,397],{"class":112,"line":113},[110,392,117],{"class":116},[110,394,121],{"class":120},[110,396,124],{"class":116},[110,398,127],{"class":116},[110,400,401,404,406,408,410,412],{"class":112,"line":130},[110,402,403],{"class":133},"  vite",[110,405,137],{"class":116},[110,407,121],{"class":120},[110,409,142],{"class":116},[110,411,145],{"class":120},[110,413,127],{"class":116},[110,415,416,418,420,422,424,426,428,431,433,435,437,439,442,444,446,449,451,453,456,458,460],{"class":112,"line":150},[110,417,153],{"class":133},[110,419,137],{"class":116},[110,421,121],{"class":120},[110,423,142],{"class":116},[110,425,162],{"class":120},[110,427,142],{"class":116},[110,429,430],{"class":120},"npm",[110,432,170],{"class":116},[110,434,173],{"class":133},[110,436,137],{"class":116},[110,438,178],{"class":116},[110,440,441],{"class":181},"vite",[110,443,185],{"class":116},[110,445,188],{"class":116},[110,447,448],{"class":133}," distTag",[110,450,137],{"class":116},[110,452,178],{"class":116},[110,454,455],{"class":181},"latest",[110,457,185],{"class":116},[110,459,188],{"class":116},[110,461,191],{"class":116},[110,463,464,466,468,470,472,474,476,479],{"class":112,"line":194},[110,465,197],{"class":133},[110,467,137],{"class":116},[110,469,121],{"class":120},[110,471,142],{"class":116},[110,473,206],{"class":120},[110,475,142],{"class":116},[110,477,478],{"class":120},"url",[110,480,127],{"class":116},[110,482,483,485,487,489,491,493,496,498,500,502,505,507],{"class":112,"line":216},[110,484,219],{"class":133},[110,486,137],{"class":116},[110,488,224],{"class":120},[110,490,227],{"class":116},[110,492,178],{"class":116},[110,494,495],{"class":181},"https:\u002F\u002Fregistry.npmjs.org\u002Fvite\u002F-\u002Fvite-",[110,497,235],{"class":116},[110,499,238],{"class":120},[110,501,241],{"class":116},[110,503,504],{"class":181},".tgz",[110,506,185],{"class":116},[110,508,249],{"class":116},[110,510,511],{"class":112,"line":252},[110,512,255],{"class":116},[110,514,515],{"class":112,"line":258},[110,516,261],{"class":116},[110,518,519],{"class":112,"line":264},[110,520,267],{"class":116},[91,522,523,525,526,528],{},[107,524,478],{}," keeps the downloaded file, while ",[107,527,211],{}," extracts supported archives. Choose based on whether the downstream project needs the file itself or a source directory.",[91,530,531,532,535,536,538],{},"See ",[533,534,60],"a",{"href":61}," and ",[533,537,64],{"href":65}," for all built-in options.",[540,541,542],"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 .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);}",{"title":105,"searchDepth":130,"depth":130,"links":544},[545,546,547],{"id":97,"depth":130,"text":98},{"id":273,"depth":130,"text":274},{"id":382,"depth":130,"text":383},"Select versions from registries, Git, or custom commands and choose how to download them independently.","md",null,{},true,{"title":30,"description":548},"k3QhNfmDIydYbS9IIwyVOs071uEATJEFRJYNMZBhzCA",[556,558],{"title":26,"path":27,"stem":28,"description":557,"children":-1},"Full updates, selective updates, failure preservation, and cancellation.",{"title":34,"path":35,"stem":36,"description":559,"children":-1},"Lock several named Sources to one Version, with separate patches and Packages for each Source.",1791031184062]