Skip to content

Instantly share code, notes, and snippets.

@nz
Last active June 18, 2020 15:44
Show Gist options
  • Save nz/d3e91730c0e5dcdc7d1c3934f9d0f9b3 to your computer and use it in GitHub Desktop.
Save nz/d3e91730c0e5dcdc7d1c3934f9d0f9b3 to your computer and use it in GitHub Desktop.

I really want to love Nix!

The concepts and the architecture are compelling. It resonates strongly with so much of my own values, based on now 20 years of programming experience, and a solid decade of large-scale operational engineering. (I manage large fleets of Solr and Elasticsearch search engines.)

The small amount of play with Nix, and the medium amount of reading I've done are encouraging. I can get some packages installed. I can start a toy nix-shell with some language or other present. I can read a Nix derivation and pretty much follow along with what's happening, although I am far from fluent with writing the Nix language.

But right now I'm hitting a wall when it comes to a more complex real-world use case.

  1. Create a pure and isolated development environment for a Rails app, using Postgres.
  2. Create a pure and isolated development simple Crystal app.

In this sense, I'm looking to use Nix as an alternative to my current amalgamation of Homebrew and language specific version managers (ruby-install, rbenv, nvm, et al).

Many of my errors are related to build time problems. Several seem related to the interactions of Nix, bundix, and rubygems. A few seem to be broken packages that I can't figure out how to reconcile between apparent fixes in unstable and whatever my system wants to build.

Help me out?

I'm looking for a Nix coach, and occasional engineering assistant.

These are business projects for me, rather than merely a hobby, and I will happily budget some meaningful number of dollars. This is not several weeks of major full-time effort. But I certainly want to make it worth a professional's (or advanced enthusiast's) time and whatever interruptions I'd be imposing.

And while I'd expect to learn some troubleshooting skills, and become self-sufficient, my time is also relatively fragmented. So I'll also be prepared to hand off some classes of rabbit-hole problems that need a little more focused attention than I might have in the moment.

When working with software engineers, I generally expect to pay a range from $80/hr to $150+/hr depending on their level of experience. I would expect someone with Nix experience who's comfortable consulting to lean toward the higher end of that range.

I'm really hoping that, for the right person, all of my problems are, in fact, really easy for you to solve.

My time zone is US Central (UTC-5). I'm plenty comfortable with asynchronous collaboration, but I think some synchronous remote-pair-programming style work is necessary here.

Goals and outcomes

One thing I'm not finding is a really solid how-to guide for running a relatively fresh Rails app using Nix on macOS. Maybe someone can save me a whole engagement here if you know of one. But if that truly does not exist, I would love to give back to the community here by helping to write that guide.

For my own work purposes, I'm wanting to explore and validate whether Nix is a plausible tool for managing unified and cohesive development environments for my team's projects. I've seen some of the work coming out of Shopify toward that end, so I know it's a plausible direction, but I'm interested in evaluating the cost and complexity relative to how we're managing our projects now.

So, toward that end, I'm aspiring to reach the skill level where I can personally walk someone through the bootstrapping of a Rails project using Nix. Preferably through documentation, which will also leave the reader with a few basic skills to manage and upgrade dependencies, and troubleshoot common build problems.

And if all of that goes well, I'll be further evaluating Nix for a place in our production packaging and deployment architecture.

Let's connect

If you think this sounds like an interesting way to spend a few hours over the next few weeks, then let's connect!

Nick Zadrozny <[email protected]>

Send me:

  • Your preferred hourly rate.
  • A retainer amount that would be meaningful for you.
  • Any links to articles or docs that you think would be useful to me given what you have deduced of my experience level from this post, or that you otherwise consider baseline prerequisite knowledge to ensure our time is productive.
  • Your general scheduling preferences and availability for synchronous time.
  • Whatever else you think is useful by way of an introduction!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment