Buckets:

HuggingFaceDocBuilder's picture
download
raw
21.9 kB
import{s as sl,n as al,o as ol}from"../chunks/scheduler.f3b1e791.js";import{S as rl,i as pl,e as a,s as i,c as p,h as ml,a as o,d as l,b as s,f as nl,g as m,j as r,k as il,l as dl,m as n,n as d,t as h,o as c,p as f}from"../chunks/index.023a9934.js";import{C as hl}from"../chunks/CopyLLMTxtMenu.5bdeb2ef.js";import{C as $}from"../chunks/CodeBlock.5fcfbc30.js";import{H as v,E as cl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.16027951.js";function fl(kt){let u,we,Te,je,M,xe,g,Ce,T,Je,b,yt=`Language servers do not interpret <code>build.toml</code>, so IDE completion for
CUDA, ROCm, framework headers, and the kernel’s Python wrapper does not
work out of the box. This guide shows how to configure VS Code so that
completion resolves against the same toolchain <code>kernel-builder</code>
uses.`,ke,w,It="The setup has three pieces:",ye,j,Ut=`<li><code>kernel-builder create-pyproject</code> to emit CMake and setuptools files
the IDE can read (see <a href="./local-dev">Local Development</a>).</li> <li>The kernel-builder devshell, which provides the toolchain (CUDA, ROCm,
Torch headers, etc.) from the Nix store.</li> <li><code>direnv</code> to activate the devshell on <code>cd</code>, so VS Code inherits the
environment through the shell.</li>`,Ie,x,Lt=`Pinning the toolchain through Nix keeps IDE completion aligned with
the build. It also makes switching between CUDA, ROCm, or XPU a
one-line change in <code>.envrc</code>.`,Ue,C,Le,J,_t="On non-NixOS systems, install both via <code>nix profile</code>:",_e,k,Ze,y,Zt=`Add the direnv hook to your shell rc (<code>~/.bashrc</code> or
<code>~/.zshrc</code>, for example):`,He,I,Be,U,Ht=`Source the rc file (or open a new shell) so the hook is
active in the current session:`,Ge,L,Ne,_,Bt="Wire <code>nix-direnv</code> into direnv:",Ae,Z,Ee,H,Gt=`On <a href="https://github.com/nix-community/nix-direnv#via-system-configuration-on-nixos" rel="nofollow">NixOS</a>
or with <a href="https://github.com/nix-community/nix-direnv#via-home-manager" rel="nofollow">home-manager</a>,
enable <code>programs.direnv</code> with
<code>nix-direnv</code> instead. See
<a href="https://github.com/huggingface/kernels/tree/main/terraform/nixos-configuration.nix" rel="nofollow"><code>terraform/nixos-configuration.nix</code></a>
for a working example.`,We,B,Re,G,Nt=`From the kernel root directory (the one containing <code>flake.nix</code> and
<code>build.toml</code>), tell direnv to use the flake’s default devshell:`,Se,N,Pe,A,At=`<code>direnv</code> now activates the default devshell whenever you <code>cd</code> into the
project. Confirm it picked up the toolchain:`,Ve,E,Xe,W,Et="To pin a non-default build variant, name it explicitly:",Ye,R,ze,S,Wt='See <a href="./build-variants">Build Variants</a> for the variant list.',De,P,Qe,V,Rt=`<code>use flake</code> exposes the devshell’s environment variables but does not
run its <code>shellHook</code>, so the <code>.venv</code> used by the devshell is not created
on direnv activation. Run <code>kernel-builder devshell</code> once to create it:`,Fe,X,qe,Y,St="Then have direnv source it on every activation by appending to <code>.envrc</code>:",Oe,z,Ke,D,Pt="Reload:",et,Q,tt,F,lt,q,Vt=`direnv puts the toolchain on <code>PATH</code>, but the C++ language server still
needs a CMake-derived <code>compile_commands.json</code> to resolve per-file
include paths. Generate the CMake/setuptools project and the file:`,nt,O,it,K,Xt=`<code>-DCMAKE_EXPORT_COMPILE_COMMANDS=ON</code> is required: the generated CMake
does not set it. The symlink lets the language server find the file
at the project root.`,st,ee,Yt=`As noted in <a href="./local-dev">Local Development</a>, do not commit the
generated files.`,at,te,ot,le,zt="Open the project from a direnv-activated shell:",rt,ne,pt,ie,Dt=`VS Code inherits the devshell environment through the shell. No
direnv extension is needed.`,mt,se,Qt=`Install one of the following first-party extensions for C++/CUDA
completion:`,dt,ae,Ft="<li><code>llvm-vs-code-extensions.vscode-clangd</code> (recommended for CUDA).</li> <li><code>ms-vscode.cpptools</code> (Microsoft C/C++).</li>",ht,oe,qt="Add <code>.vscode/settings.json</code> (do not commit):",ct,re,ft,pe,Ot=`To verify, open <code>torch-ext/torch_binding.cpp</code> and hover an
<code>#include &lt;torch/torch.h&gt;</code> directive. The resolved path should point
into <code>/nix/store/...</code>, not a system path.`,$t,me,vt,de,Kt=`Use the VS Code Remote-SSH extension and put the direnv hook in the
remote shell’s rc. The remote integrated terminal activates the
devshell on <code>cd</code>, and VS Code’s language servers — which run on the
remote — inherit that environment. The
<a href="https://github.com/huggingface/kernels/tree/main/terraform" rel="nofollow"><code>terraform/</code></a>
setup is already configured this way.`,ut,he,Mt,ce,el=`Change the <code>use flake</code> line in <code>.envrc</code> to point at a different
variant. For example:`,gt,fe,Tt,$e,tl=`Remove <code>.venv/</code> first if it was created against a different variant,
then re-run <code>kernel-builder devshell</code> to recreate it, and reload
direnv:`,bt,ve,wt,ue,jt,Me,ll=`For Python-only (noarch) kernels, skip the CMake step in “Generating
IDE-facing project files” and the C++ portions of the VS Code
configuration. The <code>direnv</code> setup and <code>python.defaultInterpreterPath</code>
are all that is needed.`,xt,ge,Ct,be,Jt;return M=new hl({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),g=new v({props:{title:"IDE setup with direnv and the kernel devshell",local:"ide-setup-with-direnv-and-the-kernel-devshell",headingTag:"h1"}}),T=new v({props:{title:"Introduction",local:"introduction",headingTag:"h2"}}),C=new v({props:{title:"Installing direnv and nix-direnv",local:"installing-direnv-and-nix-direnv",headingTag:"h2"}}),k=new $({props:{code:"JTI0JTIwbml4JTIwcHJvZmlsZSUyMGluc3RhbGwlMjBuaXhwa2dzJTIzbml4LWRpcmVudg==",highlighted:'$ nix profile install nixpkgs<span class="hljs-comment">#nix-direnv</span>',lang:"bash",wrap:!1}}),I=new $({props:{code:"ZXZhbCUyMCUyMiUyNChkaXJlbnYlMjBob29rJTIwYmFzaCklMjIlMjAlMjAlMjAlMjAlMjMlMjBvciUzQSUyMGRpcmVudiUyMGhvb2slMjB6c2g=",highlighted:'<span class="hljs-built_in">eval</span> <span class="hljs-string">&quot;<span class="hljs-subst">$(direnv hook bash)</span>&quot;</span> <span class="hljs-comment"># or: direnv hook zsh</span>',lang:"bash",wrap:!1}}),L=new $({props:{code:"JTI0JTIwc291cmNlJTIwfiUyRi5iYXNocmMlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBvciUzQSUyMHNvdXJjZSUyMH4lMkYuenNocmM=",highlighted:'$ <span class="hljs-built_in">source</span> ~/.bashrc <span class="hljs-comment"># or: source ~/.zshrc</span>',lang:"bash",wrap:!1}}),Z=new $({props:{code:"JTI0JTIwbWtkaXIlMjAtcCUyMH4lMkYuY29uZmlnJTJGZGlyZW52JTBBJTI0JTIwZWNobyUyMCdzb3VyY2UlMjAlMjRIT01FJTJGLm5peC1wcm9maWxlJTJGc2hhcmUlMkZuaXgtZGlyZW52JTJGZGlyZW52cmMnJTIwJTVDJTBBJTIwJTIwJTIwJTIwJTNFJTNFJTIwfiUyRi5jb25maWclMkZkaXJlbnYlMkZkaXJlbnZyYw==",highlighted:`$ <span class="hljs-built_in">mkdir</span> -p ~/.config/direnv
$ <span class="hljs-built_in">echo</span> <span class="hljs-string">&#x27;source $HOME/.nix-profile/share/nix-direnv/direnvrc&#x27;</span> \\
&gt;&gt; ~/.config/direnv/direnvrc`,lang:"bash",wrap:!1}}),B=new v({props:{title:"Activating the devshell with direnv",local:"activating-the-devshell-with-direnv",headingTag:"h2"}}),N=new $({props:{code:"JTI0JTIwZWNobyUyMCd1c2UlMjBmbGFrZSclMjAlM0UlMjAuZW52cmMlMEElMjQlMjBkaXJlbnYlMjBhbGxvdw==",highlighted:`$ <span class="hljs-built_in">echo</span> <span class="hljs-string">&#x27;use flake&#x27;</span> &gt; .envrc
$ direnv allow`,lang:"bash",wrap:!1}}),E=new $({props:{code:"JTI0JTIwd2hpY2glMjBudmNjJTBBJTJGbml4JTJGc3RvcmUlMkYuLi4lMkZiaW4lMkZudmNj",highlighted:`$ <span class="hljs-built_in">which</span> nvcc
/nix/store/.../bin/nvcc`,lang:"bash",wrap:!1}}),R=new $({props:{code:"JTI0JTIwZWNobyUyMCd1c2UlMjBmbGFrZSUyMC4lMjNkZXZTaGVsbHMudG9yY2gyMTEtY3h4MTEtcm9jbTcxLXg4Nl82NC1saW51eCclMjAlM0UlMjAuZW52cmMlMEElMjQlMjBkaXJlbnYlMjBhbGxvdw==",highlighted:`$ <span class="hljs-built_in">echo</span> <span class="hljs-string">&#x27;use flake .#devShells.torch211-cxx11-rocm71-x86_64-linux&#x27;</span> &gt; .envrc
$ direnv allow`,lang:"bash",wrap:!1}}),P=new v({props:{title:"Bootstrapping the project venv",local:"bootstrapping-the-project-venv",headingTag:"h2"}}),X=new $({props:{code:"JTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBkZXZzaGVsbCUwQSUyNCUyMGV4aXQ=",highlighted:`$ kernel-builder devshell
$ <span class="hljs-built_in">exit</span>`,lang:"bash",wrap:!1}}),z=new $({props:{code:"dXNlJTIwZmxha2UlMEFzb3VyY2UlMjAudmVudiUyRmJpbiUyRmFjdGl2YXRl",highlighted:`use flake
<span class="hljs-built_in">source</span> .venv/bin/activate`,lang:"bash",wrap:!1}}),Q=new $({props:{code:"JTI0JTIwZGlyZW52JTIwYWxsb3c=",highlighted:"$ direnv allow",lang:"bash",wrap:!1}}),F=new v({props:{title:"Generating IDE-facing project files",local:"generating-ide-facing-project-files",headingTag:"h2"}}),O=new $({props:{code:"JTI0JTIwa2VybmVsLWJ1aWxkZXIlMjBjcmVhdGUtcHlwcm9qZWN0JTIwLWYlMEElMjQlMjBjbWFrZSUyMC1CJTIwYnVpbGQtZXh0JTIwLURDTUFLRV9FWFBPUlRfQ09NUElMRV9DT01NQU5EUyUzRE9OJTBBJTI0JTIwbG4lMjAtc2YlMjBidWlsZC1leHQlMkZjb21waWxlX2NvbW1hbmRzLmpzb24lMjBjb21waWxlX2NvbW1hbmRzLmpzb24=",highlighted:`$ kernel-builder create-pyproject -f
$ cmake -B build-ext -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
$ <span class="hljs-built_in">ln</span> -sf build-ext/compile_commands.json compile_commands.json`,lang:"bash",wrap:!1}}),te=new v({props:{title:"Configuring VS Code",local:"configuring-vs-code",headingTag:"h2"}}),ne=new $({props:{code:"JTI0JTIwY2QlMjBwYXRoJTJGdG8lMkZrZXJuZWwlMEElMjQlMjBjb2RlJTIwLg==",highlighted:`$ <span class="hljs-built_in">cd</span> path/to/kernel
$ code .`,lang:"bash",wrap:!1}}),re=new $({props:{code:"JTdCJTBBJTIwJTIwJTIycHl0aG9uLmRlZmF1bHRJbnRlcnByZXRlclBhdGglMjIlM0ElMjAlMjIlMjQlN0J3b3Jrc3BhY2VGb2xkZXIlN0QlMkYudmVudiUyRmJpbiUyRnB5dGhvbiUyMiUyQyUwQSUwQSUyMCUyMCUyRiUyRiUyMGNsYW5nZCUwQSUyMCUyMCUyMmNsYW5nZC5hcmd1bWVudHMlMjIlM0ElMjAlNUIlMjItLWNvbXBpbGUtY29tbWFuZHMtZGlyJTNEJTI0JTdCd29ya3NwYWNlRm9sZGVyJTdEJTIyJTVEJTJDJTBBJTBBJTIwJTIwJTJGJTJGJTIwTWljcm9zb2Z0JTIwQyUyRkMlMkIlMkIlMjBleHRlbnNpb24lMEElMjAlMjAlMjJDX0NwcC5kZWZhdWx0LmNvbXBpbGVDb21tYW5kcyUyMiUzQSUyMCUyMiUyNCU3QndvcmtzcGFjZUZvbGRlciU3RCUyRmNvbXBpbGVfY29tbWFuZHMuanNvbiUyMiUwQSU3RA==",highlighted:`{
<span class="hljs-string">&quot;python.defaultInterpreterPath&quot;</span>: <span class="hljs-string">&quot;<span class="hljs-subst">\${workspaceFolder}</span>/.venv/bin/python&quot;</span>,
<span class="hljs-comment">// clangd</span>
<span class="hljs-string">&quot;clangd.arguments&quot;</span>: [<span class="hljs-string">&quot;--compile-commands-dir=<span class="hljs-subst">\${workspaceFolder}</span>&quot;</span>],
<span class="hljs-comment">// Microsoft C/C++ extension</span>
<span class="hljs-string">&quot;C_Cpp.default.compileCommands&quot;</span>: <span class="hljs-string">&quot;<span class="hljs-subst">\${workspaceFolder}</span>/compile_commands.json&quot;</span>
}`,lang:"jsonc",wrap:!1}}),me=new v({props:{title:"Remote development",local:"remote-development",headingTag:"h2"}}),he=new v({props:{title:"Switching toolchains",local:"switching-toolchains",headingTag:"h2"}}),fe=new $({props:{code:"JTIzJTIwQ1VEQSUyMDEzLjAlMEF1c2UlMjBmbGFrZSUyMC4lMjNkZXZTaGVsbHMudG9yY2gyMTEtY3h4MTEtY3UxMzAteDg2XzY0LWxpbnV4JTBBJTBBJTIzJTIwUk9DbSUyMDcuMSUwQXVzZSUyMGZsYWtlJTIwLiUyM2RldlNoZWxscy50b3JjaDIxMS1jeHgxMS1yb2NtNzEteDg2XzY0LWxpbnV4JTBBJTBBJTIzJTIwWFBVJTBBdXNlJTIwZmxha2UlMjAuJTIzZGV2U2hlbGxzLnRvcmNoMjExLWN4eDExLXhwdTIwMjUzLXg4Nl82NC1saW51eA==",highlighted:`<span class="hljs-comment"># CUDA 13.0</span>
use flake .<span class="hljs-comment">#devShells.torch211-cxx11-cu130-x86_64-linux</span>
<span class="hljs-comment"># ROCm 7.1</span>
use flake .<span class="hljs-comment">#devShells.torch211-cxx11-rocm71-x86_64-linux</span>
<span class="hljs-comment"># XPU</span>
use flake .<span class="hljs-comment">#devShells.torch211-cxx11-xpu20253-x86_64-linux</span>`,lang:"bash",wrap:!1}}),ve=new $({props:{code:"JTI0JTIwcm0lMjAtcmYlMjAudmVudiUwQSUyNCUyMGtlcm5lbC1idWlsZGVyJTIwZGV2c2hlbGwlMEElMjQlMjBleGl0JTBBJTI0JTIwZGlyZW52JTIwcmVsb2Fk",highlighted:`$ <span class="hljs-built_in">rm</span> -rf .venv
$ kernel-builder devshell
$ <span class="hljs-built_in">exit</span>
$ direnv reload`,lang:"bash",wrap:!1}}),ue=new v({props:{title:"noarch kernels",local:"noarch-kernels",headingTag:"h2"}}),ge=new cl({props:{source:"https://github.com/huggingface/kernels/blob/main/docs/source/builder/ide-setup.md"}}),{c(){u=a("meta"),we=i(),Te=a("p"),je=i(),p(M.$$.fragment),xe=i(),p(g.$$.fragment),Ce=i(),p(T.$$.fragment),Je=i(),b=a("p"),b.innerHTML=yt,ke=i(),w=a("p"),w.textContent=It,ye=i(),j=a("ul"),j.innerHTML=Ut,Ie=i(),x=a("p"),x.innerHTML=Lt,Ue=i(),p(C.$$.fragment),Le=i(),J=a("p"),J.innerHTML=_t,_e=i(),p(k.$$.fragment),Ze=i(),y=a("p"),y.innerHTML=Zt,He=i(),p(I.$$.fragment),Be=i(),U=a("p"),U.textContent=Ht,Ge=i(),p(L.$$.fragment),Ne=i(),_=a("p"),_.innerHTML=Bt,Ae=i(),p(Z.$$.fragment),Ee=i(),H=a("p"),H.innerHTML=Gt,We=i(),p(B.$$.fragment),Re=i(),G=a("p"),G.innerHTML=Nt,Se=i(),p(N.$$.fragment),Pe=i(),A=a("p"),A.innerHTML=At,Ve=i(),p(E.$$.fragment),Xe=i(),W=a("p"),W.textContent=Et,Ye=i(),p(R.$$.fragment),ze=i(),S=a("p"),S.innerHTML=Wt,De=i(),p(P.$$.fragment),Qe=i(),V=a("p"),V.innerHTML=Rt,Fe=i(),p(X.$$.fragment),qe=i(),Y=a("p"),Y.innerHTML=St,Oe=i(),p(z.$$.fragment),Ke=i(),D=a("p"),D.textContent=Pt,et=i(),p(Q.$$.fragment),tt=i(),p(F.$$.fragment),lt=i(),q=a("p"),q.innerHTML=Vt,nt=i(),p(O.$$.fragment),it=i(),K=a("p"),K.innerHTML=Xt,st=i(),ee=a("p"),ee.innerHTML=Yt,at=i(),p(te.$$.fragment),ot=i(),le=a("p"),le.textContent=zt,rt=i(),p(ne.$$.fragment),pt=i(),ie=a("p"),ie.textContent=Dt,mt=i(),se=a("p"),se.textContent=Qt,dt=i(),ae=a("ul"),ae.innerHTML=Ft,ht=i(),oe=a("p"),oe.innerHTML=qt,ct=i(),p(re.$$.fragment),ft=i(),pe=a("p"),pe.innerHTML=Ot,$t=i(),p(me.$$.fragment),vt=i(),de=a("p"),de.innerHTML=Kt,ut=i(),p(he.$$.fragment),Mt=i(),ce=a("p"),ce.innerHTML=el,gt=i(),p(fe.$$.fragment),Tt=i(),$e=a("p"),$e.innerHTML=tl,bt=i(),p(ve.$$.fragment),wt=i(),p(ue.$$.fragment),jt=i(),Me=a("p"),Me.innerHTML=ll,xt=i(),p(ge.$$.fragment),Ct=i(),be=a("p"),this.h()},l(e){const t=ml("svelte-u9bgzb",document.head);u=o(t,"META",{name:!0,content:!0}),t.forEach(l),we=s(e),Te=o(e,"P",{}),nl(Te).forEach(l),je=s(e),m(M.$$.fragment,e),xe=s(e),m(g.$$.fragment,e),Ce=s(e),m(T.$$.fragment,e),Je=s(e),b=o(e,"P",{"data-svelte-h":!0}),r(b)!=="svelte-196higt"&&(b.innerHTML=yt),ke=s(e),w=o(e,"P",{"data-svelte-h":!0}),r(w)!=="svelte-17k1ly1"&&(w.textContent=It),ye=s(e),j=o(e,"UL",{"data-svelte-h":!0}),r(j)!=="svelte-1p7eu9p"&&(j.innerHTML=Ut),Ie=s(e),x=o(e,"P",{"data-svelte-h":!0}),r(x)!=="svelte-1svz3ub"&&(x.innerHTML=Lt),Ue=s(e),m(C.$$.fragment,e),Le=s(e),J=o(e,"P",{"data-svelte-h":!0}),r(J)!=="svelte-ib4kv1"&&(J.innerHTML=_t),_e=s(e),m(k.$$.fragment,e),Ze=s(e),y=o(e,"P",{"data-svelte-h":!0}),r(y)!=="svelte-1jkh9fw"&&(y.innerHTML=Zt),He=s(e),m(I.$$.fragment,e),Be=s(e),U=o(e,"P",{"data-svelte-h":!0}),r(U)!=="svelte-1tdxnb5"&&(U.textContent=Ht),Ge=s(e),m(L.$$.fragment,e),Ne=s(e),_=o(e,"P",{"data-svelte-h":!0}),r(_)!=="svelte-1ly2ruq"&&(_.innerHTML=Bt),Ae=s(e),m(Z.$$.fragment,e),Ee=s(e),H=o(e,"P",{"data-svelte-h":!0}),r(H)!=="svelte-1lchhtg"&&(H.innerHTML=Gt),We=s(e),m(B.$$.fragment,e),Re=s(e),G=o(e,"P",{"data-svelte-h":!0}),r(G)!=="svelte-1gyke9p"&&(G.innerHTML=Nt),Se=s(e),m(N.$$.fragment,e),Pe=s(e),A=o(e,"P",{"data-svelte-h":!0}),r(A)!=="svelte-g3lhgv"&&(A.innerHTML=At),Ve=s(e),m(E.$$.fragment,e),Xe=s(e),W=o(e,"P",{"data-svelte-h":!0}),r(W)!=="svelte-1ouvpvu"&&(W.textContent=Et),Ye=s(e),m(R.$$.fragment,e),ze=s(e),S=o(e,"P",{"data-svelte-h":!0}),r(S)!=="svelte-1aipx8l"&&(S.innerHTML=Wt),De=s(e),m(P.$$.fragment,e),Qe=s(e),V=o(e,"P",{"data-svelte-h":!0}),r(V)!=="svelte-wxcgge"&&(V.innerHTML=Rt),Fe=s(e),m(X.$$.fragment,e),qe=s(e),Y=o(e,"P",{"data-svelte-h":!0}),r(Y)!=="svelte-8kdyq8"&&(Y.innerHTML=St),Oe=s(e),m(z.$$.fragment,e),Ke=s(e),D=o(e,"P",{"data-svelte-h":!0}),r(D)!=="svelte-1uceq9t"&&(D.textContent=Pt),et=s(e),m(Q.$$.fragment,e),tt=s(e),m(F.$$.fragment,e),lt=s(e),q=o(e,"P",{"data-svelte-h":!0}),r(q)!=="svelte-kwas4n"&&(q.innerHTML=Vt),nt=s(e),m(O.$$.fragment,e),it=s(e),K=o(e,"P",{"data-svelte-h":!0}),r(K)!=="svelte-1lokjyh"&&(K.innerHTML=Xt),st=s(e),ee=o(e,"P",{"data-svelte-h":!0}),r(ee)!=="svelte-8gbuqo"&&(ee.innerHTML=Yt),at=s(e),m(te.$$.fragment,e),ot=s(e),le=o(e,"P",{"data-svelte-h":!0}),r(le)!=="svelte-1t91n09"&&(le.textContent=zt),rt=s(e),m(ne.$$.fragment,e),pt=s(e),ie=o(e,"P",{"data-svelte-h":!0}),r(ie)!=="svelte-1oubo1k"&&(ie.textContent=Dt),mt=s(e),se=o(e,"P",{"data-svelte-h":!0}),r(se)!=="svelte-1fkjcvv"&&(se.textContent=Qt),dt=s(e),ae=o(e,"UL",{"data-svelte-h":!0}),r(ae)!=="svelte-1f22tzp"&&(ae.innerHTML=Ft),ht=s(e),oe=o(e,"P",{"data-svelte-h":!0}),r(oe)!=="svelte-1m8du9g"&&(oe.innerHTML=qt),ct=s(e),m(re.$$.fragment,e),ft=s(e),pe=o(e,"P",{"data-svelte-h":!0}),r(pe)!=="svelte-ecp4ez"&&(pe.innerHTML=Ot),$t=s(e),m(me.$$.fragment,e),vt=s(e),de=o(e,"P",{"data-svelte-h":!0}),r(de)!=="svelte-1bykdqj"&&(de.innerHTML=Kt),ut=s(e),m(he.$$.fragment,e),Mt=s(e),ce=o(e,"P",{"data-svelte-h":!0}),r(ce)!=="svelte-1b6ml80"&&(ce.innerHTML=el),gt=s(e),m(fe.$$.fragment,e),Tt=s(e),$e=o(e,"P",{"data-svelte-h":!0}),r($e)!=="svelte-1wqvows"&&($e.innerHTML=tl),bt=s(e),m(ve.$$.fragment,e),wt=s(e),m(ue.$$.fragment,e),jt=s(e),Me=o(e,"P",{"data-svelte-h":!0}),r(Me)!=="svelte-kkkz3t"&&(Me.innerHTML=ll),xt=s(e),m(ge.$$.fragment,e),Ct=s(e),be=o(e,"P",{}),nl(be).forEach(l),this.h()},h(){il(u,"name","hf:doc:metadata"),il(u,"content",$l)},m(e,t){dl(document.head,u),n(e,we,t),n(e,Te,t),n(e,je,t),d(M,e,t),n(e,xe,t),d(g,e,t),n(e,Ce,t),d(T,e,t),n(e,Je,t),n(e,b,t),n(e,ke,t),n(e,w,t),n(e,ye,t),n(e,j,t),n(e,Ie,t),n(e,x,t),n(e,Ue,t),d(C,e,t),n(e,Le,t),n(e,J,t),n(e,_e,t),d(k,e,t),n(e,Ze,t),n(e,y,t),n(e,He,t),d(I,e,t),n(e,Be,t),n(e,U,t),n(e,Ge,t),d(L,e,t),n(e,Ne,t),n(e,_,t),n(e,Ae,t),d(Z,e,t),n(e,Ee,t),n(e,H,t),n(e,We,t),d(B,e,t),n(e,Re,t),n(e,G,t),n(e,Se,t),d(N,e,t),n(e,Pe,t),n(e,A,t),n(e,Ve,t),d(E,e,t),n(e,Xe,t),n(e,W,t),n(e,Ye,t),d(R,e,t),n(e,ze,t),n(e,S,t),n(e,De,t),d(P,e,t),n(e,Qe,t),n(e,V,t),n(e,Fe,t),d(X,e,t),n(e,qe,t),n(e,Y,t),n(e,Oe,t),d(z,e,t),n(e,Ke,t),n(e,D,t),n(e,et,t),d(Q,e,t),n(e,tt,t),d(F,e,t),n(e,lt,t),n(e,q,t),n(e,nt,t),d(O,e,t),n(e,it,t),n(e,K,t),n(e,st,t),n(e,ee,t),n(e,at,t),d(te,e,t),n(e,ot,t),n(e,le,t),n(e,rt,t),d(ne,e,t),n(e,pt,t),n(e,ie,t),n(e,mt,t),n(e,se,t),n(e,dt,t),n(e,ae,t),n(e,ht,t),n(e,oe,t),n(e,ct,t),d(re,e,t),n(e,ft,t),n(e,pe,t),n(e,$t,t),d(me,e,t),n(e,vt,t),n(e,de,t),n(e,ut,t),d(he,e,t),n(e,Mt,t),n(e,ce,t),n(e,gt,t),d(fe,e,t),n(e,Tt,t),n(e,$e,t),n(e,bt,t),d(ve,e,t),n(e,wt,t),d(ue,e,t),n(e,jt,t),n(e,Me,t),n(e,xt,t),d(ge,e,t),n(e,Ct,t),n(e,be,t),Jt=!0},p:al,i(e){Jt||(h(M.$$.fragment,e),h(g.$$.fragment,e),h(T.$$.fragment,e),h(C.$$.fragment,e),h(k.$$.fragment,e),h(I.$$.fragment,e),h(L.$$.fragment,e),h(Z.$$.fragment,e),h(B.$$.fragment,e),h(N.$$.fragment,e),h(E.$$.fragment,e),h(R.$$.fragment,e),h(P.$$.fragment,e),h(X.$$.fragment,e),h(z.$$.fragment,e),h(Q.$$.fragment,e),h(F.$$.fragment,e),h(O.$$.fragment,e),h(te.$$.fragment,e),h(ne.$$.fragment,e),h(re.$$.fragment,e),h(me.$$.fragment,e),h(he.$$.fragment,e),h(fe.$$.fragment,e),h(ve.$$.fragment,e),h(ue.$$.fragment,e),h(ge.$$.fragment,e),Jt=!0)},o(e){c(M.$$.fragment,e),c(g.$$.fragment,e),c(T.$$.fragment,e),c(C.$$.fragment,e),c(k.$$.fragment,e),c(I.$$.fragment,e),c(L.$$.fragment,e),c(Z.$$.fragment,e),c(B.$$.fragment,e),c(N.$$.fragment,e),c(E.$$.fragment,e),c(R.$$.fragment,e),c(P.$$.fragment,e),c(X.$$.fragment,e),c(z.$$.fragment,e),c(Q.$$.fragment,e),c(F.$$.fragment,e),c(O.$$.fragment,e),c(te.$$.fragment,e),c(ne.$$.fragment,e),c(re.$$.fragment,e),c(me.$$.fragment,e),c(he.$$.fragment,e),c(fe.$$.fragment,e),c(ve.$$.fragment,e),c(ue.$$.fragment,e),c(ge.$$.fragment,e),Jt=!1},d(e){e&&(l(we),l(Te),l(je),l(xe),l(Ce),l(Je),l(b),l(ke),l(w),l(ye),l(j),l(Ie),l(x),l(Ue),l(Le),l(J),l(_e),l(Ze),l(y),l(He),l(Be),l(U),l(Ge),l(Ne),l(_),l(Ae),l(Ee),l(H),l(We),l(Re),l(G),l(Se),l(Pe),l(A),l(Ve),l(Xe),l(W),l(Ye),l(ze),l(S),l(De),l(Qe),l(V),l(Fe),l(qe),l(Y),l(Oe),l(Ke),l(D),l(et),l(tt),l(lt),l(q),l(nt),l(it),l(K),l(st),l(ee),l(at),l(ot),l(le),l(rt),l(pt),l(ie),l(mt),l(se),l(dt),l(ae),l(ht),l(oe),l(ct),l(ft),l(pe),l($t),l(vt),l(de),l(ut),l(Mt),l(ce),l(gt),l(Tt),l($e),l(bt),l(wt),l(jt),l(Me),l(xt),l(Ct),l(be)),l(u),f(M,e),f(g,e),f(T,e),f(C,e),f(k,e),f(I,e),f(L,e),f(Z,e),f(B,e),f(N,e),f(E,e),f(R,e),f(P,e),f(X,e),f(z,e),f(Q,e),f(F,e),f(O,e),f(te,e),f(ne,e),f(re,e),f(me,e),f(he,e),f(fe,e),f(ve,e),f(ue,e),f(ge,e)}}}const $l='{"title":"IDE setup with direnv and the kernel devshell","local":"ide-setup-with-direnv-and-the-kernel-devshell","sections":[{"title":"Introduction","local":"introduction","sections":[],"depth":2},{"title":"Installing direnv and nix-direnv","local":"installing-direnv-and-nix-direnv","sections":[],"depth":2},{"title":"Activating the devshell with direnv","local":"activating-the-devshell-with-direnv","sections":[],"depth":2},{"title":"Bootstrapping the project venv","local":"bootstrapping-the-project-venv","sections":[],"depth":2},{"title":"Generating IDE-facing project files","local":"generating-ide-facing-project-files","sections":[],"depth":2},{"title":"Configuring VS Code","local":"configuring-vs-code","sections":[],"depth":2},{"title":"Remote development","local":"remote-development","sections":[],"depth":2},{"title":"Switching toolchains","local":"switching-toolchains","sections":[],"depth":2},{"title":"noarch kernels","local":"noarch-kernels","sections":[],"depth":2}],"depth":1}';function vl(kt){return ol(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class wl extends rl{constructor(u){super(),pl(this,u,vl,fl,sl,{})}}export{wl as component};

Xet Storage Details

Size:
21.9 kB
·
Xet hash:
f0ad846853e5486bd0847696e68a88d9bc37548d8be11ac3cccc75e0693bea5c

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.