diff --git a/lib/customisation.nix b/lib/customisation.nix
index 91a25055df29..eaec46276b2b 100644
--- a/lib/customisation.nix
+++ b/lib/customisation.nix
@@ -1,6 +1,8 @@
 let
+
   lib = import ./default.nix;
   inherit (builtins) attrNames isFunction;
+
 in
 
 rec {
@@ -49,10 +51,6 @@ rec {
        else { }));
 
 
-  # usage: (you can use override multiple times)
-  # let d = makeOverridable stdenv.mkDerivation { name = ..; buildInputs; }
-  #     noBuildInputs = d.override { buildInputs = []; }
-  #     additionalBuildInputs = d.override ( args : args // { buildInputs = args.buildInputs ++ [ additional ]; } )
   makeOverridable = f: origArgs:
     let
       ff = f origArgs;
@@ -60,24 +58,16 @@ rec {
     in
       if builtins.isAttrs ff then (ff //
         { override = newArgs: makeOverridable f (overrideWith newArgs);
-          deepOverride = newArgs:
-            makeOverridable f (lib.overrideExisting (lib.mapAttrs (deepOverrider newArgs) origArgs) newArgs);
           overrideDerivation = fdrv:
             makeOverridable (args: overrideDerivation (f args) fdrv) origArgs;
         })
       else if builtins.isFunction ff then
         { override = newArgs: makeOverridable f (overrideWith newArgs);
           __functor = self: ff;
-          deepOverride = throw "deepOverride not yet supported for functors";
           overrideDerivation = throw "overrideDerivation not yet supported for functors";
         }
       else ff;
 
-  deepOverrider = newArgs: name: x: if builtins.isAttrs x then (
-    if x ? deepOverride then (x.deepOverride newArgs) else
-    if x ? override then (x.override newArgs) else
-    x) else x;
-
 
   /* Call the package function in the file `fn' with the required
     arguments automatically.  The function is called with the
@@ -102,12 +92,28 @@ rec {
   */
   callPackageWith = autoArgs: fn: args:
     let
-      f    = if builtins.isFunction fn then fn else import fn;
+      f = if builtins.isFunction fn then fn else import fn;
       auto = builtins.intersectAttrs (builtins.functionArgs f) autoArgs;
     in makeOverridable f (auto // args);
 
 
-  /* Add attributes to each output of a derivation without changing the derivation itself */
+  /* Like callPackage, but for a function that returns an attribute
+     set of derivations. The override function is added to the
+     individual attributes. */
+  callPackagesWith = autoArgs: fn: args:
+    let
+      f = if builtins.isFunction fn then fn else import fn;
+      auto = builtins.intersectAttrs (builtins.functionArgs f) autoArgs;
+      finalArgs = auto // args;
+      pkgs = f finalArgs;
+      mkAttrOverridable = name: pkg: pkg // {
+        override = newArgs: mkAttrOverridable name (f (finalArgs // newArgs)).${name};
+      };
+    in lib.mapAttrs mkAttrOverridable pkgs;
+
+
+  /* Add attributes to each output of a derivation without changing
+     the derivation itself. */
   addPassthru = drv: passthru:
     let
       outputs = drv.outputs or [ "out" ];
diff --git a/lib/deprecated.nix b/lib/deprecated.nix
index 54c253f2c34b..3646f9e032a1 100644
--- a/lib/deprecated.nix
+++ b/lib/deprecated.nix
@@ -29,7 +29,6 @@ rec {
                           } ));
 	withStdOverrides = base // {
 	   override = base.passthru.function;
-	   deepOverride = a : (base.passthru.function ((lib.mapAttrs (lib.deepOverrider a) base.passthru.args) // a));
 	   } ;
         in
 	withStdOverrides;
diff --git a/lib/lists.nix b/lib/lists.nix
index fde6f5d42fcb..3bcf366f0c27 100644
--- a/lib/lists.nix
+++ b/lib/lists.nix
@@ -4,7 +4,7 @@ with import ./trivial.nix;
 
 rec {
 
-  inherit (builtins) head tail length isList elemAt concatLists filter elem;
+  inherit (builtins) head tail length isList elemAt concatLists filter elem genList;
 
 
   # Create a list consisting of a single element.  `singleton x' is
@@ -42,16 +42,20 @@ rec {
   foldl' = builtins.foldl' or foldl;
 
 
-  # map with index: `imap (i: v: "${v}-${toString i}") ["a" "b"] ==
-  # ["a-1" "b-2"]'
-  imap = f: list:
-    let
-      len = length list;
-      imap' = n:
-        if n == len
-          then []
-          else [ (f (n + 1) (elemAt list n)) ] ++ imap' (n + 1);
-    in imap' 0;
+  # Map with index: `imap (i: v: "${v}-${toString i}") ["a" "b"] ==
+  # ["a-1" "b-2"]'. FIXME: why does this start to count at 1?
+  imap =
+    if builtins ? genList then
+      f: list: genList (n: f (n + 1) (elemAt list n)) (length list)
+    else
+      f: list:
+      let
+        len = length list;
+        imap' = n:
+          if n == len
+            then []
+            else [ (f (n + 1) (elemAt list n)) ] ++ imap' (n + 1);
+      in imap' 0;
 
 
   # Map and concatenate the result.
@@ -120,10 +124,17 @@ rec {
 
 
   # Return a list of integers from `first' up to and including `last'.
-  range = first: last:
-    if last < first
-    then []
-    else [first] ++ range (first + 1) last;
+  range =
+    if builtins ? genList then
+      first: last:
+        if first > last
+        then []
+        else genList (n: first + n) (last - first + 1)
+    else
+      first: last:
+        if last < first
+        then []
+        else [first] ++ range (first + 1) last;
 
 
   # Partition the elements of a list in two lists, `right' and
@@ -136,30 +147,37 @@ rec {
     ) { right = []; wrong = []; };
 
 
-  zipListsWith = f: fst: snd:
-    let
-      len1 = length fst;
-      len2 = length snd;
-      len = if len1 < len2 then len1 else len2;
-      zipListsWith' = n:
-        if n != len then
-          [ (f (elemAt fst n) (elemAt snd n)) ]
-          ++ zipListsWith' (n + 1)
-        else [];
-    in zipListsWith' 0;
+  zipListsWith =
+    if builtins ? genList then
+      f: fst: snd: genList (n: f (elemAt fst n) (elemAt snd n)) (min (length fst) (length snd))
+    else
+      f: fst: snd:
+      let
+        len = min (length fst) (length snd);
+        zipListsWith' = n:
+          if n != len then
+            [ (f (elemAt fst n) (elemAt snd n)) ]
+            ++ zipListsWith' (n + 1)
+          else [];
+      in zipListsWith' 0;
 
   zipLists = zipListsWith (fst: snd: { inherit fst snd; });
 
 
-  # Reverse the order of the elements of a list.  FIXME: O(n^2)!
-  reverseList = fold (e: acc: acc ++ [ e ]) [];
+  # Reverse the order of the elements of a list.
+  reverseList =
+    if builtins ? genList then
+      xs: let l = length xs; in genList (n: elemAt xs (l - n - 1)) l
+    else
+      fold (e: acc: acc ++ [ e ]) [];
 
 
   # Sort a list based on a comparator function which compares two
   # elements and returns true if the first argument is strictly below
   # the second argument.  The returned list is sorted in an increasing
   # order.  The implementation does a quick-sort.
-  sort = strictLess: list:
+  sort = builtins.sort or (
+    strictLess: list:
     let
       len = length list;
       first = head list;
@@ -173,31 +191,50 @@ rec {
       pivot = pivot' 1 { left = []; right = []; };
     in
       if len < 2 then list
-      else (sort strictLess pivot.left) ++  [ first ] ++  (sort strictLess pivot.right);
+      else (sort strictLess pivot.left) ++  [ first ] ++  (sort strictLess pivot.right));
 
 
   # Return the first (at most) N elements of a list.
-  take = count: list:
-    let
-      len = length list;
-      take' = n:
-        if n == len || n == count
-          then []
-        else
-          [ (elemAt list n) ] ++ take' (n + 1);
-    in take' 0;
+  take =
+    if builtins ? genList then
+      count: sublist 0 count
+    else
+      count: list:
+        let
+          len = length list;
+          take' = n:
+            if n == len || n == count
+              then []
+            else
+              [ (elemAt list n) ] ++ take' (n + 1);
+        in take' 0;
 
 
   # Remove the first (at most) N elements of a list.
-  drop = count: list:
-    let
-      len = length list;
-      drop' = n:
-        if n == -1 || n < count
-          then []
-        else
-          drop' (n - 1) ++ [ (elemAt list n) ];
-    in drop' (len - 1);
+  drop =
+    if builtins ? genList then
+      count: list: sublist count (length list) list
+    else
+      count: list:
+        let
+          len = length list;
+          drop' = n:
+            if n == -1 || n < count
+              then []
+            else
+              drop' (n - 1) ++ [ (elemAt list n) ];
+        in drop' (len - 1);
+
+
+  # Return a list consisting of at most ‘count’ elements of ‘list’,
+  # starting at index ‘start’.
+  sublist = start: count: list:
+    let len = length list; in
+    genList
+      (n: elemAt list (n + start))
+      (if start >= len then 0
+       else if start + count > len then len - start
+       else count);
 
 
   # Return the last element of a list.
@@ -209,25 +246,13 @@ rec {
   init = list: assert list != []; take (length list - 1) list;
 
 
-  # Zip two lists together.
-  zipTwoLists = xs: ys:
-    let
-      len1 = length xs;
-      len2 = length ys;
-      len = if len1 < len2 then len1 else len2;
-      zipTwoLists' = n:
-        if n != len then
-          [ { first = elemAt xs n; second = elemAt ys n; } ]
-          ++ zipTwoLists' (n + 1)
-        else [];
-    in zipTwoLists' 0;
-
-
   deepSeqList = xs: y: if any (x: deepSeq x false) xs then y else y;
 
+
   crossLists = f: foldl (fs: args: concatMap (f: map f args) fs) [f];
 
-  # Remove duplicate elements from the list
+
+  # Remove duplicate elements from the list. O(n^2) complexity.
   unique = list:
     if list == [] then
       []
@@ -237,9 +262,12 @@ rec {
         xs = unique (drop 1 list);
       in [x] ++ remove x xs;
 
-  # Intersects list 'e' and another list
+
+  # Intersects list 'e' and another list. O(nm) complexity.
   intersectLists = e: filter (x: elem x e);
 
-  # Subtracts list 'e' from another list
+
+  # Subtracts list 'e' from another list. O(nm) complexity.
   subtractLists = e: filter (x: !(elem x e));
+
 }
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index e1d85034f12c..7aca12522d1e 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -130,6 +130,7 @@
   jwiegley = "John Wiegley <johnw@newartisans.com>";
   jwilberding = "Jordan Wilberding <jwilberding@afiniate.com>";
   jzellner = "Jeff Zellner <jeffz@eml.cc>";
+  kamilchm = "Kamil Chmielewski <kamil.chm@gmail.com>";
   kkallio = "Karn Kallio <tierpluspluslists@gmail.com>";
   koral = "Koral <koral@mailoo.org>";
   kovirobi = "Kovacsics Robert <kovirobi@gmail.com>";
@@ -148,6 +149,7 @@
   ludo = "Ludovic Courtès <ludo@gnu.org>";
   madjar = "Georges Dubus <georges.dubus@compiletoi.net>";
   magnetophon = "Bart Brouns <bart@magnetophon.nl>";
+  mahe = "Matthias Herrmann <matthias.mh.herrmann@gmail.com>";
   malyn = "Michael Alyn Miller <malyn@strangeGizmo.com>";
   manveru = "Michael Fellinger <m.fellinger@gmail.com>";
   marcweber = "Marc Weber <marco-oweber@gmx.de>";
diff --git a/lib/modules.nix b/lib/modules.nix
index 80268e51e119..d7037abfbef0 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -264,55 +264,59 @@ rec {
       defs' = (optional (opt ? default)
         { file = head opt.declarations; value = mkOptionDefault opt.default; }) ++ defs;
 
-      # Handle properties, check types, and merge everything together
-      inherit (mergeDefinitions loc opt.type defs') isDefined defsFinal mergedValue;
-      files = map (def: def.file) defsFinal;
-      merged =
-        if isDefined then mergedValue
-        else throw "The option `${showOption loc}' is used but not defined.";
+      # Handle properties, check types, and merge everything together.
+      res = mergeDefinitions loc opt.type defs';
+
+      # Check whether the option is defined, and apply the ‘apply’
+      # function to the merged value.  This allows options to yield a
+      # value computed from the definitions.
+      value =
+        if !res.isDefined then
+          throw "The option `${showOption loc}' is used but not defined."
+        else if opt ? apply then
+          opt.apply res.mergedValue
+        else
+          res.mergedValue;
 
-      # Finally, apply the ‘apply’ function to the merged
-      # value.  This allows options to yield a value computed
-      # from the definitions.
-      value = (opt.apply or id) merged;
     in opt //
       { value = addErrorContext "while evaluating the option `${showOption loc}':" value;
         definitions = map (def: def.value) defsFinal;
-        inherit isDefined files;
+        files = map (def: def.file) res.defsFinal;
+        inherit (res) isDefined;
       };
 
-    # Merge definitions of a value of a given type
-    mergeDefinitions = loc: type: defs: rec {
-      defsFinal =
-        let
-          # Process mkMerge and mkIf properties
-          processIfAndMerge = defs: concatMap (m:
-            map (value: { inherit (m) file; inherit value; }) (dischargeProperties m.value)
-          ) defs;
+  # Merge definitions of a value of a given type.
+  mergeDefinitions = loc: type: defs: rec {
+    defsFinal =
+      let
+        # Process mkMerge and mkIf properties.
+        defs' = concatMap (m:
+          map (value: { inherit (m) file; inherit value; }) (dischargeProperties m.value)
+        ) defs;
 
-          # Process mkOverride properties
-          processOverride = defs: filterOverrides defs;
+        # Process mkOverride properties.
+        defs'' = filterOverrides defs';
 
-          # Sort mkOrder properties
-          processOrder = defs:
-            # Avoid sorting if we don't have to.
-            if any (def: def.value._type or "" == "order") defs
-            then sortProperties defs
-            else defs;
-        in
-          processOrder (processOverride (processIfAndMerge defs));
+        # Sort mkOrder properties.
+        defs''' =
+          # Avoid sorting if we don't have to.
+          if any (def: def.value._type or "" == "order") defs''
+          then sortProperties defs''
+          else defs'';
+      in defs''';
 
-        # Type-check the remaining definitions, and merge them.
-        mergedValue = foldl' (res: def:
-          if type.check def.value then res
-          else throw "The option value `${showOption loc}' in `${def.file}' is not a ${type.name}.")
-          (type.merge loc defsFinal) defsFinal;
+    # Type-check the remaining definitions, and merge them.
+    mergedValue = foldl' (res: def:
+      if type.check def.value then res
+      else throw "The option value `${showOption loc}' in `${def.file}' is not a ${type.name}.")
+      (type.merge loc defsFinal) defsFinal;
 
-        isDefined = defsFinal != [];
-        optionalValue =
-          if isDefined then { value = mergedValue; }
-          else {};
-    };
+    isDefined = defsFinal != [];
+
+    optionalValue =
+      if isDefined then { value = mergedValue; }
+      else {};
+  };
 
   /* Given a config set, expand mkMerge properties, and push down the
      other properties into the children.  The result is a list of
@@ -383,7 +387,6 @@ rec {
     let
       defaultPrio = 100;
       getPrio = def: if def.value._type or "" == "override" then def.value.priority else defaultPrio;
-      min = x: y: if x < y then x else y;
       highestPrio = foldl' (prio: def: min (getPrio def) prio) 9999 defs;
       strip = def: if def.value._type or "" == "override" then def // { value = def.value.content; } else def;
     in concatMap (def: if getPrio def == highestPrio then [(strip def)] else []) defs;
diff --git a/nixos/lib/build-vms.nix b/nixos/lib/build-vms.nix
index d0c9e7c6d236..01d6b21bba90 100644
--- a/nixos/lib/build-vms.nix
+++ b/nixos/lib/build-vms.nix
@@ -41,22 +41,22 @@ rec {
 
       machines = attrNames nodes;
 
-      machinesNumbered = zipTwoLists machines (range 1 254);
+      machinesNumbered = zipLists machines (range 1 254);
 
-      nodes_ = flip map machinesNumbered (m: nameValuePair m.first
+      nodes_ = flip map machinesNumbered (m: nameValuePair m.fst
         [ ( { config, pkgs, nodes, ... }:
             let
-              interfacesNumbered = zipTwoLists config.virtualisation.vlans (range 1 255);
-              interfaces = flip map interfacesNumbered ({ first, second }:
-                nameValuePair "eth${toString second}" { ip4 =
-                  [ { address = "192.168.${toString first}.${toString m.second}";
+              interfacesNumbered = zipLists config.virtualisation.vlans (range 1 255);
+              interfaces = flip map interfacesNumbered ({ fst, snd }:
+                nameValuePair "eth${toString snd}" { ip4 =
+                  [ { address = "192.168.${toString fst}.${toString m.snd}";
                       prefixLength = 24;
                   } ];
                 });
             in
             { key = "ip-address";
               config =
-                { networking.hostName = m.first;
+                { networking.hostName = m.fst;
 
                   networking.interfaces = listToAttrs interfaces;
 
@@ -76,11 +76,11 @@ rec {
 
                   virtualisation.qemu.options =
                     flip map interfacesNumbered
-                      ({ first, second }: qemuNICFlags second first m.second);
+                      ({ fst, snd }: qemuNICFlags snd fst m.snd);
                 };
             }
           )
-          (getAttr m.first nodes)
+          (getAttr m.fst nodes)
         ] );
 
     in listToAttrs nodes_;
diff --git a/nixos/lib/make-ext4-fs.nix b/nixos/lib/make-ext4-fs.nix
new file mode 100644
index 000000000000..23839ea487db
--- /dev/null
+++ b/nixos/lib/make-ext4-fs.nix
@@ -0,0 +1,88 @@
+# Builds an ext4 image containing a populated /nix/store with the closure
+# of store paths passed in the storePaths parameter. The generated image
+# is sized to only fit its contents, with the expectation that a script
+# resizes the filesystem at boot time.
+{ pkgs
+, storePaths
+, volumeLabel
+}:
+
+pkgs.stdenv.mkDerivation {
+  name = "ext4-fs.img";
+
+  buildInputs = with pkgs; [e2fsprogs libfaketime perl];
+
+  # For obtaining the closure of `storePaths'.
+  exportReferencesGraph =
+    map (x: [("closure-" + baseNameOf x) x]) storePaths;
+
+  buildCommand =
+    ''
+      # Add the closures of the top-level store objects.
+      storePaths=$(perl ${pkgs.pathsFromGraph} closure-*)
+
+      # Also include a manifest of the closures in a format suitable
+      # for nix-store --load-db.
+      printRegistration=1 perl ${pkgs.pathsFromGraph} closure-* > nix-path-registration
+
+      # Make a crude approximation of the size of the target image.
+      # If the script starts failing, increase the fudge factors here.
+      numInodes=$(find $storePaths | wc -l)
+      numDataBlocks=$(du -c -B 4096 --apparent-size $storePaths | awk '$2 == "total" { print int($1 * 1.03) }')
+      bytes=$((2 * 4096 * $numInodes + 4096 * $numDataBlocks))
+      echo "Creating an EXT4 image of $bytes bytes (numInodes=$numInodes, numDataBlocks=$numDataBlocks)"
+
+      truncate -s $bytes $out
+      faketime "1970-01-01 00:00:00" mkfs.ext4 -L ${volumeLabel} -U 44444444-4444-4444-8888-888888888888 $out
+
+      # Populate the image contents by piping a bunch of commands to the `debugfs` tool from e2fsprogs.
+      # For example, to copy /nix/store/abcd...efg-coreutils-8.23/bin/sleep:
+      #   cd /nix/store/abcd...efg-coreutils-8.23/bin
+      #   write /nix/store/abcd...efg-coreutils-8.23/bin/sleep sleep
+      #   sif sleep mode 040555
+      #   sif sleep gid 30000
+      # In particular, debugfs doesn't handle absolute target paths; you have to 'cd' in the virtual
+      # filesystem first. Likewise the intermediate directories must already exist (using `find`
+      # handles that for us). And when setting the file's permissions, the inode type flags (__S_IFDIR,
+      # __S_IFREG) need to be set as well.
+      (
+        echo write nix-path-registration nix-path-registration
+        echo mkdir nix
+        echo cd /nix
+        echo mkdir store
+
+        # XXX: This explodes in exciting ways if anything in /nix/store has a space in it.
+        find $storePaths -printf '%y %f %h %m\n'| while read -r type file dir perms; do
+          # echo "TYPE=$type DIR=$dir FILE=$file PERMS=$perms" >&2
+
+          echo "cd $dir"
+          case $type in
+            d)
+              echo "mkdir $file"
+              echo sif $file mode $((040000 | 0$perms)) # magic constant is __S_IFDIR
+              ;;
+            f)
+              echo "write $dir/$file $file"
+              echo sif $file mode $((0100000 | 0$perms)) # magic constant is __S_IFREG
+              ;;
+            l)
+              echo "symlink $file $(readlink "$dir/$file")"
+              ;;
+            *)
+              echo "Unknown entry: $type $dir $file $perms" >&2
+              exit 1
+              ;;
+          esac
+
+          echo sif $file gid 30000 # chgrp to nixbld
+        done
+      ) | faketime "1970-01-01 00:00:00" debugfs -w $out -f /dev/stdin > errorlog 2>&1
+
+      # The debugfs tool doesn't terminate on error nor exit with a non-zero status. Check manually.
+      if egrep -q 'Could not allocate|File not found' errorlog; then
+        cat errorlog
+        echo "--- Failed to create EXT4 image of $bytes bytes (numInodes=$numInodes, numDataBlocks=$numDataBlocks) ---"
+        return 1
+      fi
+    '';
+}
diff --git a/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix
new file mode 100644
index 000000000000..0ca57a4635f4
--- /dev/null
+++ b/nixos/modules/installer/cd-dvd/sd-image-armv7l-multiplatform.nix
@@ -0,0 +1,40 @@
+{ config, lib, pkgs, ... }:
+
+let
+  extlinux-conf-builder =
+    import ../../system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix {
+      inherit pkgs;
+    };
+in
+{
+  imports = [
+    ../../profiles/minimal.nix
+    ../../profiles/installation-device.nix
+    ./sd-image.nix
+  ];
+
+  assertions = lib.singleton {
+    assertion = pkgs.stdenv.system == "armv7l-linux";
+    message = "sd-image-armv7l-multiplatform.nix can be only built natively on ARMv7; " +
+      "it cannot be cross compiled";
+  };
+
+  boot.loader.grub.enable = false;
+  boot.loader.generic-extlinux-compatible.enable = true;
+
+  # FIXME: change this to linuxPackages_latest once v4.2 is out
+  boot.kernelPackages = pkgs.linuxPackages_testing;
+  boot.kernelParams = ["console=ttyS0,115200n8" "console=ttyAMA0,115200n8" "console=tty0"];
+
+  # FIXME: fix manual evaluation on ARM
+  services.nixosManual.enable = lib.mkOverride 0 false;
+
+  # FIXME: this probably should be in installation-device.nix
+  users.extraUsers.root.initialHashedPassword = "";
+
+  sdImage = {
+    populateBootCommands = ''
+        ${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./boot
+    '';
+  };
+}
diff --git a/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix b/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix
new file mode 100644
index 000000000000..199a252ad2b5
--- /dev/null
+++ b/nixos/modules/installer/cd-dvd/sd-image-raspberrypi.nix
@@ -0,0 +1,46 @@
+{ config, lib, pkgs, ... }:
+
+let
+  extlinux-conf-builder =
+    import ../../system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix {
+      inherit pkgs;
+    };
+in
+{
+  imports = [
+    ../../profiles/minimal.nix
+    ../../profiles/installation-device.nix
+    ./sd-image.nix
+  ];
+
+  assertions = lib.singleton {
+    assertion = pkgs.stdenv.system == "armv6l-linux";
+    message = "sd-image-raspberrypi.nix can be only built natively on ARMv6; " +
+      "it cannot be cross compiled";
+  };
+
+  # Needed by RPi firmware
+  nixpkgs.config.allowUnfree = true;
+
+  boot.loader.grub.enable = false;
+  boot.loader.generic-extlinux-compatible.enable = true;
+
+  boot.kernelPackages = pkgs.linuxPackages_rpi;
+
+  # FIXME: fix manual evaluation on ARM
+  services.nixosManual.enable = lib.mkOverride 0 false;
+
+  # FIXME: this probably should be in installation-device.nix
+  users.extraUsers.root.initialHashedPassword = "";
+
+  sdImage = {
+    populateBootCommands = ''
+      for f in bootcode.bin fixup.dat start.elf; do
+        cp ${pkgs.raspberrypifw}/share/raspberrypi/boot/$f boot/
+      done
+      cp ${pkgs.ubootRaspberryPi}/u-boot.bin boot/u-boot-rpi.bin
+      echo 'kernel u-boot-rpi.bin' > boot/config.txt
+      ${extlinux-conf-builder} -t 3 -c ${config.system.build.toplevel} -d ./boot
+    '';
+  };
+}
diff --git a/nixos/modules/installer/cd-dvd/sd-image.nix b/nixos/modules/installer/cd-dvd/sd-image.nix
new file mode 100644
index 000000000000..12b4f3045614
--- /dev/null
+++ b/nixos/modules/installer/cd-dvd/sd-image.nix
@@ -0,0 +1,127 @@
+# This module creates a bootable SD card image containing the given NixOS
+# configuration. The generated image is MBR partitioned, with a FAT /boot
+# partition, and ext4 root partition. The generated image is sized to fit
+# its contents, and a boot script automatically resizes the root partition
+# to fit the device on the first boot.
+#
+# The derivation for the SD image will be placed in
+# config.system.build.sdImage
+
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  rootfsImage = import ../../../lib/make-ext4-fs.nix {
+    inherit pkgs;
+    inherit (config.sdImage) storePaths;
+    volumeLabel = "NIXOS_SD";
+  };
+in
+{
+  options.sdImage = {
+    storePaths = mkOption {
+      type = with types; listOf package;
+      example = literalExample "[ pkgs.stdenv ]";
+      description = ''
+        Derivations to be included in the Nix store in the generated SD image.
+      '';
+    };
+
+    bootSize = mkOption {
+      type = types.int;
+      default = 128;
+      description = ''
+        Size of the /boot partition, in megabytes.
+      '';
+    };
+
+    populateBootCommands = mkOption {
+      example = literalExample "'' cp \${pkgs.myBootLoader}/u-boot.bin boot/ ''";
+      description = ''
+        Shell commands to populate the ./boot directory.
+        All files in that directory are copied to the
+        /boot partition on the SD image.
+      '';
+    };
+  };
+
+  config = {
+    fileSystems = {
+      "/boot" = {
+        device = "/dev/disk/by-label/NIXOS_BOOT";
+        fsType = "vfat";
+      };
+      "/" = {
+        device = "/dev/disk/by-label/NIXOS_SD";
+        fsType = "ext4";
+      };
+    };
+
+    sdImage.storePaths = [ config.system.build.toplevel ];
+
+    system.build.sdImage = pkgs.stdenv.mkDerivation {
+      name = "sd-image-${pkgs.stdenv.system}.img";
+
+      buildInputs = with pkgs; [ dosfstools e2fsprogs mtools libfaketime utillinux ];
+
+      buildCommand = ''
+        # Create the image file sized to fit /boot and /, plus 4M of slack
+        rootSizeBlocks=$(du -B 512 --apparent-size ${rootfsImage} | awk '{ print $1 }')
+        bootSizeBlocks=$((${toString config.sdImage.bootSize} * 1024 * 1024 / 512))
+        imageSize=$((rootSizeBlocks * 512 + bootSizeBlocks * 512 + 4096 * 1024))
+        truncate -s $imageSize $out
+
+        # type=b is 'W95 FAT32', type=83 is 'Linux'.
+        sfdisk $out <<EOF
+            label: dos
+            label-id: 0x2178694e
+
+            start=1M, size=$bootSizeBlocks, type=b, bootable
+            type=83
+        EOF
+
+        # Copy the rootfs into the SD image
+        eval $(partx $out -o START,SECTORS --nr 2 --pairs)
+        dd conv=notrunc if=${rootfsImage} of=$out seek=$START count=$SECTORS
+
+        # Create a FAT32 /boot partition of suitable size into bootpart.img
+        eval $(partx $out -o START,SECTORS --nr 1 --pairs)
+        truncate -s $((SECTORS * 512)) bootpart.img
+        faketime "1970-01-01 00:00:00" mkfs.vfat -i 0x2178694e -n NIXOS_BOOT bootpart.img
+
+        # Populate the files intended for /boot
+        mkdir boot
+        ${config.sdImage.populateBootCommands}
+
+        # Copy the populated /boot into the SD image
+        (cd boot; mcopy -bpsvm -i ../bootpart.img ./* ::)
+        dd conv=notrunc if=bootpart.img of=$out seek=$START count=$SECTORS
+      '';
+    };
+
+    boot.postBootCommands = ''
+      # On the first boot do some maintenance tasks
+      if [ -f /nix-path-registration ]; then
+        # Figure out device names for the boot device and root filesystem.
+        rootPart=$(readlink -f /dev/disk/by-label/NIXOS_SD)
+        bootDevice=$(lsblk -npo PKNAME $rootPart)
+
+        # Resize the root partition and the filesystem to fit the disk
+        echo ",+," | sfdisk -N2 --no-reread $bootDevice
+        ${pkgs.parted}/bin/partprobe
+        ${pkgs.e2fsprogs}/bin/resize2fs $rootPart
+
+        # Register the contents of the initial Nix store
+        ${config.nix.package}/bin/nix-store --load-db < /nix-path-registration
+
+        # nixos-rebuild also requires a "system" profile and an /etc/NIXOS tag.
+        touch /etc/NIXOS
+        ${config.nix.package}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system
+
+        # Prevents this from running on later boots.
+        rm -f /nix-path-registration
+      fi
+    '';
+  };
+}
diff --git a/nixos/modules/services/misc/rogue.nix b/nixos/modules/services/misc/rogue.nix
index ed8da8a518ff..aae02e384c97 100644
--- a/nixos/modules/services/misc/rogue.nix
+++ b/nixos/modules/services/misc/rogue.nix
@@ -52,6 +52,7 @@ in
             TTYPath = "/dev/${cfg.tty}";
             TTYReset = true;
             TTYVTDisallocate = true;
+            WorkingDirectory = "/tmp";
             Restart = "always";
           };
       };
diff --git a/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixos/modules/services/x11/desktop-managers/xfce.nix
index fce5bf11f053..88eefa13de35 100644
--- a/nixos/modules/services/x11/desktop-managers/xfce.nix
+++ b/nixos/modules/services/x11/desktop-managers/xfce.nix
@@ -62,7 +62,7 @@ in
         pkgs.xfce.xfwm4
         # This supplies some "abstract" icons such as
         # "utilities-terminal" and "accessories-text-editor".
-        pkgs.gnome.gnomeicontheme
+        pkgs.gnome3.defaultIconTheme
         pkgs.desktop_file_utils
         pkgs.xfce.libxfce4ui
         pkgs.xfce.garcon
diff --git a/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix b/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix
index 261192c6d24e..c5c250c14cea 100644
--- a/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix
+++ b/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.nix
@@ -3,6 +3,7 @@
 pkgs.substituteAll {
   src = ./extlinux-conf-builder.sh;
   isExecutable = true;
-  inherit (pkgs) bash;
   path = [pkgs.coreutils pkgs.gnused pkgs.gnugrep];
+  inherit (pkgs) bash;
+  kernelDTB = pkgs.stdenv.platform.kernelDTB or false;
 }
diff --git a/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.sh b/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.sh
index 8f2a496de8b6..b9a42b2a196d 100644
--- a/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.sh
+++ b/nixos/modules/system/boot/loader/generic-extlinux-compatible/extlinux-conf-builder.sh
@@ -75,8 +75,10 @@ addEntry() {
 
     copyToKernelsDir "$path/kernel"; kernel=$result
     copyToKernelsDir "$path/initrd"; initrd=$result
-    # XXX UGLY: maybe the system config should have a top-level "dtbs" entry?
-    copyToKernelsDir $(readlink -m "$path/kernel/../dtbs"); dtbs=$result
+    if [ -n "@kernelDTB@" ]; then
+        # XXX UGLY: maybe the system config should have a top-level "dtbs" entry?
+        copyToKernelsDir $(readlink -m "$path/kernel/../dtbs"); dtbs=$result
+    fi
 
     timestampEpoch=$(stat -L -c '%Z' $path)
 
@@ -93,7 +95,9 @@ addEntry() {
     fi
     echo "  LINUX ../nixos/$(basename $kernel)"
     echo "  INITRD ../nixos/$(basename $initrd)"
-    echo "  FDTDIR ../nixos/$(basename $dtbs)"
+    if [ -n "@kernelDTB@" ]; then
+        echo "  FDTDIR ../nixos/$(basename $dtbs)"
+    fi
     echo "  APPEND systemConfig=$path init=$path/init $extraParams"
 }
 
@@ -105,20 +109,24 @@ cat > $tmpFile <<EOF
 # Change this to e.g. nixos-42 to temporarily boot to an older configuration.
 DEFAULT nixos-default
 
+MENU TITLE ------------------------------------------------------------
 TIMEOUT $timeout
-$(addEntry $default default)
 EOF
 
-# Add up to $numGenerations generations of the system profile to the menu,
-# in reverse (most recent to least recent) order.
-for generation in $(
-        (cd /nix/var/nix/profiles && ls -d system-*-link) \
-        | sed 's/system-\([0-9]\+\)-link/\1/' \
-        | sort -n -r \
-        | head -n $numGenerations); do
-    link=/nix/var/nix/profiles/system-$generation-link
-    addEntry $link $generation
-done >> $tmpFile
+addEntry $default default >> $tmpFile
+
+if [ "$numGenerations" -gt 0 ]; then
+    # Add up to $numGenerations generations of the system profile to the menu,
+    # in reverse (most recent to least recent) order.
+    for generation in $(
+            (cd /nix/var/nix/profiles && ls -d system-*-link) \
+            | sed 's/system-\([0-9]\+\)-link/\1/' \
+            | sort -n -r \
+            | head -n $numGenerations); do
+        link=/nix/var/nix/profiles/system-$generation-link
+        addEntry $link $generation
+    done >> $tmpFile
+fi
 
 mv -f $tmpFile $target/extlinux/extlinux.conf
 
diff --git a/pkgs/applications/editors/eclipse/default.nix b/pkgs/applications/editors/eclipse/default.nix
index d2e6116fec72..3ec498973219 100644
--- a/pkgs/applications/editors/eclipse/default.nix
+++ b/pkgs/applications/editors/eclipse/default.nix
@@ -70,12 +70,12 @@ in {
     src =
       if stdenv.system == "x86_64-linux" then
         fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk-x86_64.tar.gz;
           md5 = "54e2ce0660b2b1b0eb4267acf70ea66d";
         }
       else
         fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops/R-3.5.2-201002111343/eclipse-SDK-3.5.2-linux-gtk.tar.gz;
           md5 = "bde55a2354dc224cf5f26e5320e72dac";
         };
   };
@@ -88,12 +88,12 @@ in {
     src =
       if stdenv.system == "x86_64-linux" then
         fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk-x86_64.tar.gz;
           sha256 = "0dfcfadcd6337c897fbfd5b292de481931dfce12d43289ecb93691fd27dd47f4";
         }
       else
         fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops/R-3.6.2-201102101200/eclipse-SDK-3.6.2-linux-gtk.tar.gz;
           sha256 = "1bh8ykliqr8wbciv13vpiy50rvm7yszk7y8dslr796dbwhi5b1cj";
         };
   };
@@ -120,12 +120,12 @@ in {
     src =
       if stdenv.system == "x86_64-linux" then
         fetchurl {
-          url = http://eclipse.ialto.com/technology/epp/downloads/release/helios/SR2/eclipse-cpp-helios-SR2-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/helios/SR2/eclipse-cpp-helios-SR2-linux-gtk-x86_64.tar.gz;
           sha1 = "6f914e11fa15a900c46825e4aa8299afd76e7e65";
         }
       else
         fetchurl {
-          url = http://eclipse.ialto.com/technology/epp/downloads/release/helios/SR2/eclipse-cpp-helios-SR2-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/helios/SR2/eclipse-cpp-helios-SR2-linux-gtk.tar.gz;
           sha1 = "1156e4bc0253ae3a3a4e54839e4944dc64d3108f";
         };
   };
@@ -136,12 +136,12 @@ in {
     src =
       if stdenv.system == "x86_64-linux" then
         fetchurl {
-          url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/technology/epp/downloads/release/helios/SR2/eclipse-modeling-helios-SR2-incubation-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/helios/SR2/eclipse-modeling-helios-SR2-incubation-linux-gtk-x86_64.tar.gz;
           sha1 = "e96f5f006298f68476f4a15a2be8589158d5cc61";
         }
       else
         fetchurl {
-          url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/technology/epp/downloads/release/helios/SR2/eclipse-modeling-helios-SR2-incubation-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/helios/SR2/eclipse-modeling-helios-SR2-incubation-linux-gtk.tar.gz;
           sha1 = "696377895bb26445de39d82a916b7e69edb1d939";
         };
   };
@@ -151,11 +151,11 @@ in {
     description = "Eclipse Classic";
     sources = {
       "x86_64-linux" = fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops/R-3.7.2-201202080800/eclipse-SDK-3.7.2-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops/R-3.7.2-201202080800/eclipse-SDK-3.7.2-linux-gtk-x86_64.tar.gz;
           sha256 = "0nf4nv7awhp1k8b1hjb7chpjyjrqnyszsjbc4dlk9phpjv3j4wg5";
         };
       "i686-linux" = fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops/R-3.7.2-201202080800/eclipse-SDK-3.7.2-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops/R-3.7.2-201202080800/eclipse-SDK-3.7.2-linux-gtk.tar.gz;
           sha256 = "1isn7i45l9kyn2yx6vm88jl1gnxph8ynank0aaa218cg8kdygk7j";
         };
     };
@@ -167,12 +167,12 @@ in {
     src =
       if stdenv.system == "x86_64-linux" then
         fetchurl {
-          url = http://eclipse.ialto.com/technology/epp/downloads/release/indigo/R/eclipse-cpp-indigo-incubation-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/indigo/R/eclipse-cpp-indigo-incubation-linux-gtk-x86_64.tar.gz;
           sha256 = "14ppc9g9igzvj1pq7jl01vwhzb66nmzbl9wsdl1sf3xnwa9wnqk3";
         }
       else
         fetchurl {
-          url = http://eclipse.ialto.com/technology/epp/downloads/release/indigo/R/eclipse-cpp-indigo-incubation-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/indigo/R/eclipse-cpp-indigo-incubation-linux-gtk.tar.gz;
           sha256 = "1cvg1vgyazrkinwzlvlf0dpl197p4784752srqybqylyj5psdi3b";
         };
   };
@@ -183,12 +183,12 @@ in {
     src =
       if stdenv.system == "x86_64-linux" then
         fetchurl {
-          url = http://eclipse.ialto.com/technology/epp/downloads/release/juno/SR2/eclipse-cpp-juno-SR2-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/juno/SR2/eclipse-cpp-juno-SR2-linux-gtk-x86_64.tar.gz;
           sha256 = "1qq04926pf7v9sf3s0z53zvlbl1j0rmmjmbmhqi49473fnjikh7y";
         }
       else
         fetchurl {
-          url = http://eclipse.ialto.com/technology/epp/downloads/release/juno/SR2/eclipse-cpp-juno-SR2-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/juno/SR2/eclipse-cpp-juno-SR2-linux-gtk.tar.gz;
           sha256 = "1a4s9qlhfpfpdhvffyglnfdr3dq5r2ywcxqywhqi95yhq5nmsgyk";
         };
   };
@@ -199,12 +199,12 @@ in {
     src =
       if stdenv.system == "x86_64-linux" then
         fetchurl {
-          url = http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/kepler/SR2/eclipse-cpp-kepler-SR2-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/kepler/SR2/eclipse-cpp-kepler-SR2-linux-gtk-x86_64.tar.gz;
           sha256 = "16zhjm6bx78263b1clg75kfiliahkhwg0k116vp9fj039nlpc30l";
         }
       else
         fetchurl {
-          url = http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/kepler/SR2/eclipse-cpp-kepler-SR2-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/kepler/SR2/eclipse-cpp-kepler-SR2-linux-gtk.tar.gz;
           sha256 = "0d6jlj7hwz8blx6csrlyi2h2prql0wckbh7ihwjmgclwpcpj84g6";
         };
   };
@@ -215,16 +215,32 @@ in {
     src =
       if stdenv.system == "x86_64-linux" then
         fetchurl {
-          url = http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/luna/R/eclipse-cpp-luna-R-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/luna/R/eclipse-cpp-luna-R-linux-gtk-x86_64.tar.gz;
           md5 = "b0a6ee33e8108a7ff4682ab911271b04";
         }
       else
         fetchurl {
-          url = http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/luna/R/eclipse-cpp-luna-R-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/luna/R/eclipse-cpp-luna-R-linux-gtk.tar.gz;
           md5 = "5000f93cecf6ef9af112f0df6e8c87f3";
         };
   };
 
+  eclipse_cpp_45 = buildEclipse {
+    name = "eclipse-cpp-4.5";
+    description = "Eclipse IDE for C/C++ Developers, Mars release";
+    src =
+      if stdenv.system == "x86_64-linux" then
+        fetchurl {
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/mars/R/eclipse-cpp-mars-R-linux-gtk-x86_64.tar.gz;
+          sha1 = "11f9583e23ae68eb675107e6c9acc48e0a2520ae";
+        }
+      else if stdenv.system == "i686-linux" then
+        fetchurl {
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/technology/epp/downloads/release/mars/R/eclipse-cpp-mars-R-linux-gtk.tar.gz;
+          sha1 = "45dddb8c8f2ec79b7e25cc13d93785863ffe4791";
+        }
+      else throw "Unsupported system: ${stdenv.system}";
+  };
 
   eclipse_sdk_421 = buildEclipse {
     name = "eclipse-sdk-4.2.1";
@@ -232,12 +248,12 @@ in {
     src =
       if stdenv.system == "x86_64-linux" then
         fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops4/R-4.2.1-201209141800/eclipse-SDK-4.2.1-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.2.1-201209141800/eclipse-SDK-4.2.1-linux-gtk-x86_64.tar.gz;
           sha256 = "1mlyy90lk08lb2971ynglgi3nqvqfq1k70md2kb39jk160wd1xrk";
         }
       else
         fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops4/R-4.2.1-201209141800/eclipse-SDK-4.2.1-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.2.1-201209141800/eclipse-SDK-4.2.1-linux-gtk.tar.gz;
           sha256 = "1av6qm9wkbyk123qqf38f0jq4jv2bj9wp6fmpnl55zg6qr463c1w";
         };
     };
@@ -247,11 +263,11 @@ in {
     description = "Eclipse Classic";
     sources = {
       "x86_64-linux" = fetchurl {
-          url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops4/R-4.2.2-201302041200/eclipse-SDK-4.2.2-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.2.2-201302041200/eclipse-SDK-4.2.2-linux-gtk-x86_64.tar.gz;
           sha256 = "0ysa6ymk4h3k1vn59dc909iy197kmx132671kbzfwbim87jmgnqb";
         };
       "i686-linux" = fetchurl {
-          url = http://ftp-stud.fht-esslingen.de/pub/Mirrors/eclipse/eclipse/downloads/drops4/R-4.2.2-201302041200/eclipse-SDK-4.2.2-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.2.2-201302041200/eclipse-SDK-4.2.2-linux-gtk.tar.gz;
           sha256 = "038yibbrcia38wi72qrdl03g7l35mpvl5nxdfdnvpqxrkfffb826";
         };
     };
@@ -262,11 +278,11 @@ in {
     description = "Eclipse Classic";
     sources = {
       "x86_64-linux" = fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops4/R-4.3.1-201309111000/eclipse-SDK-4.3.1-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.3.1-201309111000/eclipse-SDK-4.3.1-linux-gtk-x86_64.tar.gz;
           sha256 = "0ncm56ylwxw9z8rk8ccgva68c2yr9yrf1kcr1zkgw6p87xh1yczd";
         };
       "i686-linux" = fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops4/R-4.3.1-201309111000/eclipse-SDK-4.3.1-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.3.1-201309111000/eclipse-SDK-4.3.1-linux-gtk.tar.gz;
           sha256 = "1zxsh838khny7mvl01h28xna6xdh01yi4mvls28zj22v0340lgsg";
         };
     };
@@ -277,11 +293,11 @@ in {
     description = "Eclipse Classic";
     sources = {
       "x86_64-linux" = fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops4/R-4.4-201406061215/eclipse-SDK-4.4-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.4-201406061215/eclipse-SDK-4.4-linux-gtk-x86_64.tar.gz;
           sha256 = "14hdkijsjq0hhzi9ijpwjjkhz7wm0pry86l3dniy5snlh3l5bsb2";
         };
       "i686-linux" = fetchurl {
-          url = http://archive.eclipse.org/eclipse/downloads/drops4/R-4.4-201406061215/eclipse-SDK-4.4-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.4-201406061215/eclipse-SDK-4.4-linux-gtk.tar.gz;
           sha256 = "0hjc4zrsmik6vff851p0a4ydnx99840j2xrx8348kk6h0af8vx6z";
         };
     };
@@ -292,12 +308,12 @@ in {
     description = "Eclipse Classic";
     sources = {
       "x86_64-linux" = fetchurl {
-          url = http://download.eclipse.org/eclipse/downloads/drops4/R-4.4.2-201502041700/eclipse-SDK-4.4.2-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.4.2-201502041700/eclipse-SDK-4.4.2-linux-gtk-x86_64.tar.gz;
           sha256 = "0g00alsixfaakmn4khr0m9fxvkrbhbg6qqfa27xr6a9np6gzg98l";
 
         };
       "i686-linux" = fetchurl {
-          url = http://download.eclipse.org/eclipse/downloads/drops4/R-4.4.2-201502041700/eclipse-SDK-4.4.2-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.4.2-201502041700/eclipse-SDK-4.4.2-linux-gtk.tar.gz;
           sha256 = "1hacyjjwhhxi7r3xyhpqgjqpd5r0irw9bfkalz5s5l6shb0lq4i7";
         };
     };
@@ -308,12 +324,12 @@ in {
     description = "Eclipse Mars Classic";
     sources = {
       "x86_64-linux" = fetchurl {
-          url = http://download.eclipse.org/eclipse/downloads/drops4/R-4.5-201506032000/eclipse-SDK-4.5-linux-gtk-x86_64.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.5-201506032000/eclipse-SDK-4.5-linux-gtk-x86_64.tar.gz;
           sha256 = "0vfql4gh263ms8bg7sgn05gnjajplx304cn3nr03jlacgr3pkarf";
 
         };
       "i686-linux" = fetchurl {
-          url = http://download.eclipse.org/eclipse/downloads/drops4/R-4.5-201506032000/eclipse-SDK-4.5-linux-gtk.tar.gz;
+          url = http://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.5-201506032000/eclipse-SDK-4.5-linux-gtk.tar.gz;
           sha256 = "0xv66l6hdlvxpswcqrsh398wg6xhy30f833dr7jvvz45s5437hm3";
         };
     };
diff --git a/pkgs/applications/editors/texmacs/default.nix b/pkgs/applications/editors/texmacs/default.nix
index a258b6341057..e415239d76fb 100644
--- a/pkgs/applications/editors/texmacs/default.nix
+++ b/pkgs/applications/editors/texmacs/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, guile, libX11, libXext, xmodmap, which, makeWrapper, freetype,
+{stdenv, fetchurl, guile_1_8, qt4, zlib, xmodmap, which, makeWrapper, freetype,
  tex ? null,
  aspell ? null,
  ghostscriptX ? null,
@@ -9,7 +9,7 @@
 
 let 
   pname = "TeXmacs";
-  version = "1.0.7.11";
+  version = "1.99.2";
   extraFontsSrc = fetchurl {
     url = "ftp://ftp.texmacs.org/pub/TeXmacs/fonts/TeXmacs-extra-fonts-1.0-noarch.tar.gz";
     sha256 = "0hylgjmd95y9yahbblmawkkw0i71vb145xxv2xqrmff81301n6k7";
@@ -39,11 +39,11 @@ stdenv.mkDerivation rec {
   name = "${pname}-${version}";
 
   src = fetchurl {
-    url = "ftp://ftp.texmacs.org/pub/${pname}/targz/${name}-src.tar.gz";
-    sha256 = "0x1r9417dzbrxf785faq1vjszqdj94ig2lzwm8sd92bxcxr6knfa";
+    url = "http://www.texmacs.org/Download/ftp/tmftp/source/TeXmacs-${version}-src.tar.gz";
+    sha256 = "0l48g9746igiaxw657shm8g3xxk565vzsviajlrxqyljbh6py0fs";
   };
 
-  buildInputs = [ guile libX11 libXext makeWrapper ghostscriptX freetype ];
+  buildInputs = [ guile_1_8 qt4 makeWrapper ghostscriptX freetype ];
 
   patchPhase = (if tex == null then ''
     gunzip < ${fullFontsSrc} | (cd TeXmacs && tar xvf -)
@@ -66,6 +66,12 @@ stdenv.mkDerivation rec {
         (if tex == null then "" else "${tex}/bin:") +
         "${xmodmap}/bin:${which}/bin";
 
+  postFixup = ''
+    bin="$out/libexec/TeXmacs/bin/texmacs.bin"
+    rpath=$(patchelf --print-rpath "$bin")
+    patchelf --set-rpath "$rpath:${zlib}/lib" "$bin"
+  '';
+
   meta = {
     description = "WYSIWYW editing platform with special features for scientists";
     longDescription =
diff --git a/pkgs/applications/misc/hamster-time-tracker/default.nix b/pkgs/applications/misc/hamster-time-tracker/default.nix
new file mode 100644
index 000000000000..3a94456e6cc7
--- /dev/null
+++ b/pkgs/applications/misc/hamster-time-tracker/default.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchzip, buildPythonPackage, docbook2x, libxslt, gnome_doc_utils
+, intltool, dbus_glib, pygobject, pygtk, pyxdg, gnome_python, dbus, sqlite3
+}:
+
+# TODO: Add optional dependency 'wnck', for "workspace tracking" support. Fixes
+# this message:
+#
+#   WARNING:root:Could not import wnck - workspace tracking will be disabled
+
+buildPythonPackage rec {
+  name = "hamster-time-tracker-1.04";
+  namePrefix = "";
+
+  src = fetchzip {
+    name = "${name}-src";
+    url = "https://github.com/projecthamster/hamster/archive/${name}.tar.gz";
+    sha256 = "1a85rcg561792kdyv744cgzw7mmpmgv6d6li1sijfdpqa1ninf8g";
+  };
+
+  buildInputs = [ docbook2x libxslt gnome_doc_utils intltool dbus_glib ];
+
+  propagatedBuildInputs = [ pygobject pygtk pyxdg gnome_python dbus sqlite3 ];
+
+  configurePhase = ''
+    python waf configure --prefix="$out"
+  '';
+  
+  buildPhase = ''
+    python waf build
+  '';
+
+  installPhase = ''
+    python waf install
+  '';
+
+  # error: invalid command 'test'
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Time tracking application";
+    homepage = https://projecthamster.wordpress.com/;
+    license = licenses.gpl3;
+    platforms = platforms.all;
+    maintainers = [ maintainers.bjornfor ];
+  };
+}
diff --git a/pkgs/applications/misc/synapse/default.nix b/pkgs/applications/misc/synapse/default.nix
new file mode 100644
index 000000000000..8086e8ca56d4
--- /dev/null
+++ b/pkgs/applications/misc/synapse/default.nix
@@ -0,0 +1,34 @@
+{ stdenv, fetchurl, intltool, pkgconfig, glib, libnotify, gtk3, libgee
+, keybinder3, json_glib, zeitgeist, vala
+}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "synapse-0.2.99.1";
+
+  src = fetchurl {
+    url = "https://launchpad.net/synapse-project/0.3/0.2.99.1/+download/${name}.tar.xz";
+    sha256 = "846d8a5130580bb47c754bb7f20dc76311e589c00a18b02370a5d78b52409220";
+  };
+
+  buildInputs = [
+    intltool pkgconfig glib libnotify gtk3 libgee keybinder3 json_glib zeitgeist 
+    vala
+  ];
+
+  meta = { 
+      longDescription = ''
+        Semantic launcher written in Vala that you can use to start applications 
+        as well as find and access relevant documents and files by making use of 
+        the Zeitgeist engine
+      '';
+      description = ''
+        Semantic launcher to start applications and find relevant files
+      '';
+      homepage = https://launchpad.net/synapse-project;
+      license = stdenv.lib.licenses.gpl3;
+      maintainers = with stdenv.lib.maintainers; mahe;
+      platforms = with stdenv.lib.platforms; all;
+  };
+}
diff --git a/pkgs/applications/networking/feedreaders/canto-curses/default.nix b/pkgs/applications/networking/feedreaders/canto-curses/default.nix
index a73cf63e76b9..8db1dac3b4b6 100644
--- a/pkgs/applications/networking/feedreaders/canto-curses/default.nix
+++ b/pkgs/applications/networking/feedreaders/canto-curses/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchFromGitHub, python34Packages, readline, ncurses, canto-daemon }:
 
 python34Packages.buildPythonPackage rec {
-  version = "0.9.4";
+  version = "0.9.6";
   name = "canto-curses-${version}";
 
   src = fetchFromGitHub {
     owner = "themoken";
     repo = "canto-curses";
     rev = "v${version}";
-    sha256 = "0g1ckcb9xcfb0af17zssiqcrfry87agx578vd40nb6gbw90ql4fn";
+    sha256 = "0hxzpx314cflxq68gswjf2vrqf1z1ci9mxhxgwrk7sa6di86ygy0";
   };
 
   buildInputs = [ readline ncurses canto-daemon ];
diff --git a/pkgs/applications/networking/feedreaders/canto-daemon/default.nix b/pkgs/applications/networking/feedreaders/canto-daemon/default.nix
index 63fefae9dfe1..0de38c259a34 100644
--- a/pkgs/applications/networking/feedreaders/canto-daemon/default.nix
+++ b/pkgs/applications/networking/feedreaders/canto-daemon/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchFromGitHub, python34Packages, }:
 
 python34Packages.buildPythonPackage rec {
-  version = "0.9.3";
+  version = "0.9.5";
   name = "canto-daemon-${version}";
   namePrefix = "";
 
@@ -9,7 +9,7 @@ python34Packages.buildPythonPackage rec {
     owner = "themoken";
     repo = "canto-next";
     rev = "v${version}";
-    sha256 = "1x875qdyhab89nwwa2bzbfvcrkx34zwyy8dlbxm8wg3vz9b78l61";
+    sha256 = "1ycwrg5n2il833mdxgzz07r0vb4rxz89rk5c6l9g5x33ifinykdq";
   };
 
   propagatedBuildInputs = with python34Packages; [ feedparser ];
diff --git a/pkgs/applications/networking/remote/x2goclient/default.nix b/pkgs/applications/networking/remote/x2goclient/default.nix
index 30e40a965f70..eaa1c5e318aa 100644
--- a/pkgs/applications/networking/remote/x2goclient/default.nix
+++ b/pkgs/applications/networking/remote/x2goclient/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, cups, libssh, libXpm, nxproxy, openldap, makeWrapper, qt4 }:
 
-let version = "4.0.4.0"; in
+let version = "4.0.5.0"; in
 stdenv.mkDerivation rec {
   name = "x2goclient-${version}";
 
   src = fetchurl {
     url = "http://code.x2go.org/releases/source/x2goclient/${name}.tar.gz";
-    sha256 = "0mqn4nvq2w7qja5i4vx9fg2spwzl01p0hmfwbjb0mzir03hmrl46";
+    sha256 = "18a2pszh0nq2ir64a1ah1mlzddn4qcd12b339bv30n0y1ir92bi4";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/window-managers/qtile/default.nix b/pkgs/applications/window-managers/qtile/default.nix
new file mode 100644
index 000000000000..39d942362be1
--- /dev/null
+++ b/pkgs/applications/window-managers/qtile/default.nix
@@ -0,0 +1,47 @@
+{ stdenv, fetchFromGitHub, buildPythonPackage, python27Packages, pkgs }:
+
+buildPythonPackage rec {
+  name = "qtile-${version}";
+  version = "0.10.1";
+
+  src = fetchFromGitHub {
+    owner = "qtile";
+    repo = "qtile";
+    rev = "v${version}";
+    sha256 = "1g02lvk2cqy6w6y6nw6dnsmy4i9k4fyawyibpkf0a7a1nfrd6a99";
+  };
+
+  patches = [ ./restart_executable.patch ];
+
+  postPatch = ''
+    substituteInPlace libqtile/manager.py --subst-var-by out $out
+  '';
+
+  buildInputs = [ pkgs.pkgconfig pkgs.glib pkgs.xlibs.libxcb pkgs.cairo pkgs.pango python27Packages.xcffib ];
+
+  cairocffi-xcffib = python27Packages.cairocffi.override {
+    LD_LIBRARY_PATH = "${pkgs.xlibs.libxcb}/lib:${pkgs.cairo}/lib";
+    pythonPath = [ python27Packages.xcffib ];
+  };
+
+  pythonPath = with python27Packages; [ xcffib cairocffi-xcffib trollius readline ];
+
+  LD_LIBRARY_PATH = "${pkgs.xlibs.libxcb}/lib:${pkgs.cairo}/lib";
+
+  postInstall = ''
+    wrapProgram $out/bin/qtile \
+      --prefix LD_LIBRARY_PATH : ${pkgs.xlibs.libxcb}/lib \
+      --prefix LD_LIBRARY_PATH : ${pkgs.glib}/lib \
+      --prefix LD_LIBRARY_PATH : ${pkgs.cairo}/lib \
+      --prefix LD_LIBRARY_PATH : ${pkgs.pango}/lib
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://www.qtile.org/;
+    license = licenses.mit;
+    description = "A small, flexible, scriptable tiling window manager written in Python";
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ kamilchm ];
+  };
+}
+
diff --git a/pkgs/applications/window-managers/qtile/restart_executable.patch b/pkgs/applications/window-managers/qtile/restart_executable.patch
new file mode 100644
index 000000000000..a1e74a575d9e
--- /dev/null
+++ b/pkgs/applications/window-managers/qtile/restart_executable.patch
@@ -0,0 +1,12 @@
+diff -ruP a/libqtile/manager.py b/libqtile/manager.py
+--- a/libqtile/manager.py	2015-07-26 21:26:16.947976520 +0200
++++ b/libqtile/manager.py	2015-07-26 21:37:45.581316712 +0200
+@@ -1262,7 +1262,7 @@
+         argv = [s for s in argv if not s.startswith('--with-state')]
+         argv.append('--with-state=' + buf.getvalue().decode())
+ 
+-        self.cmd_execute(sys.executable, argv)
++        self.cmd_execute("@out@/bin/qtile", argv[1:])
+ 
+     def cmd_spawn(self, cmd):
+         """
diff --git a/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh b/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh
new file mode 100644
index 000000000000..4b1a9527b110
--- /dev/null
+++ b/pkgs/build-support/setup-hooks/wrap-gapps-hook.sh
@@ -0,0 +1,33 @@
+gappsWrapperArgs=()
+
+wrapGAppsHook() {
+  if [ -n "$GDK_PIXBUF_MODULE_FILE" ]; then
+    gappsWrapperArgs+=(--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE")
+  fi
+
+  if [ -n "$XDG_ICON_DIRS" ]; then
+    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS")
+  fi
+
+  if [ -n "$GSETTINGS_SCHEMAS_PATH" ]; then
+    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH")
+  fi
+
+  if [ -d "$prefix/share" ]; then
+    gappsWrapperArgs+=(--prefix XDG_DATA_DIRS : "$out/share")
+  fi
+
+  for v in $wrapPrefixVariables GST_PLUGIN_SYSTEM_PATH_1_0 GI_TYPELIB_PATH GRL_PLUGIN_PATH; do
+    eval local dummy="\$$v"
+    gappsWrapperArgs+=(--prefix $v : "$dummy")
+  done
+
+  if [ -z "$dontWrapGApps" ]; then
+    for i in $prefix/bin/* $prefix/libexec/*; do
+      echo "Wrapping app $i"
+      wrapProgram "$i" "${gappsWrapperArgs[@]}"
+    done
+  fi
+}
+
+fixupOutputHooks+=(wrapGAppsHook)
diff --git a/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.4.nix b/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.4.nix
new file mode 100644
index 000000000000..98a1853e4942
--- /dev/null
+++ b/pkgs/data/sgml+xml/schemas/xml-dtd/docbook/4.4.nix
@@ -0,0 +1,13 @@
+{stdenv, fetchurl, unzip}:
+
+import ./generic.nix {
+  inherit stdenv fetchurl unzip;
+  name = "docbook-xml-4.4";
+  src = fetchurl {
+    url = http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip;
+    sha256 = "141h4zsyc71sfi2zzd89v4bb4qqq9ca1ri9ix2als9f4i3mmkw82";
+  };
+  meta = {
+    branch = "4.4";
+  };
+}
diff --git a/pkgs/desktops/gnome-2/desktop/gnome-icon-theme/default.nix b/pkgs/desktops/gnome-2/desktop/gnome-icon-theme/default.nix
index 315f6ff9c5a9..dd7e269f94e5 100644
--- a/pkgs/desktops/gnome-2/desktop/gnome-icon-theme/default.nix
+++ b/pkgs/desktops/gnome-2/desktop/gnome-icon-theme/default.nix
@@ -11,6 +11,9 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk ];
 
+  # remove a tree of dirs with no files within
+  postInstall = '' rm -r "$out/share/locale" '';
+
   meta = {
     platforms = stdenv.lib.platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/apps/bijiben/default.nix b/pkgs/desktops/gnome-3/3.16/apps/bijiben/default.nix
index 3bce034507ac..5eb922994ee4 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/bijiben/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/bijiben/default.nix
@@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Bijiben;
     description = "Note editor designed to remain simple to use";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl3;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/apps/evolution/default.nix b/pkgs/desktops/gnome-3/3.16/apps/evolution/default.nix
index b4240a35a68f..a77fe574709f 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/evolution/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/evolution/default.nix
@@ -48,7 +48,7 @@ in stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Evolution;
     description = "Personal information management application that provides integrated mail, calendaring and address book functionality";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.lgpl2Plus;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/apps/file-roller/default.nix b/pkgs/desktops/gnome-3/3.16/apps/file-roller/default.nix
index d36162e13c2a..122449eb4f5f 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/file-roller/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/file-roller/default.nix
@@ -28,6 +28,6 @@ stdenv.mkDerivation rec {
     homepage = https://wiki.gnome.org/Apps/FileRoller;
     description = "Archive manager for the GNOME desktop environment";
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/apps/gedit/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gedit/default.nix
index 172c817f6f92..9263fd424767 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/gedit/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/gedit/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Gedit;
     description = "Official text editor of the GNOME desktop environment";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/apps/glade/default.nix b/pkgs/desktops/gnome-3/3.16/apps/glade/default.nix
index 22b896c3337a..24d7688e4de0 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/glade/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/glade/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Glade;
     description = "User interface designer for GTK+ applications";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.lgpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix
index 8bdfcfd9f887..469581deef48 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-clocks/default.nix
@@ -1,7 +1,7 @@
 { stdenv, intltool, fetchurl, libgweather, libnotify
 , pkgconfig, gtk3, glib, hicolor_icon_theme, gsound
 , makeWrapper, itstool, libcanberra_gtk3, libtool
-, gnome3, librsvg, gdk_pixbuf, geoclue2 }:
+, gnome3, librsvg, gdk_pixbuf, geoclue2, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   name = "gnome-clocks-${gnome3.version}.1";
@@ -13,27 +13,19 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
-
   buildInputs = [ pkgconfig gtk3 glib intltool itstool libcanberra_gtk3
                   gnome3.gsettings_desktop_schemas makeWrapper
                   gdk_pixbuf gnome3.adwaita-icon-theme librsvg
                   gnome3.gnome_desktop gnome3.geocode_glib geoclue2
                   libgweather libnotify libtool gsound
-                  hicolor_icon_theme gnome3.adwaita-icon-theme ];
+                  hicolor_icon_theme wrapGAppsHook ];
 
   enableParallelBuilding = true;
 
-  preFixup = ''
-    wrapProgram "$out/bin/gnome-clocks" \
-      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
-  '';
-
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Clocks;
     description = "Clock application designed for GNOME 3";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix
index 50fff0cd1d2e..98059d3ed131 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-documents/default.nix
@@ -2,8 +2,8 @@
 , pkgconfig, gtk3, glib, hicolor_icon_theme
 , makeWrapper, itstool, libxslt, webkitgtk
 , gnome3, librsvg, gdk_pixbuf, libsoup, docbook_xsl
-, gobjectIntrospection, json_glib
-, gmp, desktop_file_utils }:
+, gobjectIntrospection, json_glib, inkscape, poppler_utils
+, gmp, desktop_file_utils, wrapGAppsHook }:
 
 stdenv.mkDerivation rec {
   name = "gnome-documents-${gnome3.version}.0";
@@ -15,36 +15,29 @@ stdenv.mkDerivation rec {
 
   doCheck = true;
 
-  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
+  configureFlags = [ "--enable-getting-started" ];
 
   buildInputs = [ pkgconfig gtk3 glib intltool itstool libxslt
-                  docbook_xsl desktop_file_utils
+                  docbook_xsl desktop_file_utils inkscape poppler_utils
                   gnome3.gsettings_desktop_schemas makeWrapper gmp
                   gdk_pixbuf gnome3.adwaita-icon-theme librsvg evince
                   libsoup webkitgtk gjs gobjectIntrospection gnome3.rest
                   gnome3.tracker gnome3.libgdata gnome3.gnome_online_accounts
                   gnome3.gnome_desktop gnome3.libzapojit json_glib
-                  hicolor_icon_theme gnome3.adwaita-icon-theme ];
+                  wrapGAppsHook ];
 
   enableParallelBuilding = true;
 
-  preFixup =
-    ''
+  preFixup = ''
     substituteInPlace $out/bin/gnome-documents --replace gapplication "${glib}/bin/gapplication"
 
-    for f in $out/bin/* $out/libexec/*; do
-      wrapProgram "$f" \
-        --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-        --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
-        --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
-        --run "if [ -z \"\$XDG_CACHE_DIR\" ]; then XDG_CACHE_DIR=\$HOME/.cache; fi; if [ -w \"\$XDG_CACHE_DIR/..\" ]; then mkdir -p \"\$XDG_CACHE_DIR/gnome-documents\"; fi"
-    done
+    gappsWrapperArgs+=(--run 'if [ -z "$XDG_CACHE_DIR" ]; then XDG_CACHE_DIR=$HOME/.cache; fi; if [ -w "$XDG_CACHE_DIR/.." ]; then mkdir -p "$XDG_CACHE_DIR/gnome-documents"; fi')
   '';
 
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Documents;
     description = "Document manager application designed to work with GNOME 3";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix
index 31ee8a7230c1..0193f00da4f5 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-music/default.nix
@@ -1,5 +1,5 @@
 { stdenv, intltool, fetchurl, gdk_pixbuf, tracker
-, python3, libxml2, python3Packages, libnotify
+, python3, libxml2, python3Packages, libnotify, wrapGAppsHook
 , pkgconfig, gtk3, glib, hicolor_icon_theme, cairo
 , makeWrapper, itstool, gnome3, librsvg, gst_all_1 }:
 
@@ -15,29 +15,21 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ pkgconfig gtk3 glib intltool itstool gnome3.libmediaart
                   gdk_pixbuf gnome3.adwaita-icon-theme librsvg python3
-                  gnome3.grilo libxml2 python3Packages.pygobject3 libnotify
+                  gnome3.grilo gnome3.grilo-plugins libxml2 python3Packages.pygobject3 libnotify
                   python3Packages.pycairo python3Packages.dbus gnome3.totem-pl-parser
                   gst_all_1.gstreamer gst_all_1.gst-plugins-base
                   gst_all_1.gst-plugins-good gst_all_1.gst-plugins-bad
-                  hicolor_icon_theme gnome3.adwaita-icon-theme
+                  hicolor_icon_theme gnome3.adwaita-icon-theme wrapGAppsHook
                   gnome3.gsettings_desktop_schemas makeWrapper tracker ];
 
-  enableParallelBuilding = true;
+  wrapPrefixVariables = [ "PYTHONPATH" ];
 
-  preFixup = ''
-    wrapProgram "$out/bin/gnome-music" \
-      --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-      --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" \
-      --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
-      --prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0" \
-      --prefix GRL_PLUGIN_PATH : "${gnome3.grilo-plugins}/lib/grilo-0.2" \
-      --prefix PYTHONPATH : "$PYTHONPATH"
-  '';
+  enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Music;
     description = "Music player and management application for the GNOME desktop environment";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix b/pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix
index fba1a541812c..83a732a01d50 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/gnome-photos/default.nix
@@ -1,7 +1,7 @@
 { stdenv, intltool, fetchurl, exempi, libxml2
 , pkgconfig, gtk3, glib, hicolor_icon_theme
 , makeWrapper, itstool, gegl, babl, lcms2
-, desktop_file_utils, gmp, libmediaart
+, desktop_file_utils, gmp, libmediaart, wrapGAppsHook
 , gnome3, librsvg, gdk_pixbuf, libexif }:
 
 stdenv.mkDerivation rec {
@@ -14,8 +14,6 @@ stdenv.mkDerivation rec {
 
   # doCheck = true;
 
-  propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
-
   NIX_CFLAGS_COMPILE = "-I${gnome3.glib}/include/gio-unix-2.0";
 
   buildInputs = [ pkgconfig gtk3 glib intltool itstool gegl babl gnome3.libgdata
@@ -24,23 +22,14 @@ stdenv.mkDerivation rec {
                   gnome3.gfbgraph gnome3.grilo-plugins gnome3.grilo
                   gnome3.gnome_online_accounts gnome3.gnome_desktop
                   lcms2 libexif gnome3.tracker libxml2 desktop_file_utils
-                  hicolor_icon_theme gnome3.adwaita-icon-theme ];
-
-  preFixup = ''
-    for f in $out/bin/* $out/libexec/*; do
-      wrapProgram "$f" \
-        --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
-        --prefix GRL_PLUGIN_PATH : "${gnome3.grilo-plugins}/lib/grilo-0.2" \
-        --prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
-    done
-  '';
+                  wrapGAppsHook ];
 
   enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Photos;
     description = "Photos is an application to access, organize and share your photos with GNOME 3";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/apps/nautilus-sendto/default.nix b/pkgs/desktops/gnome-3/3.16/apps/nautilus-sendto/default.nix
index 5a85e00e4e45..093900dcb7ab 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/nautilus-sendto/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/nautilus-sendto/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Integrates Evolution and Pidgin into the Nautilus file manager";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/apps/seahorse/default.nix b/pkgs/desktops/gnome-3/3.16/apps/seahorse/default.nix
index 7d610c79b490..3e7b72373136 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/seahorse/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/seahorse/default.nix
@@ -35,7 +35,7 @@ in stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Seahorse;
     description = "Application for managing encryption keys and passwords in the GnomeKeyring";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/apps/vinagre/default.nix b/pkgs/desktops/gnome-3/3.16/apps/vinagre/default.nix
index b2cf8277641a..1debc3646bc8 100644
--- a/pkgs/desktops/gnome-3/3.16/apps/vinagre/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/apps/vinagre/default.nix
@@ -24,6 +24,6 @@ stdenv.mkDerivation rec {
     homepage = https://wiki.gnome.org/Apps/Vinagre;
     description = "Remote desktop viewer for GNOME";
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/adwaita-icon-theme/default.nix b/pkgs/desktops/gnome-3/3.16/core/adwaita-icon-theme/default.nix
index a445ff73608b..6a594aa6a1ee 100644
--- a/pkgs/desktops/gnome-3/3.16/core/adwaita-icon-theme/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/adwaita-icon-theme/default.nix
@@ -13,11 +13,14 @@ stdenv.mkDerivation rec {
   propagatedBuildInputs = [ hicolor_icon_theme ];
 
   buildInputs = [ gdk_pixbuf librsvg ];
-  
+
   nativeBuildInputs = [ pkgconfig intltool iconnamingutils gtk ];
 
+  # remove a tree of dirs with no files within
+  postInstall = '' rm -r "$out/locale" '';
+
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/baobab/default.nix b/pkgs/desktops/gnome-3/3.16/core/baobab/default.nix
index 87c21e3eb010..eb93458ece58 100644
--- a/pkgs/desktops/gnome-3/3.16/core/baobab/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/baobab/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Baobab;
     description = "Graphical application to analyse disk usage in any Gnome environment";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/caribou/default.nix b/pkgs/desktops/gnome-3/3.16/core/caribou/default.nix
index b75b055fc3f3..c2cb6a661abe 100644
--- a/pkgs/desktops/gnome-3/3.16/core/caribou/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/caribou/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-	maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/dconf-editor/default.nix b/pkgs/desktops/gnome-3/3.16/core/dconf-editor/default.nix
index e69bcd390329..94be115e95ce 100644
--- a/pkgs/desktops/gnome-3/3.16/core/dconf-editor/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/dconf-editor/default.nix
@@ -23,6 +23,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/dconf/default.nix b/pkgs/desktops/gnome-3/3.16/core/dconf/default.nix
index 3f71165e7133..990e2007a23f 100644
--- a/pkgs/desktops/gnome-3/3.16/core/dconf/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/dconf/default.nix
@@ -18,6 +18,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/empathy/default.nix b/pkgs/desktops/gnome-3/3.16/core/empathy/default.nix
index ef344c5bf55c..10e52fe92657 100644
--- a/pkgs/desktops/gnome-3/3.16/core/empathy/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/empathy/default.nix
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Empathy;
     description = "Messaging program which supports text, voice, video chat, and file transfers over many different protocols";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     # TODO: license = [ licenses.gpl2 licenses.lgpl2 ];
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/eog/default.nix b/pkgs/desktops/gnome-3/3.16/core/eog/default.nix
index 093bab63fe44..fa1d41ef153e 100644
--- a/pkgs/desktops/gnome-3/3.16/core/eog/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/eog/default.nix
@@ -26,6 +26,6 @@ stdenv.mkDerivation rec {
     homepage = https://wiki.gnome.org/Apps/EyeOfGnome; 
     platforms = platforms.linux;
     description = "GNOME image viewer";
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/epiphany/default.nix b/pkgs/desktops/gnome-3/3.16/core/epiphany/default.nix
index b03fbd4e9c14..72663122a542 100644
--- a/pkgs/desktops/gnome-3/3.16/core/epiphany/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/epiphany/default.nix
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Epiphany;
     description = "WebKit based web browser for GNOME";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/evolution-data-server/default.nix b/pkgs/desktops/gnome-3/3.16/core/evolution-data-server/default.nix
index 82397b385d59..2126aa9ee4db 100644
--- a/pkgs/desktops/gnome-3/3.16/core/evolution-data-server/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/evolution-data-server/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/folks/default.nix b/pkgs/desktops/gnome-3/3.16/core/folks/default.nix
index 5f3954f14f35..6e200bdb3188 100644
--- a/pkgs/desktops/gnome-3/3.16/core/folks/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/folks/default.nix
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
 
     license = stdenv.lib.licenses.lgpl2Plus;
 
-    maintainers = with stdenv.lib.maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     platforms = stdenv.lib.platforms.gnu;  # arbitrary choice
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gcr/default.nix b/pkgs/desktops/gnome-3/3.16/core/gcr/default.nix
index f9d87298fff4..a4a26bca1922 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gcr/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gcr/default.nix
@@ -26,6 +26,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-	maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/default.nix b/pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/default.nix
index 450914ce7459..83642f1afe6f 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gdm/3.16-wip/default.nix
@@ -35,6 +35,6 @@ stdenv.mkDerivation rec {
     homepage = https://wiki.gnome.org/Projects/GDM;
     description = "A program that manages graphical display servers and handles graphical user logins";
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gdm/default.nix b/pkgs/desktops/gnome-3/3.16/core/gdm/default.nix
index 17245bd9d2a9..d4ef3e13eea9 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gdm/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gdm/default.nix
@@ -36,6 +36,6 @@ stdenv.mkDerivation rec {
     homepage = https://wiki.gnome.org/Projects/GDM;
     description = "A program that manages graphical display servers and handles graphical user logins";
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/geocode-glib/default.nix b/pkgs/desktops/gnome-3/3.16/core/geocode-glib/default.nix
index 8c546394bd21..97c5ce2a71ff 100644
--- a/pkgs/desktops/gnome-3/3.16/core/geocode-glib/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/geocode-glib/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-	maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-backgrounds/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-backgrounds/default.nix
index d48e23417221..12b4561e6315 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-backgrounds/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-backgrounds/default.nix
@@ -12,6 +12,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-	maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-bluetooth/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-bluetooth/default.nix
index 5b7d7c19d296..e511cea941c8 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-bluetooth/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-bluetooth/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://help.gnome.org/users/gnome-bluetooth/stable/index.html.en;
     description = "Application that let you manage Bluetooth in the GNOME destkop";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-calculator/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-calculator/default.nix
index c2eb745a7e5e..5ec87f1f8794 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-calculator/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-calculator/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/action/show/Apps/Calculator;
     description = "Application that solves mathematical equations and is suitable as a default application in a Desktop environment";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-common/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-common/default.nix
index b5c99849afe5..98b7a1f8b63a 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-common/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-common/default.nix
@@ -18,6 +18,6 @@ in stdenv.mkDerivation rec {
   propagatedBuildInputs = [ which autoconf automake ]; # autogen.sh which is using gnome_common tends to require which
 
   meta = with stdenv.lib; {
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-contacts/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-contacts/default.nix
index 0983fd266357..ea5a42433897 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-contacts/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-contacts/default.nix
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Contacts;
     description = "Contacts is GNOME's integrated address book";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-control-center/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-control-center/default.nix
index 5d6e504951f7..84bdb7492bb0 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-control-center/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-control-center/default.nix
@@ -55,7 +55,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "Utilities to configure the GNOME desktop";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     platforms = platforms.linux;
   };
 
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-desktop/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-desktop/default.nix
index fc721f936489..c62cbfe72562 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-desktop/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-desktop/default.nix
@@ -25,6 +25,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-dictionary/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-dictionary/default.nix
index a99ddbc9eb45..9917fd4d15c6 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-dictionary/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-dictionary/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Dictionary;
     description = "Dictionary is the GNOME application to look up definitions";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-disk-utility/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-disk-utility/default.nix
index 54034798a494..b5261c214ad1 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-disk-utility/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-disk-utility/default.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = http://en.wikipedia.org/wiki/GNOME_Disks;
     description = "A udisks graphical front-end";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-font-viewer/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-font-viewer/default.nix
index 60492c521646..1523cf14d2e2 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-font-viewer/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-font-viewer/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Program that can preview fonts and create thumbnails for fonts";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-keyring/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-keyring/default.nix
index 4ed0f6c521ba..a6621aebe432 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-keyring/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-keyring/default.nix
@@ -36,6 +36,6 @@ in stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-online-accounts/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-online-accounts/default.nix
index 8e0c17096420..a8e877039b20 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-online-accounts/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-online-accounts/default.nix
@@ -1,7 +1,7 @@
 { stdenv, fetchurl, pkgconfig, glib, libxslt, gtk, makeWrapper
 , webkitgtk, json_glib, rest, libsecret, dbus_glib, gnome_common
 , telepathy_glib, intltool, dbus_libs, icu, autoreconfHook
-, libsoup, docbook_xsl_ns, docbook_xsl, gnome3
+, libsoup, docbook_xsl_ns, docbook_xsl, gnome3, hicolor_icon_theme
 }:
 
 stdenv.mkDerivation rec {
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ pkgconfig glib libxslt gtk webkitgtk json_glib rest gnome_common makeWrapper
                   libsecret dbus_glib telepathy_glib intltool icu libsoup autoreconfHook
-                  docbook_xsl_ns docbook_xsl ];
+                  docbook_xsl_ns docbook_xsl hicolor_icon_theme ];
 
   preFixup = ''
     for f in "$out/libexec/"*; do
@@ -33,6 +33,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-online-miners/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-online-miners/default.nix
index a44d31e9ccb1..4c879b750980 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-online-miners/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-online-miners/default.nix
@@ -30,7 +30,7 @@ in stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Projects/GnomeOnlineMiners;
     description = "A set of crawlers that go through your online content and index them locally in Tracker";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-screenshot/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-screenshot/default.nix
index d571c90f8986..559d084add19 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-screenshot/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-screenshot/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = http://en.wikipedia.org/wiki/GNOME_Screenshot;
     description = "Utility used in the GNOME desktop environment for taking screenshots";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-session/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-session/default.nix
index 63fea43baedf..174210393d41 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-session/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-session/default.nix
@@ -1,5 +1,5 @@
 { fetchurl, stdenv, pkgconfig, gnome3, glib, dbus_glib, json_glib, upower
-, libxslt, intltool, makeWrapper, systemd, xorg }:
+, libxslt, intltool, makeWrapper, systemd, xorg, hicolor_icon_theme }:
 
 
 stdenv.mkDerivation rec {
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
 
   buildInputs = with gnome3;
     [ pkgconfig glib gnome_desktop gtk dbus_glib json_glib libxslt 
-      gnome3.gnome_settings_daemon xorg.xtrans
+      gnome3.gnome_settings_daemon xorg.xtrans hicolor_icon_theme
       gsettings_desktop_schemas upower intltool gconf makeWrapper systemd ];
 
   preFixup = ''
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-settings-daemon/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-settings-daemon/default.nix
index 76c770e51d6b..2477bb7bc1ff 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-settings-daemon/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-settings-daemon/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-shell-extensions/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-shell-extensions/default.nix
index abb7b882a2bf..1b17d1f1f53f 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-shell-extensions/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-shell-extensions/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Projects/GnomeShell/Extensions;
     description = "Modify and extend GNOME Shell functionality and behavior";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-shell/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-shell/default.nix
index c49a4503d638..4d4656a85021 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-shell/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-shell/default.nix
@@ -56,7 +56,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-system-log/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-system-log/default.nix
index f0f2f829a33c..44af987dfe4f 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-system-log/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-system-log/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://help.gnome.org/users/gnome-system-log/3.9/;
     description = "Graphical, menu-driven viewer that you can use to view and monitor your system logs";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-system-monitor/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-system-monitor/default.nix
index e1f4944f86cb..94c7af904ddd 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-system-monitor/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-system-monitor/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://help.gnome.org/users/gnome-system-monitor/3.12/;
     description = "System Monitor shows you what programs are running and how much processor time, memory, and disk space are being used";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-terminal/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-terminal/default.nix
index ccc56cfdb31f..c7432a760cf6 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-terminal/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-terminal/default.nix
@@ -32,6 +32,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-themes-standard/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-themes-standard/default.nix
index 6e98b9817c1e..ff12622d28f0 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-themes-standard/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-themes-standard/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchurl, intltool, gtk3, gnome3, librsvg, pkgconfig, pango, atk, gtk2, gdk_pixbuf }:
+{ stdenv, fetchurl, intltool, gtk3, gnome3, librsvg, pkgconfig, pango, atk, gtk2
+, gdk_pixbuf, hicolor_icon_theme }:
 
 stdenv.mkDerivation rec {
   name = "gnome-themes-standard-${gnome3.version}.0";
@@ -7,10 +8,11 @@ stdenv.mkDerivation rec {
     sha256 = "0kyrbfrgl6g6wm6zpllldz36fclvl8vwmn1snwk18kf7f6ncpsac";
   };
   
-  buildInputs = [ intltool gtk3 librsvg pkgconfig pango atk gtk2 gdk_pixbuf ];
+  buildInputs = [ intltool gtk3 librsvg pkgconfig pango atk gtk2 gdk_pixbuf
+                  hicolor_icon_theme ];
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-user-docs/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-user-docs/default.nix
index 969459aad319..17ebc84ced8c 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-user-docs/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-user-docs/default.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = "https://help.gnome.org/users/gnome-help/${gnome3.version}";
     description = "User and system administration help for the GNOME desktop";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.cc-by-30;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gnome-user-share/default.nix b/pkgs/desktops/gnome-3/3.16/core/gnome-user-share/default.nix
index 2d563e1f7b55..3d2011c01c68 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gnome-user-share/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gnome-user-share/default.nix
@@ -46,7 +46,7 @@ in stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://help.gnome.org/users/gnome-user-share/3.8;
     description = "Service that exports the contents of the Public folder in your home directory on the local network";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/grilo-plugins/default.nix b/pkgs/desktops/gnome-3/3.16/core/grilo-plugins/default.nix
index 9076d5c58390..a236238c257f 100644
--- a/pkgs/desktops/gnome-3/3.16/core/grilo-plugins/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/grilo-plugins/default.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/action/show/Projects/Grilo;
     description = "A collection of plugins for the Grilo framework";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.lgpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/grilo/default.nix b/pkgs/desktops/gnome-3/3.16/core/grilo/default.nix
index a9be29f2b0ed..16dfb638a249 100644
--- a/pkgs/desktops/gnome-3/3.16/core/grilo/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/grilo/default.nix
@@ -9,6 +9,8 @@ stdenv.mkDerivation rec {
     sha256 = "11bvc7rsrjjwz8hp67p3fn8zmywrpawrcbi3vgw8b0dwa0sndd2m";
   };
 
+  setupHook = ./setup-hook.sh;
+
   configureFlags = [ "--enable-grl-pls" "--enable-grl-net" ];
 
   preConfigure = ''
@@ -24,7 +26,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/action/show/Projects/Grilo;
     description = "Framework that provides access to various sources of multimedia content, using a pluggable system";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.lgpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/grilo/setup-hook.sh b/pkgs/desktops/gnome-3/3.16/core/grilo/setup-hook.sh
new file mode 100644
index 000000000000..bc93dddec386
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/core/grilo/setup-hook.sh
@@ -0,0 +1,7 @@
+make_grilo_find_plugins() {
+    if [ -d "$1"/lib/grilo-0.2 ]; then
+        addToSearchPath GRL_PLUGIN_PATH "$1/lib/grilo-0.2"
+    fi
+}
+
+envHooks+=(make_grilo_find_plugins)
diff --git a/pkgs/desktops/gnome-3/3.16/core/gsettings-desktop-schemas/default.nix b/pkgs/desktops/gnome-3/3.16/core/gsettings-desktop-schemas/default.nix
index a13b17fe5e0e..4030ecd5cde8 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gsettings-desktop-schemas/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gsettings-desktop-schemas/default.nix
@@ -20,6 +20,6 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ pkgconfig intltool ];
 
   meta = with stdenv.lib; {
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gsound/default.nix b/pkgs/desktops/gnome-3/3.16/core/gsound/default.nix
index a9dbbb613161..5f255743313e 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gsound/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gsound/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, glib, libcanberra, gobjectIntrospection, libtool }:
+{ stdenv, fetchurl, pkgconfig, glib, libcanberra, gobjectIntrospection, libtool, gnome3 }:
 
 let
   majVer = "1.0";
@@ -15,7 +15,7 @@ in stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Projects/GSound;
     description = "Small library for playing system sounds";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/gtksourceview/default.nix b/pkgs/desktops/gnome-3/3.16/core/gtksourceview/default.nix
index 0de89bc5dd65..3aacdef9455e 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gtksourceview/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gtksourceview/default.nix
@@ -22,6 +22,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/gucharmap/default.nix b/pkgs/desktops/gnome-3/3.16/core/gucharmap/default.nix
index 454196df7a6b..71a8dbf0ff84 100644
--- a/pkgs/desktops/gnome-3/3.16/core/gucharmap/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/gucharmap/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Gucharmap;
     description = "GNOME Character Map, based on the Unicode Character Database";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl3;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/libgee/default.nix b/pkgs/desktops/gnome-3/3.16/core/libgee/default.nix
index 82536735b390..4ff132950319 100644
--- a/pkgs/desktops/gnome-3/3.16/core/libgee/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/libgee/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, autoconf, vala, pkgconfig, glib, gobjectIntrospection }:
+{ stdenv, fetchurl, autoconf, vala, pkgconfig, glib, gobjectIntrospection, gnome3 }:
 let
   ver_maj = "0.16";
   ver_min = "1";
@@ -21,6 +21,6 @@ stdenv.mkDerivation rec {
     description = "Utility library providing GObject-based interfaces and classes for commonly used data structures";
     license = licenses.lgpl21Plus;
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/libgnomekbd/default.nix b/pkgs/desktops/gnome-3/3.16/core/libgnomekbd/default.nix
index 1156474e5a7c..4939a4ff7281 100644
--- a/pkgs/desktops/gnome-3/3.16/core/libgnomekbd/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/libgnomekbd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, file, intltool, glib, gtk3, libxklavier, makeWrapper }:
+{ stdenv, fetchurl, pkgconfig, file, intltool, glib, gtk3, libxklavier, makeWrapper, gnome3 }:
 
 stdenv.mkDerivation rec {
   name = "libgnomekbd-3.6.0";
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Keyboard management library";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/libgweather/default.nix b/pkgs/desktops/gnome-3/3.16/core/libgweather/default.nix
index 571fc73e0398..8ba578bad2b8 100644
--- a/pkgs/desktops/gnome-3/3.16/core/libgweather/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/libgweather/default.nix
@@ -17,6 +17,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/libpeas/default.nix b/pkgs/desktops/gnome-3/3.16/core/libpeas/default.nix
index e59d81f3c1d4..1787734939d1 100644
--- a/pkgs/desktops/gnome-3/3.16/core/libpeas/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/libpeas/default.nix
@@ -1,5 +1,5 @@
-{ stdenv, fetchurl, pkgconfig, intltool
-, glib, gtk3, gobjectIntrospection, python, pygobject3
+{ stdenv, fetchurl, pkgconfig, intltool, gnome3
+, glib, gtk3, gobjectIntrospection, python, pygobject3, hicolor_icon_theme
 }:
 
 let
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
 
   buildInputs =  [
    intltool pkgconfig
-   glib gtk3 gobjectIntrospection python pygobject3
+   glib gtk3 gobjectIntrospection python pygobject3 hicolor_icon_theme
   ];
 
   src = fetchurl {
@@ -27,6 +27,6 @@ stdenv.mkDerivation rec {
     homepage = "http://ftp.acc.umu.se/pub/GNOME/sources/libpeas/";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/mutter/default.nix b/pkgs/desktops/gnome-3/3.16/core/mutter/default.nix
index 9b91cd987778..a60db8f93f24 100644
--- a/pkgs/desktops/gnome-3/3.16/core/mutter/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/mutter/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/nautilus/default.nix b/pkgs/desktops/gnome-3/3.16/core/nautilus/default.nix
index 6d004ceb2a37..a4e94db0b74e 100644
--- a/pkgs/desktops/gnome-3/3.16/core/nautilus/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/nautilus/default.nix
@@ -25,6 +25,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/rest/default.nix b/pkgs/desktops/gnome-3/3.16/core/rest/default.nix
index ee22cd97f6e0..354f1715dc19 100644
--- a/pkgs/desktops/gnome-3/3.16/core/rest/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/rest/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, glib, libsoup, gobjectIntrospection, cacert }:
+{ stdenv, fetchurl, pkgconfig, glib, libsoup, gobjectIntrospection, cacert, gnome3 }:
 
 stdenv.mkDerivation rec {
   name = "rest-0.7.92";
@@ -14,6 +14,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/core/sushi/default.nix b/pkgs/desktops/gnome-3/3.16/core/sushi/default.nix
index 9105dd8e7367..8f7c5675cc2a 100644
--- a/pkgs/desktops/gnome-3/3.16/core/sushi/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/sushi/default.nix
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = "http://en.wikipedia.org/wiki/Sushi_(software)";
     description = "A quick previewer for Nautilus";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/totem-pl-parser/default.nix b/pkgs/desktops/gnome-3/3.16/core/totem-pl-parser/default.nix
index f1b3bfe53c13..63f36004bcd6 100644
--- a/pkgs/desktops/gnome-3/3.16/core/totem-pl-parser/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/totem-pl-parser/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, file, intltool, gmime, libxml2, libsoup }:
+{ stdenv, fetchurl, pkgconfig, file, intltool, gmime, libxml2, libsoup, gnome3 }:
 
 stdenv.mkDerivation rec {
   name = "totem-pl-parser-3.10.2";
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Videos;
     description = "Simple GObject-based library to parse and save a host of playlist formats";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.lgpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/totem/default.nix b/pkgs/desktops/gnome-3/3.16/core/totem/default.nix
index 511a37e09a0b..d99a24bbfa2d 100644
--- a/pkgs/desktops/gnome-3/3.16/core/totem/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/totem/default.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Videos;
     description = "Movie player for the GNOME desktop based on GStreamer";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/tracker/default.nix b/pkgs/desktops/gnome-3/3.16/core/tracker/default.nix
index 2b11c22c5f39..4265d70a4f9f 100644
--- a/pkgs/desktops/gnome-3/3.16/core/tracker/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/tracker/default.nix
@@ -49,7 +49,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Projects/Tracker;
     description = "Desktop-neutral user information store, search tool and indexer";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/yelp-xsl/default.nix b/pkgs/desktops/gnome-3/3.16/core/yelp-xsl/default.nix
index 3ade5f355d44..a76a2e3073ff 100644
--- a/pkgs/desktops/gnome-3/3.16/core/yelp-xsl/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/yelp-xsl/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Yelp;
     description = "Yelp's universal stylesheets for Mallard and DocBook";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = [licenses.gpl2 licenses.lgpl2];
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/yelp/default.nix b/pkgs/desktops/gnome-3/3.16/core/yelp/default.nix
index 413042d752c5..11aaae1e6cb6 100644
--- a/pkgs/desktops/gnome-3/3.16/core/yelp/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/yelp/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Yelp;
     description = "The help viewer in Gnome";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/core/zenity/default.nix b/pkgs/desktops/gnome-3/3.16/core/zenity/default.nix
index aca42f1dbc2c..9ce2726e7042 100644
--- a/pkgs/desktops/gnome-3/3.16/core/zenity/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/core/zenity/default.nix
@@ -23,6 +23,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-	maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/default.nix b/pkgs/desktops/gnome-3/3.16/default.nix
index 67236ae202bb..4d30520df117 100644
--- a/pkgs/desktops/gnome-3/3.16/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/default.nix
@@ -21,6 +21,7 @@ let
     glib_networking gvfs dconf gnome-backgrounds gnome_control_center
     gnome-menus gnome_settings_daemon gnome_shell
     gnome_themes_standard defaultIconTheme gnome-shell-extensions
+    pkgs.hicolor_icon_theme
   ];
 
   optionalPackages = with gnome3; [ baobab empathy eog epiphany evince
@@ -32,7 +33,9 @@ let
     nautilus-sendto dconf-editor vinagre
   ];
 
-  gamesPackages = with gnome3; [ swell-foop lightsoff iagno ];
+  gamesPackages = with gnome3; [ swell-foop lightsoff iagno
+    tali quadrapassel
+  ];
 
   inherit (pkgs) glib gtk2 webkitgtk24x gtk3 gtkmm3 libcanberra;
   inherit (pkgs.gnome2) ORBit2;
@@ -50,6 +53,7 @@ let
   gegl_0_3 = pkgs.gegl_0_3.override { inherit gtk; };
 
   version = "3.16";
+  maintainers = with pkgs.lib.maintainers; [ lethalman ];
 
 # Simplify the nixos module and gnome packages
   defaultIconTheme = adwaita-icon-theme;
@@ -290,6 +294,10 @@ let
 
   swell-foop = callPackage ./games/swell-foop { };
 
+  tali = callPackage ./games/tali { };
+
+  quadrapassel = callPackage ./games/quadrapassel { };
+
 #### Misc -- other packages on http://ftp.gnome.org/pub/GNOME/sources/
 
   california = callPackage ./misc/california { };
diff --git a/pkgs/desktops/gnome-3/3.16/devtools/gdl/default.nix b/pkgs/desktops/gnome-3/3.16/devtools/gdl/default.nix
index e12f41c9b7f8..aa7aa8b469d0 100644
--- a/pkgs/desktops/gnome-3/3.16/devtools/gdl/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/devtools/gdl/default.nix
@@ -18,7 +18,7 @@ in stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     description = "Gnome docking library";
     homepage = https://developer.gnome.org/gdl/;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/games/iagno/default.nix b/pkgs/desktops/gnome-3/3.16/games/iagno/default.nix
index 90d31eaa5cf0..945ae7d0fda5 100644
--- a/pkgs/desktops/gnome-3/3.16/games/iagno/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/games/iagno/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Iagno;
     description = "Computer version of the game Reversi, more popularly called Othello";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/games/lightsoff/default.nix b/pkgs/desktops/gnome-3/3.16/games/lightsoff/default.nix
index e24f90812c0b..37b8337200d6 100644
--- a/pkgs/desktops/gnome-3/3.16/games/lightsoff/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/games/lightsoff/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Lightsoff;
     description = "Puzzle game, where the objective is to turn off all of the tiles on the board";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/games/quadrapassel/default.nix b/pkgs/desktops/gnome-3/3.16/games/quadrapassel/default.nix
new file mode 100644
index 000000000000..98cfd55a31eb
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/games/quadrapassel/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf
+, librsvg, libcanberra_gtk3
+, intltool, itstool, libxml2, clutter, clutter_gtk, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  name = "quadrapassel-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/quadrapassel/${gnome3.version}/${name}.tar.xz";
+    sha256 = "17c6ddjgmakj615ahnrmrzayjxc2ylr8dddfzi9py875q5vk7grx";
+  };
+
+  buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg
+                  libcanberra_gtk3 itstool intltool clutter
+                  libxml2 clutter_gtk wrapGAppsHook ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Quadrapassel;
+    description = "Classic falling-block game, Tetris";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/games/swell-foop/default.nix b/pkgs/desktops/gnome-3/3.16/games/swell-foop/default.nix
index 4afe66ee5450..ff3c37c15e64 100644
--- a/pkgs/desktops/gnome-3/3.16/games/swell-foop/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/games/swell-foop/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = "https://wiki.gnome.org/Apps/Swell%20Foop";
     description = "Puzzle game, previously known as Same GNOME";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/games/tali/default.nix b/pkgs/desktops/gnome-3/3.16/games/tali/default.nix
new file mode 100644
index 000000000000..a38d8845bef0
--- /dev/null
+++ b/pkgs/desktops/gnome-3/3.16/games/tali/default.nix
@@ -0,0 +1,24 @@
+{ stdenv, fetchurl, pkgconfig, gtk3, gnome3, gdk_pixbuf
+, librsvg, intltool, itstool, libxml2, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  name = "tali-${gnome3.version}.1";
+
+  src = fetchurl {
+    url = "mirror://gnome/sources/tali/${gnome3.version}/${name}.tar.xz";
+    sha256 = "10cfgxiqg38z5ngkiznglxjgm1552mjvfw4bjhjic0yi5cvdr6dg";
+  };
+
+  buildInputs = [ pkgconfig gtk3 gnome3.defaultIconTheme gdk_pixbuf librsvg
+                  libxml2 itstool intltool wrapGAppsHook ];
+
+  enableParallelBuilding = true;
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Apps/Tali;
+    description = "Sort of poker with dice and less money";
+    maintainers = gnome3.maintainers;
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/3.16/misc/geary/default.nix b/pkgs/desktops/gnome-3/3.16/misc/geary/default.nix
index b9a62642c1df..1cf656fe7dcb 100644
--- a/pkgs/desktops/gnome-3/3.16/misc/geary/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/misc/geary/default.nix
@@ -45,7 +45,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/Apps/Geary;
     description = "Mail client for GNOME 3";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.lgpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gexiv2/default.nix b/pkgs/desktops/gnome-3/3.16/misc/gexiv2/default.nix
index 1508338f6cae..7cea9cd8d150 100644
--- a/pkgs/desktops/gnome-3/3.16/misc/gexiv2/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/misc/gexiv2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, exiv2, glib, libtool, m4 }:
+{ stdenv, fetchurl, pkgconfig, exiv2, glib, libtool, m4, gnome3 }:
 
 let
   majorVersion = "0.10";
@@ -23,6 +23,6 @@ stdenv.mkDerivation rec {
     homepage = https://wiki.gnome.org/Projects/gexiv2;
     description = "GObject wrapper around the Exiv2 photo metadata library";
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gfbgraph/default.nix b/pkgs/desktops/gnome-3/3.16/misc/gfbgraph/default.nix
index d36534f0d32f..e85b087fa41f 100644
--- a/pkgs/desktops/gnome-3/3.16/misc/gfbgraph/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/misc/gfbgraph/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "GLib/GObject wrapper for the Facebook Graph API";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.lgpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/default.nix b/pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/default.nix
index 2af75a7ffac3..2777dc5ca090 100644
--- a/pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/misc/gnome-tweak-tool/default.nix
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = https://wiki.gnome.org/action/show/Apps/GnomeTweakTool;
     description = "A tool to customize advanced GNOME 3 options";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl3;
     platforms = platforms.linux;
   };
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gpaste/default.nix b/pkgs/desktops/gnome-3/3.16/misc/gpaste/default.nix
index 3975b84a05a7..f3c751f458d9 100644
--- a/pkgs/desktops/gnome-3/3.16/misc/gpaste/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/misc/gpaste/default.nix
@@ -39,6 +39,6 @@ stdenv.mkDerivation rec {
     description = "Clipboard management system with GNOME3 integration";
     license = licenses.gpl3;
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/misc/gtkhtml/default.nix b/pkgs/desktops/gnome-3/3.16/misc/gtkhtml/default.nix
index 49d888a866be..d86e234e80f5 100644
--- a/pkgs/desktops/gnome-3/3.16/misc/gtkhtml/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/misc/gtkhtml/default.nix
@@ -19,6 +19,6 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     platforms = platforms.linux;
-    maintainers = [ maintainers.lethalman ];
+    maintainers = gnome3.maintainers;
   };
 }
diff --git a/pkgs/desktops/gnome-3/3.16/misc/libmediaart/default.nix b/pkgs/desktops/gnome-3/3.16/misc/libmediaart/default.nix
index 5ac6b50198bd..b86480125730 100644
--- a/pkgs/desktops/gnome-3/3.16/misc/libmediaart/default.nix
+++ b/pkgs/desktops/gnome-3/3.16/misc/libmediaart/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, glib, gdk_pixbuf, gobjectIntrospection }:
+{ stdenv, fetchurl, pkgconfig, glib, gdk_pixbuf, gobjectIntrospection, gnome3 }:
 
 let
   majorVersion = "1.9";
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     description = "Library tasked with managing, extracting and handling media art caches";
-    maintainers = with maintainers; [ lethalman ];
+    maintainers = gnome3.maintainers;
     license = licenses.gpl2;
     platforms = platforms.linux;
   };
diff --git a/pkgs/development/compilers/rustc/head.nix b/pkgs/development/compilers/rustc/head.nix
index 2e890f2fb760..9d415eed0b46 100644
--- a/pkgs/development/compilers/rustc/head.nix
+++ b/pkgs/development/compilers/rustc/head.nix
@@ -1,16 +1,16 @@
 { stdenv, callPackage }:
 callPackage ./generic.nix {
-  shortVersion = "2015-07-01";
+  shortVersion = "2015-07-28";
   isRelease = false;
-  # src rev for master on 2015-07-01
-  srcRev = "bf3c979ec";
-  srcSha = "1xp2fjffz5bwxfs37w80bdhy9lv091ps7xbnsvxid2i91rbxfrkk";
-  snapshotHashLinux686 = "a6f22e481eabf098cc65bda97bf7e434a1fcc20b";
-  snapshotHashLinux64 = "5fd8698fdfe953e6c4d86cf4fa1d5f3a0053248c";
-  snapshotHashDarwin686 = "9a273324a6b63a40f67a553029c0a9fb692ffd1f";
-  snapshotHashDarwin64 = "e5b12cb7c179fc98fa905a3c84803645d946a6ae";
-  snapshotDate = "2015-05-24";
-  snapshotRev = "ba0e1cd";
+  # src rev for 2015-07-28's nightly channel
+  srcRev = "8b835572b";
+  srcSha = "1qrw0vszr1zipsbp7gcm8kik73d2bfxwv6mniv81ygn9i7v76wfz";
+  snapshotHashLinux686 = "93f6216a35d3bed3cedf244c9aff4cd716336bd9";
+  snapshotHashLinux64 = "d8f4967fc71a153c925faecf95a7feadf7e463a4";
+  snapshotHashDarwin686 = "29852c4d4b5a851f16d627856a279cae5bf9bd01";
+  snapshotHashDarwin64 = "1a20259899321062a0325edb1d22990f05d18708";
+  snapshotDate = "2015-07-17";
+  snapshotRev = "d4432b3";
   patches = [
     ./patches/head.patch
   ] ++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch;
diff --git a/pkgs/development/compilers/rustc/patches/head.patch b/pkgs/development/compilers/rustc/patches/head.patch
index d7bede68682b..ace22c825f9e 100644
--- a/pkgs/development/compilers/rustc/patches/head.patch
+++ b/pkgs/development/compilers/rustc/patches/head.patch
@@ -1,11 +1,11 @@
 diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
-index a42f861..bda4bde 100644
+index 39e4291..b352bd1 100644
 --- a/src/librustc_back/target/mod.rs
 +++ b/src/librustc_back/target/mod.rs
-@@ -172,8 +172,8 @@ impl Default for TargetOptions {
-     /// incomplete, and if used for compilation, will certainly not work.
+@@ -179,8 +179,8 @@ impl Default for TargetOptions {
      fn default() -> TargetOptions {
          TargetOptions {
+             data_layout: String::new(),
 -            linker: "cc".to_string(),
 -            ar: "ar".to_string(),
 +            linker: "@ccPath@".to_string(), // ignore-tidy-linelength
diff --git a/pkgs/development/compilers/smlnj/default.nix b/pkgs/development/compilers/smlnj/default.nix
index a2b8d4f63b98..e4d4dc1ae10c 100644
--- a/pkgs/development/compilers/smlnj/default.nix
+++ b/pkgs/development/compilers/smlnj/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchurl, darwin }:
 let
   version = "110.78";
   baseurl = "http://smlnj.cs.uchicago.edu/dist/working/${version}";
@@ -34,7 +34,15 @@ in stdenv.mkDerivation {
   patchPhase = ''
     sed -i '/PATH=/d' config/_arch-n-opsys base/runtime/config/gen-posix-names.sh
     echo SRCARCHIVEURL="file:/$TMP" > config/srcarchiveurl
-  '';
+  '' + stdenv.lib.optionalString stdenv.isDarwin (with darwin; ''
+    sed -i '/^[[:space:]]*\*x86-darwin\*)$/,/^[[:space:]]*\*) ;;/ c\
+\  \*x86-darwin\*)\
+\    INCLFILE=${osx_sdk}/Developer/SDKs/${osx_sdk.name}/usr/include/unistd.h\
+\    ;;\
+\  \*) ;;
+' base/runtime/config/gen-posix-names.sh
+    sed -i 's|^AS =\([[:space:]]*\)/usr/bin/as|AS =\1as|' base/runtime/objs/mk.x86-darwin
+  '');
 
   unpackPhase = ''
     for s in $sources; do
@@ -64,7 +72,7 @@ in stdenv.mkDerivation {
     description = "Standard ML of New Jersey, a compiler";
     homepage    = http://smlnj.org;
     license     = licenses.bsd3;
-    platforms   = [ "i686-linux" ];
+    platforms   = [ "i686-linux" ] ++ platforms.darwin;
     maintainers = with maintainers; [ thoughtpolice ];
   };
 }
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index 5260d508ab12..30c5912a5a88 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -21,6 +21,8 @@ self: super: {
   options = dontCheck super.options;
   statistics = dontCheck super.statistics;
   text = dontCheck super.text;
+  c2hs = dontCheck super.c2hs;
+  mockery = dontCheck super.mockery;
 
   # The package doesn't compile with ruby 1.9, which is our default at the moment.
   hruby = super.hruby.override { ruby = pkgs.ruby_2_1; };
diff --git a/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix b/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix
index b223eeb134b9..e9f2219f07e4 100644
--- a/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix
+++ b/pkgs/development/haskell-modules/configuration-ghc-7.10.x.nix
@@ -144,11 +144,6 @@ self: super: {
     prePatch = "sed -i 's|4\.8|4.9|' diagrams-core.cabal";
   });
 
-  misfortune = appendPatch super.misfortune (pkgs.fetchpatch {
-    url = "https://github.com/mokus0/misfortune/commit/9e0a38cf8d59a0de9ae1156034653f32099610e4.patch";
-    sha256 = "01m1l199ihq85j9pyc3n0wqv1z4my453hhhcvg3yz3gpz3lf224r";
-  });
-
   timezone-series = doJailbreak super.timezone-series;
   timezone-olson = doJailbreak super.timezone-olson;
   libmpd = dontCheck super.libmpd;
diff --git a/pkgs/development/haskell-modules/hackage-packages.nix b/pkgs/development/haskell-modules/hackage-packages.nix
index ba7bc517aa72..622ebfa74738 100644
--- a/pkgs/development/haskell-modules/hackage-packages.nix
+++ b/pkgs/development/haskell-modules/hackage-packages.nix
@@ -54313,7 +54313,7 @@ self: {
          yesod-static
        ];
        buildTools = [
-         bup curl git gnupg lsof openssh perl rsync wget which
+         curl git gnupg openssh perl rsync wget which
        ];
        configureFlags = [ "-fassistant" "-fproduction" ];
        preConfigure = "export HOME=$TEMPDIR";
diff --git a/pkgs/development/interpreters/php/5.4.nix b/pkgs/development/interpreters/php/5.4.nix
index c1ba35a91343..c9391a4e24fc 100644
--- a/pkgs/development/interpreters/php/5.4.nix
+++ b/pkgs/development/interpreters/php/5.4.nix
@@ -1,6 +1,6 @@
 { callPackage, apacheHttpd }:
 callPackage ./generic.nix {
-  phpVersion = "5.4.42";
-  sha = "1yg03b6a88i7hg593m9zmmcm4kr59wdrhz9xk1frx9ps9gkb51b2";
+  phpVersion = "5.4.43";
+  sha = "0sydirpwg150wxsjrpp3m38564832wviglmsylhbbl8an17p5mr5";
   apacheHttpd = apacheHttpd;
 }
diff --git a/pkgs/development/interpreters/php/5.5.nix b/pkgs/development/interpreters/php/5.5.nix
index 0d66e64693a9..18dfde4ae67c 100644
--- a/pkgs/development/interpreters/php/5.5.nix
+++ b/pkgs/development/interpreters/php/5.5.nix
@@ -1,6 +1,6 @@
 { callPackage, apacheHttpd  }:
 callPackage ./generic.nix {
-  phpVersion = "5.5.25";
-  sha = "0qrc4qll07hfs5a3l4ajrj7969w10d0n146zq1smdl6x4pkkgpv8";
+  phpVersion = "5.5.27";
+  sha = "0w0zgqria3i3mrp03p9m0613xlaj3vsw9girmslngjn06jjwdd64";
   apacheHttpd = apacheHttpd;
 }
diff --git a/pkgs/development/interpreters/php/5.6.nix b/pkgs/development/interpreters/php/5.6.nix
index e05f1ae10bd8..51ba06b2922a 100644
--- a/pkgs/development/interpreters/php/5.6.nix
+++ b/pkgs/development/interpreters/php/5.6.nix
@@ -1,6 +1,6 @@
 { callPackage, apacheHttpd  }:
 callPackage ./generic.nix {
-  phpVersion = "5.6.10";
-  sha = "0iccgibmbc659z6dh6c58l1b7vnqly7al37fbs0l3si4qy0rqmqa";
+  phpVersion = "5.6.11";
+  sha = "0riq0c8s8anb1nxvn3ljs7wdn811903sv7kl8ir2ck3n2q42csxx";
   apacheHttpd = apacheHttpd;
 }
diff --git a/pkgs/development/libraries/freetds/default.nix b/pkgs/development/libraries/freetds/default.nix
index 11d10e73cdd7..695abcfbba2b 100644
--- a/pkgs/development/libraries/freetds/default.nix
+++ b/pkgs/development/libraries/freetds/default.nix
@@ -4,11 +4,11 @@
 assert odbcSupport -> unixODBC != null;
 
 stdenv.mkDerivation rec {
-  name = "freetds-0.91.112";
+  name = "freetds-0.91";
 
   src = fetchurl {
-    url = "ftp://ftp.astron.com/pub/freetds/stable/${name}.tar.gz";
-    sha256 = "be4f04ee57328c32e7e7cd7e2e1483e535071cec6101e46b9dd15b857c5078ed";
+    url = "http://mirrors.ibiblio.org/freetds/stable/${name}.tar.gz";
+    sha256 = "0r946axzxs0czsmr7283w7vmk5jx3jnxxc32d2ncxsrsh2yli0ba";
   };
 
   buildInputs = stdenv.lib.optional odbcSupport [ unixODBC ];
@@ -30,4 +30,3 @@ stdenv.mkDerivation rec {
     platforms = stdenv.lib.platforms.all;
   };
 }
-
diff --git a/pkgs/development/libraries/libarchive/default.nix b/pkgs/development/libraries/libarchive/default.nix
index 60777614881d..2a3e740b2e7a 100644
--- a/pkgs/development/libraries/libarchive/default.nix
+++ b/pkgs/development/libraries/libarchive/default.nix
@@ -24,6 +24,10 @@ stdenv.mkDerivation rec {
     echo "#include <windows.h>" >> config.h
   '' else null;
 
+  preFixup = ''
+    sed 's|-lcrypto|-L${openssl}/lib -lcrypto|' -i $out/lib/libarchive.la
+  '';
+
   meta = {
     description = "Multi-format archive and compression library";
     longDescription = ''
diff --git a/pkgs/development/libraries/ti-rpc/default.nix b/pkgs/development/libraries/ti-rpc/default.nix
index 26eb8f526c87..a4d210547fd2 100644
--- a/pkgs/development/libraries/ti-rpc/default.nix
+++ b/pkgs/development/libraries/ti-rpc/default.nix
@@ -1,4 +1,4 @@
-{ fetchurl, stdenv, libkrb5 }:
+{ fetchurl, stdenv, autoreconfHook, libkrb5 }:
 
 stdenv.mkDerivation rec {
   name = "libtirpc-0.3.2";
@@ -8,8 +8,12 @@ stdenv.mkDerivation rec {
     sha256 = "1z1z8xnlqgqznxzmyc6sypjc6b220xkv0s55hxd5sb3zydws6210";
   };
 
+  nativeBuildInputs = [ autoreconfHook ];
   propagatedBuildInputs = [ libkrb5 ];
 
+  # http://sourceforge.net/p/libtirpc/mailman/libtirpc-devel/thread/5581CB06.5020604%40email.com/#msg34216933
+  patches = [ ./fix_missing_rpc_get_default_domain.patch ];
+
   preConfigure = ''
     sed -es"|/etc/netconfig|$out/etc/netconfig|g" -i doc/Makefile.in tirpc/netconfig.h
   '';
diff --git a/pkgs/development/libraries/ti-rpc/fix_missing_rpc_get_default_domain.patch b/pkgs/development/libraries/ti-rpc/fix_missing_rpc_get_default_domain.patch
new file mode 100644
index 000000000000..c905d3c0de87
--- /dev/null
+++ b/pkgs/development/libraries/ti-rpc/fix_missing_rpc_get_default_domain.patch
@@ -0,0 +1,88 @@
+diff -rNu3 libtirpc-0.3.2-old/src/Makefile.am libtirpc-0.3.2/src/Makefile.am
+--- libtirpc-0.3.2-old/src/Makefile.am	2015-07-28 15:17:49.248168000 +0300
++++ libtirpc-0.3.2/src/Makefile.am	2015-07-28 15:18:04.870144456 +0300
+@@ -69,7 +69,7 @@
+ endif
+ 
+ libtirpc_la_SOURCES += key_call.c key_prot_xdr.c getpublickey.c
+-libtirpc_la_SOURCES += netname.c netnamer.c rtime.c
++libtirpc_la_SOURCES += netname.c netnamer.c rpcdname.c rtime.c
+ 
+ CLEANFILES	       = cscope.* *~
+ DISTCLEANFILES	       = Makefile.in
+diff -rNu3 libtirpc-0.3.2-old/src/rpcdname.c libtirpc-0.3.2/src/rpcdname.c
+--- libtirpc-0.3.2-old/src/rpcdname.c	1970-01-01 03:00:00.000000000 +0300
++++ libtirpc-0.3.2/src/rpcdname.c	2015-07-28 15:18:04.870144456 +0300
+@@ -0,0 +1,72 @@
++/*
++ * Copyright (c) 2009, Sun Microsystems, Inc.
++ * All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions are met:
++ * - Redistributions of source code must retain the above copyright notice,
++ *   this list of conditions and the following disclaimer.
++ * - Redistributions in binary form must reproduce the above copyright notice,
++ *   this list of conditions and the following disclaimer in the documentation
++ *   and/or other materials provided with the distribution.
++ * - Neither the name of Sun Microsystems, Inc. nor the names of its
++ *   contributors may be used to endorse or promote products derived
++ *   from this software without specific prior written permission.
++ *
++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
++ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
++ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
++ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
++ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
++ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
++ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
++ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
++ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
++ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
++ * POSSIBILITY OF SUCH DAMAGE.
++ */
++
++/*
++ * rpcdname.c
++ * Gets the default domain name
++ */
++
++#include <stdlib.h>
++#include <unistd.h>
++#include <string.h>
++
++static char *default_domain = 0;
++
++static char *
++get_default_domain()
++{
++	char temp[256];
++
++	if (default_domain)
++		return (default_domain);
++	if (getdomainname(temp, sizeof(temp)) < 0)
++		return (0);
++	if ((int) strlen(temp) > 0) {
++		default_domain = (char *)malloc((strlen(temp)+(unsigned)1));
++		if (default_domain == 0)
++			return (0);
++		(void) strcpy(default_domain, temp);
++		return (default_domain);
++	}
++	return (0);
++}
++
++/*
++ * This is a wrapper for the system call getdomainname which returns a
++ * ypclnt.h error code in the failure case.  It also checks to see that
++ * the domain name is non-null, knowing that the null string is going to
++ * get rejected elsewhere in the NIS client package.
++ */
++int
++__rpc_get_default_domain(domain)
++	char **domain;
++{
++	if ((*domain = get_default_domain()) != 0)
++		return (0);
++	return (-1);
++}
diff --git a/pkgs/development/tools/misc/lsof/default.nix b/pkgs/development/tools/misc/lsof/default.nix
index 53bbcf228428..f7feeca5d9d6 100644
--- a/pkgs/development/tools/misc/lsof/default.nix
+++ b/pkgs/development/tools/misc/lsof/default.nix
@@ -5,7 +5,11 @@ stdenv.mkDerivation rec {
   version = "4.89";
 
   src = fetchurl {
-    url = "ftp://sunsite.ualberta.ca/pub/Mirror/lsof/lsof_${version}.tar.bz2";
+    urls = map (
+      # the tarball is moved after new version is released
+      isOld: "ftp://sunsite.ualberta.ca/pub/Mirror/lsof/"
+      + "${stdenv.lib.optionalString isOld "OLD/"}lsof_${version}.tar.bz2"
+    ) [ false true ];
     sha256 = "061p18v0mhzq517791xkjs8a5dfynq1418a1mwxpji69zp2jzb41";
   };
 
diff --git a/pkgs/development/web/iojs/default.nix b/pkgs/development/web/iojs/default.nix
index d5f9baa05282..e8658e091836 100644
--- a/pkgs/development/web/iojs/default.nix
+++ b/pkgs/development/web/iojs/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl, python, utillinux, openssl_1_0_2, http-parser, zlib, libuv }:
 
 let
-  version = "2.4.0";
+  version = "2.5.0";
   inherit (stdenv.lib) optional maintainers licenses platforms;
 in stdenv.mkDerivation {
   name = "iojs-${version}";
 
   src = fetchurl {
     url = "https://iojs.org/dist/v${version}/iojs-v${version}.tar.gz";
-    sha256 = "0g81bn8q4zgm8skkbxbzwa22dnpbing4b5wjqacvpxq3ygz4c98y";
+    sha256 = "0jj0xqwpq7s45bycs406ml12xyknxgad4vyw9k84al3551m5y2wd";
   };
 
   prePatch = ''
diff --git a/pkgs/games/adom/default.nix b/pkgs/games/adom/default.nix
index d44da3d41b7c..74fe5232fa11 100644
--- a/pkgs/games/adom/default.nix
+++ b/pkgs/games/adom/default.nix
@@ -1,8 +1,7 @@
-{ stdenv, patchelf, zlib, libmad, libpng12, libcaca, mesa, alsaLib, libpulseaudio
-, xlibs, plowshare }:
-
-assert stdenv.isLinux;
+{ stdenv, fetchurl, patchelf, zlib, libmad, libpng12, libcaca, mesa, alsaLib, libpulseaudio
+, xlibs }:
 
+assert stdenv.system == "x86_64-linux";
 let
 
   inherit (xlibs) libXext libX11;
@@ -11,21 +10,13 @@ let
       zlib libmad libpng12 libcaca libXext libX11 mesa alsaLib libpulseaudio];
 
 in
-assert stdenv.is64bit;
 stdenv.mkDerivation rec {
+  name = "adom-${version}-noteye";
+  version = "1.2.0_pre23";
 
-  name = "adom-1.2.0-noteye";
-
-  # couldn't make fetchurl appear non-robot, even with --user-agent
-  src = stdenv.mkDerivation {
-    name = "adom-1.2.0-noteye.tar.gz";
-    buildCommand = ''
-      ${plowshare}/bin/plowdown "http://www30.zippyshare.com/v/39200582/file.html"
-      F=`ls *tar.gz`
-      mv $F $out
-    '';
-    outputHashAlgo = "sha256";
-    outputHash = "1f825845d5007e676a4d1a3ccd887904b959bdddbcb9f241c42c2dac34037669";
+  src = fetchurl {
+    url = "http://ancardia.uk.to/download/adom_noteye_linux_ubuntu_64_${version}.tar.gz";
+    sha256 = "0sbn0csaqb9cqi0z5fdwvnymkf84g64csg0s9mm6fzh0sm2mi0hz";
   };
 
   buildCommand = ''
@@ -52,7 +43,7 @@ stdenv.mkDerivation rec {
     mkdir $out/bin
     cat >$out/bin/adom <<EOF
     #! ${stdenv.shell}
-    (cd $out; $out/adom ; )
+    (cd $out; exec $out/adom ; )
     EOF
     chmod +x $out/bin/adom
   '';
diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix
index cb7423f293a4..7063017b3a8c 100644
--- a/pkgs/os-specific/linux/kernel/common-config.nix
+++ b/pkgs/os-specific/linux/kernel/common-config.nix
@@ -338,6 +338,7 @@ with stdenv.lib;
   X86_MCE y
 
   # Linux containers.
+  NAMESPACES? y #  Required by 'unshare' used by 'nixos-install'
   RT_GROUP_SCHED? y
   CGROUP_DEVICE? y
   ${if versionAtLeast version "3.6" then ''
diff --git a/pkgs/os-specific/linux/kernel/linux-rpi.nix b/pkgs/os-specific/linux/kernel/linux-rpi.nix
index 67a51dc767df..02b297081315 100644
--- a/pkgs/os-specific/linux/kernel/linux-rpi.nix
+++ b/pkgs/os-specific/linux/kernel/linux-rpi.nix
@@ -7,7 +7,7 @@ let
 in import ./generic.nix (args // rec {
   version = "3.18.y-${rev}";
 
-  modDirVersion = "3.18.7-v7";
+  modDirVersion = "3.18.7";
 
   src = fetchurl {
     url = "https://api.github.com/repos/raspberrypi/linux/tarball/${rev}";
diff --git a/pkgs/os-specific/linux/mcelog/default.nix b/pkgs/os-specific/linux/mcelog/default.nix
index 31c360051bb3..f2b03e1be92d 100644
--- a/pkgs/os-specific/linux/mcelog/default.nix
+++ b/pkgs/os-specific/linux/mcelog/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchFromGitHub }:
 
-let version = "121"; in
+let version = "122"; in
 stdenv.mkDerivation {
   name = "mcelog-${version}";
 
   src = fetchFromGitHub {
-    sha256 = "1psdcbr3ssavl35svjzgsy5xl0f2s57s740anvyqy8ziy4k5fjyv";
+    sha256 = "0g3bp6wfgpjh345n988r2bxzdkbac8mls9v7fsylmfxf78y7n92d";
     rev = "v${version}";
     repo = "mcelog";
     owner = "andikleen";
diff --git a/pkgs/servers/ftp/vsftpd/default.nix b/pkgs/servers/ftp/vsftpd/default.nix
index f1ddf87e8c6a..17c41a9a4d46 100644
--- a/pkgs/servers/ftp/vsftpd/default.nix
+++ b/pkgs/servers/ftp/vsftpd/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, openssl, sslEnable ? false, libcap, pam }:
 
 stdenv.mkDerivation rec {
-  name = "vsftpd-3.0.2";
+  name = "vsftpd-3.0.3";
 
   src = fetchurl {
     url = "https://security.appspot.com/downloads/${name}.tar.gz";
-    sha256 = "0mjy345wszskz1vnk83360c1y37arwgap3gwz8hy13sjqpig0imy";
+    sha256 = "1xsyjn68k3fgm2incpb3lz2nikffl9by2safp994i272wvv2nkcx";
   };
 
   patches = [ ./CVE-2015-1419.patch ];
diff --git a/pkgs/servers/nosql/riak/2.1.1.nix b/pkgs/servers/nosql/riak/2.1.1.nix
index ce160312dbbd..74cf03a1ca86 100644
--- a/pkgs/servers/nosql/riak/2.1.1.nix
+++ b/pkgs/servers/nosql/riak/2.1.1.nix
@@ -89,6 +89,6 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     maintainers = with maintainers; [ cstrahan ];
     description = "Dynamo inspired NoSQL DB by Basho";
-    platforms   = platforms.linux;
+    platforms   = [ "x86_64-linux" ];
   };
 }
diff --git a/pkgs/servers/sql/postgresql/9.0.x.nix b/pkgs/servers/sql/postgresql/9.0.x.nix
deleted file mode 100644
index 4249b40c5c4a..000000000000
--- a/pkgs/servers/sql/postgresql/9.0.x.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ stdenv, fetchurl, zlib, readline, openssl }:
-
-let version = "9.0.22"; in
-
-stdenv.mkDerivation rec {
-  name = "postgresql-${version}";
-
-  src = fetchurl {
-    url = "mirror://postgresql/source/v${version}/${name}.tar.bz2";
-    sha256 = "19gq6axjhvlr5zlrzwnll1fbrvai4xh0nb1jki6gmmschl6v5m4l";
-  };
-
-  outputs = [ "out" "doc" ];
-
-  buildInputs = [ zlib readline openssl ];
-
-  LC_ALL = "C";
-
-  configureFlags = [ "--with-openssl" ];
-
-  patches = [ ./less-is-more.patch ];
-
-  passthru = {
-    inherit readline;
-    psqlSchema = "9.0";
-  };
-
-  meta = with stdenv.lib; {
-    homepage = http://www.postgresql.org/;
-    description = "A powerful, open source object-relational database system";
-    license = licenses.postgresql;
-    maintainers = [ maintainers.ocharles ];
-    platforms = platforms.unix;
-    hydraPlatforms = platforms.linux;
-  };
-}
diff --git a/pkgs/servers/sql/postgresql/9.1.x.nix b/pkgs/servers/sql/postgresql/9.1.x.nix
deleted file mode 100644
index 09f468b50bb5..000000000000
--- a/pkgs/servers/sql/postgresql/9.1.x.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ stdenv, fetchurl, zlib, readline, openssl }:
-
-let version = "9.1.18"; in
-
-stdenv.mkDerivation rec {
-  name = "postgresql-${version}";
-
-  src = fetchurl {
-    url = "mirror://postgresql/source/v${version}/${name}.tar.bz2";
-    sha256 = "1a44hmcvfaa8j169ladsibmvjakw6maaxqkzz1ab8139cqkda9i7";
-  };
-
-  outputs = [ "out" "doc" ];
-
-  buildInputs = [ zlib readline openssl ];
-
-  enableParallelBuilding = true;
-
-  LC_ALL = "C";
-
-  configureFlags = [ "--with-openssl" ];
-
-  patches = [ ./less-is-more.patch ];
-
-  postInstall =
-    ''
-      mkdir -p $out/share/man
-      cp -rvd doc/src/sgml/man1 $out/share/man
-    '';
-
-  passthru = {
-    inherit readline;
-    psqlSchema = "9.1";
-  };
-
-  meta = with stdenv.lib; {
-    homepage = http://www.postgresql.org/;
-    description = "A powerful, open source object-relational database system";
-    license = licenses.postgresql;
-    maintainers = [ maintainers.ocharles ];
-    platforms = platforms.unix;
-    hydraPlatforms = platforms.linux;
-  };
-}
diff --git a/pkgs/servers/sql/postgresql/9.2.x.nix b/pkgs/servers/sql/postgresql/9.2.x.nix
deleted file mode 100644
index 6b0792f50cd3..000000000000
--- a/pkgs/servers/sql/postgresql/9.2.x.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ stdenv, fetchurl, zlib, readline, openssl }:
-
-let version = "9.2.13"; in
-
-stdenv.mkDerivation rec {
-  name = "postgresql-${version}";
-
-  src = fetchurl {
-    url = "mirror://postgresql/source/v${version}/${name}.tar.bz2";
-    sha256 = "0i3avdr8mnvn6ldkx0hc4jmclhisb2338hzs0j2m03wck8hddjsx";
-  };
-
-  outputs = [ "out" "doc" ];
-
-  buildInputs = [ zlib readline openssl ];
-
-  enableParallelBuilding = true;
-
-  makeFlags = [ "world" ];
-
-  configureFlags = stdenv.lib.optionals (!stdenv.isCygwin) [ "--with-openssl" ];
-
-  patches = [ ./disable-resolve_symlinks.patch ./less-is-more.patch ];
-
-  installTargets = [ "install-world" ];
-
-  LC_ALL = "C";
-
-  passthru = {
-    inherit readline;
-    psqlSchema = "9.2";
-  };
-
-  meta = with stdenv.lib; {
-    homepage = http://www.postgresql.org/;
-    description = "A powerful, open source object-relational database system";
-    license = licenses.postgresql;
-    maintainers = [ maintainers.ocharles ];
-    platforms = platforms.unix;
-    hydraPlatforms = platforms.linux;
-  };
-}
diff --git a/pkgs/servers/sql/postgresql/9.3.x.nix b/pkgs/servers/sql/postgresql/9.3.x.nix
deleted file mode 100644
index d45cdadf1e9f..000000000000
--- a/pkgs/servers/sql/postgresql/9.3.x.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{ stdenv, fetchurl, zlib, readline, libossp_uuid, openssl}:
-
-with stdenv.lib;
-
-let version = "9.3.9"; in
-
-stdenv.mkDerivation rec {
-  name = "postgresql-${version}";
-
-  src = fetchurl {
-    url = "mirror://postgresql/source/v${version}/${name}.tar.bz2";
-    sha256 = "0j85j69rf54cwz5yhrhk4ca22b82990j5sqb8cr1fl9843nd0fzp";
-  };
-
-  outputs = [ "out" "doc" ];
-
-  buildInputs = [ zlib readline openssl ]
-                ++ optionals (!stdenv.isDarwin) [ libossp_uuid ];
-
-  enableParallelBuilding = true;
-
-  makeFlags = [ "world" ];
-
-  configureFlags = [ "--with-openssl" ]
-                   ++ optional (!stdenv.isDarwin) "--with-ossp-uuid";
-
-  patches = [ ./disable-resolve_symlinks.patch ./less-is-more.patch ];
-
-  installTargets = [ "install-world" ];
-
-  LC_ALL = "C";
-
-  passthru = {
-    inherit readline;
-    psqlSchema = "9.3";
-  };
-
-  meta = with stdenv.lib; {
-    homepage = http://www.postgresql.org/;
-    description = "A powerful, open source object-relational database system";
-    license = licenses.postgresql;
-    maintainers = [ maintainers.ocharles ];
-    platforms = platforms.unix;
-    hydraPlatforms = platforms.linux;
-  };
-}
diff --git a/pkgs/servers/sql/postgresql/9.4.x.nix b/pkgs/servers/sql/postgresql/9.4.x.nix
deleted file mode 100644
index d09a65282225..000000000000
--- a/pkgs/servers/sql/postgresql/9.4.x.nix
+++ /dev/null
@@ -1,47 +0,0 @@
-{ stdenv, fetchurl, zlib, readline, libossp_uuid, openssl }:
-
-with stdenv.lib;
-
-let version = "9.4.4"; in
-
-stdenv.mkDerivation rec {
-  name = "postgresql-${version}";
-
-  src = fetchurl {
-    url = "mirror://postgresql/source/v${version}/${name}.tar.bz2";
-    sha256 = "04q07g209y99xzjh88y52qpvz225rxwifv8nzp3bxzfni2bdk3jk";
-  };
-
-  outputs = [ "out" "doc" ];
-
-  buildInputs = [ zlib readline openssl ]
-                ++ optionals (!stdenv.isDarwin) [ libossp_uuid ];
-
-  enableParallelBuilding = true;
-
-  makeFlags = [ "world" ];
-
-  configureFlags = [ "--with-openssl" ]
-                   ++ optional (stdenv.isDarwin)  "--with-uuid=e2fs"
-                   ++ optional (!stdenv.isDarwin) "--with-ossp-uuid";
-
-  patches = [ ./disable-resolve_symlinks-94.patch ./less-is-more.patch ];
-
-  installTargets = [ "install-world" ];
-
-  LC_ALL = "C";
-
-  passthru = {
-    inherit readline;
-    psqlSchema = "9.4";
-  };
-
-  meta = with stdenv.lib; {
-    homepage = http://www.postgresql.org/;
-    description = "A powerful, open source object-relational database system";
-    license = licenses.postgresql;
-    maintainers = [ maintainers.ocharles ];
-    platforms = platforms.unix;
-    hydraPlatforms = platforms.linux;
-  };
-}
diff --git a/pkgs/servers/sql/postgresql/default.nix b/pkgs/servers/sql/postgresql/default.nix
new file mode 100644
index 000000000000..cf4519a82327
--- /dev/null
+++ b/pkgs/servers/sql/postgresql/default.nix
@@ -0,0 +1,91 @@
+{ lib, stdenv, fetchurl, zlib, readline, libossp_uuid, openssl }:
+
+let
+
+  common = { version, sha256, psqlSchema } @ args: stdenv.mkDerivation (rec {
+    name = "postgresql-${version}";
+
+    src = fetchurl {
+      url = "mirror://postgresql/source/v${version}/${name}.tar.bz2";
+      inherit sha256;
+    };
+
+    outputs = [ "out" "doc" ];
+
+    buildInputs =
+      [ zlib readline openssl ]
+      ++ lib.optionals (!stdenv.isDarwin) [ libossp_uuid ];
+
+    enableParallelBuilding = true;
+
+    makeFlags = [ "world" ];
+
+    configureFlags =
+      [ "--with-openssl" ]
+      ++ lib.optional (stdenv.isDarwin)  "--with-uuid=e2fs"
+      ++ lib.optional (!stdenv.isDarwin) "--with-ossp-uuid";
+
+    patches =
+      [ (if lib.versionAtLeast version "9.4" then ./disable-resolve_symlinks-94.patch else ./disable-resolve_symlinks.patch)
+        ./less-is-more.patch
+      ];
+
+    installTargets = [ "install-world" ];
+
+    LC_ALL = "C";
+
+    postInstall =
+      ''
+        # Prevent a retained dependency on gcc-wrapper.
+        substituteInPlace $out/lib/pgxs/src/Makefile.global --replace ${stdenv.cc}/bin/ld ld
+      '';
+
+    disallowedReferences = [ stdenv.cc ];
+
+    passthru = {
+      inherit readline psqlSchema;
+    };
+
+    meta = with lib; {
+      homepage = http://www.postgresql.org/;
+      description = "A powerful, open source object-relational database system";
+      license = licenses.postgresql;
+      maintainers = [ maintainers.ocharles ];
+      platforms = platforms.unix;
+      hydraPlatforms = platforms.linux;
+    };
+  });
+
+in {
+
+  postgresql90 = common {
+    version = "9.0.22";
+    psqlSchema = "9.0";
+    sha256 = "19gq6axjhvlr5zlrzwnll1fbrvai4xh0nb1jki6gmmschl6v5m4l";
+  };
+
+  postgresql91 = common {
+    version = "9.1.18";
+    psqlSchema = "9.1";
+    sha256 = "1a44hmcvfaa8j169ladsibmvjakw6maaxqkzz1ab8139cqkda9i7";
+  };
+
+  postgresql92 = common {
+    version = "9.2.13";
+    psqlSchema = "9.2";
+    sha256 = "0i3avdr8mnvn6ldkx0hc4jmclhisb2338hzs0j2m03wck8hddjsx";
+  };
+
+  postgresql93 = common {
+    version = "9.3.9";
+    psqlSchema = "9.3";
+    sha256 = "0j85j69rf54cwz5yhrhk4ca22b82990j5sqb8cr1fl9843nd0fzp";
+  };
+
+  postgresql94 = common {
+    version = "9.4.4";
+    psqlSchema = "9.4";
+    sha256 = "04q07g209y99xzjh88y52qpvz225rxwifv8nzp3bxzfni2bdk3jk";
+  };
+
+}
diff --git a/pkgs/servers/x11/xorg/overrides.nix b/pkgs/servers/x11/xorg/overrides.nix
index afd864eafac4..0ac991bb1e61 100644
--- a/pkgs/servers/x11/xorg/overrides.nix
+++ b/pkgs/servers/x11/xorg/overrides.nix
@@ -80,9 +80,9 @@ in
     nativeBuildInputs = [ args.python ];
   };
 
-  libxkbfile = attrs: attrs // {
-    patches = lib.optional stdenv.cc.isClang ./libxkbfile-clang36.patch;
-  };
+  # libxkbfile = attrs: attrs // {
+  #   patches = lib.optional stdenv.cc.isClang ./libxkbfile-clang36.patch;
+  # };
 
   libpciaccess = attrs : attrs // {
     patches = [ ./libpciaccess-apple.patch ];
@@ -287,9 +287,9 @@ in
         dmxproto /*libdmx not used*/ xf86vidmodeproto
         recordproto libXext pixman libXfont
         damageproto xcmiscproto  bigreqsproto
-        libpciaccess inputproto xextproto randrproto renderproto presentproto
+        inputproto xextproto randrproto renderproto presentproto
         dri2proto dri3proto kbproto xineramaproto resourceproto scrnsaverproto videoproto
-      ];
+      ] ++ lib.optional (!isDarwin) libpciaccess;
       commonPatches = [ ./xorgserver-xkbcomp-path.patch ]
                    ++ lib.optional isDarwin ./fix-clang.patch;
       # XQuartz requires two compilations: the first to get X / XQuartz,
diff --git a/pkgs/tools/admin/awscli/default.nix b/pkgs/tools/admin/awscli/default.nix
index c846de708525..f544b81e78d5 100644
--- a/pkgs/tools/admin/awscli/default.nix
+++ b/pkgs/tools/admin/awscli/default.nix
@@ -2,12 +2,12 @@
 
 pythonPackages.buildPythonPackage rec {
   name = "awscli-${version}";
-  version = "1.7.29";
+  version = "1.7.41";
   namePrefix = "";
 
   src = fetchzip {
     url = "https://github.com/aws/aws-cli/archive/${version}.tar.gz";
-    sha256 = "0r0w5qldimdp2d2ykw7pmppn8chbhh6cm48famhldqnyrh3vrf02";
+    sha256 = "1xfvpqyxi5qaqcvm56q616k9zjidbc9l2vk1v3ld6lnlzri3a1ra";
   };
 
   propagatedBuildInputs = [
@@ -21,6 +21,14 @@ pythonPackages.buildPythonPackage rec {
     groff
   ];
 
+  postInstall = ''
+    mkdir -p $out/etc/bash_completion.d
+    echo "complete -C $out/bin/aws_completer aws" > $out/etc/bash_completion.d/awscli
+    mkdir -p $out/share/zsh/site-functions
+    mv $out/bin/aws_zsh_completer.sh $out/share/zsh/site-functions
+    rm $out/bin/aws.cmd
+  '';
+
   meta = {
     homepage = https://aws.amazon.com/cli/;
     description = "Unified tool to manage your AWS services";
diff --git a/pkgs/tools/graphics/dmtx-utils/default.nix b/pkgs/tools/graphics/dmtx-utils/default.nix
index 0fe473f5d634..3e4e3e9312ed 100644
--- a/pkgs/tools/graphics/dmtx-utils/default.nix
+++ b/pkgs/tools/graphics/dmtx-utils/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, libdmtx, pkgconfig}:
+{stdenv, fetchurl, libdmtx, pkgconfig, imagemagick}:
 let
   s = # Generated upstream information
   rec {
@@ -10,7 +10,7 @@ let
     sha256="1di8ymlziy9856abd6rb72z0zqzmrff4r3vql0q9r5sk5ax4s417";
   };
   buildInputs = [
-    libdmtx pkgconfig
+    libdmtx pkgconfig imagemagick
   ];
 in
 stdenv.mkDerivation {
diff --git a/pkgs/tools/misc/moreutils/default.nix b/pkgs/tools/misc/moreutils/default.nix
index 843672fa26cf..feb5710282fd 100644
--- a/pkgs/tools/misc/moreutils/default.nix
+++ b/pkgs/tools/misc/moreutils/default.nix
@@ -1,20 +1,20 @@
-{ stdenv, fetchurl, libxml2, libxslt, docbook-xsl, perl, IPCRun, TimeDate, TimeDuration, makeWrapper }:
+{ stdenv, fetchurl, libxml2, libxslt, docbook-xsl, docbook_xml_dtd_44, perl, IPCRun, TimeDate, TimeDuration, makeWrapper }:
 
 with stdenv.lib;
 stdenv.mkDerivation rec {
   name = "moreutils-${version}";
-  version = "0.55";
+  version = "0.57";
 
   src = fetchurl {
     url = "http://ftp.de.debian.org/debian/pool/main/m/moreutils/moreutils_${version}.orig.tar.gz";
-    sha256 = "1dcah2jx8dbznn8966xl7sf1jrld2qfh6l6xcmx9dsnf8p8mr7fs";
+    sha256 = "078dpkwwwrv8hxnylbc901kib2d1rr3hsja37j6dlpjfcfq58z9s";
   };
 
   preBuild = ''
     substituteInPlace Makefile --replace /usr/share/xml/docbook/stylesheet/docbook-xsl ${docbook-xsl}/xml/xsl/docbook
   '';
 
-  buildInputs = [ libxml2 libxslt docbook-xsl makeWrapper ];
+  buildInputs = [ libxml2 libxslt docbook-xsl docbook_xml_dtd_44 makeWrapper ];
 
   propagatedBuildInputs = [ perl IPCRun TimeDate TimeDuration ];
 
diff --git a/pkgs/tools/misc/profile-cleaner/default.nix b/pkgs/tools/misc/profile-cleaner/default.nix
index 903c8617128a..55c44770c3e1 100644
--- a/pkgs/tools/misc/profile-cleaner/default.nix
+++ b/pkgs/tools/misc/profile-cleaner/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchFromGitHub, makeWrapper, parallel, sqlite }:
 
 stdenv.mkDerivation rec {
-  version = "2.34";
+  version = "2.35";
   name = "profile-cleaner-${version}";
 
   src = fetchFromGitHub {
     owner = "graysky2";
     repo = "profile-cleaner";
     rev = "v${version}";
-    sha256 = "17z73xyn31668f7vmbj7xs659fcrm0m0mnzja7hz6lipfaviqxrs";
+    sha256 = "0gashrzhpgcy98zsyc6b3awfp15j1x0nq82h60kvfjbs6xxzvszh";
   };
 
   buildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/system/facter/default.nix b/pkgs/tools/system/facter/default.nix
new file mode 100644
index 000000000000..5a37262f8187
--- /dev/null
+++ b/pkgs/tools/system/facter/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchurl, boost, cmake, curl, libyamlcpp, openssl, utillinux }:
+
+stdenv.mkDerivation rec {
+  name = "facter-${version}";
+  version = "3.0.2";
+  src = fetchurl {
+    url = "https://downloads.puppetlabs.com/facter/${name}.tar.gz";
+    sha256 = "1myf1r827bh3n0snkzwj2jnc0sax9bq6z1vv9gr90rqr73lixvig";
+  };
+
+  libyamlcpp_ = libyamlcpp.override { makePIC = true; };
+
+  buildInputs = [ boost cmake curl libyamlcpp_ openssl utillinux ];
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/puppetlabs/facter;
+    description = "A system inventory tool";
+    license = licenses.asl20;
+    maintainers = [ maintainers.womfoo ];
+    platforms = platforms.linux;
+  };
+
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index ae2cd2acc437..2d8139ecd7f5 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -141,6 +141,8 @@ let
   # below).
   callPackage = newScope {};
 
+  callPackages = lib.callPackagesWith defaultScope;
+
   newScope = extra: lib.callPackageWith (defaultScope // extra);
 
   # Easily override this package set.
@@ -512,6 +514,10 @@ let
 
   findXMLCatalogs = makeSetupHook { } ../build-support/setup-hooks/find-xml-catalogs.sh;
 
+  wrapGAppsHook = makeSetupHook {
+    deps = [ makeWrapper ];
+  } ../build-support/setup-hooks/wrap-gapps-hook.sh;
+
 
   ### TOOLS
 
@@ -962,6 +968,12 @@ let
     enableStandardFeatures = true;
   });
 
+  asciidoc-full-with-plugins = appendToName "full-with-plugins" (asciidoc.override {
+    inherit (pythonPackages) pygments;
+    enableStandardFeatures = true;
+    enableExtraPlugins = true;
+  });
+
   autossh = callPackage ../tools/networking/autossh { };
 
   asynk = callPackage ../tools/networking/asynk { };
@@ -3109,7 +3121,6 @@ let
   texmacs = callPackage ../applications/editors/texmacs {
     tex = texLive; /* tetex is also an option */
     extraFonts = true;
-    guile = guile_1_8;
   };
 
   texmaker = callPackage ../applications/editors/texmaker { };
@@ -4716,7 +4727,9 @@ let
   sdcc = callPackage ../development/compilers/sdcc { };
 
   smlnjBootstrap = callPackage ../development/compilers/smlnj/bootstrap.nix { };
-  smlnj = callPackage_i686 ../development/compilers/smlnj { };
+  smlnj = if stdenv.isDarwin
+            then callPackage ../development/compilers/smlnj { }
+            else callPackage_i686 ../development/compilers/smlnj { };
 
   sqldeveloper = callPackage ../development/tools/database/sqldeveloper { };
 
@@ -9101,15 +9114,12 @@ let
 
   postgresql = postgresql94;
 
-  postgresql90 = callPackage ../servers/sql/postgresql/9.0.x.nix { };
-
-  postgresql91 = callPackage ../servers/sql/postgresql/9.1.x.nix { };
-
-  postgresql92 = callPackage ../servers/sql/postgresql/9.2.x.nix { };
-
-  postgresql93 = callPackage ../servers/sql/postgresql/9.3.x.nix { };
-
-  postgresql94 = callPackage ../servers/sql/postgresql/9.4.x.nix { };
+  inherit (callPackages ../servers/sql/postgresql { })
+    postgresql90
+    postgresql91
+    postgresql92
+    postgresql93
+    postgresql94;
 
   postgresql_jdbc = callPackage ../servers/sql/postgresql/jdbc { };
 
@@ -10396,6 +10406,8 @@ let
 
   docbook_xml_dtd_43 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.3.nix { };
 
+  docbook_xml_dtd_44 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.4.nix { };
+
   docbook_xml_dtd_45 = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook/4.5.nix { };
 
   docbook_xml_ebnf_dtd = callPackage ../data/sgml+xml/schemas/xml-dtd/docbook-ebnf { };
@@ -11618,6 +11630,11 @@ let
 
   hackrf = callPackage ../applications/misc/hackrf { };
 
+  hamster-time-tracker = callPackage ../applications/misc/hamster-time-tracker {
+    inherit (pythonPackages) pyxdg pygtk dbus sqlite3;
+    inherit (gnome) gnome_python;
+  };
+
   hello = callPackage ../applications/misc/hello/ex-2 { };
 
   helmholtz = callPackage ../applications/audio/pd-plugins/helmholtz { };
@@ -12151,6 +12168,10 @@ let
     ruby = ruby_1_9_3.override { cursesSupport = true; };
   };
 
+  synapse = callPackage ../applications/misc/synapse {
+    inherit (gnome3) libgee;
+  };
+
   synfigstudio = callPackage ../applications/graphics/synfigstudio {
     fontsConf = makeFontsConf { fontDirectories = [ freefont_ttf ]; };
   };
@@ -12966,6 +12987,8 @@ let
 
   qpdfview = callPackage ../applications/misc/qpdfview {};
 
+  qtile = callPackage ../applications/window-managers/qtile { };
+
   qvim = lowPrio (callPackage ../applications/editors/vim/qvim.nix {
     inherit (pkgs) fetchgit stdenv ncurses pkgconfig gettext
       composableDerivation lib config python perl tcl ruby qt4;
@@ -15137,4 +15160,6 @@ let
 
   udevil = callPackage ../applications/misc/udevil {};
 
+  facter = callPackage ../tools/system/facter {};
+
 }; in self; in pkgs
diff --git a/pkgs/top-level/go-packages.nix b/pkgs/top-level/go-packages.nix
index cf9971c7407f..448c94e0602a 100644
--- a/pkgs/top-level/go-packages.nix
+++ b/pkgs/top-level/go-packages.nix
@@ -6,38 +6,34 @@
 let
   isGo13 = go.meta.branch == "1.3";
   isGo14 = go.meta.branch == "1.4";
+
+  buildFromGitHub = { rev, owner, repo, sha256, name ? repo, goPackagePath ? "github.com/${owner}/${repo}", ... }@args: buildGoPackage (args // {
+    inherit rev goPackagePath;
+    name = "${name}-${stdenv.lib.strings.substring 0 7 rev}";
+    src  = fetchFromGitHub { inherit rev owner repo sha256; };
+  });
+
   self = _self // overrides; _self = with self; {
 
   inherit go buildGoPackage;
 
   ## OFFICIAL GO PACKAGES
 
-  crypto = buildGoPackage rec {
-    rev = "4d48e5fa3d62b5e6e71260571bf76c767198ca02";
-    name = "crypto-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "golang.org/x/crypto";
-    goPackageAliases = [ "code.google.com/p/go.crypto" ];
+  crypto = buildFromGitHub {
+    rev      = "4d48e5fa3d62b5e6e71260571bf76c767198ca02";
     disabled = isGo13;
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "golang";
-      repo   = "crypto";
-      sha256 = "0plvjv56afb02p7l3c2zfwffnhscmc3f0ckj1gls9ay6vj85y7l8";
-    };
+    owner    = "golang";
+    repo     = "crypto";
+    sha256   = "0plvjv56afb02p7l3c2zfwffnhscmc3f0ckj1gls9ay6vj85y7l8";
+    goPackagePath    = "golang.org/x/crypto";
+    goPackageAliases = [ "code.google.com/p/go.crypto" ];
   };
 
-  glog = buildGoPackage rec {
-    rev = "44145f04b68cf362d9c4df2182967c2275eaefed";
-    name = "glog-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/golang/glog";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "golang";
-      repo = "glog";
-      sha256 = "1k7sf6qmpgm0iw81gx2dwggf9di6lgw0n54mni7862hihwfrb5rq";
-    };
+  glog = buildFromGitHub {
+    rev    = "44145f04b68cf362d9c4df2182967c2275eaefed";
+    owner  = "golang";
+    repo   = "glog";
+    sha256 = "1k7sf6qmpgm0iw81gx2dwggf9di6lgw0n54mni7862hihwfrb5rq";
   };
 
   image = buildGoPackage rec {
@@ -162,30 +158,18 @@ let
 
   ## THIRD PARTY
 
-  airbrake-go = buildGoPackage rec {
-    rev = "5b5e269e1bc398d43f67e43dafff3414a59cd5a2";
-    name = "airbrake-go-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/tobi/airbrake-go";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "tobi";
-      repo   = "airbrake-go";
-      sha256 = "1bps4y3vpphpj63mshjg2aplh579cvqac0hz7qzvac0d1fqcgkdz";
-    };
+  airbrake-go = buildFromGitHub {
+    rev    = "5b5e269e1bc398d43f67e43dafff3414a59cd5a2";
+    owner  = "tobi";
+    repo   = "airbrake-go";
+    sha256 = "1bps4y3vpphpj63mshjg2aplh579cvqac0hz7qzvac0d1fqcgkdz";
   };
 
-  ansicolor = buildGoPackage rec {
-    rev = "8368d3b31cf6f2c2464c7a91675342c9a0ac6658";
-    name = "ansicolor-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/shiena/ansicolor";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "shiena";
-      repo   = "ansicolor";
-      sha256 = "1fyn06vxm44s0ph8pr7r9gkab1f4x851zlyy3p6jbbwsa6an8g9w";
-    };
+  ansicolor = buildFromGitHub {
+    rev    = "8368d3b31cf6f2c2464c7a91675342c9a0ac6658";
+    owner  = "shiena";
+    repo   = "ansicolor";
+    sha256 = "1fyn06vxm44s0ph8pr7r9gkab1f4x851zlyy3p6jbbwsa6an8g9w";
   };
 
   asn1-ber = buildGoPackage rec {
@@ -252,42 +236,25 @@ let
     buildInputs = [ go-ini net sandblast ];
   };
 
-  binarydist = buildGoPackage rec {
-    rev = "9955b0ab8708602d411341e55fffd7e0700f86bd";
-    name = "binarydist-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/kr/binarydist";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "kr";
-      repo = "binarydist";
-      sha256 = "11wncbbbrdcxl5ff3h6w8vqfg4bxsf8709mh6vda0cv236flkyn3";
-    };
+  binarydist = buildFromGitHub {
+    rev    = "9955b0ab8708602d411341e55fffd7e0700f86bd";
+    owner  = "kr";
+    repo   = "binarydist";
+    sha256 = "11wncbbbrdcxl5ff3h6w8vqfg4bxsf8709mh6vda0cv236flkyn3";
   };
 
-  bolt = buildGoPackage rec {
-    rev = "957d850b5158a4eebf915476058e720f43459584";
-    name = "bolt-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/boltdb/bolt";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "boltdb";
-      repo = "bolt";
-      sha256 = "193adhhsqdy0kyq1l1fi8pg2n6pwyrw4h607qm78qyi26f8i7vzf";
-    };
+  bolt = buildFromGitHub {
+    rev    = "957d850b5158a4eebf915476058e720f43459584";
+    owner  = "boltdb";
+    repo   = "bolt";
+    sha256 = "193adhhsqdy0kyq1l1fi8pg2n6pwyrw4h607qm78qyi26f8i7vzf";
   };
 
-  bufio = buildGoPackage rec {
-    rev = "24e7e48f60fc2d9e99e43c07485d9fff42051e66";
-    name = "bufio-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/vmihailenco/bufio";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "vmihailenco";
-      repo = "bufio";
-      sha256 = "0x46qnf2f15v7m0j2dcb16raxjamk5rdc7hqwgyxfr1sqmmw3983";
-    };
+  bufio = buildFromGitHub {
+    rev    = "24e7e48f60fc2d9e99e43c07485d9fff42051e66";
+    owner  = "vmihailenco";
+    repo   = "bufio";
+    sha256 = "0x46qnf2f15v7m0j2dcb16raxjamk5rdc7hqwgyxfr1sqmmw3983";
   };
 
   bugsnag-go = buildGoPackage rec {
@@ -333,17 +300,11 @@ let
     };
   };
 
-  circbuf = buildGoPackage rec {
-    rev = "f092b4f207b6e5cce0569056fba9e1a2735cb6cf";
-    name = "circbuf-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/armon/circbuf";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "armon";
-      repo = "circbuf";
-      sha256 = "06kwwdwa3hskdh6ws7clj1vim80dyc3ldim8k9y5qpd30x0avn5s";
-    };
+  circbuf = buildFromGitHub {
+    rev    = "f092b4f207b6e5cce0569056fba9e1a2735cb6cf";
+    owner  = "armon";
+    repo   = "circbuf";
+    sha256 = "06kwwdwa3hskdh6ws7clj1vim80dyc3ldim8k9y5qpd30x0avn5s";
   };
 
   cli = buildGoPackage rec {
@@ -361,16 +322,11 @@ let
     propagatedBuildInputs = [ crypto ];
   };
 
-  cli-spinner = buildGoPackage rec {
-    rev = "610063bb4aeef25f7645b3e6080456655ec0fb33";
-    name = "cli-spinner-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/odeke-em/cli-spinner";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "odeke-em";
-      repo = "cli-spinner";
-      sha256 = "13wzs2qrxd72ah32ym0ppswhvyimjw5cqaq3q153y68vlvxd048c";
-    };
+  cli-spinner = buildFromGitHub {
+    rev    = "610063bb4aeef25f7645b3e6080456655ec0fb33";
+    owner  = "odeke-em";
+    repo   = "cli-spinner";
+    sha256 = "13wzs2qrxd72ah32ym0ppswhvyimjw5cqaq3q153y68vlvxd048c";
   };
 
   cobra = buildGoPackage rec {
@@ -386,29 +342,18 @@ let
     propagatedBuildInputs = [ pflag ];
   };
 
-  columnize = buildGoPackage rec {
-    rev = "44cb4788b2ec3c3d158dd3d1b50aba7d66f4b59a";
-    name = "columnize-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/ryanuber/columnize";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "ryanuber";
-      repo = "columnize";
-      sha256 = "1qrqr76cw58x2hkjic6h88na5ihgvkmp8mqapj8kmjcjzdxkzhr9";
-    };
+  columnize = buildFromGitHub {
+    rev    = "44cb4788b2ec3c3d158dd3d1b50aba7d66f4b59a";
+    owner  = "ryanuber";
+    repo   = "columnize";
+    sha256 = "1qrqr76cw58x2hkjic6h88na5ihgvkmp8mqapj8kmjcjzdxkzhr9";
   };
 
-  command = buildGoPackage rec {
-    rev = "076a2ad5f3a7ec92179f2d57208728432280ec4e";
-    name = "command-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/odeke-em/command";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "odeke-em";
-      repo = "command";
-      sha256 = "093as4kxlabk3hrsd52kr9fhl6qafr4ghg89cjyglsva0mk0n7sb";
-    };
+  command = buildFromGitHub {
+    rev    = "076a2ad5f3a7ec92179f2d57208728432280ec4e";
+    owner  = "odeke-em";
+    repo   = "command";
+    sha256 = "093as4kxlabk3hrsd52kr9fhl6qafr4ghg89cjyglsva0mk0n7sb";
   };
 
   copystructure = buildGoPackage rec {
@@ -440,17 +385,11 @@ let
     subPackages = [ "./" ];
   };
 
-  config = buildGoPackage rec {
-    rev = "0f78529c8c7e3e9a25f15876532ecbc07c7d99e6";
-    name = "config-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/robfig/config";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "robfig";
-      repo = "config";
-      sha256 = "0xmxy8ay0wzd307x7xba3rmigvr6rjlpfk9fmn6ir2nc97ifv3i0";
-    };
+  config = buildFromGitHub {
+    rev    = "0f78529c8c7e3e9a25f15876532ecbc07c7d99e6";
+    owner  = "robfig";
+    repo   = "config";
+    sha256 = "0xmxy8ay0wzd307x7xba3rmigvr6rjlpfk9fmn6ir2nc97ifv3i0";
   };
 
   consul = buildGoPackage rec {
@@ -598,42 +537,25 @@ let
     };
   };
 
-  dns = buildGoPackage rec {
-    rev = "bb1103f648f811d2018d4bedcb2d4b2bce34a0f1";
-    name = "dns-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/miekg/dns";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "miekg";
-      repo = "dns";
-      sha256 = "1c1gasvzlcmgwyqhksm656p03nc76kxjxllbcw9bwfy5v7p9w7qq";
-    };
+  dns = buildFromGitHub {
+    rev    = "bb1103f648f811d2018d4bedcb2d4b2bce34a0f1";
+    owner  = "miekg";
+    repo   = "dns";
+    sha256 = "1c1gasvzlcmgwyqhksm656p03nc76kxjxllbcw9bwfy5v7p9w7qq";
   };
 
-  docopt-go = buildGoPackage rec {
-    rev = "854c423c810880e30b9fecdabb12d54f4a92f9bb";
-    name = "docopt-go-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/docopt/docopt-go";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "docopt";
-      repo = "docopt-go";
-      sha256 = "1sddkxgl1pwlipfvmv14h8vg9b9wq1km427j1gjarhb5yfqhh3l1";
-    };
+  docopt-go = buildFromGitHub {
+    rev    = "854c423c810880e30b9fecdabb12d54f4a92f9bb";
+    owner  = "docopt";
+    repo   = "docopt-go";
+    sha256 = "1sddkxgl1pwlipfvmv14h8vg9b9wq1km427j1gjarhb5yfqhh3l1";
   };
 
-  dts = buildGoPackage rec {
-    rev = "ec2daabf2f9078e887405f7bcddb3d79cb65502d";
-    name = "dts-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/odeke-em/dts";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "odeke-em";
-      repo = "dts";
-      sha256 = "0vq3cz4ab9vdsz9s0jjlp7z27w218jjabjzsh607ps4i8m5d441s";
-    };
+  dts = buildFromGitHub {
+    rev    = "ec2daabf2f9078e887405f7bcddb3d79cb65502d";
+    owner  = "odeke-em";
+    repo   = "dts";
+    sha256 = "0vq3cz4ab9vdsz9s0jjlp7z27w218jjabjzsh607ps4i8m5d441s";
   };
 
   ed25519 = buildGoPackage rec {
@@ -647,17 +569,11 @@ let
     };
   };
 
-  errwrap = buildGoPackage rec {
-    rev = "7554cd9344cec97297fa6649b055a8c98c2a1e55";
-    name = "errwrap-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/hashicorp/errwrap";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "hashicorp";
-      repo = "errwrap";
-      sha256 = "0kmv0p605di6jc8i1778qzass18m0mv9ks9vxxrfsiwcp4la82jf";
-    };
+  errwrap = buildFromGitHub {
+    rev    = "7554cd9344cec97297fa6649b055a8c98c2a1e55";
+    owner  = "hashicorp";
+    repo   = "errwrap";
+    sha256 = "0kmv0p605di6jc8i1778qzass18m0mv9ks9vxxrfsiwcp4la82jf";
   };
 
   fsnotify.v0 = buildGoPackage rec {
@@ -687,16 +603,11 @@ let
     };
   };
 
-  g2s = buildGoPackage rec {
-    rev = "ec76db4c1ac16400ac0e17ca9c4840e1d23da5dc";
-    name = "g2s-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/peterbourgon/g2s";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "peterbourgon";
-      repo   = "g2s";
-      sha256 = "1p4p8755v2nrn54rik7yifpg9szyg44y5rpp0kryx4ycl72307rj";
-    };
+  g2s = buildFromGitHub {
+    rev    = "ec76db4c1ac16400ac0e17ca9c4840e1d23da5dc";
+    owner  = "peterbourgon";
+    repo   = "g2s";
+    sha256 = "1p4p8755v2nrn54rik7yifpg9szyg44y5rpp0kryx4ycl72307rj";
   };
 
   gcloud-golang = buildGoPackage rec {
@@ -733,16 +644,11 @@ let
     subPackages = [ "./" ];  # don't try to build test fixtures
   };
 
-  gls = buildGoPackage rec {
-    rev = "9a4a02dbe491bef4bab3c24fd9f3087d6c4c6690";
-    name = "gls-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/jtolds/gls";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "jtolds";
-      repo = "gls";
-      sha256 = "1gvgkx7llklz6plapb95fcql7d34i6j7anlvksqhdirpja465jnm";
-    };
+  gls = buildFromGitHub {
+    rev    = "9a4a02dbe491bef4bab3c24fd9f3087d6c4c6690";
+    owner  = "jtolds";
+    repo   = "gls";
+    sha256 = "1gvgkx7llklz6plapb95fcql7d34i6j7anlvksqhdirpja465jnm";
   };
 
   ugorji.go = buildGoPackage rec {
@@ -787,18 +693,11 @@ let
     };
   };
 
