&gt; they’re all tied to specific versions and you’d need a new package file to support a new version<p>I haven&#x27;t looked at Spack, but as a Nix user, it&#x27;s often the case that different versions of some software package require different packages in order to build them. For example, particularly on a less-used platform like darwin, I&#x27;ve  submitted numerous patches to the Nix package of MariaDB due to minor breakages in newer versions. It&#x27;s not always simple to parameterize the upstream version.<p>That said, there are many cases where it <i>is</i> that simple. Overriding a package in Nix to change the version is possible [1], but could be easier from a UX perspective.<p>&gt;  The user can install the version combination that you packaged, but can they easily try their own<p>As an example, I needed an older Ruby version that required an older libxml2 than available in nixpkgs. I did need to create my own Ruby package, but was able to simply override the version in the existing libxml2 package, and I configured nix to use that version across all other predefined nixpkgs that required libxml2 and were needed by my project. This meant a lot of compiling on my part (since nixpkgs of course can&#x27;t publish binaries for my customized builds), but it was fairly straightforward.<p>[1] <a href="http:&#x2F;&#x2F;nixos.org&#x2F;nixos&#x2F;manual&#x2F;index.html#sec-customising-packages" rel="nofollow">http:&#x2F;&#x2F;nixos.org&#x2F;nixos&#x2F;manual&#x2F;index.html#sec-customising-pac...</a>