Add support for order-only dependencies
Filter Nix-specific ANSI escape sequences from stderr

The Nixpkgs stdenv prints some custom escape sequences to denote
nesting and stuff like that. Most terminals (e.g. xterm, konsole)
ignore them, but some do not (e.g. xfce4-terminal). So for the benefit
of the latter, filter them out.
Reduce test verbosity
nix-store -l: Automatically pipe output into $PAGER
Add some color
Use proper quotes everywhere
Install config.h only once
Handle header file instantiation
Force template regeneration
Merge commit '2aa93858afee22e0c32d8f4366970976374091ac'
Provide reasonable default flags for $LESS

Borrowed from systemd.
Use pager for more commands
Flush std::cout before closing stdout
Fix a segfault in ‘nix-env -qa’

This was triggered by 47e185847e729d49e6aa376e8299fd66ef834a0a, which
turned globals.state into a pointer.
Use unshare() instead of clone()

It turns out that using clone() to start a child process is unsafe in
a multithreaded program. It can cause the initialisation of a build
child process to hang in setgroups(), as seen several times in the
build farm:

The reason is that Glibc thinks that the other threads of the parent
exist in the child, so in setxid_mark_thread() it tries to get a futex
that has been acquired by another thread just before the clone(). With
fork(), Glibc runs pthread_atfork() handlers that take care of this
(in particular, __reclaim_stacks()). But clone() doesn't do that.

Fortunately, we can use fork()+unshare() instead of clone() to set up
private namespaces.

See also https://www.mail-archive.com/lxc-devel@lists.linuxcontainers.org/msg03434.html.
Set a curl timeout on binary cache lookups
Use PR_SET_PDEATHSIG to ensure child cleanup
Fix tests

So all these years I was totally deluded about the meaning of "set
-e". You might think that it causes statements like "false && true" or
"! true" to fail, but it doesn't...
Merge branch 'master' of https://github.com/nixos/nix