summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/licenses.nix5
-rw-r--r--lib/maintainers.nix2
-rw-r--r--nixos/modules/config/users-groups.nix83
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/programs/freetds.nix61
-rw-r--r--nixos/modules/programs/shadow.nix4
-rw-r--r--nixos/modules/services/networking/dhcpcd.nix18
-rw-r--r--pkgs/desktops/gnome-3/3.10/misc/gitg/default.nix6
-rw-r--r--pkgs/desktops/gnome-3/3.10/misc/libgit2-glib/default.nix10
-rw-r--r--pkgs/desktops/gnome-3/3.12/misc/gitg/default.nix6
-rw-r--r--pkgs/desktops/gnome-3/3.12/misc/libgit2-glib/default.nix8
-rw-r--r--pkgs/development/compilers/emscripten-fastcomp/default.nix42
-rw-r--r--pkgs/development/compilers/emscripten/default.nix40
-rw-r--r--pkgs/development/interpreters/self/default.nix44
-rwxr-xr-xpkgs/development/interpreters/self/self18
-rw-r--r--pkgs/development/libraries/glibc/2.19/multi.nix31
-rw-r--r--pkgs/development/libraries/openmpi/default.nix15
-rw-r--r--pkgs/development/libraries/protobuf/default.nix6
-rw-r--r--pkgs/development/python-modules/h5py/default.nix43
-rw-r--r--pkgs/development/python-modules/mpi4py/default.nix45
-rw-r--r--pkgs/os-specific/linux/shadow/default.nix6
-rw-r--r--pkgs/tools/misc/flashrom/default.nix23
-rw-r--r--pkgs/tools/misc/hdf5/default.nix16
-rw-r--r--pkgs/tools/networking/spiped/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix48
-rw-r--r--pkgs/top-level/python-packages.nix32
26 files changed, 560 insertions, 57 deletions
diff --git a/lib/licenses.nix b/lib/licenses.nix
index 95098aba1f29..812592c74f27 100644
--- a/lib/licenses.nix
+++ b/lib/licenses.nix
@@ -215,6 +215,11 @@ rec {
     url       = "http://research.microsoft.com/en-us/projects/pex/msr-la.txt";
   };
 
+  ncsa = spdx {
+    shortName = "NCSA";
+    fullName  = "University of Illinois/NCSA Open Source License";
+  };
+
   ofl = spdx {
     shortName = "OFL-1.1";
     fullName = "SIL Open Font License 1.1";
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index d3d46fc6862e..3de82db1cd98 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -37,6 +37,7 @@
   coroa = "Jonas Hörsch <jonas@chaoflow.net>";
   cstrahan = "Charles Strahan <charles.c.strahan@gmail.com>";
   DamienCassou = "Damien Cassou <damien.cassou@gmail.com>";
+  doublec = "Chris Double <chris.double@double.co.nz>";
   ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>";
   edwtjo = "Edward Tjörnhammar <ed@cflags.cc>";
   eelco = "Eelco Dolstra <eelco.dolstra@logicblox.com>";
@@ -44,6 +45,7 @@
   ertes = "Ertugrul Söylemez <ertesx@gmx.de>";
   falsifian = "James Cook <james.cook@utoronto.ca>";
   flosse = "Markus Kohlhase <mail@markus-kohlhase.de>";
+  funfunctor = "Edward O'Callaghan <eocallaghan@alterapraxis.com>";
   fuuzetsu = "Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>";
   garbas = "Rok Garbas <rok@garbas.si>";
   goibhniu = "Cillian de Róiste <cillian.deroiste@gmail.com>";
diff --git a/nixos/modules/config/users-groups.nix b/nixos/modules/config/users-groups.nix
index 7783f13b14b1..f1ddd377ed01 100644
--- a/nixos/modules/config/users-groups.nix
+++ b/nixos/modules/config/users-groups.nix
@@ -100,6 +100,36 @@ let
         description = "The path to the user's shell.";
       };
 
+      subUidRanges = mkOption {
+        type = types.listOf types.optionSet;
+        default = [];
+        example = [
+          { startUid = 1000; count = 1; }
+          { startUid = 100001; count = 65534; }
+        ];
+        options = [ subordinateUidRange ];
+        description = ''
+          Subordinate user ids that user is allowed to use.
+          They are set into <filename>/etc/subuid</filename> and are used
+          by <literal>newuidmap</literal> for user namespaces.
+        '';
+      };
+
+      subGidRanges = mkOption {
+        type = types.listOf types.optionSet;
+        default = [];
+        example = [
+          { startGid = 100; count = 1; }
+          { startGid = 1001; count = 999; }
+        ];
+        options = [ subordinateGidRange ];
+        description = ''
+          Subordinate group ids that user is allowed to use.
+          They are set into <filename>/etc/subgid</filename> and are used
+          by <literal>newgidmap</literal> for user namespaces.
+        '';
+      };
+
       createHome = mkOption {
         type = types.bool;
         default = false;
@@ -211,6 +241,36 @@ let
 
   };
 
+  subordinateUidRange = {
+    startUid = mkOption {
+      type = types.int;
+      description = ''
+        Start of the range of subordinate user ids that user is
+        allowed to use.
+      '';
+    };
+    count = mkOption {
+      type = types.int;
+      default = 1;
+      description = ''Count of subordinate user ids'';
+    };
+  };
+
+  subordinateGidRange = {
+    startGid = mkOption {
+      type = types.int;
+      description = ''
+        Start of the range of subordinate group ids that user is
+        allowed to use.
+      '';
+    };
+    count = mkOption {
+      type = types.int;
+      default = 1;
+      description = ''Count of subordinate group ids'';
+    };
+  };
+
   getGroup = gname:
     let
       groups = mapAttrsToList (n: g: g) (
@@ -265,6 +325,20 @@ let
     ))
   );
 
