<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>dpc - Posts</title>
    <subtitle>Notes by `dpc`</subtitle>
    <link href="https://dpc.pw/posts/atom.xml" rel="self" type="application/atom+xml"/>
    <link href="https://dpc.pw/posts/"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-04-12T00:00:00+00:00</updated>
    <id>https://dpc.pw/posts/atom.xml</id>
    
    <entry xml:lang="en">
        <title>LLM Reviews in cargo-crev</title>
        <published>2026-04-12T00:00:00+00:00</published>
        <updated>2026-04-12T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dpc.pw/posts/llm-reviews-in-cargo-crev/" type="text/html"/>
        <id>https://dpc.pw/posts/llm-reviews-in-cargo-crev/</id>
        
        <content type="html">&lt;p&gt;There has been lots of chatting about software supply chain security
recently, motivated by popular package exploits.&lt;&#x2F;p&gt;
&lt;p&gt;Well, I have some relevant news: &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;crev-dev&#x2F;cargo-crev&quot;&gt;cargo-crev&lt;&#x2F;a&gt; now supports LLM-assisted code reviews. Go try it!&lt;&#x2F;p&gt;
&lt;p&gt;Read on to get more information and background.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;history&quot;&gt;History&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#history&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;I started working on Crev in 2018. The idea
was (is) simple: if each of us (developers) reviewed at least some of our
dependencies, and then we could share and distribute such reviews
between each other with the help of a Web of Trust, we
could get a good review coverage of the ecosystem, gain more
trust in our supply chains, report back issues upstream and
improve overall health of the open source ecosystem.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;code&gt;cargo-crev&lt;&#x2F;code&gt; was an attempt to implement such a system,
for the language ecosystem I cared about most — Rust.&lt;&#x2F;p&gt;
&lt;p&gt;If I may say so, on a technical level I&#x27;m satisfied
with the UX and flow that was achieved. However, around 2020
I lost my enthusiasm for this project.&lt;&#x2F;p&gt;
&lt;p&gt;Why? Because it became apparent that no matter how well
&lt;code&gt;cargo-crev&lt;&#x2F;code&gt; actually works, the biggest obstacle to fully
realize the idea was lack of time by developers.&lt;&#x2F;p&gt;
&lt;p&gt;Reviewing code, even superficially, is a lot of effort and
it takes a very long time. And it
does not feel nearly as satisfying as actually creating
something new — writing code.&lt;&#x2F;p&gt;
&lt;p&gt;Open Source community was already overburdened with
just maintaining code. Asking developers to take on
yet another unpaid responsibility of trying to secure
supply chains is just asking too much.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;llms-getting-good-at-finding-issues&quot;&gt;LLMs getting good at finding issues&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#llms-getting-good-at-finding-issues&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Just a few weeks ago I was reading some articles about new LLM
models finding non-trivial security issues, and Linux kernel and curl
developers admitting that after a deluge of mostly worthless slop security reports
they used to complain about, now they tend to receive actually worthwhile
AI-assisted bug and security reports. It reminded me about &lt;code&gt;cargo-crev&lt;&#x2F;code&gt;
and I realized that AI can actually fill the gap that made me
doubt it.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m not trying to overhype LLMs. But the fact is that
they can do, and in high volume, what developers themselves have
no time for: the 90&#x2F;10 security scanning that was otherwise quite hard
to automate.&lt;&#x2F;p&gt;
&lt;p&gt;An LLM can easily and reliably check if a code version published
on https:&#x2F;&#x2F;crates.io matches the code published in git.&lt;&#x2F;p&gt;
&lt;p&gt;An LLM can easily scan &lt;code&gt;build.rs&lt;&#x2F;code&gt; and the rest of the code and
look if anything looks out of place.&lt;&#x2F;p&gt;
&lt;p&gt;It is actually very hard to hide key-stealing malware
in a package that was supposed to format units, etc.&lt;&#x2F;p&gt;
&lt;p&gt;Especially in Rust, doing things that are wrong or
out of place creates a lot of noise, making such code
easy to notice, even by an LLM reviewer.&lt;&#x2F;p&gt;
&lt;p&gt;It might not be a silver bullet, but it is definitely
better than doing nothing.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;how-to-use-it&quot;&gt;How to use it&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#how-to-use-it&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;Note: In the initial release &lt;code&gt;cargo-crev&lt;&#x2F;code&gt; supports
only Claude Code agent. If you&#x27;re interested in adding
support for other coding agents, it should be relatively
easy — most scaffolding is already there. Feel free to chat
and create a PR.&lt;&#x2F;p&gt;
&lt;p&gt;Since version 0.27 &lt;code&gt;cargo-crev&lt;&#x2F;code&gt; has a built-in
review loop.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;cargo crev ai review-loop --iterations 10&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;which will start the agent 10 times, each time
selecting and reviewing a single dependency.&lt;&#x2F;p&gt;
&lt;p&gt;The agent will produce&amp;amp;update a single shell script
that can be used to conveniently review and sign
all reviews.&lt;&#x2F;p&gt;
&lt;p&gt;While the above is meant as a standard mass-review flow,
the core built-in agent review skill is available as an output of:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;cargo crev ai skill review&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;and it should be easy for anyone to modify it and&#x2F;or build their own
LLM-assisted workflows.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;how-it-works&quot;&gt;How it works&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#how-it-works&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;The core change is that &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dpc&#x2F;crev-proofs&#x2F;blob&#x2F;e8ae9359f6714f51b7198014386f0ba7b7c81cd3&#x2F;Z2hdE0ZebgUekVq0xdRfDlx09YAOMHEcbHE-aOcZBuk&#x2F;reviews&#x2F;2026-04-package-rV74rg.proof.crev#L18&quot;&gt;Crev&#x27;s reviews now have
fields to indicate that an LLM was used for the review&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The rest is just relatively minor functionality to make producing
LLM reviews convenient end to end.&lt;&#x2F;p&gt;
&lt;p&gt;For people skeptical of LLMs, options to ignore LLM-generated reviews
have been and will be added where appropriate. You can just
ignore the slop reviews if you don&#x27;t trust them, fine with me.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;how-well-it-works&quot;&gt;How &lt;em&gt;well&lt;&#x2F;em&gt; it works&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#how-well-it-works&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;While working on this feature and testing it myself, &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;dpc&#x2F;crev-proofs&#x2F;commits&#x2F;master&#x2F;&quot;&gt;I have produced
quite a few LLM-assisted reviews&lt;&#x2F;a&gt;.
Judge by yourself.&lt;&#x2F;p&gt;
&lt;p&gt;To me these meet the bar of being useful. And they turned some spare
capacity from my Claude subscription into something that I otherwise
would not be able to do myself.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#summary&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h2&gt;
&lt;p&gt;This is only an initial attempt at harnessing the AI in cargo-crev.
There still might be lots of things to improve and extend, but we have
to start somewhere.&lt;&#x2F;p&gt;
&lt;p&gt;If you like the idea and find it promising, I encourage you
to try it out, give some feedback, and submit improvements.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    
    <entry xml:lang="en">
        <title>I don&#x27;t want your PRs anymore</title>
        <published>2026-04-06T00:00:00+00:00</published>
        <updated>2026-04-06T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dpc.pw/posts/i-dont-want-your-prs-anymore/" type="text/html"/>
        <id>https://dpc.pw/posts/i-dont-want-your-prs-anymore/</id>
        
        <content type="html">&lt;p&gt;I really appreciate that you&#x27;re enjoying the software I&#x27;m maintaining
