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.13 (February 5, 2010)</title>
10 <para>As always, there are many changes. Some of the most important
15 <listitem><para>Glibc 2.9.</para></listitem>
17 <listitem><para>GCC 4.3.3.</para></listitem>
19 <listitem><para>Linux 2.6.32.</para></listitem>
21 <listitem><para>X.org 7.5.</para></listitem>
23 <listitem><para>KDE 4.3.4.</para></listitem>
33 <section><title>Release 0.12 (April 24, 2009)</title>
35 <para>There are way too many additions to Nixpkgs since the last
36 release to list here: for example, the number of packages on Linux has
37 increased from 1002 to 2159. However, some specific improvements are
42 <listitem><para>Nixpkgs now has a manual. In particular, it
43 describes the standard build environment in
44 detail.</para></listitem>
46 <listitem><para>Major new packages:
50 <listitem><para>KDE 4.</para></listitem>
52 <listitem><para>TeXLive.</para></listitem>
54 <listitem><para>VirtualBox.</para></listitem>
62 <listitem><para>Important updates:
66 <listitem><para>Glibc 2.7.</para></listitem>
68 <listitem><para>GCC 4.2.4.</para></listitem>
70 <listitem><para>Linux 2.6.25 — 2.6.28.</para></listitem>
72 <listitem><para>Firefox 3.</para></listitem>
74 <listitem><para>X.org 7.3.</para></listitem>
80 <listitem><para>Support for building derivations in a virtual
81 machine, including RPM and Debian builds in automatically generated
83 <filename>pkgs/build-support/vm.default.nix</filename> for
84 details.</para></listitem>
86 <listitem><para>Improved support for building Haskell
87 packages.</para></listitem>
93 <para>The following people contributed to this release:
110 Tobias Hammerschmidt,
112 Wouter den Breejen and
115 In addition, several people contributed patches on the
116 <literal>nix-dev</literal> mailing list.</para>
121 <section><title>Release 0.11 (September 11, 2007)</title>
123 <para>This release has the following improvements:
128 <listitem><para>The standard build environment
129 (<literal>stdenv</literal>) is now pure on the
130 <literal>x86_64-linux</literal> and <literal>powerpc-linux</literal>
131 platforms, just as on <literal>i686-linux</literal>. (Purity means
132 that building and using the standard environment has no dependencies
133 outside of the Nix store. For instance, it doesn’t require an
134 external C compiler such as <filename>/usr/bin/gcc</filename>.)
135 Also, the statically linked binaries used in the bootstrap process
136 are now automatically reproducible, making it easy to update the
137 bootstrap tools and to add support for other Linux platforms. See
138 <filename>pkgs/stdenv/linux/make-bootstrap-tools.nix</filename> for
139 details.</para></listitem>
142 <listitem><para>Hook variables in the generic builder are now
143 executed using the <function>eval</function> shell command. This
144 has a major advantage: you can write hooks directly in Nix
145 expressions. For instance, rather than writing a builder like this:
150 postInstall=postInstall
152 ln -sf gzip $out/bin/gunzip
153 ln -sf gzip $out/bin/zcat
156 genericBuild</programlisting>
158 (the <literal>gzip</literal> builder), you can just add this
159 attribute to the derivation:
162 postInstall = "ln -sf gzip $out/bin/gunzip; ln -sf gzip $out/bin/zcat";</programlisting>
164 and so a separate build script becomes unnecessary. This should
165 allow us to get rid of most builders in Nixpkgs.</para></listitem>
168 <listitem><para>It is now possible to have the generic builder pass
169 arguments to <command>configure</command> and
170 <command>make</command> that contain whitespace. Previously, for
171 example, you could say in a builder,
174 configureFlags="CFLAGS=-O0"</programlisting>
179 configureFlags="CFLAGS=-O0 -g"</programlisting>
181 since the <literal>-g</literal> would be interpreted as a separate
182 argument to <command>configure</command>. Now you can say
185 configureFlagsArray=("CFLAGS=-O0 -g")</programlisting>
190 configureFlagsArray=("CFLAGS=-O0 -g" "LDFLAGS=-L/foo -L/bar")</programlisting>
192 which does the right thing. Idem for <literal>makeFlags</literal>,
193 <literal>installFlags</literal>, <literal>checkFlags</literal> and
194 <literal>distFlags</literal>.</para>
196 <para>Unfortunately you can't pass arrays to Bash through the
197 environment, so you can't put the array above in a Nix expression,
201 configureFlagsArray = ["CFLAGS=-O0 -g"];</programlisting>
203 since it would just be flattened to a since string. However, you
204 <emphasis>can</emphasis> use the inline hooks described above:
207 preConfigure = "configureFlagsArray=(\"CFLAGS=-O0 -g\")";</programlisting>
212 <listitem><para>The function <function>fetchurl</function> now has
213 support for two different kinds of mirroring of files. First, it
214 has support for <emphasis>content-addressable mirrors</emphasis>.
215 For example, given the <function>fetchurl</function> call
219 url = http://releases.mozilla.org/<replaceable>...</replaceable>/firefox-2.0.0.6-source.tar.bz2;
220 sha1 = "eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082";
223 <function>fetchurl</function> will first try to download this file
225 xlink:href="http://nixos.org/tarballs/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"/>.
226 If that file doesn’t exist, it will try the original URL. In
227 general, the “content-addressed” location is
228 <replaceable>mirror</replaceable><literal>/</literal><replaceable>hash-type</replaceable><literal>/</literal><replaceable>hash</replaceable>.
229 There is currently only one content-addressable mirror (<link
230 xlink:href="http://nixos.org/tarballs"/>), but more can be
231 specified in the <varname>hashedMirrors</varname> attribute in
232 <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>, or by
233 setting the <envar>NIX_HASHED_MIRRORS</envar> environment variable
234 to a whitespace-separated list of URLs.</para>
236 <para>Second, <function>fetchurl</function> has support for
237 widely-mirrored distribution sites such as SourceForge or the Linux
238 kernel archives. Given a URL of the form
239 <literal>mirror://<replaceable>site</replaceable>/<replaceable>path</replaceable></literal>,
240 it will try to download <replaceable>path</replaceable> from a
241 configurable list of mirrors for <replaceable>site</replaceable>.
242 (This idea was borrowed from Gentoo Linux.) Example:
245 url = mirror://gnu/gcc/gcc-4.2.0/gcc-core-4.2.0.tar.bz2;
246 sha256 = "0ykhzxhr8857dr97z0j9wyybfz1kjr71xk457cfapfw5fjas4ny1";
248 Currently <replaceable>site</replaceable> can be
249 <literal>sourceforge</literal>, <literal>gnu</literal> and
250 <literal>kernel</literal>. The list of mirrors is defined in
251 <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>. You
252 can override the list of mirrors for a particular site by setting
253 the environment variable
254 <envar>NIX_MIRRORS_<replaceable>site</replaceable></envar>, e.g.
256 export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/</programlisting>
262 <listitem><para>Important updates:
266 <listitem><para>Glibc 2.5.</para></listitem>
268 <listitem><para>GCC 4.1.2.</para></listitem>
270 <listitem><para>Gnome 2.16.3.</para></listitem>
272 <listitem><para>X11R7.2.</para></listitem>
274 <listitem><para>Linux 2.6.21.7 and 2.6.22.6.</para></listitem>
276 <listitem><para>Emacs 22.1.</para></listitem>
283 <listitem><para>Major new packages:
287 <listitem><para>KDE 3.5.6 Base.</para></listitem>
289 <listitem><para>Wine 0.9.43.</para></listitem>
291 <listitem><para>OpenOffice 2.2.1.</para></listitem>
293 <listitem><para>Many Linux system packages to support
294 NixOS.</para></listitem>
304 <para>The following people contributed to this release:
314 Wouter den Breejen and
322 <section><title>Release 0.10 (October 12, 2006)</title>
324 <note><para>This release of Nixpkgs requires <link
325 xlink:href='http://nixos.org/releases/nix/nix-0.10/'>Nix
326 0.10</link> or higher.</para></note>
328 <para>This release has the following improvements:</para>
332 <listitem><para><filename>pkgs/system/all-packages-generic.nix</filename>
333 is gone, we now just have
334 <filename>pkgs/top-level/all-packages.nix</filename> that contains
335 all available packages. This should cause much less confusion with
336 users. <filename>all-packages.nix</filename> is a function that by
337 default returns packages for the current platform, but you can
338 override this by specifying a different <varname>system</varname>
339 argument.</para></listitem>
341 <listitem><para>Certain packages in Nixpkgs are now
342 user-configurable through a configuration file, i.e., without having
343 to edit the Nix expressions in Nixpkgs. For instance, the Firefox
344 provided in the Nixpkgs channel is built without the RealPlayer
345 plugin (for legal reasons). Previously, you could easily enable
346 RealPlayer support by editing the call to the Firefox function in
347 <filename>all-packages.nix</filename>, but such changes are not
348 respected when Firefox is subsequently updated through the Nixpkgs
351 <para>The Nixpkgs configuration file (found in
352 <filename>~/.nixpkgs/config.nix</filename> or through the
353 <envar>NIXPKGS_CONFIG</envar> environment variable) is an attribute
354 set that contains configuration options that
355 <filename>all-packages.nix</filename> reads and uses for certain
356 packages. For instance, the following configuration file:
361 enableRealPlayer = true;
365 persistently enables RealPlayer support in the Firefox
368 <para>(Actually, <literal>firefox.enableRealPlayer</literal> is the
369 <emphasis>only</emphasis> configuration option currently available,
370 but more are sure to be added.)</para></listitem>
372 <listitem><para>Support for new platforms:
376 <listitem><para><literal>i686-cygwin</literal>, i.e., Windows
377 (using <link xlink:href="http://www.cygwin.com/">Cygwin</link>).
378 The standard environment on <literal>i686-cygwin</literal> by
379 default builds binaries for the Cygwin environment (i.e., it
380 uses Cygwin tools and produces executables that use the Cygwin
381 library). However, there is also a standard environment that
382 produces binaries that use <link
383 xlink:href="http://www.mingw.org/">MinGW</link>. You can use it
384 by calling <filename>all-package.nix</filename> with the
385 <varname>stdenvType</varname> argument set to
386 <literal>"i686-mingw"</literal>.</para></listitem>
388 <listitem><para><literal>i686-darwin</literal>, i.e., Mac OS X
389 on Intel CPUs.</para></listitem>
391 <listitem><para><literal>powerpc-linux</literal>.</para></listitem>
393 <listitem><para><literal>x86_64-linux</literal>, i.e., Linux on
394 64-bit AMD/Intel CPUs. Unlike <literal>i686-linux</literal>,
395 this platform doesn’t have a pure <literal>stdenv</literal>
396 yet.</para></listitem>
404 <listitem><para>The default compiler is now GCC 4.1.1.</para></listitem>
406 <listitem><para>X11 updated to X.org’s X11R7.1.</para></listitem>
408 <listitem><para>Notable new packages:
412 <listitem><para>Opera.</para></listitem>
414 <listitem><para>Microsoft Visual C++ 2005 Express Edition and
415 the Windows SDK.</para></listitem>
419 In total there are now around 809 packages in Nixpkgs.</para>
424 <listitem><para>It is now <emphasis>much</emphasis> easier to
425 override the default C compiler and other tools in
426 <literal>stdenv</literal> for specific packages.
427 <filename>all-packages.nix</filename> provides two utility
428 functions for this purpose: <function>overrideGCC</function> and
429 <function>overrideInStdenv</function>. Both take a
430 <literal>stdenv</literal> and return an augmented
431 <literal>stdenv</literal>; the formed changes the C compiler, and
432 the latter adds additional packages to the front of
433 <literal>stdenv</literal>’s initial <envar>PATH</envar>, allowing
434 tools to be overriden.</para>
436 <para>For instance, the package <varname>strategoxt</varname>
437 doesn’t build with the GNU Make in <literal>stdenv</literal>
438 (version 3.81), so we call it with an augmented
439 <literal>stdenv</literal> that uses GNU Make 3.80:
442 strategoxt = (import ../development/compilers/strategoxt) {
443 inherit fetchurl pkgconfig sdf aterm;
444 stdenv = overrideInStdenv stdenv [gnumake380];
447 gnumake380 = <replaceable>...</replaceable>;</programlisting>
449 Likewise, there are many packages that don’t compile with the
450 default GCC (4.1.1), but that’s easily fixed:
453 exult = import ../games/exult {
454 inherit fetchurl SDL SDL_mixer zlib libpng unzip;
455 stdenv = overrideGCC stdenv gcc34;
461 <listitem><para>It has also become much easier to experiment with
462 changes to the <literal>stdenv</literal> setup script (which notably
463 contains the generic builder). Since edits to
464 <filename>pkgs/stdenv/generic/setup.sh</filename> trigger a rebuild
465 of <emphasis>everything</emphasis>, this was formerly quite painful.
466 But now <literal>stdenv</literal> contains a function to
467 “regenerate” <literal>stdenv</literal> with a different setup
468 script, allowing the use of a different setup script for specific
472 pkg = import <replaceable>...</replaceable> {
473 stdenv = stdenv.regenerate ./my-setup.sh;
474 <replaceable>...</replaceable>
480 <listitem><para>Packages can now have a human-readable
481 <emphasis>description</emphasis> field. Package descriptions are
482 shown by <literal>nix-env -qa --description</literal>. In addition,
483 they’re shown on the Nixpkgs release page. A description can be
484 added to a package as follows:
487 stdenv.mkDerivation {
489 <replaceable>...</replaceable>
491 description = "A reimplementation of the Ultima VII game engine";
495 The <varname>meta</varname> attribute is not passed to the builder,
496 so changes to the description do not trigger a rebuild. Additional
497 <varname>meta</varname> attributes may be defined in the future
498 (such as the URL of the package’s homepage, the license,
499 etc.).</para></listitem>
504 <para>The following people contributed to this release:
522 <section><title>Release 0.9 (January 31, 2006)</title>
524 <para>There have been zillions of changes since the last release of
525 Nixpkgs. Many packages have been added or updated. The following are
526 some of the more notable changes:</para>
530 <listitem><para>Distribution files have been moved to <link
531 xlink:href="http://nixos.org/" />.</para></listitem>
533 <listitem><para>The C library on Linux, Glibc, has been updated to
534 version 2.3.6.</para></listitem>
536 <listitem><para>The default compiler is now GCC 3.4.5. GCC 4.0.2 is
537 also available.</para></listitem>
539 <listitem><para>The old, unofficial Xlibs has been replaced by the
540 official modularised X11 distribution from X.org, i.e., X11R7.0.
541 X11R7.0 consists of 287 (!) packages, all of which are in Nixpkgs
542 though not all have been tested. It is now possible to build a
543 working X server (previously we only had X client libraries). We
544 use a fully Nixified X server on NixOS.</para></listitem>
546 <listitem><para>The Sun JDK 5 has been purified, i.e., it doesn’t
547 require any non-Nix components such as
548 <filename>/lib/ld-linux.so.2</filename>. This means that Java
549 applications such as Eclipse and Azureus can run on
550 NixOS.</para></listitem>
552 <listitem><para>Hardware-accelerated OpenGL support, used by games
553 like Quake 3 (which is now built from source).</para></listitem>
555 <listitem><para>Improved support for FreeBSD on
556 x86.</para></listitem>
558 <listitem><para>Improved Haskell support; e.g., the GHC build is now
559 pure.</para></listitem>
561 <listitem><para>Some support for cross-compilation: cross-compiling
562 builds of GCC and Binutils, and cross-compiled builds of the C
563 library uClibc.</para></listitem>
565 <listitem><para>Notable new packages:
569 <listitem><para>teTeX, including support for building LaTeX
570 documents using Nix (with automatic dependency
571 determination).</para></listitem>
573 <listitem><para>Ruby.</para></listitem>
575 <listitem><para>System-level packages to support NixOS,
576 e.g. Grub, GNU <literal>parted</literal> and so
577 on.</para></listitem>
579 <listitem><para><literal>ecj</literal>, the Eclipse Compiler for
580 Java, so we finally have a freely distributable compiler that
581 supports Java 5.0.</para></listitem>
583 <listitem><para><literal>php</literal>.</para></listitem>
585 <listitem><para>The GIMP.</para></listitem>
587 <listitem><para>Inkscape.</para></listitem>
589 <listitem><para>GAIM.</para></listitem>
591 <listitem><para><literal>kdelibs</literal>. This allows us to
592 add KDE-based packages (such as
593 <literal>kcachegrind</literal>).</para></listitem>
601 <para>The following people contributed to this release:
619 <section><title>Release 0.8 (April 11, 2005)</title>
621 <para>This release is mostly to remain synchronised with the changed
622 hashing scheme in Nix 0.8.</para>
624 <para>Notable updates:
628 <listitem><para>Adobe Reader 7.0</para></listitem>
630 <listitem><para>Various security updates (zlib 1.2.2, etc.)</para></listitem>
639 <section><title>Release 0.7 (March 14, 2005)</title>
645 <para>The bootstrap process for the standard build
646 environment on Linux (stdenv-linux) has been improved. It is no
647 longer dependent in its initial bootstrap stages on the system
648 Glibc, GCC, and other tools. Rather, Nixpkgs contains a statically
649 linked bash and curl, and uses that to download other statically
650 linked tools. These are then used to build a Glibc and dynamically
651 linked versions of all other tools.</para>
653 <para>This change also makes the bootstrap process faster. For
654 instance, GCC is built only once instead of three times.</para>
656 <para>(Contributed by Armijn Hemel.)</para>
662 <para>Tarballs used by Nixpkgs are now obtained from the same server
663 that hosts Nixpkgs (<link
664 xlink:href="http://catamaran.labs.cs.uu.nl/" />). This reduces the
665 risk of packages being unbuildable due to moved or deleted files on
666 various servers.</para>
672 <para>There now is a generic mechanism for building Perl modules.
673 See the various Perl modules defined in
674 pkgs/system/all-packages-generic.nix.</para>
680 <para>Notable new packages:
684 <listitem><para>Qt 3</para></listitem>
685 <listitem><para>MySQL</para></listitem>
686 <listitem><para>MythTV</para></listitem>
687 <listitem><para>Mono</para></listitem>
688 <listitem><para>MonoDevelop (alpha)</para></listitem>
689 <listitem><para>Xine</para></listitem>
699 <para>Notable updates:
703 <listitem><para>GCC 3.4.3</para></listitem>
704 <listitem><para>Glibc 2.3.4</para></listitem>
705 <listitem><para>GTK 2.6</para></listitem>