+  mkSubuidEntry = user: concatStrings (
+    map (range: "${user.name}:${toString range.startUid}:${toString range.count}\n")
+        user.subUidRanges);
+
+  subuidFile = concatStrings (map mkSubuidEntry (
+    sortOn "uid" (attrValues cfg.extraUsers)));
+
+  mkSubgidEntry = user: concatStrings (
+    map (range: "${user.name}:${toString range.startGid}:${toString range.count}\n")
+        user.subGidRanges);
+
+  subgidFile = concatStrings (map mkSubgidEntry (
+    sortOn "uid" (attrValues cfg.extraUsers)));
+
   # If mutableUsers is true, this script adds all users/groups defined in
   # users.extra{Users,Groups} to /etc/{passwd,group} iff there isn't any
   # existing user/group with the same name in those files.
@@ -504,6 +578,15 @@ in {
     # for backwards compatibility
     system.activationScripts.groups = stringAfter [ "users" ] "";
 
+    environment.etc."subuid" = {
+      text = subuidFile;
+      mode = "0644";
+    };
+    environment.etc."subgid" = {
+      text = subgidFile;
+      mode = "0644";
+    };
+
     assertions = [
       { assertion = !cfg.enforceIdUniqueness || (uidsAreUnique && gidsAreUnique);
         message = "uids and gids must be unique!";
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index e2f2921b8701..77a14fd53863 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -61,6 +61,7 @@
   ./programs/ssmtp.nix
   ./programs/venus.nix
   ./programs/wvdial.nix
+  ./programs/freetds.nix
   ./programs/zsh/zsh.nix
   ./rename.nix
   ./security/apparmor.nix
diff --git a/nixos/modules/programs/freetds.nix b/nixos/modules/programs/freetds.nix
new file mode 100644
index 000000000000..398fd104363b
--- /dev/null
+++ b/nixos/modules/programs/freetds.nix
@@ -0,0 +1,61 @@
+# Global configuration for freetds environment.
+
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+  cfg = config.environment.freetds;
+
+in
+{
+  ###### interface
+
+  options = {
+
+    environment.freetds = mkOption {
+      type = types.attrsOf types.str;
+      default = {};
+      example = {
+        MYDATABASE = 
+          ''
+          host = 10.0.2.100
+          port = 1433
+          tds version = 7.2
+          '';
+      };
+      description = 
+        ''
+        Configure freetds database entries. Each attribute denotes
+        a section within freetds.conf, and the value (a string) is the config
+        content for that section. When at least one entry is configured
+        the global environment variables FREETDSCONF, FREETDS and SYBASE
+        will be configured to allow the programs that use freetds to find the
+        library and config.
+        '';
+
+    };
+
+  };
+
+  ###### implementation
+
+  config = mkIf (length (attrNames cfg) > 0) {
+
+    environment.variables.FREETDSCONF = "/etc/freetds.conf";
+    environment.variables.FREETDS = "/etc/freetds.conf";
+    environment.variables.SYBASE = "${pkgs.freetds}";
+
+    environment.etc."freetds.conf" = { text = 
+      (concatStrings (mapAttrsToList (name: value:
+        ''
+        [${name}]
+        ${value}
+        ''
+      ) cfg));
+    };
+
+  };
+
+}
diff --git a/nixos/modules/programs/shadow.nix b/nixos/modules/programs/shadow.nix
index 658b08b3d870..5a467e112c23 100644
--- a/nixos/modules/programs/shadow.nix
+++ b/nixos/modules/programs/shadow.nix
@@ -100,7 +100,9 @@ in
         chgpasswd = { rootOK = true; };
       };
 
-    security.setuidPrograms = [ "passwd" "chfn" "su" "newgrp" ];
+    security.setuidPrograms = [ "passwd" "chfn" "su" "newgrp"
+      "newuidmap" "newgidmap"  # new in shadow 4.2.x
+      ];
 
   };
 
diff --git a/nixos/modules/services/networking/dhcpcd.nix b/nixos/modules/services/networking/dhcpcd.nix
index 866707c3a913..89aa9bdb6b68 100644
--- a/nixos/modules/services/networking/dhcpcd.nix
+++ b/nixos/modules/services/networking/dhcpcd.nix
@@ -6,6 +6,8 @@ let
 
   dhcpcd = if !config.boot.isContainer then pkgs.dhcpcd else pkgs.dhcpcd.override { udev = null; };
 
+  cfg = config.networking.dhcpcd;
+
   # Don't start dhcpcd on explicitly configured interfaces or on
   # interfaces that are part of a bridge, bond or sit device.
   ignoredInterfaces =
@@ -38,7 +40,10 @@ let
       # (Xen) and virbr* and vnet* (libvirt).
       denyinterfaces ${toString ignoredInterfaces} lo peth* vif* tap* tun* virbr* vnet* vboxnet* sit*
 
-      ${config.networking.dhcpcd.extraConfig}
+      # Use the list of allowed interfaces if specified
+      ${optionalString (cfg.allowInterfaces != null) "allowinterfaces ${toString cfg.allowInterfaces}"}
+
+      ${cfg.extraConfig}
     '';
 
   # Hook for emitting ip-up/ip-down events.
@@ -81,6 +86,17 @@ in
       '';
     };
 