-  dgnorton.goback = buildGoPackage rec {
-    rev = "a49ca3c0a18f50ae0b8a247e012db4385e516cf4";
-    name = "goback-${stdenv.lib.strings.substring 0 7 rev}";
-
-    goPackagePath = "github.com/dgnorton/goback";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "dgnorton";
-      repo = "goback";
-      sha256 = "1nyg6sckwd0iafs9vcmgbga2k3hid2q0avhwj29qbdhj3l78xi47";
-    };
+  dgnorton.goback = buildFromGitHub {
+    rev    = "a49ca3c0a18f50ae0b8a247e012db4385e516cf4";
+    owner  = "dgnorton";
+    repo   = "goback";
+    sha256 = "1nyg6sckwd0iafs9vcmgbga2k3hid2q0avhwj29qbdhj3l78xi47";
   };
 
   gocheck = buildGoPackage rec {
@@ -838,30 +737,18 @@ let
     doCheck = false; # please check again
   };
 
-  gomdb = buildGoPackage rec {
-    rev = "151f2e08ef45cb0e57d694b2562f351955dff572";
-    name = "gomdb-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/armon/gomdb";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "armon";
-      repo = "gomdb";
-      sha256 = "02wdhgfarmmwfbc75snd1dh6p9k9c1y2135apdm6mkr062qlxx61";
-    };
+  gomdb = buildFromGitHub {
+    rev    = "151f2e08ef45cb0e57d694b2562f351955dff572";
+    owner  = "armon";
+    repo   = "gomdb";
+    sha256 = "02wdhgfarmmwfbc75snd1dh6p9k9c1y2135apdm6mkr062qlxx61";
   };
 
