Buckets:
| 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 <torch/torch.h></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">"<span class="hljs-subst">$(direnv hook bash)</span>"</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">'source $HOME/.nix-profile/share/nix-direnv/direnvrc'</span> \\ | |
| >> ~/.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">'use flake'</span> > .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">'use flake .#devShells.torch211-cxx11-rocm71-x86_64-linux'</span> > .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">"python.defaultInterpreterPath"</span>: <span class="hljs-string">"<span class="hljs-subst">\${workspaceFolder}</span>/.venv/bin/python"</span>, | |
| <span class="hljs-comment">// clangd</span> | |
| <span class="hljs-string">"clangd.arguments"</span>: [<span class="hljs-string">"--compile-commands-dir=<span class="hljs-subst">\${workspaceFolder}</span>"</span>], | |
| <span class="hljs-comment">// Microsoft C/C++ extension</span> | |
| <span class="hljs-string">"C_Cpp.default.compileCommands"</span>: <span class="hljs-string">"<span class="hljs-subst">\${workspaceFolder}</span>/compile_commands.json"</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.