Buckets:

HuggingFaceDocBuilder's picture
download
raw
21.8 kB
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: &#39;./.venv&#39;</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 &lt;torch/torch.h&gt;</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">&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 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">&#x27;source $HOME/.nix-profile/share/nix-direnv/direnvrc&#x27;</span> \\
&gt;&gt; ~/.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">&#x27;use flake&#x27;</span> &gt; .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">&#x27;use flake .#devShells.torch211-cxx11-rocm71-x86_64-linux&#x27;</span> &gt; .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">&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}}),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.