-  influx.gomdb = buildGoPackage rec {
-    rev = "29fe330c5ab33c4e48470bd4b980bf522471190a";
-    name = "gomdb-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/influxdb/gomdb";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "influxdb";
-      repo = "gomdb";
-      sha256 = "0yg1jpr7lcaqh6i8n9wbs9r128kk541qjv06r9a6fp9vj56rqr3m";
-    };
+  influx.gomdb = buildFromGitHub {
+    rev    = "29fe330c5ab33c4e48470bd4b980bf522471190a";
+    owner  = "influxdb";
+    repo   = "gomdb";
+    sha256 = "0yg1jpr7lcaqh6i8n9wbs9r128kk541qjv06r9a6fp9vj56rqr3m";
   };
 
   govers = buildGoPackage rec {
@@ -877,17 +764,11 @@ let
     };
   };
 
-  golang-lru = buildGoPackage rec {
-    rev = "995efda3e073b6946b175ed93901d729ad47466a";
-    name = "golang-lru-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/hashicorp/golang-lru";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "hashicorp";
-      repo = "golang-lru";
-      sha256 = "0ilnzg9qq2pfa8qb9yd25s5afi0fvsm78kqzqy39kgg8zsx70xyj";
-    };
+  golang-lru = buildFromGitHub {
+    rev    = "995efda3e073b6946b175ed93901d729ad47466a";
+    owner  = "hashicorp";
+    repo   = "golang-lru";
+    sha256 = "0ilnzg9qq2pfa8qb9yd25s5afi0fvsm78kqzqy39kgg8zsx70xyj";
   };
 
   golang_protobuf_extensions = buildGoPackage rec {
@@ -918,42 +799,25 @@ let
     propagatedBuildInputs = [ ginkgo gomega gosnappy ];
   };
 
