Hacker News new | ask | show | jobs
by netcoyote 932 days ago
Nix has been a mixed blessing.

For background our product is an online game and related services (social, persistence, auth, analytics, etc.) written primarily in C# (some JavaScript and Python), running inside Ubuntu docker containers, using the Hashicorp stack (Nomad, Fabio, Vault, Console, Boundary, Terraform). Our services run on multiple cloud providers. As you might imagine, we have a complex environment with a lot of services. We wrote a lot of scripts & tools to automate builds & deployment, and create per-project environments using direnv+Nix.

On the plus side our local development machines behave identically to dev/staging/test/prod branches in the cloud. We've not had any issues where our apps and deployment work correctly on one computer but not on others because everyone uses the same version of software packages. We're able to run partial sets of applications all the way up to the full set of services locally, which helps when debugging complex transaction chains.

On the downside, only one person really knows Nix well, and -- so far -- we've been entirely dependent upon him to make Nix work and perform version upgrades. Occasionally it's necessary to solve dependency problems when some application doesn't work properly, like where a project used Python3 + AWS CLI v2 and just wouldn't build.

I've looked into making changes a couple of times, but the amount of lore that's required is so frustratingly large! I've got a lot of experience solving hard problems in development & operations, and I want to cry every time I start in on it to fix some esoteric bug.

You'll want at several experienced Nix folks on staff; it's not for the fainthearted.