1 <?xml version="1.0" encoding="UTF-8"?>
2 <article xmlns="http://docbook.org/ns/docbook"
3 xmlns:xlink="http://www.w3.org/1999/xlink">
5 <title>Nixpkgs Release Notes</title>
8 <section><title>Release 0.12 (April 24, 2009)</title>
10 <para>There are way too many additions to Nixpkgs since the last
11 release to list here: for example, the number of packages on Linux has
12 increased from 1002 to 2159. However, some specific improvements are
17 <listitem><para>Nixpkgs now has a manual. In particular, it
18 describes the standard build environment in
19 detail.</para></listitem>
21 <listitem><para>Major new packages:
25 <listitem><para>KDE 4.</para></listitem>
27 <listitem><para>TeXLive.</para></listitem>
29 <listitem><para>VirtualBox.</para></listitem>
37 <listitem><para>Important updates:
41 <listitem><para>Glibc 2.7.</para></listitem>
43 <listitem><para>GCC 4.2.4.</para></listitem>
45 <listitem><para>Linux 2.6.25 — 2.6.28.</para></listitem>
47 <listitem><para>Firefox 3.</para></listitem>
49 <listitem><para>X.org 7.3.</para></listitem>
55 <listitem><para>Support for building derivations in a virtual
56 machine, including RPM and Debian builds in automatically generated
58 <filename>pkgs/build-support/vm.default.nix</filename> for
59 details.</para></listitem>
61 <listitem><para>Improved support for building Haskell
62 packages.</para></listitem>
68 <para>The following people contributed to this release:
87 Wouter den Breejen and
90 In addition, several people contributed patches on the
91 <literal>nix-dev</literal> mailing list.</para>
96 <section><title>Release 0.11 (September 11, 2007)</title>
98 <para>This release has the following improvements:
103 <listitem><para>The standard build environment
104 (<literal>stdenv</literal>) is now pure on the
105 <literal>x86_64-linux</literal> and <literal>powerpc-linux</literal>
106 platforms, just as on <literal>i686-linux</literal>. (Purity means
107 that building and using the standard environment has no dependencies
108 outside of the Nix store. For instance, it doesn’t require an
109 external C compiler such as <filename>/usr/bin/gcc</filename>.)
110 Also, the statically linked binaries used in the bootstrap process
111 are now automatically reproducible, making it easy to update the
112 bootstrap tools and to add support for other Linux platforms. See
113 <filename>pkgs/stdenv/linux/make-bootstrap-tools.nix</filename> for
114 details.</para></listitem>
117 <listitem><para>Hook variables in the generic builder are now
118 executed using the <function>eval</function> shell command. This
119 has a major advantage: you can write hooks directly in Nix
120 expressions. For instance, rather than writing a builder like this:
125 postInstall=postInstall
127 ln -sf gzip $out/bin/gunzip
128 ln -sf gzip $out/bin/zcat
131 genericBuild</programlisting>
133 (the <literal>gzip</literal> builder), you can just add this
134 attribute to the derivation:
137 postInstall = "ln -sf gzip $out/bin/gunzip; ln -sf gzip $out/bin/zcat";</programlisting>
139 and so a separate build script becomes unnecessary. This should
140 allow us to get rid of most builders in Nixpkgs.</para></listitem>
143 <listitem><para>It is now possible to have the generic builder pass
144 arguments to <command>configure</command> and
145 <command>make</command> that contain whitespace. Previously, for
146 example, you could say in a builder,
149 configureFlags="CFLAGS=-O0"</programlisting>
154 configureFlags="CFLAGS=-O0 -g"</programlisting>
156 since the <literal>-g</literal> would be interpreted as a separate
157 argument to <command>configure</command>. Now you can say
160 configureFlagsArray=("CFLAGS=-O0 -g")</programlisting>
165 configureFlagsArray=("CFLAGS=-O0 -g" "LDFLAGS=-L/foo -L/bar")</programlisting>
167 which does the right thing. Idem for <literal>makeFlags</literal>,
168 <literal>installFlags</literal>, <literal>checkFlags</literal> and
169 <literal>distFlags</literal>.</para>
171 <para>Unfortunately you can't pass arrays to Bash through the
172 environment, so you can't put the array above in a Nix expression,
176 configureFlagsArray = ["CFLAGS=-O0 -g"];</programlisting>
178 since it would just be flattened to a since string. However, you
179 <emphasis>can</emphasis> use the inline hooks described above:
182 preConfigure = "configureFlagsArray=(\"CFLAGS=-O0 -g\")";</programlisting>
187 <listitem><para>The function <function>fetchurl</function> now has
188 support for two different kinds of mirroring of files. First, it
189 has support for <emphasis>content-addressable mirrors</emphasis>.
190 For example, given the <function>fetchurl</function> call
194 url = http://releases.mozilla.org/<replaceable>...</replaceable>/firefox-2.0.0.6-source.tar.bz2;
195 sha1 = "eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082";
198 <function>fetchurl</function> will first try to download this file
200 xlink:href="http://nixos.org/tarballs/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"/>.
201 If that file doesn’t exist, it will try the original URL. In
202 general, the “content-addressed” location is
203 <replaceable>mirror</replaceable><literal>/</literal><replaceable>hash-type</replaceable><literal>/</literal><replaceable>hash</replaceable>.
204 There is currently only one content-addressable mirror (<link
205 xlink:href="http://nixos.org/tarballs"/>), but more can be
206 specified in the <varname>hashedMirrors</varname> attribute in
207 <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>, or by
208 setting the <envar>NIX_HASHED_MIRRORS</envar> environment variable
209 to a whitespace-separated list of URLs.</para>
211 <para>Second, <function>fetchurl</function> has support for
212 widely-mirrored distribution sites such as SourceForge or the Linux
213 kernel archives. Given a URL of the form
214 <literal>mirror://<replaceable>site</replaceable>/<replaceable>path</replaceable></literal>,
215 it will try to download <replaceable>path</replaceable> from a
216 configurable list of mirrors for <replaceable>site</replaceable>.
217 (This idea was borrowed from Gentoo Linux.) Example:
220 url = mirror://gnu/gcc/gcc-4.2.0/gcc-core-4.2.0.tar.bz2;
221 sha256 = "0ykhzxhr8857dr97z0j9wyybfz1kjr71xk457cfapfw5fjas4ny1";
223 Currently <replaceable>site</replaceable> can be
224 <literal>sourceforge</literal>, <literal>gnu</literal> and
225 <literal>kernel</literal>. The list of mirrors is defined in
226 <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>. You
227 can override the list of mirrors for a particular site by setting
228 the environment variable
229 <envar>NIX_MIRRORS_<replaceable>site</replaceable></envar>, e.g.
231 export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/</programlisting>
237 <listitem><para>Important updates:
241 <listitem><para>Glibc 2.5.</para></listitem>
243 <listitem><para>GCC 4.1.2.</para></listitem>
245 <listitem><para>Gnome 2.16.3.</para></listitem>
247 <listitem><para>X11R7.2.</para></listitem>
249 <listitem><para>Linux 2.6.21.7 and 2.6.22.6.</para></listitem>
251 <listitem><para>Emacs 22.1.</para></listitem>
258 <listitem><para>Major new packages:
262 <listitem><para>KDE 3.5.6 Base.</para></listitem>
264 <listitem><para>Wine 0.9.43.</para></listitem>
266 <listitem><para>OpenOffice 2.2.1.</para></listitem>
268 <listitem><para>Many Linux system packages to support
269 NixOS.</para></listitem>
279 <para>The following people contributed to this release:
289 Wouter den Breejen and
297 <section><title>Release 0.10 (October 12, 2006)</title>
299 <note><para>This release of Nixpkgs requires <link
300 xlink:href='http://nixos.org/releases/nix/nix-0.10/'>Nix
301 0.10</link> or higher.</para></note>
303 <para>This release has the following improvements:</para>
307 <listitem><para><filename>pkgs/system/all-packages-generic.nix</filename>
308 is gone, we now just have
309 <filename>pkgs/top-level/all-packages.nix</filename> that contains
310 all available packages. This should cause much less confusion with
311 users. <filename>all-packages.nix</filename> is a function that by
312 default returns packages for the current platform, but you can
313 override this by specifying a different <varname>system</varname>
314 argument.</para></listitem>
316 <listitem><para>Certain packages in Nixpkgs are now
317 user-configurable through a configuration file, i.e., without having
318 to edit the Nix expressions in Nixpkgs. For instance, the Firefox
319 provided in the Nixpkgs channel is built without the RealPlayer
320 plugin (for legal reasons). Previously, you could easily enable
321 RealPlayer support by editing the call to the Firefox function in
322 <filename>all-packages.nix</filename>, but such changes are not
323 respected when Firefox is subsequently updated through the Nixpkgs
326 <para>The Nixpkgs configuration file (found in
327 <filename>~/.nixpkgs/config.nix</filename> or through the
328 <envar>NIXPKGS_CONFIG</envar> environment variable) is an attribute
329 set that contains configuration options that
330 <filename>all-packages.nix</filename> reads and uses for certain
331 packages. For instance, the following configuration file:
336 enableRealPlayer = true;
340 persistently enables RealPlayer support in the Firefox
343 <para>(Actually, <literal>firefox.enableRealPlayer</literal> is the
344 <emphasis>only</emphasis> configuration option currently available,
345 but more are sure to be added.)</para></listitem>
347 <listitem><para>Support for new platforms:
351 <listitem><para><literal>i686-cygwin</literal>, i.e., Windows
352 (using <link xlink:href="http://www.cygwin.com/">Cygwin</link>).
353 The standard environment on <literal>i686-cygwin</literal> by
354 default builds binaries for the Cygwin environment (i.e., it
355 uses Cygwin tools and produces executables that use the Cygwin
356 library). However, there is also a standard environment that
357 produces binaries that use <link
358 xlink:href="http://www.mingw.org/">MinGW</link>. You can use it
359 by calling <filename>all-package.nix</filename> with the
360 <varname>stdenvType</varname> argument set to
361 <literal>"i686-mingw"</literal>.</para></listitem>
363 <listitem><para><literal>i686-darwin</literal>, i.e., Mac OS X
364 on Intel CPUs.</para></listitem>
366 <listitem><para><literal>powerpc-linux</literal>.</para></listitem>
368 <listitem><para><literal>x86_64-linux</literal>, i.e., Linux on
369 64-bit AMD/Intel CPUs. Unlike <literal>i686-linux</literal>,
370 this platform doesn’t have a pure <literal>stdenv</literal>
371 yet.</para></listitem>
379 <listitem><para>The default compiler is now GCC 4.1.1.</para></listitem>
381 <listitem><para>X11 updated to X.org’s X11R7.1.</para></listitem>
383 <listitem><para>Notable new packages:
387 <listitem><para>Opera.</para></listitem>
389 <listitem><para>Microsoft Visual C++ 2005 Express Edition and
390 the Windows SDK.</para></listitem>
394 In total there are now around 809 packages in Nixpkgs.</para>
399 <listitem><para>It is now <emphasis>much</emphasis> easier to
400 override the default C compiler and other tools in
401 <literal>stdenv</literal> for specific packages.
402 <filename>all-packages.nix</filename> provides two utility
403 functions for this purpose: <function>overrideGCC</function> and
404 <function>overrideInStdenv</function>. Both take a
405 <literal>stdenv</literal> and return an augmented
406 <literal>stdenv</literal>; the formed changes the C compiler, and
407 the latter adds additional packages to the front of
408 <literal>stdenv</literal>’s initial <envar>PATH</envar>, allowing
409 tools to be overriden.</para>
411 <para>For instance, the package <varname>strategoxt</varname>
412 doesn’t build with the GNU Make in <literal>stdenv</literal>
413 (version 3.81), so we call it with an augmented
414 <literal>stdenv</literal> that uses GNU Make 3.80:
417 strategoxt = (import ../development/compilers/strategoxt) {
418 inherit fetchurl pkgconfig sdf aterm;
419 stdenv = overrideInStdenv stdenv [gnumake380];
422 gnumake380 = <replaceable>...</replaceable>;</programlisting>
424 Likewise, there are many packages that don’t compile with the
425 default GCC (4.1.1), but that’s easily fixed:
428 exult = import ../games/exult {
429 inherit fetchurl SDL SDL_mixer zlib libpng unzip;
430 stdenv = overrideGCC stdenv gcc34;
436 <listitem><para>It has also become much easier to experiment with
437 changes to the <literal>stdenv</literal> setup script (which notably
438 contains the generic builder). Since edits to
439 <filename>pkgs/stdenv/generic/setup.sh</filename> trigger a rebuild
440 of <emphasis>everything</emphasis>, this was formerly quite painful.
441 But now <literal>stdenv</literal> contains a function to
442 “regenerate” <literal>stdenv</literal> with a different setup
443 script, allowing the use of a different setup script for specific
447 pkg = import <replaceable>...</replaceable> {
448 stdenv = stdenv.regenerate ./my-setup.sh;
449 <replaceable>...</replaceable>
455 <listitem><para>Packages can now have a human-readable
456 <emphasis>description</emphasis> field. Package descriptions are
457 shown by <literal>nix-env -qa --description</literal>. In addition,
458 they’re shown on the Nixpkgs release page. A description can be
459 added to a package as follows:
462 stdenv.mkDerivation {
464 <replaceable>...</replaceable>
466 description = "A reimplementation of the Ultima VII game engine";
470 The <varname>meta</varname> attribute is not passed to the builder,
471 so changes to the description do not trigger a rebuild. Additional
472 <varname>meta</varname> attributes may be defined in the future
473 (such as the URL of the package’s homepage, the license,
474 etc.).</para></listitem>
479 <para>The following people contributed to this release:
497 <section><title>Release 0.9 (January 31, 2006)</title>
499 <para>There have been zillions of changes since the last release of
500 Nixpkgs. Many packages have been added or updated. The following are
501 some of the more notable changes:</para>
505 <listitem><para>Distribution files have been moved to <link
506 xlink:href="http://nixos.org/" />.</para></listitem>
508 <listitem><para>The C library on Linux, Glibc, has been updated to
509 version 2.3.6.</para></listitem>
511 <listitem><para>The default compiler is now GCC 3.4.5. GCC 4.0.2 is
512 also available.</para></listitem>
514 <listitem><para>The old, unofficial Xlibs has been replaced by the
515 official modularised X11 distribution from X.org, i.e., X11R7.0.
516 X11R7.0 consists of 287 (!) packages, all of which are in Nixpkgs
517 though not all have been tested. It is now possible to build a
518 working X server (previously we only had X client libraries). We
519 use a fully Nixified X server on NixOS.</para></listitem>
521 <listitem><para>The Sun JDK 5 has been purified, i.e., it doesn’t
522 require any non-Nix components such as
523 <filename>/lib/ld-linux.so.2</filename>. This means that Java
524 applications such as Eclipse and Azureus can run on
525 NixOS.</para></listitem>
527 <listitem><para>Hardware-accelerated OpenGL support, used by games
528 like Quake 3 (which is now built from source).</para></listitem>
530 <listitem><para>Improved support for FreeBSD on
531 x86.</para></listitem>
533 <listitem><para>Improved Haskell support; e.g., the GHC build is now
534 pure.</para></listitem>
536 <listitem><para>Some support for cross-compilation: cross-compiling
537 builds of GCC and Binutils, and cross-compiled builds of the C
538 library uClibc.</para></listitem>
540 <listitem><para>Notable new packages:
544 <listitem><para>teTeX, including support for building LaTeX
545 documents using Nix (with automatic dependency
546 determination).</para></listitem>
548 <listitem><para>Ruby.</para></listitem>
550 <listitem><para>System-level packages to support NixOS,
551 e.g. Grub, GNU <literal>parted</literal> and so
552 on.</para></listitem>
554 <listitem><para><literal>ecj</literal>, the Eclipse Compiler for
555 Java, so we finally have a freely distributable compiler that
556 supports Java 5.0.</para></listitem>
558 <listitem><para><literal>php</literal>.</para></listitem>
560 <listitem><para>The GIMP.</para></listitem>
562 <listitem><para>Inkscape.</para></listitem>
564 <listitem><para>GAIM.</para></listitem>
566 <listitem><para><literal>kdelibs</literal>. This allows us to
567 add KDE-based packages (such as
568 <literal>kcachegrind</literal>).</para></listitem>
576 <para>The following people contributed to this release:
594 <section><title>Release 0.8 (April 11, 2005)</title>
596 <para>This release is mostly to remain synchronised with the changed
597 hashing scheme in Nix 0.8.</para>
599 <para>Notable updates:
603 <listitem><para>Adobe Reader 7.0</para></listitem>
605 <listitem><para>Various security updates (zlib 1.2.2, etc.)</para></listitem>
614 <section><title>Release 0.7 (March 14, 2005)</title>
620 <para>The bootstrap process for the standard build
621 environment on Linux (stdenv-linux) has been improved. It is no
622 longer dependent in its initial bootstrap stages on the system
623 Glibc, GCC, and other tools. Rather, Nixpkgs contains a statically
624 linked bash and curl, and uses that to download other statically
625 linked tools. These are then used to build a Glibc and dynamically
626 linked versions of all other tools.</para>
628 <para>This change also makes the bootstrap process faster. For
629 instance, GCC is built only once instead of three times.</para>
631 <para>(Contributed by Armijn Hemel.)</para>
637 <para>Tarballs used by Nixpkgs are now obtained from the same server
638 that hosts Nixpkgs (<link
639 xlink:href="http://catamaran.labs.cs.uu.nl/" />). This reduces the
640 risk of packages being unbuildable due to moved or deleted files on
641 various servers.</para>
647 <para>There now is a generic mechanism for building Perl modules.
648 See the various Perl modules defined in
649 pkgs/system/all-packages-generic.nix.</para>
655 <para>Notable new packages:
659 <listitem><para>Qt 3</para></listitem>
660 <listitem><para>MySQL</para></listitem>
661 <listitem><para>MythTV</para></listitem>
662 <listitem><para>Mono</para></listitem>
663 <listitem><para>MonoDevelop (alpha)</para></listitem>
664 <listitem><para>Xine</para></listitem>
674 <para>Notable updates:
678 <listitem><para>GCC 3.4.3</para></listitem>
679 <listitem><para>Glibc 2.3.4</para></listitem>
680 <listitem><para>GTK 2.6</para></listitem>