-  gollectd = buildGoPackage rec {
-    rev = "cf6dec97343244b5d8a5485463675d42f574aa2d";
-    name = "gollectd-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/kimor79/gollectd";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "kimor79";
-      repo = "gollectd";
-      sha256 = "1f3ml406cprzjc192csyr2af4wcadkc74kg8n4c0zdzglxxfsqxa";
-    };
+  gollectd = buildFromGitHub {
+    rev    = "cf6dec97343244b5d8a5485463675d42f574aa2d";
+    owner  = "kimor79";
+    repo   = "gollectd";
+    sha256 = "1f3ml406cprzjc192csyr2af4wcadkc74kg8n4c0zdzglxxfsqxa";
   };
 
-  gomega = buildGoPackage rec {
-    rev = "8adf9e1730c55cdc590de7d49766cb2acc88d8f2";
-    name = "gomega-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/onsi/gomega";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "onsi";
-      repo = "gomega";
-      sha256 = "1rf6cxn50d1pji3pv4q372s395r5nxwcgp405z2r2mfdkri4v3w4";
-    };
+  gomega = buildFromGitHub {
+    rev    = "8adf9e1730c55cdc590de7d49766cb2acc88d8f2";
+    owner  = "onsi";
+    repo   = "gomega";
+    sha256 = "1rf6cxn50d1pji3pv4q372s395r5nxwcgp405z2r2mfdkri4v3w4";
   };
 
