[Remote] Help Shopify rebuild our world in Nix

Hey, you may remember me from NixCon 2019 (I was the one standing between you and the free beer), or maybe from my recent Nixology series on YouTube, or maybe from Shopify ShipIt! a couple of weeks ago where I showed off our development tooling and talked about how we’re rebuilding it with Nix.

I’m looking to grow the team working on Nix stuff at Shopify. I want more people to help make Runix a reality (I talked about this in ShipIt!); finish rebuilding our development environments; bring Nix to CI and Production; then work on assimilating the rest of our universe.

We have thousands of R&D folks running Nix on their MacBook Pros already, and I want to make Nix the common substrate that our whole organization runs on. Interested in working with me? Email first dot last at shopify.com. (We’ve recently gone digital by default, so remote is most definitely on the table.)


Is there a description of what Runix is somewhere that doesn’t require watching an hour-long video? Searching right now suggests that github.com/Shopify/runix used to exist but it appears to not exist (or not be public) anymore. I also found https://home.thefixitguyz.com/runix/ which has a 2-sentence summary but it’s not clear what makes this different from lorri (and this again links to the missing github repo).

1 Like

Yeah. It was public for a while but I’ve taken it private for a bit to make hacking on it simpler until we know what shape it will take (soon, I hope!)

The basic idea is that it’s a Nix-module-based system for declaring a project in an abstract way, and from that, deriving development environments, container images, tool configurations, and so on.

In our org, we want to move toward fairly standardized project types with a lot of inferred defaults, but allow people to drill down and override bits (treating those divergences as opportunities to improve the defaults). Nix modules work really super well for this.

Here’s an example config for a project I’ve got a prototype branch on. The first couple of config lines would be sufficient for a perfectly standard project.