BlogsShopifyNix for Developer Tooling

Nix for Developer Tooling

Nix for Developer Tooling

2
posts
2020

This feature thread tracks the development and enhancement of Shopify's use of Nix for developer tooling. Initial efforts focused on rebuilding developer tooling using Nix, including managing dependencies and creating a more consistent development environment. This post details the practical application of Nix for managing Ruby gems and exploring its potential for Node.js dependencies, as well as addressing challenges related to build workflows and dependency updates in a remote work environment. The post introduces the core concepts of Nix: the Nix Store, Derivations, Sandboxing, and the Nix Language, explaining how they work together to make software dependency graphs explicit and immutable.

2020

ShipIt! Presents: How Shopify Uses Nix - Shopify

5/29/2020

This post details Shopify's practical application of Nix for developer tooling, focusing on managing Ruby gem dependencies and exploring Node.js dependency management with tools like profpatsch/yarn2nix. It also addresses pain points with Nix's build-centric workflows and discusses strategies for pinning Nixpkgs versions. The post also touches on the challenges of large dependency downloads for remote workers and the potential for future CI/CD integration.

What Is Nix - Shopify

5/19/2020

This post serves as an introductory crash course to Nix for engineers unfamiliar with it. It explains the fundamental concepts of Nix: the Nix Store (as a graph database of immutable dependencies), Derivations (instructions for building store items), Sandboxing (ensuring reproducible builds), and the Nix Language. It uses examples like dependency graphs of Ruby and the structure of a derivation to illustrate these concepts, aiming to build a conceptual scaffolding for understanding Nix's value in managing software dependencies.