-  gomemcache = buildGoPackage rec {
-    rev = "72a68649ba712ee7c4b5b4a943a626bcd7d90eb8";
-    name = "gomemcache-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/bradfitz/gomemcache";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "bradfitz";
-      repo = "gomemcache";
-      sha256 = "1r8fpzwhakq8fsppc33n4iivq1pz47xhs0h6bv4x5qiip5mswwvg";
-    };
+  gomemcache = buildFromGitHub {
+    rev    = "72a68649ba712ee7c4b5b4a943a626bcd7d90eb8";
+    owner  = "bradfitz";
+    repo   = "gomemcache";
+    sha256 = "1r8fpzwhakq8fsppc33n4iivq1pz47xhs0h6bv4x5qiip5mswwvg";
   };
 
   google-api-go-client = buildGoPackage rec {
@@ -1005,29 +869,18 @@ let
     buildInputs = [ crypto ];
   };
 
-  gopherduty = buildGoPackage rec {
-    rev = "f4906ce7e59b33a50bfbcba93e2cf58778c11fb9";
-    name = "gopherduty-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/darkcrux/gopherduty";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "darkcrux";
-      repo = "gopherduty";
-      sha256 = "11w1yqc16fxj5q1y5ha5m99j18fg4p9lyqi542x2xbrmjqqialcf";
-    };
+  gopherduty = buildFromGitHub {
+    rev    = "f4906ce7e59b33a50bfbcba93e2cf58778c11fb9";
+    owner  = "darkcrux";
+    repo   = "gopherduty";
+    sha256 = "11w1yqc16fxj5q1y5ha5m99j18fg4p9lyqi542x2xbrmjqqialcf";
   };
 
