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">
4
5<title>Nixpkgs Release Notes</title>
6
7
8<section><title>Release 0.14 (June 4, 2012)</title>
9
10<para>In preparation for the switch from Subversion to Git, this
11release is mainly the prevent the Nixpkgs version number from going
12backwards. (This would happen because prerelease version numbers
13produced for the Git repository are lower than those for the
14Subversion repository.)</para>
15
16<para>Since the last release, there have been thousands of changes and
17new packages by numerous contributors. For details, see the commit
18logs.</para>
19
20</section>
21
22
23<section><title>Release 0.13 (February 5, 2010)</title>
24
25<para>As always, there are many changes. Some of the most important
26updates are:
27
28<itemizedlist>
29
30 <listitem><para>Glibc 2.9.</para></listitem>
31
32 <listitem><para>GCC 4.3.3.</para></listitem>
33
34 <listitem><para>Linux 2.6.32.</para></listitem>
35
36 <listitem><para>X.org 7.5.</para></listitem>
37
38 <listitem><para>KDE 4.3.4.</para></listitem>
39
40</itemizedlist>
41
42</para>
43
44
45</section>
46
47
48<section><title>Release 0.12 (April 24, 2009)</title>
49
50<para>There are way too many additions to Nixpkgs since the last
51release to list here: for example, the number of packages on Linux has
52increased from 1002 to 2159. However, some specific improvements are
53worth listing:
54
55<itemizedlist>
56
57 <listitem><para>Nixpkgs now has a manual. In particular, it
58 describes the standard build environment in
59 detail.</para></listitem>
60
61 <listitem><para>Major new packages:
62
63 <itemizedlist>
64
65 <listitem><para>KDE 4.</para></listitem>
66
67 <listitem><para>TeXLive.</para></listitem>
68
69 <listitem><para>VirtualBox.</para></listitem>
70
71 </itemizedlist>
72
73 … and many others.
74
75 </para></listitem>
76
77 <listitem><para>Important updates:
78
79 <itemizedlist>
80
81 <listitem><para>Glibc 2.7.</para></listitem>
82
83 <listitem><para>GCC 4.2.4.</para></listitem>
84
85 <listitem><para>Linux 2.6.25 — 2.6.28.</para></listitem>
86
87 <listitem><para>Firefox 3.</para></listitem>
88
89 <listitem><para>X.org 7.3.</para></listitem>
90
91 </itemizedlist>
92
93 </para></listitem>
94
95 <listitem><para>Support for building derivations in a virtual
96 machine, including RPM and Debian builds in automatically generated
97 VM images. See
98 <filename>pkgs/build-support/vm/default.nix</filename> for
99 details.</para></listitem>
100
101 <listitem><para>Improved support for building Haskell
102 packages.</para></listitem>
103
104</itemizedlist>
105
106</para>
107
108<para>The following people contributed to this release:
109
110Andres Löh,
111Arie Middelkoop,
112Armijn Hemel,
113Eelco Dolstra,
114Lluís Batlle,
115Ludovic Courtès,
116Marc Weber,
117Mart Kolthof,
118Martin Bravenboer,
119Michael Raskin,
120Nicolas Pierron,
121Peter Simons,
122Pjotr Prins,
123Rob Vermaas,
124Sander van der Burg,
125Tobias Hammerschmidt,
126Valentin David,
127Wouter den Breejen and
128Yury G. Kudryashov.
129
130In addition, several people contributed patches on the
131<literal>nix-dev</literal> mailing list.</para>
132
133</section>
134
135
136<section><title>Release 0.11 (September 11, 2007)</title>
137
138<para>This release has the following improvements:
139
140<itemizedlist>
141
142
143 <listitem><para>The standard build environment
144 (<literal>stdenv</literal>) is now pure on the
145 <literal>x86_64-linux</literal> and <literal>powerpc-linux</literal>
146 platforms, just as on <literal>i686-linux</literal>. (Purity means
147 that building and using the standard environment has no dependencies
148 outside of the Nix store. For instance, it doesn’t require an
149 external C compiler such as <filename>/usr/bin/gcc</filename>.)
150 Also, the statically linked binaries used in the bootstrap process
151 are now automatically reproducible, making it easy to update the
152 bootstrap tools and to add support for other Linux platforms. See
153 <filename>pkgs/stdenv/linux/make-bootstrap-tools.nix</filename> for
154 details.</para></listitem>
155
156
157 <listitem><para>Hook variables in the generic builder are now
158 executed using the <function>eval</function> shell command. This
159 has a major advantage: you can write hooks directly in Nix
160 expressions. For instance, rather than writing a builder like this:
161
162<programlisting>
163source $stdenv/setup
164
165postInstall=postInstall
166postInstall() {
167 ln -sf gzip $out/bin/gunzip
168 ln -sf gzip $out/bin/zcat
169}
170
171genericBuild</programlisting>
172
173 (the <literal>gzip</literal> builder), you can just add this
174 attribute to the derivation:
175
176<programlisting>
177postInstall = "ln -sf gzip $out/bin/gunzip; ln -sf gzip $out/bin/zcat";</programlisting>
178
179 and so a separate build script becomes unnecessary. This should
180 allow us to get rid of most builders in Nixpkgs.</para></listitem>
181
182
183 <listitem><para>It is now possible to have the generic builder pass
184 arguments to <command>configure</command> and
185 <command>make</command> that contain whitespace. Previously, for
186 example, you could say in a builder,
187
188<programlisting>
189configureFlags="CFLAGS=-O0"</programlisting>
190
191 but not
192
193<programlisting>
194configureFlags="CFLAGS=-O0 -g"</programlisting>
195
196 since the <literal>-g</literal> would be interpreted as a separate
197 argument to <command>configure</command>. Now you can say
198
199<programlisting>
200configureFlagsArray=("CFLAGS=-O0 -g")</programlisting>
201
202 or similarly
203
204<programlisting>
205configureFlagsArray=("CFLAGS=-O0 -g" "LDFLAGS=-L/foo -L/bar")</programlisting>
206
207 which does the right thing. Idem for <literal>makeFlags</literal>,
208 <literal>installFlags</literal>, <literal>checkFlags</literal> and
209 <literal>distFlags</literal>.</para>
210
211 <para>Unfortunately you can't pass arrays to Bash through the
212 environment, so you can't put the array above in a Nix expression,
213 e.g.,
214
215<programlisting>
216configureFlagsArray = ["CFLAGS=-O0 -g"];</programlisting>
217
218 since it would just be flattened to a since string. However, you
219 <emphasis>can</emphasis> use the inline hooks described above:
220
221<programlisting>
222preConfigure = "configureFlagsArray=(\"CFLAGS=-O0 -g\")";</programlisting>
223
224 </para></listitem>
225
226
227 <listitem><para>The function <function>fetchurl</function> now has
228 support for two different kinds of mirroring of files. First, it
229 has support for <emphasis>content-addressable mirrors</emphasis>.
230 For example, given the <function>fetchurl</function> call
231
232<programlisting>
233fetchurl {
234 url = http://releases.mozilla.org/<replaceable>...</replaceable>/firefox-2.0.0.6-source.tar.bz2;
235 sha1 = "eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082";
236}</programlisting>
237
238 <function>fetchurl</function> will first try to download this file
239 from <link
240 xlink:href="http://tarballs.nixos.org/sha1/eb72f55e4a8bf08e8c6ef227c0ade3d068ba1082"/>.
241 If that file doesn’t exist, it will try the original URL. In
242 general, the “content-addressed” location is
243 <replaceable>mirror</replaceable><literal>/</literal><replaceable>hash-type</replaceable><literal>/</literal><replaceable>hash</replaceable>.
244 There is currently only one content-addressable mirror (<link
245 xlink:href="http://tarballs.nixos.org"/>), but more can be
246 specified in the <varname>hashedMirrors</varname> attribute in
247 <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>, or by
248 setting the <envar>NIX_HASHED_MIRRORS</envar> environment variable
249 to a whitespace-separated list of URLs.</para>
250
251 <para>Second, <function>fetchurl</function> has support for
252 widely-mirrored distribution sites such as SourceForge or the Linux
253 kernel archives. Given a URL of the form
254 <literal>mirror://<replaceable>site</replaceable>/<replaceable>path</replaceable></literal>,
255 it will try to download <replaceable>path</replaceable> from a
256 configurable list of mirrors for <replaceable>site</replaceable>.
257 (This idea was borrowed from Gentoo Linux.) Example:
258<programlisting>
259fetchurl {
260 url = mirror://gnu/gcc/gcc-4.2.0/gcc-core-4.2.0.tar.bz2;
261 sha256 = "0ykhzxhr8857dr97z0j9wyybfz1kjr71xk457cfapfw5fjas4ny1";
262}</programlisting>
263 Currently <replaceable>site</replaceable> can be
264 <literal>sourceforge</literal>, <literal>gnu</literal> and
265 <literal>kernel</literal>. The list of mirrors is defined in
266 <filename>pkgs/build-support/fetchurl/mirrors.nix</filename>. You
267 can override the list of mirrors for a particular site by setting
268 the environment variable
269 <envar>NIX_MIRRORS_<replaceable>site</replaceable></envar>, e.g.
270<programlisting>
271export NIX_MIRRORS_sourceforge=http://osdn.dl.sourceforge.net/sourceforge/</programlisting>
272 </para>
273
274 </listitem>
275
276
277 <listitem><para>Important updates:
278
279 <itemizedlist>
280
281 <listitem><para>Glibc 2.5.</para></listitem>
282
283 <listitem><para>GCC 4.1.2.</para></listitem>
284
285 <listitem><para>Gnome 2.16.3.</para></listitem>
286
287 <listitem><para>X11R7.2.</para></listitem>
288
289 <listitem><para>Linux 2.6.21.7 and 2.6.22.6.</para></listitem>
290
291 <listitem><para>Emacs 22.1.</para></listitem>
292
293 </itemizedlist>
294
295 </para></listitem>
296
297
298 <listitem><para>Major new packages:
299
300 <itemizedlist>
301
302 <listitem><para>KDE 3.5.6 Base.</para></listitem>
303
304 <listitem><para>Wine 0.9.43.</para></listitem>
305
306 <listitem><para>OpenOffice 2.2.1.</para></listitem>
307
308 <listitem><para>Many Linux system packages to support
309 NixOS.</para></listitem>
310
311 </itemizedlist>
312
313 </para></listitem>
314
315</itemizedlist>
316
317</para>
318
319<para>The following people contributed to this release:
320
321 Andres Löh,
322 Arie Middelkoop,
323 Armijn Hemel,
324 Eelco Dolstra,
325 Marc Weber,
326 Mart Kolthof,
327 Martin Bravenboer,
328 Michael Raskin,
329 Wouter den Breejen and
330 Yury G. Kudryashov.
331
332</para>
333
334</section>
335
336
337<section><title>Release 0.10 (October 12, 2006)</title>
338
339<note><para>This release of Nixpkgs requires <link
340xlink:href='http://nixos.org/releases/nix/nix-0.10/'>Nix
3410.10</link> or higher.</para></note>
342
343<para>This release has the following improvements:</para>
344
345<itemizedlist>
346
347 <listitem><para><filename>pkgs/system/all-packages-generic.nix</filename>
348 is gone, we now just have
349 <filename>pkgs/top-level/all-packages.nix</filename> that contains
350 all available packages. This should cause much less confusion with
351 users. <filename>all-packages.nix</filename> is a function that by
352 default returns packages for the current platform, but you can
353 override this by specifying a different <varname>system</varname>
354 argument.</para></listitem>
355
356 <listitem><para>Certain packages in Nixpkgs are now
357 user-configurable through a configuration file, i.e., without having
358 to edit the Nix expressions in Nixpkgs. For instance, the Firefox
359 provided in the Nixpkgs channel is built without the RealPlayer
360 plugin (for legal reasons). Previously, you could easily enable
361 RealPlayer support by editing the call to the Firefox function in
362 <filename>all-packages.nix</filename>, but such changes are not
363 respected when Firefox is subsequently updated through the Nixpkgs
364 channel.</para>
365
366 <para>The Nixpkgs configuration file (found in
367 <filename>~/.nixpkgs/config.nix</filename> or through the
368 <envar>NIXPKGS_CONFIG</envar> environment variable) is an attribute
369 set that contains configuration options that
370 <filename>all-packages.nix</filename> reads and uses for certain
371 packages. For instance, the following configuration file:
372
373<programlisting>
374{
375 firefox = {
376 enableRealPlayer = true;
377 };
378}</programlisting>
379
380 persistently enables RealPlayer support in the Firefox
381 build.</para>
382
383 <para>(Actually, <literal>firefox.enableRealPlayer</literal> is the
384 <emphasis>only</emphasis> configuration option currently available,
385 but more are sure to be added.)</para></listitem>
386
387 <listitem><para>Support for new platforms:
388
389 <itemizedlist>
390
391 <listitem><para><literal>i686-cygwin</literal>, i.e., Windows
392 (using <link xlink:href="http://www.cygwin.com/">Cygwin</link>).
393 The standard environment on <literal>i686-cygwin</literal> by
394 default builds binaries for the Cygwin environment (i.e., it
395 uses Cygwin tools and produces executables that use the Cygwin
396 library). However, there is also a standard environment that
397 produces binaries that use <link
398 xlink:href="http://www.mingw.org/">MinGW</link>. You can use it
399 by calling <filename>all-package.nix</filename> with the
400 <varname>stdenvType</varname> argument set to
401 <literal>"i686-mingw"</literal>.</para></listitem>
402
403 <listitem><para><literal>i686-darwin</literal>, i.e., Mac OS X
404 on Intel CPUs.</para></listitem>
405
406 <listitem><para><literal>powerpc-linux</literal>.</para></listitem>
407
408 <listitem><para><literal>x86_64-linux</literal>, i.e., Linux on
409 64-bit AMD/Intel CPUs. Unlike <literal>i686-linux</literal>,
410 this platform doesn’t have a pure <literal>stdenv</literal>
411 yet.</para></listitem>
412
413 </itemizedlist>
414
415 </para>
416
417 </listitem>
418
419 <listitem><para>The default compiler is now GCC 4.1.1.</para></listitem>
420
421 <listitem><para>X11 updated to X.org’s X11R7.1.</para></listitem>
422
423 <listitem><para>Notable new packages:
424
425 <itemizedlist>
426
427 <listitem><para>Opera.</para></listitem>
428
429 <listitem><para>Microsoft Visual C++ 2005 Express Edition and
430 the Windows SDK.</para></listitem>
431
432 </itemizedlist>
433
434 In total there are now around 809 packages in Nixpkgs.</para>
435
436 </listitem>
437
438
439 <listitem><para>It is now <emphasis>much</emphasis> easier to
440 override the default C compiler and other tools in
441 <literal>stdenv</literal> for specific packages.
442 <filename>all-packages.nix</filename> provides two utility
443 functions for this purpose: <function>overrideGCC</function> and
444 <function>overrideInStdenv</function>. Both take a
445 <literal>stdenv</literal> and return an augmented
446 <literal>stdenv</literal>; the formed changes the C compiler, and
447 the latter adds additional packages to the front of
448 <literal>stdenv</literal>’s initial <envar>PATH</envar>, allowing
449 tools to be overridden.</para>
450
451 <para>For instance, the package <varname>strategoxt</varname>
452 doesn’t build with the GNU Make in <literal>stdenv</literal>
453 (version 3.81), so we call it with an augmented
454 <literal>stdenv</literal> that uses GNU Make 3.80:
455
456<programlisting>
457strategoxt = (import ../development/compilers/strategoxt) {
458 inherit fetchurl pkgconfig sdf aterm;
459 stdenv = overrideInStdenv stdenv [gnumake380];
460};
461
462gnumake380 = <replaceable>...</replaceable>;</programlisting>
463
464 Likewise, there are many packages that don’t compile with the
465 default GCC (4.1.1), but that’s easily fixed:
466
467<programlisting>
468exult = import ../games/exult {
469 inherit fetchurl SDL SDL_mixer zlib libpng unzip;
470 stdenv = overrideGCC stdenv gcc34;
471};</programlisting>
472
473 </para></listitem>
474
475
476 <listitem><para>It has also become much easier to experiment with
477 changes to the <literal>stdenv</literal> setup script (which notably
478 contains the generic builder). Since edits to
479 <filename>pkgs/stdenv/generic/setup.sh</filename> trigger a rebuild
480 of <emphasis>everything</emphasis>, this was formerly quite painful.
481 But now <literal>stdenv</literal> contains a function to
482 “regenerate” <literal>stdenv</literal> with a different setup
483 script, allowing the use of a different setup script for specific
484 packages:
485
486<programlisting>
487pkg = import <replaceable>...</replaceable> {
488 stdenv = stdenv.regenerate ./my-setup.sh;
489 <replaceable>...</replaceable>
490}</programlisting>
491
492 </para></listitem>
493
494
495 <listitem><para>Packages can now have a human-readable
496 <emphasis>description</emphasis> field. Package descriptions are
497 shown by <literal>nix-env -qa --description</literal>. In addition,
498 they’re shown on the Nixpkgs release page. A description can be
499 added to a package as follows:
500
501<programlisting>
502stdenv.mkDerivation {
503 name = "exult-1.2";
504 <replaceable>...</replaceable>
505 meta = {
506 description = "A reimplementation of the Ultima VII game engine";
507 };
508}</programlisting>
509
510 The <varname>meta</varname> attribute is not passed to the builder,
511 so changes to the description do not trigger a rebuild. Additional
512 <varname>meta</varname> attributes may be defined in the future
513 (such as the URL of the package’s homepage, the license,
514 etc.).</para></listitem>
515
516</itemizedlist>
517
518
519<para>The following people contributed to this release:
520
521 Andres Löh,
522 Armijn Hemel,
523 Christof Douma,
524 Eelco Dolstra,
525 Eelco Visser,
526 Mart Kolthof,
527 Martin Bravenboer,
528 Merijn de Jonge,
529 Rob Vermaas and
530 Roy van den Broek.
531
532</para>
533
534</section>
535
536
537<section><title>Release 0.9 (January 31, 2006)</title>
538
539<para>There have been zillions of changes since the last release of
540Nixpkgs. Many packages have been added or updated. The following are
541some of the more notable changes:</para>
542
543<itemizedlist>
544
545 <listitem><para>Distribution files have been moved to <link
546 xlink:href="http://nixos.org/" />.</para></listitem>
547
548 <listitem><para>The C library on Linux, Glibc, has been updated to
549 version 2.3.6.</para></listitem>
550
551 <listitem><para>The default compiler is now GCC 3.4.5. GCC 4.0.2 is
552 also available.</para></listitem>
553
554 <listitem><para>The old, unofficial Xlibs has been replaced by the
555 official modularised X11 distribution from X.org, i.e., X11R7.0.
556 X11R7.0 consists of 287 (!) packages, all of which are in Nixpkgs
557 though not all have been tested. It is now possible to build a
558 working X server (previously we only had X client libraries). We
559 use a fully Nixified X server on NixOS.</para></listitem>
560
561 <listitem><para>The Sun JDK 5 has been purified, i.e., it doesn’t
562 require any non-Nix components such as
563 <filename>/lib/ld-linux.so.2</filename>. This means that Java
564 applications such as Eclipse and Azureus can run on
565 NixOS.</para></listitem>
566
567 <listitem><para>Hardware-accelerated OpenGL support, used by games
568 like Quake 3 (which is now built from source).</para></listitem>
569
570 <listitem><para>Improved support for FreeBSD on
571 x86.</para></listitem>
572
573 <listitem><para>Improved Haskell support; e.g., the GHC build is now
574 pure.</para></listitem>
575
576 <listitem><para>Some support for cross-compilation: cross-compiling
577 builds of GCC and Binutils, and cross-compiled builds of the C
578 library uClibc.</para></listitem>
579
580 <listitem><para>Notable new packages:
581
582 <itemizedlist>
583
584 <listitem><para>teTeX, including support for building LaTeX
585 documents using Nix (with automatic dependency
586 determination).</para></listitem>
587
588 <listitem><para>Ruby.</para></listitem>
589
590 <listitem><para>System-level packages to support NixOS,
591 e.g. Grub, GNU <literal>parted</literal> and so
592 on.</para></listitem>
593
594 <listitem><para><literal>ecj</literal>, the Eclipse Compiler for
595 Java, so we finally have a freely distributable compiler that
596 supports Java 5.0.</para></listitem>
597
598 <listitem><para><literal>php</literal>.</para></listitem>
599
600 <listitem><para>The GIMP.</para></listitem>
601
602 <listitem><para>Inkscape.</para></listitem>
603
604 <listitem><para>GAIM.</para></listitem>
605
606 <listitem><para><literal>kdelibs</literal>. This allows us to
607 add KDE-based packages (such as
608 <literal>kcachegrind</literal>).</para></listitem>
609
610 </itemizedlist>
611
612 </para></listitem>
613
614</itemizedlist>
615
616<para>The following people contributed to this release:
617
618 Andres Löh,
619 Armijn Hemel,
620 Bogdan Dumitriu,
621 Christof Douma,
622 Eelco Dolstra,
623 Eelco Visser,
624 Mart Kolthof,
625 Martin Bravenboer,
626 Rob Vermaas and
627 Roy van den Broek.
628
629</para>
630
631</section>
632
633
634<section><title>Release 0.8 (April 11, 2005)</title>
635
636<para>This release is mostly to remain synchronised with the changed
637hashing scheme in Nix 0.8.</para>
638
639<para>Notable updates:
640
641<itemizedlist>
642
643 <listitem><para>Adobe Reader 7.0</para></listitem>
644
645 <listitem><para>Various security updates (zlib 1.2.2, etc.)</para></listitem>
646
647</itemizedlist>
648
649</para>
650
651</section>
652
653
654<section><title>Release 0.7 (March 14, 2005)</title>
655
656<itemizedlist>
657
658<listitem>
659
660 <para>The bootstrap process for the standard build
661 environment on Linux (stdenv-linux) has been improved. It is no
662 longer dependent in its initial bootstrap stages on the system
663 Glibc, GCC, and other tools. Rather, Nixpkgs contains a statically
664 linked bash and curl, and uses that to download other statically
665 linked tools. These are then used to build a Glibc and dynamically
666 linked versions of all other tools.</para>
667
668 <para>This change also makes the bootstrap process faster. For
669 instance, GCC is built only once instead of three times.</para>
670
671 <para>(Contributed by Armijn Hemel.)</para>
672
673</listitem>
674
675<listitem>
676
677 <para>Tarballs used by Nixpkgs are now obtained from the same server
678 that hosts Nixpkgs (<link
679 xlink:href="http://catamaran.labs.cs.uu.nl/" />). This reduces the
680 risk of packages being unbuildable due to moved or deleted files on
681 various servers.</para>
682
683</listitem>
684
685<listitem>
686
687 <para>There now is a generic mechanism for building Perl modules.
688 See the various Perl modules defined in
689 pkgs/system/all-packages-generic.nix.</para>
690
691</listitem>
692
693<listitem>
694
695 <para>Notable new packages:
696
697 <itemizedlist>
698
699 <listitem><para>Qt 3</para></listitem>
700 <listitem><para>MySQL</para></listitem>
701 <listitem><para>MythTV</para></listitem>
702 <listitem><para>Mono</para></listitem>
703 <listitem><para>MonoDevelop (alpha)</para></listitem>
704 <listitem><para>Xine</para></listitem>
705
706 </itemizedlist>
707
708 </para>
709
710</listitem>
711
712<listitem>
713
714 <para>Notable updates:
715
716 <itemizedlist>
717
718 <listitem><para>GCC 3.4.3</para></listitem>
719 <listitem><para>Glibc 2.3.4</para></listitem>
720 <listitem><para>GTK 2.6</para></listitem>
721
722 </itemizedlist>
723
724 </para>
725
726</listitem>
727
728</itemizedlist>
729
730</section>
731
732
733</article>