diff --git a/doc/manual/bugs.xml b/doc/manual/bugs.xml
index 4d5017e44..cb46a53b8 100644
--- a/doc/manual/bugs.xml
+++ b/doc/manual/bugs.xml
@@ -106,7 +106,7 @@ these files (and fetchurl.nix checks
them).
We should switch away from MD5, since it has been
-cracked. We don't currently depend very much on the
+more-or-less cracked. We don't currently depend very much on the
collision-resistance of MD5, but we will once we start sharing build
results between users.
diff --git a/doc/manual/installation.xml b/doc/manual/installation.xml
index 15463a9b6..05173590f 100644
--- a/doc/manual/installation.xml
+++ b/doc/manual/installation.xml
@@ -204,7 +204,7 @@ variables is to include the file
in your ~/.bashrc (or similar), like this:
-. prefix/etc/profile.d/nix.sh
+source prefix/etc/profile.d/nix.sh
diff --git a/doc/manual/package-management.xml b/doc/manual/package-management.xml
index 0b7299e9a..b83cd0c4e 100644
--- a/doc/manual/package-management.xml
+++ b/doc/manual/package-management.xml
@@ -131,8 +131,8 @@ defined by some pretty much arbitrary rules regarding ordering of
version numbers (which generally do what you'd expect of them). To
just unconditionally replace Subversion with whatever version is in
the Nix expressions, use -i instead of
--u — -i will
-remove whatever version is already installed.
+-u; -i will remove
+whatever version is already installed.
You can also upgrade all components for which there are newer
versions:
@@ -142,7 +142,21 @@ $ nix-env -f nixpkgs-version -u '*'
-If you grow tired of specifying the Nix expressions using
+Sometimes it's useful to be able to ask what
+nix-env would do, without actually doing it. For
+instance, to find out what packages would be upgraded by
+nix-env -u '*', you can do
+
+
+$ nix-env ... -u '*' --dry-run
+(dry run; not doing anything)
+upgrading `libxslt-1.1.0' to `libxslt-1.1.10'
+upgrading `graphviz-1.10' to `graphviz-1.12'
+upgrading `coreutils-5.0' to `coreutils-5.2.1'
+
+
+
+If you grow bored of specifying the Nix expressions using
-f all the time, you can set a default
location:
@@ -162,14 +176,30 @@ set.Profiles
-In Nix, operations such as upgrading or removing components
-never overwrite or remove the files of those components, and they
-don't even touch the user environments that point to them. Rather,
-they cause a new user environment to be
-constructed based on the old one. This is illustrated in Figure
-bla.
+Profiles and user environments are Nix's mechanism for
+implementing the ability to allow differens users to have different
+configurations, and to do atomic upgrades and rollbacks. To
+understand how they work, it's useful to know a bit about how Nix
+works. In Nix, components are stored in unique locations in the
+Nix store (typically,
+/nix/store). For instance, a particular version
+of the Subversion component might be stored in a directory
+/nix/store/eeeeaf42e56b...-subversion-0.32.1/,
+while another version might be stored in
+/nix/store/58823d558a6a...-subversion-0.34/. The
+long hexadecimal numbers prefixed to the directory names are
+cryptographic hashes128 bit MD5 hashes, to be
+precise. of all inputs involved
+in building the component — sources, dependencies, compiler flags, and
+so on. So if two components differ in any way, they end up in
+different locations in the file system, so they don't interfere with
+each other. TODO: the figure isn't entirely up to date. It
+should show multiple profiles and
+~/.nix-profile. shows a part of
+a typical Nix store.
-
-Garbage collection
+Garbage collection
-Bla
+TODOChannels
-Bla
+TODO