-  gosnappy = buildGoPackage rec {
-    rev = "ce8acff4829e0c2458a67ead32390ac0a381c862";
-    name = "gosnappy-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/syndtr/gosnappy";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "syndtr";
-      repo = "gosnappy";
-      sha256 = "0ywa52kcii8g2a9lbqcx8ghdf6y56lqq96sl5nl9p6h74rdvmjr7";
-    };
+  gosnappy = buildFromGitHub {
+    rev    = "ce8acff4829e0c2458a67ead32390ac0a381c862";
+    owner  = "syndtr";
+    repo   = "gosnappy";
+    sha256 = "0ywa52kcii8g2a9lbqcx8ghdf6y56lqq96sl5nl9p6h74rdvmjr7";
   };
 
   gox = buildGoPackage rec {
@@ -1106,43 +959,25 @@ let
     };
   };
 
-  robfig.go-cache = buildGoPackage rec {
-    rev = "9fc39e0dbf62c034ec4e45e6120fc69433a3ec51";
-    name = "go-cache-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/robfig/go-cache";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "robfig";
-      repo = "go-cache";
-      sha256 = "032nh3y43bpzpcm7bdkxfh55aydvzc2jzhigvy5gd9f648m4j9ha";
-    };
+  robfig.go-cache = buildFromGitHub {
+    rev    = "9fc39e0dbf62c034ec4e45e6120fc69433a3ec51";
+    owner  = "robfig";
+    repo   = "go-cache";
+    sha256 = "032nh3y43bpzpcm7bdkxfh55aydvzc2jzhigvy5gd9f648m4j9ha";
   };
 
