<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Devtools on dtsykunov — blog</title><link>https://blog.dtsykunov.com/tags/devtools/</link><description>Recent content in Devtools on dtsykunov — blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 04 Apr 2026 12:56:20 +0000</lastBuildDate><atom:link href="https://blog.dtsykunov.com/tags/devtools/index.xml" rel="self" type="application/rss+xml"/><item><title>Injecting Nix Dev Environments into Claude Code</title><link>https://blog.dtsykunov.com/posts/nix-dev-env-claude-code/</link><pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate><guid>https://blog.dtsykunov.com/posts/nix-dev-env-claude-code/</guid><description>&lt;p&gt;Claude Code runs each Bash command in its own process.
Environment variables don&amp;rsquo;t persist between them — an &lt;code&gt;export&lt;/code&gt; in one invocation is gone by the next.&lt;/p&gt;
&lt;p&gt;If your project uses a Nix devShell, this is a problem.
Running &lt;code&gt;nix develop&lt;/code&gt; inside a Claude session is messy, and running outside it requires restarting the devShell and Claude for any new dependency added to &lt;code&gt;flake.nix&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="claude_env_file"&gt;&lt;code&gt;CLAUDE_ENV_FILE&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code has a &lt;a href="https://code.claude.com/docs/en/env-vars"&gt;&lt;code&gt;CLAUDE_ENV_FILE&lt;/code&gt;&lt;/a&gt; environment variable.
Set it to a shell script path before launching, and Claude will source that script before every Bash command it runs.&lt;/p&gt;</description></item></channel></rss>