diff --git a/doc/manual/release-notes.xml b/doc/manual/release-notes.xml
index 8eb59ab49..5147f1f2f 100644
--- a/doc/manual/release-notes.xml
+++ b/doc/manual/release-notes.xml
@@ -9,26 +9,228 @@
Release 1.7 (TBA)
-This release has the following changes:
+In addition to the usual bug fixes, this release has the
+following new features:
+
+ Antiquotation is now allowed inside of quoted attribute
+ names (e.g. set."${foo}"). In the case where
+ the attribute name is just a single antiquotation, the quotes can
+ be dropped (e.g. the above example can be written
+ set.${foo}). If an attribute name inside of a
+ set declaration evaluates to null (e.g.
+ { ${null} = false; }), then that attribute is
+ not added to the set.
+
+
+
+ Experimental support for cryptographically signed binary
+ caches. See the
+ commit for details.
+
+
+
+ An experimental new substituter,
+ download-via-ssh, that fetches binaries from
+ remote machines via SSH. Specifying the flags --option
+ use-ssh-substituter true --option ssh-substituter-hosts
+ user@hostname will cause Nix
+ to download binaries from the specified machine, if it has
+ them.
+
+
+
+ nix-store -r and
+ nix-build have a new flag,
+ , that builds a previously built
+ derivation again, and prints an error message if the output is not
+ exactly the same. This helps to verify whether a derivation is
+ truly deterministic. For example:
+
+
+$ nix-build '<nixpkgs>' -A patchelf
+…
+$ nix-build '<nixpkgs>' -A patchelf --check
+…
+error: derivation `/nix/store/1ipvxs…-patchelf-0.6' may not be deterministic:
+ hash mismatch in output `/nix/store/4pc1dm…-patchelf-0.6.drv'
+
+
+
+
+
+
+
+ The nix-instantiate flags
+ and
+ have been renamed to and
+ , respectively.
+
+
+
+ nix-instantiate,
+ nix-build and nix-shell now
+ have a flag (or ) that
+ allows you to specify the expression to be evaluated as a command
+ line argument. For instance, nix-instantiate --eval -E
+ '1 + 2' will print 3.
+
+
+
+ nix-shell improvements:
+
+
+
+
+ It has a new flag, (or
+ ), that sets up a build environment
+ containing the specified packages from Nixpkgs. For example,
+ the command
+
+
+$ nix-shell -p sqlite xorg.libX11 hello
+
+
+ will start a shell in which the given packages are
+ present.
+
+
+
+ It now uses shell.nix as the
+ default expression, falling back to
+ default.nix if the former doesn’t
+ exist. This makes it convenient to have a
+ shell.nix in your project to set up a
+ nice development environment.
+
+
+
+ It evaluates the derivation attribute
+ shellHook, if set. Since
+ stdenv does not normally execute this hook,
+ it allows you to do nix-shell-specific
+ setup.
+
+
+
+ It preserves the user’s timezone setting.
+
+
+
+
+
+
+
+ In chroots, Nix now sets up a /dev
+ containing only a minimal set of devices (such as
+ /dev/null). Note that it only does this if
+ you don’t have /dev
+ listed in your setting;
+ otherwise, it will bind-mount the /dev from
+ outside the chroot.
+
+ Similarly, if you don’t have /dev/pts listed
+ in , Nix will mount a private
+ devpts filesystem on the chroot’s
+ /dev/pts.
+
+
+
New built-in function: builtins.toJSON,
which returns a JSON representation of a value.
- nix-setuid-helper is
- gone.
+
+ nix-env -q has a new flag
+ to print a JSON representation of the
+ installed or available packages.
+
- Now antiquotation is allowed inside of quoted
- attribute names (e.g. set."${foo}"). In the
- case where the attribute name is just a single antiquotation,
- the quotes can be dropped (e.g. the above example can be written
- set.${foo}). If an attribute name inside of a
- set declaration evaluates to null (e.g.
- { ${null} = false; }), then that attribute is not
- added to the set.
+
+ nix-env now supports meta attributes with
+ more complex values, such as attribute sets.
+
+
+
+ The flag now allows attribute names with
+ dots in them, e.g.
+
+
+$ nix-instantiate --eval '<nixos>' -A 'config.systemd.units."nscd.service".text'
+
+
+
+
+
+
+ The option to
+ nix-store --gc now accepts a unit
+ specifier. For example, nix-store --gc --max-freed
+ 1G will free up to 1 gigabyte of disk space.
+
+
+
+ Nix now heuristically detects whether a build failure was
+ due to a disk-full condition. In that case, the build is not
+ flagged as “permanently failed”. This is mostly useful for Hydra,
+ which needs to distinguish between permanent and transient build
+ failures.
+
+
+
+ There is a new symbol __curPos that
+ expands to an attribute set containing its file name and line and
+ column numbers, e.g. { file = "foo.nix"; line = 10;
+ column = 5; }. There also is a new builtin function,
+ unsafeGetAttrPos, that returns the position of
+ an attribute. This is used by Nixpkgs to provide location
+ information in error messages, e.g.
+
+
+$ nix-build '<nixpkgs>' -A libreoffice --argstr system x86_64-darwin
+error: the package ‘libreoffice-4.0.5.2’ in ‘.../applications/office/libreoffice/default.nix:263’
+ is not supported on ‘x86_64-darwin’
+
+
+
+
+
+
+ The garbage collector is now more concurrent with other Nix
+ processes because it releases certain locks earlier.
+
+
+
+ The binary tarball installer has been improved. You can now
+ install Nix by running:
+
+
+$ bash <(curl https://nixos.org/nix/install)
+
+
+
+
+
+
+ The command nix-setuid-helper is
+ gone.
+
+
+
+ Nix no longer uses Automake, but instead has a
+ non-recursive, GNU Make-based build system.
+
+
+
+ All installed libraries now have the prefix
+ libnix. In particular, this gets rid of
+ libutil, which could clash with libraries with
+ the same name from other packages.
+
@@ -606,7 +808,7 @@ Friesdorf, Mats Erik Andersson and Shea Levy.
When using the Nix daemon, the flag in
nix-env -qa is now much faster.
-
+
@@ -636,7 +838,7 @@ previous release. Here are the most significant:
/nix/var/nix/manifests, resulting in a
significant speedup.
-
+
Nix now has an search path for expressions. The search path
is set using the environment variable NIX_PATH and
@@ -673,7 +875,7 @@ previous release. Here are the most significant:
you can write { "foo-1.2" = …; "bla bla" = …; }."bla
bla".
-
+
Attribute selection can now provide a default value using
the or operator. For instance, the expression
@@ -872,7 +1074,7 @@ features:
This is useful, for instance, in NixOS configuration files.
-
+
@@ -889,7 +1091,7 @@ features:
which causes uname to return
i686 in child processes.
-
+
Various improvements to the chroot
support. Building in a chroot works quite well
@@ -906,12 +1108,12 @@ features:Support for large (> 4 GiB) files in NAR archives.
-
+
Various (performance) improvements to the remote build
mechanism.
-
+
New primops: builtins.addErrorContext (to
add a string to stack traces — useful for debugging),
@@ -1050,8 +1252,8 @@ the following derivations will be built:
the following paths will be downloaded/copied (30.02 MiB):
/nix/store/4m8pvgy2dcjgppf5b4cj5l6wyshjhalj-samba-3.2.4
/nix/store/7h1kwcj29ip8vk26rhmx6bfjraxp0g4l-libunwind-0.98.6
- ...
-
+ ...
+
Language features:
@@ -1091,7 +1293,7 @@ the following paths will be downloaded/copied (30.02 MiB):
division).
-
+
@@ -1162,7 +1364,7 @@ on Nix. Here is an (incomplete) list:
nix-env -p /nix/var/nix/profiles/browser --set
firefox lets the profile named
browser contain just Firefox.
-
+
nix-env now maintains
meta-information about installed packages in profiles. The
@@ -1171,7 +1373,7 @@ on Nix. Here is an (incomplete) list:homepage. The command nix-env -q --xml
--meta shows all meta-information.
-
+
nix-env now uses the
meta.priority attribute of derivations to resolve
filename collisions between packages. Lower priority values denote
@@ -1227,7 +1429,7 @@ on Nix. Here is an (incomplete) list:
-
+
nix-env -q now has a flag
() that causes
nix-env to show only those derivations whose
@@ -1238,7 +1440,7 @@ on Nix. Here is an (incomplete) list:nix-env -i and nix-env -u to
filter out derivations for which no pre-built binary is
available.
-
+
The new option (in
nix-env, nix-instantiate and
@@ -1254,7 +1456,7 @@ on Nix. Here is an (incomplete) list:paths that shows the build log of the given
paths.
-
+
-
+
nix-env usability improvements:
@@ -1450,9 +1652,9 @@ irreversible.
most packages in Nixpkgs don’t have yet).
-
+
-
+
New language features:
@@ -1475,7 +1677,7 @@ irreversible.
You can write arbitrary expressions within
${...}, not just
identifiers.
-
+
Multi-line string literals.String concatenations can now involve
@@ -1517,7 +1719,7 @@ irreversible.
Very convenient whenever you have some package on your machine and
you want to copy it somewhere else.
-
+
XML support:
@@ -1540,7 +1742,7 @@ irreversible.
-
+
You can now unambiguously specify which derivation to
build or install in nix-env,
@@ -1554,7 +1756,7 @@ irreversible.foo. nix-env -q
--attr shows the attribute names corresponding to each
derivation.
-
+
If the top-level Nix expression used by
nix-env, nix-instantiate or
@@ -1565,7 +1767,7 @@ irreversible.value can be used to specify
function arguments on the command line.
-
+
nix-install-package --url
URL allows a package to be
installed directly from the given URL.
@@ -1611,7 +1813,7 @@ irreversible.
-
+
Garbage collector improvements:
@@ -1643,12 +1845,12 @@ irreversible.
from the Nix store. It won’t delete reachable (non-garbage)
paths unless is
specified.
-
+
-
+
Berkeley DB 4.4’s process registry feature is used
to recover from crashed Nix processes.
@@ -1814,7 +2016,7 @@ svnService = derivation {
};
Previously, this would yield a black hole (infinite recursion).
-
+
nix-build now defaults to using
@@ -1956,7 +2158,7 @@ $ nix-store -q --referrers-closure \
/nix/store/8lz9yc6zgmc0vlqmn2ipcpkjlmbi51vv-glibc-2.3.4
-
+
The concept of fixed-output derivations has been
@@ -2220,7 +2422,7 @@ $ nix-env -f .../i686-linux.nix -i -E 'x: x.firefoxWrapper'
columnised).
-
+
@@ -2234,7 +2436,7 @@ $ nix-env -f .../i686-linux.nix -i -E 'x: x.firefoxWrapper'
Nix expression language changes:
-
+
New language construct: with
E1;
E2 brings all attributes