[Nix-dev] Nix 1.6 released

Kevin Quick quick at sparq.org
Fri Mar 7 04:18:24 CET 2014


Hi folks,

I have an older NixOS installation that hadn't been updated recently.
After running a channel update, I can unfortunately no longer run
nix-env.   I believe it to be due to the nix-channel-obtained
all-packages.nix taking advantage of the new lazy with described below,
but my version 1.5.2 nix-env cannot parse that.

$ nix-env -u nix --show-trace
error: while evaluating the function at `/nix/store/afbq2l02995n243s8398sshkcrjw5n2r-nixos-14.04pre40034.c4d5757/nixos/nixpkgs/pkgs/top-level/all-packages.nix:8:1':
while evaluating the function at `/nix/store/afbq2l02995n243s8398sshkcrjw5n2r-nixos-14.04pre40034.c4d5757/nixos/nixpkgs/pkgs/top-level/all-packages.nix:116:26':
while evaluating the function at `/nix/store/afbq2l02995n243s8398sshkcrjw5n2r-nixos-14.04pre40034.c4d5757/nixos/nixpkgs/pkgs/top-level/all-packages.nix:134:19':
infinite recursion encountered
$ nix-env --version
nix-env (Nix) 1.5.2

I tried downloading the nix source below and building it, but I get:

$ ./configure
...
checking for BZ2_bzWriteOpen in -lbz2... no
configure: error: Nix requires libbz2, which is part of bzip2.  See http://www.bzip.org/.
$

Looks like I've got a bit of a catch-22 situation here.  My current
thinking is to get the nix definitions from github and look for a commit
that's old-enough to let me run nix-env to update nix, but that is a bit
awkward.  Does anyone have any better advice to help me roll back my
package descriptions or roll forward my nix-env?

Thanks!
  Kevin



Eelco Dolstra writes:

> Hi,
>
> I'm pleased to announce the availability of a new stable release of the
> Nix package manager.  Release 1.6 can be found at
>
>   http://hydra.nixos.org/release/nix/nix-1.6
>
> and
>
>   http://nixos.org/releases/nix/nix-1.6/
>
> In addition to the usual bug fixes, this release has several new features:
>
>   * The command nix-build --run-env has been renamed to nix-shell.
>
>   * nix-shell now sources $stdenv/setup inside the interactive shell, rather
>     than in a parent shell. This ensures that shell functions defined by stdenv
>     can be used in the interactive shell.
>
>   * nix-shell has a new flag --pure to clear the environment, so you get an
>     environment that more closely corresponds to the "real" Nix build.
>
>   * nix-shell now sets the shell prompt (PS1) to ensure that Nix shells are
>     distinguishable from your regular shells.
>
>   * nix-env no longer requires a * argument to match all packages, so nix-env
>     -qa is equivalent to nix-env -qa '*'.
>
>   * nix-env -i has a new flag --remove-all (-r) to remove all previous packages
>     from the profile. This makes it easier to do declarative package management
>     similar to NixOS's environment.systemPackages. For instance, if you have a
>     specification my-packages.nix like this:
>
>     with import <nixpkgs> {};
>     [ thunderbird
>       geeqie
>       ...
>     ]
>
>     then after any change to this file, you can run:
>
>     $ nix-env -f my-packages.nix -ir
>
>     to update your profile to match the specification.
>
>   * The `with' language construct is now more lazy. It only evaluates its
>     argument if a variable might actually refer to an attribute in the
>     argument. For instance, this now works:
>
>     let
>       pkgs = with pkgs; { foo = "old"; bar = foo; } // overrides;
>       overrides = { foo = "new"; };
>     in pkgs.bar
>
>     This evaluates to "new", while previously it gave an "infinite recursion"
>     error.
>
>   * Nix now has proper integer arithmetic operators. For instance, you can
>     write x + y instead of builtins.add x y, or x < y instead of
>     builtins.lessThan x y. The comparison operators also work on strings.
>
>   * On 64-bit systems, Nix integers are now 64 bits rather than 32 bits.
>
>   * When using the Nix daemon, the nix-daemon worker process now runs on the
>     same CPU as the client, on systems that support setting CPU affinity. This
>     gives a significant speedup on some systems.
>
>   * If a stack overflow occurs in the Nix evaluator, you now get a proper error
>     message (rather than "Segmentation fault") on some systems.
>
>   * In addition to directories, you can now bind-mount regular files in chroots
>     through the (now misnamed) option build-chroot-dirs.
>
> This release has contributions from Domen Kožar, Eelco Dolstra, Florian
> Friesdorf, Gergely Risko, Ivan Kozik, Ludovic Courtès and Shea Levy.


-- 
Kevin Quick


More information about the nix-dev mailing list