and want to help. But we need to rethink this collaboration, because
I feel like we&#x27;re increasingly wasting each other&#x27;s time.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;why-i-don-t-want-to-merge-your-pr&quot;&gt;Why I don&#x27;t want to merge your PR&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#why-i-don-t-want-to-merge-your-pr&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;Since I don&#x27;t really know you, I always have to assume that you might be trying
to sneak in something malicious along with your changes, which makes
reviewing and merging them riskier than implementing them myself.&lt;&#x2F;p&gt;
&lt;p&gt;On top of that, there are a lot of personal and subjective aspects to code.
You might have certain preferences about formatting,
style, structure, dependencies, and approach, and I have mine.&lt;&#x2F;p&gt;
&lt;p&gt;Then we often need to synchronize with respect to review, CI runs, merge conflicts, etc.&lt;&#x2F;p&gt;
&lt;p&gt;And then there&#x27;s this common back-and-forth round-trip between the
contributor and maintainer, which is just delaying things.&lt;&#x2F;p&gt;
&lt;p&gt;Even before LLMs, writing the code was not the main bottleneck for me. But
writing code did take time, so a solid, working, easy-to-review PR was
often worth the small extra risk and inconvenience.&lt;&#x2F;p&gt;
&lt;p&gt;With LLMs becoming quite good at implementing things, that tradeoff
is almost never true anymore.&lt;&#x2F;p&gt;
&lt;p&gt;While I still need to review LLM-generated code, I generally don&#x27;t have to worry about
it being malicious the way an unknown contributor&#x27;s code could be. I&#x27;ve already
codified a lot of my coding preferences and style guidelines for my LLM.
And I can rapidly iterate at my own pace without having to synchronize with
another human who might be in a different timezone.&lt;&#x2F;p&gt;
&lt;p&gt;For these reasons, it&#x27;s just easier if I make the code changes
myself (with the help of an LLM).&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-nature-of-software-development-has-shifted&quot;&gt;The nature of software development has shifted&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#the-nature-of-software-development-has-shifted&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;It&#x27;s increasingly apparent that &quot;the source code&quot; is less &quot;source&quot;
and more &quot;code&quot; — an intermediate formalized layer between
ideas in the developer&#x27;s head and instructions for the computer to
execute. It&#x27;s always been this way, but now, with the code itself
being easier to generate automatically, it&#x27;s just more visible.&lt;&#x2F;p&gt;
&lt;p&gt;There&#x27;s a wide range of reactions to coding agents out there,
from banning them to proclaiming that coding is dead and vibecoding
is the future. Personally, as things are right now, I sit somewhere in the middle.
I come up with the design, then let my agent do a lot of the actual writing, and then I review
and refine the result.&lt;&#x2F;p&gt;
&lt;p&gt;I could get huge amounts of code written, but I&#x27;m bottlenecked on:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;understanding — reading the existing code to be able to reason about it;&lt;&#x2F;li&gt;
&lt;li&gt;designing — coming up with the right changes and architecture;&lt;&#x2F;li&gt;
&lt;li&gt;reviewing — ensuring that the code is doing what I wanted.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The code in your PR doesn&#x27;t help me much with any of these.
So let&#x27;s skip it — don&#x27;t attempt to implement code changes
with the goal of merging them into the codebase.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;how-can-you-help-instead&quot;&gt;How can you help instead&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#how-can-you-help-instead&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;As the &quot;writing the code&quot; part is becoming less valuable, all other ways
of helping maintainers become relatively higher value.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;give-feedback&quot;&gt;Give feedback&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#give-feedback&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;As I&#x27;m busy implementing things, I often don&#x27;t have much time
to actually use them, or do good research on how to improve them.&lt;&#x2F;p&gt;
&lt;p&gt;Users telling me what works well and what could be improved can be very helpful.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;discuss-ideas&quot;&gt;Discuss ideas&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#discuss-ideas&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;I don&#x27;t know everything, and discussing things with
other people with different experiences and perspectives
can help me understand what I should be building and how.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;report-and-investigate-bugs&quot;&gt;Report and investigate bugs&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#report-and-investigate-bugs&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;A good bug report is 3&#x2F;4 of the bug itself being fixed.&lt;&#x2F;p&gt;
&lt;p&gt;If you spotted a problem, please describe it well, and even
do the debugging to figure out how to reproduce it and
where exactly the problem is.&lt;&#x2F;p&gt;
&lt;p&gt;Then discuss potential solutions.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;prototype-changes&quot;&gt;Prototype changes&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#prototype-changes&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;Send me a reference PR and&#x2F;or the prompt you used to produce it.&lt;&#x2F;p&gt;
&lt;p&gt;Yes, I know I just said that I don&#x27;t want your PRs. So let me
explain. With LLMs, it&#x27;s easier for me to get my own LLM to make the change
and then review it myself.&lt;&#x2F;p&gt;
&lt;p&gt;BUT — using code for illustrative purposes still makes sense.
A quick glance at code implementing something can be helpful,
even if I don&#x27;t end up merging it.&lt;&#x2F;p&gt;
&lt;p&gt;And if you share the actual &quot;source&quot; (prompt) to produce the &quot;code&quot;,
I can reuse and refine it, saving time.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;review-code-and-point-out-problems&quot;&gt;Review code and point out problems&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#review-code-and-point-out-problems&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;As I&#x27;m bottlenecked on reviews, an extra pair of eyes helps.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;fork-the-code-and-report-back&quot;&gt;Fork the code and report back&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#fork-the-code-and-report-back&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h4&gt;
&lt;p&gt;Don&#x27;t be afraid of forking the code and changing it however you want.&lt;&#x2F;p&gt;
&lt;p&gt;Having to come up with designs supporting multiple use cases,
forming consensus, debating best outcomes, looking for compromises, etc.
is very time-consuming.&lt;&#x2F;p&gt;
&lt;p&gt;LLMs enable a great deal of software customizability. You can
make the changes you want by yourself faster and easier than ever,
and then rebase them (or not) on top of upstream
at your own pace.&lt;&#x2F;p&gt;
&lt;p&gt;Just fork. Add support for your own use case, do things your way,
ask neither for permission nor forgiveness.&lt;&#x2F;p&gt;
&lt;p&gt;As a maintainer, this saves me time too. And in the end, maybe both of us
can learn something from your version taking its own route.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    
    <entry xml:lang="en">
        <title>Reviewing my Framework 13 Laptops: the old vs new</title>
        <published>2026-03-31T00:00:00+00:00</published>
        <updated>2026-03-31T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dpc.pw/posts/reviewing-my-framework-13-laptops-the-old-vs-new/" type="text/html"/>
        <id>https://dpc.pw/posts/reviewing-my-framework-13-laptops-the-old-vs-new/</id>
        
        <content type="html">&lt;p&gt;Since August 2022 I was using a FW13 12th Gen Intel as my primary laptop. I didn&#x27;t strictly need a new one, as it was still working perfectly fine. But upgrading after 4 years doesn&#x27;t seem crazy or too excessive, and I&#x27;m worried about the global economy and supply chains going forward, so I decided to get a new one a bit earlier than I usually would.&lt;&#x2F;p&gt;
