summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am1
-rw-r--r--NEWS115
-rw-r--r--THANKS1
-rw-r--r--build-aux/hydra/demo-os.scm14
-rw-r--r--configure.ac4
-rw-r--r--daemon.am2
-rw-r--r--doc.am11
-rw-r--r--doc/guix.texi191
-rw-r--r--gnu-system.am2
-rw-r--r--gnu/packages.scm66
-rw-r--r--gnu/packages/admin.scm65
-rw-r--r--gnu/packages/algebra.scm4
-rw-r--r--gnu/packages/boost.scm68
-rw-r--r--gnu/packages/cdrom.scm19
-rw-r--r--gnu/packages/gcc.scm4
-rw-r--r--gnu/packages/gimp.scm1
-rw-r--r--gnu/packages/gnome.scm3
-rw-r--r--gnu/packages/libftdi.scm48
-rw-r--r--gnu/packages/linux.scm13
-rw-r--r--gnu/packages/mail.scm1
-rw-r--r--gnu/packages/nano.scm4
-rw-r--r--gnu/packages/package-management.scm16
-rw-r--r--gnu/packages/parallel.scm4
-rw-r--r--gnu/packages/patches/module-init-tools-moduledir.patch42
-rw-r--r--gnu/packages/texlive.scm5
-rw-r--r--gnu/packages/video.scm1
-rw-r--r--gnu/services/avahi.scm3
-rw-r--r--gnu/services/base.scm35
-rw-r--r--gnu/services/dbus.scm3
-rw-r--r--gnu/services/dmd.scm1
-rw-r--r--gnu/services/networking.scm3
-rw-r--r--gnu/services/xorg.scm20
-rw-r--r--gnu/system.scm9
-rw-r--r--gnu/system/file-systems.scm60
-rw-r--r--gnu/system/install.scm106
-rw-r--r--gnu/system/os-config.tmpl31
-rw-r--r--gnu/system/shadow.scm44
-rw-r--r--guix/build-system/gnu.scm3
-rw-r--r--guix/build/activation.scm9
-rw-r--r--guix/build/linux-initrd.scm40
-rw-r--r--guix/monads.scm13
-rw-r--r--guix/packages.scm14
-rw-r--r--guix/profiles.scm132
-rw-r--r--guix/scripts/package.scm138
-rw-r--r--guix/scripts/refresh.scm86
-rw-r--r--guix/scripts/system.scm45
-rw-r--r--guix/ui.scm14
-rw-r--r--guix/utils.scm33
-rw-r--r--po/guix/LINGUAS1
-rw-r--r--po/guix/de.po107
-rw-r--r--po/guix/eo.po109
-rw-r--r--po/guix/hu.po1277
-rw-r--r--po/guix/pt_BR.po278
-rw-r--r--po/guix/sr.po475
-rw-r--r--po/guix/vi.po107
-rw-r--r--po/packages/de.po2
-rw-r--r--po/packages/eo.po2
-rw-r--r--po/packages/pt_BR.po2
-rw-r--r--po/packages/sr.po2
-rw-r--r--po/packages/vi.po2
-rw-r--r--tests/gexp.scm2
-rw-r--r--tests/guix-package.sh23
-rw-r--r--tests/guix-register.sh2
-rw-r--r--tests/monads.scm10
-rw-r--r--tests/profiles.scm31
-rw-r--r--tests/utils.scm35
66 files changed, 3150 insertions, 864 deletions
diff --git a/Makefile.am b/Makefile.am
index 41e0e67120..ed11bcc7ac 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -253,6 +253,7 @@ guix_install_go_files = install-nobase_nodist_guilemoduleDATA
 $(guix_install_go_files): install-nobase_dist_guilemoduleDATA
 
 SUBDIRS = po/guix po/packages
+BUILT_SOURCES =
 
 include doc.am
 
diff --git a/NEWS b/NEWS
index 2001ec12fe..76a06a7573 100644
--- a/NEWS
+++ b/NEWS
@@ -10,6 +10,121 @@ Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 
 Please send Guix bug reports to bug-guix@gnu.org.
 
