about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--doc/coding-conventions.xml175
-rw-r--r--doc/manual.xml1
-rw-r--r--maintainers/docs/bugs.txt49
-rw-r--r--maintainers/docs/coding-conventions.txt101
-rw-r--r--maintainers/docs/create-new-static-env31
-rw-r--r--maintainers/docs/static-initial-env35
-rw-r--r--maintainers/docs/todo.txt12
7 files changed, 176 insertions, 228 deletions
diff --git a/doc/coding-conventions.xml b/doc/coding-conventions.xml
new file mode 100644
index 0000000000000..3e4afdc1d4f5f
--- /dev/null
+++ b/doc/coding-conventions.xml
@@ -0,0 +1,175 @@
+<chapter xmlns="http://docbook.org/ns/docbook"
+         xmlns:xlink="http://www.w3.org/1999/xlink"
+         xml:id="chap-conventions">
+
+<title>Coding conventions</title>
+
+
+<section><title>Syntax</title>
+
+<itemizedlist>
+
+  <listitem><para>Use 2 spaces of indentation per indentation level in
+  Nix expressions, 4 spaces in shell scripts.</para></listitem>
+
+  <listitem><para>Do not use tab characters, i.e. configure your
+  editor to use soft tabs.  For instance, use <literal>(setq-default
+  indent-tabs-mode nil)</literal> in Emacs.  Everybody has different
+  tab settings so it’s asking for trouble.</para></listitem>
+
+  <listitem><para>Use <literal>lowerCamelCase</literal> for variable
+  names, not <literal>UpperCamelCase</literal>.  TODO: naming of
+  attributes in
+  <filename>all-packages.nix</filename>?</para></listitem>
+
+  <listitem><para>Function calls with attribute set arguments are
+  written as
+
+<programlisting>
+foo {
+  arg = ...;
+}
+</programlisting>
+
+  not
+
+<programlisting>
+foo
+{
+  arg = ...;
+}
+</programlisting>
+
+  Also fine is
+
+<programlisting>
+foo { arg = ...; }
+</programlisting>
+
+  if it's a short call.</para></listitem>
+
+  <listitem><para>In attribute sets or lists that span multiple lines,
+  the attribute names or list elements should be aligned:
+
+<programlisting>
+# A long list.
+list =
+  [ elem1
+    elem2
+    elem3
+  ];
+
+# A long attribute set.
+attrs =
+  { attr1 = short_expr;
+    attr2 =
+      if true then big_expr else big_expr;
+  };
+
+# Alternatively:
+attrs = {
+  attr1 = short_expr;
+  attr2 =
+    if true then big_expr else big_expr;
+};
+</programlisting>
+
+  </para></listitem>
+
+  <listitem><para>Short lists or attribute sets can be written on one
+  line:
+
+<programlisting>
+# A short list.
+list = [ elem1 elem2 elem3 ];
+
+# A short set.
+attrs = { x = 1280; y = 1024; };
+</programlisting>
+
+  </para></listitem>
+
+  <listitem><para>Breaking in the middle of a function argument can
+  give hard-to-read code, like
+
+<programlisting>
+someFunction { x = 1280;
+  y = 1024; } otherArg
+  yetAnotherArg
+</programlisting>
+
+  (especially if the argument is very large, spanning multiple
+  lines).</para>
+
+  <para>Better:
+
+<programlisting>
+someFunction
+  { x = 1280; y = 1024; }
+  otherArg
+  yetAnotherArg
+</programlisting>
+
+  or
+
+<programlisting>
+let res = { x = 1280; y = 1024; };
+in someFunction res otherArg yetAnotherArg
+</programlisting>
+
+  </para></listitem>
+
+  <listitem><para>The bodies of functions, asserts, and withs are not
+  indented to prevent a lot of superfluous indentation levels, i.e.
+
+<programlisting>
+{ arg1, arg2 }:
+assert system == "i686-linux";
+stdenv.mkDerivation { ...
+</programlisting>
+
+  not
+
+<programlisting>
+{ arg1, arg2 }:
+  assert system == "i686-linux";
+    stdenv.mkDerivation { ...
+</programlisting>
+
+  </para></listitem>
+
+  <listitem><para>Function formal arguments are written as:
+
+<programlisting>
+{ arg1, arg2, arg3 }:
+</programlisting>
+
+  but if they don't fit on one line they're written as:
+
+<programlisting>
+{ arg1, arg2, arg3
+, arg4, ...
+, # Some comment...
+  argN
+}:
+</programlisting>
+
+  </para></listitem>
+
+</itemizedlist>
+
+</section>
+
+
+<section><title>File naming and organisation</title>
+
+<para>Names of files and directories should be in lowercase, with
+dashes between words — not in camel case.  For instance, it should be
+<filename>all-packages.nix</filename>, not
+<filename>allPackages.nix</filename> or
+<filename>AllPackages.nix</filename>.</para>
+
+</section>
+
+
+</chapter>
\ No newline at end of file
diff --git a/doc/manual.xml b/doc/manual.xml
index 036cc437d14b5..881528e7cd9a7 100644
--- a/doc/manual.xml
+++ b/doc/manual.xml
@@ -33,6 +33,7 @@
   <xi:include href="meta.xml" />
   <xi:include href="language-support.xml" />
   <xi:include href="package-notes.xml" />
+  <xi:include href="coding-conventions.xml" />
   
         
 </book>
diff --git a/maintainers/docs/bugs.txt b/maintainers/docs/bugs.txt
deleted file mode 100644
index 5a15437c31121..0000000000000
--- a/maintainers/docs/bugs.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-*** All these bugs should be moved to JIRA (if they still exist) ***
-
-
-* If NIX_DEBUG is turned on (set to "1"), autoconf configure scripts
-  may fail to find the correct preprocessor:
-
-    checking how to run the C preprocessor... /lib/cpp
-
-
-* When building gcc using a Nix gcc, generated libraries link against
-  the libraries of the latter:
-
-    $ ldd /nix/store/3b1d3995c4edbf026be5c73f66f69245-gcc-3.3.3/lib/libstdc++.so
-    ...
-    libgcc_s.so.1 => /nix/store/1f19e61d1b7051f1131f78b41b2a0e7e-gcc-3.3.2/lib/libgcc_s.so.1 (0x400de000)
-    (wrong! should be .../3b1d.../lib/libgcc_s...)
-    ...
-
-
-* In libXt:
-
-/bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I.     -DXTHREADS -DXUSE_MTSAFE_API -I/nix/store/aadf0bd4a908da11d14f6538503b8408-libX11-6.2.1/include -I/nix/store/ba366e3b944ead64ec9b0490bb615874-xproto-6.6.1/include   -I./include/X11 -g -O2 -c -o ActionHook.lo `test -f 'ActionHook.c' || echo './'`ActionHook.c
-mkdir .libs
- gcc -DHAVE_CONFIG_H -I. -I. -I. -DXTHREADS -DXUSE_MTSAFE_API -I/nix/store/aadf0bd4a908da11d14f6538503b8408-libX11-6.2.1/include -I/nix/store/ba366e3b944ead64ec9b0490bb615874-xproto-6.6.1/include -I./include/X11 -g -O2 -c ActionHook.c  -fPIC -DPIC -o .libs/ActionHook.o
-In file included from IntrinsicI.h:55,
-                 from ActionHook.c:69:
-include/X11/IntrinsicP.h:54:27: X11/Intrinsic.h: No such file or directory
-
-
-* Then:
-
- gcc -DHAVE_CONFIG_H -I. -I. -I. -DXTHREADS -DXUSE_MTSAFE_API -I/nix/store/aadf0bd4a908da11d14f6538503b8408-libX11-6.2.1/include -I/nix/store/ba366e3b944ead64ec9b0490bb615874-xproto-6.6.1/include -I./include -I./include/X11 -g -O2 -c ActionHook.c  -fPIC -DPIC -o .libs/ActionHook.o
-In file included from IntrinsicI.h:55,
-                 from ActionHook.c:69:
-include/X11/IntrinsicP.h:202:25: X11/ObjectP.h: No such file or directory
-
-(moved to include/X11; should edit include/Makefile.am)
-
-
-* In gtksourceview-sharp: does the prefix patch cause problems (e.g.,
-  makefile.am says "mimeinfodir should be the same as the gnome
-  prefix")?
-
-
-* fgrep/egrep: these fail if grep is not in the $PATH.
-
-
-* teTeX: some programs (such as epstopdf) depend on /usr/bin/env, and
-  expect perl to be in the environment.
diff --git a/maintainers/docs/coding-conventions.txt b/maintainers/docs/coding-conventions.txt
deleted file mode 100644
index 2cff1c33d7ee5..0000000000000
--- a/maintainers/docs/coding-conventions.txt
+++ /dev/null
@@ -1,101 +0,0 @@
-Some conventions:
-
-* Directories / file names: lowercase, and use dashes between words,
-  no camel case.  I.e., all-packages.nix, not all allPackages.nix or
-  AllPackages.nix.
-
-* Don't use TABs.  Everybody has different TAB settings so it's asking
-  for trouble.
-
-* Use 2 spaces of indentation per indentation level in Nix
-  expressions, 4 spaces in shell scripts.  (Maybe 2 is too low, but
-  for consistency's sake it should be the same.  Certainly indentation
-  should be consistent within a single file.)
-
-* Use lowerCamelCase for variable names, not UpperCamelCase.
-
-* Function calls with attribute set arguments are written as
-
-    foo {
-      arg = ...;
-    }
-
-  not
-
-    foo
-    {
-      arg = ...;
-    }
-
-  Also fine is
-
-    foo { arg = ...; }
-
-  if it's a short call.
-
-* In attribute sets or lists that span multiple lines, the attribute
-  names or list elements should be aligned:
-
-    # A long list.
-    list = [
-      elem1
-      elem2
-      elem3
-    ];
-
-    # A long attribute set.
-    attrs = {
-      attr1 = short_expr;
-      attr2 =
-        if true then big_expr else big_expr;
-    };
-    
-* Short lists or attribute sets can be written on one line:
-    
-    # A short list.
-    list = [ elem1 elem2 elem3 ];
-
-    # A short set.
-    attrs = { x = 1280; y = 1024; };
-
-* Breaking in the middle of a function argument can give hard-to-read
-  code, like
-
-    someFunction { x = 1280;
-      y = 1024; } otherArg
-      yetAnotherArg
-
-  (especially if the argument is very large, spanning multiple lines).
-
-  Better:
-
-    someFunction
-      { x = 1280; y = 1024; }
-      otherArg
-      yetAnotherArg
-
-  or
-    
-    let res = { x = 1280; y = 1024; };
-    in someFunction res otherArg yetAnotherArg
-
-* The bodies of functions, asserts, and withs are not indented, so
-
-    assert system == "i686-linux";
-    stdenv.mkDerivation { ...
-
-  not
-
-    assert system == "i686-linux";
-      stdenv.mkDerivation { ...
-
-* Function formal arguments are written as:
-
-    {arg1, arg2, arg3}:
-
-  but if they don't fit on one line they're written as:
-
-    { arg1, arg2, arg3
-    , arg4, ...
-    , argN
-    }:
diff --git a/maintainers/docs/create-new-static-env b/maintainers/docs/create-new-static-env
deleted file mode 100644
index 32887e3c20b18..0000000000000
--- a/maintainers/docs/create-new-static-env
+++ /dev/null
@@ -1,31 +0,0 @@
-Creating a new static stdenv
-----------------------------
-
-When Nix is ported to a new (Linux) platform and you want to have a completely
-pure setup for the stdenv (for example for NixOS) it is necessary to rebuild
-the static tools.
-
-The challenge is that there is no Nix environment yet, for bootstrapping.
-The first task is to create all the tools that are necessary. For most tools
-there are ready made Nix expressions.
-
-
-  GCC
-
-There is an expression gcc-static-3.4. Depending on whether or not you already
-have an environment built with Nix (x86-linux: yes, rest: not yet) you should
-set the noSysDirs parameter in all-packages.nix. If there is an environment,
-leave it, but if the system is still impure (like most systems), set noSysDirs
-to false.
-
-  bash
-
-There is an expression for bash-static. Simply build it.
-
-  bzip2
-
-There is an expression for bzip2-static. Simply build it.
-
-  findutils
-
-There is an expression for findutils-static. Simply build it.
diff --git a/maintainers/docs/static-initial-env b/maintainers/docs/static-initial-env
deleted file mode 100644
index 8db23d6f852dc..0000000000000
--- a/maintainers/docs/static-initial-env
+++ /dev/null
@@ -1,35 +0,0 @@
-Upgrading the standard initial environment
-
-For Nix on i686-linux we make use of an environment of statically linked
-tools (see $nixpkgs/stdenv/linux). The first version of these tools were
-compiled outside of Nix, in an impure environment. They are used as some
-magical ingredient to make everything work. To keep these tools more in
-synchronization with the rest of nixpkgs and to make porting of nixpkgs
-to other platforms easier the static versions are now also built with Nix
-and nixpkgs.
-
-The tools can be found in nixpkgs in:
-
-- shells/bash-static
-- tools/networking/curl-diet
-- tools/archivers/gnutar-diet
-- tools/compression/gzip-diet
-- tools/compression/bzip2-static
-- tools/text/gnused-diet
-- tools/text/diffutils-diet
-- tools/text/gnupatch-diet
-- tools/misc/findutils-static
-
-and
-- development/compilers/gcc-static-3.4
-
-Most packages are compiled with dietlibc, an alternate C library, apart
-from bash and findutils, which are statically linked to glibc. The reason
-we chose dietlibc has various reasons. First of all, curl cannot be built
-statically with glibc. If we do, we get a static binary, but it cannot resolve
-hostnames to IP addresses. glibc dynamically loads functionality at runtime
-to do resolving. When linking with dietlibc this doesn't happen.
-
-The static tools are not used as part of the input hashing (see Eelco's
-PhD thesis, paragraph 5.4.1), so changing them does not change anything and
-will not force a massive rebuild.
diff --git a/maintainers/docs/todo.txt b/maintainers/docs/todo.txt
deleted file mode 100644
index adf1c0dff589f..0000000000000
--- a/maintainers/docs/todo.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-* Patch development/tools/misc/libtool not to search standard
-  directories for libraries (like setup.sh does now). [do we want
-  this?]
-
-* Inform freedesktop people that Xaw requires Xpm.
-
-* After building gcc, filter out references to /tmp/nix... in
-  .../lib/libsupc++.la and .../lib/libstdc++.la
-
-* Add gettext to glib propagatedBuildInputs?  Glib's `gi18n.h' doesn't
-  seem to like Glibc `libintl.h'; needs the gettext one instead.
-  [Move from libbonoboui]