[Nix-dev] Nixpkgs 0.10 released

Eelco Dolstra eelco at cs.uu.nl
Fri Oct 13 00:00:39 CEST 2006


Hi,

I'm pleased to announce the availability of a new stable release of the
Nix Packages collection.  Release 0.10 can be found at

  http://nix.cs.uu.nl/dist/nix/nixpkgs-0.10/

*** Release notes ***

The release notes can also be found (in a nicer format than ASCII) at
http://nix.cs.uu.nl/dist/nix/nixpkgs-0.10/release-notes/.

Note: This release of Nixpkgs requires Nix 0.10 or higher.

This release has the following improvements:

  * pkgs/system/all-packages-generic.nix is gone, we now just have pkgs/
    top-level/all-packages.nix that contains all available packages. This
    should cause much less confusion with users. all-packages.nix is a function
    that by default returns packages for the current platform, but you can
    override this by specifying a different system argument.

  * Certain packages in Nixpkgs are now user-configurable through a
    configuration file, i.e., without having to edit the Nix expressions in
    Nixpkgs. For instance, the Firefox provided in the Nixpkgs channel is built
    without the RealPlayer plugin (for legal reasons). Previously, you could
    easily enable RealPlayer support by editing the call to the Firefox
    function in all-packages.nix, but such changes are not respected when
    Firefox is subsequently updated through the Nixpkgs channel.

    The Nixpkgs configuration file (found in ~/.nixpkgs/config.nix or through
    the NIXPKGS_CONFIG environment variable) is an attribute set that contains
    configuration options that all-packages.nix reads and uses for certain
    packages. For instance, the following configuration file:

    {
      firefox = {
        enableRealPlayer = true;
      };
    }

    persistently enables RealPlayer support in the Firefox build.

    (Actually, firefox.enableRealPlayer is the only configuration option
    currently available, but more are sure to be added.)

  * Support for new platforms:

      o i686-cygwin, i.e., Windows (using Cygwin). The standard environment on
        i686-cygwin by default builds binaries for the Cygwin environment
        (i.e., it uses Cygwin tools and produces executables that use the
        Cygwin library). However, there is also a standard environment that
        produces binaries that use MinGW. You can use it by calling
        all-package.nix with the stdenvType argument set to "i686-mingw".

      o i686-darwin, i.e., Mac OS X on Intel CPUs.

      o powerpc-linux.

      o x86_64-linux, i.e., Linux on 64-bit AMD/Intel CPUs. Unlike i686-linux,
        this platform doesn't have a pure stdenv yet.

  * The default compiler is now GCC 4.1.1.

  * X11 updated to X.org's X11R7.1.

  * Notable new packages:

      o Opera.

      o Microsoft Visual C++ 2005 Express Edition and the Windows SDK.

    In total there are now around 809 packages in Nixpkgs.

  * It is now much easier to override the default C compiler and other tools in
    stdenv for specific packages. all-packages.nix provides two utility
    functions for this purpose: overrideGCC and overrideInStdenv. Both take a
    stdenv and return an augmented stdenv; the formed changes the C compiler,
    and the latter adds additional packages to the front of stdenv's initial
    PATH, allowing tools to be overriden.

    For instance, the package strategoxt doesn't build with the GNU Make in
    stdenv (version 3.81), so we call it with an augmented stdenv that uses GNU
    Make 3.80:

    strategoxt = (import ../development/compilers/strategoxt) {
      inherit fetchurl pkgconfig sdf aterm;
      stdenv = overrideInStdenv stdenv [gnumake380];
    };

    gnumake380 = ...;

    Likewise, there are many packages that don't compile with the default GCC
    (4.1.1), but that's easily fixed:

    exult = import ../games/exult {
      inherit fetchurl SDL SDL_mixer zlib libpng unzip;
      stdenv = overrideGCC stdenv gcc34;
    };

  * It has also become much easier to experiment with changes to the stdenv
    setup script (which notably contains the generic builder). Since edits to
    pkgs/stdenv/generic/setup.sh trigger a rebuild of everything, this was
    formerly quite painful. But now stdenv contains a function to "regenerate"
    stdenv with a different setup script, allowing the use of a different setup
    script for specific packages:

    pkg = import ... {
      stdenv = stdenv.regenerate ./my-setup.sh;
      ...
    }

  * Packages can now have a human-readable description field. Package
    descriptions are shown by nix-env -qa --description. In addition, they're
    shown on the Nixpkgs release page. A description can be added to a package
    as follows:

    stdenv.mkDerivation {
      name = "exult-1.2";
      ...
      meta = {
        description = "A reimplementation of the Ultima VII game engine";
      };
    }

    The meta attribute is not passed to the builder, so changes to the
    description do not trigger a rebuild. Additional meta attributes may be
    defined in the future (such as the URL of the package's homepage, the
    license, etc.).

The following people contributed to this release: Andres Löh, Armijn Hemel,
Christof Douma, Eelco Dolstra, Eelco Visser, Mart Kolthof, Martin Bravenboer,
Merijn de Jonge, Rob Vermaas and Roy van den Broek.

-- 
Eelco Dolstra | http://www.cs.uu.nl/~eelco



More information about the nix-dev mailing list