-  go-checkpoint = buildGoPackage rec {
-    rev = "88326f6851319068e7b34981032128c0b1a6524d";
-    name = "go-checkpoint-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/hashicorp/go-checkpoint";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "hashicorp";
-      repo = "go-checkpoint";
-      sha256 = "1npasn9lmvx57nw3wkswwvl5k0wmn01jpalbwv832x5wq4r0nsz4";
-    };
+  go-checkpoint = buildFromGitHub {
+    rev    = "88326f6851319068e7b34981032128c0b1a6524d";
+    owner  = "hashicorp";
+    repo   = "go-checkpoint";
+    sha256 = "1npasn9lmvx57nw3wkswwvl5k0wmn01jpalbwv832x5wq4r0nsz4";
   };
 
-  go-colortext = buildGoPackage rec {
-    rev = "13eaeb896f5985a1ab74ddea58707a73d875ba57";
-    name = "go-colortext-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/daviddengcn/go-colortext";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "daviddengcn";
-      repo = "go-colortext";
-      sha256 = "0618xs9lc5xfp5zkkb5j47dr7i30ps3zj5fj0zpv8afqh2cc689x";
-    };
+  go-colortext = buildFromGitHub {
+    rev    = "13eaeb896f5985a1ab74ddea58707a73d875ba57";
+    owner  = "daviddengcn";
+    repo   = "go-colortext";
+    sha256 = "0618xs9lc5xfp5zkkb5j47dr7i30ps3zj5fj0zpv8afqh2cc689x";
   };
 
   go-etcd = buildGoPackage rec {
@@ -1160,16 +995,11 @@ let
     buildInputs = [ pkgs.etcd ];
   };
 
-  go-flags = buildGoPackage rec {
-    rev = "5e118789801496c93ba210d34ef1f2ce5a9173bd";
-    name = "go-flags-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/jessevdk/go-flags";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "jessevdk";
-      repo = "go-flags";
-      sha256 = "1davr5h936fhc8zy7digp5yqxr216d1mshksr7iiad5xb3r8r9ja";
-    };
+  go-flags = buildFromGitHub {
+    rev    = "5e118789801496c93ba210d34ef1f2ce5a9173bd";
+    owner  = "jessevdk";
+    repo   = "go-flags";
+    sha256 = "1davr5h936fhc8zy7digp5yqxr216d1mshksr7iiad5xb3r8r9ja";
   };
 
   go-fuse = buildGoPackage rec {
@@ -1200,52 +1030,32 @@ let
     buildInputs = [ go-querystring oauth2 ];
   };
 
-  go-homedir = buildGoPackage rec {
-    rev = "7d2d8c8a4e078ce3c58736ab521a40b37a504c52";
-    name = "go-homedir-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/mitchellh/go-homedir";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "mitchellh";
-      repo   = "go-homedir";
-      sha256 = "1ixhwxnvq1qx53asq47yhg3l88ndwrnyw4fkkidcjg759dc86d0i";
-    };
+  go-homedir = buildFromGitHub {
+    rev    = "7d2d8c8a4e078ce3c58736ab521a40b37a504c52";
+    owner  = "mitchellh";
+    repo   = "go-homedir";
+    sha256 = "1ixhwxnvq1qx53asq47yhg3l88ndwrnyw4fkkidcjg759dc86d0i";
   };
 
-  go-hostpool = buildGoPackage rec {
-    rev = "fed86fae5cacdc77e7399937e2f8836563620a2e";
-    name = "go-hostpool-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/bitly/go-hostpool";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "bitly";
-      repo = "go-hostpool";
-      sha256 = "0nbssfp5ksj4hhc0d8lfq54afd9nqv6qzk3vi6rinxr3fgplrj44";
-    };
+  go-hostpool = buildFromGitHub {
+    rev    = "fed86fae5cacdc77e7399937e2f8836563620a2e";
+    owner  = "bitly";
+    repo   = "go-hostpool";
+    sha256 = "0nbssfp5ksj4hhc0d8lfq54afd9nqv6qzk3vi6rinxr3fgplrj44";
   };
 
-  go-ini = buildGoPackage rec {
-    rev = "a98ad7ee00ec53921f08832bc06ecf7fd600e6a1";
-    name = "go-ini-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/vaughan0/go-ini";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "vaughan0";
-      repo   = "go-ini";
-      sha256 = "1l1isi3czis009d9k5awsj4xdxgbxn4n9yqjc1ac7f724x6jacfa";
-    };
+  go-ini = buildFromGitHub {
+    rev    = "a98ad7ee00ec53921f08832bc06ecf7fd600e6a1";
+    owner  = "vaughan0";
+    repo   = "go-ini";
+    sha256 = "1l1isi3czis009d9k5awsj4xdxgbxn4n9yqjc1ac7f724x6jacfa";
   };
 
-  go-isatty = buildGoPackage rec {
-    rev = "ae0b1f8f8004be68d791a576e3d8e7648ab41449";
-    name = "go-isatty-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/mattn/go-isatty";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "mattn";
-      repo = "go-isatty";
-      sha256 = "0qrcsh7j9mxcaspw8lfxh9hhflz55vj4aq1xy00v78301czq6jlj";
-    };
+  go-isatty = buildFromGitHub {
+    rev    = "ae0b1f8f8004be68d791a576e3d8e7648ab41449";
+    owner  = "mattn";
+    repo   = "go-isatty";
+    sha256 = "0qrcsh7j9mxcaspw8lfxh9hhflz55vj4aq1xy00v78301czq6jlj";
   };
 
   go-log = buildGoPackage rec {
@@ -1305,17 +1115,11 @@ let
     propagatedBuildInputs = [ prometheus.client_golang ];
   };
 
-  go-multierror = buildGoPackage rec {
-    rev = "fcdddc395df1ddf4247c69bd436e84cfa0733f7e";
-    name = "go-multierror-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/hashicorp/go-multierror";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "hashicorp";
-      repo = "go-multierror";
-      sha256 = "1gvrm2bqi425mfg55m01z9gppfd7v4ljz1z8bykmh2sc82fj25jz";
-    };
+  go-multierror = buildFromGitHub {
+    rev    = "fcdddc395df1ddf4247c69bd436e84cfa0733f7e";
+    owner  = "hashicorp";
+    repo   = "go-multierror";
+    sha256 = "1gvrm2bqi425mfg55m01z9gppfd7v4ljz1z8bykmh2sc82fj25jz";
   };
 
   go-nsq = buildGoPackage rec {
@@ -1331,42 +1135,25 @@ let
     propagatedBuildInputs = [ go-simplejson go-snappystream ];
   };
 
-  go-options = buildGoPackage rec {
-    rev = "896a539cd709f4f39d787562d1583c016ce7517e";
-    name = "go-options-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/mreiferson/go-options";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "mreiferson";
-      repo = "go-options";
-      sha256 = "0hg0n5grcjcj5719rqchz0plp39wfk3znqxw8y354k4jwsqwmn17";
-    };
+  go-options = buildFromGitHub {
+    rev    = "896a539cd709f4f39d787562d1583c016ce7517e";
+    owner  = "mreiferson";
+    repo   = "go-options";
+    sha256 = "0hg0n5grcjcj5719rqchz0plp39wfk3znqxw8y354k4jwsqwmn17";
   };
 
-  go-querystring = buildGoPackage rec {
-    rev = "547ef5ac979778feb2f760cdb5f4eae1a2207b86";
-    name = "go-querystring-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/google/go-querystring";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "google";
-      repo = "go-querystring";
-      sha256 = "00ani7fhydcmlsm3n93nmj1hcqp2wmzvihnb1gdzynif1hw0530y";
-    };
+  go-querystring = buildFromGitHub {
+    rev    = "547ef5ac979778feb2f760cdb5f4eae1a2207b86";
+    owner  = "google";
+    repo   = "go-querystring";
+    sha256 = "00ani7fhydcmlsm3n93nmj1hcqp2wmzvihnb1gdzynif1hw0530y";
   };
 
-  go-radix = buildGoPackage rec {
-    rev = "0bab926c3433cfd6490c6d3c504a7b471362390c";
-    name = "go-radix-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/armon/go-radix";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "armon";
-      repo = "go-radix";
-      sha256 = "0llq96lxh7p9426hjii8k42kq0cp1hflawh1kjwhbmi5g0jrq04d";
-    };
+  go-radix = buildFromGitHub {
+    rev    = "0bab926c3433cfd6490c6d3c504a7b471362390c";
+    owner  = "armon";
+    repo   = "go-radix";
+    sha256 = "0llq96lxh7p9426hjii8k42kq0cp1hflawh1kjwhbmi5g0jrq04d";
   };
 
   junegunn.go-runewidth = buildGoPackage rec {
@@ -1393,28 +1180,18 @@ let
     };
   };
 
-  go-runit = buildGoPackage rec {
-    rev = "a9148323a615e2e1c93b7a9893914a360b4945c8";
-    name = "go-runit-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/soundcloud/go-runit";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "soundcloud";
-      repo = "go-runit";
-      sha256 = "00f2rfhsaqj2wjanh5qp73phx7x12a5pwd7lc0rjfv68l6sgpg2v";
-    };
+  go-runit = buildFromGitHub {
+    rev    = "a9148323a615e2e1c93b7a9893914a360b4945c8";
+    owner  = "soundcloud";
+    repo   = "go-runit";
+    sha256 = "00f2rfhsaqj2wjanh5qp73phx7x12a5pwd7lc0rjfv68l6sgpg2v";
   };
 
-  go-simplejson = buildGoPackage rec {
-    rev = "1cfceb0e12f47ec02665ef480212d7b531d6f4c5";
-    name = "go-simplejson-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/bitly/go-simplejson";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "bitly";
-      repo = "go-simplejson";
-      sha256 = "1d8x0himl58qn87lv418djy6mbs66p9ai3zpqq13nhkfl67fj3bi";
-    };
+  go-simplejson = buildFromGitHub {
+    rev    = "1cfceb0e12f47ec02665ef480212d7b531d6f4c5";
+    owner  = "bitly";
+    repo   = "go-simplejson";
+    sha256 = "1d8x0himl58qn87lv418djy6mbs66p9ai3zpqq13nhkfl67fj3bi";
   };
 
   go-snappystream = buildGoPackage rec {
@@ -1430,17 +1207,11 @@ let
     propagatedBuildInputs = [ snappy-go ];
   };
 
-  go-syslog = buildGoPackage rec {
-    rev = "42a2b573b664dbf281bd48c3cc12c086b17a39ba";
-    name = "go-syslog-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/hashicorp/go-syslog";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "hashicorp";
-      repo = "go-syslog";
-      sha256 = "1j53m2wjyczm9m55znfycdvm4c8vfniqgk93dvzwy8vpj5gm6sb3";
-    };
+  go-syslog = buildFromGitHub {
+    rev    = "42a2b573b664dbf281bd48c3cc12c086b17a39ba";
+    owner  = "hashicorp";
+    repo   = "go-syslog";
+    sha256 = "1j53m2wjyczm9m55znfycdvm4c8vfniqgk93dvzwy8vpj5gm6sb3";
   };
 
   go-systemd = buildGoPackage rec {
@@ -1476,29 +1247,18 @@ let
     };
   };
 
-  go-vhost = buildGoPackage rec {
-    rev = "c4c28117502e4bf00960c8282b2d1c51c865fe2c";
-    name = "go-vhost-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/inconshreveable/go-vhost";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "inconshreveable";
-      repo = "go-vhost";
-      sha256 = "1rway6sls6fl2s2jk20ajj36rrlzh9944ncc9pdd19kifix54z32";
-    };
+  go-vhost = buildFromGitHub {
+    rev    = "c4c28117502e4bf00960c8282b2d1c51c865fe2c";
+    owner  = "inconshreveable";
+    repo   = "go-vhost";
+    sha256 = "1rway6sls6fl2s2jk20ajj36rrlzh9944ncc9pdd19kifix54z32";
   };
 
-  go-zookeeper = buildGoPackage rec {
-    rev = "d0e0d8e11f318e000a8cc434616d69e329edc374";
-    name = "go-zookeeper-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/samuel/go-zookeeper";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "samuel";
-      repo = "go-zookeeper";
-      sha256 = "0v6g14ygnjl1l2fykyfjyvnab82a70jy0zzmsn5swlyy45b9gq2d";
-    };
+  go-zookeeper = buildFromGitHub {
+    rev    = "d0e0d8e11f318e000a8cc434616d69e329edc374";
+    owner  = "samuel";
+    repo   = "go-zookeeper";
+    sha256 = "0v6g14ygnjl1l2fykyfjyvnab82a70jy0zzmsn5swlyy45b9gq2d";
   };
 
   goquery = buildGoPackage rec {
@@ -1621,16 +1381,11 @@ let
     buildInputs = [ crypto ];
   };
 