+    networking.dhcpcd.allowInterfaces = mkOption {
+      type = types.nullOr (types.listOf types.str);
+      default = null;
+      description = ''
+         Enable the DHCP client for any interface whose name matches
+         any of the shell glob patterns in this list. Any interface not
+         explicitly matched by this pattern will be denied. This pattern only
+         applies when non-null.
+      '';
+    };
+
     networking.dhcpcd.extraConfig = mkOption {
       type = types.lines;
       default = "";
diff --git a/pkgs/desktops/gnome-3/3.10/misc/gitg/default.nix b/pkgs/desktops/gnome-3/3.10/misc/gitg/default.nix
index 7ca35a8255f9..401d5cf2f36a 100644
--- a/pkgs/desktops/gnome-3/3.10/misc/gitg/default.nix
+++ b/pkgs/desktops/gnome-3/3.10/misc/gitg/default.nix
@@ -6,11 +6,11 @@
 # use packaged gnome3.gnome_icon_theme_symbolic 
 
 stdenv.mkDerivation rec {
-  name = "gitg-0.3.2";
+  name = "gitg-3.13.91";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/gitg/0.3/${name}.tar.xz";
-    sha256 = "03vc59d1r3326piqdph6qjqnc40chm1lpg52lpf8466ddjs0x8vp";
+    url = "mirror://gnome/sources/gitg/3.13/${name}.tar.xz";
+    sha256 = "1c2016grvgg5f3l5xkracz85rblsc1a4brzr6vgn6kh2h494rv37";
   };
 
   preCheck = ''
diff --git a/pkgs/desktops/gnome-3/3.10/misc/libgit2-glib/default.nix b/pkgs/desktops/gnome-3/3.10/misc/libgit2-glib/default.nix
index 17c3b4fa0a8c..82e2b5855094 100644
--- a/pkgs/desktops/gnome-3/3.10/misc/libgit2-glib/default.nix
+++ b/pkgs/desktops/gnome-3/3.10/misc/libgit2-glib/default.nix
@@ -1,18 +1,20 @@
-{ stdenv, fetchurl, gnome3, libtool, pkgconfig
+{ stdenv, fetchurl, gnome3, libtool, pkgconfig, vala
 , gtk_doc, gobjectIntrospection, libgit2, glib }:
 
 stdenv.mkDerivation rec {
   name = "libgit2-glib-${version}";
-  version = "0.0.10";
+  version = "0.0.20";
 
   src = fetchurl {
     url = "https://github.com/GNOME/libgit2-glib/archive/v${version}.tar.gz";
-    sha256 = "0zn3k85jw6yks8s5ca8dyh9mwh4if1lni9gz9bd5lqlpa803ixxs";
+    sha256 = "1s2hj0ji73ishniqvr6mx90l1ji5jjwwrwhp91i87fxk0d3sry5x";
   };
+  
+  cmakeFlags = "-DTHREADSAFE=ON";
 
   configureScript = "sh ./autogen.sh";
 
-  buildInputs = [ gnome3.gnome_common libtool pkgconfig
+  buildInputs = [ gnome3.gnome_common libtool pkgconfig vala
                   gtk_doc gobjectIntrospection libgit2 glib ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/desktops/gnome-3/3.12/misc/gitg/default.nix b/pkgs/desktops/gnome-3/3.12/misc/gitg/default.nix
index 7ca35a8255f9..401d5cf2f36a 100644
--- a/pkgs/desktops/gnome-3/3.12/misc/gitg/default.nix
+++ b/pkgs/desktops/gnome-3/3.12/misc/gitg/default.nix
@@ -6,11 +6,11 @@
 # use packaged gnome3.gnome_icon_theme_symbolic 
 
 stdenv.mkDerivation rec {
-  name = "gitg-0.3.2";
+  name = "gitg-3.13.91";
 
   src = fetchurl {
-    url = "mirror://gnome/sources/gitg/0.3/${name}.tar.xz";
-    sha256 = "03vc59d1r3326piqdph6qjqnc40chm1lpg52lpf8466ddjs0x8vp";
+    url = "mirror://gnome/sources/gitg/3.13/${name}.tar.xz";
+    sha256 = "1c2016grvgg5f3l5xkracz85rblsc1a4brzr6vgn6kh2h494rv37";
   };
 
   preCheck = ''
diff --git a/pkgs/desktops/gnome-3/3.12/misc/libgit2-glib/default.nix b/pkgs/desktops/gnome-3/3.12/misc/libgit2-glib/default.nix
index 17c3b4fa0a8c..94776c90cf99 100644
--- a/pkgs/desktops/gnome-3/3.12/misc/libgit2-glib/default.nix
+++ b/pkgs/desktops/gnome-3/3.12/misc/libgit2-glib/default.nix
@@ -1,18 +1,18 @@
-{ stdenv, fetchurl, gnome3, libtool, pkgconfig
+{ stdenv, fetchurl, gnome3, libtool, pkgconfig, vala
 , gtk_doc, gobjectIntrospection, libgit2, glib }:
 
 stdenv.mkDerivation rec {
   name = "libgit2-glib-${version}";
-  version = "0.0.10";
+  version = "0.0.20";
 
   src = fetchurl {
     url = "https://github.com/GNOME/libgit2-glib/archive/v${version}.tar.gz";
-    sha256 = "0zn3k85jw6yks8s5ca8dyh9mwh4if1lni9gz9bd5lqlpa803ixxs";
+    sha256 = "1s2hj0ji73ishniqvr6mx90l1ji5jjwwrwhp91i87fxk0d3sry5x";
   };
 
   configureScript = "sh ./autogen.sh";
 
-  buildInputs = [ gnome3.gnome_common libtool pkgconfig
+  buildInputs = [ gnome3.gnome_common libtool pkgconfig vala
                   gtk_doc gobjectIntrospection libgit2 glib ];
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/compilers/emscripten-fastcomp/default.nix b/pkgs/development/compilers/emscripten-fastcomp/default.nix
new file mode 100644
index 000000000000..3eb9aef528c0
--- /dev/null
+++ b/pkgs/development/compilers/emscripten-fastcomp/default.nix
@@ -0,0 +1,42 @@
+{ stdenv, fetchgit, python }:
+
+let
+  tag = "1.21.0";
+in
+
+stdenv.mkDerivation rec {
+  name = "emscripten-fastcomp-${tag}";
+
+  srcFC = fetchgit {
+    url = git://github.com/kripken/emscripten-fastcomp;
+    rev = "refs/tags/${tag}";
+    sha256 = "0mcxzg2cfg0s1vfm3bh1ar4xsddb6xkv1dsdbgnpx38lbj1mvfs1";
+  };
+
+  srcFL = fetchgit {
+    url = git://github.com/kripken/emscripten-fastcomp-clang;
+    rev = "refs/tags/${tag}";
+    sha256 = "0s2jcn36d236cfpryjpgaazjp3cg83d0h78g6kk1j6vdppv3vgnp";
+  };
+
+  buildInputs = [ python ];
+  buildCommand = ''
+    cp -as ${srcFC} $TMPDIR/src
+    chmod +w $TMPDIR/src/tools
+    cp -as ${srcFL} $TMPDIR/src/tools/clang
+
+    chmod +w $TMPDIR/src
+    mkdir $TMPDIR/src/build
+    cd $TMPDIR/src/build
+
+    ../configure --enable-optimized --disable-assertions --enable-targets=host,js
+    make
+    cp -a Release/bin $out
+  '';
+  meta = with stdenv.lib; {
+    homepage = https://github.com/kripken/emscripten-fastcomp;
+    description = "emscripten llvm";
+    maintainers = with maintainers; [ bosu ];
+    license = "University of Illinois/NCSA Open Source License";
+  };
+}
diff --git a/pkgs/development/compilers/emscripten/default.nix b/pkgs/development/compilers/emscripten/default.nix
new file mode 100644
index 000000000000..43f256b58b04
--- /dev/null
+++ b/pkgs/development/compilers/emscripten/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchgit, emscriptenfastcomp, python, nodejs, closurecompiler, jre }:
+
+let
+  tag = "1.21.0";
+in
+
+stdenv.mkDerivation rec {
+  name = "emscripten-${tag}";
+
+  src = fetchgit {
+    url = git://github.com/kripken/emscripten;
+    rev = "refs/tags/${tag}";
+    sha256 = "0y17ab4nhd3521b50sv2i2667w0rlcnmlkpkgw5j3fsh8awxgf32";
+  };
+
+  buildCommand = ''
+    mkdir $out
+    cp -a $src $out/bin
+    chmod -R +w $out/bin
+    grep -rl '^#!/usr.*python' $out/bin | xargs sed -i -s 's@^#!/usr.*python.*@#!${python}/bin/python@'
+    sed -i -e "s,EM_CONFIG = '~/.emscripten',EM_CONFIG = '$out/config'," $out/bin/tools/shared.py
+    sed -i -e 's,^.*did not see a source tree above the LLVM.*$,      return True,' $out/bin/tools/shared.py
+    sed -i -e 's,def check_sanity(force=False):,def check_sanity(force=False):\n  return,' $out/bin/tools/shared.py
+
+    echo "EMSCRIPTEN_ROOT = '$out/bin'" > $out/config
+    echo "LLVM_ROOT = '${emscriptenfastcomp}'" >> $out/config
+    echo "PYTHON = '${python}/bin/python'" >> $out/config
+    echo "NODE_JS = '${nodejs}/bin/node'" >> $out/config
+    echo "JS_ENGINES = [NODE_JS]" >> $out/config
+    echo "COMPILER_ENGINE = NODE_JS" >> $out/config
+    echo "CLOSURE_COMPILER = '${closurecompiler}/bin/closure-compiler'" >> $out/config
+    echo "JAVA = '${jre}/bin/java'" >> $out/config
+  '';
+  meta = with stdenv.lib; {
+    homepage = https://github.com/kripken/emscripten;
+    description = "An LLVM-to-JavaScript Compiler";
+    maintainers = with maintainers; [ bosu ];
+    license = with licenses; ncsa;
+  };
+}
diff --git a/pkgs/development/interpreters/self/default.nix b/pkgs/development/interpreters/self/default.nix
new file mode 100644
index 000000000000..98e1edee3879
--- /dev/null
+++ b/pkgs/development/interpreters/self/default.nix
@@ -0,0 +1,44 @@
+{ fetchurl, fetchgit, stdenv, xlibs, gcc44, makeWrapper, ncurses, cmake }:
+
+stdenv.mkDerivation rec {
+  # The Self wrapper stores source in $XDG_DATA_HOME/self or ~/.local/share/self 
+  # so that it can be written to when using the Self transposer. Running 'Self'
+  # after installation runs without an image. You can then build a Self image with:
+  #   $ cd ~/.local/share/self/objects
+  #   $ Self 
+  #   > 'worldBuilder.self' _RunScript
+  #
+  # This image can later be started with:
+  #   $ Self -s myimage.snap
+  #
+  version = "4.5.0";
+  name = "self-${version}";
+
+  src = fetchgit {
+    url    = "https://github.com/russellallen/self";
+    rev    = "d16bcaad3c5092dae81ad0b16d503f2a53b8ef86";
+    sha256 = "966025b71542e44fc830b951f404f5721ad410ed24f7236fd0cd820ea0fc5731";
+  };
+
+  # gcc 4.6 and above causes crashes on Self startup but gcc 4.4 works.
+  buildInputs = [ gcc44 ncurses xlibs.libX11 xlibs.libXext makeWrapper cmake ];
+
+  selfWrapper = ./self;
+
+  installPhase = ''
+    mkdir -p "$out"/bin
+    cp ./vm/Self "$out"/bin/Self.wrapped
+    mkdir -p "$out"/share/self
+    cp -r ../objects "$out"/share/self/
+    makeWrapper $selfWrapper $out/bin/Self \
+      --set SELF_ROOT "$out"
+  '';
+
+  meta = {
+    description = "A prototype-based dynamic object-oriented programming language, environment, and virtual machine";
+    homepage = "http://selflanguage.org/";
+    license = stdenv.lib.licenses.bsd3;
+    maintainer = [ stdenv.lib.maintainers.doublec ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/pkgs/development/interpreters/self/self b/pkgs/development/interpreters/self/self
new file mode 100755
index 000000000000..d504682086b0
--- /dev/null
+++ b/pkgs/development/interpreters/self/self
@@ -0,0 +1,18 @@
+#! /usr/bin/env bash
+
+export SELF_HOME="$HOME/.local/share/self"
+if [ -n "$XDG_DATA_HOME" ]
+  then export SELF_HOME="$XDG_DATA_HOME/self"
+fi
+
+if [ ! -d $SELF_HOME ]; then
+  mkdir -p $SELF_HOME
+fi
+
+if [ ! -d $SELF_HOME/objects ]; then
+  mkdir -p $SELF_HOME/objects
+  cp -r $SELF_ROOT/share/self/objects/* $SELF_HOME/objects
+  chmod -R +w $SELF_HOME/objects
+fi
+
+exec $SELF_ROOT/bin/Self.wrapped "$@"
diff --git a/pkgs/development/libraries/glibc/2.19/multi.nix b/pkgs/development/libraries/glibc/2.19/multi.nix
new file mode 100644
index 000000000000..ad4a34152b65
--- /dev/null
+++ b/pkgs/development/libraries/glibc/2.19/multi.nix
@@ -0,0 +1,31 @@
+{ runCommand, glibc, glibc32
+}:
+
+runCommand "${glibc.name}-multi"
+  { inherit glibc32;
+   glibc64 = glibc;
+  }
+  ''
+    mkdir -p $out
+    ln -s $glibc64/* $out/
+
+    rm $out/lib $out/lib64
+    mkdir -p $out/lib
+    ln -s $glibc64/lib/* $out/lib
+    ln -s $glibc32/lib $out/lib/32
+    ln -s lib $out/lib64
+
+    # fixing ldd RLTDLIST
+    rm $out/bin
+    cp -rs $glibc64/bin $out
+    chmod u+w $out/bin
+    rm $out/bin/ldd
+    sed -e "s|^RTLDLIST=.*$|RTLDLIST=\"$out/lib/ld-2.19.so $out/lib/32/ld-linux.so.2\"|g" \
+        $glibc64/bin/ldd > $out/bin/ldd
+    chmod 555 $out/bin/ldd
+
+    rm $out/include
+    cp -rs $glibc32/include $out
+    chmod -R u+w $out/include
+    cp -rsf $glibc64/include $out
+  ''
diff --git a/pkgs/development/libraries/openmpi/default.nix b/pkgs/development/libraries/openmpi/default.nix
index 678a439fe0ac..15160d3afc49 100644
--- a/pkgs/development/libraries/openmpi/default.nix
+++ b/pkgs/development/libraries/openmpi/default.nix
@@ -1,4 +1,13 @@
-{stdenv, fetchurl, gfortran}:
+{stdenv, fetchurl, gfortran
+
+# Enable the Sun Grid Engine bindings
+, enableSGE ? false
+
+# Pass PATH/LD_LIBRARY_PATH to point to current mpirun by default
+, enablePrefix ? false
+}:
+
+with stdenv.lib;
 
 stdenv.mkDerivation {
   name = "openmpi-1.6.5";
@@ -7,6 +16,10 @@ stdenv.mkDerivation {
     sha256 = "11gws4d3z7934zna2r7m1f80iay2ha17kp42mkh39wjykfwbldzy";
   };
   buildInputs = [ gfortran ];
+  configureFlags = []
+    ++ optional enableSGE "--with-sge"
+    ++ optional enablePrefix "--enable-mpirun-prefix-by-default"
+    ;
   meta = {
     homePage = http://www.open-mpi.org/;
     description = "Open source MPI-2 implementation";
diff --git a/pkgs/development/libraries/protobuf/default.nix b/pkgs/development/libraries/protobuf/default.nix
index bba8481780a5..3452335decdc 100644
--- a/pkgs/development/libraries/protobuf/default.nix
+++ b/pkgs/development/libraries/protobuf/default.nix
@@ -1,11 +1,11 @@
 { fetchurl, stdenv, zlib }:
 
 stdenv.mkDerivation rec {
-  name = "protobuf-2.5.0";
+  name = "protobuf-2.6.0";
 
   src = fetchurl {
-    url = "http://protobuf.googlecode.com/files/${name}.tar.bz2";
-    sha256 = "0xxn9gxhvsgzz2sgmihzf6pf75clr05mqj6218camwrwajpcbgqk";
+    url = "http://protobuf.googlecode.com/svn-history/r579/rc/protobuf-2.6.0.tar.bz2";
+    sha256 = "0krfkxc85vfznqwbh59qlhp7ld81al9ss35av0gfbg74i0rvjids";
   };
 
   buildInputs = [ zlib ];
diff --git a/pkgs/development/python-modules/h5py/default.nix b/pkgs/development/python-modules/h5py/default.nix
new file mode 100644
index 000000000000..9ab68ac4cd2b
--- /dev/null
+++ b/pkgs/development/python-modules/h5py/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchurl, python, buildPythonPackage
+, numpy, hdf5, cython
+, mpiSupport ? false, mpi4py ? null, mpi ? null }:
+
+assert mpiSupport == hdf5.mpiSupport;
+assert mpiSupport -> mpi != null
+  && mpi4py != null
+  && mpi == mpi4py.mpi
+  && mpi == hdf5.mpi
+  ;
+
+with stdenv.lib;
+
+buildPythonPackage rec {
+  name = "h5py-2.3.1";
+
+  src = fetchurl {
+    url = "https://pypi.python.org/packages/source/h/h5py/${name}.tar.gz";
+    md5 = "8f32f96d653e904d20f9f910c6d9dd91";
+  };
+
+  setupPyBuildFlags = [ "--hdf5=${hdf5}" ]
+    ++ optional mpiSupport "--mpi"
+    ;
+  setupPyInstallFlags = setupPyBuildFlags;
+
+  preBuild = if mpiSupport then "export CC=${mpi}/bin/mpicc" else "";
+
+  buildInputs = [ hdf5 cython ]
+    ++ optional mpiSupport mpi
+    ;
+  propagatedBuildInputs = [ numpy ]
+    ++ optional mpiSupport mpi4py
+    ;
+
+  meta = {
+    description = "
+      The h5py package is a Pythonic interface to the HDF5 binary data format.
+    ";
+    homepage = "http://www.h5py.org/";
+    license = stdenv.lib.licenses.bsd2;
+  };
+}
diff --git a/pkgs/development/python-modules/mpi4py/default.nix b/pkgs/development/python-modules/mpi4py/default.nix
new file mode 100644
index 000000000000..74d46def9074
--- /dev/null
+++ b/pkgs/development/python-modules/mpi4py/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, python, buildPythonPackage, mpi, openssh }:
+
+buildPythonPackage rec {
+  name = "mpi4py-1.3.1";
+
+  src = fetchurl {
+    url = "https://bitbucket.org/mpi4py/mpi4py/downloads/${name}.tar.gz";
+    sha256 = "e7bd2044aaac5a6ea87a87b2ecc73b310bb6efe5026031e33067ea3c2efc3507";
+  };
+
+  passthru = {
+    inherit mpi;
+  };
+
+  configurePhase = "";
+
+  installPhase = ''
+    mkdir -p "$out/lib/${python.libPrefix}/site-packages"
+    export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+
+    ${python}/bin/${python.executable} setup.py install \
+      --install-lib=$out/lib/${python.libPrefix}/site-packages \
+      --prefix="$out"
+
+    # --install-lib:
+    # sometimes packages specify where files should be installed outside the usual
+    # python lib prefix, we override that back so all infrastructure (setup hooks)
+    # work as expected
+  '';
+
+  setupPyBuildFlags = ["--mpicc=${mpi}/bin/mpicc"];
+
+  buildInputs = [ mpi ];
+  # Requires openssh for tests. Tests of dependent packages will also fail,
+  # if openssh is not present. E.g. h5py with mpi support.
+  propagatedBuildInputs = [ openssh ];
+
+  meta = {
+    description = "
+      Provides Python bindings for the Message Passing Interface standard.
+    ";
+    homepage = "http://code.google.com/p/mpi4py/";
+    license = stdenv.lib.licenses.bsd3;
+  };
+}
diff --git a/pkgs/os-specific/linux/shadow/default.nix b/pkgs/os-specific/linux/shadow/default.nix
index b52801cacff7..f928dc8e657c 100644
--- a/pkgs/os-specific/linux/shadow/default.nix
+++ b/pkgs/os-specific/linux/shadow/default.nix
@@ -15,11 +15,11 @@ let
 in
 
 stdenv.mkDerivation rec {
-  name = "shadow-4.1.5.1";
+  name = "shadow-4.2.1";
 
   src = fetchurl {
-    url = "http://pkg-shadow.alioth.debian.org/releases/${name}.tar.bz2";
-    sha256 = "1yvqx57vzih0jdy3grir8vfbkxp0cl0myql37bnmi2yn90vk6cma";
+    url = "http://pkg-shadow.alioth.debian.org/releases/${name}.tar.xz";
+    sha256 = "0h9x1zdbq0pqmygmc1x459jraiqw4gqz8849v268crk78z8r621v";
   };
 
   buildInputs = stdenv.lib.optional (pam != null && stdenv.isLinux) pam;
diff --git a/pkgs/tools/misc/flashrom/default.nix b/pkgs/tools/misc/flashrom/default.nix
new file mode 100644
index 000000000000..c4e74359b15b
--- /dev/null
+++ b/pkgs/tools/misc/flashrom/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, pkgconfig, libftdi, pciutils }:
+
+let version = "0.9.7"; in
+stdenv.mkDerivation rec {
+  name = "flashrom-${version}";
+
+  src = fetchurl {
+    url = "http://download.flashrom.org/releases/${name}.tar.bz2";
+    sha256 = "5a55212d00791981a9a1cb0cdca9d9e58bea6d399864251e7b410b4d3d6137e9";
+  };
+
+  buildInputs = [ pkgconfig libftdi pciutils ];
+
+  makeFlags = ["PREFIX=$out"];
+
+  meta = {
+    homepage = "http://www.flashrom.org";
+    description = "Utility for reading, writing, erasing and verifying flash ROM chips";
+    license = "GPLv2";
+    maintainers = [ stdenv.lib.maintainers.funfunctor ];
+    platforms = with stdenv.lib.platforms; linux;
+  };
+}
diff --git a/pkgs/tools/misc/hdf5/default.nix b/pkgs/tools/misc/hdf5/default.nix
index a7d03d1335f0..5cdc468c2a5a 100644
--- a/pkgs/tools/misc/hdf5/default.nix
+++ b/pkgs/tools/misc/hdf5/default.nix
@@ -3,6 +3,8 @@
 , fetchurl
 , zlib ? null
 , szip ? null
+, mpi ? null
+, enableShared ? true
 }:
 stdenv.mkDerivation rec {
   version = "1.8.13";
@@ -12,11 +14,23 @@ stdenv.mkDerivation rec {
     sha256 = "1h9qdl321gzm3ihdhlijbl9sh9qcdrw94j7izg64yfqhxj7b7xl2";  			
   };
 
+  passthru = {
+    mpiSupport = (mpi != null);
+    inherit mpi;
+  };
+
   buildInputs = []
     ++ stdenv.lib.optional (zlib != null) zlib
     ++ stdenv.lib.optional (szip != null) szip;
 
-  configureFlags = if szip != null then "--with-szlib=${szip}" else "";
+  propagatedBuildInputs = []
+    ++ stdenv.lib.optional (mpi != null) mpi;
+
+  configureFlags = "
+    ${if szip != null then "--with-szlib=${szip}" else ""}
+    ${if mpi != null then "--enable-parallel" else ""}
+    ${if enableShared then "--enable-shared" else ""}
+  ";
   
   patches = [./bin-mv.patch];
   
diff --git a/pkgs/tools/networking/spiped/default.nix b/pkgs/tools/networking/spiped/default.nix
index ac2736ffb19e..f854b92b87e5 100644
--- a/pkgs/tools/networking/spiped/default.nix
+++ b/pkgs/tools/networking/spiped/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name    = "spiped-${version}";
-  version = "1.3.1";
+  version = "1.4.0";
 
   src = fetchurl {
     url    = "http://www.tarsnap.com/spiped/${name}.tgz";
-    sha256 = "1viglk61v1v2ga1n31r0h8rvib5gy2h02lhhbbnqh2s6ps1sjn4a";
+    sha256 = "0pyg1llnqgfx7n7mi3dq4ra9xg3vkxlf01z5jzn7ncq5d6ii7ynq";
   };
 
   buildInputs = [ openssl ];
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 3d2350b661e5..c07a8994f3ef 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -965,6 +965,10 @@ let
 
   edk2 = callPackage ../development/compilers/edk2 { };
 
+  emscripten = callPackage ../development/compilers/emscripten { };
+
+  emscriptenfastcomp = callPackage ../development/compilers/emscripten-fastcomp { };
+
   efibootmgr = callPackage ../tools/system/efibootmgr { };
 
   efivar = callPackage ../tools/system/efivar { };
@@ -1045,6 +1049,8 @@ let
     platformTools = androidenv.platformTools;
   };
 
+  flashrom = callPackage ../tools/misc/flashrom { };
+
   flpsed = callPackage ../applications/editors/flpsed { };
 
   flvstreamer = callPackage ../tools/networking/flvstreamer { };
@@ -1282,6 +1288,12 @@ let
 
   hdf5 = callPackage ../tools/misc/hdf5 {
     szip = null;
+    mpi = null;
+  };
+
+  hdf5-mpi = hdf5.override {
+    szip = null;
+    mpi = pkgs.openmpi;
   };
 
   heimdall = callPackage ../tools/misc/heimdall { };
@@ -3705,6 +3717,8 @@ let
 
   scheme48 = callPackage ../development/interpreters/scheme48 { };
 
+  self = callPackage_i686 ../development/interpreters/self { };
+
   spark = callPackage ../applications/networking/cluster/spark { };
 
   spidermonkey = callPackage ../development/interpreters/spidermonkey { };
@@ -4727,36 +4741,10 @@ let
 
   glibcInfo = callPackage ../development/libraries/glibc/2.19/info.nix { };
 
-  glibc_multi =
-    runCommand "${glibc.name}-multi"
-      { glibc64 = glibc;
-        glibc32 = (import ./all-packages.nix {system = "i686-linux";}).glibc;
-      }
-      ''
-        mkdir -p $out
-        ln -s $glibc64/* $out/
-
-        rm $out/lib $out/lib64
-        mkdir -p $out/lib
-        ln -s $glibc64/lib/* $out/lib
-        ln -s $glibc32/lib $out/lib/32
-        ln -s lib $out/lib64
-
-        # fixing ldd RLTDLIST
-        rm $out/bin
-        cp -rs $glibc64/bin $out
-        chmod u+w $out/bin
-        rm $out/bin/ldd
-        sed -e "s|^RTLDLIST=.*$|RTLDLIST=\"$out/lib/ld-2.19.so $out/lib/32/ld-linux.so.2\"|g" \
-            $glibc64/bin/ldd > $out/bin/ldd
-        chmod 555 $out/bin/ldd
-
-        rm $out/include
-        cp -rs $glibc32/include $out
-        chmod -R u+w $out/include
-        cp -rsf $glibc64/include $out
-      '' # */
-      ;
+  glibc_multi = callPackage ../development/libraries/glibc/2.19/multi.nix {
+    inherit glibc;
+    glibc32 = (import ./all-packages.nix {system = "i686-linux";}).glibc;
+  };
 
   glm = callPackage ../development/libraries/glm { };
 
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 8374e29162a9..533f59b78d81 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -90,6 +90,19 @@ rec {
     '';
   };
 
+  h5py = callPackage ../development/python-modules/h5py {
+    inherit (pkgs) stdenv fetchurl;
+    inherit python buildPythonPackage cython numpy;
+    hdf5 = pkgs.hdf5.override { mpi = null; };
+  };
+
+  h5py-mpi = h5py.override {
+    mpiSupport = true;
+    mpi = pkgs.openmpi;
+    hdf5 = pkgs.hdf5.override { mpi = pkgs.openmpi; enableShared = true; };
+    inherit mpi4py;
+  };
+
   ipython = import ../shells/ipython {
     inherit (pkgs) stdenv fetchurl sip pyqt4;
     inherit buildPythonPackage pythonPackages;
@@ -106,6 +119,12 @@ rec {
     pylabQtSupport = false;
   });
 
+  mpi4py = callPackage ../development/python-modules/mpi4py {
+    inherit (pkgs) stdenv fetchurl openssh;
+    inherit python buildPythonPackage;
+    mpi = pkgs.openmpi;
+  };
+
   nixpart = callPackage ../tools/filesystems/nixpart { };
 
   # This is used for NixOps to make sure we won't break it with the next major
@@ -2152,6 +2171,7 @@ rec {
   googlecl = buildPythonPackage rec {
     version = "0.9.14";
     name    = "googlecl-${version}";
+    disabled = isPy3k;
 
     src = fetchurl {
       url    = "https://googlecl.googlecode.com/files/${name}.tar.gz";
@@ -3764,6 +3784,7 @@ rec {
 
    google_apputils = buildPythonPackage rec {
     name = "google-apputils-0.4.0";
+    disabled = isPy3k;
 
     src = fetchurl {
       url = http://pypi.python.org/packages/source/g/google-apputils/google-apputils-0.4.0.tar.gz;
@@ -3917,6 +3938,7 @@ rec {
 
   http_signature = buildPythonPackage (rec {
     name = "http_signature-0.1.4";
+    disabled = isPy3k;
 
     src = fetchurl {
       url = "http://pypi.python.org/packages/source/h/http_signature/${name}.tar.gz";
@@ -4797,6 +4819,7 @@ rec {
 
   muttils = buildPythonPackage (rec {
     name = "muttils-1.3";
+    disabled = isPy3k;
 
     src = fetchurl {
       url = http://www.blacktrash.org/hg/muttils/archive/8bb26094df06.tar.bz2;
@@ -4859,6 +4882,7 @@ rec {
 
   namebench = buildPythonPackage (rec {
     name = "namebench-1.0.5";
+    disabled = isPy3k;
 
     src = fetchurl {
       url = "http://namebench.googlecode.com/files/${name}.tgz";
@@ -5073,6 +5097,7 @@ rec {
 
   nose-cprof = buildPythonPackage rec {
     name = "nose-cprof-0.1-0";
+    disabled = isPy3k;
 
     src = fetchurl {
       url = "https://pypi.python.org/packages/source/n/nose-cprof/${name}.tar.gz";
@@ -5812,8 +5837,9 @@ rec {
   protobuf = buildPythonPackage rec {
     inherit (pkgs.protobuf) name src;
 
-    propagatedBuildInputs = [ pkgs.protobuf setuptools ];
+    propagatedBuildInputs = [ pkgs.protobuf google_apputils  ];
     sourceRoot = "${name}/python";
+    
 
     meta = {
       description = "Protocol Buffers are Google's data interchange format.";
@@ -6150,6 +6176,8 @@ rec {
     };
 
     buildInputs = [ unittest2 ];
+    
+    doCheck = !isPyPy;
 
     meta = {
       homepage = "https://launchpad.net/pyflakes";
@@ -8206,6 +8234,7 @@ rec {
 
   taskcoach = buildPythonPackage rec {
     name = "TaskCoach-1.3.22";
+    disabled = isPy3k;
 
     src = fetchurl {
       url = "mirror://sourceforge/taskcoach/${name}.tar.gz";
@@ -8347,6 +8376,7 @@ rec {
 
   smmap = buildPythonPackage rec {
     name = "smmap-0.8.2";
+    disabled = isPy3k;  # next release will have py3k support
     meta.maintainers = [ stdenv.lib.maintainers.mornfall ];
 
     src = fetchurl {