+* Changes in 0.7 (since 0.6)
+** Package management
+*** Binaries for mips64el-linux now available from hydra.gnu.org
+
+These come in addition to the x86_64-linux and i686-linux binaries already
+provided, thanks to our generous donor and friendly admins.  See
+“Substitutes” in the manual.
+
+*** ‘guix package’ has a new ‘--show’ option
+*** ‘guix refresh’ has a new ‘--list-dependent’ option
+
+** Programming interfaces
+*** New (guix gexp) module, which implements “G-expressions”
+
+G-expressions are a new mechanism to embed build-side code in host-side
+code.  See “G-Expressions” in the manual.
+
+*** (gnu system) and related modules now use G-expressions
+
+This greatly simplifies code, and guarantees that build code carries
+references to the packages or derivations it uses.
+
+*** ‘build-expression->derivation’ is deprecated in favor of G-expressions
+*** The (gnu system) module has been largely augmented and factorized
+*** New (guix build vm) module, support for virtual machine images
+*** New (guix build activation) module, for “system activation”
+*** New (guix build syscalls) module
+*** New (guix build install) and module for whole system installation
+*** New (gnu system install) module, for the installation system
+*** New (gnu system file-systems) module, for ‘file-system’ declarations
+*** New (gnu) module, which aggregates common (gnu …) modules
+*** ‘service’ records now have an optional ‘activate’ field
+
+This allows services to specify code to run at system activation time.
+
+** GNU distribution
+*** An image to install the GNU system from a USB stick is provided
+
+This is the first time an installation image is provided.  See “System
+Installation” in the manual for details.  This is work in progress as noted
+in “Limitations”.  Your feedback and help are welcome!
+
+*** Support for more parameters in ‘operating-system’ declarations
+
+Operating system declarations can now provide a list of file systems, a list
+of setuid programs, bootloader options, and more.  See “System Configuration”
+in the manual.
+
+*** ‘guix system’ supports more actions
+
+Newly supported actions are ‘init’, ‘build’, ‘reconfigure’, and ‘disk-image’.
+See “Invoking guix system” in the manual.
+
+*** User accounts and groups are created at system activation time
+*** Virtual machine support uses para-virtualized devices
+*** GCC package now has an additional ‘lib’ output, for run-time support libs
+*** GLib package now has a separate “bin” output (<http://bugs.gnu.org/17853>)
+*** 134 new packages
+
+abbaye, aegis, attica, babl, barcode, behave, btar, busybox, ccache, ccrtp,
+chess, clucene, cmatrix, commoncpp, conkeror, cook, cssc, datamash, diffstat,
+doxygen, dropbear, dtach, duplicity, e2fsck-static, exosip, fftw-openmpi,
+fish, gconf, gegl, gimp, gmsh, gnome-mime-data, gnome-vfs, gnumeric, goffice,
+gsegrafix, guile-opengl, guile-static-stripped, hdup, hwloc, inotify-tools,
+jrnl, kbd, kmod, lftp, libarchive, libart-lgpl, libbonobo, libbonoboui,
+libcroco, libdbusmenu-qt, libftdi, libglade, libgnome, libgnomecanvas,
+libgnomeprint, libgnomeprintui, libgnomeui, libgsf, libidl, libmcrypt,
+libmhash, librsvg, librsync, libsodium, libuv, libvpx, links, lzop, man-pages,
+maxima, mcrypt, mosh, mpg123, mplayer, mu, ncmpcpp, node, notmuch, numactl,
+offlineimap, openmpi, orbit2, osip, pangox-compat, perl-io-tty, petsc,
+petsc-complex, petsc-complex-openmpi, petsc-openmpi, pingus, podofo, protobuf,
+pt-scotch, python-enum34, python-keyring, python-lockfile, python-mock,
+python-parse, python-parse-type, python-parsedatetime, python-pycrypto,
+python-six, python-tzlocal, python2-lockfile, python2-mock, qjson, qrencode,
+rasqal, rdiff-backup, rdup, redland, rottlog, scotch, sipwitch, sshfs-fuse,
+strigi, sudo, superlu, superlu-dist, talkfilters, talloc, tcpdump, tinyproxy,
+transmission, ucommon, udev, vlc, vtk, wakelan, wireless-tools,
+wpa-supplicant, xboard, youtube-dl
+
+*** 87 package updates
+
+bitlbee-3.2.2, cursynth-1.5, ddrescue-1.18.1, dfc-3.0.4, dmd-0.2,
+docbook-xml-4.3, docbook-xml-4.4, docbook-xsl-1.78.1, dvdisaster-0.72.6,
+ffmpeg-2.3, fftw-3.3.4, fftwf-3.3.4, flac-1.3.0, gawk-4.1.1, gcc-4.7.4,
+gcc-4.8.3, gcc-4.8.3, gcc-4.9.1, gcc-cross-mips64el-linux-gnuabi64-4.8.3,
+gcc-objc++-4.8.3, gcc-objc-4.8.3, gcc-stripped-tarball-4.8.3,
+gcc-toolchain-4.8.3, gcc-toolchain-4.9.1, gccgo-4.8.3, gdb-7.7.1,
+gettext-0.19.2, gfortran-4.8.3, glib-2.40.0, global-6.3, gmp-6.0.0a,
+gnupg-1.4.18, gnupg-2.0.25, gnutls-3.2.15, gp2c-0.0.9pl1, grep-2.20,
+gst-plugins-base-1.0.10, gstreamer-0.10.36, gtk+-3.10.1, gtkmm-2.24.2,
+guile-2.0.11, guile-2.0.11, guix-0.6, guix-0.6.0ae8c15, htop-1.0.3,
+icu4c-53.1, imagemagick-6.8.9-0, json-c-0.12, libdrm-2.4.33, libgc-7.2e,
+libgcrypt-1.5.3, libgpg-error-1.13, libjpeg-8d, libmicrohttpd-0.9.37,
+libogg-1.3.2, libotr-4.0.0, libtasn1-3.6, libvorbis-1.3.4, lightning-2.0.4,
+linux-libre-3.15.6, lua-5.1.5, lua-5.2.3, mcron-1.0.8, moe-1.6, nano-2.3.6,
+neon-0.29.6, nettle-3.0, openssl-1.0.1h, parallel-20140722, pari-gp-2.7.1,
+pspp-0.8.3, python-2.7.6, python-dateutil-2.2, python2-dateutil-2.2,
+qemu-2.0.0, qemu-headless-2.0.0, qt-4.8.6, qt-5.2.1, readline-6.2,
+screen-4.2.1, soprano-2.9.4, texinfo-5.2, texlive-2014, tor-0.2.4.22,
+wdiff-1.2.2, xorriso-1.3.8, xterm-304
+
+** Native language support
+*** New translations: de (German), and hu (Hungarian)
+*** Updated translations: eo, pt_BR, sr, vi
+*** Package descriptions moved from the ‘guix’ text domain to ‘guix-packages’
+** Bugs fixed
+*** Downloads are now faster (<http://bugs.gnu.org/15368>)
+*** ‘guix authenticate’ properly writes signatures to stdout
+    (<http://bugs.gnu.org/17312>)
+*** Progress report of downloads is now properly displayed
+*** Error reporting of pk-crypto errors has been improved
+*** The 'patches' field now works for origins with no extension
+*** Synchronization and GC issues fixed in the offload hook
+*** (guix ftp-client) emits USER commands suitable for all servers
+
 * Changes in 0.6 (since 0.5)
 ** Package management
 *** Default store directory changed to /gnu/store
diff --git a/THANKS b/THANKS
index cb3c32c2ac..4070eea3d1 100644
--- a/THANKS
+++ b/THANKS
@@ -23,6 +23,7 @@ infrastructure help:
 	  Matthew Lien <bluet@bluet.org>
 	    Niels Möller <nisse@lysator.liu.se>
 	   Yutaka Niibe <gniibe@fsij.org>
+             Adam Pribyl <pribyl@lowlevel.cz>
 	   Cyrill Schenkel <cyrill.schenkel@gmail.com>
 	    Benno Schulenberg <coordinator@translationproject.org>
 	    Jason Self <jself@gnu.org>
diff --git a/build-aux/hydra/demo-os.scm b/build-aux/hydra/demo-os.scm
index 89b67aabe3..9164500d70 100644
--- a/build-aux/hydra/demo-os.scm
+++ b/build-aux/hydra/demo-os.scm
@@ -44,13 +44,13 @@
  (file-systems
   ;; We provide a dummy file system for /, but that's OK because the VM build
   ;; code will automatically declare the / file system for us.
-  (list (file-system
-          (mount-point "/")
-          (device "dummy")
-          (type "dummy"))
-        ;; %fuse-control-file-system   ; needs fuse.ko
-        ;; %binary-format-file-system  ; needs binfmt.ko
-        ))
+  (cons* (file-system
+           (mount-point "/")
+           (device "dummy")
+           (type "dummy"))
+         ;; %fuse-control-file-system   ; needs fuse.ko
+         ;; %binary-format-file-system  ; needs binfmt.ko
+         %base-file-systems))
 
  (users (list (user-account
                (name "guest")
diff --git a/configure.ac b/configure.ac
index eb038db253..71b3ddacaa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
 # Process this file with autoconf to produce a configure script.
 
 AC_PREREQ(2.68)
-AC_INIT([GNU Guix], [0.7], [bug-guix@gnu.org], [guix],
+AC_INIT([GNU Guix], [0.8], [bug-guix@gnu.org], [guix],
   [http://www.gnu.org/software/guix/])
 AC_CONFIG_AUX_DIR([build-aux])
 
@@ -16,7 +16,7 @@ dnl For the C++ code.  This must be used early.
 AC_USE_SYSTEM_EXTENSIONS
 
 AM_GNU_GETTEXT([external])
-AM_GNU_GETTEXT_VERSION([0.18.3])
+AM_GNU_GETTEXT_VERSION([0.18.1])
 
 guilemoduledir="${datarootdir}/guile/site/2.0"
 AC_SUBST([guilemoduledir])
diff --git a/daemon.am b/daemon.am
index b0a6d48873..fb662b1b14 100644
--- a/daemon.am
+++ b/daemon.am
@@ -20,7 +20,7 @@
 # Integration of the `guix-daemon' code taken from upstream Nix.
 #
 
-BUILT_SOURCES = nix/libstore/schema.sql.hh
+BUILT_SOURCES += nix/libstore/schema.sql.hh
 CLEANFILES += $(BUILT_SOURCES)
 
 noinst_LIBRARIES = libformat.a libutil.a libstore.a
diff --git a/doc.am b/doc.am
index 6cbc35a8cc..67cd739fae 100644
--- a/doc.am
+++ b/doc.am
@@ -1,5 +1,5 @@
 # GNU Guix --- Functional package management for GNU
-# Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 # Copyright © 2013 Andreas Enge <andreas@enge.fr>
 #
 # This file is part of GNU Guix.
@@ -24,6 +24,15 @@ EXTRA_DIST +=					\
   doc/images/bootstrap-graph.eps		\
   doc/images/bootstrap-graph.pdf
 
+# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
+BUILT_SOURCES        += doc/os-config.texi
+EXTRA_DIST           += doc/os-config.texi
+MAINTAINERCLEANFILES  = doc/os-config.texi
+
+doc/os-config.texi: gnu/system/os-config.tmpl
+	$(MKDIR_P) "`dirname "$@"`"
+	cp "$<" "$@"
+
 infoimagedir = $(infodir)/images
 dist_infoimage_DATA = doc/images/bootstrap-graph.png
 
diff --git a/doc/guix.texi b/doc/guix.texi
index 5bee540460..b0f4e1ad81 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -29,6 +29,8 @@ Documentation License''.
                       Managing packages with Guix.
 * guix build: (guix)Invoking guix build
                       Building packages with Guix.
+* guix system: (guix)Invoking guix system
+                      Managing the operating system configuration.
 @end direntry
 
 @titlepage
@@ -67,7 +69,7 @@ package management tool written for the GNU system.
 * Acknowledgments::             Thanks!
 * GNU Free Documentation License::  The license of this manual.
 * Concept Index::               Concepts.
-* Function Index::              Functions.
+* Programming Index::           Data types, functions, and variables.
 @end menu
 
 @c *********************************************************************
@@ -129,7 +131,7 @@ ready to use it.
 Note that this section is concerned with the installation of the package
 manager, which can be done on top of a running GNU/Linux system.  If,
 instead, you want to install the complete GNU operating system,
-@ref{System Installation}.
+@pxref{System Installation}.
 
 The build procedure for Guix is the same as for other GNU software, and
 is not covered here.  Please see the files @file{README} and
@@ -844,6 +846,30 @@ name: gmp
 @dots{}
 @end example
 
+@item --show=@var{package}
+Show details about @var{package}, taken from the list of available packages, in
+@code{recutils} format (@pxref{Top, GNU recutils databases,, recutils, GNU
+recutils manual}).
+
+@example
+$ guix package --show=python | recsel -p name,version
+name: python
+version: 2.7.6
+
+name: python
+version: 3.3.5
+@end example
+
+You may also specify the full name of a package to only get details about a
+specific version of it:
+@example
+$ guix package --show=python-3.3.5 | recsel -p name,version
+name: python
+version: 3.3.5
+@end example
+
+
+
 @item --list-installed[=@var{regexp}]
 @itemx -I [@var{regexp}]
 List the currently installed packages in the specified profile, with the
@@ -1792,7 +1818,7 @@ As can be guessed, this primitive is cumbersome to use directly.  A
 better approach is to write build scripts in Scheme, of course!  The
 best course of action for that is to write the build code as a
 ``G-expression'', and to pass it to @code{gexp->derivation}.  For more
-information, @ref{G-Expressions}.
+information, @pxref{G-Expressions}.
 
 Once upon a time, @code{gexp->derivation} did not exist and constructing
 derivations with build code written in Scheme was achieved with
@@ -1988,6 +2014,29 @@ will references @var{coreutils}, @var{grep}, and @var{sed}, thereby
 preventing them from being garbage-collected during its lifetime.
 @end deffn
 
+@deffn {Monadic Procedure} interned-file @var{file} [@var{name}] @
+         [#:recursive? #t]
+Return the name of @var{file} once interned in the store.  Use
+@var{name} as its store name, or the basename of @var{file} if
+@var{name} is omitted.
+
+When @var{recursive?} is true, the contents of @var{file} are added
+recursively; if @var{file} designates a flat file and @var{recursive?}
+is true, its contents are added, and its permission bits are kept.
+
+The example below adds a file to the store, under two different names:
+
+@example
+(run-with-store (open-connection)
+  (mlet %store-monad ((a (interned-file "README"))
+                      (b (interned-file "README" "LEGU-MIN")))
+    (return (list a b))))
+
+@result{} ("/gnu/store/rwm@dots{}-README" "/gnu/store/44i@dots{}-LEGU-MIN")
+@end example
+
+@end deffn
+
 @deffn {Monadic Procedure} package-file @var{package} [@var{file}] @
        [#:system (%current-system)] [#:output "out"] Return as a monadic
 value in the absolute file name of @var{file} within the @var{output}
@@ -2545,6 +2594,33 @@ The command above specifically updates the @code{emacs} and
 @code{idutils} packages.  The @code{--select} option would have no
 effect in this case.
 
+When considering whether to upgrade a package, it is sometimes
+convenient to know which packages would be affected by the upgrade and
+should be checked for compatibility.  For this the following option may
+be used when passing @command{guix refresh} one or more package names:
+
+@table @code
+
+@item --list-dependent
+@itemx -l
+List top-level dependent packages that would need to be rebuilt as a
+result of upgrading one or more packages.
+
+@end table
+
+Be aware that the @code{--list-dependent} option only
+@emph{approximates} the rebuilds that would be required as a result of
+an upgrade.  More rebuilds might be required under some circumstances.
+
+@example
+$ guix refresh --list-dependent flex
+Building the following 120 packages would ensure 213 dependent packages are rebuilt:
+hop-2.4.0 geiser-0.4 notmuch-0.18 mu-0.9.9.5 cflow-1.4 idutils-4.6 @dots{}
+@end example
+
+The command above lists a set of packages that could be built to check
+for compatibility with an upgraded @code{flex} package.
+
 The following options can be used to customize GnuPG operation:
 
 @table @code
@@ -2620,14 +2696,14 @@ to join!  @ref{Contributing}, for information about how you can help.
 
 This section explains how to install the complete GNU operating system
 on a machine.  The Guix package manager can also be installed on top of
-a running GNU/Linux system, @ref{Installation}.
+a running GNU/Linux system, @pxref{Installation}.
 
 @ifinfo
 @c This paragraph is for people reading this from tty2 of the
 @c installation image.
 You're reading this documentation with an Info reader.  For details on
 how to use it, hit the @key{RET} key (``return'' or ``enter'') on the
-link that follows: @ref{Help,,, info, Info: An Introduction}.  Hit
+link that follows: @pxref{Help,,, info, Info: An Introduction}.  Hit
 @kbd{l} afterwards to come back here.
 @end ifinfo
 
@@ -2658,7 +2734,7 @@ GNOME and KDE.
 
 @item
 Support for encrypted disks, the Logical Volume Manager (LVM), and swap
-devices are missing.
+devices is missing.
 
 @item
 Few system services are currently supported out-of-the-box
@@ -2707,7 +2783,7 @@ its device name.  Assuming that USB stick is known as @file{/dev/sdX},
 copy the image with:
 
 @example
-dd if=gnu-usb-install-20140629.x86_64 of=/dev/sdX
+dd if=gnu-usb-install-@value{VERSION}.x86_64 of=/dev/sdX
 @end example
 
 Access to @file{/dev/sdX} usually requires root privileges.
@@ -2744,13 +2820,27 @@ image does not contain all the software and tools that may be needed.
 Unless this has already been done, you must partition and format the
 target partitions.
 
+Preferably, assign partitions a label so that you can easily and
+reliably refer to them in @code{file-system} declarations (@pxref{File
+Systems}).  This is typically done using the @code{-L} option of
+@command{mkfs.ext4} and related commands.
+
 The installation image includes Parted (@pxref{Overview,,, parted, GNU
 Parted User Manual}), @command{fdisk}, and e2fsprogs, the suite of tools
 to manipulate ext2/ext3/ext4 file systems.
 
+@item
+Once that is done, mount the target root partition under @file{/mnt}.
+
+@item
+Lastly, run @code{deco start cow-store /mnt}.
+
+This will make @file{/gnu/store} copy-on-write, such that packages added
+to it during the installation phase will be written to the target disk
+rather than kept in memory.
+
 @end enumerate
 
-Once that is done, mount the target root partition under @file{/mnt}.
 
 @subsection Proceeding with the Installation
 
@@ -2762,28 +2852,16 @@ It is better to store that file on the target root file system, say, as
 @file{/mnt/etc/config.scm}.
 
 A minimal operating system configuration, with just the bare minimum and
-only a root account would look like this:
+only a root account would look like this (on the installation system,
+this example is available as @file{/etc/configuration-template.scm}):
 
 @example
-(use-modules (gnu))
-
-(operating-system
-  (host-name "foo")
-  (timezone "Europe/Paris")
-  (locale "en_US.UTF-8")
-
-  ;; Assuming /dev/sdX is the target hard disk, and /dev/sdX1 the
-  ;; target root file system.
-  (bootloader (grub-configuration (device "/dev/sdX")))
-  (file-systems (list (file-system
-                        (device "/dev/sdX1")
-                        (mount-point "/")
-                        (type "ext4")))))
+@include os-config.texi
 @end example
 
 @noindent
 For more information on @code{operating-system} declarations,
-@xref{Using the Configuration System}.
+@pxref{Using the Configuration System}.
 
 Once that is done, the new system must be initialized (remember that the
 target root file system is mounted under @file{/mnt}):
@@ -2795,7 +2873,7 @@ guix system init /mnt/etc/config.scm /mnt
 @noindent
 This will copy all the necessary files, and install GRUB on
 @file{/dev/sdX}, unless you pass the @option{--no-grub} option.  For
-more information, @xref{Invoking guix system}.  This command may trigger
+more information, @pxref{Invoking guix system}.  This command may trigger
 downloads or builds of missing packages, which can take some time.
 
 Once that command has completed---and hopefully succeeded!---you can
@@ -2874,10 +2952,11 @@ kernel, initial RAM disk, and boot loader looks like this:
   (locale "fr_FR.UTF-8")
   (bootloader (grub-configuration
                 (device "/dev/sda")))
-  (file-systems (list (file-system
+  (file-systems (cons (file-system
                         (device "/dev/sda1") ; or partition label
                         (mount-point "/")
-                        (type "ext3"))))
+                        (type "ext3"))
+                      %base-file-systems))
   (users (list (user-account
                 (name "alice")
                 (password "")
@@ -2986,7 +3065,9 @@ partitions without having to hard-code their actual device name.
 
 @item @code{flags} (default: @code{'()})
 This is a list of symbols denoting mount flags.  Recognized flags
-include @code{read-only} and @code{bind-mount}.
+include @code{read-only}, @code{bind-mount}, @code{no-dev} (disallow
+access to special files), @code{no-suid} (ignore setuid and setgid
+bits), and @code{no-exec} (disallow program execution.)
 
 @item @code{options} (default: @code{#f})
 This is either @code{#f}, or a string denoting mount options.
@@ -3001,9 +3082,52 @@ instance, for the root file system.
 This Boolean indicates whether the file system needs to be checked for
 errors before being mounted.
 
+@item @code{create-mount-point?} (default: @code{#f})
+When true, the mount point is created if it does not exist yet.
+
 @end table
 @end deftp
 
+The @code{(gnu system file-systems)} exports the following useful
+variables.
+
+@defvr {Scheme Variable} %base-file-systems
+These are essential file systems that are required on normal systems,
+such as @var{%devtmpfs-file-system} (see below.)  Operating system
+declarations should always contain at least these.
+@end defvr
+
+@defvr {Scheme Variable} %devtmpfs-file-system
+The @code{devtmpfs} file system to be mounted on @file{/dev}.  This is a
+requirement for udev (@pxref{Base Services, @code{udev-service}}).
+@end defvr
+
+@defvr {Scheme Variable} %pseudo-terminal-file-system
+This is the file system to be mounted as @file{/dev/pts}.  It supports
+@dfn{pseudo-terminals} created @i{via} @code{openpty} and similar
+functions (@pxref{Pseudo-Terminals,,, libc, The GNU C Library Reference
+Manual}).  Pseudo-terminals are used by terminal emulators such as
+@command{xterm}.
+@end defvr
+
+@defvr {Scheme Variable} %shared-memory-file-system
+This file system is mounted as @file{/dev/shm} and is used to support
+memory sharing across processes (@pxref{Memory-mapped I/O,
+@code{shm_open},, libc, The GNU C Library Reference Manual}).
+@end defvr
+
+@defvr {Scheme Variable} %binary-format-file-system
+The @code{binfmt_misc} file system, which allows handling of arbitrary
+executable file types to be delegated to user space.  This requires the
+@code{binfmt.ko} kernel module to be loaded.
+@end defvr
+
+@defvr {Scheme Variable} %fuse-control-file-system
+The @code{fusectl} file system, which allows unprivileged users to mount
+and unmount user-space FUSE file systems.  This requires the
+@code{fuse.ko} kernel module to be loaded.
+@end defvr
+
 @node User Accounts
 @subsection User Accounts
 
@@ -3077,6 +3201,10 @@ The group's name.
 The group identifier (a number).  If @code{#f}, a new number is
 automatically allocated when the group is created.
 
+@item @code{system?} (default: @code{#f})
+This Boolean value indicates whether the group is a ``system'' group.
+System groups have low numerical IDs.
+
 @item @code{password} (default: @code{#f})
 What, user groups can have a password?  Well, apparently yes.  Unless
 @code{#f}, this field specifies the group's password.
@@ -3194,6 +3322,7 @@ passed to @command{guix-daemon}.
 Run @var{udev}, which populates the @file{/dev} directory dynamically.
 @end deffn
 
+
 @node Networking Services
 @subsubsection Networking Services
 
@@ -4040,8 +4169,10 @@ an inspiration for Guix.
 @unnumbered Concept Index
 @printindex cp
 
-@node Function Index
-@unnumbered Function Index
+@node Programming Index
+@unnumbered Programming Index
+@syncodeindex tp fn
+@syncodeindex vr fn
 @printindex fn
 
 @bye
diff --git a/gnu-system.am b/gnu-system.am
index 0423d1400c..6e1e8afec0 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -139,6 +139,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/libdaemon.scm			\
   gnu/packages/libevent.scm			\
   gnu/packages/libffi.scm			\
+  gnu/packages/libftdi.scm			\
   gnu/packages/libidn.scm			\
   gnu/packages/libphidget.scm			\
   gnu/packages/libsigsegv.scm			\
@@ -267,6 +268,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/system/file-systems.scm			\
   gnu/system/grub.scm				\
   gnu/system/install.scm			\
+  gnu/system/os-config.tmpl			\
   gnu/system/linux.scm				\
   gnu/system/linux-initrd.scm			\
   gnu/system/shadow.scm				\
diff --git a/gnu/packages.scm b/gnu/packages.scm
index 8365a00051..77d9d3ee82 100644
--- a/gnu/packages.scm
+++ b/gnu/packages.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -31,10 +32,16 @@
             search-bootstrap-binary
             %patch-directory
             %bootstrap-binaries-path
+
             fold-packages
+
             find-packages-by-name
             find-best-packages-by-name
-            find-newest-available-packages))
+            find-newest-available-packages
+
+            package-direct-dependents
+            package-transitive-dependents
+            package-covering-dependents))
 
 ;;; Commentary:
 ;;;
@@ -182,3 +189,60 @@ VERSION."
       (match (vhash-assoc name (find-newest-available-packages))
         ((_ version pkgs ...) pkgs)
         (#f '()))))
+
+
+(define* (vhash-refq vhash key #:optional (dflt #f))
+  "Look up KEY in the vhash VHASH, and return the value (if any) associated
+with it.  If KEY is not found, return DFLT (or `#f' if no DFLT argument is
+supplied).  Uses `eq?' for equality testing."
+  (or (and=> (vhash-assq key vhash) cdr)
+      dflt))
+
+(define package-dependencies
+  (memoize
+   (lambda ()
+     "Return a vhash keyed by package, and with associated values that are a
+list of packages that depend on that package."
+     (fold-packages
+      (lambda (package dag)
+        (fold
+         (lambda (in d)
+           ;; Insert a graph edge from each of package's inputs to package.
+           (vhash-consq in
+                        (cons package (vhash-refq d in '()))
+                        (vhash-delq in d)))
+         dag
+         (match (package-direct-inputs package)
+           (((labels packages . _) ...)
+            packages) )))
+      vlist-null))))
+
+(define (package-direct-dependents packages)
+  "Return a list of packages from the distribution that directly depend on the
+packages in PACKAGES."
+  (delete-duplicates
+   (concatenate
+    (map (lambda (p)
+           (vhash-refq (package-dependencies) p '()))
+         packages))))
+
+(define (package-transitive-dependents packages)
+  "Return the transitive dependent packages of the distribution packages in
+PACKAGES---i.e. the dependents of those packages, plus their dependents,
+recursively."
+  (let ((dependency-dag (package-dependencies)))
+    (fold-tree
+     cons '()
+     (lambda (node) (vhash-refq dependency-dag node))
+     ;; Start with the dependents to avoid including PACKAGES in the result.
+     (package-direct-dependents packages))))
+
+(define (package-covering-dependents packages)
+  "Return a minimal list of packages from the distribution whose dependencies
+include all of PACKAGES and all packages that depend on PACKAGES."
+  (let ((dependency-dag (package-dependencies)))
+    (fold-tree-leaves
+     cons '()
+     (lambda (node) (vhash-refq dependency-dag node))
+     ;; Start with the dependents to avoid including PACKAGES in the result.
+     (package-direct-dependents packages))))
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 8b7a2c0303..4a88fdd76a 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -78,16 +78,16 @@ interface and is based on GNU Guile.")
 (define-public dfc
   (package
    (name "dfc")
-   (version "3.0.3")
+   (version "3.0.4")
    (source
     (origin
      (method url-fetch)
       (uri (string-append
-            "http://projects.gw-computing.net/attachments/download/78/dfc-"
+            "http://projects.gw-computing.net/attachments/download/79/dfc-"
             version ".tar.gz"))
       (sha256
        (base32
-        "1b4hfqv23l87cb37fxwzfk2sgspkyxpr3ig2hsd23hr6mm982j7z"))))
+        "0zk1ppx93ijimf4sbgqilxxikpsa2gmpbynknyh41xy7jbdjxp0b"))))
    (build-system cmake-build-system)
    (arguments '(#:tests? #f)) ; There are no tests.
    (native-inputs `(("gettext" ,gnu-gettext)))
@@ -101,14 +101,14 @@ graphs and can export its output to different formats.")
 (define-public htop
   (package
    (name "htop")
-   (version "1.0.2")
+   (version "1.0.3")
    (source (origin
             (method url-fetch)
-            (uri (string-append "mirror://sourceforge/htop/"
+            (uri (string-append "http://hisham.hm/htop/releases/"
                   version "/htop-" version ".tar.gz"))
             (sha256
              (base32
-              "18fqrhvnm7h4c3939av8lpiwrwxbyw6hcly0jvq0vkjf0ixnaq7f"))))
+              "0a8qbpsifzjwc4f45xfwm48jhm59g6q5hlib4bf7z13mgy95fp05"))))
    (build-system gnu-build-system)
    (inputs
     `(("ncurses" ,ncurses)))
@@ -617,7 +617,7 @@ system administrator.")
 (define-public sudo
   (package
     (name "sudo")
-    (version "1.8.10p2")
+    (version "1.8.10p3")
     (source (origin
               (method url-fetch)
               (uri
@@ -627,10 +627,10 @@ system administrator.")
                                     version ".tar.gz")))
               (sha256
                (base32
-                "1wbrygz584abmywklq0b4xhqn3s1bjk3rrladslr5nycdpdvhv5s"))))
+                "002l6h27pnhb77b65frhazbhknsxvrsnkpi43j7i0qw1lrgi7nkf"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--with-logpath=/var/log/sudo.log")
+     `(#:configure-flags '("--with-logpath=/var/log/sudo.log")
        #:phases (alist-cons-before
                  'configure 'pre-configure
                  (lambda _
@@ -644,7 +644,18 @@ system administrator.")
                       "")
                      (("^install: (.*)install-sudoers(.*)" _ before after)
                       ;; Don't try to create /etc/sudoers.
-                      (string-append "install: " before after "\n"))))
+                      (string-append "install: " before after "\n")))
+
+                   ;; XXX FIXME sudo 1.8.10p3 was bootstrapped with a
+                   ;; prerelease libtool, which fails on MIPS in the absence
+                   ;; of /usr/bin/file.  As a temporary workaround, we patch
+                   ;; the configure script to hardcode use of the little
+                   ;; endian N32 ABI on MIPS.
+                   ,@(if (equal? "mips64el-linux" (or (%current-target-system)
+                                                      (%current-system)))
+                         '((substitute* "configure"
+                             (("\\$emul") "elf32ltsmipn32")))
+                         '()))
                  %standard-phases)
 
        ;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
@@ -668,7 +679,7 @@ commands and their arguments.")
 (define-public wpa-supplicant
   (package
     (name "wpa-supplicant")
-    (version "2.1")
+    (version "2.2")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -677,7 +688,7 @@ commands and their arguments.")
                     ".tar.gz"))
               (sha256
                (base32
-                "0xxjw7lslvql1ykfbwmbhdrnjsjljf59fbwf837418s97dz2wqwi"))))
+                "1vf8jc4yyksbxf86narvsli3vxfbm8nbnim2mdp66nd6d3yvin70"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases (alist-replace
@@ -762,3 +773,33 @@ This package provides the 'wpa_supplicant' daemon and the 'wpa_cli' command.")
      "WakeLan broadcasts a properly formatted UDP packet across the local area
 network, which causes enabled computers to power on.")
     (license gpl2+)))
+
+(define-public dmidecode
+  (package
+    (name "dmidecode")
+    (version "2.12")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "mirror://savannah/dmidecode/dmidecode-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "122hgaw8mpqdfra159lfl6pyk3837giqx6vq42j64fjnbl2z6gwi"))))
+    (build-system gnu-build-system)
+    (arguments
+     '(#:phases (alist-delete 'configure %standard-phases)
+       #:tests? #f                                ; no 'check' target
+       #:make-flags (list (string-append "prefix="
+                                         (assoc-ref %outputs "out")))))
+    (home-page "http://www.nongnu.org/dmidecode/")
+    (synopsis "Read hardware information from the BIOS")
+    (description
+     "Dmidecode reports information about your system's hardware as described
+in your system BIOS according to the SMBIOS/DMI standard.  This typically
+includes system manufacturer, model name, serial number, BIOS version, asset
+tag as well as a lot of other details of varying level of interest and
+reliability depending on the manufacturer.  This will often include usage
+status for the CPU sockets, expansion slots (e.g. AGP, PCI, ISA) and memory
+module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
+    (license gpl2+)))
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 9ed978536d..8c12eb604e 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -84,14 +84,14 @@ solve the shortest vector problem.")
 (define-public pari-gp
   (package
    (name "pari-gp")
-   (version "2.7.0")
+   (version "2.7.1")
    (source (origin
             (method url-fetch)
             (uri (string-append
                   "http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-"
                   version ".tar.gz"))
             (sha256 (base32
-                     "1hk7lmq09crr9jvia8nxzhvbwf8mw62xk456i96jg8dljh0r9sgz"))))
+                     "1gj1rddi22hinzwy7r6hljgbi252wwwyd6gapg4hvcn0ycc7jqyc"))))
    (build-system gnu-build-system)
    (inputs `(("gmp" ,gmp)
              ("perl" ,perl)
diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index 73b377e384..a77f1393d9 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 John Darrington <jmd@gnu.org>
+;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,39 +47,48 @@
        ("python" ,python-2)
        ("tcsh" ,tcsh)))
     (arguments
-     `(#:phases
-       (alist-replace
-        'configure
-        (lambda* (#:key outputs #:allow-other-keys)
-          (let ((out (assoc-ref outputs "out")))
-            (substitute* '("libs/config/configure"
-                           "libs/spirit/classic/phoenix/test/runtest.sh"
-                           "tools/build/v2/doc/bjam.qbk"
-                           "tools/build/v2/engine/execunix.c"
-                           "tools/build/v2/engine/Jambase"
-                           "tools/build/v2/engine/jambase.c")
-              (("/bin/sh") (which "sh")))
-
-            (setenv "SHELL" (which "sh"))
-            (setenv "CONFIG_SHELL" (which "sh"))
-
-            (zero? (system* "./bootstrap.sh"
-                            (string-append "--prefix=" out)
-                            "--with-toolset=gcc"))))
-        (alist-replace
-         'build
-         (lambda _
-           (zero? (system* "./b2" "threading=multi" "link=shared")))
-
+     (let ((build-flags
+            `("threading=multi" "link=shared"
+              ;; Boost's 'context' library is not yet supported on mips64, so
+              ;; we disable it.  The 'coroutine' library depends on 'context',
+              ;; so we disable that too.
+              ,@(if (equal? "mips64el-linux" (or (%current-target-system)
+                                                 (%current-system)))
+                    '("--without-context" "--without-coroutine")
+                    '()))))
+       `(#:phases
          (alist-replace
-          'check
-          (lambda _ #t)
+          'configure
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let ((out (assoc-ref outputs "out")))
+              (substitute* '("libs/config/configure"
+                             "libs/spirit/classic/phoenix/test/runtest.sh"
+                             "tools/build/v2/doc/bjam.qbk"
+                             "tools/build/v2/engine/execunix.c"
+                             "tools/build/v2/engine/Jambase"
+                             "tools/build/v2/engine/jambase.c")
+                (("/bin/sh") (which "sh")))
 
+              (setenv "SHELL" (which "sh"))
+              (setenv "CONFIG_SHELL" (which "sh"))
+
+              (zero? (system* "./bootstrap.sh"
+                              (string-append "--prefix=" out)
+                              "--with-toolset=gcc"))))
           (alist-replace
-           'install
+           'build
            (lambda _
-             (zero? (system* "./b2" "install" "threading=multi" "link=shared")))
-           %standard-phases))))))
+             (zero? (system* "./b2" ,@build-flags)))
+
+           (alist-replace
+            'check
+            (lambda _ #t)
+
+            (alist-replace
+             'install
+             (lambda _
+               (zero? (system* "./b2" "install" ,@build-flags)))
+             %standard-phases)))))))
 
     (home-page "http://boost.org")
     (synopsis "Peer-reviewed portable C++ source libraries")
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index e520312164..518cfc3c2b 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -98,14 +98,14 @@ extraction from CDs.")
 (define-public xorriso
   (package
     (name "xorriso")
-    (version "1.3.6.pl01")
+    (version "1.3.8")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/xorriso/xorriso-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "07bm20kb4f6q5pbkxhy7w8ggw2gxkrq45cda2kbh6wgphs5z2h7q"))))
+               "0zhhj9lr9z7hnb2alac54mc28w1l0mbanphhpmy3ylsi8rih84lh"))))
     (build-system gnu-build-system)
     (inputs
      `(("acl" ,acl)
@@ -173,14 +173,14 @@ reconstruction capability.")
 (define-public dvdisaster
   (package
     (name "dvdisaster")
-    (version "0.72.4")
+    (version "0.72.6")
     (source (origin
              (method url-fetch)
              (uri (string-append "http://dvdisaster.net/downloads/dvdisaster-"
                                  version ".tar.bz2"))
              (sha256
               (base32
-               "0pm039a78h7m9vvjmmjfkl05ii6qdmfhvbypxjbc7j5w82y66is4"))))
+               "0sqrprc5rh3shnfli25m2wy0i5f83db54iv04s5s7bxf77m7sy79"))))
     (build-system gnu-build-system)
     (inputs
      `(("gtk+" ,gtk+-2)))
@@ -192,7 +192,14 @@ reconstruction capability.")
      `(;; Parallel builds appear to be unsafe, see
        ;; <http://hydra.gnu.org/build/49331/nixlog/1/raw>.
        #:parallel-build? #f
-       #:tests? #f)) ; no check target
+       #:tests? #f ; no check target
+       #:phases
+         (alist-cons-before
+          'patch-source-shebangs 'sanitise
+          (lambda _
+            ;; delete dangling symlink
+            (delete-file ".#GNUmakefile"))
+          %standard-phases)))
     (home-page "http://dvdisaster.net/en/index.html")
     (synopsis "error correcting codes for optical media images")
     (description "Optical media (CD,DVD,BD) keep their data only for a
diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm
index c927e6e49c..aed2e8925e 100644
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@ -272,14 +272,14 @@ Go.  It also includes runtime support libraries for these languages.")
 
 (define-public gcc-4.9
   (package (inherit gcc-4.7)
-    (version "4.9.0")
+    (version "4.9.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "mirror://gnu/gcc/gcc-"
                                  version "/gcc-" version ".tar.bz2"))
              (sha256
               (base32
-               "0mqjxpw2klskls00lwx1k24pnyzm3whqxg3hk74c3sddgfllgc5r"))))))
+               "0zki3ngi0gsidnmsp88mjl2868cc7cm5wm1vwqw6znja28d7hd6k"))))))
 
 (define (custom-gcc gcc name languages)
   "Return a custom version of GCC that supports LANGUAGES."
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 9db543199c..399c99bcdf 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -101,6 +101,7 @@ provided as well as the framework to add new color models and data types.")
        ("libjpeg" ,libjpeg-8)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
+       ("glib" ,glib "bin")             ; for gtester
        ("intltool" ,intltool)))
     (home-page "http://gegl.org")
     (synopsis "Graph based image processing framework")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 893c3e8a6b..f684d24627 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -449,6 +449,7 @@ some form of information without getting in the user's way.")
        ("pango" ,pango)))
     (native-inputs
      `(("pkg-config" ,pkg-config)
+       ("glib:bin" ,glib "bin")
        ("gobject-introspection" ,gobject-introspection)
        ("intltool" ,intltool)))
     (home-page "https://wiki.gnome.org/Libpeas")
@@ -1138,6 +1139,7 @@ controls using the Bonobo component framework.")
        ("libxml2" ,libxml2)))
     (native-inputs
      `(("intltool" ,intltool)
+       ("glib" ,glib "bin")
        ("pkg-config" ,pkg-config)))
     (home-page "https://developer.gnome.org/goffice/")
     (synopsis "Document-centric objects and utilities")
@@ -1187,6 +1189,7 @@ controls using the Bonobo component framework.")
        ("zlib" ,zlib)))
     (native-inputs
      `(("intltool" ,intltool)
+       ("glib:bin" ,glib "bin")
        ("pkg-config" ,pkg-config)))
     (home-page "http://www.gnumeric.org")
     (synopsis "Spreadsheet application")
diff --git a/gnu/packages/libftdi.scm b/gnu/packages/libftdi.scm
new file mode 100644
index 0000000000..6e8100ce29
--- /dev/null
+++ b/gnu/packages/libftdi.scm
@@ -0,0 +1,48 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages libftdi)
+  #:use-module (guix licenses)
+  #:use-module (guix download)
+  #:use-module (guix packages)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages libusb)
+  #:use-module (guix build-system cmake))
+
+(define-public libftdi
+  (package
+    (name "libftdi")
+    (version "1.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "http://www.intra2net.com/en/developer/libftdi/download/libftdi1-"
+                    version ".tar.bz2"))
+              (sha256
+               (base32
+                "088yh8pxd6q53ssqndydcw1dkq51cjqyahc03lm6iip22cdazcf0"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("libusb" ,libusb)))
+    (home-page "http://www.intra2net.com")
+    (synopsis "FTDI USB driver with bitbang mode")
+    (description
+     "libFTDI is a library to talk to FTDI chips: FT232BM,
+FT245BM, FT2232C, FT2232D, FT245R and FT232H including the popular
+bitbangmode.")
+    (license lgpl2.1+)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 09d123a08d..3ffe2a4cdd 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -1273,7 +1273,18 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.")
        ("zlib" ,guix:zlib)))
     (arguments
      `(#:tests? #f ; FIXME: Investigate test failures
-       #:configure-flags '("--with-xz" "--with-zlib")))
+       #:configure-flags '("--with-xz" "--with-zlib")
+       #:phases (alist-cons-after
+                 'install 'install-modprobe&co
+                 (lambda* (#:key outputs #:allow-other-keys)
+                   (let* ((out (assoc-ref outputs "out"))
+                          (bin (string-append out "/bin")))
+                     (for-each (lambda (tool)
+                                 (symlink "kmod"
+                                          (string-append bin "/" tool)))
+                               '("insmod" "rmmod" "lsmod" "modprobe"
+                                 "modinfo" "depmod"))))
+                 %standard-phases)))
     (home-page "https://www.kernel.org/")
     (synopsis "Kernel module tools")
     (description "kmod is a set of tools to handle common tasks with Linux
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index d9c847d4ce..7bdd81b4c8 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -301,6 +301,7 @@ repository and Maildir/IMAP as LOCAL repository.")
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)
+       ("glib" ,glib "bin")             ; for gtester
        ("texinfo" ,texinfo)))
     ;; TODO: Add webkit and gtk to build the mug GUI.
     (inputs
diff --git a/gnu/packages/nano.scm b/gnu/packages/nano.scm
index 73053513d5..1bb6fea889 100644
--- a/gnu/packages/nano.scm
+++ b/gnu/packages/nano.scm
@@ -27,7 +27,7 @@
 (define-public nano
   (package
     (name "nano")
-    (version "2.3.4")
+    (version "2.3.6")
     (source
      (origin
       (method url-fetch)
@@ -35,7 +35,7 @@
                           version ".tar.gz"))
       (sha256
        (base32
-        "1hcqv5yam4pkqx1sviigikzvd7n1pz6lwp7lzpdzagck9fgi4x0p"))))
+        "0d4ml0v9yi37pjs211xs38w9whsj6530wz3kmrvwgh8jigqz6jx7"))))
     (build-system gnu-build-system)
     (inputs
      `(("gettext" ,gnu-gettext)
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index cf808970ce..66e71df284 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -34,17 +34,17 @@
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages texinfo))
 
-(define-public guix-0.6
+(define guix-0.7
   (package
     (name "guix")
-    (version "0.6")
+    (version "0.7")
     (source (origin
              (method url-fetch)
              (uri (string-append "ftp://alpha.gnu.org/gnu/guix/guix-"
                                  version ".tar.gz"))
              (sha256
               (base32
-               "01xw51wizhsk827w4xp79k2b6dxjaviw04r6rbrb85qdxnwg6k9n"))))
+               "05r7bsjgc0a4m7yy433n3c1dlv2yqlf3qpwlhayn9djhpp2q1ssb"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list
@@ -109,10 +109,12 @@ upgrades and roll-backs, per-user profiles, and much more. It is based on the
 Nix package manager.")
     (license gpl3+)))
 
-(define-public guix
+(define-public guix guix-0.7)
+
+(define-public guix-devel
   ;; Development version of Guix.
   (let ((commit "0ae8c15"))
-    (package (inherit guix-0.6)
+    (package (inherit guix-0.7)
       (version (string-append "0.6." commit))
       (source (origin
                 (method git-fetch)
@@ -124,7 +126,7 @@ Nix package manager.")
                  (base32
                   "1y6mwzwsjdxbfibqypb55dix371rifhfz0bygfr8k868lcdsawic"))))
       (arguments
-       (substitute-keyword-arguments (package-arguments guix-0.6)
+       (substitute-keyword-arguments (package-arguments guix-0.7)
          ((#:phases phases)
           `(alist-cons-before
             'configure 'bootstrap
@@ -160,4 +162,4 @@ Nix package manager.")
          ("gettext" ,gnu-gettext)
          ("texinfo" ,texinfo)
          ("graphviz" ,graphviz)
-         ,@(package-native-inputs guix-0.6))))))
+         ,@(package-native-inputs guix-0.7))))))
diff --git a/gnu/packages/parallel.scm b/gnu/packages/parallel.scm
index cf160d07b6..a4755e043d 100644
--- a/gnu/packages/parallel.scm
+++ b/gnu/packages/parallel.scm
@@ -27,7 +27,7 @@
 (define-public parallel
   (package
     (name "parallel")
-    (version "20140622")
+    (version "20140722")
     (source
      (origin
       (method url-fetch)
@@ -35,7 +35,7 @@
                           version ".tar.bz2"))
       (sha256
        (base32
-        "0frlp645yghnwq8x7dk8pdm6id1mqkkh7w48mcbpd04pw225gljq"))))
+        "165vf8hpl47z38aswsll1284l8xa9a8jwx3a3d2rzshm9yzbiq5n"))))
     (build-system gnu-build-system)
     (inputs `(("perl" ,perl)))
     (home-page "http://www.gnu.org/software/parallel/")
diff --git a/gnu/packages/patches/module-init-tools-moduledir.patch b/gnu/packages/patches/module-init-tools-moduledir.patch
index 68d7988f53..08f03d1cc4 100644
--- a/gnu/packages/patches/module-init-tools-moduledir.patch
+++ b/gnu/packages/patches/module-init-tools-moduledir.patch
@@ -2,17 +2,11 @@ This patch changes 'modprobe' & co. so they honor the 'LINUX_MODULE_DIRECTORY'
 environment variable, rather than looking for modules exclusively in
 /lib/modules.
 
-Patch by David Guibert, from Nixpkgs; adjusted to use 'LINUX_MODULE_DIRECTORY'
-rather than 'MODULE_DIR' as the variable name.
-
-commit cf2c95edb7918bc658f6cae93793c1949fc9cb6e
-Author: David Guibert <david.guibert@gmail.com>
-Date:   Fri Aug 5 14:20:12 2011 +0200
-
-    introduce module-dir
+Original patch by David Guibert, from Nixpkgs; adjusted to use
+'LINUX_MODULE_DIRECTORY' rather than 'MODULE_DIR' as the variable name.
 
 diff --git a/depmod.c b/depmod.c
-index a1d2f8c..9362a35 100644
+index a1d2f8c..ff579c7 100644
 --- a/depmod.c
 +++ b/depmod.c
 @@ -48,9 +48,6 @@
@@ -38,26 +32,30 @@ index a1d2f8c..9362a35 100644
  	}
  
 +        if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) {
-+                module_dir = "/lib/modules/";
++                module_dir = "/lib/modules";
 +        }
 +
  	while ((line = getline_wrapped(cfile, &linenum)) != NULL) {
  		char *ptr = line;
  		char *cmd, *modname;
-@@ -1550,7 +1552,7 @@ static int parse_config_file(const char *filename,
+@@ -1549,8 +1551,8 @@ static int parse_config_file(const char *filename,
+ 							     0, *search);
  					continue;
  				}
- 				nofail_asprintf(&dirname, "%s%s%s/%s", basedir,
+-				nofail_asprintf(&dirname, "%s%s%s/%s", basedir,
 -					MODULE_DIR, kernelversion, search_path);
++				nofail_asprintf(&dirname, "%s%s/%s/%s", basedir,
 +					module_dir, kernelversion, search_path);
  				len = strlen(dirname);
  				*search = add_search(dirname, len, *search);
  				free(dirname);
-@@ -1565,7 +1567,7 @@ static int parse_config_file(const char *filename,
+@@ -1564,8 +1566,8 @@ static int parse_config_file(const char *filename,
+ 			if (!regex_match(kernelversion, (const char *)version))
  				continue;
  
- 			nofail_asprintf(&pathname, "%s%s%s/%s/%s.ko", basedir,
+-			nofail_asprintf(&pathname, "%s%s%s/%s/%s.ko", basedir,
 -				MODULE_DIR, kernelversion, subdir, modname);
++			nofail_asprintf(&pathname, "%s%s/%s/%s/%s.ko", basedir,
 +				module_dir, kernelversion, subdir, modname);
  
  			*overrides = add_override(pathname, *overrides);
@@ -76,24 +74,26 @@ index a1d2f8c..9362a35 100644
  
 -	nofail_asprintf(&dirname, "%s%s%s", basedir, MODULE_DIR, version);
 +        if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) {
-+                module_dir = "/lib/modules/";
++                module_dir = "/lib/modules";
 +        }
 +
-+	nofail_asprintf(&dirname, "%s%s%s", basedir, module_dir, version);
++	nofail_asprintf(&dirname, "%s%s/%s", basedir, module_dir, version);
  
  	if (maybe_all) {
  		if (!doing_stdout && !depfile_out_of_date(dirname))
-@@ -1850,7 +1857,7 @@ int main(int argc, char *argv[])
+@@ -1849,8 +1856,8 @@ int main(int argc, char *argv[])
+ 		char *dirname;
  		size_t len;
  
- 		nofail_asprintf(&dirname, "%s%s%s/updates", basedir,
+-		nofail_asprintf(&dirname, "%s%s%s/updates", basedir,
 -				MODULE_DIR, version);
++		nofail_asprintf(&dirname, "%s%s/%s/updates", basedir,
 +				module_dir, version);
  		len = strlen(dirname);
  		search = add_search(dirname, len, search);
  	}
 diff --git a/modinfo.c b/modinfo.c
-index 1dd8469..67b1041 100644
+index 1dd8469..6a1865b 100644
 --- a/modinfo.c
 +++ b/modinfo.c
 @@ -19,9 +19,6 @@
@@ -113,7 +113,7 @@ index 1dd8469..67b1041 100644
 + 	char *module_dir;
 +
 +        if((module_dir = getenv("LINUX_MODULE_DIRECTORY")) == NULL) {
-+                module_dir = "/lib/modules/";
++                module_dir = "/lib/modules";
 +        }
  
  	if (strchr(name, '.') || strchr(name, '/')) {
@@ -131,7 +131,7 @@ index 1dd8469..67b1041 100644
  	/* Search for it in modules.dep. */
  	nofail_asprintf(&depname, "%s/%s", moddir, "modules.dep");
 diff --git a/modprobe.c b/modprobe.c
-index 5464f45..d9fbf9d 100644
+index 5464f45..cb57917 100644
 --- a/modprobe.c
 +++ b/modprobe.c
 @@ -86,10 +86,6 @@ typedef enum
diff --git a/gnu/packages/texlive.scm b/gnu/packages/texlive.scm
index b136c99979..57a250cba2 100644
--- a/gnu/packages/texlive.scm
+++ b/gnu/packages/texlive.scm
@@ -115,6 +115,11 @@
          "--with-system-xpdf"
          "--with-system-zlib"
          "--with-system-zziplib")
+
+      ;; Disable tests on mips64 to cope with a failure of luajiterr.test.
+      ;; XXX FIXME fix luajit properly on mips64.
+      #:tests? ,(not (equal? "mips64el-linux" (or (%current-target-system)
+                                                  (%current-system))))
       #:phases
        (alist-cons-after
         'install 'postinst
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 075113ca9d..8850543c1d 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -193,7 +193,6 @@
                       "--disable-armv6t2"
                       "--disable-vfp"
                       "--disable-neon"
-                      "--disable-vis"
                       "--disable-mips32r2"
                       "--disable-mipsdspr1"
                       "--disable-mipsdspr2"
diff --git a/gnu/services/avahi.scm b/gnu/services/avahi.scm
index e8da6be5f5..48a2c75927 100644
--- a/gnu/services/avahi.scm
+++ b/gnu/services/avahi.scm
@@ -96,7 +96,8 @@ sockets."
                     (mkdir-p "/var/run/avahi-daemon")))
 
       (user-groups (list (user-group
-                          (name "avahi"))))
+                          (name "avahi")
+                          (system? #t))))
       (user-accounts (list (user-account
                             (name "avahi")
                             (group "avahi")
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 55ee5c4b08..e1d247e8d3 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -25,10 +25,12 @@
   #:use-module (gnu system linux)                 ; 'pam-service', etc.
   #:use-module (gnu packages admin)
   #:use-module ((gnu packages linux)
-                #:select (udev kbd))
+                #:select (udev kbd e2fsprogs))
   #:use-module ((gnu packages base)
                 #:select (glibc-final))
   #:use-module (gnu packages package-management)
+  #:use-module ((guix build linux-initrd)
+                #:select (mount-flags->bit-mask))
   #:use-module (guix gexp)
   #:use-module (guix monads)
   #:use-module (srfi srfi-1)
@@ -96,11 +98,14 @@ This service must be the root of the service dependency graph so that its
       (respawn? #f)))))
 
 (define* (file-system-service device target type
-                              #:key (check? #t) options (title 'any))
+                              #:key (flags '()) (check? #t)
+                              create-mount-point? options (title 'any))
   "Return a service that mounts DEVICE on TARGET as a file system TYPE with
 OPTIONS.  TITLE is a symbol specifying what kind of name DEVICE is: 'label for
 a partition label, 'device for a device file name, or 'any.  When CHECK? is
-true, check the file system before mounting it."
+true, check the file system before mounting it.  When CREATE-MOUNT-POINT? is
+true, create TARGET if it does not exist yet.  FLAGS is a list of symbols,
+such as 'read-only' etc."
   (with-monad %store-monad
     (return
      (service
@@ -109,10 +114,22 @@ true, check the file system before mounting it."
       (documentation "Check, mount, and unmount the given file system.")
       (start #~(lambda args
                  (let ((device (canonicalize-device-spec #$device '#$title)))
+                   #$(if create-mount-point?
+                         #~(mkdir-p #$target)
+                         #~#t)
                    #$(if check?
-                         #~(check-file-system device #$type)
+                         #~(begin
+                             ;; Make sure fsck.ext2 & co. can be found.
+                             (setenv "PATH"
+                                     (string-append
+                                      #$e2fsprogs "/sbin:"
+                                      "/run/current-system/profile/sbin:"
+                                      (getenv "PATH")))
+                             (check-file-system device #$type))
                          #~#t)
-                   (mount device #$target #$type 0 #$options))
+                   (mount device #$target #$type
+                          #$(mount-flags->bit-mask flags)
+                          #$options))
                  #t))
       (stop #~(lambda args
                 ;; Normally there are no processes left at this point, so
@@ -455,6 +472,7 @@ passed to @command{guix-daemon}."
              (user-accounts accounts)
              (user-groups (list (user-group
                                  (name builder-group)
+                                 (system? #t)
 
                                  ;; Use a fixed GID so that we can create the
                                  ;; store with the right owner.
@@ -466,8 +484,13 @@ passed to @command{guix-daemon}."
   (with-monad %store-monad
     (return (service
              (provision '(udev))
+
+             ;; Udev needs /dev to be a 'devtmpfs' mount so that new device
+             ;; nodes can be added: see
+             ;; <http://www.linuxfromscratch.org/lfs/view/development/chapter07/udev.html>.
              (requirement '(root-file-system))
-             (documentation "Populate the /dev directory.")
+
+             (documentation "Populate the /dev directory, dynamically.")
              (start #~(lambda ()
                         (define udevd
                           (string-append #$udev "/libexec/udev/udevd"))
diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm
index 6076317ee5..5da7f14605 100644
--- a/gnu/services/dbus.scm
+++ b/gnu/services/dbus.scm
@@ -86,7 +86,8 @@ and policy files.  For example, to allow avahi-daemon to use the system bus,
                       (string-append "--config-file=" #$conf "/system.conf"))))
       (stop #~(make-kill-destructor))
       (user-groups (list (user-group
-                          (name "messagebus"))))
+                          (name "messagebus")
+                          (system? #t))))
       (user-accounts (list (user-account
                             (name "messagebus")
                             (group "messagebus")
diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm
index 74adb27885..dfda2708f5 100644
--- a/gnu/services/dmd.scm
+++ b/gnu/services/dmd.scm
@@ -49,6 +49,7 @@
 
           (use-modules (ice-9 ftw)
                        (guix build syscalls)
+                       (guix build utils)
                        ((guix build linux-initrd)
                         #:select (check-file-system canonicalize-device-spec)))
 
diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm
index 502b0d85f1..6a7d194659 100644
--- a/gnu/services/networking.scm
+++ b/gnu/services/networking.scm
@@ -107,7 +107,8 @@ policy) as the @code{tor} unprivileged user."
       (stop #~(make-kill-destructor))
 
       (user-groups   (list (user-group
-                            (name "tor"))))
+                            (name "tor")
+                            (system? #t))))
       (user-accounts (list (user-account
                             (name "tor")
                             (group "tor")
diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm
index 7ca0d3f7db..a34129a8ed 100644
--- a/gnu/services/xorg.scm
+++ b/gnu/services/xorg.scm
@@ -97,7 +97,12 @@ EndSection
     #~(begin
         (use-modules (ice-9 match))
 
-        ;; TODO: Check for ~/.xsession.
+        ;; First, try to run ~/.xsession.
+        (let* ((home (getenv "HOME"))
+               (file (string-append home "/.xsession")))
+          (false-if-exception (execl file file)))
+
+        ;; Then try a pre-configured session type.
         (match (command-line)
           ((_ "ratpoison")
            (execl (string-append #$ratpoison "/bin/ratpoison")))
@@ -146,10 +151,15 @@ reboot_cmd " dmd "/sbin/reboot
       (provision '(xorg-server))
       (requirement '(user-processes host-name udev))
       (start
-       #~(make-forkexec-constructor
-          (list (string-append #$slim "/bin/slim") "-nodaemon")
-          #:environment-variables
-          (list (string-append "SLIM_CFGFILE=" #$slim.cfg))))
+       #~(lambda ()
+           ;; A stale lock file can prevent SLiM from starting, so remove it
+           ;; to be on the safe side.
+           (false-if-exception (delete-file "/var/run/slim.lock"))
+
+           (fork+exec-command
+            (list (string-append #$slim "/bin/slim") "-nodaemon")
+            #:environment-variables
+            (list (string-append "SLIM_CFGFILE=" #$slim.cfg)))))
       (stop #~(make-kill-destructor))
       (respawn? #t)
       (pam-services
diff --git a/gnu/system.scm b/gnu/system.scm
index 20942ec7f0..68f9438693 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -181,11 +181,13 @@ as 'needed-for-boot'."
   (sequence %store-monad
             (map (match-lambda
                   (($ <file-system> device title target type flags opts
-                                    #f check?)
+                                    #f check? create?)
                    (file-system-service device target type
                                         #:title title
                                         #:check? check?
-                                        #:options opts)))
+                                        #:create-mount-point? create?
+                                        #:options opts
+                                        #:flags flags)))
                  file-systems)))
 
 (define (essential-services os)
@@ -361,7 +363,8 @@ alias ll='ls -l'
 'active-groups'."
   #~(list #$(user-group-name group)
           #$(user-group-password group)
-          #$(user-group-id group)))
+          #$(user-group-id group)
+          #$(user-group-system? group)))
 
 (define (user-account->gexp account)
   "Turn ACCOUNT, a <user-account> object, into a list-valued gexp suitable for
diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm
index 7852a6ab26..48c4fc7e77 100644
--- a/gnu/system/file-systems.scm
+++ b/gnu/system/file-systems.scm
@@ -28,9 +28,16 @@
             file-system-needed-for-boot?
             file-system-flags
             file-system-options
+            file-system-check?
+            file-system-create-mount-point?
 
             %fuse-control-file-system
-            %binary-format-file-system))
+            %binary-format-file-system
+            %shared-memory-file-system
+            %pseudo-terminal-file-system
+            %devtmpfs-file-system
+
+            %base-file-systems))
 
 ;;; Commentary:
 ;;;
@@ -54,7 +61,9 @@
   (needed-for-boot? file-system-needed-for-boot?  ; Boolean
                     (default #f))
   (check?           file-system-check?            ; Boolean
-                    (default #t)))
+                    (default #t))
+  (create-mount-point? file-system-create-mount-point? ; Boolean
+                       (default #f)))
 
 (define %fuse-control-file-system
   ;; Control file system for Linux' file systems in user-space (FUSE).
@@ -72,4 +81,51 @@
     (type "binfmt_misc")
     (check? #f)))
 
+(define %devtmpfs-file-system
+  ;; /dev as a 'devtmpfs' file system, needed for udev.
+  (file-system
+    (device "none")
+    (mount-point "/dev")
+    (type "devtmpfs")
+    (check? #f)
+
+    ;; Mount it from the initrd so /dev/pts & co. can then be mounted over it.
+    (needed-for-boot? #t)))
+
+(define %tty-gid
+  ;; ID of the 'tty' group.  Allocate it statically to make it easy to refer
+  ;; to it from here and from the 'tty' group definitions.
+  996)
+
+(define %pseudo-terminal-file-system
+  ;; The pseudo-terminal file system.  It needs to be mounted so that
+  ;; statfs(2) returns DEVPTS_SUPER_MAGIC like libc's getpt(3) expects (and
+  ;; thus openpty(3) and its users, such as xterm.)
+  (file-system
+    (device "none")
+    (mount-point "/dev/pts")
+    (type "devpts")
+    (check? #f)
+    (needed-for-boot? #f)
+    (create-mount-point? #t)
+    (options (string-append "gid=" (number->string %tty-gid) ",mode=620"))))
+
+(define %shared-memory-file-system
+  ;; Shared memory.
+  (file-system
+    (device "tmpfs")
+    (mount-point "/dev/shm")
+    (type "tmpfs")
+    (check? #f)
+    (flags '(no-suid no-dev))
+    (options "size=50%")                         ;TODO: make size configurable
+    (create-mount-point? #t)))
+
+(define %base-file-systems
+  ;; List of basic file systems to be mounted.  Note that /proc and /sys are
+  ;; currently mounted by the initrd.
+  (list %devtmpfs-file-system
+        %pseudo-terminal-file-system
+        %shared-memory-file-system))
+
 ;;; file-systems.scm ends here
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 18fd587ead..567934e4c1 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -20,6 +20,7 @@
   #:use-module (gnu)
   #:use-module (guix gexp)
   #:use-module (guix monads)
+  #:use-module ((guix store) #:select (%store-prefix))
   #:use-module (gnu packages linux)
   #:use-module (gnu packages package-management)
   #:use-module (gnu packages disk)
@@ -42,6 +43,99 @@ manual."
                          "-f" (string-append #$guix "/share/info/guix.info")
                          "-n" "System Installation")))
 
+(define %backing-directory
+  ;; Sub-directory used as the backing store for copy-on-write.
+  "/tmp/guix-inst")
+
+(define (make-cow-store target)
+  "Return a gexp that makes the store copy-on-write, using TARGET as the
+backing store.  This is useful when TARGET is on a hard disk, whereas the
+current store is on a RAM disk."
+  (define (unionfs read-only read-write mount-point)
+    ;; Make MOUNT-POINT the union of READ-ONLY and READ-WRITE.
+
+    ;; Note: in the command below, READ-WRITE appears before READ-ONLY so that
+    ;; it is considered a "higher-level branch", as per unionfs-fuse(8),
+    ;; thereby allowing files existing on READ-ONLY to be copied over to
+    ;; READ-WRITE.
+    #~(fork+exec-command
+       (list (string-append #$unionfs-fuse "/bin/unionfs")
+             "-o"
+             "cow,allow_other,use_ino,max_files=65536,nonempty"
+             (string-append #$read-write "=RW:" #$read-only "=RO")
+             #$mount-point)))
+
+  (define (set-store-permissions directory)
+    ;; Set the right perms on DIRECTORY to use it as the store.
+    #~(begin
+        (chown #$directory 0 30000)             ;use the fixed 'guixbuild' GID
+        (chmod #$directory #o1775)))
+
+  #~(begin
+      (unless (file-exists? "/.ro-store")
+        (mkdir "/.ro-store")
+        (mount #$(%store-prefix) "/.ro-store" "none"
+               (logior MS_BIND MS_RDONLY)))
+
+      (let ((rw-dir (string-append target #$%backing-directory)))
+        (mkdir-p rw-dir)
+        (mkdir-p "/.rw-store")
+        #$(set-store-permissions #~rw-dir)
+        #$(set-store-permissions "/.rw-store")
+
+        ;; Mount the union, then atomically make it the store.
+        (and #$(unionfs "/.ro-store" #~rw-dir "/.rw-store")
+             (begin
+               (sleep 1) ;XXX: wait for unionfs to be ready
+               (mount "/.rw-store" #$(%store-prefix) "" MS_MOVE)
+               (rmdir "/.rw-store"))))))
+
+(define (cow-store-service)
+  "Return a service that makes the store copy-on-write, such that writes go to
+the user's target storage device rather than on the RAM disk."
+  ;; See <http://bugs.gnu.org/18061> for the initial report.
+  (with-monad %store-monad
+    (return (service
+             (requirement '(root-file-system user-processes))
+             (provision '(cow-store))
+             (documentation
+              "Make the store copy-on-write, with writes going to \
+the given target.")
+             (start #~(case-lambda
+                        ((target)
+                         #$(make-cow-store #~target)
+                         target)
+                        (else
+                         ;; Do nothing, and mark the service as stopped.
+                         #f)))
+             (stop #~(lambda (target)
+                       ;; Delete the temporary directory, but leave everything
+                       ;; mounted as there may still be processes using it
+                       ;; since 'user-processes' doesn't depend on us.
+                       (delete-file-recursively
+                        (string-append target #$%backing-directory))))))))
+
+(define (configuration-template-service)
+  "Return a dummy service whose purpose is to install an operating system
+configuration template file in the installation system."
+
+  (define local-template
+    "/etc/configuration-template.scm")
+  (define template
+    (search-path %load-path "gnu/system/os-config.tmpl"))
+
+  (mlet %store-monad ((template (interned-file template)))
+    (return (service
+             (requirement '(root-file-system))
+             (provision '(os-config-template))
+             (documentation
+              "This dummy service installs an OS configuration template.")
+             (start #~(const #t))
+             (stop  #~(const #f))
+             (activate
+              #~(unless (file-exists? #$local-template)
+                  (copy-file #$template #$local-template)))))))
+
 (define (installation-services)
   "Return the list services for the installation image."
   (let ((motd (text-file "motd" "
@@ -71,6 +165,9 @@ You have been warned.  Thanks for being so brave.
                             #:auto-login "guest"
                             #:login-program (log-to-info))
 
+          ;; Documentation add-on.
+          (configuration-template-service)
+
           ;; A bunch of 'root' ttys.
           (normal-tty "tty3")
           (normal-tty "tty4")
@@ -88,6 +185,10 @@ You have been warned.  Thanks for being so brave.
           ;; Start udev so that useful device nodes are available.
           (udev-service)
 
+          ;; Add the 'cow-store' service, which users have to start manually
+          ;; since it takes the installation directory as an argument.
+          (cow-store-service)
+
           ;; Install Unicode support and a suitable font.
           (console-font-service "tty1")
           (console-font-service "tty2")
@@ -117,10 +218,11 @@ Use Alt-F2 for documentation.
     (file-systems
      ;; Note: the disk image build code overrides this root file system with
      ;; the appropriate one.
-     (list (file-system
+     (cons (file-system
              (mount-point "/")
              (device "gnu-disk-image")
-             (type "ext4"))))
+             (type "ext4"))
+           %base-file-systems))
 
     (users (list (user-account
                   (name "guest")
diff --git a/gnu/system/os-config.tmpl b/gnu/system/os-config.tmpl
new file mode 100644
index 0000000000..ad58606f67
--- /dev/null
+++ b/gnu/system/os-config.tmpl
@@ -0,0 +1,31 @@
+;; This is an operating system configuration template.
+
+(use-modules (gnu))
+
+(operating-system
+  (host-name "antelope")
+  (timezone "Europe/Paris")
+  (locale "en_US.UTF-8")
+
+  ;; Assuming /dev/sdX is the target hard disk, and "root" is
+  ;; the label of the target root file system.
+  (bootloader (grub-configuration (device "/dev/sdX")))
+  (file-systems (cons (file-system
+                        (device "root")
+                        (title 'label)
+                        (mount-point "/")
+                        (type "ext4"))
+                      %base-file-systems))
+
+  ;; This is where user accounts are specified.  The "root"
+  ;; account is implicit, and is initially created with the
+  ;; empty password.
+  (users (list (user-account
+                (name "alice")
+                (comment "Bob's sister")
+                (group "users")
+
+                ;; Adding the account to the "wheel" group
+                ;; makes it a sudoer.
+                (supplementary-groups '("wheel"))
+                (home-directory "/home/alice")))))
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index ae6eac9a5b..5d638398d1 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -20,6 +20,8 @@
   #:use-module (guix records)
   #:use-module (guix gexp)
   #:use-module (guix monads)
+  #:use-module ((gnu system file-systems)
+                #:select (%tty-gid))
   #:use-module ((gnu packages admin)
                 #:select (shadow))
   #:use-module (gnu packages bash)
@@ -41,6 +43,7 @@
             user-group-name
             user-group-password
             user-group-id
+            user-group-system?
 
             default-skeletons
             skeleton-directory
@@ -73,28 +76,33 @@
   user-group?
   (name           user-group-name)
   (password       user-group-password (default #f))
-  (id             user-group-id (default #f)))
+  (id             user-group-id (default #f))
+  (system?        user-group-system?              ; Boolean
+                  (default #f)))
 
 (define %base-groups
   ;; Default set of groups.
-  (list (user-group (name "root") (id 0))
-        (user-group (name "wheel"))               ; root-like users
-        (user-group (name "users"))               ; normal users
-        (user-group (name "nogroup"))             ; for daemons etc.
+  (let-syntax ((system-group (syntax-rules ()
+                               ((_ args ...)
+                                (user-group (system? #t) args ...)))))
+    (list (system-group (name "root") (id 0))
+          (system-group (name "wheel"))              ; root-like users
+          (system-group (name "users"))              ; normal users
+          (system-group (name "nogroup"))            ; for daemons etc.
 
-        ;; The following groups are conventionally used by things like udev to
-        ;; control access to hardware devices.
-        (user-group (name "tty"))
-        (user-group (name "dialout"))
-        (user-group (name "kmem"))
-        (user-group (name "video"))
-        (user-group (name "audio"))
-        (user-group (name "netdev"))              ; used in avahi-dbus.conf
-        (user-group (name "lp"))
-        (user-group (name "disk"))
-        (user-group (name "floppy"))
-        (user-group (name "cdrom"))
-        (user-group (name "tape"))))
+          ;; The following groups are conventionally used by things like udev to
+          ;; control access to hardware devices.
+          (system-group (name "tty") (id %tty-gid))
+          (system-group (name "dialout"))
+          (system-group (name "kmem"))
+          (system-group (name "video"))
+          (system-group (name "audio"))
+          (system-group (name "netdev"))             ; used in avahi-dbus.conf
+          (system-group (name "lp"))
+          (system-group (name "disk"))
+          (system-group (name "floppy"))
+          (system-group (name "cdrom"))
+          (system-group (name "tape")))))
 
 (define (default-skeletons)
   "Return the default skeleton files for /etc/skel.  These files are copied by
diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm
index 4fa1d1683d..b2b184db34 100644
--- a/guix/build-system/gnu.scm
+++ b/guix/build-system/gnu.scm
@@ -250,6 +250,9 @@ derivations for SYSTEM.  Include propagated inputs in the result."
                            inputs))))
 
 (define standard-inputs
+  ;; FIXME: Memoization should be associated with the open store (as for
+  ;; 'add-text-to-store'), otherwise we get .drv that may not be valid when
+  ;; switching to another store.
   (memoize
    (lambda (system)
      "Return the list of implicit standard inputs used with the GNU Build
diff --git a/guix/build/activation.scm b/guix/build/activation.scm
index 9464d2157d..b04b017881 100644
--- a/guix/build/activation.scm
+++ b/guix/build/activation.scm
@@ -36,13 +36,14 @@
 ;;;
 ;;; Code:
 
-(define* (add-group name #:key gid password
+(define* (add-group name #:key gid password system?
                     (log-port (current-error-port)))
   "Add NAME as a user group, with the given numeric GID if specified."
   ;; Use 'groupadd' from the Shadow package.
   (format log-port "adding group '~a'...~%" name)
   (let ((args `(,@(if gid `("-g" ,(number->string gid)) '())
                 ,@(if password `("-p" ,password) '())
+                ,@(if system? `("--system") '())
                 ,name)))
     (zero? (apply system* "groupadd" args))))
 
@@ -128,9 +129,11 @@ numeric gid or #f."
 
   ;; Then create the groups.
   (for-each (match-lambda
-             ((name password gid)
+             ((name password gid system?)
               (unless (false-if-exception (getgrnam name))
-                (add-group name #:gid gid #:password password))))
+                (add-group name
+                           #:gid gid #:password password
+                           #:system? system?))))
             groups)
 
   ;; Finally create the other user accounts.
diff --git a/guix/build/linux-initrd.scm b/guix/build/linux-initrd.scm
index abf86f6a77..662f7967e3 100644
--- a/guix/build/linux-initrd.scm
+++ b/guix/build/linux-initrd.scm
@@ -40,6 +40,7 @@
             find-partition-by-label
             canonicalize-device-spec
 
+            mount-flags->bit-mask
             check-file-system
             mount-file-system
             bind-mount
@@ -393,6 +394,9 @@ networking values.)  Return #t if INTERFACE is up, #f otherwise."
 
 ;; Linux mount flags, from libc's <sys/mount.h>.
 (define MS_RDONLY 1)
+(define MS_NOSUID 2)
+(define MS_NODEV  4)
+(define MS_NOEXEC 8)
 (define MS_BIND 4096)
 (define MS_MOVE 8192)
 
@@ -494,6 +498,24 @@ UNIONFS."
                fsck code device)
        (start-repl)))))
 
+(define (mount-flags->bit-mask flags)
+  "Return the number suitable for the 'flags' argument of 'mount' that
+corresponds to the symbols listed in FLAGS."
+  (let loop ((flags flags))
+    (match flags
+      (('read-only rest ...)
+       (logior MS_RDONLY (loop rest)))
+      (('bind-mount rest ...)
+       (logior MS_BIND (loop rest)))
+      (('no-suid rest ...)
+       (logior MS_NOSUID (loop rest)))
+      (('no-dev rest ...)
+       (logior MS_NODEV (loop rest)))
+      (('no-exec rest ...)
+       (logior MS_NOEXEC (loop rest)))
+      (()
+       0))))
+
 (define* (mount-file-system spec #:key (root "/root"))
   "Mount the file system described by SPEC under ROOT.  SPEC must have the
 form:
@@ -503,15 +525,6 @@ form:
 DEVICE, MOUNT-POINT, and TYPE must be strings; OPTIONS can be a string or #f;
 FLAGS must be a list of symbols.  CHECK? is a Boolean indicating whether to
 run a file system check."
-  (define flags->bit-mask
-    (match-lambda
-     (('read-only rest ...)
-      (or MS_RDONLY (flags->bit-mask rest)))
-     (('bind-mount rest ...)
-      (or MS_BIND (flags->bit-mask rest)))
-     (()
-      0)))
-
   (match spec
     ((source title mount-point type (flags ...) options check?)
      (let ((source      (canonicalize-device-spec source title))
@@ -519,7 +532,7 @@ run a file system check."
        (when check?
          (check-file-system source type))
        (mkdir-p mount-point)
-       (mount source mount-point type (flags->bit-mask flags)
+       (mount source mount-point type (mount-flags->bit-mask flags)
               (if options
                   (string->pointer options)
                   %null-pointer))
@@ -528,7 +541,7 @@ run a file system check."
        (mkdir-p (string-append root "/etc"))
        (let ((port (open-file (string-append root "/etc/mtab") "a")))
          (format port "~a ~a ~a ~a 0 0~%"
-                 source mount-point type options)
+                 source mount-point type (or options ""))
          (close-port port))))))
 
 (define (switch-root root)
@@ -670,11 +683,6 @@ to it are lost."
              (switch-root "/root")
              (format #t "loading '~a'...\n" to-load)
 
-             ;; Obviously this has to be done each time we boot.  Do it from here
-             ;; so that statfs(2) returns DEVPTS_SUPER_MAGIC like libc's getpt(3)
-             ;; expects (and thus openpty(3) and its users, such as xterm.)
-             (mount "none" "/dev/pts" "devpts")
-
              ;; TODO: Remove /lib, /share, and /loader.go.
              (primitive-load to-load)
 
diff --git a/guix/monads.scm b/guix/monads.scm
index c2c6f1a03d..4af2b704ab 100644
--- a/guix/monads.scm
+++ b/guix/monads.scm
@@ -55,6 +55,7 @@
             run-with-store
             text-file
             text-file*
+            interned-file
             package-file
             origin->derivation
             package->derivation
@@ -362,6 +363,18 @@ and store file names; the resulting store file holds references to all these."
     (derivation-expression name (builder inputs)
                            #:inputs inputs)))
 
+(define* (interned-file file #:optional name
+                        #:key (recursive? #t))
+  "Return the name of FILE once interned in the store.  Use NAME as its store
+name, or the basename of FILE if NAME is omitted.
+
+When RECURSIVE? is true, the contents of FILE are added recursively; if FILE
+designates a flat file and RECURSIVE? is true, its contents are added, and its
+permission bits are kept."
+  (lambda (store)
+    (add-to-store store (or name (basename file))
+                  recursive? "sha256" file)))
+
 (define* (package-file package
                        #:optional file
                        #:key (system (%current-system)) (output "out"))
diff --git a/guix/packages.scm b/guix/packages.scm
index 985a573fd3..1939373f35 100644
--- a/guix/packages.scm
+++ b/guix/packages.scm
@@ -75,6 +75,7 @@
             package-location
             package-field-location
 
+            package-direct-inputs
             package-transitive-inputs
             package-transitive-target-inputs
             package-transitive-native-inputs
@@ -484,12 +485,17 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET."
       ((input rest ...)
        (loop rest (cons input result))))))
 
+(define (package-direct-inputs package)
+  "Return all the direct inputs of PACKAGE---i.e, its direct inputs along
+with their propagated inputs."
+  (append (package-native-inputs package)
+          (package-inputs package)
+          (package-propagated-inputs package)))
+
 (define (package-transitive-inputs package)
   "Return the transitive inputs of PACKAGE---i.e., its direct inputs along
 with their propagated inputs, recursively."
-  (transitive-inputs (append (package-native-inputs package)
-                             (package-inputs package)
-                             (package-propagated-inputs package))))
+  (transitive-inputs (package-direct-inputs package)))
 
 (define (package-transitive-target-inputs package)
   "Return the transitive target inputs of PACKAGE---i.e., its direct inputs
@@ -521,6 +527,8 @@ recursively."
 (define (cache package system thunk)
   "Memoize the return values of THUNK as the derivation of PACKAGE on
 SYSTEM."
+  ;; FIXME: This memoization should be associated with the open store, because
+  ;; otherwise it breaks when switching to a different store.
   (let ((vals (call-with-values thunk list)))
     ;; Use `hashq-set!' instead of `hash-set!' because `hash' returns the
     ;; same value for all structs (as of Guile 2.0.6), and because pointer
diff --git a/guix/profiles.scm b/guix/profiles.scm
index c1fa8272ba..5e69e012f9 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -22,6 +22,7 @@
   #:use-module (guix records)
   #:use-module (guix derivations)
   #:use-module (guix packages)
+  #:use-module (guix gexp)
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
   #:use-module (ice-9 ftw)
@@ -39,21 +40,18 @@
             manifest-entry-name
             manifest-entry-version
             manifest-entry-output
-            manifest-entry-path
+            manifest-entry-item
             manifest-entry-dependencies
 
             manifest-pattern
             manifest-pattern?
 
-            read-manifest
-            write-manifest
-
             manifest-remove
             manifest-installed?
             manifest-matching-entries
-            manifest=?
 
             profile-manifest
+            package->manifest-entry
             profile-derivation
             generation-number
             generation-numbers
@@ -88,11 +86,9 @@
   (version      manifest-entry-version)           ; string
   (output       manifest-entry-output             ; string
                 (default "out"))
-  (path         manifest-entry-path)              ; store path
-  (dependencies manifest-entry-dependencies       ; list of store paths
-                (default '()))
-  (inputs       manifest-entry-inputs             ; list of inputs to build
-                (default '())))                   ; this entry
+  (item         manifest-entry-item)              ; package | store path
+  (dependencies manifest-entry-dependencies       ; (store path | package)*
+                (default '())))
 
 (define-record-type* <manifest-pattern> manifest-pattern
   make-manifest-pattern
@@ -110,17 +106,36 @@
         (call-with-input-file file read-manifest)
         (manifest '()))))
 
-(define (manifest->sexp manifest)
-  "Return a representation of MANIFEST as an sexp."
-  (define (entry->sexp entry)
+(define* (package->manifest-entry package #:optional output)
+  "Return a manifest entry for the OUTPUT of package PACKAGE.  When OUTPUT is
+omitted or #f, use the first output of PACKAGE."
+  (let ((deps (map (match-lambda
+                    ((label package)
+                     `(,package "out"))
+                    ((label package output)
+                     `(,package ,output)))
+                   (package-transitive-propagated-inputs package))))
+    (manifest-entry
+     (name (package-name package))
+     (version (package-version package))
+     (output (or output (car (package-outputs package))))
+     (item package)
+     (dependencies (delete-duplicates deps)))))
+
+(define (manifest->gexp manifest)
+  "Return a representation of MANIFEST as a gexp."
+  (define (entry->gexp entry)
     (match entry
-      (($ <manifest-entry> name version path output (deps ...))
-       (list name version path output deps))))
+      (($ <manifest-entry> name version output (? string? path) (deps ...))
+       #~(#$name #$version #$output #$path #$deps))
+      (($ <manifest-entry> name version output (? package? package) (deps ...))
+       #~(#$name #$version #$output
+                 (ungexp package (or output "out")) #$deps))))
 
   (match manifest
     (($ <manifest> (entries ...))
-     `(manifest (version 1)
-                (packages ,(map entry->sexp entries))))))
+     #~(manifest (version 1)
+                 (packages #$(map entry->gexp entries))))))
 
 (define (sexp->manifest sexp)
   "Parse SEXP as a manifest."
@@ -133,7 +148,7 @@
               (name name)
               (version version)
               (output output)
-              (path path)))
+              (item path)))
            name version output path)))
 
     ;; Version 1 adds a list of propagated inputs to the
