diff --git a/VERSION b/VERSION
index c43e1055fd3f..f2bb2d0a27c0 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.12
+0.12
\ No newline at end of file
diff --git a/doc/introduction.xml b/doc/introduction.xml
index f1f15995909d..bdc035bbaf75 100644
--- a/doc/introduction.xml
+++ b/doc/introduction.xml
@@ -4,6 +4,18 @@
Introduction
-Bla
+This manual tells you how to write packages for the Nix Packages
+collection (Nixpkgs). Thus it’s for packagers and developers who want
+to add packages to Nixpkgs. End users are kindly referred to the
+Nix
+manual.
-
\ No newline at end of file
+This manual does not describe the syntax and semantics of the
+Nix expression language, which are given in the Nix manual in the
+chapter
+on writing Nix expressions. It only describes the facilities
+provided by Nixpkgs to make writing packages easier, such as the
+standard build environment (stdenv).
+
+
diff --git a/doc/manual.xml b/doc/manual.xml
index c38e0835e5f6..2ef9516afc12 100644
--- a/doc/manual.xml
+++ b/doc/manual.xml
@@ -29,5 +29,7 @@
+
+
\ No newline at end of file
diff --git a/doc/outline.txt b/doc/outline.txt
index 060592a99aba..78ba0411501b 100644
--- a/doc/outline.txt
+++ b/doc/outline.txt
@@ -170,3 +170,7 @@
- fetchcvs
- fetchdarcs
+
+
+- Appendix: Nixpkgs config options
+
diff --git a/doc/quick-start.xml b/doc/quick-start.xml
new file mode 100644
index 000000000000..dac34b7cee3d
--- /dev/null
+++ b/doc/quick-start.xml
@@ -0,0 +1,240 @@
+
+
+Quick Start to Adding a Package
+
+To add a package to Nixpkgs:
+
+
+
+
+ Checkout the Nixpkgs source tree:
+
+
+$ svn checkout https://svn.nixos.org/repos/nix/nixpkgs/trunk nixpkgs
+$ cd nixpkgs
+
+
+
+
+
+ Find a good place in the Nixpkgs tree to add the Nix
+ expression for your package. For instance, a library package
+ typically goes into
+ pkgs/development/libraries/pkgname,
+ while a web browser goes into
+ pkgs/applications/networking/browsers/pkgname.
+ See Section XXX for some hints on the tree organisation. Create a
+ directory for your package, e.g.
+
+
+$ svn mkdir pkgs/development/libraries/libfoo
+
+
+
+
+
+ In the package directory, create a Nix expression — a piece
+ of code that describes how to build the package. In this case, it
+ should be a function that is called with the
+ package dependencies as arguments, and returns a build of the
+ package in the Nix store. The expression should usually be called
+ default.nix.
+
+
+$ emacs pkgs/development/libraries/libfoo/default.nix
+$ svn add pkgs/development/libraries/libfoo/default.nix
+
+
+
+ You can have a look at the existing Nix expressions under
+ pkgs/ to see how it’s done. Here are some
+ good ones:
+
+
+
+
+ GNU cpio: pkgs/tools/archivers/cpio/default.nix.
+ The simplest possible package. The generic builder in
+ stdenv does everything for you. It has
+ no dependencies beyond stdenv.
+
+
+
+ GNU Hello: pkgs/applications/misc/hello/ex-2/default.nix.
+ Also trivial, but it specifies some meta
+ attributes which is good practice.
+
+
+
+ GNU Multiple Precision arithmetic library (GMP): pkgs/development/libraries/gmp/default.nix.
+ Also done by the generic builder, but has a dependency on
+ m4.
+
+
+
+ Pan, a GTK-based newsreader: pkgs/applications/networking/newsreaders/pan/default.nix.
+ Has an optional dependency on gtkspell,
+ which is only built if spellCheck is
+ true.
+
+
+
+ Apache HTTPD: pkgs/servers/http/apache-httpd/default.nix.
+ A bunch of optional features, variable substitutions in the
+ configure flags, a post-install hook, and miscellaneous
+ hackery.
+
+
+
+ BitTorrent (wxPython-based): pkgs/tools/networking/p2p/bittorrent/default.nix.
+ Uses an external build
+ script, which can be useful if you have lots of code
+ that you don’t want cluttering up the Nix expression. But
+ external builders are mostly obsolete.
+
+
+
+
+ Firefox: pkgs/applications/networking/browsers/firefox-3/default.nix.
+ Lots of dependencies.
+
+
+
+ JDiskReport, a Java utility: pkgs/tools/misc/jdiskreport/default.nix
+ (and the builder).
+ Nixpkgs doesn’t have a decent stdenv for
+ Java yet so this is pretty ad-hoc.
+
+
+
+ XML::Simple, a Perl module: pkgs/top-level/all-packages.nix
+ (search for the perlXMLSimple
+ attribute). Most Perl modules are so simple to build that
+ they are defined directly in
+ all-packages.nix, no need to make a
+ separate file for them.
+
+
+
+ Adobe Reader: pkgs/applications/misc/acrobat-reader/default.nix.
+ Shows how binary-only packages can be supported. In
+ particular the builder
+ uses patchelf to set the RUNPATH and ELF
+ interpreter of the executables so that the right libraries
+ are found at runtime.
+
+
+
+
+
+
+ Some notes:
+
+
+
+
+ All meta attributes are optional,
+ but it’s still a good idea to provide at least the
+ description and
+ homepage.
+
+
+
+ You can use nix-prefetch-url
+ url to get the SHA-256 hash of
+ source distributions.
+
+
+
+ A list of schemes for mirror://
+ URLs can be found in pkgs/build-support/fetchurl/mirrors.nix.
+
+
+
+
+
+
+ The exact syntax and semantics of the Nix expression
+ language, including the built-in function, are described in the
+ Nix manual in the chapter
+ on writing Nix expressions.
+
+
+
+
+ Add a call to the function defined in the previous step to
+ pkgs/top-level/all-packages.nix
+ with some descriptive name for the variable,
+ e.g. libfoo.
+
+
+$ emacs pkgs/top-level/all-packages.nix
+
+
+
+ The attributes in that file are sorted by category (like
+ “Development / Libraries”) that more-or-less correspond to the
+ directory structure of Nixpkgs, and then by attribute name.
+
+
+
+ Test whether the package builds:
+
+
+$ nix-build -A libfoo
+
+ where libfoo should be the variable name
+ defined in the previous step. You may want to add the flag
+ to keep the temporary build directory in case
+ something fails. If the build succeeds, a symlink
+ ./result to the package in the Nix store is
+ created.
+
+
+
+ If you want to install the package into your profile
+ (optional), do
+
+
+$ nix-env -f . -iA libfoo
+
+
+
+
+
+ Optionally commit the new package (svn
+ ci) or send a patch to
+ nix-dev@cs.uu.nl.
+
+
+
+ If you want the TU Delft build farm to build binaries of the
+ package and make them available in the nixpkgs
+ channel, add it to pkgs/top-level/build-for-release.nix.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/stdenv.xml b/doc/stdenv.xml
new file mode 100644
index 000000000000..d99cdb4dd699
--- /dev/null
+++ b/doc/stdenv.xml
@@ -0,0 +1,10 @@
+
+
+The Standard Environment
+
+
+
+
+
diff --git a/pkgs/applications/misc/hello/ex-2/default.nix b/pkgs/applications/misc/hello/ex-2/default.nix
index b70103ceef5c..876e0dfb7c50 100644
--- a/pkgs/applications/misc/hello/ex-2/default.nix
+++ b/pkgs/applications/misc/hello/ex-2/default.nix
@@ -1,10 +1,20 @@
-{stdenv, fetchurl, perl}:
+{stdenv, fetchurl}:
stdenv.mkDerivation {
- name = "hello-2.1.1";
+ name = "hello-2.3";
+
src = fetchurl {
- url = mirror://gnu/hello/hello-2.1.1.tar.gz;
- md5 = "70c9ccf9fac07f762c24f2df2290784d";
+ url = mirror://gnu/hello/hello-2.3.tar.bz2;
+ sha256 = "0c7vijq8y68bpr7g6dh1gny0bff8qq81vnp4ch8pjzvg56wb3js1";
+ };
+
+ meta = {
+ description = "A program that produces a familiar, friendly greeting";
+ longDescription = ''
+ GNU Hello is a program that prints "Hello, world!" when you run it.
+ It is fully customizable.
+ '';
+ homepage = http://www.gnu.org/software/hello/manual/;
+ license = "GPLv3+";
};
- buildInputs = [perl];
}
diff --git a/pkgs/applications/networking/newsreaders/pan/default.nix b/pkgs/applications/networking/newsreaders/pan/default.nix
index a427e3550f8b..c91d64a2f4fe 100644
--- a/pkgs/applications/networking/newsreaders/pan/default.nix
+++ b/pkgs/applications/networking/newsreaders/pan/default.nix
@@ -3,8 +3,7 @@
, perl, pcre, gmime, gettext
}:
-assert spellChecking -> gtkspell != null /* !!! && gtk == gtkspell.gtk */;
-# !!! assert gtk.glib == gnet.glib;
+assert spellChecking -> gtkspell != null;
stdenv.mkDerivation {
name = "pan-0.132";
@@ -22,14 +21,11 @@ stdenv.mkDerivation {
})
];
- buildInputs = [
- pkgconfig gtk perl pcre gmime gettext
- (if spellChecking then gtkspell else null)
- ];
-
- inherit spellChecking stdenv;
+ buildInputs = [pkgconfig gtk perl pcre gmime gettext]
+ ++ stdenv.lib.optional spellChecking gtkspell;
meta = {
description = "A GTK+-based Usenet newsreader good at both text and binaries";
+ homepage = http://pan.rebelbase.com/;
};
}
diff --git a/pkgs/tools/misc/jdiskreport/default.nix b/pkgs/tools/misc/jdiskreport/default.nix
index 6229ca60d4c1..da0bbf0fb877 100644
--- a/pkgs/tools/misc/jdiskreport/default.nix
+++ b/pkgs/tools/misc/jdiskreport/default.nix
@@ -3,12 +3,16 @@
#assert jdk.swingSupport;
stdenv.mkDerivation {
- name = "jdiskreport-1.2.3";
+ name = "jdiskreport-1.3.0";
+
builder = ./builder.sh;
+
src = fetchurl {
- url = http://www.jgoodies.com/download/jdiskreport/jdiskreport-1_2_3.zip;
- md5 = "4a33c5c1344ed9e0fa531e2cb1875cb8";
+ url = http://www.jgoodies.com/download/jdiskreport/jdiskreport-1_3_0.zip;
+ sha256 = "1vgiq797gqc6i89w4kscg57snn74wi8x566bhi9xn8r0fbphihxb";
};
+
buildInputs = [unzip];
+
inherit jdk;
}
diff --git a/pkgs/tools/networking/p2p/bittorrent/builder.sh b/pkgs/tools/networking/p2p/bittorrent/builder.sh
index 8097995dfbda..c074c1919ac5 100644
--- a/pkgs/tools/networking/p2p/bittorrent/builder.sh
+++ b/pkgs/tools/networking/p2p/bittorrent/builder.sh
@@ -1,19 +1,19 @@
source $stdenv/setup
+
# Workaround for:
# File "...-python-2.4.4/lib/python2.4/posixpath.py", line 62, in join
# elif path == '' or path.endswith('/'):
# AttributeError: 'NoneType' object has no attribute 'endswith'
export HOME=$TMP
-buildPhase=buildPhase
+
buildPhase() {
#substituteInPlace BitTorrent/GUI_wx/__init__.py --replace "'2.6'" "'2.8'"
python setup.py build
}
-installPhase=installPhase
installPhase() {
python setup.py install --prefix=$out
@@ -24,4 +24,5 @@ installPhase() {
done
}
+
genericBuild
diff --git a/pkgs/tools/networking/p2p/bittorrent/default.nix b/pkgs/tools/networking/p2p/bittorrent/default.nix
index cfddd48a342e..980f51d37467 100644
--- a/pkgs/tools/networking/p2p/bittorrent/default.nix
+++ b/pkgs/tools/networking/p2p/bittorrent/default.nix
@@ -7,6 +7,7 @@ assert gui -> wxPython != null;
stdenv.mkDerivation {
name = "bittorrent-5.2.0";
+
builder = ./builder.sh;
src = fetchurl {
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 26e941468035..cdf2fa1c3836 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5862,8 +5862,8 @@ let pkgs = rec {
inherit fetchurl stdenv;
};
- hello = import ../applications/misc/hello/ex-1 {
- inherit fetchurl stdenv perl;
+ hello = import ../applications/misc/hello/ex-2 {
+ inherit fetchurl stdenv;
};
i810switch = import ../applications/misc/i810 {