diff --git a/doc/Makefile b/doc/Makefile
index c21825e0dc1..d81fd55c2c8 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -16,7 +16,7 @@ NEWS_OPTS = \
--stringparam section.autolabel.max.depth 0 \
--stringparam header.rule 0
-all: NEWS.html NEWS.txt
+all: NEWS.html NEWS.txt manual.html
NEWS.html: release-notes.xml
$(XSLTPROC) --nonet --xinclude --output $@ $(NEWS_OPTS) \
@@ -28,3 +28,10 @@ NEWS.txt: release-notes.xml
$(docbookxsl)/html/docbook.xsl -
LANG=en_US w3m -dump $@.tmp.html > $@
rm $@.tmp.html
+
+manual.html: *.xml
+ $(XSLTPROC) --nonet --xinclude --output manual.html \
+ $(docbookxsl)/html/docbook.xsl manual.xml
+
+manual.pdf: *.xml
+ dblatex manual.xml
diff --git a/doc/introduction.xml b/doc/introduction.xml
new file mode 100644
index 00000000000..f1f15995909
--- /dev/null
+++ b/doc/introduction.xml
@@ -0,0 +1,9 @@
+
+
+Introduction
+
+Bla
+
+
\ No newline at end of file
diff --git a/doc/manual.xml b/doc/manual.xml
new file mode 100644
index 00000000000..c38e0835e5f
--- /dev/null
+++ b/doc/manual.xml
@@ -0,0 +1,33 @@
+
+
+
+
+ Nixpkgs Manual
+
+ Draft (Version )
+
+
+
+ Eelco
+ Dolstra
+
+
+ Delft University of Technology
+ Department of Software Technology
+
+
+
+
+ 2008
+ Eelco Dolstra
+
+
+ June 2008
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc/outline.txt b/doc/outline.txt
new file mode 100644
index 00000000000..060592a99ab
--- /dev/null
+++ b/doc/outline.txt
@@ -0,0 +1,172 @@
+- Intro
+
+ - Goal of this manual
+
+
+- Quick start to adding a package
+
+ (Some of this can be copied/moved from the Nix manual)
+
+ - Hello example
+ - Nix expr
+ - Update all-packages.nix
+ - How to test
+ - How to debug failing builds
+
+ - Subversion example
+
+ - Some X example?
+
+
+- The standard environment
+
+ (Some of this can be moved from the Nix manual)
+
+ - Special attributes
+
+ - Generic builder
+
+ - Helper functions
+
+ - GCC / ld wrapper (+ env vars)
+
+ - Phases (+ how to add phases) and hooks
+
+ - Override functions for stdenv
+
+ - Overriding GCC
+
+ - Overriding the setup script
+
+ - Predefined override functions in all-packages.nix: static binary
+ stdenv, dietlibc stdenv
+
+ - Stdenv bootstrap; how to update the Linux bootstrap binaries
+
+
+- Support for specific languages
+
+ - Perl
+
+ - Generic Perl builder
+
+ - Python
+
+ - Wrapper generation
+
+ - Haskell
+
+ - TODO
+
+ - Java
+
+ - TODO; Java needs lots of improvement
+
+ - TeX/LaTeX
+
+ - Special support for building TeX documents
+
+
+- Special kinds of applications
+
+ - OpenGL apps
+
+ - Binary-only apps
+
+ - Linux kernel modules
+
+ - Mozilla plugins/extensions
+
+ - X apps
+
+ - KDE apps
+
+ - GConf-based apps
+
+ - Programs that need wrappers
+
+ - makeWrapper etc.
+
+ - Initial ramdisks
+
+
+- Library functions
+
+ - i.e. in lib/default.nix
+
+
+- Specific package notes
+
+ - Linux kernel; how to update; feature tests
+
+ - X.org; how to update
+
+ - Gnome; how to update
+
+ - GCC?
+
+ - GHC?
+
+ - ...
+
+
+- Meta attributes
+
+ - License attr; possible values
+
+
+- Virtual machine support (for the build farm)
+
+ - vmtools
+
+ - KVM notes
+
+ - Performing a build in a VM
+
+ - In the host FS
+
+ - In a disk image
+
+ - RPM builds
+
+ - RPM image creation
+
+ - Deb builds
+
+ - Deb image creation
+
+ - Debugging VM builds
+
+
+- Guidelines for Nixpkgs contributions
+
+ - File naming conventions
+
+ - Versioning of packages
+
+ - Tree organisation
+
+ - Variable naming
+
+ - Layout / indentations style
+
+ - Output FS hierarchy (e.g. $out/share/man instead of $out/man)
+
+
+- Misc
+
+ - Building outside of the Nixpkgs tree
+
+ - Config options
+
+ - Downloading stuff
+
+ - fetchurl
+
+ - mirror:// scheme
+
+ - fetchsvn
+
+ - fetchcvs
+
+ - fetchdarcs