Hi Konrad, On Tue, Oct 06, 2015 at 12:50:52PM +0200, Konrad Hinsen wrote: > Hi everyone, > > I am exploring the use of Guix for reproducible environments in scientific > computing. My goals are very similar to those described in the paper > "Reproducible and User-Controlled Software Environments in HPC with Guix". > > Section 4.1 of that paper says that a given environment, defined by a Guix > profile, can be reproduced given (1) a manifest and (2) the Guix commit > defining all the packages. > > Problem #1: After reading the manual twice, I still don't see how I can tell > "guix package" to use a given Guix commit.
At this point (correct me if I am wrong), the route to take is to checkout a commit of the Guix source tree (with packages). The SHA value is captured on Hydra in the build itself. That is the only way to fully reproduce GUIX as a point in time. And use guix package using that tree. See the revision of this package: http://hydra.gnu.org/build/694326#tabs-buildinputs There is a similar discussion on the NIX mailing list about this right now. > Problem #2: What if my profile contains packages from several Guix commits > (typically for getting specific older versions)? Or if it contains packages > defined outside of the Guix distribution, in Guile modules on > GUIX_PACKAGE_PATH? You'd have to create a new profile that is tied to above build to be fully reprocible. Managing multiple profiles is pretty straightforward (using the -p switch). I use a compile profile for guix, for example, containing gcc etc. > If my understanding of Guix is correct, all the required information for > rebuilding everything identically is available at a lower level, in the > derivation files. Would it be feasible to collect all the derivation files > underlying a profile in a tar archive, and then have them rebuilt and added > to a fresh profile in an automatized way? I don't think we need that functionality when you accept that a git source tree of GUIX contains all the information you need. Maybe others have ideas to make use a bit more convenient for end-users without git - but the current setup works for me to recreate software packages. Note that you can also tar ball a binary package with all its dependencies (using guix archive) and distribute that. That is reproducible at the binary level. That may be more useful for end-users. Pj. --
