[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