Buckets:
| import{s as Ft,n as Ot,o as Kt}from"../chunks/scheduler.f3b1e791.js";import{S as el,i as tl,e as o,s as i,c as p,h as ll,a,d as l,b as s,f as Qt,g as d,j as r,k as qt,l as nl,m as n,n as c,t as m,o as h,p as f}from"../chunks/index.023a9934.js";import{C as il}from"../chunks/CopyLLMTxtMenu.c780467c.js";import{C as v}from"../chunks/CodeBlock.fc650646.js";import{H as M,E as sl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.fb377ec3.js";function ol(gt){let u,$e,ue,ge,$,Te,g,be,T,we,b,Tt=`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.`,je,w,bt="The setup has three pieces:",xe,j,wt=`<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>`,Ce,x,jt=`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>.`,ke,C,Je,k,xt="On non-NixOS systems, install both via <code>nix profile</code>:",ye,J,Ue,y,Ct=`Add the direnv hook to your shell rc (<code>~/.bashrc</code> or | |
| <code>~/.zshrc</code>, for example):`,Ie,U,Le,I,kt=`Source the rc file (or open a new shell) so the hook is | |
| active in the current session:`,_e,L,He,_,Jt="Wire <code>nix-direnv</code> into direnv:",Ze,H,Be,Z,yt=`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.`,Ae,B,Ge,A,Ut=`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:`,Ne,G,Se,N,It=`<code>direnv</code> now activates the default devshell whenever you <code>cd</code> into the | |
| project. The devshell’s <code>shellHook</code> creates and activates a <code>.venv</code> on | |
| first entry. Confirm it picked up the toolchain and venv:`,We,S,Ee,W,Lt=`If <code>.venv</code> is missing, re-run <code>direnv reload</code> and check the output for | |
| the <code>Creating new venv environment in path: './.venv'</code> line from the | |
| <code>shellHook</code>.`,Re,E,_t="To pin a non-default build variant, name it explicitly:",Pe,R,Ve,P,Ht='See <a href="./build-variants">Build Variants</a> for the variant list.',Xe,V,Ye,X,Zt=`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:`,ze,Y,De,z,Bt=`<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.`,Qe,D,At=`As noted in <a href="./local-dev">Local Development</a>, do not commit the | |
| generated files.`,qe,Q,Fe,q,Gt=`Install the <a href="https://github.com/direnv/direnv-vscode" rel="nofollow"><code>mkhl.direnv</code></a> | |
| extension. It activates the project’s <code>.envrc</code> when VS Code opens | |
| the workspace, so language servers and the integrated terminal see | |
| the devshell environment without launching <code>code</code> from a shell.`,Oe,F,Nt=`Alternatively, skip the extension and open the project from a | |
| direnv-activated shell — VS Code inherits the environment that way | |
| too:`,Ke,O,et,K,St=`Install one of the following first-party extensions for C++/CUDA | |
| completion:`,tt,ee,Wt="<li><code>llvm-vs-code-extensions.vscode-clangd</code> (recommended for CUDA).</li> <li><code>ms-vscode.cpptools</code> (Microsoft C/C++).</li>",lt,te,Et="Add <code>.vscode/settings.json</code> (do not commit):",nt,le,it,ne,Rt=`Depending on the extension being used, the configuration above behaves | |
| differently:`,st,ie,Pt=`<li>With <code>clangd</code>, the <code>clangd.arguments</code> line is optional. clangd already | |
| looks in the parent directories of each source file for | |
| <code>compile_commands.json</code> and will find the workspace-root symlink on its | |
| own (<a href="https://clangd.llvm.org/installation#project-setup" rel="nofollow">clangd docs</a>). | |
| Setting it explicitly does no harm.</li> <li>With the Microsoft C/C++ extension, the <code>C_Cpp.default.compileCommands</code> | |
| line is required. The extension does not pick up | |
| <code>compile_commands.json</code> from the workspace root on its own, unless | |
| another extension (such as CMake Tools) tells it where to look.</li>`,ot,se,Vt=`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.`,at,oe,rt,ae,Xt=`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.`,pt,re,dt,pe,Yt=`Change the <code>use flake</code> line in <code>.envrc</code> to point at a different | |
| variant. For example:`,ct,de,mt,ce,zt=`Remove <code>.venv/</code> first if it was created against a different variant, | |
| then reload direnv to recreate it via the new devshell’s <code>shellHook</code>:`,ht,me,ft,he,vt,fe,Dt=`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.`,ut,ve,Mt,Me,$t;return $=new il({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),g=new M({props:{title:"IDE setup with direnv and the kernel devshell",local:"ide-setup-with-direnv-and-the-kernel-devshell",headingTag:"h1"}}),T=new M({props:{title:"Introduction",local:"introduction",headingTag:"h2"}}),C=new M({props:{title:"Installing direnv and nix-direnv",local:"installing-direnv-and-nix-direnv",headingTag:"h2"}}),J=new v({props:{code:"JTI0JTIwbml4JTIwcHJvZmlsZSUyMGluc3RhbGwlMjBuaXhwa2dzJTIzbml4LWRpcmVudg==",highlighted:'$ nix profile install nixpkgs<span class="hljs-comment">#nix-direnv</span>',lang:"bash",wrap:!1}}),U=new v({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 v({props:{code:"JTI0JTIwc291cmNlJTIwfiUyRi5iYXNocmMlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBvciUzQSUyMHNvdXJjZSUyMH4lMkYuenNocmM=",highlighted:'$ <span class="hljs-built_in">source</span> ~/.bashrc <span class="hljs-comment"># or: source ~/.zshrc</span>',lang:"bash",wrap:!1}}),H=new v({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 M({props:{title:"Activating the devshell with direnv",local:"activating-the-devshell-with-direnv",headingTag:"h2"}}),G=new v({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}}),S=new v({props:{code:"JTI0JTIwd2hpY2glMjBudmNjJTBBJTJGbml4JTJGc3RvcmUlMkYuLi4lMkZiaW4lMkZudmNjJTBBJTI0JTIwbHMlMjAtbGQlMjAudmVudiUwQWRyd3hyLXhyLXglMjAuLi4lMjAudmVudiUwQSUyNCUyMHdoaWNoJTIwcHl0aG9uJTBBJTJGcGF0aCUyRnRvJTJGa2VybmVsJTJGLnZlbnYlMkZiaW4lMkZweXRob24=",highlighted:`$ <span class="hljs-built_in">which</span> nvcc | |
| /nix/store/.../bin/nvcc | |
| $ <span class="hljs-built_in">ls</span> -ld .venv | |
| drwxr-xr-x ... .venv | |
| $ <span class="hljs-built_in">which</span> python | |
| /path/to/kernel/.venv/bin/python`,lang:"bash",wrap:!1}}),R=new v({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}}),V=new M({props:{title:"Generating IDE-facing project files",local:"generating-ide-facing-project-files",headingTag:"h2"}}),Y=new v({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}}),Q=new M({props:{title:"Configuring VS Code",local:"configuring-vs-code",headingTag:"h2"}}),O=new v({props:{code:"JTI0JTIwY2QlMjBwYXRoJTJGdG8lMkZrZXJuZWwlMEElMjQlMjBjb2RlJTIwLg==",highlighted:`$ <span class="hljs-built_in">cd</span> path/to/kernel | |
| $ code .`,lang:"bash",wrap:!1}}),le=new v({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}}),oe=new M({props:{title:"Remote development",local:"remote-development",headingTag:"h2"}}),re=new M({props:{title:"Switching toolchains",local:"switching-toolchains",headingTag:"h2"}}),de=new v({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}}),me=new v({props:{code:"JTI0JTIwcm0lMjAtcmYlMjAudmVudiUwQSUyNCUyMGRpcmVudiUyMHJlbG9hZA==",highlighted:`$ <span class="hljs-built_in">rm</span> -rf .venv | |
| $ direnv reload`,lang:"bash",wrap:!1}}),he=new M({props:{title:"noarch kernels",local:"noarch-kernels",headingTag:"h2"}}),ve=new sl({props:{source:"https://github.com/huggingface/kernels/blob/main/docs/source/builder/ide-setup.md"}}),{c(){u=o("meta"),$e=i(),ue=o("p"),ge=i(),p($.$$.fragment),Te=i(),p(g.$$.fragment),be=i(),p(T.$$.fragment),we=i(),b=o("p"),b.innerHTML=Tt,je=i(),w=o("p"),w.textContent=bt,xe=i(),j=o("ul"),j.innerHTML=wt,Ce=i(),x=o("p"),x.innerHTML=jt,ke=i(),p(C.$$.fragment),Je=i(),k=o("p"),k.innerHTML=xt,ye=i(),p(J.$$.fragment),Ue=i(),y=o("p"),y.innerHTML=Ct,Ie=i(),p(U.$$.fragment),Le=i(),I=o("p"),I.textContent=kt,_e=i(),p(L.$$.fragment),He=i(),_=o("p"),_.innerHTML=Jt,Ze=i(),p(H.$$.fragment),Be=i(),Z=o("p"),Z.innerHTML=yt,Ae=i(),p(B.$$.fragment),Ge=i(),A=o("p"),A.innerHTML=Ut,Ne=i(),p(G.$$.fragment),Se=i(),N=o("p"),N.innerHTML=It,We=i(),p(S.$$.fragment),Ee=i(),W=o("p"),W.innerHTML=Lt,Re=i(),E=o("p"),E.textContent=_t,Pe=i(),p(R.$$.fragment),Ve=i(),P=o("p"),P.innerHTML=Ht,Xe=i(),p(V.$$.fragment),Ye=i(),X=o("p"),X.innerHTML=Zt,ze=i(),p(Y.$$.fragment),De=i(),z=o("p"),z.innerHTML=Bt,Qe=i(),D=o("p"),D.innerHTML=At,qe=i(),p(Q.$$.fragment),Fe=i(),q=o("p"),q.innerHTML=Gt,Oe=i(),F=o("p"),F.textContent=Nt,Ke=i(),p(O.$$.fragment),et=i(),K=o("p"),K.textContent=St,tt=i(),ee=o("ul"),ee.innerHTML=Wt,lt=i(),te=o("p"),te.innerHTML=Et,nt=i(),p(le.$$.fragment),it=i(),ne=o("p"),ne.textContent=Rt,st=i(),ie=o("ul"),ie.innerHTML=Pt,ot=i(),se=o("p"),se.innerHTML=Vt,at=i(),p(oe.$$.fragment),rt=i(),ae=o("p"),ae.innerHTML=Xt,pt=i(),p(re.$$.fragment),dt=i(),pe=o("p"),pe.innerHTML=Yt,ct=i(),p(de.$$.fragment),mt=i(),ce=o("p"),ce.innerHTML=zt,ht=i(),p(me.$$.fragment),ft=i(),p(he.$$.fragment),vt=i(),fe=o("p"),fe.innerHTML=Dt,ut=i(),p(ve.$$.fragment),Mt=i(),Me=o("p"),this.h()},l(e){const t=ll("svelte-u9bgzb",document.head);u=a(t,"META",{name:!0,content:!0}),t.forEach(l),$e=s(e),ue=a(e,"P",{}),Qt(ue).forEach(l),ge=s(e),d($.$$.fragment,e),Te=s(e),d(g.$$.fragment,e),be=s(e),d(T.$$.fragment,e),we=s(e),b=a(e,"P",{"data-svelte-h":!0}),r(b)!=="svelte-196higt"&&(b.innerHTML=Tt),je=s(e),w=a(e,"P",{"data-svelte-h":!0}),r(w)!=="svelte-17k1ly1"&&(w.textContent=bt),xe=s(e),j=a(e,"UL",{"data-svelte-h":!0}),r(j)!=="svelte-1p7eu9p"&&(j.innerHTML=wt),Ce=s(e),x=a(e,"P",{"data-svelte-h":!0}),r(x)!=="svelte-1svz3ub"&&(x.innerHTML=jt),ke=s(e),d(C.$$.fragment,e),Je=s(e),k=a(e,"P",{"data-svelte-h":!0}),r(k)!=="svelte-ib4kv1"&&(k.innerHTML=xt),ye=s(e),d(J.$$.fragment,e),Ue=s(e),y=a(e,"P",{"data-svelte-h":!0}),r(y)!=="svelte-1jkh9fw"&&(y.innerHTML=Ct),Ie=s(e),d(U.$$.fragment,e),Le=s(e),I=a(e,"P",{"data-svelte-h":!0}),r(I)!=="svelte-1tdxnb5"&&(I.textContent=kt),_e=s(e),d(L.$$.fragment,e),He=s(e),_=a(e,"P",{"data-svelte-h":!0}),r(_)!=="svelte-1ly2ruq"&&(_.innerHTML=Jt),Ze=s(e),d(H.$$.fragment,e),Be=s(e),Z=a(e,"P",{"data-svelte-h":!0}),r(Z)!=="svelte-1lchhtg"&&(Z.innerHTML=yt),Ae=s(e),d(B.$$.fragment,e),Ge=s(e),A=a(e,"P",{"data-svelte-h":!0}),r(A)!=="svelte-1gyke9p"&&(A.innerHTML=Ut),Ne=s(e),d(G.$$.fragment,e),Se=s(e),N=a(e,"P",{"data-svelte-h":!0}),r(N)!=="svelte-17sqqi7"&&(N.innerHTML=It),We=s(e),d(S.$$.fragment,e),Ee=s(e),W=a(e,"P",{"data-svelte-h":!0}),r(W)!=="svelte-10g97bm"&&(W.innerHTML=Lt),Re=s(e),E=a(e,"P",{"data-svelte-h":!0}),r(E)!=="svelte-1ouvpvu"&&(E.textContent=_t),Pe=s(e),d(R.$$.fragment,e),Ve=s(e),P=a(e,"P",{"data-svelte-h":!0}),r(P)!=="svelte-1aipx8l"&&(P.innerHTML=Ht),Xe=s(e),d(V.$$.fragment,e),Ye=s(e),X=a(e,"P",{"data-svelte-h":!0}),r(X)!=="svelte-kwas4n"&&(X.innerHTML=Zt),ze=s(e),d(Y.$$.fragment,e),De=s(e),z=a(e,"P",{"data-svelte-h":!0}),r(z)!=="svelte-1lokjyh"&&(z.innerHTML=Bt),Qe=s(e),D=a(e,"P",{"data-svelte-h":!0}),r(D)!=="svelte-8gbuqo"&&(D.innerHTML=At),qe=s(e),d(Q.$$.fragment,e),Fe=s(e),q=a(e,"P",{"data-svelte-h":!0}),r(q)!=="svelte-196g2nn"&&(q.innerHTML=Gt),Oe=s(e),F=a(e,"P",{"data-svelte-h":!0}),r(F)!=="svelte-11i577r"&&(F.textContent=Nt),Ke=s(e),d(O.$$.fragment,e),et=s(e),K=a(e,"P",{"data-svelte-h":!0}),r(K)!=="svelte-1fkjcvv"&&(K.textContent=St),tt=s(e),ee=a(e,"UL",{"data-svelte-h":!0}),r(ee)!=="svelte-1f22tzp"&&(ee.innerHTML=Wt),lt=s(e),te=a(e,"P",{"data-svelte-h":!0}),r(te)!=="svelte-1m8du9g"&&(te.innerHTML=Et),nt=s(e),d(le.$$.fragment,e),it=s(e),ne=a(e,"P",{"data-svelte-h":!0}),r(ne)!=="svelte-mje439"&&(ne.textContent=Rt),st=s(e),ie=a(e,"UL",{"data-svelte-h":!0}),r(ie)!=="svelte-1vqhbhy"&&(ie.innerHTML=Pt),ot=s(e),se=a(e,"P",{"data-svelte-h":!0}),r(se)!=="svelte-ecp4ez"&&(se.innerHTML=Vt),at=s(e),d(oe.$$.fragment,e),rt=s(e),ae=a(e,"P",{"data-svelte-h":!0}),r(ae)!=="svelte-1bykdqj"&&(ae.innerHTML=Xt),pt=s(e),d(re.$$.fragment,e),dt=s(e),pe=a(e,"P",{"data-svelte-h":!0}),r(pe)!=="svelte-1b6ml80"&&(pe.innerHTML=Yt),ct=s(e),d(de.$$.fragment,e),mt=s(e),ce=a(e,"P",{"data-svelte-h":!0}),r(ce)!=="svelte-9hng5v"&&(ce.innerHTML=zt),ht=s(e),d(me.$$.fragment,e),ft=s(e),d(he.$$.fragment,e),vt=s(e),fe=a(e,"P",{"data-svelte-h":!0}),r(fe)!=="svelte-kkkz3t"&&(fe.innerHTML=Dt),ut=s(e),d(ve.$$.fragment,e),Mt=s(e),Me=a(e,"P",{}),Qt(Me).forEach(l),this.h()},h(){qt(u,"name","hf:doc:metadata"),qt(u,"content",al)},m(e,t){nl(document.head,u),n(e,$e,t),n(e,ue,t),n(e,ge,t),c($,e,t),n(e,Te,t),c(g,e,t),n(e,be,t),c(T,e,t),n(e,we,t),n(e,b,t),n(e,je,t),n(e,w,t),n(e,xe,t),n(e,j,t),n(e,Ce,t),n(e,x,t),n(e,ke,t),c(C,e,t),n(e,Je,t),n(e,k,t),n(e,ye,t),c(J,e,t),n(e,Ue,t),n(e,y,t),n(e,Ie,t),c(U,e,t),n(e,Le,t),n(e,I,t),n(e,_e,t),c(L,e,t),n(e,He,t),n(e,_,t),n(e,Ze,t),c(H,e,t),n(e,Be,t),n(e,Z,t),n(e,Ae,t),c(B,e,t),n(e,Ge,t),n(e,A,t),n(e,Ne,t),c(G,e,t),n(e,Se,t),n(e,N,t),n(e,We,t),c(S,e,t),n(e,Ee,t),n(e,W,t),n(e,Re,t),n(e,E,t),n(e,Pe,t),c(R,e,t),n(e,Ve,t),n(e,P,t),n(e,Xe,t),c(V,e,t),n(e,Ye,t),n(e,X,t),n(e,ze,t),c(Y,e,t),n(e,De,t),n(e,z,t),n(e,Qe,t),n(e,D,t),n(e,qe,t),c(Q,e,t),n(e,Fe,t),n(e,q,t),n(e,Oe,t),n(e,F,t),n(e,Ke,t),c(O,e,t),n(e,et,t),n(e,K,t),n(e,tt,t),n(e,ee,t),n(e,lt,t),n(e,te,t),n(e,nt,t),c(le,e,t),n(e,it,t),n(e,ne,t),n(e,st,t),n(e,ie,t),n(e,ot,t),n(e,se,t),n(e,at,t),c(oe,e,t),n(e,rt,t),n(e,ae,t),n(e,pt,t),c(re,e,t),n(e,dt,t),n(e,pe,t),n(e,ct,t),c(de,e,t),n(e,mt,t),n(e,ce,t),n(e,ht,t),c(me,e,t),n(e,ft,t),c(he,e,t),n(e,vt,t),n(e,fe,t),n(e,ut,t),c(ve,e,t),n(e,Mt,t),n(e,Me,t),$t=!0},p:Ot,i(e){$t||(m($.$$.fragment,e),m(g.$$.fragment,e),m(T.$$.fragment,e),m(C.$$.fragment,e),m(J.$$.fragment,e),m(U.$$.fragment,e),m(L.$$.fragment,e),m(H.$$.fragment,e),m(B.$$.fragment,e),m(G.$$.fragment,e),m(S.$$.fragment,e),m(R.$$.fragment,e),m(V.$$.fragment,e),m(Y.$$.fragment,e),m(Q.$$.fragment,e),m(O.$$.fragment,e),m(le.$$.fragment,e),m(oe.$$.fragment,e),m(re.$$.fragment,e),m(de.$$.fragment,e),m(me.$$.fragment,e),m(he.$$.fragment,e),m(ve.$$.fragment,e),$t=!0)},o(e){h($.$$.fragment,e),h(g.$$.fragment,e),h(T.$$.fragment,e),h(C.$$.fragment,e),h(J.$$.fragment,e),h(U.$$.fragment,e),h(L.$$.fragment,e),h(H.$$.fragment,e),h(B.$$.fragment,e),h(G.$$.fragment,e),h(S.$$.fragment,e),h(R.$$.fragment,e),h(V.$$.fragment,e),h(Y.$$.fragment,e),h(Q.$$.fragment,e),h(O.$$.fragment,e),h(le.$$.fragment,e),h(oe.$$.fragment,e),h(re.$$.fragment,e),h(de.$$.fragment,e),h(me.$$.fragment,e),h(he.$$.fragment,e),h(ve.$$.fragment,e),$t=!1},d(e){e&&(l($e),l(ue),l(ge),l(Te),l(be),l(we),l(b),l(je),l(w),l(xe),l(j),l(Ce),l(x),l(ke),l(Je),l(k),l(ye),l(Ue),l(y),l(Ie),l(Le),l(I),l(_e),l(He),l(_),l(Ze),l(Be),l(Z),l(Ae),l(Ge),l(A),l(Ne),l(Se),l(N),l(We),l(Ee),l(W),l(Re),l(E),l(Pe),l(Ve),l(P),l(Xe),l(Ye),l(X),l(ze),l(De),l(z),l(Qe),l(D),l(qe),l(Fe),l(q),l(Oe),l(F),l(Ke),l(et),l(K),l(tt),l(ee),l(lt),l(te),l(nt),l(it),l(ne),l(st),l(ie),l(ot),l(se),l(at),l(rt),l(ae),l(pt),l(dt),l(pe),l(ct),l(mt),l(ce),l(ht),l(ft),l(vt),l(fe),l(ut),l(Mt),l(Me)),l(u),f($,e),f(g,e),f(T,e),f(C,e),f(J,e),f(U,e),f(L,e),f(H,e),f(B,e),f(G,e),f(S,e),f(R,e),f(V,e),f(Y,e),f(Q,e),f(O,e),f(le,e),f(oe,e),f(re,e),f(de,e),f(me,e),f(he,e),f(ve,e)}}}const al='{"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":"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 rl(gt){return Kt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class fl extends el{constructor(u){super(),tl(this,u,rl,ol,Ft,{})}}export{fl as component}; | |
Xet Storage Details
- Size:
- 21.8 kB
- Xet hash:
- fcfc6fd04049aeb701ab1e92342cb8339744e14fe7f8513fc267235a45d518de
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.