&lt;p&gt;The old one will serve as a family device, and if need be, a spare part donor for the new one. One of the advantages of an upgradable laptop like this. I might get it a case and convert it to a headless&#x2F;desktop device eventually. Would make a nice low-power home server.&lt;&#x2F;p&gt;
&lt;p&gt;I just recently got the new FW13 with Ryzen AI 9 HX 370 delivered, set it up, used it for a few days, and I figured it&#x27;s a good time to write some thoughts about both and my Framework Laptop experience overall.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-old-one&quot;&gt;The old one&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#the-old-one&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;The old one served me well for almost 4 years, which is appreciated. After all this time
it looks close to brand new. Not much visible wear.&lt;&#x2F;p&gt;
&lt;p&gt;It has enough power to compile Rust projects without being painfully slow,
though I typically work over ssh on a desktop machine, which is 3x-6x
faster at heavy tasks like that. I&#x27;ll post some benchmarks at the end.&lt;&#x2F;p&gt;
&lt;p&gt;It always worked well with Linux and had good support in the Open Source community wherever it matters, e.g. pre-made modules for &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;nixos&#x2F;nixos-hardware&quot;&gt;&lt;code&gt;nixos-hardware&lt;&#x2F;code&gt;&lt;&#x2F;a&gt; early on. All the devices I cared about worked well.&lt;&#x2F;p&gt;
&lt;p&gt;I loved (and still do) the ease of being able to open, inspect, dedust, replace parts, etc. E.g. I added
an NVMe radiator because I had a spare one around, and it fits, so why not?&lt;&#x2F;p&gt;
&lt;p&gt;I had to replace the input cover though, as I was affected by &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;community.frame.work&#x2F;t&#x2F;tracking-framework13-keyboard-has-intermittent-keys&#x2F;33279&#x2F;65&quot;&gt;keys intermittently not working&lt;&#x2F;a&gt;.
Replacement was super easy, the part was about $100. But it was quite an annoying problem to debug until the FW Team published their findings.&lt;&#x2F;p&gt;
&lt;p&gt;The second complaint would be &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;community.frame.work&#x2F;t&#x2F;12th-gen-intel-core-bios-3-06-beta&#x2F;25726&#x2F;497&quot;&gt;the BIOS update situation for 12th Gen Intel, which turned out to be hopeless&lt;&#x2F;a&gt;.
I personally didn&#x27;t care much, but between 3rd party BIOS vendors and other complications, the BIOS update story went quite wrong for this model.&lt;&#x2F;p&gt;
&lt;p&gt;The last complaint would be the wobbly lid hinge. It was annoying sometimes: at steep angles the lid would not hold position and when unstable or moved it would wobble a little.&lt;&#x2F;p&gt;
&lt;p&gt;The battery life was mid. It did improve due to some firmware fixes, etc. but
it was never good. I&#x27;m not much of a traveler, and mostly need the battery
to move the laptop from the dock to the dinner table or a couch,
so I was aware of that before buying and didn&#x27;t care.&lt;&#x2F;p&gt;
&lt;p&gt;I was very happy about the hardware battery charge limit. Except when traveling,
I kept it set to 60%, and didn&#x27;t notice any battery degradation over the years,
despite having it plugged in 99% of the time.&lt;&#x2F;p&gt;
&lt;p&gt;I love the physical toggles for microphone and camera. That feature alone
always made FW13 feel like a laptop for people like me — the kind who join morning calls
in their underwear.
Just kidding (or am I?). People who care about cybersecurity, privacy, etc.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-new&quot;&gt;The new&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#the-new&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;It might sound weird, but I really appreciate that the new laptop... is in the form factor exactly the same as the old one. Maybe I&#x27;m too much on the spectrum, heh. No need to adjust to a new key layout, everything feels familiar, the microphone and camera physical switches are still there. No negative surprises.&lt;&#x2F;p&gt;
&lt;p&gt;The new higher DPI screen is soo nice. Immediately noticeable improvement.&lt;&#x2F;p&gt;
&lt;p&gt;The hinge is fixed. Now it is very high-force, maybe even a bit too much.
Does opening the lid count as exercise?&lt;&#x2F;p&gt;
&lt;p&gt;The specs are a significant improvement, at least for my needs (compiling Rust code).&lt;&#x2F;p&gt;
&lt;p&gt;The desktop UI feels even smoother than before, especially with an external
monitor attached. Overall, probably a combination of the improved built-in
screen at 120Hz (60Hz on the old one) and better specs.&lt;&#x2F;p&gt;
&lt;p&gt;The old laptop under load ran quite hot and spun the CPU fan like
a lawn mower. So far, the new one handles the load much more gracefully: cooler and quieter.&lt;&#x2F;p&gt;
&lt;p&gt;Looks to me like the fwupdmgr dealt well with firmware updates
right away, so hopefully the BIOS story will be better this time.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m not sure about the battery yet. Again - I don&#x27;t really use it much,
and I capped it at 60% right away too. I don&#x27;t expect miracles.
There is plenty of info online with proper measurements.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;summary&quot;&gt;Summary&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#summary&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;As you could see, I was somewhat of an early Framework adopter,
and fine with some bumps along the way. I need a laptop that is
a bit like a desktop: good power, open, repairable, and I don&#x27;t
care much about battery capacity.&lt;&#x2F;p&gt;
&lt;p&gt;I&#x27;m happy to see that everything that was not ideal
in the previous version is now fixed, and the whole
laptop is just a more polished and capable version
of what I already liked.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;benchmarks&quot;&gt;Benchmarks&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#benchmarks&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;fedimint&#x2F;fedimint&#x2F;wiki&#x2F;Benchmark-compilation-times&quot;&gt;The main project I&#x27;m working on has a compilation benchmark&lt;&#x2F;a&gt;, so I&#x27;m going to use it for real-life performance.
It&#x27;s a relatively large and heavy Rust codebase.&lt;&#x2F;p&gt;
&lt;h5 id=&quot;ren-my-desktop&quot;&gt;ren - my desktop&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#ren-my-desktop&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h5&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;dpc@ren&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;-------&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;OS: NixOS 26.05 (Yarara) x86_64&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kernel: Linux 6.19.9&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;CPU: AMD Ryzen 9 7950X3D (32) @ 4.04 GHz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Memory: 26.22 GiB &#x2F; 62.01 GiB (42%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Swap: 5.26 GiB &#x2F; 31.00 GiB (17%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;): 11.47 MiB &#x2F; 31.00 GiB (0%) - tmpfs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;bin): 2.61 TiB &#x2F; 6.84 TiB (38%) - bcachefs [Read-only]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Date: 2026-03-30&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Commit: 08fb6c1b613&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                       total    user     sys&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check   debug:   62.21  986.43  145.05&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check   debug:    4.38   10.46    8.01&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build   debug:  111.77 2129.55  213.69&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build   debug:   13.69   38.91   27.34&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check release:   54.47  566.00  132.61&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check release:   15.77   39.94    7.89&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build release:  448.37 12471.30  674.43&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build release:  371.44 10790.08  399.68&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h5 id=&quot;tlb-new-framework-13&quot;&gt;tlb - new Framework 13&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#tlb-new-framework-13&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h5&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;dpc@tlb&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;-------&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;OS: NixOS 26.05 (Yarara) x86_64&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kernel: Linux 6.19.9&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;CPU: AMD Ryzen AI 9 HX 370 (24) @ 1.95 GHz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Memory: 14.24 GiB &#x2F; 93.59 GiB (15%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Swap: 0 B &#x2F; 46.80 GiB (0%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;): 10.86 MiB &#x2F; 46.80 GiB (0%) - tmpfs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;bin): 91.67 GiB &#x2F; 6.69 TiB (1%) - bcachefs [Read-only]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Date: 2026-03-30&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Commit: 08fb6c1b613&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                       total    user     sys&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check   debug:  162.62 2473.10  164.12&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check   debug:    7.66   21.89    8.53&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build   debug:  317.64 5398.69  252.56&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build   debug:   19.44   69.70   21.61&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check release:  129.30 1324.88  144.16&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check release:   37.23   95.91    9.08&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build release: 1488.11 31536.63  726.96&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build release: HANG? cargo bug?&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h5 id=&quot;mutex-old-framework-13&quot;&gt;mutex - old Framework 13&lt;a class=&quot;anchor&quot; aria-hidden=&quot;true&quot; href=&quot;#mutex-old-framework-13&quot; hidden=&quot;&quot;&gt;#&lt;&#x2F;a&gt;
&lt;&#x2F;h5&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;dpc@mutex&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;---------&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;OS: NixOS 26.05 (Yarara) x86_64&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Kernel: Linux 6.19.9&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;CPU: 12th Gen Intel(R) Core(TM) i7-1280P (20) @ 3.60 GHz&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Memory: 3.76 GiB &#x2F; 62.51 GiB (6%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Swap: 0 B &#x2F; 40.05 GiB (0%)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;): 11.96 MiB &#x2F; 31.26 GiB (0%) - tmpfs&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Disk (&#x2F;bin): 755.77 GiB &#x2F; 906.66 GiB (83%) - ext4 [Read-only]&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Date: 2026-03-31&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Commit: 5272f1734c4&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                       total    user     sys&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check   debug:  226.67 2951.83  196.04&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check   debug:    8.78   25.72   10.34&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build   debug:  433.46 6511.59  309.13&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build   debug:   28.67   81.74   27.63&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  check release:  157.38 1606.74  183.38&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  check release:   42.21  107.07   12.39&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Full  build release: 2062.62 38336.06  860.68&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;Incr  build release: HANG?&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
    
    <entry xml:lang="en">
        <title>BubbleWrap your dev env and agents</title>
        <published>2026-03-25T00:00:00+00:00</published>
        <updated>2026-03-25T00:00:00+00:00</updated>
        <author>
          <name>Unknown</name>
        </author>
        <link rel="alternate" href="https://dpc.pw/posts/bubblewrap-your-dev-env-and-agents/" type="text/html"/>
        <id>https://dpc.pw/posts/bubblewrap-your-dev-env-and-agents/</id>
        
        <content type="html">&lt;p&gt;OK, so the world is collapsing, everything is getting hacked,
