&gt; What Nix&#x2F;Guix are not doing is reducing the burden of specification. You write down all the details of a very specific, reproducible software stack, but you do not make that software much more composable or extensible than it already was.<p>This is not so.  You do not have to write down <i>all</i> the details of the complete software stack as build systems can be abstracted away (e.g. `gnu-build-system` provides the GCC toolchain, binutils, make, etc).  Only immediate first-level dependencies are declared.<p>And in many cases you don&#x27;t have to do even that because you can generate package expressions from upstream information using `guix import`.  There are importers for CRAN, bioconductor, pypi, hackage, CPAN, and others.<p>&gt; The user can install the version combination that you packaged, but can they easily try their own? Can they easily try to build with a different compiler&#x2F;compiler version&#x2F;set of compiler flags&#x2F;dependency version&#x2F;etc.?<p>Yes!  We use Guix for multiple clusters at a research institute and of course users must be able to create package variants, with different configure flags or compiler versions.  This use-case is covered very well by Guix.