Ludovic Courtès <l...@gnu.org> writes: > David Thompson <dthomps...@worcester.edu> skribis: > >> Lately I've been wanting to version control the list of packages that I >> install in my user profile so that I can sync it amongst many machines. >> So, I took a stab at adding a new '--apply' option to 'guix package' >> that reads in a package list from a Scheme file and creates a new >> generation of the profile with only those packages are installed. >> Here's an example configuration: >> >> (use-modules (gnu)) >> (use-package-modules base less guile emacs admin ruby mail pumpio man) >> >> (list ruby >> coreutils >> less >> man-db >> notmuch >> guile-2.0 >> emacs >> dmd >> offlineimap >> pumpa) > > Yes, that sounds very useful. > > As usual though, there’s the issue of multiple-output packages. The > above snippet is nice, but doesn’t allow you to specify a particular > output of a package. > > What about instead requiring people to return a manifest: > > (use-modules (guix profiles)) > (use-package-modules base emacs guile) > > (manifest (cons (package->manifest-entry gcc-toolchain "debug") > (map package->entry > (list gcc-toolchain emacs guile-2.0)))) > > That means we’ll have to document (guix profiles). > > It’s more verbose than what you suggest, though. If you insist ;-), we > could allow a list of packages instead of a manifest, though I’d prefer > not to do that. > > WDYT? > +1 for return 'manifest', in a same way as 'operating-system'. And how about use specification instead of package, so I can:
(manifest (map package-specification->manifest-entry '("emacs" "font-adobe-source-han-sans:cn")))