A trip report from NixCon 2025 in Rapperswil, Switzerland, detailing talks and experiences from the conference.
<p>I liked the NixOS meetup earlier this year, and at the end of the meetup they
told everyone about NixCon 2025, which would be happening in Switzerland this
year, at the very same location, the <a href="https://www.ost.ch/">University Of Applied Sciences
OST</a> in Rapperswil, so I decided to go! In this trip
report, I want to give you a rough impression of how I experienced this awesome
conference :)</p>
<p><em>The bee in the title is a NixCon inside joke ;)</em></p>
<h2 id="friday">Friday</h2>
<p>I arrived at about 09:30 on a rainy Friday morning, meaning I hurried from the
train station into OST building 1 to show my ticket QR code and pick up my
conference badge and custom name tag that I pre-ordered. The custom ones have
your name engraved and come with a strong magnet to attach them to your clothes:</p>
<a href="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5775.jpg"><img
srcset="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5775_hu_2ab24eefb66f32dc.jpg 2x,https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5775_hu_5badb8e34d0d757f.jpg 3x"
src="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5775_hu_f608afe3d2f3ee1.jpg"
alt="regular and custom name tag" title="regular and custom name tag"
width="600"
height="450"
style="
border: 1px solid #000;
"
loading="lazy"></a>
<p>After grabbing a bite to eat, I headed to the main lecture hall for the opening
session. <a href="https://www.ost.ch/en/person/farhad-d-mehta-8699">Prof. Dr. Farhad
Mehta</a> from OST, as well as
the entire NixCon orga team, welcomed the 450 registered attendees to the 10th
NixCon! I recognized many familiar faces from the Nix meetup, but many hands
went up when the audience was asked for whom it was the first time at NixCon, or
in Switzerland in general.</p>
<p>I want to thank Prof. Mehta in particular for making possible such meetups and
events! đ</p>
<p>If you work at a university, school or other organisation that has access to
rooms, consider offering to host a meetup (on a regular basis, or even just
once)! Locations are always hard to find, so offering a space is a great
contribution to Open Source.</p>
<h3 id="what-if-github-actions-were-local-first-and-built-using-nix">âWhat if GitHub Actions were local-first and built using Nix?â</h3>
<p>The first technical talk of the day was âWhat if GitHub Actions were local-first
and built using Nix?â by Domen KoĆŸar, the person behind
<a href="https://cachix.org">cachix.org</a>, which is a hosted Nix cache. The talk pitched
<a href="https://cloud.devenv.sh/">cloud.devenv.sh</a>, which is a Nix-based CI solution
(like GitHub Actions) using <a href="https://devenv.sh/">devenv</a>.</p>
<p>By using this solution, you solve the problem that you canât easily / completely
run GitHub Actions locally (yes, we all know about
<a href="https://github.com/nektos/act">act</a>), and you get to (?) write Nix configs
instead of YAML configs.</p>
<p>The solution seems nice, but I found the talk a little unstructured because the
presenter jumped around between slides so much. One crucial question was left
unanswered: How do you integrate this custom solution with your GitHub projects?
To me, diverging from the default way of configuring GitHub Actions does not
seem worth it for my projects. YMMV.</p>
<p><a href="https://media.ccc.de/v/nixcon2025-56408-what-if-github-actions">â watch the recording (46 minutes) on
media.ccc.de</a></p>
<h3 id="rewriting-the-hydra-queue-runner-in-rust">âRewriting the Hydra Queue Runner in Rustâ</h3>
<p>Next up: âRewriting the Hydra Queue Runner in Rustâ by Simon Hauser from
<a href="https://helsinki-systems.de/">Helsinki Systems</a>, a small German software
company. <a href="https://github.com/NixOS/hydra">Hydra</a> is the component in the
NixOS infrastructure which schedules builds: when nixpkgs changes, this is
the component that runs the build whose result ends up on
<a href="https://cache.nixos.org">cache.nixos.org</a> (the Debian equivalent is
<a href="https://wiki.debian.org/buildd">buildd</a>).</p>
<p>Simon explained that bottlenecks in the current queue runner result in
stranding of infrastructure: the project has machines available that it
cannot use fully. He outlined how they replaced a crufty SSH-based automation
with a well-designed gRPC protocol. I got the impression that a group of
people was involved in developing and reviewing this design, which is a great
sign for a healthy project.</p>
<p>One thing that was unfortunately missing from the talk were metrics. It would
have been great to see a few graphs that illustrate just how much better the
rewritten queue runner is.</p>
<p>Currently, the new queue runner is already used for Nix Community builds, but
not yet in production for NixOS itself. Hopefully soon, though!</p>
<p><a href="https://media.ccc.de/v/nixcon2025-56409-rewriting-the-hydra-que">â watch the recording (27 minutes) on
media.ccc.de</a></p>
<h3 id="you-cant-spell-devshell-without-hell">âYou can’t spell “devshell” without “hell”â</h3>
<p>This talk was presented by Zach Mitchell from <a href="https://flox.dev/">Flox</a>, which
is a Nix-based dev environment solution. Thus far, I use <code>nix-shell</code> or <code>nix develop</code> (see <a href="/posts/2025-07-27-dev-shells-with-nix-4-quick-examples/">Development shells with Nix: four quick
examples</a>), so I was
curious what Iâd learn from this talk.</p>
<p>Zach explained that both, <code>nix-shell</code> and <code>nix develop</code> were originally
written to debug Nix package builds, not to provide general-purpose
development environments. For users, this manifests as not being able to use
your favorite shell â <code>nix develop</code> only supports Bash. One might read about
<code>nix develop -c exec <shell></code>, but thatâs wrong, because then the shellâs RC
files run <strong>after</strong> Nix setup, possibly destroying parts of the setup.</p>
<p>One interesting thing I learnt is that the Nix garbage collector scans
<code>/proc</code> to avoid removing Nix store paths that are still needed by running
processes.</p>
<p>Zach mentioned <a href="https://github.com/zmitchell/proctrace">https://github.com/zmitchell/proctrace</a>, which is a
bpftrace-based profiler that tracks forks/execs and generates gantt chart
syntax of the timing. Sounds cool, but is unfortunately broken right now�
Too bad.</p>
<p><a href="https://media.ccc.de/v/nixcon2025-56410-you-cant-spell-devshell">â watch the recording (45 minutes) on
media.ccc.de</a></p>
<h3 id="the-nix-binary-cache-and-aws">âThe Nix Binary Cache and AWSâ</h3>
<p>In this fireside chat, Tarus Balog shared how he ended up at AWS after 20 years
of Open Source, and how his team wants to give back to the community. One
specific way in which theyâre doing that is by hosting cache.nixos.org.</p>
<p><a href="https://media.ccc.de/v/nixcon2025-56403-the-nix-binary-cache-an">â watch the recording (24 minutes) on
media.ccc.de</a></p>
<h3 id="nix-based-development-environments-at-shopify-reprise">âNix-based development environments at Shopify (reprise)â</h3>
<p>Josh Heinrichs from Shopify shared how they adopted Nix (again!), and I think
real-world enterprise adoption stories like these are very interesting.</p>
<p>In summary, Shopify had a <code>dev</code> command (since 2016), which offered declarative
configuration and then dispatched to <code>apt</code> (Linux) or <code>homebrew</code> (macOS). In the
first attempt to move to Nix, the effort didnât reach stable footing (some folks
couldnât use it yet) and then a company-wide shift to cloud development
happened, where the easier solution was to âjust use ubuntuâ.</p>
<p>A few years in, folks are apparently not so happy with the cloud development
environments and one day, Shopify CEO <a href="https://en.wikipedia.org/wiki/Tobias_L%C3%BCtke">Tobias
LĂŒtke</a> finds
<a href="https://devenv.sh">devenv</a>, which is a Nix-based solution that is remarkably
similar to Shopifyâs <code>dev</code>. So Tobi adopts devenv for one of their services and
becomes supportive of using Nix. This time around, they spend a lot more time on
a successful rollout within the organization, meaning incremental adoption,
getting all stakeholders on board, etc.</p>
<p>The takeaway is that one specific, well-supported use-case can be the adoption
driver. And once you have your development environments on a Nix-based solution,
you can more easily adopt other parts of the ecosystem as well.</p>
<p><a href="https://media.ccc.de/v/nixcon2025-56413-nix-based-development-e">â watch the recording (19 minutes) on
media.ccc.de</a></p>
<h3 id="my-first-nix-aha-a-newcomers-perspective">âMy first Nix Aha!: A Newcomerâs Perspectiveâ</h3>
<p>In a similar spirit to the Shopify talk, Kavisha Kumar from ASML shared how she
got into Nix after seeing a colleague use <code>nix-shell</code> to obtain a clean
development shell.</p>
<p>Kavisha spent a lot of time at ASML to teach others about why and how to use
Nix. She shared a number of nice metaphors that explained Nix concepts through
the subject area of video gaming.</p>
<p>I think many people are excited about Nix, but have trouble conveying that
excitement to others. Kavisha showed us a good way that worked for her.</p>
<p><a href="https://media.ccc.de/v/nixcon2025-56414-my-first-nix-aha-a-newc">â watch the recording (19 minutes) on
media.ccc.de</a></p>
<h3 id="lightning-talks">Lightning Talks</h3>
<p>The rest of the day was filled with lightning talks.</p>
<p>Cole Mickens from <a href="https://determinate.systems/">Determinate Systems</a> explained
what features they are currently shipping in their downstream distribution
âDeterminate Nixâ (features will be upstreamed): lazy trees (a performance
optimization for evaluating Flakes), parallel evaluation (brings evaluation
times down from 16s to 7s) and a native Linux builder for mac. Next up are Flake
Schemas, which I havenât read about yet.</p>
<p>Yvan Sraka from <a href="https://numtide.com/">Numtide</a>, a Nix and DevOps consultancy,
showed how he manages Linux machines for friends and family with NixOS. He has
his own configuration layer on top of NixOS and only uses the system as a
base. Most actual programs are used through AppImage, Flatpaks,
<a href="https://github.com/Mic92/envfs">envfs</a> and
<a href="https://github.com/nix-community/nix-ld">nix-ld</a>. The latter two are solutions
to use FHS based programs (those that expect <code>/usr/bin</code> and other standard
locations to be present) on non-FHS systems like NixOS. I had heard of nix-ld
before, but not of envfs.</p>
<p>Jacek Galowicz from <a href="https://nixcademy.com">Nixcademy</a> showed how to use
systemd-sysupdate and systemd-repart to implement A/B style updates with NixOS
and systemd. Itâs great to see that this technique is more and more mainstream,
as I am also using A/B style updating successfully in
<a href="https://gokrazy.org/">gokrazy</a>.</p>
<h2 id="saturday">Saturday</h2>
<p>The weather on Saturday was a lot better, so I made sure to get a seat with a
view of Lake ZĂŒrich:</p>
<a href="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5754.jpg"><img
srcset="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5754_hu_707d7fbf62a50ff9.jpg 2x,https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5754_hu_c44ab49e54db14bc.jpg 3x"
src="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5754_hu_91ced09efd5ff807.jpg"
alt="lake view!" title="lake view!"
width="600"
height="450"
style="
border: 1px solid #000;
"
loading="lazy"></a>
<h3 id="the-bikes-have-been-shed-the-official-nix-formatter">âThe bikes have been shed: The official Nix formatterâ</h3>
<p>In this talk, Silvan Mosberger from Tweag (and one of the main NixCon
organizers!), explains how the official formatting tool for .nix files came to
be.</p>
<p>I was delighted to hear <code>gofmt</code>, the official Go formatter, being mentioned as a
source of inspiration. Just like in other language ecosystems, introducing
uniform formatting eliminates time-consuming back-and-forth in code review over
adhering to coding style. Unfortunately, the formatting folks did not replicate
one key aspect to gofmtâs success: gofmt has no options. As the famous Go
proverb goes:</p>
<blockquote>
<p>Gofmt’s style is no one’s favorite, yet gofmt is everyone’s favorite!</p>
</blockquote>
<p>Meaning that itâs more important that everyone uses the same style, compared to
everyone being able to express their personal style preferences.</p>
<p><a href="https://media.ccc.de/v/nixcon2025-56375-the-bikes-have-been-she">â watch the recording (20 minutes) on
media.ccc.de</a></p>
<h3 id="mastering-nixos-integration-tests-advanced-techniques-for-fast-and-robust-multi-vm-tests">âMastering NixOS Integration Tests: Advanced Techniques for Fast and Robust Multi-VM Testsâ</h3>
<p>In this two-hour workshop, Jacek Galowicz from
<a href="https://nixcademy.com">Nixcademy</a>, who is not only a Nix teacher, but also
happens to be the maintainer of the NixOS integration test driver, shows us how
to write complex integration tests with a few lines of Nix and Python.</p>
<p>Jacek showed an integration test example: a Bittorrent service, consisting of
tracker, clients, firewalls and multiple networks! Nixpkgs contains over 1000
such integration tests, and running one on your laptop is easy.</p>
<p>The various ways to debug your tests seem pretty cool: using vsock instead of
port forwardings, and enabling a debug hook that will make a failed test hang
and wait to be debugged.</p>
<p>I thought this was a great overview and Jacek is an engaging teacher. I would
recommend booking his classes!</p>
<h3 id="when-not-to-nix-working-with-external-config-and-sops-nix">âWhen Not to Nix: Working with External Config and SOPS Nixâ</h3>
<p>Ryota spoke about when to use Nix and when not to use Nix. For example, you
could manage your dotfiles (config files) with Nix, or you could decide not
to. Having recently migrated more and more machines and configurations to Nix, I
found myself agreeing with this talk: Itâs important to understand what youâll
get out of declaratively or statefully managed configs, and when which approach
is better.</p>
<p><a href="https://media.ccc.de/v/nixcon2025-56381-when-not-to-nix-working">â watch the recording (19 minutes) on
media.ccc.de</a></p>
<h3 id="lightning-talks-1">Lightning Talks</h3>
<p>The rest of the day I spent in lightning talks, some of which were sponsored
talk slots. I learnt about, in no particular order:</p>
<ul>
<li><a href="https://www.cloudhypervisor.org/">Cloud Hypervisor</a>, a KVM based hypervisor like qemu, but written in Rust.</li>
<li><a href="https://nixbuild.net/">nixbuild.net</a>, a pay-as-you-go offering for extra
build capacity you can rent. On Sunday I heard someone say that their company
is using nixbuild.net and itâs very smooth.</li>
<li><a href="https://nix-ci.com/">NixCI</a>, a Nix-based hosted CI. So, the cloud.devenv.sh
service we heard about on Friday is a competitor to this service.</li>
<li><a href="https://flox.dev/nixinthewild/">Nix in the Wild</a> is an effort by Flox where
they do 45-60 minute interviews about Nix success stories. This might help you
convince folks in your organization.</li>
<li><a href="https://clan.lol">clan</a> is a fleet management solution.</li>
<li><a href="https://novacustom.com/">NovaCustom</a>, a one-person laptop/PC company. The
laptops come with coreboot and work with NixOS.</li>
<li>ExpressVPN is migrating their internal server setup (TrustedServer) from
Debian to NixOS! Deploying weekly in 105+ countries.</li>
<li>Cyberus, a German company, is offering NixOS LTS releases, compliant with the
EU Cyber Resilience Act obligations.</li>
<li>Davidâs <a href="https://github.com/dnr/styx">styx</a> project is a more
bandwidth-efficient download mechanism for NixOS updates. This uses
<a href="https://en.wikipedia.org/wiki/EROFS">EROFS</a>, which seems like an interesting
alternative to SquashFS images.</li>
</ul>
<p>After all the talks, we met outside for a group picture followed by barbecue at
the lake:</p>
<a href="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/NixCon2025_arik-grahl.de_CC-BY-SA-4.0-3200w-featured.jpg"><img
srcset="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/NixCon2025_arik-grahl.de_CC-BY-SA-4.0-3200w-featured_hu_f49e046e26d2953f.jpg 2x,https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/NixCon2025_arik-grahl.de_CC-BY-SA-4.0-3200w-featured_hu_5c0748c0810ca3da.jpg 3x"
src="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/NixCon2025_arik-grahl.de_CC-BY-SA-4.0-3200w-featured_hu_8ba18aa31755731f.jpg"
alt="NixCon 2025 group picture" title="NixCon 2025 group picture"
width="600"
height="400"
style="
border: 1px solid #000;
"
loading="lazy"></a>
<p><em>NixCon 2025 by Arik Grahl. Licensed under CC BY-SA 4.0.</em></p>
<h2 id="sunday">Sunday</h2>
<p>Before the conference, I wasnât sure if I would even bother showing up for
Sunday (Hack day), but on Sunday, I was like âof course!â, and it was a great
decision!</p>
<p>Many people were still around and were working on their projects. It felt like
the answer to any Nix question was just one chat message away â there was
expertise and helping hands from many parts of the project.</p>
<p>I ended up meeting a couple of people I only knew from online interactions
before, and we also talked a lot about meetups. Now, I am invited to multiple
meetups to give a talk :D</p>
<h2 id="conclusion">Conclusion</h2>
<p>This was a wonderful conference! The orga team and all contributors did a great
job!</p>
<p>As always, the OST in Rapperswil is a great venue for Open Source events.</p>
<p>Ticket sales and talk submission / scheduling were done using the
<a href="http://pretix.eu/">Pretix</a> and <a href="https://pretalx.com/p/about/">Pretalx</a> Open
Source systems, which makes me proud to have contributed to Pretix.</p>
<p>The selection of talks was great: Some deeply technical, some covering only the
human side of things, and many somewhere in between. I got the impression that
all the presenters I saw genuinely cared about their topic, so the overall
energy was very good!</p>
<p>(You can watch the talk recordings at <a href="https://media.ccc.de/c/nixcon2025">media.ccc.de: NixCon
2025</a>.)</p>
<p>Also outside of the talks, I had many friendly interactions and interesting
conversations. There is a lot of interest and adoption of Nix, which is great to
see!</p>
<p>The production level of the conference was <em>very high</em> for such a
volunteer-driven event. For example, the very cool sounding break music between
talks was created specifically for NixCon: <a href="https://tonstrstudio.bandcamp.com/album/lava">âLavaâ by
tonstr.studio</a>. Similarly, the
welcome bag contained dark Swiss chocolate, specifically made for NixCon (see
picture below). I donât even like dark chocolate, but this one was delicious!</p>
<p>Thanks again to all helpers, and I look forward to coming back soon!</p>
<a href="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5755.jpg"><img
srcset="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5755_hu_9e2fa5817975ea55.jpg 2x,https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5755_hu_8c2c2412f4af86af.jpg 3x"
src="https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5755_hu_8736ee28b37b1d95.jpg"
alt="NixCon 2025 Swiss chocolate" title="NixCon 2025 Swiss chocolate"
width="600"
height="800"
style="
border: 1px solid #000;
"
loading="lazy"></a>
# NixCon 2025 Trip Report đ
Source: [https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/)
Table of contents- [Friday](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#friday)- [âWhat if GitHub Actions were local\-first and built using Nix?â](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#what-if-github-actions-were-local-first-and-built-using-nix) - [âRewriting the Hydra Queue Runner in Rustâ](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#rewriting-the-hydra-queue-runner-in-rust) - [âYou canât spell âdevshellâ without âhellââ](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#you-cant-spell-devshell-without-hell) - [âThe Nix Binary Cache and AWSâ](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#the-nix-binary-cache-and-aws) - [âNix\-based development environments at Shopify \(reprise\)â](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#nix-based-development-environments-at-shopify-reprise) - [âMy first Nix Aha\!: A Newcomerâs Perspectiveâ](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#my-first-nix-aha-a-newcomers-perspective) - [Lightning Talks](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#lightning-talks)
- [Saturday](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#saturday)- [âThe bikes have been shed: The official Nix formatterâ](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#the-bikes-have-been-shed-the-official-nix-formatter) - [âMastering NixOS Integration Tests: Advanced Techniques for Fast and Robust Multi\-VM Testsâ](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#mastering-nixos-integration-tests-advanced-techniques-for-fast-and-robust-multi-vm-tests) - [âWhen Not to Nix: Working with External Config and SOPS Nixâ](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#when-not-to-nix-working-with-external-config-and-sops-nix) - [Lightning Talks](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#lightning-talks-1)
- [Sunday](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#sunday)
- [Conclusion](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/#conclusion)
I liked the NixOS meetup earlier this year, and at the end of the meetup they told everyone about NixCon 2025, which would be happening in Switzerland this year, at the very same location, the[University Of Applied Sciences OST](https://www.ost.ch/)in Rapperswil, so I decided to go\! In this trip report, I want to give you a rough impression of how I experienced this awesome conference :\)
*The bee in the title is a NixCon inside joke ;\)*
## Friday
I arrived at about 09:30 on a rainy Friday morning, meaning I hurried from the train station into OST building 1 to show my ticket QR code and pick up my conference badge and custom name tag that I pre\-ordered\. The custom ones have your name engraved and come with a strong magnet to attach them to your clothes:
[](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5775.jpg)
After grabbing a bite to eat, I headed to the main lecture hall for the opening session\.[Prof\. Dr\. Farhad Mehta](https://www.ost.ch/en/person/farhad-d-mehta-8699)from OST, as well as the entire NixCon orga team, welcomed the 450 registered attendees to the 10th NixCon\! I recognized many familiar faces from the Nix meetup, but many hands went up when the audience was asked for whom it was the first time at NixCon, or in Switzerland in general\.
I want to thank Prof\. Mehta in particular for making possible such meetups and events\! đ
If you work at a university, school or other organisation that has access to rooms, consider offering to host a meetup \(on a regular basis, or even just once\)\! Locations are always hard to find, so offering a space is a great contribution to Open Source\.
### âWhat if GitHub Actions were local\-first and built using Nix?â
The first technical talk of the day was âWhat if GitHub Actions were local\-first and built using Nix?â by Domen KoĆŸar, the person behind[cachix\.org](https://cachix.org/), which is a hosted Nix cache\. The talk pitched[cloud\.devenv\.sh](https://cloud.devenv.sh/), which is a Nix\-based CI solution \(like GitHub Actions\) using[devenv](https://devenv.sh/)\.
By using this solution, you solve the problem that you canât easily / completely run GitHub Actions locally \(yes, we all know about[act](https://github.com/nektos/act)\), and you get to \(?\) write Nix configs instead of YAML configs\.
The solution seems nice, but I found the talk a little unstructured because the presenter jumped around between slides so much\. One crucial question was left unanswered: How do you integrate this custom solution with your GitHub projects? To me, diverging from the default way of configuring GitHub Actions does not seem worth it for my projects\. YMMV\.
[â watch the recording \(46 minutes\) on media\.ccc\.de](https://media.ccc.de/v/nixcon2025-56408-what-if-github-actions)
### âRewriting the Hydra Queue Runner in Rustâ
Next up: âRewriting the Hydra Queue Runner in Rustâ by Simon Hauser from[Helsinki Systems](https://helsinki-systems.de/), a small German software company\.[Hydra](https://github.com/NixOS/hydra)is the component in the NixOS infrastructure which schedules builds: when nixpkgs changes, this is the component that runs the build whose result ends up on[cache\.nixos\.org](https://cache.nixos.org/)\(the Debian equivalent is[buildd](https://wiki.debian.org/buildd)\)\.
Simon explained that bottlenecks in the current queue runner result in stranding of infrastructure: the project has machines available that it cannot use fully\. He outlined how they replaced a crufty SSH\-based automation with a well\-designed gRPC protocol\. I got the impression that a group of people was involved in developing and reviewing this design, which is a great sign for a healthy project\.
One thing that was unfortunately missing from the talk were metrics\. It would have been great to see a few graphs that illustrate just how much better the rewritten queue runner is\.
Currently, the new queue runner is already used for Nix Community builds, but not yet in production for NixOS itself\. Hopefully soon, though\!
[â watch the recording \(27 minutes\) on media\.ccc\.de](https://media.ccc.de/v/nixcon2025-56409-rewriting-the-hydra-que)
### âYou canât spell âdevshellâ without âhellââ
This talk was presented by Zach Mitchell from[Flox](https://flox.dev/), which is a Nix\-based dev environment solution\. Thus far, I use`nix\-shell`or`nix develop`\(see[Development shells with Nix: four quick examples](https://michael.stapelberg.ch/posts/2025-07-27-dev-shells-with-nix-4-quick-examples/)\), so I was curious what Iâd learn from this talk\.
Zach explained that both,`nix\-shell`and`nix develop`were originally written to debug Nix package builds, not to provide general\-purpose development environments\. For users, this manifests as not being able to use your favorite shell â`nix develop`only supports Bash\. One might read about`nix develop \-c exec <shell\>`, but thatâs wrong, because then the shellâs RC files run**after**Nix setup, possibly destroying parts of the setup\.
One interesting thing I learnt is that the Nix garbage collector scans`/proc`to avoid removing Nix store paths that are still needed by running processes\.
Zach mentioned[https://github\.com/zmitchell/proctrace](https://github.com/zmitchell/proctrace), which is a bpftrace\-based profiler that tracks forks/execs and generates gantt chart syntax of the timing\. Sounds cool, but is unfortunately broken right now� Too bad\.
[â watch the recording \(45 minutes\) on media\.ccc\.de](https://media.ccc.de/v/nixcon2025-56410-you-cant-spell-devshell)
### âThe Nix Binary Cache and AWSâ
In this fireside chat, Tarus Balog shared how he ended up at AWS after 20 years of Open Source, and how his team wants to give back to the community\. One specific way in which theyâre doing that is by hosting cache\.nixos\.org\.
[â watch the recording \(24 minutes\) on media\.ccc\.de](https://media.ccc.de/v/nixcon2025-56403-the-nix-binary-cache-an)
### âNix\-based development environments at Shopify \(reprise\)â
Josh Heinrichs from Shopify shared how they adopted Nix \(again\!\), and I think real\-world enterprise adoption stories like these are very interesting\.
In summary, Shopify had a`dev`command \(since 2016\), which offered declarative configuration and then dispatched to`apt`\(Linux\) or`homebrew`\(macOS\)\. In the first attempt to move to Nix, the effort didnât reach stable footing \(some folks couldnât use it yet\) and then a company\-wide shift to cloud development happened, where the easier solution was to âjust use ubuntuâ\.
A few years in, folks are apparently not so happy with the cloud development environments and one day, Shopify CEO[Tobias LĂŒtke](https://en.wikipedia.org/wiki/Tobias_L%C3%BCtke)finds[devenv](https://devenv.sh/), which is a Nix\-based solution that is remarkably similar to Shopifyâs`dev`\. So Tobi adopts devenv for one of their services and becomes supportive of using Nix\. This time around, they spend a lot more time on a successful rollout within the organization, meaning incremental adoption, getting all stakeholders on board, etc\.
The takeaway is that one specific, well\-supported use\-case can be the adoption driver\. And once you have your development environments on a Nix\-based solution, you can more easily adopt other parts of the ecosystem as well\.
[â watch the recording \(19 minutes\) on media\.ccc\.de](https://media.ccc.de/v/nixcon2025-56413-nix-based-development-e)
### âMy first Nix Aha\!: A Newcomerâs Perspectiveâ
In a similar spirit to the Shopify talk, Kavisha Kumar from ASML shared how she got into Nix after seeing a colleague use`nix\-shell`to obtain a clean development shell\.
Kavisha spent a lot of time at ASML to teach others about why and how to use Nix\. She shared a number of nice metaphors that explained Nix concepts through the subject area of video gaming\.
I think many people are excited about Nix, but have trouble conveying that excitement to others\. Kavisha showed us a good way that worked for her\.
[â watch the recording \(19 minutes\) on media\.ccc\.de](https://media.ccc.de/v/nixcon2025-56414-my-first-nix-aha-a-newc)
### Lightning Talks
The rest of the day was filled with lightning talks\.
Cole Mickens from[Determinate Systems](https://determinate.systems/)explained what features they are currently shipping in their downstream distribution âDeterminate Nixâ \(features will be upstreamed\): lazy trees \(a performance optimization for evaluating Flakes\), parallel evaluation \(brings evaluation times down from 16s to 7s\) and a native Linux builder for mac\. Next up are Flake Schemas, which I havenât read about yet\.
Yvan Sraka from[Numtide](https://numtide.com/), a Nix and DevOps consultancy, showed how he manages Linux machines for friends and family with NixOS\. He has his own configuration layer on top of NixOS and only uses the system as a base\. Most actual programs are used through AppImage, Flatpaks,[envfs](https://github.com/Mic92/envfs)and[nix\-ld](https://github.com/nix-community/nix-ld)\. The latter two are solutions to use FHS based programs \(those that expect`/usr/bin`and other standard locations to be present\) on non\-FHS systems like NixOS\. I had heard of nix\-ld before, but not of envfs\.
Jacek Galowicz from[Nixcademy](https://nixcademy.com/)showed how to use systemd\-sysupdate and systemd\-repart to implement A/B style updates with NixOS and systemd\. Itâs great to see that this technique is more and more mainstream, as I am also using A/B style updating successfully in[gokrazy](https://gokrazy.org/)\.
## Saturday
The weather on Saturday was a lot better, so I made sure to get a seat with a view of Lake ZĂŒrich:
[](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5754.jpg)
### âThe bikes have been shed: The official Nix formatterâ
In this talk, Silvan Mosberger from Tweag \(and one of the main NixCon organizers\!\), explains how the official formatting tool for \.nix files came to be\.
I was delighted to hear`gofmt`, the official Go formatter, being mentioned as a source of inspiration\. Just like in other language ecosystems, introducing uniform formatting eliminates time\-consuming back\-and\-forth in code review over adhering to coding style\. Unfortunately, the formatting folks did not replicate one key aspect to gofmtâs success: gofmt has no options\. As the famous Go proverb goes:
> Gofmtâs style is no oneâs favorite, yet gofmt is everyoneâs favorite\!
Meaning that itâs more important that everyone uses the same style, compared to everyone being able to express their personal style preferences\.
[â watch the recording \(20 minutes\) on media\.ccc\.de](https://media.ccc.de/v/nixcon2025-56375-the-bikes-have-been-she)
### âMastering NixOS Integration Tests: Advanced Techniques for Fast and Robust Multi\-VM Testsâ
In this two\-hour workshop, Jacek Galowicz from[Nixcademy](https://nixcademy.com/), who is not only a Nix teacher, but also happens to be the maintainer of the NixOS integration test driver, shows us how to write complex integration tests with a few lines of Nix and Python\.
Jacek showed an integration test example: a Bittorrent service, consisting of tracker, clients, firewalls and multiple networks\! Nixpkgs contains over 1000 such integration tests, and running one on your laptop is easy\.
The various ways to debug your tests seem pretty cool: using vsock instead of port forwardings, and enabling a debug hook that will make a failed test hang and wait to be debugged\.
I thought this was a great overview and Jacek is an engaging teacher\. I would recommend booking his classes\!
### âWhen Not to Nix: Working with External Config and SOPS Nixâ
Ryota spoke about when to use Nix and when not to use Nix\. For example, you could manage your dotfiles \(config files\) with Nix, or you could decide not to\. Having recently migrated more and more machines and configurations to Nix, I found myself agreeing with this talk: Itâs important to understand what youâll get out of declaratively or statefully managed configs, and when which approach is better\.
[â watch the recording \(19 minutes\) on media\.ccc\.de](https://media.ccc.de/v/nixcon2025-56381-when-not-to-nix-working)
### Lightning Talks
The rest of the day I spent in lightning talks, some of which were sponsored talk slots\. I learnt about, in no particular order:
- [Cloud Hypervisor](https://www.cloudhypervisor.org/), a KVM based hypervisor like qemu, but written in Rust\.
- [nixbuild\.net](https://nixbuild.net/), a pay\-as\-you\-go offering for extra build capacity you can rent\. On Sunday I heard someone say that their company is using nixbuild\.net and itâs very smooth\.
- [NixCI](https://nix-ci.com/), a Nix\-based hosted CI\. So, the cloud\.devenv\.sh service we heard about on Friday is a competitor to this service\.
- [Nix in the Wild](https://flox.dev/nixinthewild/)is an effort by Flox where they do 45\-60 minute interviews about Nix success stories\. This might help you convince folks in your organization\.
- [clan](https://clan.lol/)is a fleet management solution\.
- [NovaCustom](https://novacustom.com/), a one\-person laptop/PC company\. The laptops come with coreboot and work with NixOS\.
- ExpressVPN is migrating their internal server setup \(TrustedServer\) from Debian to NixOS\! Deploying weekly in 105\+ countries\.
- Cyberus, a German company, is offering NixOS LTS releases, compliant with the EU Cyber Resilience Act obligations\.
- Davidâs[styx](https://github.com/dnr/styx)project is a more bandwidth\-efficient download mechanism for NixOS updates\. This uses[EROFS](https://en.wikipedia.org/wiki/EROFS), which seems like an interesting alternative to SquashFS images\.
After all the talks, we met outside for a group picture followed by barbecue at the lake:
[](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/NixCon2025_arik-grahl.de_CC-BY-SA-4.0-3200w-featured.jpg)
*NixCon 2025 by Arik Grahl\. Licensed under CC BY\-SA 4\.0\.*
## Sunday
Before the conference, I wasnât sure if I would even bother showing up for Sunday \(Hack day\), but on Sunday, I was like âof course\!â, and it was a great decision\!
Many people were still around and were working on their projects\. It felt like the answer to any Nix question was just one chat message away â there was expertise and helping hands from many parts of the project\.
I ended up meeting a couple of people I only knew from online interactions before, and we also talked a lot about meetups\. Now, I am invited to multiple meetups to give a talk :D
## Conclusion
This was a wonderful conference\! The orga team and all contributors did a great job\!
As always, the OST in Rapperswil is a great venue for Open Source events\.
Ticket sales and talk submission / scheduling were done using the[Pretix](http://pretix.eu/)and[Pretalx](https://pretalx.com/p/about/)Open Source systems, which makes me proud to have contributed to Pretix\.
The selection of talks was great: Some deeply technical, some covering only the human side of things, and many somewhere in between\. I got the impression that all the presenters I saw genuinely cared about their topic, so the overall energy was very good\!
\(You can watch the talk recordings at[media\.ccc\.de: NixCon 2025](https://media.ccc.de/c/nixcon2025)\.\)
Also outside of the talks, I had many friendly interactions and interesting conversations\. There is a lot of interest and adoption of Nix, which is great to see\!
The production level of the conference was*very high*for such a volunteer\-driven event\. For example, the very cool sounding break music between talks was created specifically for NixCon:[âLavaâ by tonstr\.studio](https://tonstrstudio.bandcamp.com/album/lava)\. Similarly, the welcome bag contained dark Swiss chocolate, specifically made for NixCon \(see picture below\)\. I donât even like dark chocolate, but this one was delicious\!
Thanks again to all helpers, and I look forward to coming back soon\!
[](https://michael.stapelberg.ch/posts/2025-09-21-nixcon-2025-trip-report/IMG_5755.jpg)
Did you like this post?[Subscribe to this blogâs RSS feed](https://michael.stapelberg.ch/feed.xml)to not miss any new posts\!
I run a blog since 2005, spreading knowledge and experience for over 20 years\! :\)
Michael Stapelberg details his migration of a NAS from CoreOS/Flatcar Linux to NixOS, covering the step-by-step transition from Docker containers to native NixOS modules with practical examples.
A tutorial explaining secrets management options for NixOS, comparing tools like sops-nix, agenix, and ragenix, with practical examples of using sops-nix for encrypted secrets management.
A guide on declaratively installing NixOS over the network using tools like nixos-anywhere, with an emphasis on managing configuration files under version control.
This article provides a satirical and annotated digest of talks from the 12th International Workshop on Plan 9, covering topics such as audio production, security, and toolchain updates.