all dependencies are probably stealing keys and mining crypto,
slop is everywhere, and I&#x27;m part of the problem.&lt;&#x2F;p&gt;
&lt;p&gt;So what do I do? &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=jkvCe4bKeL0&amp;amp;t=173s&quot;&gt;I&#x27;m going to isolate!&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I had this in mind for a long while, but only recently
LLM agents became good enough that I actually find it
really useful to let them go without babysitting every
command they are trying to run.&lt;&#x2F;p&gt;
&lt;p&gt;So the goals are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;protect my systems from the slopus,&lt;&#x2F;li&gt;
&lt;li&gt;protect my systems from malicious dependencies (at least somewhat),&lt;&#x2F;li&gt;
&lt;li&gt;retain the usual UX.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Because of the last point, I am not going to be doing
separate user account, or a separate VM, or play with dockers.&lt;&#x2F;p&gt;
&lt;p&gt;What I&#x27;m going to do is to use the &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;containers&#x2F;bubblewrap&quot;&gt;BubbleWrap&lt;&#x2F;a&gt;,
to remount only parts of host system and home directory, and most
of them in read-only mode. This way my tooling
and general DX remains almost exactly the same,
but if the Slopus has an episode of psychosis,
or pulls in a cryptomining malware, there is
only so much damage that it can do.&lt;&#x2F;p&gt;
&lt;p&gt;So the core of this system is the &lt;code&gt;isolate&lt;&#x2F;code&gt; script:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CB4B16;&quot;&gt; -euo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; pipefail&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;# Skip re-isolating if already inside an isolated environment&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;ISOLATE_ENV&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;:-}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	&amp;gt;&amp;amp;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;warning: already isolated&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;tiocsti_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&#x2F;proc&#x2F;sys&#x2F;dev&#x2F;tty&#x2F;legacy_tiocsti&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; ! -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$tiocsti_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; ||&lt;&#x2F;span&gt;&lt;span&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;cat&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$tiocsti_path&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;)&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; !=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;0&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	&amp;gt;&amp;amp;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;warning: TIOCSTI not disabled&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span&gt;()&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--dev-bind &#x2F;dev &#x2F;dev&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--proc &#x2F;proc&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--tmpfs &#x2F;tmp&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--tmpfs &#x2F;run&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; 	--setenv PROMPT_ENV_INDICATOR &amp;quot;isolated&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; 	--setenv ISOLATE_ENV &amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;pwd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;)&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&#x2F;bin&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&#x2F;usr&#x2F;bin&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&#x2F;etc&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&#x2F;nix&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&#x2F;run&#x2F;current-system&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.config&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;nix&#x2F;dot&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.gitconfig&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.nix-profile&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.local&#x2F;share&#x2F;direnv&#x2F;allow&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--ro-bind &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;done&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; in&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.cargo&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.claude&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.claude.json&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;nix&#x2F;dot&#x2F;.claude&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$XDG_RUNTIME_DIR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;gnupg&#x2F;S.gpg-agent&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;pwd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;)&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;\&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;	;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--bind &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$p&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;done&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;NIRI_SOCKET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;:-}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; &amp;amp;&amp;amp; -S&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$NIRI_SOCKET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--bind &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$NIRI_SOCKET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$NIRI_SOCKET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--setenv NIRI_SOCKET &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$NIRI_SOCKET&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; 	--dir &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.gnupg&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; 	--chmod&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D33682;&quot;&gt; 0700&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.gnupg&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;# Source extra config (e.g. set by auto-isolate) to allow&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;# project-specific additions to args&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;ISOLATE_EXTRA_CONFIG&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;:-}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; &amp;amp;&amp;amp; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$ISOLATE_EXTRA_CONFIG&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	source&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$ISOLATE_EXTRA_CONFIG&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;	# Hide the config file inside the sandbox by overlaying &#x2F;dev&#x2F;null&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--ro-bind &#x2F;dev&#x2F;null &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$ISOLATE_EXTRA_CONFIG&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; bwrap&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CB4B16;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;@&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;]&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CB4B16;&quot;&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;I&#x27;m not going to spend time explaining every detail here,
please read the Bubblewrap docs, or ask your local LLM.&lt;&#x2F;p&gt;
&lt;p&gt;But if you, dear reader, are planning to do the same&#x2F;similar thing,
you&#x27;ll probably want to go over each path and consider
implications. E.g. I&#x27;m using a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;drduh&#x2F;YubiKey-Guide&quot;&gt;fancy Yubikey SSH&#x2F;GPG setup&lt;&#x2F;a&gt;
and I need to touch the hardware yubikey every time I ssh
somewhere. Because of that I&#x27;m not afraid of mounting the ssh&#x2F;gpg
socket into the isolated environment.&lt;&#x2F;p&gt;
&lt;p&gt;Anyway, in a nutshell: &lt;code&gt;isolate&lt;&#x2F;code&gt; will run a given command
in an environment where almost only the current working directory
is writable, and rest are only the bare minimum parts needed
to get things working, mostly in read-only mode. Kind-a, mostly.
The goal here is a good enough security and robustness without
sacrificing almost any DX.&lt;&#x2F;p&gt;
&lt;p&gt;Thanks to using Nix, the first thing I&#x27;m going to use this &lt;code&gt;isolate&lt;&#x2F;code&gt;
script to wrap Slopus. That guy should never get a full
access to anything important directly.&lt;&#x2F;p&gt;
&lt;p&gt;Inside my system&#x27;s &lt;code&gt;flake.nix&lt;&#x2F;code&gt; in the main overlay I have something like this:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;nix&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            claude-code&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt; =&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;              let&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;                orig&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; pkgs-unstable&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;claude-code&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;              in&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;              final&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;writeShellScriptBin&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;claude&amp;quot; &amp;#39;&amp;#39;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;                exec env CARGO_TERM_QUIET=true PATH=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span&gt;final&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;.&lt;&#x2F;span&gt;&lt;span&gt;not-git&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin:$PATH&amp;quot; &lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;${&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;.&#x2F;dot&#x2F;bin&#x2F;isolate&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;} ${&lt;&#x2F;span&gt;&lt;span&gt;orig&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin&#x2F;claude &amp;quot;$@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;              &amp;#39;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #DC322F;&quot;&gt;;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This makes Slopus always start in an isolated environment,
so I can&#x27;t forget about it. I also replace &lt;code&gt;git&lt;&#x2F;code&gt; with a wrapper
reminding Slopus that we&#x27;re using Jujutsu, and make &lt;code&gt;cargo build&lt;&#x2F;code&gt; less
noisy by default to (maybe) save some tokens.&lt;&#x2F;p&gt;
&lt;p&gt;Then I want to automate entering isolated environment
in every project I&#x27;m working on.&lt;&#x2F;p&gt;
&lt;p&gt;For that I have &lt;code&gt;auto-isolate&lt;&#x2F;code&gt;:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #586E75;font-style: italic;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env bash&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;set&lt;&#x2F;span&gt;&lt;span style=&quot;color: #CB4B16;&quot;&gt; -euo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; pipefail&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; ! -x&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin&#x2F;isolate&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	&amp;gt;&amp;amp;2&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; echo&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;warning: &lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin&#x2F;isolate not found, skipping isolation&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;pwd&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;)&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;while&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; true&lt;&#x2F;span&gt;&lt;span&gt;;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; do&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.isolate&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;		exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; env ISOLATE_EXTRA_CONFIG=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;.isolate&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt; $HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;bin&#x2F;isolate &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; ==&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&#x2F;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;		break&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;	fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;	dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;$(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;dirname&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$dir&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;)&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;done&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;exec&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;@&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;&lt;code&gt;auto-isolate&lt;&#x2F;code&gt; will automatically call &lt;code&gt;isolate&lt;&#x2F;code&gt; for a given
command if it can find &lt;code&gt;.isolate&lt;&#x2F;code&gt; in current working dir
or any ancestor dir.&lt;&#x2F;p&gt;
&lt;p&gt;One could wire it in a shell startup file, but since I have
a whole system for working in the CLI heavily rooted in tmux,
I am going to put it in &lt;code&gt;~&#x2F;.config&#x2F;tmux&#x2F;tmux.conf&lt;&#x2F;code&gt; like this:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;set-option -g default-command &amp;quot;$HOME&#x2F;bin&#x2F;auto-isolate ${SHELL}&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;# in case I want to actually do something outside of the isolated env constrains&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;bind E new-window &amp;quot;${SHELL}&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;This way every time I&#x27;m starting a new pane in tmux,
it will trigger &lt;code&gt;auto-isolate&lt;&#x2F;code&gt;. Now I &lt;code&gt;touch ~&#x2F;lab&#x2F;.isolate&lt;&#x2F;code&gt; and
since all my dev projects are always inside &lt;code&gt;~&#x2F;lab&lt;&#x2F;code&gt; I pretty much
can&#x27;t ever forget to &lt;code&gt;isolate&lt;&#x2F;code&gt; my projects.&lt;&#x2F;p&gt;
&lt;p&gt;If you haven&#x27;t noticed before, the &lt;code&gt;isolate&lt;&#x2F;code&gt; script supports &lt;code&gt;ISOLATE_EXTRA_CONFIG&lt;&#x2F;code&gt;
which allows adding project-specific modifications to the isolated
environment. E.g. for a little GUI project I&#x27;m working on, I had to
create following &lt;code&gt;.isolate&lt;&#x2F;code&gt; file:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #839496; background-color: #002B36;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [[&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; -n&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$WAYLAND_DISPLAY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ]];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;    args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;--ro-bind &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$XDG_RUNTIME_DIR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$WAYLAND_DISPLAY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot; &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$XDG_RUNTIME_DIR&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;$WAYLAND_DISPLAY&lt;&#x2F;span&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #859900;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #268BD2;&quot;&gt;args&lt;&#x2F;span&gt;&lt;span style=&quot;color: #859900;&quot;&gt;+=&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--bind &#x2F;dev&#x2F;dri&#x2F; &#x2F;dev&#x2F;dri&#x2F;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--bind &#x2F;dev&#x2F;shm &#x2F;dev&#x2F;shm&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--bind &#x2F;tmp&#x2F;.X11-unix&#x2F; &#x2F;tmp&#x2F;.X11-unix&#x2F;&lt;&#x2F;span&gt;&lt;span&gt; \&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #2AA198;&quot;&gt;	--bind &#x2F;run&#x2F;opengl-driver&#x2F;lib&#x2F; &#x2F;run&#x2F;opengl-driver&#x2F;lib&#x2F;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;so it can show me the UI, when I run &lt;code&gt;cargo r&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
</feed>