-  httprouter = buildGoPackage rec {
-    rev = "bde5c16eb82ff15a1734a3818d9b9547065f65b1";
-    name = "httprouter-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/julienschmidt/httprouter";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "julienschmidt";
-      repo = "httprouter";
-      sha256 = "1l74pvqqhhval4vfnhca9d6i1ij69qs3ljf41w3m1l2id42rq7r9";
-    };
+  httprouter = buildFromGitHub {
+    rev    = "bde5c16eb82ff15a1734a3818d9b9547065f65b1";
+    owner  = "julienschmidt";
+    repo   = "httprouter";
+    sha256 = "1l74pvqqhhval4vfnhca9d6i1ij69qs3ljf41w3m1l2id42rq7r9";
   };
 
   influxdb = buildGoPackage rec {
@@ -1680,28 +1435,18 @@ let
     };
   };
 
-  flagfile = buildGoPackage rec {
-    rev = "871ce569c29360f95d7596f90aa54d5ecef75738";
-    name = "flagfile-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/spacemonkeygo/flagfile";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "spacemonkeygo";
-      repo = "flagfile";
-      sha256 = "1y6wf1s51c90qc1aki8qikkw1wqapzjzr690xrmnrngsfpdyvkrc";
-    };
+  flagfile = buildFromGitHub {
+    rev    = "871ce569c29360f95d7596f90aa54d5ecef75738";
+    owner  = "spacemonkeygo";
+    repo   = "flagfile";
+    sha256 = "1y6wf1s51c90qc1aki8qikkw1wqapzjzr690xrmnrngsfpdyvkrc";
   };
 
-  iochan = buildGoPackage rec {
-    rev = "b584a329b193e206025682ae6c10cdbe03b0cd77";
-    name = "iochan-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/mitchellh/iochan";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "mitchellh";
-      repo = "iochan";
-      sha256 = "1fcwdhfci41ibpng2j4c1bqfng578cwzb3c00yw1lnbwwhaq9r6b";
-    };
+  iochan = buildFromGitHub {
+    rev    = "b584a329b193e206025682ae6c10cdbe03b0cd77";
+    owner  = "mitchellh";
+    repo   = "iochan";
+    sha256 = "1fcwdhfci41ibpng2j4c1bqfng578cwzb3c00yw1lnbwwhaq9r6b";
   };
 
   ipfs = buildGoPackage rec {
@@ -1752,29 +1497,18 @@ let
     buildInputs = [ pkgs.leveldb ];
   };
 
-  liner = buildGoPackage rec {
-    rev = "1bb0d1c1a25ed393d8feb09bab039b2b1b1fbced";
-    name = "liner-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/peterh/liner";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "peterh";
-      repo   = "liner";
-      sha256 = "05ihxpmp6x3hw71xzvjdgxnyvyx2s4lf23xqnfjj16s4j4qidc48";
-    };
+  liner = buildFromGitHub {
+    rev    = "1bb0d1c1a25ed393d8feb09bab039b2b1b1fbced";
+    owner  = "peterh";
+    repo   = "liner";
+    sha256 = "05ihxpmp6x3hw71xzvjdgxnyvyx2s4lf23xqnfjj16s4j4qidc48";
   };
 
-  odeke-em.log = buildGoPackage rec {
-    rev = "cad53c4565a0b0304577bd13f3862350bdc5f907";
-    name = "log-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/odeke-em/log";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "odeke-em";
-      repo = "log";
-      sha256 = "059c933qjikxlvaywzpzljqnab19svymbv6x32pc7khw156fh48w";
-    };
+  odeke-em.log = buildFromGitHub {
+    rev    = "cad53c4565a0b0304577bd13f3862350bdc5f907";
+    owner  = "odeke-em";
+    repo   = "log";
+    sha256 = "059c933qjikxlvaywzpzljqnab19svymbv6x32pc7khw156fh48w";
   };
 
   log4go = buildGoPackage rec {
@@ -1815,30 +1549,18 @@ let
     propagatedBuildInputs = [ airbrake-go bugsnag-go raven-go ];
   };
 
-  logutils = buildGoPackage rec {
-    rev = "367a65d59043b4f846d179341d138f01f988c186";
-    name = "logutils-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/hashicorp/logutils";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "hashicorp";
-      repo = "logutils";
-      sha256 = "0rjag8c6fn3f51nysrq62r46ma6gzyvijxba47q7cdfjq35mydb8";
-    };
+  logutils = buildFromGitHub {
+    rev    = "367a65d59043b4f846d179341d138f01f988c186";
+    owner  = "hashicorp";
+    repo   = "logutils";
+    sha256 = "0rjag8c6fn3f51nysrq62r46ma6gzyvijxba47q7cdfjq35mydb8";
   };
 
-  mapstructure = buildGoPackage rec {
-    rev = "f7d28d5aeab42b9b95d2e6d6b956f73a290077fc";
-    name = "mapstructure-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/mitchellh/mapstructure";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "mitchellh";
-      repo = "mapstructure";
-      sha256 = "1l9bxx0lrxdb75bxgy3jq2f6sgin2xd5ll70z5797vi96mlz8ydb";
-    };
+  mapstructure = buildFromGitHub {
+    rev    = "f7d28d5aeab42b9b95d2e6d6b956f73a290077fc";
+    owner  = "mitchellh";
+    repo   = "mapstructure";
+    sha256 = "1l9bxx0lrxdb75bxgy3jq2f6sgin2xd5ll70z5797vi96mlz8ydb";
   };
 
   mdns = buildGoPackage rec {
@@ -1897,16 +1619,11 @@ let
     buildInputs = [ pkgs.cyrus_sasl ];
   };
 
-  mousetrap = buildGoPackage rec {
-    rev = "9dbb96d2c3a964935b0870b5abaea13c98b483aa";
-    name = "mousetrap-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/inconshreveable/mousetrap";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "inconshreveable";
-      repo = "mousetrap";
-      sha256 = "1f9g8vm18qv1rcb745a4iahql9vfrz0jni9mnzriab2wy1pfdl5b";
-    };
+  mousetrap = buildFromGitHub {
+    rev    = "9dbb96d2c3a964935b0870b5abaea13c98b483aa";
+    owner  = "inconshreveable";
+    repo   = "mousetrap";
+    sha256 = "1f9g8vm18qv1rcb745a4iahql9vfrz0jni9mnzriab2wy1pfdl5b";
   };
 
   msgpack = buildGoPackage rec {
@@ -1937,30 +1654,18 @@ let
     buildInputs = [ context ];
   };
 
-  muxado = buildGoPackage rec {
-    rev = "f693c7e88ba316d1a0ae3e205e22a01aa3ec2848";
-    name = "muxado-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/inconshreveable/muxado";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "inconshreveable";
-      repo = "muxado";
-      sha256 = "1vgiwwxhgx9c899f6ikvrs0w6vfsnypzalcqyr0mqm2w816r9hhs";
-    };
+  muxado = buildFromGitHub {
+    rev    = "f693c7e88ba316d1a0ae3e205e22a01aa3ec2848";
+    owner  = "inconshreveable";
+    repo   = "muxado";
+    sha256 = "1vgiwwxhgx9c899f6ikvrs0w6vfsnypzalcqyr0mqm2w816r9hhs";
   };
 
-  mysql = buildGoPackage rec {
-    rev = "0cc29e9fe8e25c2c58cf47bcab566e029bbaa88b";
-    name = "mysql-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/go-sql-driver/mysql";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "go-sql-driver";
-      repo = "mysql";
-      sha256 = "0ydvd0mk53793sj3hgycsx926zvzxipxvppld1i175g3pn4d41xp";
-    };
+  mysql = buildFromGitHub {
+    rev    = "0cc29e9fe8e25c2c58cf47bcab566e029bbaa88b";
+    owner  = "go-sql-driver";
+    repo   = "mysql";
+    sha256 = "0ydvd0mk53793sj3hgycsx926zvzxipxvppld1i175g3pn4d41xp";
   };
 
   net-rpc-msgpackrpc = buildGoPackage rec {
@@ -1978,29 +1683,18 @@ let
     propagatedBuildInputs = [ ugorji.go ];
   };
 
-  ntp = buildGoPackage rec {
-    rev = "0a5264e2563429030eb922f258229ae3fee5b5dc";
-    name = "ntp-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/beevik/ntp";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "beevik";
-      repo = "ntp";
-      sha256 = "03fvgbjf2aprjj1s6wdc35wwa7k1w5phkixzvp5n1j21sf6w4h24";
-    };
+  ntp = buildFromGitHub {
+    rev    = "0a5264e2563429030eb922f258229ae3fee5b5dc";
+    owner  = "beevik";
+    repo   = "ntp";
+    sha256 = "03fvgbjf2aprjj1s6wdc35wwa7k1w5phkixzvp5n1j21sf6w4h24";
   };
 
-  objx = buildGoPackage rec {
-    rev = "cbeaeb16a013161a98496fad62933b1d21786672";
-    name = "objx-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/stretchr/objx";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "stretchr";
-      repo = "objx";
-      sha256 = "1xn7iibjik77h6h0jilfvcjkkzaqz45baf44p3rb2i03hbmkqkp1";
-    };
+  objx = buildFromGitHub {
+    rev    = "cbeaeb16a013161a98496fad62933b1d21786672";
+    owner  = "stretchr";
+    repo   = "objx";
+    sha256 = "1xn7iibjik77h6h0jilfvcjkkzaqz45baf44p3rb2i03hbmkqkp1";
   };
 
   oglematchers = buildGoPackage rec {
@@ -2073,30 +1767,18 @@ let
     };
   };
 
-  pat = buildGoPackage rec {
-    rev = "b8a35001b773c267eb260a691f4e5499a3531600";
-    name = "pat-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/bmizerany/pat";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "bmizerany";
-      repo = "pat";
-      sha256 = "11zxd45rvjm6cn3wzbi18wy9j4vr1r1hgg6gzlqnxffiizkycxmz";
-    };
+  pat = buildFromGitHub {
+    rev    = "b8a35001b773c267eb260a691f4e5499a3531600";
+    owner  = "bmizerany";
+    repo   = "pat";
+    sha256 = "11zxd45rvjm6cn3wzbi18wy9j4vr1r1hgg6gzlqnxffiizkycxmz";
   };
 
-  pathtree = buildGoPackage rec {
-    rev = "41257a1839e945fce74afd070e02bab2ea2c776a";
-    name = "pathtree-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/robfig/pathtree";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "robfig";
-      repo = "pathtree";
-      sha256 = "087hvskjx1zw815h1617i135vwsn5288v579mz6yral91wbn0kvi";
-    };
+  pathtree = buildFromGitHub {
+    rev    = "41257a1839e945fce74afd070e02bab2ea2c776a";
+    owner  = "robfig";
+    repo   = "pathtree";
+    sha256 = "087hvskjx1zw815h1617i135vwsn5288v579mz6yral91wbn0kvi";
   };
 
   panicwrap = buildGoPackage rec {
@@ -2114,28 +1796,18 @@ let
     propagatedBuildInputs = [ osext ];
   };
 
-  perks = buildGoPackage rec {
-    rev = "aac9e2eab5a334037057336897fd10b0289a5ae8";
-    name = "perks-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/bmizerany/perks";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "bmizerany";
-      repo = "perks";
-      sha256 = "1d027jgc327qz5xmal0hrpqvsj45i9yqmm9pxk3xp3hancvz3l3k";
-    };
+  perks = buildFromGitHub {
+    rev    = "aac9e2eab5a334037057336897fd10b0289a5ae8";
+    owner  = "bmizerany";
+    repo   = "perks";
+    sha256 = "1d027jgc327qz5xmal0hrpqvsj45i9yqmm9pxk3xp3hancvz3l3k";
   };
 
-  pb = buildGoPackage rec {
-    rev = "e648e12b78cedf14ebb2fc1855033f07b034cfbb";
-    name = "pb-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/cheggaaa/pb";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "cheggaaa";
-      repo = "pb";
-      sha256 = "03k4cars7hcqqgdsd0minfls2p7gjpm8q6y8vknh1s68kvxd4xam";
-    };
+  pb = buildFromGitHub {
+    rev    = "e648e12b78cedf14ebb2fc1855033f07b034cfbb";
+    owner  = "cheggaaa";
+    repo   = "pb";
+    sha256 = "03k4cars7hcqqgdsd0minfls2p7gjpm8q6y8vknh1s68kvxd4xam";
   };
 
   beorn7.perks = buildGoPackage rec {
@@ -2177,17 +1849,11 @@ let
     };
   };
 
-  pq = buildGoPackage rec {
-    rev = "93e9980741c9e593411b94e07d5bad8cfb4809db";
-    name = "pq-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/lib/pq";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "lib";
-      repo = "pq";
-      sha256 = "1q0zlizsk3xn7jn0skbvbhcxsfhq7z3dva96cm72n2r5vs5ld783";
-    };
+  pq = buildFromGitHub {
+    rev    = "93e9980741c9e593411b94e07d5bad8cfb4809db";
+    owner  = "lib";
+    repo   = "pq";
+    sha256 = "1q0zlizsk3xn7jn0skbvbhcxsfhq7z3dva96cm72n2r5vs5ld783";
   };
 
   pretty = buildGoPackage rec {
@@ -2264,28 +1930,18 @@ let
     };
   };
 
-  pty = buildGoPackage rec {
-    rev = "67e2db24c831afa6c64fc17b4a143390674365ef";
-    name = "pty-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/kr/pty";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "kr";
-      repo = "pty";
-      sha256 = "1l3z3wbb112ar9br44m8g838z0pq2gfxcp5s3ka0xvm1hjvanw2d";
-    };
+  pty = buildFromGitHub {
+    rev    = "67e2db24c831afa6c64fc17b4a143390674365ef";
+    owner  = "kr";
+    repo   = "pty";
+    sha256 = "1l3z3wbb112ar9br44m8g838z0pq2gfxcp5s3ka0xvm1hjvanw2d";
   };
 
-  pushover = buildGoPackage rec {
-    rev = "a8420a1935479cc266bda685cee558e86dad4b9f";
-    name = "pushover-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/thorduri/pushover";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "thorduri";
-      repo = "pushover";
-      sha256 = "0j4k43ppka20hmixlwhhz5mhv92p6wxbkvdabs4cf7k8jpk5argq";
-    };
+  pushover = buildFromGitHub {
+    rev    = "a8420a1935479cc266bda685cee558e86dad4b9f";
+    owner  = "thorduri";
+    repo   = "pushover";
+    sha256 = "0j4k43ppka20hmixlwhhz5mhv92p6wxbkvdabs4cf7k8jpk5argq";
   };
 
   raft = buildGoPackage rec {
@@ -2333,55 +1989,32 @@ let
     propagatedBuildInputs = [ gomdb ugorji.go raft ];
   };
 
-  raw = buildGoPackage rec {
-    rev = "724aedf6e1a5d8971aafec384b6bde3d5608fba4";
-    name = "raw-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/feyeleanor/raw";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "feyeleanor";
-      repo   = "raw";
-      sha256 = "0z4dcnadgk0fbxxd14dqa1wzzr0v3ksqlzd0swzs2mipim5wjgsz";
-    };
+  raw = buildFromGitHub {
+    rev    = "724aedf6e1a5d8971aafec384b6bde3d5608fba4";
+    owner  = "feyeleanor";
+    repo   = "raw";
+    sha256 = "0z4dcnadgk0fbxxd14dqa1wzzr0v3ksqlzd0swzs2mipim5wjgsz";
   };
 
-  raven-go = buildGoPackage rec {
-    rev = "c8f8fb7c415203f52ca882e2661d21bc6dcb54d7";
-    name = "raven-go-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/getsentry/raven-go";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "getsentry";
-      repo   = "raven-go";
-      sha256 = "052avpl8xsqlcmjmi3v00nm23lhs95af6vpaw2sh5xckln0lfbxh";
-    };
+  raven-go = buildFromGitHub {
+    rev    = "c8f8fb7c415203f52ca882e2661d21bc6dcb54d7";
+    owner  = "getsentry";
+    repo   = "raven-go";
+    sha256 = "052avpl8xsqlcmjmi3v00nm23lhs95af6vpaw2sh5xckln0lfbxh";
   };
 
-  redigo = buildGoPackage rec {
-    rev = "535138d7bcd717d6531c701ef5933d98b1866257";
-    name = "redigo-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/garyburd/redigo";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "garyburd";
-      repo   = "redigo";
-      sha256 = "1m7nc1gvv5yqnq8ii75f33485il6y6prf8gxl97dimsw94qccc5v";
-    };
+  redigo = buildFromGitHub {
+    rev    = "535138d7bcd717d6531c701ef5933d98b1866257";
+    owner  = "garyburd";
+    repo   = "redigo";
+    sha256 = "1m7nc1gvv5yqnq8ii75f33485il6y6prf8gxl97dimsw94qccc5v";
   };
 
-  reflectwalk = buildGoPackage rec {
-    rev = "242be0c275dedfba00a616563e6db75ab8f279ec";
-    name = "reflectwalk-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/mitchellh/reflectwalk";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "mitchellh";
-      repo   = "reflectwalk";
-      sha256 = "0xjyjs7ci7yaslk0rcgdw99ys2kq0p14cx6c90pmdzl0m9pcc9v4";
-    };
+  reflectwalk = buildFromGitHub {
+    rev    = "242be0c275dedfba00a616563e6db75ab8f279ec";
+    owner  = "mitchellh";
+    repo   = "reflectwalk";
+    sha256 = "0xjyjs7ci7yaslk0rcgdw99ys2kq0p14cx6c90pmdzl0m9pcc9v4";
   };
 
   revel = buildGoPackage rec {
@@ -2403,28 +2036,18 @@ let
     ];
   };
 
-  rgbterm = buildGoPackage rec {
-    rev = "c07e2f009ed2311e9c35bca12ec00b38ccd48283";
-    name = "rgbterm-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/aybabtme/rgbterm";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner  = "aybabtme";
-      repo   = "rgbterm";
-      sha256 = "1qph7drds44jzx1whqlrh1hs58k0wv0v58zyq2a81hmm72gsgzam";
-    };
+  rgbterm = buildFromGitHub {
+    rev    = "c07e2f009ed2311e9c35bca12ec00b38ccd48283";
+    owner  = "aybabtme";
+    repo   = "rgbterm";
+    sha256 = "1qph7drds44jzx1whqlrh1hs58k0wv0v58zyq2a81hmm72gsgzam";
   };
 
-  ripper = buildGoPackage rec {
-    rev = "bd1a682568fcb8a480b977bb5851452fc04f9ccb";
-    name = "ripper-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/odeke-em/ripper";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "odeke-em";
-      repo = "ripper";
-      sha256 = "010jsclnmkaywdlyfqdmq372q7kh3qbz2zra0c4wn91qnkmkrnw1";
-    };
+  ripper = buildFromGitHub {
+    rev    = "bd1a682568fcb8a480b977bb5851452fc04f9ccb";
+    owner  = "odeke-em";
+    repo   = "ripper";
+    sha256 = "010jsclnmkaywdlyfqdmq372q7kh3qbz2zra0c4wn91qnkmkrnw1";
   };
 
   sandblast = buildGoPackage rec {
@@ -2537,16 +2160,11 @@ let
     };
   };
 
-  statos = buildGoPackage rec {
-    rev = "f27d6ab69b62abd9d9fe80d355e23a3e45d347d6";
-    name = "statos-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/odeke-em/statos";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "odeke-em";
-      repo = "statos";
-      sha256 = "17cpks8bi9i7p8j38x0wy60jb9g39wbzszcmhx4hlq6yzxr04jvs";
-    };
+  statos = buildFromGitHub {
+    rev    = "f27d6ab69b62abd9d9fe80d355e23a3e45d347d6";
+    owner  = "odeke-em";
+    repo   = "statos";
+    sha256 = "17cpks8bi9i7p8j38x0wy60jb9g39wbzszcmhx4hlq6yzxr04jvs";
   };
 
   statik = buildGoPackage rec {
@@ -2618,17 +2236,11 @@ let
     };
   };
 
-  toml = buildGoPackage rec {
-    rev = "056c9bc7be7190eaa7715723883caffa5f8fa3e4";
-    name = "toml-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/BurntSushi/toml";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "BurntSushi";
-      repo = "toml";
-      sha256 = "0gkgkw04ndr5y7hrdy0r4v2drs5srwfcw2bs1gyas066hwl84xyw";
-    };
+  toml = buildFromGitHub {
+    rev    = "056c9bc7be7190eaa7715723883caffa5f8fa3e4";
+    owner  = "BurntSushi";
+    repo   = "toml";
+    sha256 = "0gkgkw04ndr5y7hrdy0r4v2drs5srwfcw2bs1gyas066hwl84xyw";
   };
 
   usb = buildGoPackage rec {
@@ -2683,17 +2295,11 @@ let
     subPackages = [ "./" ];
   };
 
-  websocket = buildGoPackage rec {
-    rev = "f4076986b69612ecb8bc7ce06d742eda6286200d";
-    name = "websocket-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/gorilla/websocket";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "gorilla";
-      repo = "websocket";
-      sha256 = "09arvwlxw15maf4z8pcgjc25hd00mckqpdi0byafqfgm3nvvacvq";
-    };
+  websocket = buildFromGitHub {
+    rev    = "f4076986b69612ecb8bc7ce06d742eda6286200d";
+    owner  = "gorilla";
+    repo   = "websocket";
+    sha256 = "09arvwlxw15maf4z8pcgjc25hd00mckqpdi0byafqfgm3nvvacvq";
   };
 
   yaml-v1 = buildGoPackage rec {
@@ -2720,29 +2326,18 @@ let
     };
   };
 
-  yamux = buildGoPackage rec {
-    rev = "b2e55852ddaf823a85c67f798080eb7d08acd71d";
-    name = "yamux-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/hashicorp/yamux";
-
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "hashicorp";
-      repo = "yamux";
-      sha256 = "0mr87my5m8lgc0byjcddlclxg34d07cpi9p78ps3rhzq7p37g533";
-    };
+  yamux = buildFromGitHub {
+    rev    = "b2e55852ddaf823a85c67f798080eb7d08acd71d";
+    owner  = "hashicorp";
+    repo   = "yamux";
+    sha256 = "0mr87my5m8lgc0byjcddlclxg34d07cpi9p78ps3rhzq7p37g533";
   };
 
-  xon = buildGoPackage rec {
-    rev = "d580be739d723da4f6378083128f93017b8ab295";
-    name = "xon-${stdenv.lib.strings.substring 0 7 rev}";
-    goPackagePath = "github.com/odeke-em/xon";
-    src = fetchFromGitHub {
-      inherit rev;
-      owner = "odeke-em";
-      repo = "xon";
-      sha256 = "07a7zj01d4a23xqp01m48jp2v5mw49islf4nbq2rj13sd5w4s6sc";
-    };
+  xon = buildFromGitHub {
+    rev    = "d580be739d723da4f6378083128f93017b8ab295";
+    owner  = "odeke-em";
+    repo   = "xon";
+    sha256 = "07a7zj01d4a23xqp01m48jp2v5mw49islf4nbq2rj13sd5w4s6sc";
   };
 
 }; in self
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 25e6a22aa613..e62bbbdf7980 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1433,12 +1433,12 @@ let
   };
 
   botocore = buildPythonPackage rec {
-    version = "1.0.0a1";
+    version = "1.1.4";
     name = "botocore-${version}";
 
     src = pkgs.fetchurl {
       url = "https://pypi.python.org/packages/source/b/botocore/${name}.tar.gz";
-      sha256 = "0fybr48l0fvpc57n71khynpb4j0ibzn35bzybw6g1q9063xfwnxm";
+      sha256 = "1wbbaj0y6bfzsh61hgnnssn5j8m93r6r2m5r1jmlf6iz3l9gqkkp";
     };
 
     propagatedBuildInputs =
@@ -1447,6 +1447,8 @@ let
         self.jmespath
       ];
 
+    buildInputs = [ self.docutils ];
+
     meta = {
       homepage = https://github.com/boto/botocore;
 
@@ -1681,11 +1683,11 @@ let
 
 
   cairocffi = buildPythonPackage rec {
-    name = "cairocffi-0.5.4";
+    name = "cairocffi-0.7.1";
 
     src = pkgs.fetchurl {
       url = "https://pypi.python.org/packages/source/c/cairocffi/${name}.tar.gz";
-      md5 = "e3fa4002583bfaa88b156e1af9c75bde";
+      md5 = "e26d06a8d8b16c7210414ce15d453636";
     };
 
     propagatedBuildInputs = with self; [ cffi ];
@@ -2363,11 +2365,11 @@ let
   };
 
   cffi = buildPythonPackage rec {
-    name = "cffi-0.8.6";
+    name = "cffi-1.1.2";
 
     src = pkgs.fetchurl {
-      url = "http://pypi.python.org/packages/source/c/cffi/${name}.tar.gz";
-      sha256 = "0406j3sgndmx88idv5zxkkrwfqxmjl18pj8gf47nsg4ymzixjci5";
+      url = "https://pypi.python.org/packages/source/c/cffi/${name}.tar.gz";
+      md5 = "ca6e6c45b45caa87aee9adc7c796eaea";
     };
 
     propagatedBuildInputs = with self; [ pkgs.libffi pycparser ];
@@ -8734,11 +8736,11 @@ let
   };
 
   pandas = buildPythonPackage rec {
-    name = "pandas-0.16.1";
+    name = "pandas-0.16.2";
 
     src = pkgs.fetchurl {
       url = "https://pypi.python.org/packages/source/p/pandas/${name}.tar.gz";
-      sha256 = "1dpq5p4iym7y13wkrm0hma87rvvv5rfj5fb10iwbys5hihzj83ap";
+      sha256 = "10agmrkps8bi5948vwpipfxds5kj1d076m9i0nhaxwqiw7gm6670";
     };
 
     buildInputs = [ self.nose ];
@@ -16770,4 +16772,22 @@ let
     };
   };
 
+  xcffib = buildPythonPackage rec {
+    version = "0.3.2";
+    name = "xcffib-${version}";
+
+    src = pkgs.fetchurl {
+      url = "https://pypi.python.org/packages/source/x/xcffib/${name}.tar.gz";
+      md5 = "fa13f3fee67c83016a1242982a7c8bda";
+    };
+
+    propagatedBuildInputs = [ self.cffi self.six ];
+
+    meta = {
+      description = "A drop in replacement for xpyb, an XCB python binding";
+      homepage = "https://github.com/tych0/xcffib";
+      license = licenses.asl20;
+      maintainers = with maintainers; [ kamilchm ];
+    };
+  };
 }; in pythonPackages