Loading…
Nix
2 posts about Nix. Every summary links to the original.
Shopify ·
ShipIt! Presents: How Shopify Uses Nix
At a May 25, 2020 ShipIt! event, Shopify presented how it uses Nix to rebuild developer tooling and demonstrate the tools used day to day. The follow-up answers questions about runix and lorri interoperability, CI/CD, Ketos, remote-work download costs, dependency management, and pinned nixpkgs revisions. Shopify says its tooling is optimized for build workflows rather than development, so it spent substantial effort adapting bundleEnv/bundleApp to its preferred workflow and hopes to upstream the solution. Nix is not yet used for CI/CD; gems prompted the initial Nix work, while Node modules are not yet managed with Nix, and a project-specific nixpkgs revision is enforced whenever dev up runs.
2023-10-18Shopify ·
What Is Nix
Nix is presented as a way to make software’s usually implicit dependency graph explicit, motivated by the difficulty of quickly conveying its concepts and by Shopify’s ongoing use of it to rebuild developer tooling. Its core model has four building blocks: the immutable Nix Store, derivations, sandboxing, and the Nix language. The Store acts as a graph database whose nodes are immutable files or directories, while path hashes and embedded references represent dependencies and support transitive-closure queries. Derivations record build instructions and explicitly named inputs; the Nix language evaluates these descriptions and has essentially one side effect, creating derivation files, leaving other tools to build outputs. Nixpkgs is described as a lazily evaluated Nix program containing many derivations, and the article concludes with introductory resources and a discussion of Shopify’s use of Nix.
2023-10-18