@@ -146,7 +161,7 @@
               (name name)
               (version version)
               (output output)
-              (path path)
+              (item path)
               (dependencies deps)))
            name version output path deps)))
 
@@ -157,10 +172,6 @@
   "Return the packages listed in MANIFEST."
   (sexp->manifest (read port)))
 
-(define (write-manifest manifest port)
-  "Write MANIFEST to PORT."
-  (write (manifest->sexp manifest) port))
-
 (define (entry-predicate pattern)
   "Return a procedure that returns #t when passed a manifest entry that
 matches NAME/OUTPUT/VERSION.  OUTPUT and VERSION may be #f, in which case they
@@ -203,62 +214,41 @@ must be a manifest-pattern."
 
   (filter matches? (manifest-entries manifest)))
 
-(define (manifest=? m1 m2)
-  "Return #t if manifests M1 and M2 are equal.  This differs from 'equal?' in
-that the 'inputs' field is ignored for the comparison, since it is know to
-have no effect on the manifest contents."
-  (equal? (manifest->sexp m1)
-          (manifest->sexp m2)))
-
 
 ;;;
 ;;; Profiles.
 ;;;
 
-(define* (lower-input store input #:optional (system (%current-system)))
-  "Lower INPUT so that it contains derivations instead of packages."
-  (match input
-    ((name (? package? package))
-     `(,name ,(package-derivation store package system)))
-    ((name (? package? package) output)
-     `(,name ,(package-derivation store package system)
-             ,output))
-    (_ input)))
-
-(define (profile-derivation store manifest)
+(define (profile-derivation manifest)
   "Return a derivation that builds a profile (aka. 'user environment') with
 the given MANIFEST."
+  (define inputs
+    (append-map (match-lambda
+                 (($ <manifest-entry> name version
+                                      output (? package? package) deps)
+                  `((,package ,output) ,@deps))
+                 (($ <manifest-entry> name version output path deps)
+                  ;; Assume PATH and DEPS are already valid.
+                  `(,path ,@deps)))
+                (manifest-entries manifest)))
+
   (define builder
-    `(begin
-       (use-modules (ice-9 pretty-print)
-                    (guix build union))
-
-       (setvbuf (current-output-port) _IOLBF)
-       (setvbuf (current-error-port) _IOLBF)
-
-       (let ((output (assoc-ref %outputs "out"))
-             (inputs (map cdr %build-inputs)))
-         (union-build output inputs
-                      #:log-port (%make-void-port "w"))
-         (call-with-output-file (string-append output "/manifest")
-           (lambda (p)
-             (pretty-print ',(manifest->sexp manifest) p))))))
-
-  (build-expression->derivation store "profile" builder
-                                #:inputs
-                                (append-map (match-lambda
-                                             (($ <manifest-entry> name version
-                                                 output path deps (inputs ..1))
-                                              (map (cute lower-input store <>)
-                                                   inputs))
-                                             (($ <manifest-entry> name version
-                                                 output path deps)
-                                              ;; Assume PATH and DEPS are
-                                              ;; already valid.
-                                              `((,name ,path) ,@deps)))
-                                            (manifest-entries manifest))
-                                #:modules '((guix build union))
-                                #:local-build? #t))
+    #~(begin
+        (use-modules (ice-9 pretty-print)
+                     (guix build union))
+
+        (setvbuf (current-output-port) _IOLBF)
+        (setvbuf (current-error-port) _IOLBF)
+
+        (union-build #$output '#$inputs
+                     #:log-port (%make-void-port "w"))
+        (call-with-output-file (string-append #$output "/manifest")
+          (lambda (p)
+            (pretty-print '#$(manifest->gexp manifest) p)))))
+
+  (gexp->derivation "profile" builder
+                    #:modules '((guix build union))
+                    #:local-build? #t))
 
 (define (profile-regexp profile)
   "Return a regular expression that matches PROFILE's name and number."
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 1c3209f905..31da773a53 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -24,6 +24,7 @@
   #:use-module (guix derivations)
   #:use-module (guix packages)
   #:use-module (guix profiles)
+  #:use-module (guix monads)
   #:use-module (guix utils)
   #:use-module (guix config)
   #:use-module (guix scripts build)
@@ -82,7 +83,8 @@ return PROFILE unchanged.  The goal is to treat '-p ~/.guix-profile' as if
 
 (define (link-to-empty-profile generation)
   "Link GENERATION, a string, to the empty profile."
-  (let* ((drv  (profile-derivation (%store) (manifest '())))
+  (let* ((drv  (run-with-store (%store)
+                 (profile-derivation (manifest '()))))
          (prof (derivation->output-path drv "out")))
     (when (not (build-derivations (%store) (list drv)))
           (leave (_ "failed to build the empty profile~%")))
@@ -205,10 +207,14 @@ packages that will/would be installed and removed."
                    remove))))
     (_ #f))
   (match install
-    ((($ <manifest-entry> name version output path _) ..1)
+    ((($ <manifest-entry> name version output item _) ..1)
      (let ((len     (length name))
-           (install (map (cut format #f "   ~a-~a\t~a\t~a" <> <> <> <>)
-                         name version output path)))
+           (install (map (lambda (name version output item)
+                           (format #f "   ~a-~a\t~a\t~a" name version output
+                                   (if (package? item)
+                                       (package-output (%store) item output)
+                                       item)))
+                         name version output item)))
        (if dry-run?
            (format (current-error-port)
                    (N_ "The following package would be installed:~%~{~a~%~}~%"
@@ -253,17 +259,6 @@ RX."
                 (package-name p2))))
    same-location?))
 
-(define (input->name+path input)
-  "Convert the name/package/sub-drv tuple INPUT to a name/store-path tuple."
-  (let loop ((input input))
-    (match input
-      ((name (? package? package))
-       (loop `(,name ,package "out")))
-      ((name (? package? package) sub-drv)
-       `(,name ,(package-output (%store) package sub-drv)))
-      (_
-       input))))
-
 (define %sigint-prompt
   ;; The prompt to jump to upon SIGINT.
   (make-prompt-tag "interruptible"))
@@ -517,6 +512,8 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n"))
   (display (_ "
   -A, --list-available[=REGEXP]
                          list available packages matching REGEXP"))
+  (display (_ "
+  --show=PACKAGE         show details about PACKAGE"))
   (newline)
   (show-build-options-help)
   (newline)
@@ -615,6 +612,11 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n"))
                    (values (cons `(query list-available ,(or arg ""))
                                  result)
                            #f)))
+         (option '("show") #t #t
+                 (lambda (opt name arg result arg-handler)
+                   (values (cons `(query show ,arg)
+                                 result)
+                           #f)))
 
          %standard-build-options))
 
@@ -639,22 +641,11 @@ return the new list of manifest entries."
 
     (delete-duplicates deps same?))
 
-  (define (package->manifest-entry p output)
-    ;; Return a manifest entry for the OUTPUT of package P.
-    (check-package-freshness p)
+  (define (package->manifest-entry* package output)
+    (check-package-freshness package)
     ;; When given a package via `-e', install the first of its
     ;; outputs (XXX).
-    (let* ((output (or output (car (package-outputs p))))
-           (path   (package-output (%store) p output))
-           (deps   (deduplicate (package-transitive-propagated-inputs p))))
-      (manifest-entry
-       (name (package-name p))
-       (version (package-version p))
-       (output output)
-       (path path)
-       (dependencies (map input->name+path deps))
-       (inputs (cons (list (package-name p) p output)
-                     deps)))))
+    (package->manifest-entry package output))
 
   (define upgrade-regexps
     (filter-map (match-lambda
@@ -685,7 +676,7 @@ return the new list of manifest entries."
   (define to-upgrade
     (map (match-lambda
           ((package output)
-           (package->manifest-entry package output)))
+           (package->manifest-entry* package output)))
          packages-to-upgrade))
 
   (define packages-to-install
@@ -703,7 +694,7 @@ return the new list of manifest entries."
   (define to-install
     (append (map (match-lambda
                   ((package output)
-                   (package->manifest-entry package output)))
+                   (package->manifest-entry* package output)))
                  packages-to-install)
             (filter-map (match-lambda
                          (('install . (? package?))
@@ -716,7 +707,7 @@ return the new list of manifest entries."
                              (name name)
                              (version version)
                              (output #f)
-                             (path path))))
+                             (item path))))
                          (_ #f))
                         opts)))
 
@@ -743,6 +734,16 @@ removed from MANIFEST."
   (unless (string=? profile %current-profile)
     (add-indirect-root store (canonicalize-path profile))))
 
+(define (readlink* file)
+  "Call 'readlink' until the result is not a symlink."
+  (catch 'system-error
+    (lambda ()
+      (readlink* (readlink file)))
+    (lambda args
+      (if (= EINVAL (system-error-errno args))
+          file
+          (apply throw args)))))
+
 
 ;;;
 ;;; Entry point.
@@ -914,36 +915,41 @@ more information.~%"))
              (when (equal? profile %current-profile)
                (ensure-default-profile))
 
-             (if (manifest=? new manifest)
-                 (format (current-error-port) (_ "nothing to be done~%"))
-                 (let ((prof-drv (profile-derivation (%store) new))
-                       (remove   (manifest-matching-entries manifest remove)))
-                   (show-what-to-remove/install remove install dry-run?)
-                   (show-what-to-build (%store) (list prof-drv)
-                                       #:use-substitutes?
-                                       (assoc-ref opts 'substitutes?)
-                                       #:dry-run? dry-run?)
-
-                   (or dry-run?
-                       (let* ((prof   (derivation->output-path prof-drv))
-                              (number (generation-number profile))
-
-                              ;; Always use NUMBER + 1 for the new profile,
-                              ;; possibly overwriting a "previous future
-                              ;; generation".
-                              (name   (generation-file-name profile
-                                                            (+ 1 number))))
-                         (and (build-derivations (%store) (list prof-drv))
-                              (let ((count (length entries)))
-                                (switch-symlinks name prof)
-                                (switch-symlinks profile name)
-                                (maybe-register-gc-root (%store) profile)
-                                (format #t (N_ "~a package in profile~%"
-                                               "~a packages in profile~%"
-                                               count)
-                                        count)
-                                (display-search-paths entries
-                                                      profile)))))))))))
+             (unless (and (null? install) (null? remove))
+               (let* ((prof-drv (run-with-store (%store)
+                                  (profile-derivation new)))
+                      (prof     (derivation->output-path prof-drv))
+                      (remove   (manifest-matching-entries manifest remove)))
+                 (show-what-to-remove/install remove install dry-run?)
+                 (show-what-to-build (%store) (list prof-drv)
+                                     #:use-substitutes?
+                                     (assoc-ref opts 'substitutes?)
+                                     #:dry-run? dry-run?)
+
+                 (cond
+                  (dry-run? #t)
+                  ((and (file-exists? profile)
+                        (and=> (readlink* profile) (cut string=? prof <>)))
+                   (format (current-error-port) (_ "nothing to be done~%")))
+                  (else
+                   (let* ((number (generation-number profile))
+
+                          ;; Always use NUMBER + 1 for the new profile,
+                          ;; possibly overwriting a "previous future
+                          ;; generation".
+                          (name   (generation-file-name profile
+                                                        (+ 1 number))))
+                     (and (build-derivations (%store) (list prof-drv))
+                          (let ((count (length entries)))
+                            (switch-symlinks name prof)
+                            (switch-symlinks profile name)
+                            (maybe-register-gc-root (%store) profile)
+                            (format #t (N_ "~a package in profile~%"
+                                           "~a packages in profile~%"
+                                           count)
+                                    count)
+                            (display-search-paths entries
+                                                  profile))))))))))))
 
   (define (process-query opts)
     ;; Process any query specified by OPTS.  Return #t when a query was
@@ -1042,6 +1048,14 @@ more information.~%"))
                       (find-packages-by-description regexp)))
            #t))
 
+        (('show requested-name)
+         (let-values (((name version)
+                       (package-name->name+version requested-name)))
+           (leave-on-EPIPE
+            (for-each (cute package->recutils <> (current-output-port))
+                      (find-packages-by-name name version)))
+           #t))
+
         (('search-paths)
          (let* ((manifest (profile-manifest profile))
                 (entries  (manifest-entries manifest))
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index af7beb748b..a91ea69b1f 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29,6 +30,8 @@
   #:use-module ((gnu packages base) #:select (%final-inputs))
   #:use-module (ice-9 match)
   #:use-module (ice-9 regex)
+  #:use-module (ice-9 vlist)
+  #:use-module (ice-9 format)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
@@ -59,6 +62,9 @@
                     (x
                      (leave (_ "~a: invalid selection; expected `core' or `non-core'")
                             arg)))))
+        (option '(#\l "list-dependent") #f #f
+                (lambda (opt name arg result)
+                  (alist-cons 'list-dependent? #t result)))
 
         (option '("key-server") #t #f
                 (lambda (opt name arg result)
@@ -96,6 +102,9 @@ specified with `--select'.\n"))
   (display (_ "
   -s, --select=SUBSET    select all the packages in SUBSET, one of
                          `core' or `non-core'"))
+  (display (_ "
+  -l, --list-dependent   list top-level dependent packages that would need to
+                         be rebuilt as a result of upgrading PACKAGE..."))
   (newline)
   (display (_ "
       --key-server=HOST  use HOST as the OpenPGP key server"))
@@ -193,9 +202,10 @@ update would trigger a complete rebuild."
         ;; XXX: Fails to catch MPFR/MPC, whose *source* is used as input.
         (member (package-name package) names))))
 
-  (let* ((opts         (parse-options))
-         (update?      (assoc-ref opts 'update?))
-         (key-download (assoc-ref opts 'key-download))
+  (let* ((opts            (parse-options))
+         (update?         (assoc-ref opts 'update?))
+         (list-dependent? (assoc-ref opts 'list-dependent?))
+         (key-download    (assoc-ref opts 'key-download))
          (packages
           (match (concatenate
                   (filter-map (match-lambda
@@ -220,26 +230,48 @@ update would trigger a complete rebuild."
                  (some                        ; user-specified packages
                   some))))
     (with-error-handling
-      (if update?
-          (let ((store (open-connection)))
-            (parameterize ((%openpgp-key-server
-                            (or (assoc-ref opts 'key-server)
-                                (%openpgp-key-server)))
-                           (%gpg-command
-                            (or (assoc-ref opts 'gpg-command)
-                                (%gpg-command))))
-              (for-each
-               (cut update-package store <> #:key-download key-download)
-               packages)))
-          (for-each (lambda (package)
-                      (match (false-if-exception (package-update-path package))
-                        ((new-version . directory)
-                         (let ((loc (or (package-field-location package 'version)
-                                        (package-location package))))
-                           (format (current-error-port)
-                                   (_ "~a: ~a would be upgraded from ~a to ~a~%")
-                                   (location->string loc)
-                                   (package-name package) (package-version package)
-                                   new-version)))
-                        (_ #f)))
-                    packages)))))
+      (cond
+       (list-dependent?
+        (let* ((rebuilds (map package-full-name
+                              (package-covering-dependents packages)))
+               (total-dependents
+                (length (package-transitive-dependents packages))))
+          (if (= total-dependents 0)
+              (format (current-output-port)
+                      (N_ "No dependents other than itself: ~{~a~}~%"
+                          "No dependents other than themselves: ~{~a~^ ~}~%"
+                          (length packages))
+                      (map package-full-name packages))
+              (format (current-output-port)
+                      (N_ (N_ "A single dependent package: ~2*~{~a~}~%"
+                              "Building the following package would ensure ~d \
+dependent packages are rebuilt; ~*~{~a~^ ~}~%"
+                              total-dependents)
+                          "Building the following ~d packages would ensure ~d \
+dependent packages are rebuilt: ~{~a~^ ~}~%"
+                          (length rebuilds))
+                      (length rebuilds) total-dependents rebuilds))))
+       (update?
+        (let ((store (open-connection)))
+          (parameterize ((%openpgp-key-server
+                          (or (assoc-ref opts 'key-server)
+                              (%openpgp-key-server)))
+                         (%gpg-command
+                          (or (assoc-ref opts 'gpg-command)
+                              (%gpg-command))))
+            (for-each
+             (cut update-package store <> #:key-download key-download)
+             packages))))
+       (else
+        (for-each (lambda (package)
+                    (match (false-if-exception (package-update-path package))
+                      ((new-version . directory)
+                       (let ((loc (or (package-field-location package 'version)
+                                      (package-location package))))
+                         (format (current-error-port)
+                                 (_ "~a: ~a would be upgraded from ~a to ~a~%")
+                                 (location->string loc)
+                                 (package-name package) (package-version package)
+                                 new-version)))
+                      (_ #f)))
+                  packages))))))
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 66ad9192c1..4f1869af38 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -95,8 +95,8 @@
   (store-lift show-what-to-build))
 
 
-(define* (copy-closure item target
-                       #:key (log-port (current-error-port)))
+(define* (copy-item item target
+                    #:key (log-port (current-error-port)))
   "Copy ITEM to the store under root directory TARGET and register it."
   (mlet* %store-monad ((refs (references* item)))
     (let ((dest  (string-append target item))
@@ -118,6 +118,18 @@
 
       (return #t))))
 
+(define* (copy-closure item target
+                       #:key (log-port (current-error-port)))
+  "Copy ITEM and all its dependencies to the store under root directory
+TARGET, and register them."
+  (mlet* %store-monad ((refs    (references* item))
+                       (to-copy (topologically-sorted*
+                                 (delete-duplicates (cons item refs)
+                                                    string=?))))
+    (sequence %store-monad
+              (map (cut copy-item <> target #:log-port log-port)
+                   to-copy))))
+
 (define* (install os-drv target
                   #:key (log-port (current-output-port))
                   grub? grub.cfg device)
@@ -136,16 +148,10 @@ When GRUB? is true, install GRUB on DEVICE, using GRUB.CFG."
             (mkdir-p (string-append target (%store-prefix)))
 
             ;; Copy items to the new store.
-            (sequence %store-monad
-                      (map (cut copy-closure <> target #:log-port log-port)
-                           to-copy))))))
+            (copy-closure to-copy target #:log-port log-port)))))
 
   (mlet* %store-monad ((os-dir -> (derivation->output-path os-drv))
-                       (refs      (references* os-dir))
-                       (lst    -> (delete-duplicates (cons os-dir refs)
-                                                     string=?))
-                       (to-copy   (topologically-sorted* lst))
-                       (%         (maybe-copy to-copy)))
+                       (%         (maybe-copy os-dir)))
 
     ;; Create a bunch of additional files.
     (format log-port "populating '~a'...~%" target)
@@ -166,6 +172,16 @@ When GRUB? is true, install GRUB on DEVICE, using GRUB.CFG."
   ;; The system profile.
   (string-append %state-directory "/profiles/system"))
 
+(define-syntax-rule (save-environment-excursion body ...)
+  "Save the current environment variables, run BODY..., and restore them."
+  (let ((env (environ)))
+    (dynamic-wind
+      (const #t)
+      (lambda ()
+        body ...)
+      (lambda ()
+        (environ env)))))
+
 (define* (switch-to-system os
                            #:optional (profile %system-profile))
   "Make a new generation of PROFILE pointing to the directory of OS, switch to
@@ -179,7 +195,11 @@ it atomically, and then run OS's activation script."
       (switch-symlinks profile generation)
 
       (format #t (_ "activating system...~%"))
-      (return (primitive-load (derivation->output-path script)))
+
+      ;; The activation script may change $PATH, among others, so protect
+      ;; against that.
+      (return (save-environment-excursion
+               (primitive-load (derivation->output-path script))))
 
       ;; TODO: Run 'deco reload ...'.
       )))
@@ -293,7 +313,8 @@ actions."
              (mlet %store-monad ((% (switch-to-system os)))
                (when grub?
                  (unless (false-if-exception
-                          (install-grub grub.cfg device "/"))
+                          (install-grub (derivation->output-path grub.cfg)
+                                        device "/"))
                    (leave (_ "failed to install GRUB on device '~a'~%")
                           device)))
                (return #t)))
diff --git a/guix/ui.scm b/guix/ui.scm
index 7338b82401..9112d55daf 100644
--- a/guix/ui.scm
+++ b/guix/ui.scm
@@ -453,9 +453,23 @@ WIDTH columns."
        (fill-paragraph str width
                        (string-length "description: ")))))
 
+  (define (dependencies->recutils packages)
+    (let ((list (string-join (map package-full-name
+                                  (sort packages package<?)) " ")))
+      (string->recutils
+       (fill-paragraph list width
+                       (string-length "dependencies: ")))))
+
+  (define (package<? p1 p2)
+    (string<? (package-full-name p1) (package-full-name p2)))
+
   ;; Note: Don't i18n field names so that people can post-process it.
   (format port "name: ~a~%" (package-name p))
   (format port "version: ~a~%" (package-version p))
+  (format port "dependencies: ~a~%"
+          (match (package-direct-inputs p)
+            (((labels inputs . _) ...)
+             (dependencies->recutils (filter package? inputs)))))
   (format port "location: ~a~%"
           (or (and=> (package-location p) location->string)
               (_ "unknown")))
diff --git a/guix/utils.scm b/guix/utils.scm
index 700a191d71..b61ff2477d 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -72,6 +73,8 @@
             call-with-temporary-output-file
             with-atomic-file-output
             fold2
+            fold-tree
+            fold-tree-leaves
 
             filtered-port
             compressed-port
@@ -649,6 +652,36 @@ output port, and PROC's result is returned."
              (lambda (result1 result2)
                (fold2 proc result1 result2 (cdr lst1) (cdr lst2)))))))))
 
+(define (fold-tree proc init children roots)
+  "Call (PROC NODE RESULT) for each node in the tree that is reachable from
+ROOTS, using INIT as the initial value of RESULT.  The order in which nodes
+are traversed is not specified, however, each node is visited only once, based
+on an eq? check.  Children of a node to be visited are generated by
+calling (CHILDREN NODE), the result of which should be a list of nodes that
+are connected to NODE in the tree, or '() or #f if NODE is a leaf node."
+  (let loop ((result init)
+             (seen vlist-null)
+             (lst roots))
+    (match lst
+      (() result)
+      ((head . tail)
+       (if (not (vhash-assq head seen))
+           (loop (proc head result)
+                 (vhash-consq head #t seen)
+                 (match (children head)
+                   ((or () #f) tail)
+                   (children (append tail children))))
+           (loop result seen tail))))))
+
+(define (fold-tree-leaves proc init children roots)
+  "Like fold-tree, but call (PROC NODE RESULT) only for leaf nodes."
+  (fold-tree
+   (lambda (node result)
+     (match (children node)
+       ((or () #f) (proc node result))
+       (else result)))
+   init children roots))
+
 
 ;;;
 ;;; Source location.
diff --git a/po/guix/LINGUAS b/po/guix/LINGUAS
index 74504b6f07..6ba2fe22cc 100644
--- a/po/guix/LINGUAS
+++ b/po/guix/LINGUAS
@@ -4,6 +4,7 @@ de
 en@boldquot
 en@quot
 eo
+hu
 pt_BR
 sr
 vi
diff --git a/po/guix/de.po b/po/guix/de.po
index 4b24391c5b..185cb0d9e7 100644
--- a/po/guix/de.po
+++ b/po/guix/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: guix 0.7-pre1\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-07-13 17:06+0200\n"
+"POT-Creation-Date: 2014-07-25 00:55+0200\n"
 "PO-Revision-Date: 2014-07-13 20:38+0100\n"
 "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@@ -18,7 +18,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 1.5.4\n"
 
-#: gnu/packages.scm:95
+#: gnu/packages.scm:102
 #, scheme-format
 msgid "cannot access `~a': ~a~%"
 msgstr "Zugriff auf »~a« nicht möglich: ~a~%"
@@ -165,9 +165,9 @@ msgid ""
 msgstr ""
 
 #: guix/scripts/build.scm:246 guix/scripts/download.scm:53
-#: guix/scripts/package.scm:523 guix/scripts/gc.scm:58
+#: guix/scripts/package.scm:525 guix/scripts/gc.scm:58
 #: guix/scripts/hash.scm:55 guix/scripts/pull.scm:82
-#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:334
+#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
 msgid ""
 "\n"
 "  -h, --help             display this help and exit"
@@ -176,9 +176,9 @@ msgstr ""
 "  -h, --help             diese Hilfe anzeigen und beenden"
 
 #: guix/scripts/build.scm:248 guix/scripts/download.scm:55
-#: guix/scripts/package.scm:525 guix/scripts/gc.scm:60
+#: guix/scripts/package.scm:527 guix/scripts/gc.scm:60
 #: guix/scripts/hash.scm:57 guix/scripts/pull.scm:84
-#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:336
+#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
 msgid ""
 "\n"
 "  -V, --version          display version information and exit"
@@ -192,8 +192,8 @@ msgid "sources do not match any package:~{ ~a~}~%"
 msgstr ""
 
 #: guix/scripts/build.scm:397 guix/scripts/download.scm:96
-#: guix/scripts/package.scm:756 guix/scripts/gc.scm:122
-#: guix/scripts/pull.scm:115 guix/scripts/system.scm:386
+#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
+#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
 #, scheme-format
 msgid "~A: unrecognized option~%"
 msgstr "~A: nicht erkannte Option~%"
@@ -244,8 +244,8 @@ msgstr "Leeres Profil konnte nicht erstellt werden~%"
 msgid "switching from generation ~a to ~a~%"
 msgstr ""
 
-#: guix/scripts/package.scm:108 guix/scripts/package.scm:866
-#: guix/scripts/package.scm:978
+#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
+#: guix/scripts/package.scm:985
 #, scheme-format
 msgid "profile '~a' does not exist~%"
 msgstr "Profil »~a« existiert nicht~%"
@@ -399,62 +399,71 @@ msgid ""
 "                         list available packages matching REGEXP"
 msgstr ""
 
-#: guix/scripts/package.scm:760
+#: guix/scripts/package.scm:520
+#, fuzzy
+msgid ""
+"\n"
+"  --show=PACKAGE         show details about PACKAGE"
+msgstr ""
+"\n"
+"  -i, --install=PAKET    PAKET installieren"
+
+#: guix/scripts/package.scm:767
 #, scheme-format
 msgid "~A: extraneous argument~%"
 msgstr ""
 
-#: guix/scripts/package.scm:775
+#: guix/scripts/package.scm:782
 #, scheme-format
 msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
 msgstr ""
 
-#: guix/scripts/package.scm:797
+#: guix/scripts/package.scm:804
 #, scheme-format
 msgid "error: while creating directory `~a': ~a~%"
 msgstr ""
 
-#: guix/scripts/package.scm:801
+#: guix/scripts/package.scm:808
 #, scheme-format
 msgid "Please create the `~a' directory, with you as the owner.~%"
 msgstr ""
 
-#: guix/scripts/package.scm:808
+#: guix/scripts/package.scm:815
 #, scheme-format
 msgid "error: directory `~a' is not owned by you~%"
 msgstr ""
 
-#: guix/scripts/package.scm:811
+#: guix/scripts/package.scm:818
 #, scheme-format
 msgid "Please change the owner of `~a' to user ~s.~%"
 msgstr ""
 
-#: guix/scripts/package.scm:836
+#: guix/scripts/package.scm:843
 #, scheme-format
 msgid "deleting ~a~%"
 msgstr ""
 
-#: guix/scripts/package.scm:889 guix/scripts/package.scm:994
+#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
 #, scheme-format
 msgid "invalid syntax: ~a~%"
 msgstr "Unzulässige Syntax: ~a~%"
 
-#: guix/scripts/package.scm:918
+#: guix/scripts/package.scm:925
 #, scheme-format
 msgid "nothing to be done~%"
 msgstr "Nichts zu tun~%"
 
-#: guix/scripts/package.scm:941
+#: guix/scripts/package.scm:948
 #, scheme-format
 msgid "~a package in profile~%"
 msgstr "~a-Paket im Profil~%"
 
-#: guix/scripts/package.scm:956
+#: guix/scripts/package.scm:963
 #, scheme-format
 msgid "Generation ~a\t~a"
 msgstr ""
 
-#: guix/scripts/package.scm:963
+#: guix/scripts/package.scm:970
 #, scheme-format
 msgid "~a\t(current)~%"
 msgstr "~a\t(aktuell)~%"
@@ -747,93 +756,93 @@ msgstr "~a: ~a~%"
 msgid "failed to load operating system file '~a': ~s~%"
 msgstr ""
 
-#: guix/scripts/system.scm:111
+#: guix/scripts/system.scm:116
 #, scheme-format
 msgid "failed to register '~a' under '~a'~%"
 msgstr ""
 
-#: guix/scripts/system.scm:127
+#: guix/scripts/system.scm:144
 #, scheme-format
 msgid "initializing the current root file system~%"
 msgstr ""
 
-#: guix/scripts/system.scm:151 guix/scripts/system.scm:291
+#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
 #, scheme-format
 msgid "failed to install GRUB on device '~a'~%"
 msgstr ""
 
-#: guix/scripts/system.scm:176
+#: guix/scripts/system.scm:197
 #, scheme-format
 msgid "activating system...~%"
 msgstr "System wird aktiviert …~%"
 
-#: guix/scripts/system.scm:211
+#: guix/scripts/system.scm:236
 #, scheme-format
 msgid "unrecognized boot parameters for '~a'~%"
 msgstr "Nicht erkannte Startparameter für »~a«~%"
 
-#: guix/scripts/system.scm:295
+#: guix/scripts/system.scm:323
 #, scheme-format
 msgid "initializing operating system under '~a'...~%"
 msgstr ""
 
-#: guix/scripts/system.scm:311
+#: guix/scripts/system.scm:339
 msgid ""
 "Usage: guix system [OPTION] ACTION FILE\n"
 "Build the operating system declared in FILE according to ACTION.\n"
 msgstr ""
 
-#: guix/scripts/system.scm:314
+#: guix/scripts/system.scm:342
 msgid "The valid values for ACTION are:\n"
 msgstr "Die gültigen Werte für AKTION sind:\n"
 
-#: guix/scripts/system.scm:315
+#: guix/scripts/system.scm:343
 msgid "  - 'reconfigure', switch to a new operating system configuration\n"
 msgstr ""
 
-#: guix/scripts/system.scm:317
+#: guix/scripts/system.scm:345
 msgid "  - 'build', build the operating system without installing anything\n"
 msgstr ""
 
-#: guix/scripts/system.scm:319
+#: guix/scripts/system.scm:347
 msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
 msgstr ""
 
-#: guix/scripts/system.scm:321
+#: guix/scripts/system.scm:349
 msgid "  - 'vm-image', build a freestanding virtual machine image\n"
 msgstr ""
 
-#: guix/scripts/system.scm:323
+#: guix/scripts/system.scm:351
 msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
 msgstr ""
 
-#: guix/scripts/system.scm:325
+#: guix/scripts/system.scm:353
 msgid "  - 'init', initialize a root file system to run GNU.\n"
 msgstr ""
 
-#: guix/scripts/system.scm:329
+#: guix/scripts/system.scm:357
 msgid ""
 "\n"
 "      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
 msgstr ""
 
-#: guix/scripts/system.scm:331
+#: guix/scripts/system.scm:359
 msgid ""
 "\n"
 "      --no-grub          for 'init', do not install GRUB"
 msgstr ""
 
-#: guix/scripts/system.scm:394
+#: guix/scripts/system.scm:422
 #, scheme-format
 msgid "~a: unknown action~%"
 msgstr "~a: unbekannte Aktion~%"
 
-#: guix/scripts/system.scm:411
+#: guix/scripts/system.scm:439
 #, scheme-format
 msgid "wrong number of arguments for action '~a'~%"
 msgstr "Falsche Anzahl an Argumenten für Aktion »~a«~%"
 
-#: guix/scripts/system.scm:431
+#: guix/scripts/system.scm:459
 #, scheme-format
 msgid "no configuration file specified~%"
 msgstr "Keine Konfigurationsdatei angegeben~%"
@@ -976,21 +985,21 @@ msgstr "<unbekannter Ort>"
 msgid "failed to create configuration directory `~a': ~a~%"
 msgstr "Konfigurationsverzeichnis »~a« konnte nicht angelegt werden: ~a~%"
 
-#: guix/ui.scm:461 guix/ui.scm:475
+#: guix/ui.scm:475 guix/ui.scm:489
 msgid "unknown"
 msgstr "unbekannt"
 
-#: guix/ui.scm:584
+#: guix/ui.scm:598
 #, scheme-format
 msgid "invalid argument: ~a~%"
 msgstr "Ungültiges Argument: ~a~%"
 
-#: guix/ui.scm:589
+#: guix/ui.scm:603
 #, scheme-format
 msgid "Try `guix --help' for more information.~%"
 msgstr "Rufen Sie »guix --help« auf, um weitere Informationen zu erhalten.~%"
 
-#: guix/ui.scm:619
+#: guix/ui.scm:633
 msgid ""
 "Usage: guix COMMAND ARGS...\n"
 "Run COMMAND with ARGS.\n"
@@ -998,21 +1007,21 @@ msgstr ""
 "Aufruf: guix BEFEHL ARGUMENTE …\n"
 "BEFEHL mit ARGUMENTEN ausführen.\n"
 
-#: guix/ui.scm:622
+#: guix/ui.scm:636
 msgid "COMMAND must be one of the sub-commands listed below:\n"
 msgstr "BEFEHL muss einer der unten aufgelisteten Unterbefehle sein:\n"
 
-#: guix/ui.scm:642
+#: guix/ui.scm:656
 #, scheme-format
 msgid "guix: ~a: command not found~%"
 msgstr "guix: ~a: Befehl nicht gefunden~%"
 
-#: guix/ui.scm:660
+#: guix/ui.scm:674
 #, scheme-format
 msgid "guix: missing command name~%"
 msgstr "guix: Befehlsname fehlt~%"
 
-#: guix/ui.scm:668
+#: guix/ui.scm:682
 #, scheme-format
 msgid "guix: unrecognized option '~a'~%"
 msgstr "guix: nicht erkannte Option »~a«~%"
diff --git a/po/guix/eo.po b/po/guix/eo.po
index ec64cc8ef1..cffc546dc1 100644
--- a/po/guix/eo.po
+++ b/po/guix/eo.po
@@ -7,17 +7,17 @@ msgid ""
 msgstr ""
 "Project-Id-Version: guix 0.7-pre1\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-07-13 17:06+0200\n"
+"POT-Creation-Date: 2014-07-25 00:55+0200\n"
 "PO-Revision-Date: 2014-07-14 11:29-0300\n"
 "Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
-"Language: Esperanto\n"
+"Language: eo\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.4\n"
 
-#: gnu/packages.scm:95
+#: gnu/packages.scm:102
 #, scheme-format
 msgid "cannot access `~a': ~a~%"
 msgstr "ne eblas atingi '~a': ~a~%"
@@ -203,9 +203,9 @@ msgstr ""
 "      --log-file         liveri la protokol-dosierajn nomojn por la indikitaj derivaĵoj"
 
 #: guix/scripts/build.scm:246 guix/scripts/download.scm:53
-#: guix/scripts/package.scm:523 guix/scripts/gc.scm:58
+#: guix/scripts/package.scm:525 guix/scripts/gc.scm:58
 #: guix/scripts/hash.scm:55 guix/scripts/pull.scm:82
-#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:334
+#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
 msgid ""
 "\n"
 "  -h, --help             display this help and exit"
@@ -214,9 +214,9 @@ msgstr ""
 "  -h, --help             montri ĉi tiun helpon kaj eliri"
 
 #: guix/scripts/build.scm:248 guix/scripts/download.scm:55
-#: guix/scripts/package.scm:525 guix/scripts/gc.scm:60
+#: guix/scripts/package.scm:527 guix/scripts/gc.scm:60
 #: guix/scripts/hash.scm:57 guix/scripts/pull.scm:84
-#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:336
+#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
 msgid ""
 "\n"
 "  -V, --version          display version information and exit"
@@ -230,8 +230,8 @@ msgid "sources do not match any package:~{ ~a~}~%"
 msgstr "fontoj ne kongruas al iu ajn pako:~{ ~a~}~%"
 
 #: guix/scripts/build.scm:397 guix/scripts/download.scm:96
-#: guix/scripts/package.scm:756 guix/scripts/gc.scm:122
-#: guix/scripts/pull.scm:115 guix/scripts/system.scm:386
+#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
+#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
 #, scheme-format
 msgid "~A: unrecognized option~%"
 msgstr "~A: nerekonata modifilo~%"
@@ -290,8 +290,8 @@ msgstr "fiasko dum konstruo de malplena profilo~%"
 msgid "switching from generation ~a to ~a~%"
 msgstr "alterno el generacio ~a al ~a~%"
 
-#: guix/scripts/package.scm:108 guix/scripts/package.scm:866
-#: guix/scripts/package.scm:978
+#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
+#: guix/scripts/package.scm:985
 #, scheme-format
 msgid "profile '~a' does not exist~%"
 msgstr "profilo '~a' ne ekzistas~%"
@@ -476,62 +476,71 @@ msgstr ""
 "  -A, --list-available[=REGESP]\n"
 "                         listigi disponeblajn pakojn kongruantajn al REGESP"
 
-#: guix/scripts/package.scm:760
+#: guix/scripts/package.scm:520
+#, fuzzy
+msgid ""
+"\n"
+"  --show=PACKAGE         show details about PACKAGE"
+msgstr ""
+"\n"
+"  -i, --install=PAKO     instali PAKOn"
+
+#: guix/scripts/package.scm:767
 #, scheme-format
 msgid "~A: extraneous argument~%"
 msgstr "~A: fremda argumento~%"
 
-#: guix/scripts/package.scm:775
+#: guix/scripts/package.scm:782
 #, scheme-format
 msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
 msgstr "Provu \"info '(guix) Invoking guix package'\" por pli da informo.'%"
 
-#: guix/scripts/package.scm:797
+#: guix/scripts/package.scm:804
 #, scheme-format
 msgid "error: while creating directory `~a': ~a~%"
 msgstr "eraro: dum kreo de dosierujo '~a': ~a~%"
 
-#: guix/scripts/package.scm:801
+#: guix/scripts/package.scm:808
 #, scheme-format
 msgid "Please create the `~a' directory, with you as the owner.~%"
 msgstr "Bonvolu krei la dosierujon '~a', kun vi kiel posedanto.~%"
 
-#: guix/scripts/package.scm:808
+#: guix/scripts/package.scm:815
 #, scheme-format
 msgid "error: directory `~a' is not owned by you~%"
 msgstr "eraro: dosierujo '~a' ne estas posedata de vi~%"
 
-#: guix/scripts/package.scm:811
+#: guix/scripts/package.scm:818
 #, scheme-format
 msgid "Please change the owner of `~a' to user ~s.~%"
 msgstr "Bonvole ŝanĝu la posedanton de '~a' al la uzanto ~s.~%"
 
-#: guix/scripts/package.scm:836
+#: guix/scripts/package.scm:843
 #, scheme-format
 msgid "deleting ~a~%"
 msgstr "ni forigas ~a~%"
 
-#: guix/scripts/package.scm:889 guix/scripts/package.scm:994
+#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
 #, scheme-format
 msgid "invalid syntax: ~a~%"
 msgstr "malvalida sintakso: ~a~%"
 
-#: guix/scripts/package.scm:918
+#: guix/scripts/package.scm:925
 #, scheme-format
 msgid "nothing to be done~%"
 msgstr "nenio por fari~%"
 
-#: guix/scripts/package.scm:941
+#: guix/scripts/package.scm:948
 #, scheme-format
 msgid "~a package in profile~%"
 msgstr "pako ~a en profilo~%"
 
-#: guix/scripts/package.scm:956
+#: guix/scripts/package.scm:963
 #, scheme-format
 msgid "Generation ~a\t~a"
 msgstr "Generacio ~a\t~a"
 
-#: guix/scripts/package.scm:963
+#: guix/scripts/package.scm:970
 #, scheme-format
 msgid "~a\t(current)~%"
 msgstr "~a\t(nuna)~%"
@@ -864,37 +873,37 @@ msgstr "~a: ~a~%"
 msgid "failed to load operating system file '~a': ~s~%"
 msgstr "fiasko dum ŝargo je operaci-sistema dosiero '~a': ~s~%"
 
-#: guix/scripts/system.scm:111
+#: guix/scripts/system.scm:116
 #, scheme-format
 msgid "failed to register '~a' under '~a'~%"
 msgstr "fiasko dum registro de '~a' sub '~a'~%"
 
-#: guix/scripts/system.scm:127
+#: guix/scripts/system.scm:144
 #, scheme-format
 msgid "initializing the current root file system~%"
 msgstr "ekigado de la nuna radika dosiersistemo~%"
 
-#: guix/scripts/system.scm:151 guix/scripts/system.scm:291
+#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
 #, scheme-format
 msgid "failed to install GRUB on device '~a'~%"
 msgstr "fiasko dum instalo de GRUB en la aparato '~a'~%"
 
-#: guix/scripts/system.scm:176
+#: guix/scripts/system.scm:197
 #, scheme-format
 msgid "activating system...~%"
 msgstr "ni aktivas la sistemon...~%"
 
-#: guix/scripts/system.scm:211
+#: guix/scripts/system.scm:236
 #, scheme-format
 msgid "unrecognized boot parameters for '~a'~%"
 msgstr "nerekonataj ekŝargaj parametroj por '~a'~%"
 
-#: guix/scripts/system.scm:295
+#: guix/scripts/system.scm:323
 #, scheme-format
 msgid "initializing operating system under '~a'...~%"
 msgstr "ni ekigas la operaci-sistemon sub '~a'...~%"
 
-#: guix/scripts/system.scm:311
+#: guix/scripts/system.scm:339
 msgid ""
 "Usage: guix system [OPTION] ACTION FILE\n"
 "Build the operating system declared in FILE according to ACTION.\n"
@@ -902,35 +911,35 @@ msgstr ""
 "Uzmaniero: guix system [MODIFILO] AGO DOSIERO\n"
 "Konstrui la operaci-sistemon deklarita en DOSIERO akorde al AGO.\n"
 
-#: guix/scripts/system.scm:314
+#: guix/scripts/system.scm:342
 msgid "The valid values for ACTION are:\n"
 msgstr "La validaj valoroj por AGO estas:\n"
 
-#: guix/scripts/system.scm:315
+#: guix/scripts/system.scm:343
 msgid "  - 'reconfigure', switch to a new operating system configuration\n"
 msgstr "  - 'reconfigure', alterni al nova operaci-sistema agordaro\n"
 
-#: guix/scripts/system.scm:317
+#: guix/scripts/system.scm:345
 msgid "  - 'build', build the operating system without installing anything\n"
 msgstr "  - 'build', konstrui la operaci-sistemon sen instali ion ajn\n"
 
-#: guix/scripts/system.scm:319
+#: guix/scripts/system.scm:347
 msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
 msgstr "  - 'vm', konstrui virtual-maŝinan bildon kiu kundividas la gastigantan memoron\n"
 
-#: guix/scripts/system.scm:321
+#: guix/scripts/system.scm:349
 msgid "  - 'vm-image', build a freestanding virtual machine image\n"
 msgstr "  - 'vm-image', konstrui memstaran virtual-maŝinan bildon\n"
 
-#: guix/scripts/system.scm:323
+#: guix/scripts/system.scm:351
 msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
 msgstr "  - 'disk-image', konstrui disk-bildon, taŭga por USB-memoro\n"
 
-#: guix/scripts/system.scm:325
+#: guix/scripts/system.scm:353
 msgid "  - 'init', initialize a root file system to run GNU.\n"
 msgstr "  - 'init', ekigi radikan dosiersistemon por lanĉi GNU-on.\n"
 
-#: guix/scripts/system.scm:329
+#: guix/scripts/system.scm:357
 msgid ""
 "\n"
 "      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
@@ -938,7 +947,7 @@ msgstr ""
 "\n"
 "      --image-size=GRANDO por 'vm-image', produkti bildon je GRANDO"
 
-#: guix/scripts/system.scm:331
+#: guix/scripts/system.scm:359
 msgid ""
 "\n"
 "      --no-grub          for 'init', do not install GRUB"
@@ -946,17 +955,17 @@ msgstr ""
 "\n"
 "      --no-grub          por 'init', ne instali GRUB"
 
-#: guix/scripts/system.scm:394
+#: guix/scripts/system.scm:422
 #, scheme-format
 msgid "~a: unknown action~%"
 msgstr "~a: nekonata pako~%"
 
-#: guix/scripts/system.scm:411
+#: guix/scripts/system.scm:439
 #, scheme-format
 msgid "wrong number of arguments for action '~a'~%"
 msgstr "malĝusta nombro da argumentoj por la ago '~a'~%"
 
-#: guix/scripts/system.scm:431
+#: guix/scripts/system.scm:459
 #, scheme-format
 msgid "no configuration file specified~%"
 msgstr "neniu agorda dosiero estis indikata~%"
@@ -1103,21 +1112,21 @@ msgstr "<nekonata loko>"
 msgid "failed to create configuration directory `~a': ~a~%"
 msgstr "fiasko dum kreo de agorda dosierujo '~a': ~a~%"
 
-#: guix/ui.scm:461 guix/ui.scm:475
+#: guix/ui.scm:475 guix/ui.scm:489
 msgid "unknown"
 msgstr "nekonata"
 
-#: guix/ui.scm:584
+#: guix/ui.scm:598
 #, scheme-format
 msgid "invalid argument: ~a~%"
 msgstr "malvalida argumento: ~a~%"
 
-#: guix/ui.scm:589
+#: guix/ui.scm:603
 #, scheme-format
 msgid "Try `guix --help' for more information.~%"
 msgstr "Provu 'guix --help' por pli da informo.~%"
 
-#: guix/ui.scm:619
+#: guix/ui.scm:633
 msgid ""
 "Usage: guix COMMAND ARGS...\n"
 "Run COMMAND with ARGS.\n"
@@ -1125,21 +1134,21 @@ msgstr ""
 "Uzmaniero: guix KOMANDO ARGj...\n"
 "Lanĉas KOMANDOn kun ARGj.\n"
 
-#: guix/ui.scm:622
+#: guix/ui.scm:636
 msgid "COMMAND must be one of the sub-commands listed below:\n"
 msgstr "KOMANDO devas esti unu el la sub-komandoj sube listataj:\n"
 
-#: guix/ui.scm:642
+#: guix/ui.scm:656
 #, scheme-format
 msgid "guix: ~a: command not found~%"
 msgstr "guix: ~a: komando ne trovita~%"
 
-#: guix/ui.scm:660
+#: guix/ui.scm:674
 #, scheme-format
 msgid "guix: missing command name~%"
 msgstr "guix: mankas komanda nomo~%"
 
-#: guix/ui.scm:668
+#: guix/ui.scm:682
 #, scheme-format
 msgid "guix: unrecognized option '~a'~%"
 msgstr "guix: nerekonata modifilo: '~a'~%"
diff --git a/po/guix/hu.po b/po/guix/hu.po
new file mode 100644
index 0000000000..33b42f71dc
--- /dev/null
+++ b/po/guix/hu.po
@@ -0,0 +1,1277 @@
+# Hungarian translation for guix.
+# Copyright (C) 2014 Free Software Foundation, Inc.
+# This file is distributed under the same license as the guix package.
+#
+# Balázs Úr <urbalazs@gmail.com>, 2014.
+msgid ""
+msgstr ""
+"Project-Id-Version: guix 0.7-pre1\n"
+"Report-Msgid-Bugs-To: ludo@gnu.org\n"
+"POT-Creation-Date: 2014-07-25 00:55+0200\n"
+"PO-Revision-Date: 2014-07-18 17:37+0200\n"
+"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
+"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n"
+"Language: hu\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.5\n"
+
+#: gnu/packages.scm:102
+#, scheme-format
+msgid "cannot access `~a': ~a~%"
+msgstr "nem sikerült elérni: „~a”: ~a~%"
+
+#: guix/scripts/build.scm:54 guix/scripts/package.scm:349
+#, scheme-format
+msgid "ambiguous package specification `~a'~%"
+msgstr "nem egyértelmű csomag specifikáció: „~a”~%"
+
+#: guix/scripts/build.scm:55 guix/scripts/package.scm:351
+#, scheme-format
+msgid "choosing ~a from ~a~%"
+msgstr "~a választása innen: ~a~%"
+
+#: guix/scripts/build.scm:61
+#, scheme-format
+msgid "~A: package not found for version ~a~%"
+msgstr "~A: nem található csomag ehhez a verzióhoz: ~a~%"
+
+#: guix/scripts/build.scm:63
+#, scheme-format
+msgid "~A: unknown package~%"
+msgstr "~A: ismeretlen csomag~%"
+
+#: guix/scripts/build.scm:86
+#, scheme-format
+msgid "failed to create GC root `~a': ~a~%"
+msgstr "nem sikerült a GC gyökér létrehozása: „~a”: ~a~%"
+
+#: guix/scripts/build.scm:123
+msgid ""
+"\n"
+"  -K, --keep-failed      keep build tree of failed builds"
+msgstr ""
+"\n"
+"  -K, --keep-failed      sikertelen összeállítások összeállítási fájának\n"
+"                         megtartása"
+
+#: guix/scripts/build.scm:125
+msgid ""
+"\n"
+"  -n, --dry-run          do not build the derivations"
+msgstr ""
+"\n"
+"  -n, --dry-run          ne állítsa össze a származékokat"
+
+#: guix/scripts/build.scm:127
+msgid ""
+"\n"
+"      --fallback         fall back to building when the substituter fails"
+msgstr ""
+"\n"
+"      --fallback         térjen vissza az összeállításra, ha a helyettesítő\n"
+"                         sikertelen"
+
+#: guix/scripts/build.scm:129
+msgid ""
+"\n"
+"      --no-substitutes   build instead of resorting to pre-built substitutes"
+msgstr ""
+"\n"
+"      --no-substitutes   összeállítás az előre összeállított helyettesítők\n"
+"                         felhasználása helyett"
+
+#: guix/scripts/build.scm:131
+msgid ""
+"\n"
+"      --no-build-hook    do not attempt to offload builds via the build hook"
+msgstr ""
+"\n"
+"      --no-build-hook    ne próbáljon meg összeállításokat tehermentesíteni\n"
+"                         az összeállítási hurkon keresztül"
+
+#: guix/scripts/build.scm:133
+msgid ""
+"\n"
+"      --max-silent-time=SECONDS\n"
+"                         mark the build as failed after SECONDS of silence"
+msgstr ""
+"\n"
+"      --max-silent-time=MÁSODPERC\n"
+"                         az összeállítás sikertelennek jelölése MÁSODPERC\n"
+"                         hallgatás után"
+
+#: guix/scripts/build.scm:136
+msgid ""
+"\n"
+"      --timeout=SECONDS  mark the build as failed after SECONDS of activity"
+msgstr ""
+"\n"
+"      --timeout=MÁSODPERC  az összeállítás sikertelennek jelölése MÁSODPERC\n"
+"                         aktivitás után"
+
+#: guix/scripts/build.scm:138
+msgid ""
+"\n"
+"      --verbosity=LEVEL  use the given verbosity LEVEL"
+msgstr ""
+"\n"
+"      --verbosity=SZINT  a megadott bőbeszédűségi SZINT használata"
+
+#: guix/scripts/build.scm:140
+msgid ""
+"\n"
+"  -c, --cores=N          allow the use of up to N CPU cores for the build"
+msgstr ""
+"\n"
+"  -c, --cores=N          legfeljebb N CPU-mag használatának engedélyezése\n"
+"                         az összeállításhoz"
+
+#: guix/scripts/build.scm:206
+#, scheme-format
+msgid "~a: not a number~%"
+msgstr "~a: nem szám~%"
+
+#: guix/scripts/build.scm:223
+msgid ""
+"Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
+"Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"
+msgstr ""
+"Használat: guix build [KAPCSOLÓ]… CSOMAG-VAGY-SZÁRMAZTATOTT…\n"
+"A megadott CSOMAG-VAGY-SZÁRMAZTATOTT összeállítása, és a kimeneti elérési\n"
+"útjaik visszaadása.\n"
+
+#: guix/scripts/build.scm:225
+msgid ""
+"\n"
+"  -e, --expression=EXPR  build the package or derivation EXPR evaluates to"
+msgstr ""
+"\n"
+"  -e, --expression=KIF   a csomag vagy a kiértékelt származtatott KIF\n"
+"                         összeállítása"
+
+#: guix/scripts/build.scm:227
+msgid ""
+"\n"
+"  -S, --source           build the packages' source derivations"
+msgstr ""
+"\n"
+"  -S, --source           a csomagok forrásszármazékainak összeállítása"
+
+#: guix/scripts/build.scm:229
+msgid ""
+"\n"
+"  -s, --system=SYSTEM    attempt to build for SYSTEM--e.g., \"i686-linux\""
+msgstr ""
+"\n"
+"  -s, --system=RENDSZER  kísérlet a RENDSZERRE történő összeállításra,\n"
+"                         például „i686-linux”"
+
+#: guix/scripts/build.scm:231
+msgid ""
+"\n"
+"      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
+msgstr ""
+"\n"
+"      --target=HÁRMAS    kereszt összeállítás a HÁRMASRA, például\n"
+"                         „armel-linux-gnu”"
+
+#: guix/scripts/build.scm:233
+msgid ""
+"\n"
+"      --with-source=SOURCE\n"
+"                         use SOURCE when building the corresponding package"
+msgstr ""
+"\n"
+"      --with-source=FORRÁS\n"
+"                         FORRÁS használata a megfelelő csomag összeállításakor"
+
+#: guix/scripts/build.scm:236
+msgid ""
+"\n"
+"  -d, --derivations      return the derivation paths of the given packages"
+msgstr ""
+"\n"
+"  -d, --derivations      a megadott csomagok származék-útvonalának visszaadása"
+
+#: guix/scripts/build.scm:238
+msgid ""
+"\n"
+"  -r, --root=FILE        make FILE a symlink to the result, and register it\n"
+"                         as a garbage collector root"
+msgstr ""
+"\n"
+"  -r, --root=FÁJL        a FÁJL az eredmény egy szimbolikus linkje legyen,\n"
+"                         és regisztrálja gyökér szemétgyűjtőként"
+
+#: guix/scripts/build.scm:241
+msgid ""
+"\n"
+"      --log-file         return the log file names for the given derivations"
+msgstr ""
+"\n"
+"      --log-file         a megadott származékok naplófájl-neveinek visszaadása"
+
+#: guix/scripts/build.scm:246 guix/scripts/download.scm:53
+#: guix/scripts/package.scm:525 guix/scripts/gc.scm:58
+#: guix/scripts/hash.scm:55 guix/scripts/pull.scm:82
+#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
+msgid ""
+"\n"
+"  -h, --help             display this help and exit"
+msgstr ""
+"\n"
+"  -h, --help             ezen súgó megjelenítése és kilépés"
+
+#: guix/scripts/build.scm:248 guix/scripts/download.scm:55
+#: guix/scripts/package.scm:527 guix/scripts/gc.scm:60
+#: guix/scripts/hash.scm:57 guix/scripts/pull.scm:84
+#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
+msgid ""
+"\n"
+"  -V, --version          display version information and exit"
+msgstr ""
+"\n"
+"  -V, --version          verzióinformációk megjelenítése és kilépés"
+
+#: guix/scripts/build.scm:368
+#, scheme-format
+msgid "sources do not match any package:~{ ~a~}~%"
+msgstr "a források nem illeszkednek semmilyen csomagra:~{ ~a~}~%"
+
+#: guix/scripts/build.scm:397 guix/scripts/download.scm:96
+#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
+#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
+#, scheme-format
+msgid "~A: unrecognized option~%"
+msgstr "~A: ismeretlen kapcsoló~%"
+
+#: guix/scripts/build.scm:425
+#, scheme-format
+msgid "no build log for '~a'~%"
+msgstr "nincs összeállítási napló ehhez: „~a”~%"
+
+#: guix/scripts/download.scm:44
+msgid ""
+"Usage: guix download [OPTION] URL\n"
+"Download the file at URL, add it to the store, and print its store path\n"
+"and the hash of its contents.\n"
+"\n"
+"Supported formats: 'nix-base32' (default), 'base32', and 'base16'\n"
+"('hex' and 'hexadecimal' can be used as well).\n"
+msgstr ""
+"Használat: guix download [KAPCSOLÓ] URL\n"
+"A fájl letöltése az URL-ről, hozzáadás a tárolóhoz, és a tárolója\n"
+"útvonalának és a tartalma hash-ének kiírása.\n"
+"\n"
+"Támogatott formátumok: „nix-base32” (alapértelmezett), „base32” és „base16”\n"
+"(„hex” és „hexadecimal” is használható).\n"
+
+#: guix/scripts/download.scm:50 guix/scripts/hash.scm:50
+msgid ""
+"\n"
+"  -f, --format=FMT       write the hash in the given format"
+msgstr ""
+"\n"
+"  -f, --format=FMT       a hash kiírása a megadott formátumban"
+
+#: guix/scripts/download.scm:73 guix/scripts/hash.scm:75
+#, scheme-format
+msgid "unsupported hash format: ~a~%"
+msgstr "nem támogatott hash-formátum: ~a~%"
+
+#: guix/scripts/download.scm:106
+#, scheme-format
+msgid "~a: failed to parse URI~%"
+msgstr "~a: az URI feldolgozása sikertelen~%"
+
+#: guix/scripts/download.scm:117
+#, scheme-format
+msgid "~a: download failed~%"
+msgstr "~a: letöltés sikertelen~%"
+
+#: guix/scripts/package.scm:88
+#, scheme-format
+msgid "failed to build the empty profile~%"
+msgstr "az üres profil összeállítása sikertelen~%"
+
+#: guix/scripts/package.scm:97
+#, scheme-format
+msgid "switching from generation ~a to ~a~%"
+msgstr "átváltás a(z) ~a generációról erre: ~a~%"
+
+#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
+#: guix/scripts/package.scm:985
+#, scheme-format
+msgid "profile '~a' does not exist~%"
+msgstr "a(z) „~a” profil nem létezik~%"
+
+#: guix/scripts/package.scm:112
+#, scheme-format
+msgid "nothing to do: already at the empty profile~%"
+msgstr "nincs mit tenni: már az üres profilnál van~%"
+
+#: guix/scripts/package.scm:197
+#, scheme-format
+msgid "The following package would be removed:~%~{~a~%~}~%"
+msgstr "A következő csomagot el kellene távolítani:~%~{~a~%~}~%"
+
+#: guix/scripts/package.scm:202
+#, scheme-format
+msgid "The following package will be removed:~%~{~a~%~}~%"
+msgstr "A következő csomag el lesz távolítva:~%~{~a~%~}~%"
+
+#: guix/scripts/package.scm:214
+#, scheme-format
+msgid "The following package would be installed:~%~{~a~%~}~%"
+msgstr "A következő csomagot telepíteni kellene:~%~{~a~%~}~%"
+
+#: guix/scripts/package.scm:219
+#, scheme-format
+msgid "The following package will be installed:~%~{~a~%~}~%"
+msgstr "A következő csomag telepítve lesz:~%~{~a~%~}~%"
+
+#: guix/scripts/package.scm:339
+#, scheme-format
+msgid "package `~a' lacks output `~a'~%"
+msgstr "a(z) „~a” csomag hiányolja a kimenetet: „~a”~%"
+
+#: guix/scripts/package.scm:356
+#, scheme-format
+msgid "~a: package not found~%"
+msgstr "~a: a csomag nem található~%"
+
+#: guix/scripts/package.scm:391
+#, scheme-format
+msgid "looking for the latest release of GNU ~a..."
+msgstr "a GNU ~a legutóbbi kiadásának keresése…"
+
+#: guix/scripts/package.scm:395
+#, scheme-format
+msgid "~a: note: using ~a but ~a is available upstream~%"
+msgstr "~a: megjegyzés: ~a használata, de ~a elérhető a tárolóban~%"
+
+#: guix/scripts/package.scm:467
+#, scheme-format
+msgid "The following environment variable definitions may be needed:~%"
+msgstr "A következő környezeti változó meghatározások lehetnek szükségesek:~%"
+
+#: guix/scripts/package.scm:483
+msgid ""
+"Usage: guix package [OPTION]... PACKAGES...\n"
+"Install, remove, or upgrade PACKAGES in a single transaction.\n"
+msgstr ""
+"Használat: guix package [KAPCSOLÓ]… CSOMAGOK…\n"
+"CSOMAGOK telepítése, eltávolítása vagy frissítése egyetlen tranzakcióban.\n"
+
+#: guix/scripts/package.scm:485
+msgid ""
+"\n"
+"  -i, --install=PACKAGE  install PACKAGE"
+msgstr ""
+"\n"
+"  -i, --install=CSOMAG   CSOMAG telepítése"
+
+#: guix/scripts/package.scm:487
+msgid ""
+"\n"
+"  -e, --install-from-expression=EXP\n"
+"                         install the package EXP evaluates to"
+msgstr ""
+"\n"
+"  -e, --install-from-expression=KIF\n"
+"                         a kiértékelt KIF csomag telepítése"
+
+#: guix/scripts/package.scm:490
+msgid ""
+"\n"
+"  -r, --remove=PACKAGE   remove PACKAGE"
+msgstr ""
+"\n"
+"  -r, --remove=CSOMAG    CSOMAG eltávolítása"
+
+#: guix/scripts/package.scm:492
+msgid ""
+"\n"
+"  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
+msgstr ""
+"\n"
+"  -u, --upgrade[=REGKIF] az összes REGKIF-re illeszkedő telepített csomag\n"
+"                         frissítése"
+
+#: guix/scripts/package.scm:494
+msgid ""
+"\n"
+"      --roll-back        roll back to the previous generation"
+msgstr ""
+"\n"
+"      --roll-back        visszagörgetés az előző generációra"
+
+#: guix/scripts/package.scm:496
+msgid ""
+"\n"
+"      --search-paths     display needed environment variable definitions"
+msgstr ""
+"\n"
+"      --search-paths     a szükséges környezeti változó meghatározások\n"
+"                         megjelenítése"
+
+#: guix/scripts/package.scm:498
+msgid ""
+"\n"
+"  -l, --list-generations[=PATTERN]\n"
+"                         list generations matching PATTERN"
+msgstr ""
+"\n"
+"  -l, --list-generations[=MINTA]\n"
+"                         a MINTÁRA illeszkedő generációk listázása"
+
+#: guix/scripts/package.scm:501
+msgid ""
+"\n"
+"  -d, --delete-generations[=PATTERN]\n"
+"                         delete generations matching PATTERN"
+msgstr ""
+"\n"
+"  -d, --delete-generations[=MINTA]\n"
+"                         a MINTÁRA illeszkedő generációk törlése"
+
+#: guix/scripts/package.scm:504
+msgid ""
+"\n"
+"  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"
+msgstr ""
+"\n"
+"  -p, --profile=PROFIL   a PROFIL használata a felhasználó alapértelmezett\n"
+"                         profilja helyett"
+
+#: guix/scripts/package.scm:507
+msgid ""
+"\n"
+"      --bootstrap        use the bootstrap Guile to build the profile"
+msgstr ""
+"\n"
+"      --bootstrap        a Guile rendszertöltő használata a profil\n"
+"                         összeállításához"
+
+#: guix/scripts/package.scm:509 guix/scripts/pull.scm:75
+msgid ""
+"\n"
+"      --verbose          produce verbose output"
+msgstr ""
+"\n"
+"      --verbose          bőbeszédű kimenet előállítása"
+
+#: guix/scripts/package.scm:512
+msgid ""
+"\n"
+"  -s, --search=REGEXP    search in synopsis and description using REGEXP"
+msgstr ""
+"\n"
+"  -s, --search=REGKIF    keresés az összegzésben és a leírásban REGKIF\n"
+"                         használatával"
+
+#: guix/scripts/package.scm:514
+msgid ""
+"\n"
+"  -I, --list-installed[=REGEXP]\n"
+"                         list installed packages matching REGEXP"
+msgstr ""
+"\n"
+"  -I, --list-installed[=REGKIF]\n"
+"                         a REGKIF-re illeszkedő telepített csomagok listázása"
+
+#: guix/scripts/package.scm:517
+msgid ""
+"\n"
+"  -A, --list-available[=REGEXP]\n"
+"                         list available packages matching REGEXP"
+msgstr ""
+"\n"
+"  -A, --list-available[=REGKIF]\n"
+"                         a REGKIF-re illeszkedő elérhető csomagok listázása"
+
+#: guix/scripts/package.scm:520
+#, fuzzy
+msgid ""
+"\n"
+"  --show=PACKAGE         show details about PACKAGE"
+msgstr ""
+"\n"
+"  -i, --install=CSOMAG   CSOMAG telepítése"
+
+#: guix/scripts/package.scm:767
+#, scheme-format
+msgid "~A: extraneous argument~%"
+msgstr "~A: nem odatartozó argumentum~%"
+
+#: guix/scripts/package.scm:782
+#, scheme-format
+msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
+msgstr ""
+"További információkért próbálja az „info '(guix) Invoking guix package'”\n"
+"parancsot.~%"
+
+#: guix/scripts/package.scm:804
+#, scheme-format
+msgid "error: while creating directory `~a': ~a~%"
+msgstr "hiba: a(z) „~a” könyvtár létrehozása közben: ~a~%"
+
+#: guix/scripts/package.scm:808
+#, scheme-format
+msgid "Please create the `~a' directory, with you as the owner.~%"
+msgstr "Hozza létre a(z) „~a” könyvtárat az ön nevében, tulajdonosként.~%"
+
+#: guix/scripts/package.scm:815
+#, scheme-format
+msgid "error: directory `~a' is not owned by you~%"
+msgstr "hiba: a(z) „~a” könyvtárnak nem ön a tulajdonosa~%"
+
+#: guix/scripts/package.scm:818
+#, scheme-format
+msgid "Please change the owner of `~a' to user ~s.~%"
+msgstr "Változtassa meg a(z) „~a” tulajdonosát erre a felhasználóra: ~s.~%"
+
+#: guix/scripts/package.scm:843
+#, scheme-format
+msgid "deleting ~a~%"
+msgstr "~a törlése~%"
+
+#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
+#, scheme-format
+msgid "invalid syntax: ~a~%"
+msgstr "érvénytelen szintaxis: ~a~%"
+
+#: guix/scripts/package.scm:925
+#, scheme-format
+msgid "nothing to be done~%"
+msgstr "nincs mit tenni~%"
+
+#: guix/scripts/package.scm:948
+#, scheme-format
+msgid "~a package in profile~%"
+msgstr "~a csomag a profilban~%"
+
+#: guix/scripts/package.scm:963
+#, scheme-format
+msgid "Generation ~a\t~a"
+msgstr "~a generáció\t~a"
+
+#: guix/scripts/package.scm:970
+#, scheme-format
+msgid "~a\t(current)~%"
+msgstr "~a\t(jelenlegi)~%"
+
+#: guix/scripts/gc.scm:39
+msgid ""
+"Usage: guix gc [OPTION]... PATHS...\n"
+"Invoke the garbage collector.\n"
+msgstr ""
+"Használat: guix gc [KAPCSOLÓ]… ÚTVONALAK…\n"
+"A szemétgyűjtő meghívása.\n"
+
+#: guix/scripts/gc.scm:41
+msgid ""
+"\n"
+"  -C, --collect-garbage[=MIN]\n"
+"                         collect at least MIN bytes of garbage"
+msgstr ""
+"\n"
+"  -C, --collect-garbage[=MIN]\n"
+"                         legalább MIN bájt szemét összegyűjtése"
+
+#: guix/scripts/gc.scm:44
+msgid ""
+"\n"
+"  -d, --delete           attempt to delete PATHS"
+msgstr ""
+"\n"
+"  -d, --delete           ÚTVONALAK törlésének kísérlete"
+
+#: guix/scripts/gc.scm:46
+msgid ""
+"\n"
+"      --list-dead        list dead paths"
+msgstr ""
+"\n"
+"      --list-dead        halott útvonalak listázása"
+
+#: guix/scripts/gc.scm:48
+msgid ""
+"\n"
+"      --list-live        list live paths"
+msgstr ""
+"\n"
+"      --list-live        élő útvonalak listázása"
+
+#: guix/scripts/gc.scm:51
+msgid ""
+"\n"
+"      --references       list the references of PATHS"
+msgstr ""
+"\n"
+"      --references       az ÚTVONALAK hivatkozásainak listázása"
+
+#: guix/scripts/gc.scm:53
+msgid ""
+"\n"
+"  -R, --requisites       list the requisites of PATHS"
+msgstr ""
+"\n"
+"  -R, --requisites       az ÚTVONALAK követelményeinek listázása"
+
+#: guix/scripts/gc.scm:55
+msgid ""
+"\n"
+"      --referrers        list the referrers of PATHS"
+msgstr ""
+"\n"
+"      --referrers        az ÚTVONALAK ajánlóinak listázása"
+
+#: guix/scripts/gc.scm:84
+#, scheme-format
+msgid "invalid amount of storage: ~a~%"
+msgstr "érvénytelen tárolómennyiség: ~a~%"
+
+#: guix/scripts/hash.scm:45
+msgid ""
+"Usage: guix hash [OPTION] FILE\n"
+"Return the cryptographic hash of FILE.\n"
+"\n"
+"Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex'\n"
+"and 'hexadecimal' can be used as well).\n"
+msgstr ""
+"Használat: guix hash [KAPCSOLÓ] FÁJL\n"
+"A FÁJL kriptográfiai hash-ének visszaadása.\n"
+"\n"
+"Támogatott formátumok: „nix-base32” (alapértelmezett), „base32” és „base16”\n"
+"(„hex” és „hexadecimal” is használható).\n"
+
+#: guix/scripts/hash.scm:52
+msgid ""
+"\n"
+"  -r, --recursive        compute the hash on FILE recursively"
+msgstr ""
+"\n"
+"  -r, --recursive        a FILE hash-ének rekurzív számítása"
+
+#: guix/scripts/hash.scm:103
+#, scheme-format
+msgid "unrecognized option: ~a~%"
+msgstr "ismeretlen kapcsoló: ~a~%"
+
+#: guix/scripts/hash.scm:134 guix/ui.scm:233
+#, scheme-format
+msgid "~a~%"
+msgstr "~a~%"
+
+#: guix/scripts/hash.scm:137
+#, scheme-format
+msgid "wrong number of arguments~%"
+msgstr "nem megfelelő számú argumentum~%"
+
+#: guix/scripts/pull.scm:73
+msgid ""
+"Usage: guix pull [OPTION]...\n"
+"Download and deploy the latest version of Guix.\n"
+msgstr ""
+"Használat: guix pull [KAPCSOLÓ]…\n"
+"A Guix legújabb verziójának letöltése és telepítése.\n"
+
+#: guix/scripts/pull.scm:77
+msgid ""
+"\n"
+"      --url=URL          download the Guix tarball from URL"
+msgstr ""
+"\n"
+"      --url=URL          a Guix tarball letöltése az URL-ről"
+
+#: guix/scripts/pull.scm:79
+msgid ""
+"\n"
+"      --bootstrap        use the bootstrap Guile to build the new Guix"
+msgstr ""
+"\n"
+"      --bootstrap        a Guile rendszertöltő használata az új Guix\n"
+"                         összeállításához"
+
+#: guix/scripts/pull.scm:117
+#, scheme-format
+msgid "~A: unexpected argument~%"
+msgstr "~A: nem várt argumentum~%"
+
+#: guix/scripts/pull.scm:126
+msgid "failed to download up-to-date source, exiting\n"
+msgstr "a legfrissebb forrás letöltése sikertelen, kilépés\n"
+
+#: guix/scripts/pull.scm:145
+#, scheme-format
+msgid "updated ~a successfully deployed under `~a'~%"
+msgstr "a(z) ~a frissítése sikeresen telepítve ez alá: „~a”~%"
+
+#: guix/scripts/pull.scm:148
+#, scheme-format
+msgid "failed to update Guix, check the build log~%"
+msgstr "a Guix frissítése sikertelen, nézze meg az összeállítási naplót~%"
+
+#: guix/scripts/pull.scm:150
+msgid "Guix already up to date\n"
+msgstr "A Guix már naprakész\n"
+
+#: guix/scripts/substitute-binary.scm:80
+#, scheme-format
+msgid "authentication and authorization of substitutes disabled!~%"
+msgstr "a helyettesítők hitelesítése és felhatalmazása letiltva!~%"
+
+#: guix/scripts/substitute-binary.scm:163
+#, scheme-format
+msgid "download from '~a' failed: ~a, ~s~%"
+msgstr "a letöltés sikertelen innen: „~a”: ~a, ~s~%"
+
+#: guix/scripts/substitute-binary.scm:178
+#, scheme-format
+msgid "while fetching ~a: server is unresponsive~%"
+msgstr "~a lekérése közben: a kiszolgáló nem válaszol~%"
+
+#: guix/scripts/substitute-binary.scm:180
+#, scheme-format
+msgid "try `--no-substitutes' if the problem persists~%"
+msgstr "próbálja a „--no-substitutes” kapcsolót, ha a probléma továbbra is fennáll~%"
+
+#: guix/scripts/substitute-binary.scm:244
+#, scheme-format
+msgid "signature version must be a number: ~a~%"
+msgstr "az aláírás verziójának számnak kell lennie: ~a~%"
+
+#: guix/scripts/substitute-binary.scm:248
+#, scheme-format
+msgid "unsupported signature version: ~a~%"
+msgstr "nem támogatott aláírás verzió: ~a~%"
+
+#: guix/scripts/substitute-binary.scm:256
+#, scheme-format
+msgid "signature is not a valid s-expression: ~s~%"
+msgstr "az aláírás nem érvényes s-kifejezés: ~s~%"
+
+#: guix/scripts/substitute-binary.scm:260
+#, scheme-format
+msgid "invalid format of the signature field: ~a~%"
+msgstr "az aláírásmező formátuma érvénytelen: ~a~%"
+
+#: guix/scripts/substitute-binary.scm:295
+#, scheme-format
+msgid "invalid signature for '~a'~%"
+msgstr "érvénytelen aláírás ehhez: „~a”~%"
+
+#: guix/scripts/substitute-binary.scm:297
+#, scheme-format
+msgid "hash mismatch for '~a'~%"
+msgstr "hash eltérés ennél: „~a”~%"
+
+#: guix/scripts/substitute-binary.scm:299
+#, scheme-format
+msgid "'~a' is signed with an unauthorized key~%"
+msgstr "a(z) „~a” egy jogosulatlan kulccsal van aláírva~%"
+
+#: guix/scripts/substitute-binary.scm:301
+#, scheme-format
+msgid "signature on '~a' is corrupt~%"
+msgstr "a(z) „~a” aláírása sérült~%"
+
+#: guix/scripts/substitute-binary.scm:338
+#, scheme-format
+msgid "substitute at '~a' lacks a signature~%"
+msgstr "a helyettesítő ennél: „~a” hiányol egy aláírást~%"
+
+#: guix/scripts/substitute-binary.scm:526
+#, scheme-format
+msgid "Downloading, please wait...~%"
+msgstr "Letöltés, kérem várjon…~%"
+
+#: guix/scripts/substitute-binary.scm:528
+#, scheme-format
+msgid "(Please consider upgrading Guile to get proper progress report.)~%"
+msgstr "(Fontolja meg a Guile frissítését a megfelelő állapotjelentés beszerzéséhez.)~%"
+
+#: guix/scripts/substitute-binary.scm:545
+#, scheme-format
+msgid "host name lookup error: ~a~%"
+msgstr "gépnév keresési hiba: ~a~%"
+
+#: guix/scripts/substitute-binary.scm:554
+msgid ""
+"Usage: guix substitute-binary [OPTION]...\n"
+"Internal tool to substitute a pre-built binary to a local build.\n"
+msgstr ""
+"Használat: guix substitute-binary [KAPCSOLÓ]…\n"
+"Belső eszköz egy előre összeállított binárisnak egy helyi összeállítással\n"
+"való helyettesítéséhez.\n"
+
+#: guix/scripts/substitute-binary.scm:556
+msgid ""
+"\n"
+"      --query            report on the availability of substitutes for the\n"
+"                         store file names passed on the standard input"
+msgstr ""
+"\n"
+"      --query            a helyettesítők elérhetőségének jelentése a\n"
+"                         szabványos bemeneten átadott tároló fájlnevekhez"
+
+#: guix/scripts/substitute-binary.scm:559
+msgid ""
+"\n"
+"      --substitute STORE-FILE DESTINATION\n"
+"                         download STORE-FILE and store it as a Nar in file\n"
+"                         DESTINATION"
+msgstr ""
+"\n"
+"      --substitute TÁROLÓ-FÁJL CÉL\n"
+"                         TÁROLÓ-FÁJL letöltése és eltárolása Nar formátumban\n"
+"                         a CÉL fájlban"
+
+#: guix/scripts/substitute-binary.scm:604
+msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
+msgstr ""
+"Az ACL előkészítetlennek tűnik az archívum importokhoz, a helyettesítők\n"
+"elérhetetlenek lehetnek\n"
+
+#: guix/scripts/substitute-binary.scm:625
+#, scheme-format
+msgid "failed to look up host '~a' (~a), substituter disabled~%"
+msgstr "a(z) „~a” (~a) gép keresése sikertelen, a helyettesítő letiltva~%"
+
+#: guix/scripts/substitute-binary.scm:732
+#, scheme-format
+msgid "~a: unrecognized options~%"
+msgstr "~a: ismeretlen kapcsolók~%"
+
+#: guix/scripts/authenticate.scm:58
+#, scheme-format
+msgid "cannot find public key for secret key '~a'~%"
+msgstr "nem található nyilvános kulcs a(z) „~a” titkos kulcshoz~%"
+
+#: guix/scripts/authenticate.scm:78
+#, scheme-format
+msgid "error: invalid signature: ~a~%"
+msgstr "hiba: érvénytelen aláírás: ~a~%"
+
+#: guix/scripts/authenticate.scm:80
+#, scheme-format
+msgid "error: unauthorized public key: ~a~%"
+msgstr "hiba: jogosulatlan nyilvános kulcs: ~a~%"
+
+#: guix/scripts/authenticate.scm:82
+#, scheme-format
+msgid "error: corrupt signature data: ~a~%"
+msgstr "hiba: sérült aláírás adatok: ~a~%"
+
+#: guix/scripts/authenticate.scm:126
+msgid ""
+"Usage: guix authenticate OPTION...\n"
+"Sign or verify the signature on the given file.  This tool is meant to\n"
+"be used internally by 'guix-daemon'.\n"
+msgstr ""
+"Használat: guix authenticate KAPCSOLÓ…\n"
+"Aláírás vagy a megadott fájl aláírásának ellenőrzése. Az eszköz célja, hogy\n"
+"a „guix-daemon” belsőleg felhasználja.\n"
+
+#: guix/scripts/authenticate.scm:132
+msgid "wrong arguments"
+msgstr "hibás argumentumok"
+
+#: guix/scripts/system.scm:74
+#, scheme-format
+msgid "failed to open operating system file '~a': ~a~%"
+msgstr "a(z) „~a” operációs rendszer fájl megnyitása sikertelen: ~a~%"
+
+#: guix/scripts/system.scm:78 guix/ui.scm:238
+#, scheme-format
+msgid "~a: ~a~%"
+msgstr "~a: ~a~%"
+
+#: guix/scripts/system.scm:81
+#, scheme-format
+msgid "failed to load operating system file '~a': ~s~%"
+msgstr "a(z) „~a” operációs rendszer fájl betöltése sikertelen: ~s~%"
+
+#: guix/scripts/system.scm:116
+#, scheme-format
+msgid "failed to register '~a' under '~a'~%"
+msgstr "a(z) „~a” regisztrálása sikertelen ez alá: „~a”~%"
+
+#: guix/scripts/system.scm:144
+#, scheme-format
+msgid "initializing the current root file system~%"
+msgstr "a jelenlegi gyökér fájlrendszer előkészítése~%"
+
+#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
+#, scheme-format
+msgid "failed to install GRUB on device '~a'~%"
+msgstr "a GRUB telepítése sikertelen a(z) „~a” eszközre~%"
+
+#: guix/scripts/system.scm:197
+#, scheme-format
+msgid "activating system...~%"
+msgstr "a rendszer aktiválása…~%"
+
+#: guix/scripts/system.scm:236
+#, scheme-format
+msgid "unrecognized boot parameters for '~a'~%"
+msgstr "azonosítatlan indítási paraméterek ehhez: „~a”~%"
+
+#: guix/scripts/system.scm:323
+#, scheme-format
+msgid "initializing operating system under '~a'...~%"
+msgstr "az operációs rendszer előkészítése „~a” alá…~%"
+
+#: guix/scripts/system.scm:339
+msgid ""
+"Usage: guix system [OPTION] ACTION FILE\n"
+"Build the operating system declared in FILE according to ACTION.\n"
+msgstr ""
+"Használat: guix system [KAPCSOLÓ] MŰVELET FÁJL\n"
+"A FÁJLBAN meghatározott operációs rendszer összeállítása a MŰVELET szerint.\n"
+
+#: guix/scripts/system.scm:342
+msgid "The valid values for ACTION are:\n"
+msgstr "A MŰVELET érvényes értékei a következők:\n"
+
+#: guix/scripts/system.scm:343
+msgid "  - 'reconfigure', switch to a new operating system configuration\n"
+msgstr "  - „reconfigure”, átváltás egy új operációs rendszer beállításra\n"
+
+#: guix/scripts/system.scm:345
+msgid "  - 'build', build the operating system without installing anything\n"
+msgstr "  - „build”, az operációs rendszer összeállítása bármi telepítése nélkül\n"
+
+#: guix/scripts/system.scm:347
+msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
+msgstr ""
+"  - „vm”, egy virtuális gép lemezkép összeállítása, amely megosztja a gazda\n"
+"              tárolóját\n"
+
+#: guix/scripts/system.scm:349
+msgid "  - 'vm-image', build a freestanding virtual machine image\n"
+msgstr "  - „vm-image”, egy szabadon álló virtuális gép lemezkép összeállítása\n"
+
+#: guix/scripts/system.scm:351
+msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
+msgstr "  - „disk-image”, egy USB-meghajtóhoz megfelelő lemezkép összeállítása\n"
+
+#: guix/scripts/system.scm:353
+msgid "  - 'init', initialize a root file system to run GNU.\n"
+msgstr "  - „init”, a gyökér fájlrendszer előkészítése a GNU futtatásához.\n"
+
+#: guix/scripts/system.scm:357
+msgid ""
+"\n"
+"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
+msgstr ""
+"\n"
+"      --image-size=MÉRET  a „vm-image”-hez, adott MÉRETŰ lemezkép előállítása"
+
+#: guix/scripts/system.scm:359
+msgid ""
+"\n"
+"      --no-grub          for 'init', do not install GRUB"
+msgstr ""
+"\n"
+"      --no-grub          az „init”-hez, ne telepítse a GRUB rendszerbetöltőt"
+
+#: guix/scripts/system.scm:422
+#, scheme-format
+msgid "~a: unknown action~%"
+msgstr "~a: ismeretlen művelet~%"
+
+#: guix/scripts/system.scm:439
+#, scheme-format
+msgid "wrong number of arguments for action '~a'~%"
+msgstr "nem megfelelő számú argumentum a(z) „~a” művelethez~%"
+
+#: guix/scripts/system.scm:459
+#, scheme-format
+msgid "no configuration file specified~%"
+msgstr "nincs beállítófájl megadva~%"
+
+#: guix/gnu-maintenance.scm:373
+#, scheme-format
+msgid "signature verification failed for `~a'~%"
+msgstr "az aláírás-ellenőrzés sikertelen ennél: „~a”~%"
+
+#: guix/gnu-maintenance.scm:375
+#, scheme-format
+msgid "(could be because the public key is not in your keyring)~%"
+msgstr "(azért lehet, mert a nyilvános kulcs nincs a kulcstartón)~%"
+
+#: guix/gnu-maintenance.scm:450
+#, scheme-format
+msgid "~a: could not locate source file"
+msgstr "~a: nem található a forrásfájl"
+
+#: guix/gnu-maintenance.scm:455
+#, scheme-format
+msgid "~a: ~a: no `version' field in source; skipping~%"
+msgstr "~a: ~a: nincs „version” mező a forrásban; kihagyás~%"
+
+#: guix/ui.scm:131
+#, scheme-format
+msgid "failed to install locale: ~a~%"
+msgstr "a területi beállítás telepítése sikertelen: ~a~%"
+
+#: guix/ui.scm:150
+msgid ""
+"Copyright (C) 2014 the Guix authors\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
+"This is free software: you are free to change and redistribute it.\n"
+"There is NO WARRANTY, to the extent permitted by law.\n"
+msgstr ""
+"Copyright © 2014 a Guix szerzői\n"
+"Licenc GPLv3+: GNU GPL 3. vagy újabb verzió <http://gnu.org/licenses/gpl.html>\n"
+"\n"
+"Ez egy szabad szoftver, terjesztheti és/vagy módosíthatja.\n"
+"NINCS GARANCIA, a törvény által engedélyezett mértékig.\n"
+
+#: guix/ui.scm:158
+#, scheme-format
+msgid ""
+"\n"
+"Report bugs to: ~a."
+msgstr ""
+"\n"
+"A hibákat ide jelentse: ~a."
+
+#: guix/ui.scm:160
+#, scheme-format
+msgid ""
+"\n"
+"~a home page: <~a>"
+msgstr ""
+"\n"
+"~a honlap: <~a>"
+
+#: guix/ui.scm:162
+msgid ""
+"\n"
+"General help using GNU software: <http://www.gnu.org/gethelp/>"
+msgstr ""
+"\n"
+"Általános segítség a GNU szoftverek használatához: <http://www.gnu.org/gethelp/>"
+
+#: guix/ui.scm:169
+#, scheme-format
+msgid "~a: invalid number~%"
+msgstr "~a: érvénytelen szám~%"
+
+#: guix/ui.scm:186
+#, scheme-format
+msgid "invalid number: ~a~%"
+msgstr "érvénytelen szám: ~a~%"
+
+#: guix/ui.scm:201
+#, scheme-format
+msgid "unknown unit: ~a~%"
+msgstr "ismeretlen egység: ~a~%"
+
+#: guix/ui.scm:212
+#, scheme-format
+msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
+msgstr "~a:~a:~a: a(z) „~a” csomagnak érvénytelen bemenete van: ~s~%"
+
+#: guix/ui.scm:219
+#, scheme-format
+msgid "~a: ~a: build system `~a' does not support cross builds~%"
+msgstr "~a: ~a: a(z) „~a” összeállítási rendszer nem támogatja a kereszt összeállításokat~%"
+
+#: guix/ui.scm:224
+#, scheme-format
+msgid "failed to connect to `~a': ~a~%"
+msgstr "sikertelen csatlakozás ehhez: „~a”: ~a~%"
+
+#: guix/ui.scm:229
+#, scheme-format
+msgid "build failed: ~a~%"
+msgstr "az összeállítás sikertelen: ~a~%"
+
+#: guix/ui.scm:257
+#, scheme-format
+msgid "failed to read expression ~s: ~s~%"
+msgstr "a(z) ~s kifejezés olvasása sikertelen: ~s~%"
+
+#: guix/ui.scm:263
+#, scheme-format
+msgid "failed to evaluate expression `~a': ~s~%"
+msgstr "a(z) „~a” kifejezés kiértékelése sikertelen: ~s~%"
+
+#: guix/ui.scm:272
+#, scheme-format
+msgid "expression ~s does not evaluate to a package~%"
+msgstr "a(z) ~s kifejezés nem értékelhető ki a csomaghoz~%"
+
+#: guix/ui.scm:319
+#, scheme-format
+msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
+msgstr "~:[A következő származékot kellene összeállítani:~%~{   ~a~%~}~;~]"
+
+#: guix/ui.scm:324
+#, scheme-format
+msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
+msgstr "~:[A következő fájlt kellene letölteni:~%~{   ~a~%~}~;~]"
+
+#: guix/ui.scm:330
+#, scheme-format
+msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
+msgstr "~:[A következő származék lesz összeállítva:~%~{   ~a~%~}~;~]"
+
+#: guix/ui.scm:335
+#, scheme-format
+msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
+msgstr "~:[A következő fájl lesz letöltve:~%~{   ~a~%~}~;~]"
+
+#: guix/ui.scm:352
+msgid "<unknown location>"
+msgstr "<ismeretlen hely>"
+
+#: guix/ui.scm:380
+#, scheme-format
+msgid "failed to create configuration directory `~a': ~a~%"
+msgstr "a(z) „~a” beállítási könyvtár létrehozása sikertelen: ~a~%"
+
+#: guix/ui.scm:475 guix/ui.scm:489
+msgid "unknown"
+msgstr "ismeretlen"
+
+#: guix/ui.scm:598
+#, scheme-format
+msgid "invalid argument: ~a~%"
+msgstr "érvénytelen argumentum: ~a~%"
+
+#: guix/ui.scm:603
+#, scheme-format
+msgid "Try `guix --help' for more information.~%"
+msgstr "További információkért próbálja a „guix --help” parancsot.~%"
+
+#: guix/ui.scm:633
+msgid ""
+"Usage: guix COMMAND ARGS...\n"
+"Run COMMAND with ARGS.\n"
+msgstr ""
+"Használat: guix PARANCS ARGUMENTUMOK…\n"
+"A PARANCS futtatása ARGUMENTUMOKKAL.\n"
+
+#: guix/ui.scm:636
+msgid "COMMAND must be one of the sub-commands listed below:\n"
+msgstr "A PARANCSNAK a lenti listában lévő alparancsok egyikének kell lennie:\n"
+
+#: guix/ui.scm:656
+#, scheme-format
+msgid "guix: ~a: command not found~%"
+msgstr "guix: ~a: a parancs nem található~%"
+
+#: guix/ui.scm:674
+#, scheme-format
+msgid "guix: missing command name~%"
+msgstr "guix: hiányzó parancsnév~%"
+
+#: guix/ui.scm:682
+#, scheme-format
+msgid "guix: unrecognized option '~a'~%"
+msgstr "guix: ismeretlen kapcsoló: „~a”~%"
+
+#: guix/http-client.scm:217
+#, scheme-format
+msgid "using Guile ~a, which does not support ~s encoding~%"
+msgstr "a Guile ~a használata, amely nem támogatja a(z) ~s kódolást~%"
+
+#: guix/http-client.scm:220
+#, scheme-format
+msgid "download failed; use a newer Guile~%"
+msgstr "letöltés sikertelen; használja a Guile újabb verzióját~%"
+
+#: guix/http-client.scm:232
+#, scheme-format
+msgid "following redirection to `~a'...~%"
+msgstr "átirányítás követése ide: „~a”…~%"
+
+#: guix/http-client.scm:241
+msgid "download failed"
+msgstr "letöltés sikertelen"
+
+#: guix/nar.scm:134
+msgid "unexpected executable file marker"
+msgstr "nem várt végrehajtható fájljelölő"
+
+#: guix/nar.scm:141
+msgid "unsupported nar file type"
+msgstr "nem támogatott nar fájltípus"
+
+#: guix/nar.scm:209
+msgid "unsupported file type"
+msgstr "nem támogatott fájltípus"
+
+#: guix/nar.scm:219
+msgid "invalid nar signature"
+msgstr "érvénytelen nar aláírás"
+
+#: guix/nar.scm:230
+msgid "invalid nar end-of-file marker"
+msgstr "érvénytelen nar fájlvége jelölő"
+
+#: guix/nar.scm:244
+msgid "invalid symlink tokens"
+msgstr "érvénytelen szimbolikus link jelsorok"
+
+#: guix/nar.scm:263
+msgid "unexpected directory entry termination"
+msgstr "nem várt könyvtárbejegyzés végződés"
+
+#: guix/nar.scm:272
+msgid "unexpected directory inter-entry marker"
+msgstr "nem várt könyvtár belső-bejegyzés jelölő"
+
+#: guix/nar.scm:277
+msgid "unsupported nar entry type"
+msgstr "nem támogatott nar bejegyzéstípus"
+
+#: guix/nar.scm:376
+msgid "signature is not a valid s-expression"
+msgstr "az aláírás nem érvényes s-kifejezés"
+
+#: guix/nar.scm:385
+msgid "invalid signature"
+msgstr "érvénytelen aláírás"
+
+#: guix/nar.scm:389
+msgid "invalid hash"
+msgstr "érvénytelen hash"
+
+#: guix/nar.scm:397
+msgid "unauthorized public key"
+msgstr "jogosulatlan nyilvános kulcs"
+
+#: guix/nar.scm:402
+msgid "corrupt signature data"
+msgstr "sérült aláírás adatok"
+
+#: guix/nar.scm:422
+msgid "corrupt file set archive"
+msgstr "sérült fájlhalmaz archívum"
+
+#: guix/nar.scm:432
+#, scheme-format
+msgid "importing file or directory '~a'...~%"
+msgstr "fájl vagy könyvtár importálása: „~a”…~%"
+
+#: guix/nar.scm:441
+#, scheme-format
+msgid "found valid signature for '~a'~%"
+msgstr "érvényes aláírás található ehhez: „~a”~%"
+
+#: guix/nar.scm:448
+msgid "imported file lacks a signature"
+msgstr "az importált fájl egy aláírást hiányol"
+
+#: guix/nar.scm:487
+msgid "invalid inter-file archive mark"
+msgstr "érvénytelen belső-fájl archívum jelölő"
diff --git a/po/guix/pt_BR.po b/po/guix/pt_BR.po
index 5b41026db6..664cf249ad 100644
--- a/po/guix/pt_BR.po
+++ b/po/guix/pt_BR.po
@@ -8,11 +8,10 @@ msgid ""
 msgstr ""
 "Project-Id-Version: guix 0.4-pre2\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-06-14 22:38+0200\n"
+"POT-Creation-Date: 2014-07-25 00:55+0200\n"
 "PO-Revision-Date: 2013-09-28 21:29-0300\n"
 "Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
-"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
-"net>\n"
+"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -20,17 +19,17 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "X-Generator: Poedit 1.5.7\n"
 
-#: gnu/packages.scm:95
+#: gnu/packages.scm:102
 #, scheme-format
 msgid "cannot access `~a': ~a~%"
 msgstr "não foi possível acessar \"~a\": ~a~%"
 
-#: guix/scripts/build.scm:54 guix/scripts/package.scm:337
+#: guix/scripts/build.scm:54 guix/scripts/package.scm:349
 #, scheme-format
 msgid "ambiguous package specification `~a'~%"
 msgstr "especificação ambígua de pacote \"~a\"~%"
 
-#: guix/scripts/build.scm:55 guix/scripts/package.scm:339
+#: guix/scripts/build.scm:55 guix/scripts/package.scm:351
 #, scheme-format
 msgid "choosing ~a from ~a~%"
 msgstr "escolhendo ~a de ~a~%"
@@ -97,8 +96,7 @@ msgid ""
 msgstr ""
 "\n"
 "      --max-silent-time=SEGUNDOS\n"
-"                         marca compilação como falha após SEGUNDOS de "
-"silêncio"
+"                         marca compilação como falha após SEGUNDOS de silêncio"
 
 #: guix/scripts/build.scm:136
 #, fuzzy
@@ -108,8 +106,7 @@ msgid ""
 msgstr ""
 "\n"
 "      --max-silent-time=SEGUNDOS\n"
-"                         marca compilação como falha após SEGUNDOS de "
-"silêncio"
+"                         marca compilação como falha após SEGUNDOS de silêncio"
 
 #: guix/scripts/build.scm:138
 msgid ""
@@ -125,8 +122,7 @@ msgid ""
 "  -c, --cores=N          allow the use of up to N CPU cores for the build"
 msgstr ""
 "\n"
-"  -c, --cores=N          permite o uso de até N núcleos de CPU para "
-"compilação"
+"  -c, --cores=N          permite o uso de até N núcleos de CPU para compilação"
 
 #: guix/scripts/build.scm:206
 #, scheme-format
@@ -172,8 +168,7 @@ msgid ""
 "      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
 msgstr ""
 "\n"
-"      --target=TRIO      compilação cruzada para TRIO. ex.: \"armel-linux-gnu"
-"\""
+"      --target=TRIO      compilação cruzada para TRIO. ex.: \"armel-linux-gnu\""
 
 #: guix/scripts/build.scm:233
 msgid ""
@@ -197,8 +192,7 @@ msgid ""
 "                         as a garbage collector root"
 msgstr ""
 "\n"
-"  -r, --root=ARQUIVO     faz do ARQUIVO um link simbólico para o resultado "
-"e\n"
+"  -r, --root=ARQUIVO     faz do ARQUIVO um link simbólico para o resultado e\n"
 "                         registra-o, como um coletor de lixo"
 
 #: guix/scripts/build.scm:241
@@ -208,9 +202,9 @@ msgid ""
 msgstr ""
 
 #: guix/scripts/build.scm:246 guix/scripts/download.scm:53
-#: guix/scripts/package.scm:511 guix/scripts/gc.scm:58
+#: guix/scripts/package.scm:525 guix/scripts/gc.scm:58
 #: guix/scripts/hash.scm:55 guix/scripts/pull.scm:82
-#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:142
+#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
 msgid ""
 "\n"
 "  -h, --help             display this help and exit"
@@ -219,9 +213,9 @@ msgstr ""
 "  -h, --help             exibe esta ajuda e sai"
 
 #: guix/scripts/build.scm:248 guix/scripts/download.scm:55
-#: guix/scripts/package.scm:513 guix/scripts/gc.scm:60
+#: guix/scripts/package.scm:527 guix/scripts/gc.scm:60
 #: guix/scripts/hash.scm:57 guix/scripts/pull.scm:84
-#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:144
+#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
 msgid ""
 "\n"
 "  -V, --version          display version information and exit"
@@ -235,8 +229,8 @@ msgid "sources do not match any package:~{ ~a~}~%"
 msgstr ""
 
 #: guix/scripts/build.scm:397 guix/scripts/download.scm:96
-#: guix/scripts/package.scm:744 guix/scripts/gc.scm:122
-#: guix/scripts/pull.scm:115 guix/scripts/system.scm:190
+#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
+#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
 #, scheme-format
 msgid "~A: unrecognized option~%"
 msgstr "~A: opção desconhecida~%"
@@ -285,75 +279,74 @@ msgstr "~a: falha ao analisar URI~%"
 msgid "~a: download failed~%"
 msgstr "~a: falha no download~%"
 
-#: guix/scripts/package.scm:76
+#: guix/scripts/package.scm:88
 #, scheme-format
 msgid "failed to build the empty profile~%"
 msgstr "falha ao compilar o perfil vazio~%"
 
 # geração, criação?
-#: guix/scripts/package.scm:85
+#: guix/scripts/package.scm:97
 #, scheme-format
 msgid "switching from generation ~a to ~a~%"
 msgstr "trocando para geração de ~a para ~a~%"
 
-#: guix/scripts/package.scm:96 guix/scripts/package.scm:852
-#: guix/scripts/package.scm:964
+#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
+#: guix/scripts/package.scm:985
 #, scheme-format
 msgid "profile '~a' does not exist~%"
 msgstr "perfil \"~a\" não existe~%"
 
-#: guix/scripts/package.scm:100
+#: guix/scripts/package.scm:112
 #, scheme-format
 msgid "nothing to do: already at the empty profile~%"
 msgstr "nada a ser feito: já está no perfil vazio~%"
 
-#: guix/scripts/package.scm:185
+#: guix/scripts/package.scm:197
 #, fuzzy, scheme-format
 msgid "The following package would be removed:~%~{~a~%~}~%"
 msgstr "O seguinte pacote seria removido:~% ~{~a~%~}~%"
 
-#: guix/scripts/package.scm:190
+#: guix/scripts/package.scm:202
 #, fuzzy, scheme-format
 msgid "The following package will be removed:~%~{~a~%~}~%"
 msgstr "O seguinte pacote será removido:~% ~{~a~%~}~%"
 
-#: guix/scripts/package.scm:202
+#: guix/scripts/package.scm:214
 #, scheme-format
 msgid "The following package would be installed:~%~{~a~%~}~%"
 msgstr "O seguinte pacote seria instalado:~%~{~a~%~}~%"
 
-#: guix/scripts/package.scm:207
+#: guix/scripts/package.scm:219
 #, scheme-format
 msgid "The following package will be installed:~%~{~a~%~}~%"
 msgstr "O seguinte pacote será instalado:~%~{~a~%~}~%"
 
-#: guix/scripts/package.scm:327
+#: guix/scripts/package.scm:339
 #, scheme-format
 msgid "package `~a' lacks output `~a'~%"
 msgstr "pacote \"~a\" carece de mensagem de saída \"~a\"~%"
 
-#: guix/scripts/package.scm:344
+#: guix/scripts/package.scm:356
 #, scheme-format
 msgid "~a: package not found~%"
 msgstr "~a: pacote não encontrado~%"
 
-#: guix/scripts/package.scm:379
+#: guix/scripts/package.scm:391
 #, scheme-format
 msgid "looking for the latest release of GNU ~a..."
 msgstr "procurando pelo último lançamento do GNU ~a..."
 
-#: guix/scripts/package.scm:383
+#: guix/scripts/package.scm:395
 #, scheme-format
 msgid "~a: note: using ~a but ~a is available upstream~%"
 msgstr "~a: nota: usando ~a, mas ~a está disponível no upstream~%"
 
-#: guix/scripts/package.scm:455
+#: guix/scripts/package.scm:467
 #, scheme-format
 msgid "The following environment variable definitions may be needed:~%"
-msgstr ""
-"As seguintes definições de variável de ambiente podem ser necessárias:~%"
+msgstr "As seguintes definições de variável de ambiente podem ser necessárias:~%"
 
-#: guix/scripts/package.scm:471
+#: guix/scripts/package.scm:483
 msgid ""
 "Usage: guix package [OPTION]... PACKAGES...\n"
 "Install, remove, or upgrade PACKAGES in a single transaction.\n"
@@ -361,7 +354,7 @@ msgstr ""
 "Uso: guix package [OPÇÃO]... PACOTES...\n"
 "Instala, remove ou atualiza PACOTES em uma única transação.\n"
 
-#: guix/scripts/package.scm:473
+#: guix/scripts/package.scm:485
 msgid ""
 "\n"
 "  -i, --install=PACKAGE  install PACKAGE"
@@ -369,7 +362,7 @@ msgstr ""
 "\n"
 "  -i, --install=PACOTE   instala PACOTE"
 
-#: guix/scripts/package.scm:475
+#: guix/scripts/package.scm:487
 msgid ""
 "\n"
 "  -e, --install-from-expression=EXP\n"
@@ -379,7 +372,7 @@ msgstr ""
 "  -e, --install-from-expression=EXP\n"
 "                         instala o pacote que EXPR corresponder"
 
-#: guix/scripts/package.scm:478
+#: guix/scripts/package.scm:490
 msgid ""
 "\n"
 "  -r, --remove=PACKAGE   remove PACKAGE"
@@ -387,17 +380,16 @@ msgstr ""
 "\n"
 "  -r, --remove=PACOTE    remove PACOTE"
 
-#: guix/scripts/package.scm:480
+#: guix/scripts/package.scm:492
 msgid ""
 "\n"
 "  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
 msgstr ""
 "\n"
-"  -u, --upgrade[=REGEXP] atualiza todos os pacotes instalados "
-"correspondendo\n"
+"  -u, --upgrade[=REGEXP] atualiza todos os pacotes instalados correspondendo\n"
 "                         à REGEXP"
 
-#: guix/scripts/package.scm:482
+#: guix/scripts/package.scm:494
 msgid ""
 "\n"
 "      --roll-back        roll back to the previous generation"
@@ -405,7 +397,7 @@ msgstr ""
 "\n"
 "      --roll-back        Reverte para a geração anterior"
 
-#: guix/scripts/package.scm:484
+#: guix/scripts/package.scm:496
 msgid ""
 "\n"
 "      --search-paths     display needed environment variable definitions"
@@ -413,7 +405,7 @@ msgstr ""
 "\n"
 "      --search-paths     exibe definições necessárias de variável de ambiente"
 
-#: guix/scripts/package.scm:486
+#: guix/scripts/package.scm:498
 msgid ""
 "\n"
 "  -l, --list-generations[=PATTERN]\n"
@@ -423,7 +415,7 @@ msgstr ""
 "  -I, --list-generations[=PADRÃO]\n"
 "                         lista criações correspondendo ao PADRÃO"
 
-#: guix/scripts/package.scm:489
+#: guix/scripts/package.scm:501
 #, fuzzy
 msgid ""
 "\n"
@@ -434,7 +426,7 @@ msgstr ""
 "  -I, --list-generations[=PADRÃO]\n"
 "                         lista criações correspondendo ao PADRÃO"
 
-#: guix/scripts/package.scm:492
+#: guix/scripts/package.scm:504
 msgid ""
 "\n"
 "  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"
@@ -442,7 +434,7 @@ msgstr ""
 "\n"
 "  -p, --profile=PERFIL   usa PERFIL em vez do perfil padrão do usuário"
 
-#: guix/scripts/package.scm:495
+#: guix/scripts/package.scm:507
 msgid ""
 "\n"
 "      --bootstrap        use the bootstrap Guile to build the profile"
@@ -450,7 +442,7 @@ msgstr ""
 "\n"
 "      --bootstrap        usa a inicialização do Guile para compilar o perfil"
 
-#: guix/scripts/package.scm:497 guix/scripts/pull.scm:75
+#: guix/scripts/package.scm:509 guix/scripts/pull.scm:75
 msgid ""
 "\n"
 "      --verbose          produce verbose output"
@@ -458,7 +450,7 @@ msgstr ""
 "\n"
 "      --verbose          produz uma saída mais detalhada"
 
-#: guix/scripts/package.scm:500
+#: guix/scripts/package.scm:512
 msgid ""
 "\n"
 "  -s, --search=REGEXP    search in synopsis and description using REGEXP"
@@ -466,7 +458,7 @@ msgstr ""
 "\n"
 "  -s, --search=REGEXP    pesquisa na sinopse e descrição usando REGEXP"
 
-#: guix/scripts/package.scm:502
+#: guix/scripts/package.scm:514
 msgid ""
 "\n"
 "  -I, --list-installed[=REGEXP]\n"
@@ -476,7 +468,7 @@ msgstr ""
 "  -I, --list-installed[=REGEXP]\n"
 "                         lista pacotes instalados correspondentes a REGEXP"
 
-#: guix/scripts/package.scm:505
+#: guix/scripts/package.scm:517
 msgid ""
 "\n"
 "  -A, --list-available[=REGEXP]\n"
@@ -486,62 +478,71 @@ msgstr ""
 "  -A, --list-available[=REGEXP]\n"
 "                         lista pacotes disponíveis correspondentes a REGEXP"
 
-#: guix/scripts/package.scm:748
+#: guix/scripts/package.scm:520
+#, fuzzy
+msgid ""
+"\n"
+"  --show=PACKAGE         show details about PACKAGE"
+msgstr ""
+"\n"
+"  -i, --install=PACOTE   instala PACOTE"
+
+#: guix/scripts/package.scm:767
 #, scheme-format
 msgid "~A: extraneous argument~%"
 msgstr "~A: argumento estranho~%"
 
-#: guix/scripts/package.scm:763
+#: guix/scripts/package.scm:782
 #, scheme-format
 msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
 msgstr "Tente \"info '(guix) Invoking guix package'\" para mais informações.~%"
 
-#: guix/scripts/package.scm:785
+#: guix/scripts/package.scm:804
 #, scheme-format
 msgid "error: while creating directory `~a': ~a~%"
 msgstr "erro: ao criar diretório \"~a\": ~a~%"
 
-#: guix/scripts/package.scm:789
+#: guix/scripts/package.scm:808
 #, scheme-format
 msgid "Please create the `~a' directory, with you as the owner.~%"
 msgstr "Por favor, crie o diretório \"~a\", com você sendo o proprietário.~%"
 
-#: guix/scripts/package.scm:796
+#: guix/scripts/package.scm:815
 #, scheme-format
 msgid "error: directory `~a' is not owned by you~%"
 msgstr "erro: diretório \"~a\" não tem você como proprietário~%"
 
-#: guix/scripts/package.scm:799
+#: guix/scripts/package.scm:818
 #, scheme-format
 msgid "Please change the owner of `~a' to user ~s.~%"
 msgstr "Por favor, altere o proprietário d \"~a\" para o usuário ~s.~%"
 
-#: guix/scripts/package.scm:822
+#: guix/scripts/package.scm:843
 #, fuzzy, scheme-format
 msgid "deleting ~a~%"
 msgstr "Criação ~a\t~a~%"
 
-#: guix/scripts/package.scm:875 guix/scripts/package.scm:980
+#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
 #, scheme-format
 msgid "invalid syntax: ~a~%"
 msgstr "sintaxe inválida: ~a~%"
 
-#: guix/scripts/package.scm:904
+#: guix/scripts/package.scm:925
 #, scheme-format
 msgid "nothing to be done~%"
 msgstr "nada para ser feito~%"
 
-#: guix/scripts/package.scm:927
+#: guix/scripts/package.scm:948
 #, scheme-format
 msgid "~a package in profile~%"
 msgstr "pacote ~a no perfil~%"
 
-#: guix/scripts/package.scm:942
+#: guix/scripts/package.scm:963
 #, fuzzy, scheme-format
 msgid "Generation ~a\t~a"
 msgstr "Criação ~a\t~a~%"
 
-#: guix/scripts/package.scm:949
+#: guix/scripts/package.scm:970
 #, scheme-format
 msgid "~a\t(current)~%"
 msgstr ""
@@ -675,8 +676,7 @@ msgid ""
 "      --bootstrap        use the bootstrap Guile to build the new Guix"
 msgstr ""
 "\n"
-"      --bootstrap        usa a inicialização do Guile para compilar o novo "
-"Guix"
+"      --bootstrap        usa a inicialização do Guile para compilar o novo Guix"
 
 #: guix/scripts/pull.scm:117
 #, scheme-format
@@ -763,7 +763,7 @@ msgstr ""
 
 #: guix/scripts/substitute-binary.scm:338
 #, scheme-format
-msgid "narinfo for '~a' lacks a signature~%"
+msgid "substitute at '~a' lacks a signature~%"
 msgstr ""
 
 #: guix/scripts/substitute-binary.scm:526
@@ -774,9 +774,7 @@ msgstr "Baixando, por favor aguarde...~%"
 #: guix/scripts/substitute-binary.scm:528
 #, scheme-format
 msgid "(Please consider upgrading Guile to get proper progress report.)~%"
-msgstr ""
-"(Por favor, considere atualizar o Guile para obter o relatório adequado do "
-"progresso.)~%"
+msgstr "(Por favor, considere atualizar o Guile para obter o relatório adequado do progresso.)~%"
 
 #: guix/scripts/substitute-binary.scm:545
 #, scheme-format
@@ -789,8 +787,7 @@ msgid ""
 "Internal tool to substitute a pre-built binary to a local build.\n"
 msgstr ""
 "Uso: guix substitute-binary [OPÇÃO]...\n"
-"Ferramenta interna para substituir um binário pré-compilado para uma "
-"compilação local.\n"
+"Ferramenta interna para substituir um binário pré-compilado para uma compilação local.\n"
 
 #: guix/scripts/substitute-binary.scm:556
 msgid ""
@@ -799,8 +796,7 @@ msgid ""
 "                         store file names passed on the standard input"
 msgstr ""
 "\n"
-"      --query            relata a disponibilidade de substitutos para os "
-"nomes\n"
+"      --query            relata a disponibilidade de substitutos para os nomes\n"
 "                         de arquivos de armazenamento passados na entrada\n"
 "                         padrão"
 
@@ -813,22 +809,19 @@ msgid ""
 msgstr ""
 "\n"
 "      --substitute ARQUIVO-ARMAZENAMENTO DESTINO\n"
-"                         baixa ARQUIVO-ARMAZENAMENTO e armazena-o como um "
-"Nar\n"
+"                         baixa ARQUIVO-ARMAZENAMENTO e armazena-o como um Nar\n"
 "                         no arquivo DESTINO"
 
-#: guix/scripts/substitute-binary.scm:599
-msgid ""
-"ACL for archive imports seems to be uninitialized, substitutes may be "
-"unavailable\n"
+#: guix/scripts/substitute-binary.scm:604
+msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
 msgstr ""
 
-#: guix/scripts/substitute-binary.scm:619
+#: guix/scripts/substitute-binary.scm:625
 #, scheme-format
 msgid "failed to look up host '~a' (~a), substituter disabled~%"
 msgstr ""
 
-#: guix/scripts/substitute-binary.scm:726
+#: guix/scripts/substitute-binary.scm:732
 #, scheme-format
 msgid "~a: unrecognized options~%"
 msgstr "~a: opções desconhecidas~%"
@@ -865,93 +858,112 @@ msgstr ""
 msgid "wrong arguments"
 msgstr "número errado de argumentos~%"
 
-#: guix/scripts/system.scm:67
+#: guix/scripts/system.scm:74
 #, fuzzy, scheme-format
 msgid "failed to open operating system file '~a': ~a~%"
 msgstr "falha ao conectar em \"~a\": ~a~%"
 
-#: guix/scripts/system.scm:70
+#: guix/scripts/system.scm:78 guix/ui.scm:238
+#, fuzzy, scheme-format
+msgid "~a: ~a~%"
+msgstr "~a~%"
+
+#: guix/scripts/system.scm:81
 #, fuzzy, scheme-format
-msgid "failed to load machine file '~a': ~s~%"
+msgid "failed to load operating system file '~a': ~s~%"
 msgstr "falha ao conectar em \"~a\": ~a~%"
 
-#: guix/scripts/system.scm:86
+#: guix/scripts/system.scm:116
 #, fuzzy, scheme-format
 msgid "failed to register '~a' under '~a'~%"
 msgstr "falha ao criar raiz de GC \"~a\": ~a~%"
 
-#: guix/scripts/system.scm:102
+#: guix/scripts/system.scm:144
 #, scheme-format
 msgid "initializing the current root file system~%"
 msgstr ""
 
-#: guix/scripts/system.scm:113
+#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
 #, fuzzy, scheme-format
 msgid "failed to install GRUB on device '~a'~%"
 msgstr "falha ao instalar local: ~a~%"
 
-#: guix/scripts/system.scm:121
+#: guix/scripts/system.scm:197
+#, scheme-format
+msgid "activating system...~%"
+msgstr ""
+
+#: guix/scripts/system.scm:236
+#, fuzzy, scheme-format
+msgid "unrecognized boot parameters for '~a'~%"
+msgstr "opção desconhecida: ~a~%"
+
+#: guix/scripts/system.scm:323
+#, fuzzy, scheme-format
+msgid "initializing operating system under '~a'...~%"
+msgstr "falha ao conectar em \"~a\": ~a~%"
+
+#: guix/scripts/system.scm:339
 msgid ""
 "Usage: guix system [OPTION] ACTION FILE\n"
 "Build the operating system declared in FILE according to ACTION.\n"
 msgstr ""
 
-#: guix/scripts/system.scm:124
+#: guix/scripts/system.scm:342
 msgid "The valid values for ACTION are:\n"
 msgstr ""
 
-#: guix/scripts/system.scm:125
+#: guix/scripts/system.scm:343
+msgid "  - 'reconfigure', switch to a new operating system configuration\n"
+msgstr ""
+
+#: guix/scripts/system.scm:345
 msgid "  - 'build', build the operating system without installing anything\n"
 msgstr ""
 
-#: guix/scripts/system.scm:127
+#: guix/scripts/system.scm:347
 msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
 msgstr ""
 
-#: guix/scripts/system.scm:129
+#: guix/scripts/system.scm:349
 msgid "  - 'vm-image', build a freestanding virtual machine image\n"
 msgstr ""
 
-#: guix/scripts/system.scm:131
+#: guix/scripts/system.scm:351
 msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
 msgstr ""
 
-#: guix/scripts/system.scm:133
+#: guix/scripts/system.scm:353
 msgid "  - 'init', initialize a root file system to run GNU.\n"
 msgstr ""
 
-#: guix/scripts/system.scm:137
+#: guix/scripts/system.scm:357
 msgid ""
 "\n"
 "      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
 msgstr ""
 
-#: guix/scripts/system.scm:139
+#: guix/scripts/system.scm:359
 msgid ""
 "\n"
 "      --no-grub          for 'init', do not install GRUB"
 msgstr ""
 
-#: guix/scripts/system.scm:198
+#: guix/scripts/system.scm:422
 #, fuzzy, scheme-format
 msgid "~a: unknown action~%"
 msgstr "~A: pacote desconhecido~%"
 
-#: guix/scripts/system.scm:215
+#: guix/scripts/system.scm:439
 #, fuzzy, scheme-format
 msgid "wrong number of arguments for action '~a'~%"
 msgstr "número errado de argumentos~%"
 
-#: guix/scripts/system.scm:234
+#: guix/scripts/system.scm:459
 #, scheme-format
 msgid "no configuration file specified~%"
 msgstr ""
 
-#: guix/scripts/system.scm:272
-#, fuzzy, scheme-format
-msgid "initializing operating system under '~a'...~%"
-msgstr "falha ao conectar em \"~a\": ~a~%"
-
 #: guix/gnu-maintenance.scm:373
 #, scheme-format
 msgid "signature verification failed for `~a'~%"
@@ -980,8 +992,7 @@ msgstr "falha ao instalar local: ~a~%"
 #: guix/ui.scm:150
 msgid ""
 "Copyright (C) 2014 the Guix authors\n"
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
 "This is free software: you are free to change and redistribute it.\n"
 "There is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
@@ -1035,9 +1046,7 @@ msgstr "~a:~a:~a: pacote \"~a\" tem uma entrada inválida: ~s~%"
 #: guix/ui.scm:219
 #, scheme-format
 msgid "~a: ~a: build system `~a' does not support cross builds~%"
-msgstr ""
-"~a: ~a: sistema de compilação de \"~a\" não tem suporte a compilações "
-"cruzadas~%"
+msgstr "~a: ~a: sistema de compilação de \"~a\" não tem suporte a compilações cruzadas~%"
 
 #: guix/ui.scm:224
 #, scheme-format
@@ -1049,70 +1058,65 @@ msgstr "falha ao conectar em \"~a\": ~a~%"
 msgid "build failed: ~a~%"
 msgstr "compilação falhou: ~a~%"
 
-#: guix/ui.scm:238
-#, fuzzy, scheme-format
-msgid "~a: ~a~%"
-msgstr "~a~%"
-
-#: guix/ui.scm:255
+#: guix/ui.scm:257
 #, scheme-format
 msgid "failed to read expression ~s: ~s~%"
 msgstr "falha ao ler a expressão ~s: ~s~%"
 
-#: guix/ui.scm:261
+#: guix/ui.scm:263
 #, scheme-format
 msgid "failed to evaluate expression `~a': ~s~%"
 msgstr "falha ao avaliar a expressão \"~a\": ~s~%"
 
-#: guix/ui.scm:270
+#: guix/ui.scm:272
 #, fuzzy, scheme-format
 msgid "expression ~s does not evaluate to a package~%"
 msgstr "expressão \"~s\" não corresponde a um pacote~%"
 
-#: guix/ui.scm:317
+#: guix/ui.scm:319
 #, scheme-format
 msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
 msgstr "~:[A seguinte derivação será compilada:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:322
+#: guix/ui.scm:324
 #, scheme-format
 msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
 msgstr "~:[O seguinte arquivo será baixado:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:328
+#: guix/ui.scm:330
 #, scheme-format
 msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
 msgstr "~:[A seguinte derivação será compilada:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:333
+#: guix/ui.scm:335
 #, scheme-format
 msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
 msgstr "~:[O seguinte arquivo será baixado:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:350
+#: guix/ui.scm:352
 msgid "<unknown location>"
 msgstr "<local desconhecido>"
 
-#: guix/ui.scm:378
+#: guix/ui.scm:380
 #, scheme-format
 msgid "failed to create configuration directory `~a': ~a~%"
 msgstr "falha ao criar o diretório de compilação \"~a\": ~a~%"
 
-#: guix/ui.scm:459 guix/ui.scm:473
+#: guix/ui.scm:475 guix/ui.scm:489
 msgid "unknown"
 msgstr "desconhecido"
 
-#: guix/ui.scm:582
+#: guix/ui.scm:598
 #, scheme-format
 msgid "invalid argument: ~a~%"
 msgstr "argumento inválido: ~a~%"
 
-#: guix/ui.scm:587
+#: guix/ui.scm:603
 #, scheme-format
 msgid "Try `guix --help' for more information.~%"
 msgstr "Tente \"guix --help\" para mais informações.~%"
 
-#: guix/ui.scm:617
+#: guix/ui.scm:633
 msgid ""
 "Usage: guix COMMAND ARGS...\n"
 "Run COMMAND with ARGS.\n"
@@ -1120,21 +1124,21 @@ msgstr ""
 "Uso: guix COMANDO ARGUMENTOS...\n"
 "Executa COMANDO com ARGUMENTOS.\n"
 
-#: guix/ui.scm:620
+#: guix/ui.scm:636
 msgid "COMMAND must be one of the sub-commands listed below:\n"
 msgstr "COMANDO deve ser um dos subcomandos listados abaixo:\n"
 
-#: guix/ui.scm:640
+#: guix/ui.scm:656
 #, scheme-format
 msgid "guix: ~a: command not found~%"
 msgstr "guix: ~a: comando não encontrado~%"
 
-#: guix/ui.scm:658
+#: guix/ui.scm:674
 #, scheme-format
 msgid "guix: missing command name~%"
 msgstr "guix: faltando um nome de comando~%"
 
-#: guix/ui.scm:666
+#: guix/ui.scm:682
 #, scheme-format
 msgid "guix: unrecognized option '~a'~%"
 msgstr "guix: opção \"~a\" desconhecida~%"
@@ -1237,3 +1241,7 @@ msgstr ""
 #: guix/nar.scm:487
 msgid "invalid inter-file archive mark"
 msgstr ""
+
+#, fuzzy
+#~ msgid "failed to load machine file '~a': ~s~%"
+#~ msgstr "falha ao conectar em \"~a\": ~a~%"
diff --git a/po/guix/sr.po b/po/guix/sr.po
index c1b10cea73..28bdc170ae 100644
--- a/po/guix/sr.po
+++ b/po/guix/sr.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: guix-0.6-pre1\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-04-05 12:37+0200\n"
+"POT-Creation-Date: 2014-07-25 00:55+0200\n"
 "PO-Revision-Date: 2014-06-19 08:51+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
@@ -14,41 +14,39 @@ msgstr ""
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: gnu/packages.scm:95
+#: gnu/packages.scm:102
 #, scheme-format
 msgid "cannot access `~a': ~a~%"
 msgstr "не могу да приступим „~a“: ~a~%"
 
-#: guix/scripts/build.scm:54 guix/scripts/package.scm:337
-#: guix/scripts/build.scm:53 guix/scripts/package.scm:337
+#: guix/scripts/build.scm:54 guix/scripts/package.scm:349
 #, scheme-format
 msgid "ambiguous package specification `~a'~%"
 msgstr "нејасна одредница пакета „~a“~%"
 
-#: guix/scripts/build.scm:54 guix/scripts/package.scm:339
+#: guix/scripts/build.scm:55 guix/scripts/package.scm:351
 #, scheme-format
 msgid "choosing ~a from ~a~%"
 msgstr "бирам ~a из ~a~%"
 
-#: guix/scripts/build.scm:60
+#: guix/scripts/build.scm:61
 #, scheme-format
 msgid "~A: package not found for version ~a~%"
 msgstr "~A: нисам пронашао пакет за издање ~a~%"
 
-#: guix/scripts/build.scm:62
+#: guix/scripts/build.scm:63
 #, scheme-format
 msgid "~A: unknown package~%"
 msgstr "~A: непознат пакет~%"
 
-#: guix/scripts/build.scm:85
+#: guix/scripts/build.scm:86
 #, scheme-format
 msgid "failed to create GC root `~a': ~a~%"
 msgstr "нисам успео да направим ГЦ корен „~a“: ~a~%"
 
-#: guix/scripts/build.scm:122
+#: guix/scripts/build.scm:123
 msgid ""
 "\n"
 "  -K, --keep-failed      keep build tree of failed builds"
@@ -56,7 +54,7 @@ msgstr ""
 "\n"
 "  -K, --keep-failed      задржава стабло изградње неуспелих изградњи"
 
-#: guix/scripts/build.scm:124
+#: guix/scripts/build.scm:125
 msgid ""
 "\n"
 "  -n, --dry-run          do not build the derivations"
@@ -64,7 +62,7 @@ msgstr ""
 "\n"
 "  -n, --dry-run          не изграђује изведенице"
 
-#: guix/scripts/build.scm:126
+#: guix/scripts/build.scm:127
 msgid ""
 "\n"
 "      --fallback         fall back to building when the substituter fails"
@@ -72,25 +70,23 @@ msgstr ""
 "\n"
 "      --fallback         враћа се на изградњу када заменик не успе"
 
-#: guix/scripts/build.scm:128
+#: guix/scripts/build.scm:129
 msgid ""
 "\n"
 "      --no-substitutes   build instead of resorting to pre-built substitutes"
 msgstr ""
 "\n"
-"      --no-substitutes   изграђује уместо да поново ређа заменике "
-"предизградње"
+"      --no-substitutes   изграђује уместо да поново ређа заменике предизградње"
 
-#: guix/scripts/build.scm:130
+#: guix/scripts/build.scm:131
 msgid ""
 "\n"
 "      --no-build-hook    do not attempt to offload builds via the build hook"
 msgstr ""
 "\n"
-"      --no-build-hook    не покушава да растерети изградњу путем предворја "
-"изградње"
+"      --no-build-hook    не покушава да растерети изградњу путем предворја изградње"
 
-#: guix/scripts/build.scm:132
+#: guix/scripts/build.scm:133
 msgid ""
 "\n"
 "      --max-silent-time=SECONDS\n"
@@ -100,7 +96,7 @@ msgstr ""
 "      --max-silent-time=СЕКУНДЕ\n"
 "                         означава изградњу неупелом након СЕКУНДЕ мировања"
 
-#: guix/scripts/build.scm:135
+#: guix/scripts/build.scm:136
 msgid ""
 "\n"
 "      --timeout=SECONDS  mark the build as failed after SECONDS of activity"
@@ -109,7 +105,7 @@ msgstr ""
 "      --timeout=СЕКУНДЕ\n"
 "                         означава изградњу неуспелом након СЕКУНДЕ рада"
 
-#: guix/scripts/build.scm:137
+#: guix/scripts/build.scm:138
 msgid ""
 "\n"
 "      --verbosity=LEVEL  use the given verbosity LEVEL"
@@ -117,21 +113,20 @@ msgstr ""
 "\n"
 "      --verbosity=НИВО  користи дати НИВО опширности"
 
-#: guix/scripts/build.scm:139
+#: guix/scripts/build.scm:140
 msgid ""
 "\n"
 "  -c, --cores=N          allow the use of up to N CPU cores for the build"
 msgstr ""
 "\n"
-"  -c, --cores=N          омогућава коришћење до N језгра процесора за "
-"изградњу"
+"  -c, --cores=N          омогућава коришћење до N језгра процесора за изградњу"
 
-#: guix/scripts/build.scm:204
+#: guix/scripts/build.scm:206
 #, scheme-format
 msgid "~a: not a number~%"
 msgstr "~a: није број~%"
 
-#: guix/scripts/build.scm:220
+#: guix/scripts/build.scm:223
 msgid ""
 "Usage: guix build [OPTION]... PACKAGE-OR-DERIVATION...\n"
 "Build the given PACKAGE-OR-DERIVATION and return their output paths.\n"
@@ -139,7 +134,7 @@ msgstr ""
 "Употреба: guix build [ОПЦИЈА]... ПАКЕТ-ИЛИ-ИЗВЕДНИЦА...\n"
 "Изграђује дати ПАКЕТ-ИЛИ-ИЗВЕДНИЦУ и исписује њихове путање излаза.\n"
 
-#: guix/scripts/build.scm:222
+#: guix/scripts/build.scm:225
 msgid ""
 "\n"
 "  -e, --expression=EXPR  build the package or derivation EXPR evaluates to"
@@ -147,7 +142,7 @@ msgstr ""
 "\n"
 "  -e, --expression=ИЗРАЗ  изграђује процене ИЗРАЗА пакета или изведенице на"
 
-#: guix/scripts/build.scm:224
+#: guix/scripts/build.scm:227
 msgid ""
 "\n"
 "  -S, --source           build the packages' source derivations"
@@ -155,7 +150,7 @@ msgstr ""
 "\n"
 "  -S, --source           изграђује изведенице извора пакета"
 
-#: guix/scripts/build.scm:226
+#: guix/scripts/build.scm:229
 msgid ""
 "\n"
 "  -s, --system=SYSTEM    attempt to build for SYSTEM--e.g., \"i686-linux\""
@@ -163,7 +158,7 @@ msgstr ""
 "\n"
 "  -s, --system=СИСТЕМ    покушава да изгради за СИСТЕМ--e.g., „i686-linux“"
 
-#: guix/scripts/build.scm:228
+#: guix/scripts/build.scm:231
 msgid ""
 "\n"
 "      --target=TRIPLET   cross-build for TRIPLET--e.g., \"armel-linux-gnu\""
@@ -171,7 +166,7 @@ msgstr ""
 "\n"
 "      --target=ТРОЈКА   унакрсно изграђује за ТРОЈКУ--e.g., „armel-linux-gnu“"
 
-#: guix/scripts/build.scm:230
+#: guix/scripts/build.scm:233
 msgid ""
 "\n"
 "      --with-source=SOURCE\n"
@@ -181,7 +176,7 @@ msgstr ""
 "      --with-source=ИЗВОР\n"
 "                         користи ИЗВОР приликом изградње одговарајућег пакета"
 
-#: guix/scripts/build.scm:233
+#: guix/scripts/build.scm:236
 msgid ""
 "\n"
 "  -d, --derivations      return the derivation paths of the given packages"
@@ -189,18 +184,17 @@ msgstr ""
 "\n"
 "  -d, --derivations      исписује путање изведенице датог пакета"
 
-#: guix/scripts/build.scm:235
+#: guix/scripts/build.scm:238
 msgid ""
 "\n"
 "  -r, --root=FILE        make FILE a symlink to the result, and register it\n"
 "                         as a garbage collector root"
 msgstr ""
 "\n"
-"  -r, --root=ДАТОТЕКА       чини ДАТОТЕКУ симболичком везом ка резултату, и "
-"бележи је\n"
+"  -r, --root=ДАТОТЕКА       чини ДАТОТЕКУ симболичком везом ка резултату, и бележи је\n"
 "                         као корен скупљача ђубра"
 
-#: guix/scripts/build.scm:238
+#: guix/scripts/build.scm:241
 msgid ""
 "\n"
 "      --log-file         return the log file names for the given derivations"
@@ -208,10 +202,10 @@ msgstr ""
 "\n"
 "      --log-file         исписује називе датотеке дневника за дате изведенице"
 
-#: guix/scripts/build.scm:243 guix/scripts/download.scm:53
-#: guix/scripts/package.scm:511 guix/scripts/gc.scm:58
+#: guix/scripts/build.scm:246 guix/scripts/download.scm:53
+#: guix/scripts/package.scm:525 guix/scripts/gc.scm:58
 #: guix/scripts/hash.scm:55 guix/scripts/pull.scm:82
-#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:77
+#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
 msgid ""
 "\n"
 "  -h, --help             display this help and exit"
@@ -219,10 +213,10 @@ msgstr ""
 "\n"
 "  -h, --help                  приказује ову помоћ и излази"
 
-#: guix/scripts/build.scm:245 guix/scripts/download.scm:55
-#: guix/scripts/package.scm:513 guix/scripts/gc.scm:60
+#: guix/scripts/build.scm:248 guix/scripts/download.scm:55
+#: guix/scripts/package.scm:527 guix/scripts/gc.scm:60
 #: guix/scripts/hash.scm:57 guix/scripts/pull.scm:84
-#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:79
+#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
 msgid ""
 "\n"
 "  -V, --version          display version information and exit"
@@ -230,19 +224,19 @@ msgstr ""
 "\n"
 "  -V, --version              приказује податке о издању и излази"
 
-#: guix/scripts/build.scm:360
+#: guix/scripts/build.scm:368
 #, scheme-format
 msgid "sources do not match any package:~{ ~a~}~%"
 msgstr "извори не одговарају ниједном пакету:~{ ~a~}~%"
 
-#: guix/scripts/build.scm:389 guix/scripts/download.scm:96
-#: guix/scripts/package.scm:744 guix/scripts/gc.scm:152
-#: guix/scripts/pull.scm:115 guix/scripts/system.scm:116
+#: guix/scripts/build.scm:397 guix/scripts/download.scm:96
+#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
+#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
 #, scheme-format
 msgid "~A: unrecognized option~%"
 msgstr "~A: непозната опција~%"
 
-#: guix/scripts/build.scm:417
+#: guix/scripts/build.scm:425
 #, scheme-format
 msgid "no build log for '~a'~%"
 msgstr "нема дневника изградње за „~a“~%"
@@ -286,73 +280,73 @@ msgstr "~a: нисам успео да обрадим путању~%"
 msgid "~a: download failed~%"
 msgstr "~a: преузимање није успело~%"
 
-#: guix/scripts/package.scm:76
+#: guix/scripts/package.scm:88
 #, scheme-format
 msgid "failed to build the empty profile~%"
 msgstr "нисам успео да изградим празан профил~%"
 
-#: guix/scripts/package.scm:85
+#: guix/scripts/package.scm:97
 #, scheme-format
 msgid "switching from generation ~a to ~a~%"
 msgstr "пребацујем се са генерације ~a на ~a~%"
 
-#: guix/scripts/package.scm:96 guix/scripts/package.scm:852
-#: guix/scripts/package.scm:964
+#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
+#: guix/scripts/package.scm:985
 #, scheme-format
 msgid "profile '~a' does not exist~%"
 msgstr "профил „~a“ не постоји~%"
 
-#: guix/scripts/package.scm:100
+#: guix/scripts/package.scm:112
 #, scheme-format
 msgid "nothing to do: already at the empty profile~%"
 msgstr "ништа за урадити: већ сам у празном профилу~%"
 
-#: guix/scripts/package.scm:185
+#: guix/scripts/package.scm:197
 #, scheme-format
 msgid "The following package would be removed:~%~{~a~%~}~%"
 msgstr "Следећи пакети би требали бити уклоњени:~%~{~a~%~}~%"
 
-#: guix/scripts/package.scm:190
+#: guix/scripts/package.scm:202
 #, scheme-format
 msgid "The following package will be removed:~%~{~a~%~}~%"
 msgstr "Следећи пакети ће бити уклоњени:~%~{~a~%~}~%"
 
-#: guix/scripts/package.scm:202
+#: guix/scripts/package.scm:214
 #, scheme-format
 msgid "The following package would be installed:~%~{~a~%~}~%"
 msgstr "Следећи пакети би требали бити инсталирани:~%~{~a~%~}~%"
 
-#: guix/scripts/package.scm:207
+#: guix/scripts/package.scm:219
 #, scheme-format
 msgid "The following package will be installed:~%~{~a~%~}~%"
 msgstr "Следећи пакети ће бити инсталирани:~%~{~a~%~}~%"
 
-#: guix/scripts/package.scm:327
+#: guix/scripts/package.scm:339
 #, scheme-format
 msgid "package `~a' lacks output `~a'~%"
 msgstr "пакету „~a“ недостаје излаз „~a“~%"
 
-#: guix/scripts/package.scm:344
+#: guix/scripts/package.scm:356
 #, scheme-format
 msgid "~a: package not found~%"
 msgstr "~a: нисам пронашао пакет~%"
 
-#: guix/scripts/package.scm:379
+#: guix/scripts/package.scm:391
 #, scheme-format
 msgid "looking for the latest release of GNU ~a..."
 msgstr "тражим последње издање Гнуа ~a..."
 
-#: guix/scripts/package.scm:383
+#: guix/scripts/package.scm:395
 #, scheme-format
 msgid "~a: note: using ~a but ~a is available upstream~%"
 msgstr "~a: напомена: користим ~a али ~a је доступно узводно~%"
 
-#: guix/scripts/package.scm:455
+#: guix/scripts/package.scm:467
 #, scheme-format
 msgid "The following environment variable definitions may be needed:~%"
 msgstr "Следеће одреднице променљиве окружења могу бити потребне:~%"
 
-#: guix/scripts/package.scm:471
+#: guix/scripts/package.scm:483
 msgid ""
 "Usage: guix package [OPTION]... PACKAGES...\n"
 "Install, remove, or upgrade PACKAGES in a single transaction.\n"
@@ -360,7 +354,7 @@ msgstr ""
 "Употреба: guix package [ОПЦИЈА]... ПАКЕТИ...\n"
 "Инсталирајте, уклоните, или доградите ПАКЕТЕ у једном прелазу.\n"
 
-#: guix/scripts/package.scm:473
+#: guix/scripts/package.scm:485
 msgid ""
 "\n"
 "  -i, --install=PACKAGE  install PACKAGE"
@@ -368,7 +362,7 @@ msgstr ""
 "\n"
 "  -i, --install=ПАКЕТ  инсталира ПАКЕТ"
 
-#: guix/scripts/package.scm:475
+#: guix/scripts/package.scm:487
 msgid ""
 "\n"
 "  -e, --install-from-expression=EXP\n"
@@ -378,7 +372,7 @@ msgstr ""
 "  -e, --install-from-expression=ИЗР\n"
 "                         инсталира процене ИЗР пакета у"
 
-#: guix/scripts/package.scm:478
+#: guix/scripts/package.scm:490
 msgid ""
 "\n"
 "  -r, --remove=PACKAGE   remove PACKAGE"
@@ -386,16 +380,15 @@ msgstr ""
 "\n"
 "  -r, --remove=ПАКЕТ   уклања ПАКЕТ"
 
-#: guix/scripts/package.scm:480
+#: guix/scripts/package.scm:492
 msgid ""
 "\n"
 "  -u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"
 msgstr ""
 "\n"
-"  -u, --upgrade[=РЕГИЗР] дограђује све инсталиране пакете који одговарају "
-"РЕГИЗРАЗУ"
+"  -u, --upgrade[=РЕГИЗР] дограђује све инсталиране пакете који одговарају РЕГИЗРАЗУ"
 
-#: guix/scripts/package.scm:482
+#: guix/scripts/package.scm:494
 msgid ""
 "\n"
 "      --roll-back        roll back to the previous generation"
@@ -403,7 +396,7 @@ msgstr ""
 "\n"
 "      --roll-back        враћа се на претходну генерацију"
 
-#: guix/scripts/package.scm:484
+#: guix/scripts/package.scm:496
 msgid ""
 "\n"
 "      --search-paths     display needed environment variable definitions"
@@ -411,7 +404,7 @@ msgstr ""
 "\n"
 "      --search-paths     приказује потребне одреднице променљиве окружења"
 
-#: guix/scripts/package.scm:486
+#: guix/scripts/package.scm:498
 msgid ""
 "\n"
 "  -l, --list-generations[=PATTERN]\n"
@@ -421,7 +414,7 @@ msgstr ""
 "  -l, --list-generations[=ШАБЛОН]\n"
 "                         исписује генерације које одговарају ШАБЛОНУ"
 
-#: guix/scripts/package.scm:489
+#: guix/scripts/package.scm:501
 msgid ""
 "\n"
 "  -d, --delete-generations[=PATTERN]\n"
@@ -431,7 +424,7 @@ msgstr ""
 "  -d, --delete-generations[=ШАБЛОН]\n"
 "                         брише генерације које одговарају ШАБЛОНУ"
 
-#: guix/scripts/package.scm:492
+#: guix/scripts/package.scm:504
 msgid ""
 "\n"
 "  -p, --profile=PROFILE  use PROFILE instead of the user's default profile"
@@ -439,7 +432,7 @@ msgstr ""
 "\n"
 "  -p, --profile=ПРОФИЛ   користи ПРОФИЛ уместо корисничког подразумеваног"
 
-#: guix/scripts/package.scm:495
+#: guix/scripts/package.scm:507
 msgid ""
 "\n"
 "      --bootstrap        use the bootstrap Guile to build the profile"
@@ -447,7 +440,7 @@ msgstr ""
 "\n"
 "      --bootstrap        користи Гуиле почетног учитавања да изгради профил"
 
-#: guix/scripts/package.scm:497 guix/scripts/pull.scm:75
+#: guix/scripts/package.scm:509 guix/scripts/pull.scm:75
 msgid ""
 "\n"
 "      --verbose          produce verbose output"
@@ -455,7 +448,7 @@ msgstr ""
 "\n"
 "      --verbose          ствара опширан излаз"
 
-#: guix/scripts/package.scm:500
+#: guix/scripts/package.scm:512
 msgid ""
 "\n"
 "  -s, --search=REGEXP    search in synopsis and description using REGEXP"
@@ -463,7 +456,7 @@ msgstr ""
 "\n"
 "  -s, --search=РЕГИЗР    тражи у скици и опису користећи РЕГИЗР"
 
-#: guix/scripts/package.scm:502
+#: guix/scripts/package.scm:514
 msgid ""
 "\n"
 "  -I, --list-installed[=REGEXP]\n"
@@ -471,10 +464,9 @@ msgid ""
 msgstr ""
 "\n"
 "  -I, --list-installed[=РЕГИЗР]\n"
-"                         исписује инсталиране пакете који одговарају "
-"РЕГИЗРАЗУ"
+"                         исписује инсталиране пакете који одговарају РЕГИЗРАЗУ"
 
-#: guix/scripts/package.scm:505
+#: guix/scripts/package.scm:517
 msgid ""
 "\n"
 "  -A, --list-available[=REGEXP]\n"
@@ -484,62 +476,71 @@ msgstr ""
 "  -A, --list-available[=РЕГИЗР]\n"
 "                         исписује доступне пакете који одговарају РЕГИЗРАЗУ"
 
-#: guix/scripts/package.scm:748
+#: guix/scripts/package.scm:520
+#, fuzzy
+msgid ""
+"\n"
+"  --show=PACKAGE         show details about PACKAGE"
+msgstr ""
+"\n"
+"  -i, --install=ПАКЕТ  инсталира ПАКЕТ"
+
+#: guix/scripts/package.scm:767
 #, scheme-format
 msgid "~A: extraneous argument~%"
 msgstr "~A: страни аргумент~%"
 
-#: guix/scripts/package.scm:763
+#: guix/scripts/package.scm:782
 #, scheme-format
 msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
 msgstr "Покушајте „info '(guix) Invoking guix package'“ за више података.~%"
 
-#: guix/scripts/package.scm:785
+#: guix/scripts/package.scm:804
 #, scheme-format
 msgid "error: while creating directory `~a': ~a~%"
 msgstr "грешка: приликом стварања директоријума „~a“: ~a~%"
 
-#: guix/scripts/package.scm:789
+#: guix/scripts/package.scm:808
 #, scheme-format
 msgid "Please create the `~a' directory, with you as the owner.~%"
 msgstr "Направите директоријум „~a“, у вашем власништву.~%"
 
-#: guix/scripts/package.scm:796
+#: guix/scripts/package.scm:815
 #, scheme-format
 msgid "error: directory `~a' is not owned by you~%"
 msgstr "грешка: директоријум „~a“ није у вашем власништву~%"
 
-#: guix/scripts/package.scm:799
+#: guix/scripts/package.scm:818
 #, scheme-format
 msgid "Please change the owner of `~a' to user ~s.~%"
 msgstr "Поставите као власника ~s над „~a“.~%"
 
-#: guix/scripts/package.scm:822
+#: guix/scripts/package.scm:843
 #, scheme-format
 msgid "deleting ~a~%"
 msgstr "бришем ~a~%"
 
-#: guix/scripts/package.scm:875 guix/scripts/package.scm:980
+#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
 #, scheme-format
 msgid "invalid syntax: ~a~%"
 msgstr "неисправна синтакса: ~a~%"
 
-#: guix/scripts/package.scm:904
+#: guix/scripts/package.scm:925
 #, scheme-format
 msgid "nothing to be done~%"
 msgstr "ништа неће бити урађено~%"
 
-#: guix/scripts/package.scm:927
+#: guix/scripts/package.scm:948
 #, scheme-format
 msgid "~a package in profile~%"
 msgstr "~a пакет у профилу~%"
 
-#: guix/scripts/package.scm:942
+#: guix/scripts/package.scm:963
 #, scheme-format
 msgid "Generation ~a\t~a"
 msgstr "Генерација ~a\t~a"
 
-#: guix/scripts/package.scm:949
+#: guix/scripts/package.scm:970
 #, scheme-format
 msgid "~a\t(current)~%"
 msgstr "~a\t(текуће)~%"
@@ -610,17 +611,7 @@ msgstr ""
 "\n"
 "      --referrers        исписује убрајаче ПУТАЊА"
 
-#: guix/scripts/gc.scm:92
-#, scheme-format
-msgid "unknown unit: ~a~%"
-msgstr "непозната јединица: ~a~%"
-
-#: guix/scripts/gc.scm:93
-#, scheme-format
-msgid "invalid number: ~a~%"
-msgstr "неисправан број: ~a~%"
-
-#: guix/scripts/gc.scm:114
+#: guix/scripts/gc.scm:84
 #, scheme-format
 msgid "invalid amount of storage: ~a~%"
 msgstr "неисправан износ складишта: ~a~%"
@@ -652,7 +643,7 @@ msgstr ""
 msgid "unrecognized option: ~a~%"
 msgstr "непозната опција: ~a~%"
 
-#: guix/scripts/hash.scm:134 guix/ui.scm:193
+#: guix/scripts/hash.scm:134 guix/ui.scm:233
 #, scheme-format
 msgid "~a~%"
 msgstr "~a~%"
@@ -684,8 +675,7 @@ msgid ""
 "      --bootstrap        use the bootstrap Guile to build the new Guix"
 msgstr ""
 "\n"
-"      --bootstrap        користи Гуиле почетног учитавања да изгради нови "
-"Гуикс"
+"      --bootstrap        користи Гуиле почетног учитавања да изгради нови Гуикс"
 
 #: guix/scripts/pull.scm:117
 #, scheme-format
@@ -771,8 +761,8 @@ msgid "signature on '~a' is corrupt~%"
 msgstr "потпис на „~a“ је оштећен~%"
 
 #: guix/scripts/substitute-binary.scm:338
-#, scheme-format
-msgid "narinfo for '~a' lacks a signature~%"
+#, fuzzy, scheme-format
+msgid "substitute at '~a' lacks a signature~%"
 msgstr "нарподацима за „~a“ недостаје потпис~%"
 
 #: guix/scripts/substitute-binary.scm:526
@@ -783,8 +773,7 @@ msgstr "Преузима, молим сачекајте...~%"
 #: guix/scripts/substitute-binary.scm:528
 #, scheme-format
 msgid "(Please consider upgrading Guile to get proper progress report.)~%"
-msgstr ""
-"(Размотрите надоградњу Гуила да добијете извештај о његовом напредовању.)~%"
+msgstr "(Размотрите надоградњу Гуила да добијете извештај о његовом напредовању.)~%"
 
 #: guix/scripts/substitute-binary.scm:545
 #, scheme-format
@@ -806,8 +795,7 @@ msgid ""
 "                         store file names passed on the standard input"
 msgstr ""
 "\n"
-"      --query            извештава о доступности заменика за називе "
-"датотека\n"
+"      --query            извештава о доступности заменика за називе датотека\n"
 "                         складишта прослеђених на стандардном улазу"
 
 #: guix/scripts/substitute-binary.scm:559
@@ -819,23 +807,19 @@ msgid ""
 msgstr ""
 "\n"
 "      --substitute ОДРЕДИШТЕ СКЛАДИШНЕ-ДАТОТЕКЕ\n"
-"                         преузима СКЛАДИШНУ-ДАТОТЕКУ и смешта је као Нар "
-"удатотеци\n"
+"                         преузима СКЛАДИШНУ-ДАТОТЕКУ и смешта је као Нар удатотеци\n"
 "                         ОДРЕДИШТЕ"
 
-#: guix/scripts/substitute-binary.scm:599
-msgid ""
-"ACL for archive imports seems to be uninitialized, substitutes may be "
-"unavailable\n"
-msgstr ""
-"АЦЛ за увоз архиве изгледа да је неупотребљив, замене могу бити недоступне\n"
+#: guix/scripts/substitute-binary.scm:604
+msgid "ACL for archive imports seems to be uninitialized, substitutes may be unavailable\n"
+msgstr "АЦЛ за увоз архиве изгледа да је неупотребљив, замене могу бити недоступне\n"
 
-#: guix/scripts/substitute-binary.scm:619
+#: guix/scripts/substitute-binary.scm:625
 #, scheme-format
 msgid "failed to look up host '~a' (~a), substituter disabled~%"
 msgstr "нисам успео да потражим домаћина „~a“ (~a), замењивач је искључен~%"
 
-#: guix/scripts/substitute-binary.scm:726
+#: guix/scripts/substitute-binary.scm:732
 #, scheme-format
 msgid "~a: unrecognized options~%"
 msgstr "~a: непозната опција~%"
@@ -860,7 +844,7 @@ msgstr "грешка: неовлашћени јавни кључ: ~a~%"
 msgid "error: corrupt signature data: ~a~%"
 msgstr "грешка: оштећени подаци потписа: ~a~%"
 
-#: guix/scripts/authenticate.scm:110
+#: guix/scripts/authenticate.scm:126
 msgid ""
 "Usage: guix authenticate OPTION...\n"
 "Sign or verify the signature on the given file.  This tool is meant to\n"
@@ -870,21 +854,56 @@ msgstr ""
 "Потпишите или проверите потпис на датој датотеци.  Овај алат је замишљен\n"
 "за унутрашњу употребу гуих-демоном.\n"
 
-#: guix/scripts/authenticate.scm:116
+#: guix/scripts/authenticate.scm:132
 msgid "wrong arguments"
 msgstr "погрешни аргуменати"
 
-#: guix/scripts/system.scm:59
+#: guix/scripts/system.scm:74
 #, scheme-format
 msgid "failed to open operating system file '~a': ~a~%"
 msgstr "нисам успео да отворим датотеку оперативног система „~a“: ~a~%"
 
-#: guix/scripts/system.scm:62
+#: guix/scripts/system.scm:78 guix/ui.scm:238
 #, scheme-format
-msgid "failed to load machine file '~a': ~s~%"
-msgstr "нисам успео да учитам датотеку машине „~a“: ~s~%"
+msgid "~a: ~a~%"
+msgstr "~a: ~a~%"
+
+#: guix/scripts/system.scm:81
+#, fuzzy, scheme-format
+msgid "failed to load operating system file '~a': ~s~%"
+msgstr "нисам успео да отворим датотеку оперативног система „~a“: ~a~%"
+
+#: guix/scripts/system.scm:116
+#, fuzzy, scheme-format
+msgid "failed to register '~a' under '~a'~%"
+msgstr "нисам успео да направим ГЦ корен „~a“: ~a~%"
+
+#: guix/scripts/system.scm:144
+#, scheme-format
+msgid "initializing the current root file system~%"
+msgstr ""
+
+#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
+#, fuzzy, scheme-format
+msgid "failed to install GRUB on device '~a'~%"
+msgstr "нисам успео да инсталирам локалитет: ~a~%"
+
+#: guix/scripts/system.scm:197
+#, scheme-format
+msgid "activating system...~%"
+msgstr ""
+
+#: guix/scripts/system.scm:236
+#, fuzzy, scheme-format
+msgid "unrecognized boot parameters for '~a'~%"
+msgstr "непозната опција: ~a~%"
+
+#: guix/scripts/system.scm:323
+#, fuzzy, scheme-format
+msgid "initializing operating system under '~a'...~%"
+msgstr "нисам успео да отворим датотеку оперативног система „~a“: ~a~%"
 
-#: guix/scripts/system.scm:71
+#: guix/scripts/system.scm:339
 msgid ""
 "Usage: guix system [OPTION] ACTION FILE\n"
 "Build the operating system declared in FILE according to ACTION.\n"
@@ -892,69 +911,99 @@ msgstr ""
 "Употреба: guix system [ОПЦИЈА] РАДЊА ДАТОТЕКА\n"
 "Изграђује оперативни систем објављен у ДАТОТЕЦИ у складу са РАДЊОМ.\n"
 
-#: guix/scripts/system.scm:73
+#: guix/scripts/system.scm:342
+msgid "The valid values for ACTION are:\n"
+msgstr ""
+
+#: guix/scripts/system.scm:343
+msgid "  - 'reconfigure', switch to a new operating system configuration\n"
+msgstr ""
+
+#: guix/scripts/system.scm:345
+msgid "  - 'build', build the operating system without installing anything\n"
+msgstr ""
+
+#: guix/scripts/system.scm:347
+msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
+msgstr ""
+
+#: guix/scripts/system.scm:349
+msgid "  - 'vm-image', build a freestanding virtual machine image\n"
+msgstr ""
+
+#: guix/scripts/system.scm:351
+msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
+msgstr ""
+
+#: guix/scripts/system.scm:353
+msgid "  - 'init', initialize a root file system to run GNU.\n"
+msgstr ""
+
+#: guix/scripts/system.scm:357
 msgid ""
-"Currently the only valid value for ACTION is 'vm', which builds\n"
-"a virtual machine of the given operating system.\n"
+"\n"
+"      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
 msgstr ""
-"Тренутно једина исправна вредност за РАДЊУ је „vm“, која гради\n"
-"виртуелну машину датог оперативног система.\n"
 
-#: guix/scripts/system.scm:121
-#, scheme-format
-msgid "~a: extraneous argument~%"
-msgstr "~a: страни аргумент~%"
+#: guix/scripts/system.scm:359
+msgid ""
+"\n"
+"      --no-grub          for 'init', do not install GRUB"
+msgstr ""
 
-#: guix/scripts/system.scm:126
+#: guix/scripts/system.scm:422
 #, scheme-format
 msgid "~a: unknown action~%"
 msgstr "~a: непозната радња~%"
 
-#: guix/scripts/system.scm:135
+#: guix/scripts/system.scm:439
+#, fuzzy, scheme-format
+msgid "wrong number of arguments for action '~a'~%"
+msgstr "погрешан број аргумената~%"
+
+#: guix/scripts/system.scm:459
 #, scheme-format
 msgid "no configuration file specified~%"
 msgstr "није наведена датотека подешавања~%"
 
-#: guix/gnu-maintenance.scm:364
+#: guix/gnu-maintenance.scm:373
 #, scheme-format
 msgid "signature verification failed for `~a'~%"
 msgstr "није успела провера потписа за „~a“~%"
 
-#: guix/gnu-maintenance.scm:366
+#: guix/gnu-maintenance.scm:375
 #, scheme-format
 msgid "(could be because the public key is not in your keyring)~%"
 msgstr "(може бити зато што јавни кључ није у вашем привеску)~%"
 
-#: guix/gnu-maintenance.scm:441
+#: guix/gnu-maintenance.scm:450
 #, scheme-format
 msgid "~a: could not locate source file"
 msgstr "~a: не могу да пронађем изворну датотеку"
 
-#: guix/gnu-maintenance.scm:446
+#: guix/gnu-maintenance.scm:455
 #, scheme-format
 msgid "~a: ~a: no `version' field in source; skipping~%"
 msgstr "~a: ~a: нема поља „version“ у извору; прескачем~%"
 
-#: guix/ui.scm:123
+#: guix/ui.scm:131
 #, scheme-format
 msgid "failed to install locale: ~a~%"
 msgstr "нисам успео да инсталирам локалитет: ~a~%"
 
-#: guix/ui.scm:142
+#: guix/ui.scm:150
 msgid ""
 "Copyright (C) 2014 the Guix authors\n"
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n"
 "This is free software: you are free to change and redistribute it.\n"
 "There is NO WARRANTY, to the extent permitted by law.\n"
 msgstr ""
 "Ауторска права (C) 2014 аутори Гуикса\n"
-"Лиценца ОЈЛв3+: ГНУ ОЈЛ издање 3 или касније <http://gnu.org/licenses/gpl."
-"html>\n"
+"Лиценца ОЈЛв3+: ГНУ ОЈЛ издање 3 или касније <http://gnu.org/licenses/gpl.html>\n"
 "Ово је слободан софтвер: слободни сте да га мењате и расподељујете.\n"
 "Не постоји НИКАКВА ГАРАНЦИЈА, у оквирима дозвољеним законом.\n"
 
-#: guix/ui.scm:150
+#: guix/ui.scm:158
 #, scheme-format
 msgid ""
 "\n"
@@ -963,7 +1012,7 @@ msgstr ""
 "\n"
 "Грешке пријавите на: ~a."
 
-#: guix/ui.scm:152
+#: guix/ui.scm:160
 #, scheme-format
 msgid ""
 "\n"
@@ -972,7 +1021,7 @@ msgstr ""
 "\n"
 "~a матична страница: <~a>"
 
-#: guix/ui.scm:154
+#: guix/ui.scm:162
 msgid ""
 "\n"
 "General help using GNU software: <http://www.gnu.org/gethelp/>"
@@ -980,95 +1029,100 @@ msgstr ""
 "\n"
 "Општа помоћ користећи ГНУ софтвер: <http://www.gnu.org/gethelp/>"
 
-#: guix/ui.scm:161
+#: guix/ui.scm:169
 #, scheme-format
 msgid "~a: invalid number~%"
 msgstr "~a: неисправан број~%"
 
-#: guix/ui.scm:172
+#: guix/ui.scm:186
+#, scheme-format
+msgid "invalid number: ~a~%"
+msgstr "неисправан број: ~a~%"
+
+#: guix/ui.scm:201
+#, scheme-format
+msgid "unknown unit: ~a~%"
+msgstr "непозната јединица: ~a~%"
+
+#: guix/ui.scm:212
 #, scheme-format
 msgid "~a:~a:~a: package `~a' has an invalid input: ~s~%"
 msgstr "~a:~a:~a: пакет „~a“ садржи неисправан улаз: ~s~%"
 
-#: guix/ui.scm:179
+#: guix/ui.scm:219
 #, scheme-format
 msgid "~a: ~a: build system `~a' does not support cross builds~%"
 msgstr "~a: ~a: систем изградње „~a“ не садржи унакрсне изградње~%"
 
-#: guix/ui.scm:184
+#: guix/ui.scm:224
 #, scheme-format
 msgid "failed to connect to `~a': ~a~%"
 msgstr "нисам успео да се повежем на „~a“: ~a~%"
 
-#: guix/ui.scm:189
+#: guix/ui.scm:229
 #, scheme-format
 msgid "build failed: ~a~%"
 msgstr "изградња није успела: ~a~%"
 
-#: guix/ui.scm:198
-#, scheme-format
-msgid "~a: ~a~%"
-msgstr "~a: ~a~%"
-
-#: guix/ui.scm:207
+#: guix/ui.scm:257
 #, scheme-format
 msgid "failed to read expression ~s: ~s~%"
 msgstr "нисам успео да прочитам израз ~s: ~s~%"
 
-#: guix/ui.scm:213
+#: guix/ui.scm:263
 #, scheme-format
 msgid "failed to evaluate expression `~a': ~s~%"
 msgstr "нисам успео да проценим израз „~a“: ~s~%"
 
-#: guix/ui.scm:222
+#: guix/ui.scm:272
 #, scheme-format
 msgid "expression ~s does not evaluate to a package~%"
 msgstr "израз „~s“ се не процењује на пакет~%"
 
-#: guix/ui.scm:268
+#: guix/ui.scm:319
 #, scheme-format
 msgid "~:[The following derivation would be built:~%~{   ~a~%~}~;~]"
 msgstr "~:[Следећа изводница би требала бити изграђена:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:273
+#: guix/ui.scm:324
 #, scheme-format
 msgid "~:[The following file would be downloaded:~%~{   ~a~%~}~;~]"
 msgstr "~:[Следећа датотека би требала бити преузета:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:279
+#: guix/ui.scm:330
 #, scheme-format
 msgid "~:[The following derivation will be built:~%~{   ~a~%~}~;~]"
 msgstr "~:[Следећа изводница ће бити изграђена:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:284
+#: guix/ui.scm:335
 #, scheme-format
 msgid "~:[The following file will be downloaded:~%~{   ~a~%~}~;~]"
 msgstr "~:[Следећа датотека ће бити преузета:~%~{   ~a~%~}~;~]"
 
-#: guix/ui.scm:301
+#: guix/ui.scm:352
 msgid "<unknown location>"
 msgstr "<непознато место>"
 
-#: guix/ui.scm:329
+#: guix/ui.scm:380
 #, scheme-format
 msgid "failed to create configuration directory `~a': ~a~%"
 msgstr "нисам успео да направим директоријум подешавања „~a“: ~a~%"
 
-#: guix/ui.scm:410 guix/ui.scm:424
+#: guix/ui.scm:475 guix/ui.scm:489
 msgid "unknown"
 msgstr "непознато"
 
-#: guix/ui.scm:533
+#: guix/ui.scm:598
 #, scheme-format
 msgid "invalid argument: ~a~%"
 msgstr "неисправан аргумент: ~a~%"
 
-#: guix/ui.scm:538
+#: guix/ui.scm:603
 #, scheme-format
 msgid "Try `guix --help' for more information.~%"
 msgstr "Пробајте „guix --help“ за више података.~%"
 
-#: guix/ui.scm:568
+#: guix/ui.scm:633
 msgid ""
 "Usage: guix COMMAND ARGS...\n"
 "Run COMMAND with ARGS.\n"
@@ -1076,118 +1130,131 @@ msgstr ""
 "Употреба: guix НАРЕДБА АРГУМЕНТИ...\n"
 "Покрените НАРЕДБУ са АРГУМЕНТИМА.\n"
 
-#: guix/ui.scm:571
+#: guix/ui.scm:636
 msgid "COMMAND must be one of the sub-commands listed below:\n"
 msgstr "НАРЕДБА мора бити једна од подкоманди наведених испод:\n"
 
-#: guix/ui.scm:591
+#: guix/ui.scm:656
 #, scheme-format
 msgid "guix: ~a: command not found~%"
 msgstr "guix: ~a: нисам пронашао наредбу~%"
 
-#: guix/ui.scm:609
+#: guix/ui.scm:674
 #, scheme-format
 msgid "guix: missing command name~%"
 msgstr "guix: недостаје назив наредбе~%"
 
-#: guix/ui.scm:617
+#: guix/ui.scm:682
 #, scheme-format
 msgid "guix: unrecognized option '~a'~%"
 msgstr "guix: непозната опција „~a“~%"
 
-#: guix/http-client.scm:205
+#: guix/http-client.scm:217
 #, scheme-format
 msgid "using Guile ~a, which does not support ~s encoding~%"
 msgstr "користим Гуиле ~a, који не подржава ~s кодирање~%"
 
-#: guix/http-client.scm:208
+#: guix/http-client.scm:220
 #, scheme-format
 msgid "download failed; use a newer Guile~%"
 msgstr "преузимање није успело; користите новији Гуиле~%"
 
-#: guix/http-client.scm:220
+#: guix/http-client.scm:232
 #, scheme-format
 msgid "following redirection to `~a'...~%"
 msgstr "пратим преусмеравање на „~a“...~%"
 
-#: guix/http-client.scm:229
+#: guix/http-client.scm:241
 msgid "download failed"
 msgstr "преузимање није успело"
 
-#: guix/nar.scm:133
+#: guix/nar.scm:134
 msgid "unexpected executable file marker"
 msgstr "неочекивани означавач извршне датотеке"
 
-#: guix/nar.scm:140
+#: guix/nar.scm:141
 msgid "unsupported nar file type"
 msgstr "неподржана врста нар датотеке"
 
-#: guix/nar.scm:203
+#: guix/nar.scm:209
 msgid "unsupported file type"
 msgstr "неподржана врста датотеке"
 
-#: guix/nar.scm:213
+#: guix/nar.scm:219
 msgid "invalid nar signature"
 msgstr "неисправан нар потпис"
 
-#: guix/nar.scm:224
+#: guix/nar.scm:230
 msgid "invalid nar end-of-file marker"
 msgstr "неисправан нар означавач краја датотеке"
 
-#: guix/nar.scm:238
+#: guix/nar.scm:244
 msgid "invalid symlink tokens"
 msgstr "неисправна обележја симболичке везе"
 
-#: guix/nar.scm:257
+#: guix/nar.scm:263
 msgid "unexpected directory entry termination"
 msgstr "неочекивано окончање уноса директоријума"
 
-#: guix/nar.scm:266
+#: guix/nar.scm:272
 msgid "unexpected directory inter-entry marker"
 msgstr "неочекивани означавач унутрашњег уноса директоријума "
 
-#: guix/nar.scm:271
+#: guix/nar.scm:277
 msgid "unsupported nar entry type"
 msgstr "неподржана врста нар уноса"
 
-#: guix/nar.scm:381
+#: guix/nar.scm:376
 msgid "signature is not a valid s-expression"
 msgstr "потпис није исправан с-израз"
 
-#: guix/nar.scm:390
+#: guix/nar.scm:385
 msgid "invalid signature"
 msgstr "неисправан потпис"
 
-#: guix/nar.scm:394
+#: guix/nar.scm:389
 msgid "invalid hash"
 msgstr "неисправан хеш"
 
-#: guix/nar.scm:402
+#: guix/nar.scm:397
 msgid "unauthorized public key"
 msgstr "неовлашћени јавни кључ"
 
-#: guix/nar.scm:407
+#: guix/nar.scm:402
 msgid "corrupt signature data"
 msgstr "оштећени подаци потписа"
 
-#: guix/nar.scm:424
+#: guix/nar.scm:422
 msgid "corrupt file set archive"
 msgstr "оштећена датотека скупа архиве"
 
-#: guix/nar.scm:434
+#: guix/nar.scm:432
 #, scheme-format
 msgid "importing file or directory '~a'...~%"
 msgstr "увозим датотеку или директоријум „~a“...~%"
 
-#: guix/nar.scm:443
+#: guix/nar.scm:441
 #, scheme-format
 msgid "found valid signature for '~a'~%"
 msgstr "нађох исправан потпис за „~a“~%"
 
-#: guix/nar.scm:452
+#: guix/nar.scm:448
 msgid "imported file lacks a signature"
 msgstr "увезеној датотеци недостаје потпис"
 
-#: guix/nar.scm:459
+#: guix/nar.scm:487
 msgid "invalid inter-file archive mark"
 msgstr "неисправан знак архиве унутрашње датотеке"
+
+#~ msgid "failed to load machine file '~a': ~s~%"
+#~ msgstr "нисам успео да учитам датотеку машине „~a“: ~s~%"
+
+#~ msgid ""
+#~ "Currently the only valid value for ACTION is 'vm', which builds\n"
+#~ "a virtual machine of the given operating system.\n"
+#~ msgstr ""
+#~ "Тренутно једина исправна вредност за РАДЊУ је „vm“, која гради\n"
+#~ "виртуелну машину датог оперативног система.\n"
+
+#~ msgid "~a: extraneous argument~%"
+#~ msgstr "~a: страни аргумент~%"
diff --git a/po/guix/vi.po b/po/guix/vi.po
index 260032c9db..9bd407f2a2 100644
--- a/po/guix/vi.po
+++ b/po/guix/vi.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: guix 0.7-pre1\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-07-13 17:06+0200\n"
+"POT-Creation-Date: 2014-07-25 00:55+0200\n"
 "PO-Revision-Date: 2014-07-14 08:38+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -20,7 +20,7 @@ msgstr ""
 "X-Poedit-SourceCharset: UTF-8\n"
 "X-Generator: Poedit 1.5.5\n"
 
-#: gnu/packages.scm:95
+#: gnu/packages.scm:102
 #, scheme-format
 msgid "cannot access `~a': ~a~%"
 msgstr "không thể truy cập `~a': ~a~%"
@@ -206,9 +206,9 @@ msgstr ""
 "      --log-file         trả về tên của tập-tin nhật ký cho dẫn xuất đã cho"
 
 #: guix/scripts/build.scm:246 guix/scripts/download.scm:53
-#: guix/scripts/package.scm:523 guix/scripts/gc.scm:58
+#: guix/scripts/package.scm:525 guix/scripts/gc.scm:58
 #: guix/scripts/hash.scm:55 guix/scripts/pull.scm:82
-#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:334
+#: guix/scripts/substitute-binary.scm:564 guix/scripts/system.scm:362
 msgid ""
 "\n"
 "  -h, --help             display this help and exit"
@@ -217,9 +217,9 @@ msgstr ""
 "  -h, --help             hiển thị trợ giúp này rồi thoát"
 
 #: guix/scripts/build.scm:248 guix/scripts/download.scm:55
-#: guix/scripts/package.scm:525 guix/scripts/gc.scm:60
+#: guix/scripts/package.scm:527 guix/scripts/gc.scm:60
 #: guix/scripts/hash.scm:57 guix/scripts/pull.scm:84
-#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:336
+#: guix/scripts/substitute-binary.scm:566 guix/scripts/system.scm:364
 msgid ""
 "\n"
 "  -V, --version          display version information and exit"
@@ -233,8 +233,8 @@ msgid "sources do not match any package:~{ ~a~}~%"
 msgstr "mã nguồn không khớp bất kỳ gói nào:~{ ~a~}~%"
 
 #: guix/scripts/build.scm:397 guix/scripts/download.scm:96
-#: guix/scripts/package.scm:756 guix/scripts/gc.scm:122
-#: guix/scripts/pull.scm:115 guix/scripts/system.scm:386
+#: guix/scripts/package.scm:763 guix/scripts/gc.scm:122
+#: guix/scripts/pull.scm:115 guix/scripts/system.scm:414
 #, scheme-format
 msgid "~A: unrecognized option~%"
 msgstr "~A: tùy chọn không được chấp nhận~%"
@@ -293,8 +293,8 @@ msgstr "gặp lỗi khi xây dựng hồ sơ trống rỗng~%"
 msgid "switching from generation ~a to ~a~%"
 msgstr "chuyển từ thế hệ ~a sang ~a~%"
 
-#: guix/scripts/package.scm:108 guix/scripts/package.scm:866
-#: guix/scripts/package.scm:978
+#: guix/scripts/package.scm:108 guix/scripts/package.scm:873
+#: guix/scripts/package.scm:985
 #, scheme-format
 msgid "profile '~a' does not exist~%"
 msgstr "hồ sơ `~a' không tồn tại~%"
@@ -480,62 +480,71 @@ msgstr ""
 "  -A, --list-available[=BIỂU-THỨC-CHÍNH-QUY]\n"
 "                         kiệt kê các gói khớp BTCQ"
 
-#: guix/scripts/package.scm:760
+#: guix/scripts/package.scm:520
+#, fuzzy
+msgid ""
+"\n"
+"  --show=PACKAGE         show details about PACKAGE"
+msgstr ""
+"\n"
+"  -i, --install=GÓI      cài đặt GÓI"
+
+#: guix/scripts/package.scm:767
 #, scheme-format
 msgid "~A: extraneous argument~%"
 msgstr "~A: đối số ngoại lai~%"
 
-#: guix/scripts/package.scm:775
+#: guix/scripts/package.scm:782
 #, scheme-format
 msgid "Try \"info '(guix) Invoking guix package'\" for more information.~%"
 msgstr "Thử chạy lệnh \"info '(guix) Invoking guix package'\" để có thêm thông tin.~%"
 
-#: guix/scripts/package.scm:797
+#: guix/scripts/package.scm:804
 #, scheme-format
 msgid "error: while creating directory `~a': ~a~%"
 msgstr "lỗi: trong khi tạo thư mục `~a': ~a~%"
 
-#: guix/scripts/package.scm:801
+#: guix/scripts/package.scm:808
 #, scheme-format
 msgid "Please create the `~a' directory, with you as the owner.~%"
 msgstr "Hãy tạo thư mục `~a', với bạn là chủ sở hữu.~%"
 
-#: guix/scripts/package.scm:808
+#: guix/scripts/package.scm:815
 #, scheme-format
 msgid "error: directory `~a' is not owned by you~%"
 msgstr "lỗi: thư mục `~a' không được sở hữu bởi bạn~%"
 
-#: guix/scripts/package.scm:811
+#: guix/scripts/package.scm:818
 #, scheme-format
 msgid "Please change the owner of `~a' to user ~s.~%"
 msgstr "Vui lòng đổi chủ sở hữu của `~a' thành ~s.~%"
 
-#: guix/scripts/package.scm:836
+#: guix/scripts/package.scm:843
 #, scheme-format
 msgid "deleting ~a~%"
 msgstr "đang xóa ~a~%"
 
-#: guix/scripts/package.scm:889 guix/scripts/package.scm:994
+#: guix/scripts/package.scm:896 guix/scripts/package.scm:1001
 #, scheme-format
 msgid "invalid syntax: ~a~%"
 msgstr "cú pháp không hợp lệ: ~a~%"
 
-#: guix/scripts/package.scm:918
+#: guix/scripts/package.scm:925
 #, scheme-format
 msgid "nothing to be done~%"
 msgstr "không có gì cần làm~%"
 
-#: guix/scripts/package.scm:941
+#: guix/scripts/package.scm:948
 #, scheme-format
 msgid "~a package in profile~%"
 msgstr "~a gói trong hồ sơ~%"
 
-#: guix/scripts/package.scm:956
+#: guix/scripts/package.scm:963
 #, scheme-format
 msgid "Generation ~a\t~a"
 msgstr "Tạo ~a\t~a"
 
-#: guix/scripts/package.scm:963
+#: guix/scripts/package.scm:970
 #, scheme-format
 msgid "~a\t(current)~%"
 msgstr "~a\t(hiện tại)~%"
@@ -868,37 +877,37 @@ msgstr "~a: ~a~%"
 msgid "failed to load operating system file '~a': ~s~%"
 msgstr "gặp lỗi khi tải tập tin hệ điều hành `~a': ~s~%"
 
-#: guix/scripts/system.scm:111
+#: guix/scripts/system.scm:116
 #, scheme-format
 msgid "failed to register '~a' under '~a'~%"
 msgstr "gặp lỗi khi đăng ký `~a' dưới ~a~%"
 
-#: guix/scripts/system.scm:127
+#: guix/scripts/system.scm:144
 #, scheme-format
 msgid "initializing the current root file system~%"
 msgstr "đang khởi tạo hệ thống tập tin gốc hiện tại~%"
 
-#: guix/scripts/system.scm:151 guix/scripts/system.scm:291
+#: guix/scripts/system.scm:162 guix/scripts/system.scm:318
 #, scheme-format
 msgid "failed to install GRUB on device '~a'~%"
 msgstr "gặp lỗi khi cài đặt GRUB trên thiết bị `~a'~%"
 
-#: guix/scripts/system.scm:176
+#: guix/scripts/system.scm:197
 #, scheme-format
 msgid "activating system...~%"
 msgstr "đang kích hoạt hệ thống...~%"
 
-#: guix/scripts/system.scm:211
+#: guix/scripts/system.scm:236
 #, scheme-format
 msgid "unrecognized boot parameters for '~a'~%"
 msgstr "tham số khởi động không được thừa nhận cho `~a'~%"
 
-#: guix/scripts/system.scm:295
+#: guix/scripts/system.scm:323
 #, scheme-format
 msgid "initializing operating system under '~a'...~%"
 msgstr "đang khởi tạo hệ điều hành dưới '~a'...~%"
 
-#: guix/scripts/system.scm:311
+#: guix/scripts/system.scm:339
 msgid ""
 "Usage: guix system [OPTION] ACTION FILE\n"
 "Build the operating system declared in FILE according to ACTION.\n"
@@ -906,35 +915,35 @@ msgstr ""
 "Cách dùng: guix system [TÙY-CHỌN] THAO-TÁC TẬP-TIN\n"
 "Xây dựng hệ điều hành khai báo trong TẬP-TIN tuân theo THAO-TÁC.\n"
 
-#: guix/scripts/system.scm:314
+#: guix/scripts/system.scm:342
 msgid "The valid values for ACTION are:\n"
 msgstr "Các giá trị hợp lệ cho THAO TÁC là:\n"
 
-#: guix/scripts/system.scm:315
+#: guix/scripts/system.scm:343
 msgid "  - 'reconfigure', switch to a new operating system configuration\n"
 msgstr "  - 'reconfigure', chuyển thành cấu hình hệ điều hành mới\n"
 
-#: guix/scripts/system.scm:317
+#: guix/scripts/system.scm:345
 msgid "  - 'build', build the operating system without installing anything\n"
 msgstr "  - 'build', xây dựng hệ điều hành mà không cài gì\n"
 
-#: guix/scripts/system.scm:319
+#: guix/scripts/system.scm:347
 msgid "  - 'vm', build a virtual machine image that shares the host's store\n"
 msgstr "  - 'vm', xây dựng một ảnh máy ảo kiểu mà có thể chia sẻ trên kho máy\n"
 
-#: guix/scripts/system.scm:321
+#: guix/scripts/system.scm:349
 msgid "  - 'vm-image', build a freestanding virtual machine image\n"
 msgstr "  - 'vm-image', xây dựng một ảnh máy ảo đứng tự do\n"
 
-#: guix/scripts/system.scm:323
+#: guix/scripts/system.scm:351
 msgid "  - 'disk-image', build a disk image, suitable for a USB stick\n"
 msgstr "  - 'disk-image', xây dựng ảnh đĩa, phù hợp để dùng cho đĩa USB\n"
 
-#: guix/scripts/system.scm:325
+#: guix/scripts/system.scm:353
 msgid "  - 'init', initialize a root file system to run GNU.\n"
 msgstr "  - 'init', khởi tạo một hệ thống tập tin gốc để chạy GNU.\n"
 
-#: guix/scripts/system.scm:329
+#: guix/scripts/system.scm:357
 msgid ""
 "\n"
 "      --image-size=SIZE  for 'vm-image', produce an image of SIZE"
@@ -942,7 +951,7 @@ msgstr ""
 "\n"
 "      --image-size=CỠ    cho 'vm-image', sản sinh ảnh theo CỠ này"
 
-#: guix/scripts/system.scm:331
+#: guix/scripts/system.scm:359
 msgid ""
 "\n"
 "      --no-grub          for 'init', do not install GRUB"
@@ -950,17 +959,17 @@ msgstr ""
 "\n"
 "      --no-grub          dành cho 'init', đừng cài GRUB"
 
-#: guix/scripts/system.scm:394
+#: guix/scripts/system.scm:422
 #, scheme-format
 msgid "~a: unknown action~%"
 msgstr "~a: không hiểu thao tác~%"
 
-#: guix/scripts/system.scm:411
+#: guix/scripts/system.scm:439
 #, scheme-format
 msgid "wrong number of arguments for action '~a'~%"
 msgstr "sai số lượng đối số cho thao tác '~a'~%"
 
-#: guix/scripts/system.scm:431
+#: guix/scripts/system.scm:459
 #, scheme-format
 msgid "no configuration file specified~%"
 msgstr "chưa ghi rõ tập tin nhập cấu hình~%"
@@ -1107,21 +1116,21 @@ msgstr "<không hiểu vị trí>"
 msgid "failed to create configuration directory `~a': ~a~%"
 msgstr "gặp lỗi khi tạo thư mục cấu hình `~a': ~a~%"
 
-#: guix/ui.scm:461 guix/ui.scm:475
+#: guix/ui.scm:475 guix/ui.scm:489
 msgid "unknown"
 msgstr "không hiểu"
 
-#: guix/ui.scm:584
+#: guix/ui.scm:598
 #, scheme-format
 msgid "invalid argument: ~a~%"
 msgstr "đối số không hợp lệ: ~a~%"
 
-#: guix/ui.scm:589
+#: guix/ui.scm:603
 #, scheme-format
 msgid "Try `guix --help' for more information.~%"
 msgstr "Chạy lệnh `guix --help' để biết thêm thông tin.~%"
 
-#: guix/ui.scm:619
+#: guix/ui.scm:633
 msgid ""
 "Usage: guix COMMAND ARGS...\n"
 "Run COMMAND with ARGS.\n"
@@ -1129,21 +1138,21 @@ msgstr ""
 "Cách dùng: guix LỆNH ĐỐI_SỐ...\n"
 "Chạy LỆNH với các ĐỐI SỐ.\n"
 
-#: guix/ui.scm:622
+#: guix/ui.scm:636
 msgid "COMMAND must be one of the sub-commands listed below:\n"
 msgstr "LỆNH phải là một trong số những câu lệnh con được liệt kê dưới đây:\n"
 
-#: guix/ui.scm:642
+#: guix/ui.scm:656
 #, scheme-format
 msgid "guix: ~a: command not found~%"
 msgstr "guix: ~a: không tìm thấy lệnh~%"
 
-#: guix/ui.scm:660
+#: guix/ui.scm:674
 #, scheme-format
 msgid "guix: missing command name~%"
 msgstr "guix: thiếu tên lệnh~%"
 
-#: guix/ui.scm:668
+#: guix/ui.scm:682
 #, scheme-format
 msgid "guix: unrecognized option '~a'~%"
 msgstr "guix: tùy chọn không được thừa nhận `~a'~%"
diff --git a/po/packages/de.po b/po/packages/de.po
index 01542d4597..32e38705c2 100644
--- a/po/packages/de.po
+++ b/po/packages/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: guix-packages 0.7-pre1\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-06-25 22:55+0200\n"
+"POT-Creation-Date: 2014-07-14 11:59+0200\n"
 "PO-Revision-Date: 2014-07-13 20:23+0100\n"
 "Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
diff --git a/po/packages/eo.po b/po/packages/eo.po
index 44212fee62..2e48d61064 100644
--- a/po/packages/eo.po
+++ b/po/packages/eo.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: guix-packages 0.7-pre1\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-06-25 22:55+0200\n"
+"POT-Creation-Date: 2014-07-14 11:59+0200\n"
 "PO-Revision-Date: 2014-07-14 11:28-0300\n"
 "Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
diff --git a/po/packages/pt_BR.po b/po/packages/pt_BR.po
index 8c56c982ab..47d8fc2fe0 100644
--- a/po/packages/pt_BR.po
+++ b/po/packages/pt_BR.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: guix 0.4-pre2\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-06-25 22:55+0200\n"
+"POT-Creation-Date: 2014-07-14 11:59+0200\n"
 "PO-Revision-Date: 2013-09-28 21:29-0300\n"
 "Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
diff --git a/po/packages/sr.po b/po/packages/sr.po
index 2fc7f43181..c49787a5b6 100644
--- a/po/packages/sr.po
+++ b/po/packages/sr.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: guix-0.6-pre1\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-06-25 22:55+0200\n"
+"POT-Creation-Date: 2014-07-14 11:59+0200\n"
 "PO-Revision-Date: 2014-06-19 08:51+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
 "Language-Team: Serbian <(nothing)>\n"
diff --git a/po/packages/vi.po b/po/packages/vi.po
index 6c8f74f179..cc55fd591a 100644
--- a/po/packages/vi.po
+++ b/po/packages/vi.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: guix 0.5-pre2\n"
 "Report-Msgid-Bugs-To: ludo@gnu.org\n"
-"POT-Creation-Date: 2014-06-25 22:55+0200\n"
+"POT-Creation-Date: 2014-07-14 11:59+0200\n"
 "PO-Revision-Date: 2013-12-04 07:48+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
diff --git a/tests/gexp.scm b/tests/gexp.scm
index 6d4885e44e..bdea4b8563 100644
--- a/tests/gexp.scm
+++ b/tests/gexp.scm
@@ -224,7 +224,7 @@
       (return (string=? system (derivation-system drv))))))
 
 (define shebang
-  (string-append (derivation->output-path guile-for-build)
+  (string-append "#!" (derivation->output-path guile-for-build)
                  "/bin/guile --no-auto-compile"))
 
 ;; If we're going to hit the silly shebang limit (128 chars on Linux-based
diff --git a/tests/guix-package.sh b/tests/guix-package.sh
index 4d75955411..ce123105bf 100644
--- a/tests/guix-package.sh
+++ b/tests/guix-package.sh
@@ -79,13 +79,6 @@ then
 
     test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap"
 
-    # Search.
-    LC_MESSAGES=C
-    export LC_MESSAGES
-    test "`guix package -s "An example GNU package" | grep ^name:`" = \
-        "name: hello"
-    test -z "`guix package -s "n0t4r341p4ck4g3"`"
-
     # List generations.
     test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
         = "  guile-bootstrap"
@@ -176,6 +169,22 @@ then false; else true; fi
 # Check whether `--list-available' returns something sensible.
 guix package -p "$profile" -A 'gui.*e' | grep guile
 
+# Check whether `--show' returns something sensible.
+guix package --show=guile | grep "^name: guile"
+
+# Ensure `--show' doesn't fail for packages with non-package inputs.
+guix package --show=texlive
+
+# Search.
+LC_MESSAGES=C
+export LC_MESSAGES
+test "`guix package -s "An example GNU package" | grep ^name:`" = \
+    "name: hello"
+test -z "`guix package -s "n0t4r341p4ck4g3"`"
+
+# Make sure `--search' can display all the packages.
+guix package --search="" > /dev/null
+
 # There's no generation older than 12 months, so the following command should
 # have no effect.
 generation="`readlink_base "$profile"`"
diff --git a/tests/guix-register.sh b/tests/guix-register.sh
index e258ec1244..3f261d7bef 100644
--- a/tests/guix-register.sh
+++ b/tests/guix-register.sh
@@ -86,7 +86,7 @@ guix-register -p "$new_store" \
 # Now make sure this is recognized as valid.
 
 ls -R "$new_store"
-for state_dir in "$new_store$localstatedir/guix" "$new_store/chbouib"
+for state_dir in "$localstatedir/guix" "/chbouib"
 do
     NIX_STORE_DIR="$new_store_dir"
     NIX_STATE_DIR="$new_store$state_dir"
diff --git a/tests/monads.scm b/tests/monads.scm
index ac19d33f93..ea3e4006ab 100644
--- a/tests/monads.scm
+++ b/tests/monads.scm
@@ -108,6 +108,16 @@
                       guile)))
     #:guile-for-build (package-derivation %store %bootstrap-guile)))
 
+(test-assert "interned-file"
+  (run-with-store %store
+    (mlet* %store-monad ((file -> (search-path %load-path "guix.scm"))
+                         (a       (interned-file file))
+                         (b       (interned-file file "b")))
+      (return (equal? (call-with-input-file file get-string-all)
+                      (call-with-input-file a get-string-all)
+                      (call-with-input-file b get-string-all))))
+    #:guile-for-build (package-derivation %store %bootstrap-guile)))
+
 (define derivation-expression
   (@@ (guix monads) derivation-expression))
 
diff --git a/tests/profiles.scm b/tests/profiles.scm
index 8ead6e6968..d405f6453e 100644
--- a/tests/profiles.scm
+++ b/tests/profiles.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,11 +18,25 @@
 
 (define-module (test-profiles)
   #:use-module (guix profiles)
+  #:use-module (guix store)
+  #:use-module (guix monads)
+  #:use-module (guix packages)
+  #:use-module (guix derivations)
+  #:use-module (gnu packages bootstrap)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-64))
 
 ;; Test the (guix profile) module.
 
+(define %store
+  (open-connection))
+
+(define guile-for-build
+  (package-derivation %store %bootstrap-guile))
+
+;; Make it the default.
+(%guile-for-build guile-for-build)
+
 
 ;; Example manifest entries.
 
@@ -30,7 +44,7 @@
   (manifest-entry
     (name "guile")
     (version "2.0.9")
-    (path "/gnu/store/...")
+    (item "/gnu/store/...")
     (output "out")))
 
 (define guile-2.0.9:debug
@@ -87,6 +101,19 @@
             (null? (manifest-entries m3))
             (null? (manifest-entries m4)))))))
 
+(test-assert "profile-derivation"
+  (run-with-store %store
+    (mlet* %store-monad
+        ((entry ->   (package->manifest-entry %bootstrap-guile))
+         (guile      (package->derivation %bootstrap-guile))
+         (drv        (profile-derivation (manifest (list entry))))
+         (profile -> (derivation->output-path drv))
+         (bindir ->  (string-append profile "/bin"))
+         (_          (built-derivations (list drv))))
+      (return (and (file-exists? (string-append bindir "/guile"))
+                   (string=? (dirname (readlink bindir))
+                             (derivation->output-path guile)))))))
+
 (test-end "profiles")
 
 
diff --git a/tests/utils.scm b/tests/utils.scm
index 8ad399f75c..611867ca09 100644
--- a/tests/utils.scm
+++ b/tests/utils.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,7 +26,8 @@
   #:use-module (srfi srfi-64)
   #:use-module (rnrs bytevectors)
   #:use-module (rnrs io ports)
-  #:use-module (ice-9 match))
+  #:use-module (ice-9 match)
+  #:use-module (ice-9 vlist))
 
 (define temp-file
   (string-append "t-utils-" (number->string (getpid))))
@@ -118,6 +120,37 @@
                '(0 1 2 3)))
     list))
 
+(let* ((tree (alist->vhash
+              '((0 2 3) (1 3 4) (2) (3 5 6) (4 6) (5) (6))
+              hashq))
+       (add-one (lambda (_ r) (1+ r)))
+       (tree-lookup (lambda (n) (cdr (vhash-assq n tree)))))
+  (test-equal "fold-tree, single root"
+    5 (fold-tree add-one 0 tree-lookup '(0)))
+  (test-equal "fold-tree, two roots"
+    7 (fold-tree add-one 0 tree-lookup '(0 1)))
+  (test-equal "fold-tree, sum"
+    16 (fold-tree + 0 tree-lookup '(0)))
+  (test-equal "fold-tree, internal"
+    18 (fold-tree + 0 tree-lookup '(3 4)))
+  (test-equal "fold-tree, cons"
+    '(1 3 4 5 6)
+    (sort (fold-tree cons '() tree-lookup '(1)) <))
+  (test-equal "fold-tree, overlapping paths"
+    '(1 3 4 5 6)
+    (sort (fold-tree cons '() tree-lookup '(1 4)) <))
+  (test-equal "fold-tree, cons, two roots"
+    '(0 2 3 4 5 6)
+    (sort (fold-tree cons '() tree-lookup '(0 4)) <))
+  (test-equal "fold-tree-leaves, single root"
+    2 (fold-tree-leaves add-one 0 tree-lookup '(1)))
+  (test-equal "fold-tree-leaves, single root, sum"
+    11 (fold-tree-leaves + 0 tree-lookup '(1)))
+  (test-equal "fold-tree-leaves, two roots"
+    3 (fold-tree-leaves add-one 0 tree-lookup '(0 1)))
+  (test-equal "fold-tree-leaves, two roots, sum"
+    13 (fold-tree-leaves + 0 tree-lookup '(0 1))))
+
 (test-assert "filtered-port, file"
   (let* ((file  (search-path %load-path "guix.scm"))
          (input (open-file file "r0b")))