about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/maintainers.nix1
-rw-r--r--nixos/doc/manual/release-notes/rl-unstable.xml6
-rw-r--r--nixos/modules/installer/tools/nixos-install.sh2
-rw-r--r--nixos/modules/module-list.nix2
-rw-r--r--nixos/modules/services/hardware/brltty.nix42
-rw-r--r--nixos/modules/services/misc/mbpfan.nix113
-rw-r--r--nixos/modules/system/boot/networkd.nix7
-rw-r--r--nixos/modules/system/boot/systemd-lib.nix63
-rw-r--r--nixos/modules/system/boot/systemd-unit-options.nix51
-rw-r--r--nixos/modules/system/boot/systemd.nix18
-rw-r--r--pkgs/applications/audio/clementine/default.nix120
-rw-r--r--pkgs/applications/editors/emacs-modes/rudel/default.nix2
-rw-r--r--pkgs/applications/editors/zed/default.nix2
-rw-r--r--pkgs/applications/misc/calibre/default.nix4
-rw-r--r--pkgs/applications/misc/krename/default.nix2
-rw-r--r--pkgs/applications/misc/pwsafe/default.nix2
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libCSS.nix2
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libParserUtils.nix2
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnsbmp.nix2
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libnsgif.nix2
-rw-r--r--pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix2
-rw-r--r--pkgs/applications/networking/cluster/pig/default.nix45
-rw-r--r--pkgs/applications/networking/instant-messengers/blink/default.nix4
-rw-r--r--pkgs/applications/office/calligra/default.nix11
-rw-r--r--pkgs/applications/science/logic/yices/default.nix2
-rw-r--r--pkgs/applications/version-management/git-and-tools/stgit/default.nix2
-rw-r--r--pkgs/applications/version-management/git-and-tools/tig/default.nix6
-rw-r--r--pkgs/applications/version-management/smartgithg/default.nix6
-rw-r--r--pkgs/applications/window-managers/i3/lock.nix2
-rw-r--r--pkgs/applications/window-managers/i3/status.nix2
-rw-r--r--pkgs/data/documentation/zeal/default.nix2
-rw-r--r--pkgs/data/fonts/powerline-fonts/default.nix2
-rw-r--r--pkgs/data/misc/geolite-legacy/builder.sh3
-rw-r--r--pkgs/data/misc/geolite-legacy/default.nix17
-rw-r--r--pkgs/desktops/e19/econnman.nix2
-rw-r--r--pkgs/desktops/kde-4.14/kdeedu/artikulate.nix2
-rw-r--r--pkgs/development/compilers/ats-extsolve/default.nix35
-rw-r--r--pkgs/development/compilers/ats-extsolve/misc-fixes.patch136
-rw-r--r--pkgs/development/compilers/ats2/default.nix2
-rw-r--r--pkgs/development/compilers/ats2/setup-hook.sh1
-rw-r--r--pkgs/development/compilers/elm/elm-compiler.nix2
-rw-r--r--pkgs/development/compilers/gcc/5.1/builder.sh255
-rw-r--r--pkgs/development/compilers/gcc/5.1/default.nix526
-rw-r--r--pkgs/development/compilers/gcc/5.1/gfortran-driving.patch20
-rw-r--r--pkgs/development/compilers/gcc/5.1/gnat-cflags.patch33
-rw-r--r--pkgs/development/compilers/gcc/5.1/java-jvgenmain-link.patch17
-rw-r--r--pkgs/development/compilers/gcc/5.1/libstdc++-target.patch32
-rw-r--r--pkgs/development/compilers/gcc/5.1/no-sys-dirs.patch28
-rw-r--r--pkgs/development/compilers/ghcjs/default.nix2
-rw-r--r--pkgs/development/compilers/gwt/2.4.0.nix2
-rw-r--r--pkgs/development/compilers/scala/2.10.nix2
-rw-r--r--pkgs/development/compilers/scala/2.9.nix2
-rw-r--r--pkgs/development/compilers/yap/default.nix2
-rw-r--r--pkgs/development/coq-modules/bedrock/default.nix2
-rw-r--r--pkgs/development/coq-modules/fiat/default.nix2
-rw-r--r--pkgs/development/coq-modules/flocq/default.nix2
-rw-r--r--pkgs/development/coq-modules/paco/default.nix2
-rw-r--r--pkgs/development/coq-modules/tlc/default.nix2
-rw-r--r--pkgs/development/coq-modules/ynot/default.nix2
-rw-r--r--pkgs/development/libraries/apr/default.nix4
-rw-r--r--pkgs/development/libraries/assimp/default.nix2
-rw-r--r--pkgs/development/libraries/c-ares/default.nix10
-rw-r--r--pkgs/development/libraries/fcgi/default.nix2
-rw-r--r--pkgs/development/libraries/fox/fox-1.6.nix2
-rw-r--r--pkgs/development/libraries/giflib/5.0.nix2
-rw-r--r--pkgs/development/libraries/giflib/5.1.nix2
-rw-r--r--pkgs/development/libraries/isl/0.14.1.nix22
-rw-r--r--pkgs/development/libraries/jansson/default.nix6
-rw-r--r--pkgs/development/libraries/lame/default.nix2
-rw-r--r--pkgs/development/libraries/libtomcrypt/default.nix2
-rw-r--r--pkgs/development/libraries/nghttp2/default.nix72
-rw-r--r--pkgs/development/libraries/npapi-sdk/default.nix2
-rw-r--r--pkgs/development/libraries/physics/geant4/default.nix4
-rw-r--r--pkgs/development/libraries/physics/geant4/g4py/default.nix2
-rw-r--r--pkgs/development/libraries/qmltermwidget/default.nix2
-rw-r--r--pkgs/development/libraries/urt/default.nix2
-rw-r--r--pkgs/development/lisp-modules/lisp-packages.nix2
-rw-r--r--pkgs/development/ocaml-modules/gmetadom/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/ocaml-text/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/ulex/0.8/default.nix2
-rw-r--r--pkgs/development/ocaml-modules/ulex/default.nix2
-rw-r--r--pkgs/development/tools/misc/checkbashisms/default.nix2
-rw-r--r--pkgs/development/tools/ocaml/camlidl/default.nix2
-rw-r--r--pkgs/development/tools/parsing/hammer/default.nix16
-rw-r--r--pkgs/development/tools/profiling/gprof2dot/default.nix19
-rw-r--r--pkgs/games/eduke32/default.nix68
-rw-r--r--pkgs/games/super-tux-kart/default.nix2
-rw-r--r--pkgs/misc/emulators/cdemu/base.nix10
-rw-r--r--pkgs/misc/vim-plugins/default.nix30
-rw-r--r--pkgs/os-specific/linux/fatrace/default.nix16
-rw-r--r--pkgs/os-specific/linux/fusionio/util.nix2
-rw-r--r--pkgs/os-specific/linux/hal-flash/default.nix2
-rw-r--r--pkgs/os-specific/linux/iproute/default.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.10.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.14.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-3.19.nix4
-rw-r--r--pkgs/os-specific/linux/kernel/linux-4.0.nix5
-rw-r--r--pkgs/os-specific/linux/kernel/patches.nix12
-rw-r--r--pkgs/os-specific/linux/mbpfan/default.nix30
-rw-r--r--pkgs/os-specific/linux/mbpfan/fixes.patch29
-rw-r--r--pkgs/os-specific/linux/mcelog/default.nix4
-rw-r--r--pkgs/servers/mail/exim/default.nix4
-rw-r--r--pkgs/servers/nosql/hyperdex/busybee.nix2
-rw-r--r--pkgs/servers/nosql/hyperdex/default.nix2
-rw-r--r--pkgs/servers/nosql/hyperdex/replicant.nix2
-rw-r--r--pkgs/servers/sql/monetdb/default.nix2
-rw-r--r--pkgs/shells/mksh/default.nix2
-rw-r--r--pkgs/tools/backup/store-backup/default.nix2
-rw-r--r--pkgs/tools/cd-dvd/dvdisaster/default.nix33
-rw-r--r--pkgs/tools/cd-dvd/dvdisaster/dvdrom.patch19
-rw-r--r--pkgs/tools/cd-dvd/dvdisaster/encryption.patch21
-rw-r--r--pkgs/tools/filesystems/btrfsprogs/default.nix4
-rw-r--r--pkgs/tools/filesystems/yandex-disk/default.nix2
-rw-r--r--pkgs/tools/misc/brltty/default.nix33
-rw-r--r--pkgs/tools/networking/airfield/default.nix2
-rw-r--r--pkgs/tools/networking/bwm-ng/default.nix2
-rw-r--r--pkgs/tools/networking/curl/default.nix4
-rw-r--r--pkgs/tools/security/aide/default.nix2
-rw-r--r--pkgs/tools/text/html2text/default.nix2
-rw-r--r--pkgs/tools/video/rtmpdump/default.nix4
-rw-r--r--pkgs/top-level/all-packages.nix40
-rw-r--r--pkgs/top-level/python-packages.nix80
122 files changed, 2019 insertions, 324 deletions
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index f0e87507ceb6..8f148ba91c40 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -41,6 +41,7 @@
   bodil = "Bodil Stokke <nix@bodil.org>";
   boothead = "Ben Ford <ben@perurbis.com>";
   bosu = "Boris Sukholitko <boriss@gmail.com>";
+  bramd = "Bram Duvigneau <bram@bramd.nl>";
   bstrik = "Berno Strik <dutchman55@gmx.com>";
   calrama = "Moritz Maxeiner <moritz@ucworks.org>";
   campadrenalin = "Philip Horger <campadrenalin@gmail.com>";
diff --git a/nixos/doc/manual/release-notes/rl-unstable.xml b/nixos/doc/manual/release-notes/rl-unstable.xml
index cdbd074e7828..6b2cf55bb8d3 100644
--- a/nixos/doc/manual/release-notes/rl-unstable.xml
+++ b/nixos/doc/manual/release-notes/rl-unstable.xml
@@ -15,9 +15,9 @@
 
 <para>Following new services were added since the last release:
 
-<!--<itemizedlist>
-
-</itemizedlist>-->
+<itemizedlist>
+<listitem><para><literal>brltty</literal></para></listitem>
+</itemizedlist>
 </para>
 
 <para>When upgrading from a previous release, please be aware of the
diff --git a/nixos/modules/installer/tools/nixos-install.sh b/nixos/modules/installer/tools/nixos-install.sh
index 097631eda9c9..b1f4772d5705 100644
--- a/nixos/modules/installer/tools/nixos-install.sh
+++ b/nixos/modules/installer/tools/nixos-install.sh
@@ -263,7 +263,7 @@ export NIX_PATH=$NIX_PATH:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix
 
 
 # Ask the user to set a root password.
-if [ "$(chroot $mountPoint nix-instantiate --eval '<nixpkgs/nixos>' -A config.users.mutableUsers)" = true ] && [ -t 1 ] ; then
+if [ "$(chroot $mountPoint nix-instantiate --eval '<nixpkgs/nixos>' -A config.users.mutableUsers)" = true ] && [ -t 0 ] ; then
     echo "setting root password..."
     chroot $mountPoint /var/setuid-wrappers/passwd
 fi
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 61cc551f4358..d182359b5cff 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -152,6 +152,7 @@
   ./services/hardware/actkbd.nix
   ./services/hardware/amd-hybrid-graphics.nix
   ./services/hardware/bluetooth.nix
+  ./services/hardware/brltty.nix
   ./services/hardware/freefall.nix
   ./services/hardware/nvidia-optimus.nix
   ./services/hardware/pcscd.nix
@@ -195,6 +196,7 @@
   ./services/misc/gitolite.nix
   ./services/misc/gpsd.nix
   ./services/misc/ihaskell.nix
+  ./services/misc/mbpfan.nix
   ./services/misc/mediatomb.nix
   ./services/misc/mesos-master.nix
   ./services/misc/mesos-slave.nix
diff --git a/nixos/modules/services/hardware/brltty.nix b/nixos/modules/services/hardware/brltty.nix
new file mode 100644
index 000000000000..d6c05a3d620c
--- /dev/null
+++ b/nixos/modules/services/hardware/brltty.nix
@@ -0,0 +1,42 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.brltty;
+  
+  stateDir = "/run/brltty";
+
+  pidFile = "${stateDir}/brltty.pid";
+
+in {
+
+  options = {
+
+    services.brltty.enable = mkOption {
+      type = types.bool;
+      default = false;
+      description = "Whether to enable the BRLTTY daemon.";
+    };
+
+  };
+
+  config = mkIf cfg.enable {
+
+    systemd.services.brltty = {
+      description = "Braille console driver";
+      preStart = ''
+        mkdir -p ${stateDir}
+      '';
+      serviceConfig = {
+        ExecStart = "${pkgs.brltty}/bin/brltty --pid-file=${pidFile}";
+        Type = "forking";
+        PIDFile = pidFile;
+      };
+      before = [ "sysinit.target" ];
+      wantedBy = [ "sysinit.target" ];
+    };
+
+  };
+
+}
diff --git a/nixos/modules/services/misc/mbpfan.nix b/nixos/modules/services/misc/mbpfan.nix
new file mode 100644
index 000000000000..3fb5f684b761
--- /dev/null
+++ b/nixos/modules/services/misc/mbpfan.nix
@@ -0,0 +1,113 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+  cfg = config.services.mbpfan;
+  verbose = if cfg.verbose then "v" else "";
+
+in {
+  options.services.mbpfan = {
+    enable = mkOption {
+      default = false;
+      type = types.bool;
+      description = ''
+        Whether to enable the mbpfan daemon.
+      '';
+    };
+
+    package = mkOption {
+      default = pkgs.mbpfan;
+      description = ''
+        The package used for the mbpfan daemon.
+      '';
+    };
+
+    minFanSpeed = mkOption {
+      type = types.int;
+      default = 2000;
+      description = ''
+        The minimum fan speed.
+      '';
+    };
+
+    maxFanSpeed = mkOption {
+      type = types.int;
+      default = 6200;
+      description = ''
+        The maximum fan speed.
+      '';
+    };
+
+    lowTemp = mkOption {
+      type = types.int;
+      default = 63;
+      description = ''
+        The low temperature.
+      '';
+    };
+
+    highTemp = mkOption {
+      type = types.int;
+      default = 66;
+      description = ''
+        The high temperature.
+      '';
+    };
+
+    maxTemp = mkOption {
+      type = types.int;
+      default = 86;
+      description = ''
+        The maximum temperature.
+      '';
+    };
+
+    pollingInterval = mkOption {
+      type = types.int;
+      default = 7;
+      description = ''
+        The polling interval.
+      '';
+    };
+
+    verbose = mkOption {
+      type = types.bool;
+      default = false;
+      description = ''
+        If true, sets the log level to verbose.
+      '';
+    };
+  };
+
+  config = mkIf cfg.enable {
+    boot.kernelModules = [ "coretemp" "applesmc" ];
+
+    environment = {
+      etc."mbpfan.conf".text = ''
+        [general]
+        min_fan_speed = ${toString cfg.minFanSpeed}
+        max_fan_speed = ${toString cfg.maxFanSpeed}
+        low_temp = ${toString cfg.lowTemp}
+        high_temp = ${toString cfg.highTemp}
+        max_temp = ${toString cfg.maxTemp}
+        polling_interval = ${toString cfg.pollingInterval}
+      '';
+      systemPackages = [ cfg.package ];
+    };
+
+    systemd.services.mbpfan = {
+      description = "A fan manager daemon for MacBook Pro";
+      wantedBy = [ "sysinit.target" ];
+      after = [ "syslog.target" "sysinit.target" ];
+      restartTriggers = [ config.environment.etc."mbpfan.conf".source ];
+      serviceConfig = {
+        Type = "simple";
+        ExecStart = "${cfg.package}/bin/mbpfan -f${verbose}";
+        ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
+        PIDFile = "/var/run/mbpfan.pid";
+        Restart = "always";
+      };
+    };
+  };
+}
diff --git a/nixos/modules/system/boot/networkd.nix b/nixos/modules/system/boot/networkd.nix
index 0221374ab835..b183c0f32366 100644
--- a/nixos/modules/system/boot/networkd.nix
+++ b/nixos/modules/system/boot/networkd.nix
@@ -132,7 +132,7 @@ let
   commonNetworkOptions = {
 
     enable = mkOption {
-      default = false;
+      default = true;
       type = types.bool;
       description = ''
         Whether to manage network configuration using <command>systemd-network</command>.
@@ -482,6 +482,11 @@ let
     };
   };
 
+  commonMatchText = def: ''
+    [Match]
+    ${attrsToSection def.matchConfig}
+  '';
+
   linkToUnit = name: def:
     { inherit (def) enable;
       text = commonMatchText def +
diff --git a/nixos/modules/system/boot/systemd-lib.nix b/nixos/modules/system/boot/systemd-lib.nix
index e8cfd3395cb0..873fff15d384 100644
--- a/nixos/modules/system/boot/systemd-lib.nix
+++ b/nixos/modules/system/boot/systemd-lib.nix
@@ -25,6 +25,69 @@ rec {
           ln -s /dev/null $out/${shellEscape name}
         '';
 
+  boolValues = [true false "yes" "no"];
+
+  digits = map toString (range 0 9);
+
+  isByteFormat = s:
+    let
+      l = reverseList (stringToCharacters s);
+      suffix = head l;
+      nums = tail l;
+    in elem suffix (["K" "M" "G" "T"] ++ digits)
+      && all (num: elem num digits) nums;
+
+  assertByteFormat = name: group: attr:
+    optional (attr ? ${name} && ! isByteFormat attr.${name})
+      "Systemd ${group} field `${name}' must be in byte format [0-9]+[KMGT].";
+
+  hexChars = stringToCharacters "0123456789abcdefABCDEF";
+
+  isMacAddress = s: stringLength s == 17
+    && flip all (splitString ":" s) (bytes:
+      all (byte: elem byte hexChars) (stringToCharacters bytes)
+    );
+
+  assertMacAddress = name: group: attr:
+    optional (attr ? ${name} && ! isMacAddress attr.${name})
+      "Systemd ${group} field `${name}' must be a valid mac address.";
+
+
+  assertValueOneOf = name: values: group: attr:
+    optional (attr ? ${name} && !elem attr.${name} values)
+      "Systemd ${group} field `${name}' cannot have value `${attr.${name}}'.";
+
+  assertHasField = name: group: attr:
+    optional (!(attr ? ${name}))
+      "Systemd ${group} field `${name}' must exist.";
+
+  assertRange = name: min: max: group: attr:
+    optional (attr ? ${name} && !(min <= attr.${name} && max >= attr.${name}))
+      "Systemd ${group} field `${name}' is outside the range [${toString min},${toString max}]";
+
+  assertOnlyFields = fields: group: attr:
+    let badFields = filter (name: ! elem name fields) (attrNames attr); in
+    optional (badFields != [ ])
+      "Systemd ${group} has extra fields [${concatStringsSep " " badFields}].";
+
+  checkUnitConfig = group: checks: v:
+    let errors = concatMap (c: c group v) checks; in
+    if errors == [] then true
+      else builtins.trace (concatStringsSep "\n" errors) false;
+
+  toOption = x:
+    if x == true then "true"
+    else if x == false then "false"
+    else toString x;
+
+  attrsToSection = as:
+    concatStrings (concatLists (mapAttrsToList (name: value:
+      map (x: ''
+          ${name}=${toOption x}
+        '')
+        (if isList value then value else [value]))
+        as));
+
   generateUnits = type: units: upstreamUnits: upstreamWants:
     pkgs.runCommand "${type}-units" { preferLocalBuild = true; } ''
       mkdir -p $out
diff --git a/nixos/modules/system/boot/systemd-unit-options.nix b/nixos/modules/system/boot/systemd-unit-options.nix
index 785634cbf66a..57831a5e6ef3 100644
--- a/nixos/modules/system/boot/systemd-unit-options.nix
+++ b/nixos/modules/system/boot/systemd-unit-options.nix
@@ -1,58 +1,9 @@
 { config, lib }:
 
 with lib;
+with import ./systemd-lib.nix { inherit config lib pkgs; };
 
 let
-
-  boolValues = [true false "yes" "no"];
-
-  assertValueOneOf = name: values: group: attr:
-    optional (attr ? ${name} && !elem attr.${name} values)
-      "Systemd ${group} field `${name}' cannot have value `${attr.${name}}'.";
-
-  assertHasField = name: group: attr:
-    optional (!(attr ? ${name}))
-      "Systemd ${group} field `${name}' must exist.";
-
-  assertOnlyFields = fields: group: attr:
-    let badFields = filter (name: ! elem name fields) (attrNames attr); in
-    optional (badFields != [ ])
-      "Systemd ${group} has extra fields [${concatStringsSep " " badFields}].";
-
-  assertRange = name: min: max: group: attr:
-    optional (attr ? ${name} && !(min <= attr.${name} && max >= attr.${name}))
-      "Systemd ${group} field `${name}' is outside the range [${toString min},${toString max}]";
-
-  digits = map toString (range 0 9);
-
-  isByteFormat = s:
-    let
-      l = reverseList (stringToCharacters s);
-      suffix = head l;
-      nums = tail l;
-    in elem suffix (["K" "M" "G" "T"] ++ digits)
-      && all (num: elem num digits) nums;
-
-  assertByteFormat = name: group: attr:
-    optional (attr ? ${name} && ! isByteFormat attr.${name})
-      "Systemd ${group} field `${name}' must be in byte format [0-9]+[KMGT].";
-
-  hexChars = stringToCharacters "0123456789abcdefABCDEF";
-
-  isMacAddress = s: stringLength s == 17
-    && flip all (splitString ":" s) (bytes:
-      all (byte: elem byte hexChars) (stringToCharacters bytes)
-    );
-
-  assertMacAddress = name: group: attr:
-    optional (attr ? ${name} && ! isMacAddress attr.${name})
-      "Systemd ${group} field `${name}' must be a valid mac address.";
-
-  checkUnitConfig = group: checks: v:
-    let errors = concatMap (c: c group v) checks; in
-    if errors == [] then true
-      else builtins.trace (concatStringsSep "\n" errors) false;
-
   checkService = checkUnitConfig "Service" [
     (assertValueOneOf "Type" [
       "simple" "forking" "oneshot" "dbus" "notify" "idle"
diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix
index 78aac7fe96f1..0f210d506881 100644
--- a/nixos/modules/system/boot/systemd.nix
+++ b/nixos/modules/system/boot/systemd.nix
@@ -276,19 +276,6 @@ let
     };
   };
 
-  toOption = x:
-    if x == true then "true"
-    else if x == false then "false"
-    else toString x;
-
-  attrsToSection = as:
-    concatStrings (concatLists (mapAttrsToList (name: value:
-      map (x: ''
-          ${name}=${toOption x}
-        '')
-        (if isList value then value else [value]))
-        as));
-
   commonUnitText = def: ''
       [Unit]
       ${attrsToSection def.unitConfig}
@@ -369,11 +356,6 @@ let
         '';
     };
 
-  commonMatchText = def: ''
-      [Match]
-      ${attrsToSection def.matchConfig}
-    '';
-
 in
 
 {
diff --git a/pkgs/applications/audio/clementine/default.nix b/pkgs/applications/audio/clementine/default.nix
index 538f54fbaf81..4b56052e4782 100644
--- a/pkgs/applications/audio/clementine/default.nix
+++ b/pkgs/applications/audio/clementine/default.nix
@@ -1,64 +1,92 @@
 { stdenv, fetchurl, boost, cmake, gettext, gstreamer, gst_plugins_base
-, gst_plugins_good, gst_plugins_bad, gst_plugins_ugly, gst_ffmpeg
 , liblastfm, qt4, taglib, fftw, glew, qjson, sqlite, libgpod, libplist
 , usbmuxd, libmtp, gvfs, libcdio, protobuf, libspotify, qca2, pkgconfig
-, sparsehash, config, makeWrapper }:
+, sparsehash, config, makeWrapper, gst_plugins }:
+
+let 
+  version = "1.2.3";
+
+  withSpotify = config.clementine.spotify or false;
+
+  wrappedExeName = "clementine";
+
+  wrapped = stdenv.mkDerivation {
+    name = "clementine-wrapped-${version}";
+
+    src = fetchurl {
+      url = https://github.com/clementine-player/Clementine/archive/1.2.3.tar.gz;
+      sha256 = "1gx1109i4pylz6x7gvp4rdzc6dvh0w6in6hfbygw01d08l26bxbx";
+    };
+
+    patches = [ ./clementine-1.2.1-include-paths.patch ];
+
+    buildInputs = [
+      boost
+      cmake
+      fftw
+      gettext
+      glew
+      gst_plugins_base
+      gstreamer
+      gvfs
+      libcdio
+      libgpod
+      liblastfm
+      libmtp
+      libplist
+      pkgconfig
+      protobuf
+      qca2
+      qjson
+      qt4
+      sparsehash
+      sqlite
+      taglib
+      usbmuxd
+    ];
+
+    enableParallelBuilding = true;
+  };
 
-let withSpotify = config.clementine.spotify or false;
 in
+
 stdenv.mkDerivation {
-  name = "clementine-1.2.3";
+  name = "clementine-${version}";
 
-  src = fetchurl {
-    url = https://github.com/clementine-player/Clementine/archive/1.2.3.tar.gz;
-    sha256 = "1gx1109i4pylz6x7gvp4rdzc6dvh0w6in6hfbygw01d08l26bxbx";
-  };
+  src = ./.;
 
-  patches =
-    [
-      ./clementine-1.2.1-include-paths.patch
-      ./clementine-dbus-namespace.patch
-    ];
+  patches = [
+    ./clementine-1.2.1-include-paths.patch
+    ./clementine-dbus-namespace.patch
+  ];
 
   buildInputs = [
-    boost
-    cmake
-    fftw
-    gettext
-    glew
-    gst_plugins_base
-    gst_plugins_good
-    gst_plugins_ugly
-    gst_ffmpeg
-    gstreamer
-    gvfs
-    libcdio
-    libgpod
-    liblastfm
-    libmtp
-    libplist
+    wrapped
     makeWrapper
-    pkgconfig
-    protobuf
-    qca2
-    qjson
-    qt4
-    sparsehash
-    sqlite
-    taglib
-    usbmuxd
-  ] ++ stdenv.lib.optional withSpotify libspotify;
-
-  enableParallelBuilding = true;
-
-  postInstall = ''
-    wrapProgram $out/bin/clementine \
-      --set GST_PLUGIN_SYSTEM_PATH "$GST_PLUGIN_SYSTEM_PATH"
+  ] ++ gst_plugins
+    ++ stdenv.lib.optional withSpotify libspotify;
+
+  installPhase = ''
+    mkdir -p $out
+    cp -a ${wrapped}/* $out
+    chmod -R u+w-t $out
+
+    wrapProgram "$out/bin/${wrappedExeName}" \
+        --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH"
   '';
 
+  preferLocalBuild = true;
+  dontPatchELF = true;
+  dontStrip = true;
+
   meta = with stdenv.lib; {
     homepage = "http://www.clementine-player.org";
-    description = "A multiplatform music player";
+    description = "A multiplatform music player"
+      + " ("
+      + concatStrings (optionals (withSpotify) ["with spotify, "])
+      + "with gstreamer plugins: "
+      + concatStrings (intersperse ", " (map (x: x.name) gst_plugins))
+      + ")";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.ttuegel ];
diff --git a/pkgs/applications/editors/emacs-modes/rudel/default.nix b/pkgs/applications/editors/emacs-modes/rudel/default.nix
index 787f5df6eb04..f830b16da981 100644
--- a/pkgs/applications/editors/emacs-modes/rudel/default.nix
+++ b/pkgs/applications/editors/emacs-modes/rudel/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation
 
   meta = {
     homepage = "http://rudel.sourceforge.net/";
-    description = "Rudel is a collaborative editing environment for GNU Emacs";
+    description = "A collaborative editing environment for GNU Emacs";
     license = "GPL";
   };
 }
diff --git a/pkgs/applications/editors/zed/default.nix b/pkgs/applications/editors/zed/default.nix
index e46cb66de56a..0d4b9fd1dab5 100644
--- a/pkgs/applications/editors/zed/default.nix
+++ b/pkgs/applications/editors/zed/default.nix
@@ -79,7 +79,7 @@ in stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "Zed is a fully offline-capable, open source, keyboard-focused, text and code editor for power users";
+    description = "A fully offline-capable, open source, keyboard-focused, text and code editor for power users";
     license = stdenv.lib.licenses.mit;
     homepage = http://zedapp.org/;
     maintainers = [ stdenv.lib.maintainers.matejc ];
diff --git a/pkgs/applications/misc/calibre/default.nix b/pkgs/applications/misc/calibre/default.nix
index 991cc65c94d2..13738cdafe58 100644
--- a/pkgs/applications/misc/calibre/default.nix
+++ b/pkgs/applications/misc/calibre/default.nix
@@ -5,11 +5,11 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "calibre-2.26.0";
+  name = "calibre-2.27.0";
 
   src = fetchurl {
     url = "mirror://sourceforge/calibre/${name}.tar.xz";
-    sha256 = "0340cdxbdwvckmz3zygwx1wbn62wxap0545nsimpfq4ln7dcxrfw";
+    sha256 = "13id1r2q6alw4wzb4z0njkyr6lsmzs2fjp3cflqavx3qk25darv5";
   };
 
   inherit python;
diff --git a/pkgs/applications/misc/krename/default.nix b/pkgs/applications/misc/krename/default.nix
index 75d8e5ecb89b..ff98bb5186a7 100644
--- a/pkgs/applications/misc/krename/default.nix
+++ b/pkgs/applications/misc/krename/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = http://www.krename.net;
-    description = "KRename is a powerful batch renamer for KDE";
+    description = "A powerful batch renamer for KDE";
     inherit (kdelibs.meta) platforms;
     maintainers = [ stdenv.lib.maintainers.urkud ];
   };
diff --git a/pkgs/applications/misc/pwsafe/default.nix b/pkgs/applications/misc/pwsafe/default.nix
index a1538c69932e..3faf127d88db 100644
--- a/pkgs/applications/misc/pwsafe/default.nix
+++ b/pkgs/applications/misc/pwsafe/default.nix
@@ -62,7 +62,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with stdenv.lib; {
-    description = "Password Safe is a password database utility";
+    description = "A password database utility";
 
     longDescription = ''
       Password Safe is a password database utility. Like many other
diff --git a/pkgs/applications/networking/browsers/netsurf/libCSS.nix b/pkgs/applications/networking/browsers/netsurf/libCSS.nix
index ede053aeca3f..99192fda113a 100644
--- a/pkgs/applications/networking/browsers/netsurf/libCSS.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libCSS.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   buildInputs = [pkgconfig libParserUtils libwapcaplet];
 
   meta = { 
-    description = "libCSS is a CSS parser and selection engine, written in C"; # used by netsurf
+    description = "A CSS parser and selection engine, written in C"; # used by netsurf
     homepage = http://www.netsurf-browser.org/projects/libcss/;
     license = stdenv.lib.licenses.mit;
     maintainers = [args.lib.maintainers.marcweber];
diff --git a/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix b/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix
index 32bede76e432..3c2b7693be7f 100644
--- a/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   buildInputs = [pkgconfig];
 
   meta = { 
-    description = "LibParserUtils is a library for building efficient parsers, written in C";
+    description = "A library for building efficient parsers, written in C";
     homepage = http://www.netsurf-browser.org/projects/libparserutils/;
     license = stdenv.lib.licenses.mit;
     maintainers = [args.lib.maintainers.marcweber];
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix b/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
index d370002543ce..083850bb5450 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnsbmp.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   buildInputs = [];
 
   meta = { 
-    description = "Libnsbmp is a decoding library for BMP and ICO image file formats"; # used by netsurf
+    description = "A decoding library for BMP and ICO image file formats"; # used by netsurf
     homepage = http://www.netsurf-browser.org/projects/libnsbmp/;
     license = stdenv.lib.licenses.mit;
     maintainers = [args.lib.maintainers.marcweber];
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix b/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
index a4502d2354de..5e2acb4f313f 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation {
   buildInputs = [];
 
   meta = {
-    description = "Libnsbmp is a decoding library for gif image file formats"; # used by netsurf
+    description = "A decoding library for gif image file formats"; # used by netsurf
     homepage = http://www.netsurf-browser.org/projects/libnsgif/;
     license = stdenv.lib.licenses.mit;
     maintainers = [args.lib.maintainers.marcweber];
diff --git a/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix b/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix
index 5aa15d7b80d0..a4cd09d1d860 100644
--- a/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libwapcaplet.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation {
   buildInputs = [];
 
   meta = { 
-    description = "LibWapcaplet is a string internment library, written in C";
+    description = "A string internment library, written in C";
     homepage = http://www.netsurf-browser.org/projects/libwapcaplet/;
     license = stdenv.lib.licenses.mit;
     maintainers = [args.lib.maintainers.marcweber];
diff --git a/pkgs/applications/networking/cluster/pig/default.nix b/pkgs/applications/networking/cluster/pig/default.nix
new file mode 100644
index 000000000000..a5666fc8f321
--- /dev/null
+++ b/pkgs/applications/networking/cluster/pig/default.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, makeWrapper, hadoop, jre, bash }:
+
+stdenv.mkDerivation rec {
+
+  name = "pig-0.14.0";
+
+  src = fetchurl {
+    url = "mirror://apache/pig/${name}/${name}.tar.gz";
+    sha256 = "183in34cj93ny3lhqyq76g9pjqgw1qlwakk5v6x847vrlkfndska";
+
+  };
+
+  buildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    mkdir -p $out
+    mv * $out
+
+    # no need for the windows batch script
+    rm $out/bin/pig.cmd $out/bin/pig.py
+
+    for n in $out/{bin,sbin}"/"*; do
+      wrapProgram $n \
+        --prefix PATH : "${jre}/bin:${bash}/bin" \
+        --set JAVA_HOME "${jre}" --set HADOOP_PREFIX "${hadoop}"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = "http://pig.apache.org/";
+    description = "High-level language for Apache Hadoop";
+    license = licenses.asl20;
+
+    longDescription = ''
+      Apache Pig is a platform for analyzing large data sets that consists of a
+      high-level language for expressing data analysis programs, coupled with
+      infrastructure for evaluating these programs. The salient property of Pig
+      programs is that their structure is amenable to substantial parallelization,
+      which in turns enables them to handle very large data sets.
+    '';
+
+    platforms = platforms.linux;
+    maintainers = [ maintainers.skeidel ];
+  };
+}
diff --git a/pkgs/applications/networking/instant-messengers/blink/default.nix b/pkgs/applications/networking/instant-messengers/blink/default.nix
index 00a881c0c676..c4cfc0b67760 100644
--- a/pkgs/applications/networking/instant-messengers/blink/default.nix
+++ b/pkgs/applications/networking/instant-messengers/blink/default.nix
@@ -2,11 +2,11 @@
 
 pythonPackages.buildPythonPackage rec {
   name = "blink-${version}";
-  version = "1.2.2";
+  version = "1.3.0";
   
   src = fetchurl {
     url = "http://download.ag-projects.com/BlinkQt/${name}.tar.gz";
-    sha256 = "0z7bhfz2775cm7c7s794s5ighp5q7fb6jn8dw025m49vlgqzr78c";
+    sha256 = "388a0ca72ad99087cd87b78a4c449f9c079117920bfc50d7843853b8f942d045";
   };
 
   patches = [ ./pythonpath.patch ];
diff --git a/pkgs/applications/office/calligra/default.nix b/pkgs/applications/office/calligra/default.nix
index 00f27bfc93c8..0b28d13e4e55 100644
--- a/pkgs/applications/office/calligra/default.nix
+++ b/pkgs/applications/office/calligra/default.nix
@@ -32,7 +32,16 @@ stdenv.mkDerivation rec {
   NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR";
 
   meta = {
-    description = "Calligra Suite is a set of applications written to help you to accomplish your work. Calligra includes efficient and capable office components: Words for text processing,  Sheets for computations, Stage for presentations, Plan for planning, Flow for flowcharts, Kexi for database creation, Krita for painting and raster drawing, and Karbon for vector graphics.";
+    description = "A suite of productivity applications";
+    longDescription = ''
+      Calligra Suite is a set of applications written to help
+      you to accomplish your work. Calligra includes efficient
+      and capable office components: Words for text processing,
+      Sheets for computations, Stage for presentations, Plan for
+      planning, Flow for flowcharts, Kexi for database creation,
+      Krita for painting and raster drawing, and Karbon for
+      vector graphics.
+    '';
     homepage = http://calligra.org;
     maintainers = with stdenv.lib.maintainers; [ urkud phreedom ];
     inherit (kdelibs.meta) platforms;
diff --git a/pkgs/applications/science/logic/yices/default.nix b/pkgs/applications/science/logic/yices/default.nix
index e181ecfd0e11..4e3b9b2a76b1 100644
--- a/pkgs/applications/science/logic/yices/default.nix
+++ b/pkgs/applications/science/logic/yices/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "Yices is a high-performance theorem prover and SMT solver";
+    description = "A high-performance theorem prover and SMT solver";
     homepage    = "http://yices.csl.sri.com";
     license     = stdenv.lib.licenses.unfreeRedistributable;
     platforms   = stdenv.lib.platforms.linux;
diff --git a/pkgs/applications/version-management/git-and-tools/stgit/default.nix b/pkgs/applications/version-management/git-and-tools/stgit/default.nix
index d4b74390c4cc..f6966f92eb2f 100644
--- a/pkgs/applications/version-management/git-and-tools/stgit/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/stgit/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation {
 
   meta = {
     homepage = "http://procode.org/stgit/";
-    description = "StGit is a patch manager implemented on top of Git";
+    description = "A patch manager implemented on top of Git";
     license = "GPL";
 
     maintainers = with stdenv.lib.maintainers; [ simons the-kenny ];
diff --git a/pkgs/applications/version-management/git-and-tools/tig/default.nix b/pkgs/applications/version-management/git-and-tools/tig/default.nix
index c8973e4a6600..4c8430ed5c5f 100644
--- a/pkgs/applications/version-management/git-and-tools/tig/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/tig/default.nix
@@ -3,11 +3,11 @@
 }:
 
 stdenv.mkDerivation rec {
-  name = "tig-2.1";
+  name = "tig-2.1.1";
 
   src = fetchurl {
     url = "http://jonas.nitro.dk/tig/releases/${name}.tar.gz";
-    sha256 = "1c1w6w39a1dwx4whrg0ga1mhrlz095hz875z7ajn6xgmhkv8fqih";
+    sha256 = "0bw5wivswwh7vx897q8xc2cqgkqhdzk8gh6fnav2kf34sngigiah";
   };
 
   buildInputs = [ ncurses asciidoc xmlto docbook_xsl readline git makeWrapper ];
@@ -31,7 +31,7 @@ stdenv.mkDerivation rec {
   meta = with stdenv.lib; {
     homepage = "http://jonas.nitro.dk/tig/";
     description = "Text-mode interface for git";
-    maintainers = with maintainers; [ garbas bjornfor iElectric ];
+    maintainers = with maintainers; [ garbas bjornfor iElectric qknight ];
     license = licenses.gpl2;
     platforms = platforms.unix;
   };
diff --git a/pkgs/applications/version-management/smartgithg/default.nix b/pkgs/applications/version-management/smartgithg/default.nix
index 5bb201b60d00..f2a2fadae8c7 100644
--- a/pkgs/applications/version-management/smartgithg/default.nix
+++ b/pkgs/applications/version-management/smartgithg/default.nix
@@ -7,7 +7,7 @@
 }:
 
 let
-  the_version = "6_5_3";
+  the_version = "6_5_7";
 
 in
 
@@ -15,9 +15,9 @@ stdenv.mkDerivation rec {
   name = "smartgithg-${the_version}";
 
   src = fetchurl {
-    url = "http://www.syntevo.com/download/smartgit/" +
+    url = "http://www.syntevo.com/downloads/smartgit/" +
           "smartgit-generic-${the_version}.tar.gz";
-    sha256 = "0hz1y29ipls58fizr27w6rbv7v7qbbc1h70xvjjd8c94k9ajmav9";
+    sha256 = "0db4dxp0dl173z9r8n25zdl1il240p751d2f77cw0nmyibik7q4l";
   };
 
   buildInputs = [
diff --git a/pkgs/applications/window-managers/i3/lock.nix b/pkgs/applications/window-managers/i3/lock.nix
index b9d5ac168b25..91fff3335ec2 100644
--- a/pkgs/applications/window-managers/i3/lock.nix
+++ b/pkgs/applications/window-managers/i3/lock.nix
@@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with stdenv.lib; {
-    description = "i3lock is a simple screen locker like slock";
+    description = "A simple screen locker like slock";
     homepage = http://i3wm.org/i3lock/;
     maintainers = with maintainers; [ garbas malyn ];
     license = licenses.bsd3;
diff --git a/pkgs/applications/window-managers/i3/status.nix b/pkgs/applications/window-managers/i3/status.nix
index 99562ebd6624..97b200e340e2 100644
--- a/pkgs/applications/window-managers/i3/status.nix
+++ b/pkgs/applications/window-managers/i3/status.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
   installFlags = "PREFIX=\${out}";
 
   meta = {
-    description = "i3 is a tiling window manager";
+    description = "A tiling window manager";
     homepage = http://i3wm.org;
     maintainers = [ stdenv.lib.maintainers.garbas ];
     license = stdenv.lib.licenses.bsd3;
diff --git a/pkgs/data/documentation/zeal/default.nix b/pkgs/data/documentation/zeal/default.nix
index c2bec7707c29..6b8399a8b3f4 100644
--- a/pkgs/data/documentation/zeal/default.nix
+++ b/pkgs/data/documentation/zeal/default.nix
@@ -36,7 +36,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = {
-    description = "Zeal is a simple offline API documentation browser";
+    description = "A simple offline API documentation browser";
     longDescription = ''
       Zeal is a simple offline API documentation browser inspired by Dash (OS X
       app), available for Linux and Windows.
diff --git a/pkgs/data/fonts/powerline-fonts/default.nix b/pkgs/data/fonts/powerline-fonts/default.nix
index 0d3d9c104d46..2f528a619e72 100644
--- a/pkgs/data/fonts/powerline-fonts/default.nix
+++ b/pkgs/data/fonts/powerline-fonts/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation {
 
   meta = with stdenv.lib; {
     homepage = https://github.com/powerline/fonts;
-    description = "Patched fonts for Powerline users.";
+    description = "Patched fonts for Powerline users";
     longDescription = ''
       Pre-patched and adjusted fonts for usage with the Powerline plugin.
     '';
diff --git a/pkgs/data/misc/geolite-legacy/builder.sh b/pkgs/data/misc/geolite-legacy/builder.sh
index 1886d144e480..bf8c9812e924 100644
--- a/pkgs/data/misc/geolite-legacy/builder.sh
+++ b/pkgs/data/misc/geolite-legacy/builder.sh
@@ -16,4 +16,5 @@ for var in "${!src@}"; do
 	cp "$src" "$dest"
 done
 
-gunzip -v *.gz
+gzip -dv *.gz
+xz -dv *.xz
diff --git a/pkgs/data/misc/geolite-legacy/default.nix b/pkgs/data/misc/geolite-legacy/default.nix
index cf8e7ab47aea..ac8582e2018c 100644
--- a/pkgs/data/misc/geolite-legacy/default.nix
+++ b/pkgs/data/misc/geolite-legacy/default.nix
@@ -3,7 +3,7 @@
 let
   fetchDB = name: sha256: fetchurl {
     inherit sha256;
-    url = "https://geolite.maxmind.com/download/geoip/database/${name}.dat.gz";
+    url = "https://geolite.maxmind.com/download/geoip/database/${name}";
   };
 
   # Annoyingly, these files are updated without a change in URL. This means that
@@ -13,20 +13,21 @@ in
 stdenv.mkDerivation {
   name = "geolite-legacy-${version}";
 
-  srcGeoIP = fetchDB "GeoLiteCountry/GeoIP"
+  srcGeoIP = fetchDB "GeoLiteCountry/GeoIP.dat.gz"
     "15c7j6yyjl0k42ij7smdz2j451y3hhfbmxwkx8kp5ja0afrlw41k";
-  srcGeoIPv6 = fetchDB "GeoIPv6"
+  srcGeoIPv6 = fetchDB "GeoIPv6.dat.gz"
     "0kz6yjprzqr2pi4rczbmw7489gdjzf957azahdqjai8fx0s5w93i";
-  srcGeoLiteCity = fetchDB "GeoLiteCity"
-    "0lc696axcdgz7xrh9p6ac5aa7nlxfgngwyabjwqiwazz3wcmw05a";
-  srcGeoLiteCityv6 = fetchDB "GeoLiteCityv6-beta/GeoLiteCityv6"
+  srcGeoLiteCity = fetchDB "GeoLiteCity.dat.xz"
+    "1z40kfjwn90fln7nfnk5pwcn1wl9imw5jz6bcdy8yr552m2n31y7";
+  srcGeoLiteCityv6 = fetchDB "GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz"
     "1k8sig8w43cdm19rpwndr1akj1d3mxl5sch60qbinjrb05l6xbgv";
-  srcGeoIPASNum = fetchDB "asnum/GeoIPASNum"
+  srcGeoIPASNum = fetchDB "asnum/GeoIPASNum.dat.gz"
     "0r4v2zs4alxb46kz679hw4w34s7n9pxw32wcfs5x4nhnq051y6ms";
-  srcGeoIPASNumv6 = fetchDB "asnum/GeoIPASNumv6"
+  srcGeoIPASNumv6 = fetchDB "asnum/GeoIPASNumv6.dat.gz"
     "04ciwh5gaxja4lzlsgbg1p7rkrhnn637m4nj9ld8sb36bl2ph6gc";
 
   meta = with stdenv.lib; {
+    inherit version;
     description = "GeoLite Legacy IP geolocation databases";
     homepage = https://geolite.maxmind.com/download/geoip;
     license = with licenses; cc-by-sa-30;
diff --git a/pkgs/desktops/e19/econnman.nix b/pkgs/desktops/e19/econnman.nix
index 8eaebaf0af38..08d7a8c3e735 100644
--- a/pkgs/desktops/e19/econnman.nix
+++ b/pkgs/desktops/e19/econnman.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "Econnman is a user interface for the connman network connection manager";
+    description = "A user interface for the connman network connection manager";
     homepage = http://enlightenment.org/;
     maintainers = with stdenv.lib.maintainers; [ matejc tstrobel ];
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/desktops/kde-4.14/kdeedu/artikulate.nix b/pkgs/desktops/kde-4.14/kdeedu/artikulate.nix
index b1828766f220..8674a774443f 100644
--- a/pkgs/desktops/kde-4.14/kdeedu/artikulate.nix
+++ b/pkgs/desktops/kde-4.14/kdeedu/artikulate.nix
@@ -3,6 +3,6 @@ kde {
   buildInputs = [ kdelibs qt_gstreamer1 ];
 
   meta = {
-    description = "Artikulate is a pronunciation learning program for KDE.";
+    description = "A pronunciation learning program for KDE";
   };
 }
diff --git a/pkgs/development/compilers/ats-extsolve/default.nix b/pkgs/development/compilers/ats-extsolve/default.nix
new file mode 100644
index 000000000000..9cd6d3adb324
--- /dev/null
+++ b/pkgs/development/compilers/ats-extsolve/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchurl, ats2, python, z3, pkgconfig, json_c }:
+
+stdenv.mkDerivation {
+  name = "ats-extsolve-0pre6a9b752";
+
+  buildInputs = [ python z3 ats2 pkgconfig json_c ];
+
+  src = fetchurl {
+    url = "https://github.com/githwxi/ATS-Postiats-contrib/archive/6a9b752efb8af1e4f77213f9e81fc2b7fa050877.tar.gz";
+    sha256 = "1zz4fqjm1rdvpm0m0sdck6vx55iiqlk2p8z078fca2q9xyxqjkqd";
+  };
+
+  postUnpack = ''
+    export PATSHOMERELOC="$PWD/$sourceRoot";
+    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I$PATSHOMERELOC"
+  '';
+
+  patches = [ ./misc-fixes.patch ];
+
+  preBuild = "cd projects/MEDIUM/ATS-extsolve";
+
+  buildFlags = [ "setup" "patsolve" ];
+
+  installPhase = ''
+    install -d -m755 $out/bin
+    install -m755 patsolve $out/bin
+  '';
+
+  meta = {
+    platforms = ats2.meta.platforms;
+    homepage = http://www.illtyped.com/projects/patsolve;
+    description = "External Constraint-Solving for ATS2";
+    maintainer = [ stdenv.lib.maintainers.shlevy ];
+  };
+}
diff --git a/pkgs/development/compilers/ats-extsolve/misc-fixes.patch b/pkgs/development/compilers/ats-extsolve/misc-fixes.patch
new file mode 100644
index 000000000000..8775bb83ba4c
--- /dev/null
+++ b/pkgs/development/compilers/ats-extsolve/misc-fixes.patch
@@ -0,0 +1,136 @@
+From bfc7216250e666a59e304f3b7518f8b0bccccbae Mon Sep 17 00:00:00 2001
+From: Shea Levy <shea@shealevy.com>
+Date: Thu, 30 Apr 2015 16:50:47 -0400
+Subject: [PATCH] Add missing case in fprint_s2rt
+
+---
+ projects/MEDIUM/ATS-extsolve/constraint/constraint_s2rt.dats | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/projects/MEDIUM/ATS-extsolve/constraint/constraint_s2rt.dats b/projects/MEDIUM/ATS-extsolve/constraint/constraint_s2rt.dats
+index a841b5f..5bc28d7 100644
+--- a/projects/MEDIUM/ATS-extsolve/constraint/constraint_s2rt.dats
++++ b/projects/MEDIUM/ATS-extsolve/constraint/constraint_s2rt.dats
+@@ -113,6 +113,7 @@ case+ s2t0 of
+ | S2RTfun (args, ret) => fprint (out, "S2RTfun()")
+ | S2RTtup () => fprint (out, "S2RTtup()")
+ | S2RTerr () => fprint (out, "S2RTerr()")
++| S2RTuninterp (str) => fprint! (out, "S2RTuninterp(", str, ")")
+ //
+ | S2RTignored () => fprint (out, "S2RTignored()")
+ //
+From 9d4c7669d0d3bc8725648684391a2962ed5a922e Mon Sep 17 00:00:00 2001
+From: Shea Levy <shea@shealevy.com>
+Date: Thu, 30 Apr 2015 17:13:35 -0400
+Subject: [PATCH] ATS-extsolve: Get rid of verbose . overload
+
+---
+ projects/MEDIUM/ATS-extsolve/solving/solver.dats | 2 +-
+ projects/MEDIUM/ATS-extsolve/solving/solver.sats | 6 ------
+ 2 files changed, 1 insertion(+), 7 deletions(-)
+
+diff --git a/projects/MEDIUM/ATS-extsolve/solving/solver.dats b/projects/MEDIUM/ATS-extsolve/solving/solver.dats
+index 8446cd5..f2f77b4 100644
+--- a/projects/MEDIUM/ATS-extsolve/solving/solver.dats
++++ b/projects/MEDIUM/ATS-extsolve/solving/solver.dats
+@@ -250,7 +250,7 @@ end // end of [c3nstr_solve_main]
+ implement c3nstr_solve (c3t, scripts, verbose) = let
+   var env : smtenv
+   val _ = smtenv_nil (env)
+-  val () = env.verbose (verbose)
++  val () = smtenv_set_verbose(env, verbose)
+   val () = 
+       case+ scripts of 
+           | list_nil () => ()
+diff --git a/projects/MEDIUM/ATS-extsolve/solving/solver.sats b/projects/MEDIUM/ATS-extsolve/solving/solver.sats
+index e43a028..dae452c 100644
+--- a/projects/MEDIUM/ATS-extsolve/solving/solver.sats
++++ b/projects/MEDIUM/ATS-extsolve/solving/solver.sats
+@@ -39,14 +39,8 @@ fun smtenv_load_scripts (env: &smtenv, scripts: List0(string)): void
+ 
+ fun smtenv_get_solver (env: &smtenv): solver
+ 
+-fun smtenv_get_verbose (env: &smtenv): bool
+-
+-overload .verbose with smtenv_get_verbose
+-
+ fun smtenv_set_verbose (env: &smtenv, verbose: bool): void
+ 
+-overload .verbose with smtenv_set_verbose
+-
+ fun formula_cst (s2c: s2cst): formula
+ 
+ (* ****** ****** *)
+From e3473a8d9dc7c56cda1111a439db7123254d00b4 Mon Sep 17 00:00:00 2001
+From: Shea Levy <shea@shealevy.com>
+Date: Thu, 30 Apr 2015 18:09:33 -0400
+Subject: [PATCH 1/2] solver_smt.dats: Don't use mapfree on linear list of
+ non-linear values
+
+---
+ projects/MEDIUM/ATS-extsolve/solving/solver_smt.dats | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/projects/MEDIUM/ATS-extsolve/solving/solver_smt.dats b/projects/MEDIUM/ATS-extsolve/solving/solver_smt.dats
+index 04055b9..b49602d 100644
+--- a/projects/MEDIUM/ATS-extsolve/solving/solver_smt.dats
++++ b/projects/MEDIUM/ATS-extsolve/solving/solver_smt.dats
+@@ -348,7 +348,7 @@ in
+         //
+         val () = assertloc (length(pairs) > 0)
+         //
+-        implement list_vt_mapfree$fopr<@(s2exp,s2exp)><formula>(x) = let
++        implement list_vt_map$fopr<@(s2exp,s2exp)><formula>(x) = let
+           val (pf, fpf | Env) = $UN.ptr1_vtake{smtenv}(addr@ env)
+           val met = formula_make (!Env, x.0)
+           val bound = formula_make (!Env, x.1)
+@@ -362,7 +362,8 @@ in
+         end
+         //
+         val assertions =
+-          list_vt_mapfree<(s2exp,s2exp)><formula> (pairs)
++          list_vt_map<(s2exp,s2exp)><formula> (pairs)
++        val () = list_vt_free(pairs)
+         //
+         implement 
+         list_vt_fold$init<formula><formula> (x) = x
+
+From 50de956561e6bf43190d7efb385bb6da658f1637 Mon Sep 17 00:00:00 2001
+From: Shea Levy <shea@shealevy.com>
+Date: Thu, 30 Apr 2015 18:18:56 -0400
+Subject: [PATCH 2/2] ats-extsolve/main.dats: Don't use mapfree on linear list
+ of non-linear values
+
+---
+ projects/MEDIUM/ATS-extsolve/main.dats | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/projects/MEDIUM/ATS-extsolve/main.dats b/projects/MEDIUM/ATS-extsolve/main.dats
+index ac30ca0..930697d 100644
+--- a/projects/MEDIUM/ATS-extsolve/main.dats
++++ b/projects/MEDIUM/ATS-extsolve/main.dats
+@@ -34,7 +34,7 @@ dynload "commarg.dats"
+ 
+ (* ****** ****** *)
+ 
+-overload mapfree with list_vt_mapfree
++overload map with list_vt_map
+ overload filter with list_vt_filter
+ 
+ (* ****** ****** *)
+@@ -56,12 +56,13 @@ implement main0 (argc, argv) = let
+       | Script (s) => true
+       | _ =>> false
+   implement
+-  list_vt_mapfree$fopr<commarg><string> (x) =
++  list_vt_map$fopr<commarg><string> (x) =
+     case- x of
+       | Script (s) => s
+   //
+   val scriptargs = filter (list_vt_copy (args))
+-  val scripts = mapfree<commarg><string> (scriptargs)
++  val scripts = map<commarg><string> (scriptargs)
++  val () = list_vt_free (scriptargs)
+   //
+   implement
+   list_find$pred<commarg> (x) =
diff --git a/pkgs/development/compilers/ats2/default.nix b/pkgs/development/compilers/ats2/default.nix
index 304d5c284aea..8345a353f3f9 100644
--- a/pkgs/development/compilers/ats2/default.nix
+++ b/pkgs/development/compilers/ats2/default.nix
@@ -11,6 +11,8 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ gmp ];
 
+  setupHook = ./setup-hook.sh;
+
   meta = {
     description = "Functional programming language with dependent types";
     homepage    = "http://www.ats-lang.org";
diff --git a/pkgs/development/compilers/ats2/setup-hook.sh b/pkgs/development/compilers/ats2/setup-hook.sh
new file mode 100644
index 000000000000..67647b1edf69
--- /dev/null
+++ b/pkgs/development/compilers/ats2/setup-hook.sh
@@ -0,0 +1 @@
+export PATSHOME=@out@/lib/ats2-postiats-@version@
diff --git a/pkgs/development/compilers/elm/elm-compiler.nix b/pkgs/development/compilers/elm/elm-compiler.nix
index 87a0b660d2ad..9cf8eda2d9a3 100644
--- a/pkgs/development/compilers/elm/elm-compiler.nix
+++ b/pkgs/development/compilers/elm/elm-compiler.nix
@@ -27,7 +27,7 @@ cabal.mkDerivation (self: {
   ];
   meta = {
     homepage = "http://elm-lang.org";
-    description = "Values to help with elm-package, elm-make, and elm-lang.org.";
+    description = "Values to help with elm-package, elm-make, and elm-lang.org";
     license = self.stdenv.lib.licenses.bsd3;
     platforms = self.ghc.meta.platforms;
   };
diff --git a/pkgs/development/compilers/gcc/5.1/builder.sh b/pkgs/development/compilers/gcc/5.1/builder.sh
new file mode 100644
index 000000000000..dd77c67a023e
--- /dev/null
+++ b/pkgs/development/compilers/gcc/5.1/builder.sh
@@ -0,0 +1,255 @@
+source $stdenv/setup
+
+
+export NIX_FIXINC_DUMMY=$NIX_BUILD_TOP/dummy
+mkdir $NIX_FIXINC_DUMMY
+
+
+if test "$staticCompiler" = "1"; then
+    EXTRA_LDFLAGS="-static"
+else
+    EXTRA_LDFLAGS=""
+fi
+
+# GCC interprets empty paths as ".", which we don't want.
+if test -z "$CPATH"; then unset CPATH; fi
+if test -z "$LIBRARY_PATH"; then unset LIBRARY_PATH; fi
+echo "\$CPATH is \`$CPATH'"
+echo "\$LIBRARY_PATH is \`$LIBRARY_PATH'"
+
+if test "$noSysDirs" = "1"; then
+
+    if test -e $NIX_CC/nix-support/orig-libc; then
+
+        # Figure out what extra flags to pass to the gcc compilers
+        # being generated to make sure that they use our glibc.
+        extraFlags="$(cat $NIX_CC/nix-support/libc-cflags)"
+        extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags) $(cat $NIX_CC/nix-support/libc-ldflags-before)"
+
+        # Use *real* header files, otherwise a limits.h is generated
+        # that does not include Glibc's limits.h (notably missing
+        # SSIZE_MAX, which breaks the build).
+        export NIX_FIXINC_DUMMY=$(cat $NIX_CC/nix-support/orig-libc)/include
+
+        # The path to the Glibc binaries such as `crti.o'.
+        glibc_libdir="$(cat $NIX_CC/nix-support/orig-libc)/lib"
+
+    else
+        # Hack: support impure environments.
+        extraFlags="-isystem /usr/include"
+        extraLDFlags="-L/usr/lib64 -L/usr/lib"
+        glibc_libdir="/usr/lib"
+        export NIX_FIXINC_DUMMY=/usr/include
+    fi
+
+    extraFlags="-I$NIX_FIXINC_DUMMY $extraFlags"
+    extraLDFlags="-L$glibc_libdir -rpath $glibc_libdir $extraLDFlags"
+
+    # BOOT_CFLAGS defaults to `-g -O2'; since we override it below,
+    # make sure to explictly add them so that files compiled with the
+    # bootstrap compiler are optimized and (optionally) contain
+    # debugging information (info "(gccinstall) Building").
+    if test -n "$dontStrip"; then
+        extraFlags="-O2 -g $extraFlags"
+    else
+        # Don't pass `-g' at all; this saves space while building.
+        extraFlags="-O2 $extraFlags"
+    fi
+
+    EXTRA_FLAGS="$extraFlags"
+    for i in $extraLDFlags; do
+        EXTRA_LDFLAGS="$EXTRA_LDFLAGS -Wl,$i"
+    done
+
+    if test -n "$targetConfig"; then
+        # Cross-compiling, we need gcc not to read ./specs in order to build
+        # the g++ compiler (after the specs for the cross-gcc are created).
+        # Having LIBRARY_PATH= makes gcc read the specs from ., and the build
+        # breaks. Having this variable comes from the default.nix code to bring
+        # gcj in.
+        unset LIBRARY_PATH
+        unset CPATH
+        if test -z "$crossStageStatic"; then
+            EXTRA_TARGET_CFLAGS="-B${libcCross}/lib -idirafter ${libcCross}/include"
+            EXTRA_TARGET_LDFLAGS="-Wl,-L${libcCross}/lib -Wl,-rpath,${libcCross}/lib -Wl,-rpath-link,${libcCross}/lib"
+        fi
+    else
+        if test -z "$NIX_CC_CROSS"; then
+            EXTRA_TARGET_CFLAGS="$EXTRA_FLAGS"
+            EXTRA_TARGET_CXXFLAGS="$EXTRA_FLAGS"
+            EXTRA_TARGET_LDFLAGS="$EXTRA_LDFLAGS"
+        else
+            # This the case of cross-building the gcc.
+            # We need special flags for the target, different than those of the build
+            # Assertion:
+            test -e $NIX_CC_CROSS/nix-support/orig-libc
+
+            # Figure out what extra flags to pass to the gcc compilers
+            # being generated to make sure that they use our glibc.
+            extraFlags="$(cat $NIX_CC_CROSS/nix-support/libc-cflags)"
+            extraLDFlags="$(cat $NIX_CC_CROSS/nix-support/libc-ldflags) $(cat $NIX_CC_CROSS/nix-support/libc-ldflags-before)"
+
+            # Use *real* header files, otherwise a limits.h is generated
+            # that does not include Glibc's limits.h (notably missing
+            # SSIZE_MAX, which breaks the build).
+            NIX_FIXINC_DUMMY_CROSS=$(cat $NIX_CC_CROSS/nix-support/orig-libc)/include
+
+            # The path to the Glibc binaries such as `crti.o'.
+            glibc_dir="$(cat $NIX_CC_CROSS/nix-support/orig-libc)"
+            glibc_libdir="$glibc_dir/lib"
+            configureFlags="$configureFlags --with-native-system-header-dir=$glibc_dir/include"
+
+            extraFlags="-I$NIX_FIXINC_DUMMY_CROSS $extraFlags"
+            extraLDFlags="-L$glibc_libdir -rpath $glibc_libdir $extraLDFlags"
+
+            EXTRA_TARGET_CFLAGS="$extraFlags"
+            for i in $extraLDFlags; do
+                EXTRA_TARGET_LDFLAGS="$EXTRA_TARGET_LDFLAGS -Wl,$i"
+            done
+        fi
+    fi
+
+    # CFLAGS_FOR_TARGET are needed for the libstdc++ configure script to find
+    # the startfiles.
+    # FLAGS_FOR_TARGET are needed for the target libraries to receive the -Bxxx
+    # for the startfiles.
+    makeFlagsArray+=( \
+        NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
+        SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \
+        CFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
+        CXXFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
+        CFLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \
+        CXXFLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \
+        FLAGS_FOR_TARGET="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \
+        LDFLAGS_FOR_BUILD="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
+        LDFLAGS_FOR_TARGET="$EXTRA_TARGET_LDFLAGS $EXTRA_TARGET_LDFLAGS" \
+        )
+
+    if test -z "$targetConfig"; then
+        makeFlagsArray+=( \
+            BOOT_CFLAGS="$EXTRA_FLAGS $EXTRA_LDFLAGS" \
+            BOOT_LDFLAGS="$EXTRA_TARGET_CFLAGS $EXTRA_TARGET_LDFLAGS" \
+            )
+    fi
+
+    if test -n "$targetConfig" -a "$crossStageStatic" == 1; then
+        # We don't want the gcc build to assume there will be a libc providing
+        # limits.h in this stagae
+        makeFlagsArray+=( \
+            LIMITS_H_TEST=false \
+            )
+    else
+        makeFlagsArray+=( \
+            LIMITS_H_TEST=true \
+            )
+    fi
+fi
+
+if test -n "$targetConfig"; then
+    # The host strip will destroy some important details of the objects
+    dontStrip=1
+fi
+
+providedPreConfigure="$preConfigure";
+preConfigure() {
+    if test -n "$newlibSrc"; then
+        tar xvf "$newlibSrc" -C ..
+        ln -s ../newlib-*/newlib newlib
+        # Patch to get armvt5el working:
+        sed -i -e 's/ arm)/ arm*)/' newlib/configure.host
+    fi
+
+    # Bug - they packaged zlib
+    if test -d "zlib"; then
+        # This breaks the build without-headers, which should build only
+        # the target libgcc as target libraries.
+        # See 'configure:5370'
+        rm -Rf zlib
+    fi
+
+    if test -f "$NIX_CC/nix-support/orig-libc"; then
+        # Patch the configure script so it finds glibc headers.  It's
+        # important for example in order not to get libssp built,
+        # because its functionality is in glibc already.
+        glibc_headers="$(cat $NIX_CC/nix-support/orig-libc)/include"
+        sed -i \
+            -e "s,glibc_header_dir=/usr/include,glibc_header_dir=$glibc_headers", \
+            gcc/configure
+    fi
+
+    if test -n "$crossMingw" -a -n "$crossStageStatic"; then
+        mkdir -p ../mingw
+        # --with-build-sysroot expects that:
+        cp -R $libcCross/include ../mingw
+        configureFlags="$configureFlags --with-build-sysroot=`pwd`/.."
+    fi
+
+    # Eval the preConfigure script from nix expression.
+    eval "$providedPreConfigure"
+
+    # Perform the build in a different directory.
+    mkdir ../build
+    cd ../build
+    configureScript=../$sourceRoot/configure
+}
+
+
+postConfigure() {
+    # Don't store the configure flags in the resulting executables.
+    sed -e '/TOPLEVEL_CONFIGURE_ARGUMENTS=/d' -i Makefile
+}
+
+
+preInstall() {
+    # Make ‘lib64’ a symlink to ‘lib’.
+    if [ -n "$is64bit" -a -z "$enableMultilib" ]; then
+        mkdir -p $out/lib
+        ln -s lib $out/lib64
+    fi
+}
+
+
+postInstall() {
+    # Remove precompiled headers for now.  They are very big and
+    # probably not very useful yet.
+    find $out/include -name "*.gch" -exec rm -rf {} \; -prune
+
+    # Remove `fixincl' to prevent a retained dependency on the
+    # previous gcc.
+    rm -rf $out/libexec/gcc/*/*/install-tools
+    rm -rf $out/lib/gcc/*/*/install-tools
+
+    # More dependencies with the previous gcc or some libs (gccbug stores the build command line)
+    rm -rf $out/bin/gccbug
+    # Take out the bootstrap-tools from the rpath, as it's not needed at all having $out
+    for i in $out/libexec/gcc/*/*/*; do
+        if PREV_RPATH=`patchelf --print-rpath $i`; then
+            patchelf --set-rpath `echo $PREV_RPATH | sed 's,:[^:]*bootstrap-tools/lib,,'` $i
+        fi
+    done
+
+    # Get rid of some "fixed" header files
+    rm -rf $out/lib/gcc/*/*/include/root
+
+    # Replace hard links for i686-pc-linux-gnu-gcc etc. with symlinks.
+    for i in $out/bin/*-gcc*; do
+        if cmp -s $out/bin/gcc $i; then
+            ln -sfn gcc $i
+        fi
+    done
+
+    for i in $out/bin/c++ $out/bin/*-c++* $out/bin/*-g++*; do
+        if cmp -s $out/bin/g++ $i; then
+            ln -sfn g++ $i
+        fi
+    done
+
+    # Disable RANDMMAP on grsec, which causes segfaults when using
+    # precompiled headers.
+    # See https://bugs.gentoo.org/show_bug.cgi?id=301299#c31
+    paxmark r $out/libexec/gcc/*/*/{cc1,cc1plus}
+
+    eval "$postInstallGhdl"
+}
+
+genericBuild
diff --git a/pkgs/development/compilers/gcc/5.1/default.nix b/pkgs/development/compilers/gcc/5.1/default.nix
new file mode 100644
index 000000000000..1c61d57729df
--- /dev/null
+++ b/pkgs/development/compilers/gcc/5.1/default.nix
@@ -0,0 +1,526 @@
+{ stdenv, fetchurl, noSysDirs
+, langC ? true, langCC ? true, langFortran ? false
+, langObjC ? stdenv.isDarwin
+, langObjCpp ? stdenv.isDarwin
+, langJava ? false
+, langAda ? false
+, langVhdl ? false
+, langGo ? false
+, profiledCompiler ? false
+, staticCompiler ? false
+, enableShared ? true
+, texinfo ? null
+, perl ? null # optional, for texi2pod (then pod2man); required for Java
+, gmp, mpfr, libmpc, gettext, which
+, libelf                      # optional, for link-time optimizations (LTO)
+, isl ? null # optional, for the Graphite optimization framework.
+, zlib ? null, boehmgc ? null
+, zip ? null, unzip ? null, pkgconfig ? null
+, gtk ? null, libart_lgpl ? null
+, libX11 ? null, libXt ? null, libSM ? null, libICE ? null, libXtst ? null
+, libXrender ? null, xproto ? null, renderproto ? null, xextproto ? null
+, libXrandr ? null, libXi ? null, inputproto ? null, randrproto ? null
+, x11Support ? langJava
+, gnatboot ? null
+, enableMultilib ? false
+, enablePlugin ? true             # whether to support user-supplied plug-ins
+, name ? "gcc"
+, cross ? null
+, binutilsCross ? null
+, libcCross ? null
+, crossStageStatic ? true
+, gnat ? null
+, libpthread ? null, libpthreadCross ? null  # required for GNU/Hurd
+, stripped ? true
+, gnused ? null
+}:
+
+assert langJava     -> zip != null && unzip != null
+                       && zlib != null && boehmgc != null
+                       && perl != null;  # for `--enable-java-home'
+assert langAda      -> gnatboot != null;
+assert langVhdl     -> gnat != null;
+
+# LTO needs libelf and zlib.
+assert libelf != null -> zlib != null;
+
+# Make sure we get GNU sed.
+assert stdenv.isDarwin -> gnused != null;
+
+# The go frontend is written in c++
+assert langGo -> langCC;
+
+with stdenv.lib;
+with builtins;
+
+let version = "5.1.0";
+
+    # Whether building a cross-compiler for GNU/Hurd.
+    crossGNU = cross != null && cross.config == "i586-pc-gnu";
+
+    enableParallelBuilding = true;
+
+    patches = [ ]
+      ++ optional (cross != null) ./libstdc++-target.patch
+      ++ optional noSysDirs ./no-sys-dirs.patch
+      # The GNAT Makefiles did not pay attention to CFLAGS_FOR_TARGET for its
+      # target libraries and tools.
+      ++ optional langAda ./gnat-cflags.patch
+      ++ optional langFortran ./gfortran-driving.patch;
+
+    javaEcj = fetchurl {
+      # The `$(top_srcdir)/ecj.jar' file is automatically picked up at
+      # `configure' time.
+
+      # XXX: Eventually we might want to take it from upstream.
+      url = "ftp://sourceware.org/pub/java/ecj-4.3.jar";
+      sha256 = "0jz7hvc0s6iydmhgh5h2m15yza7p2rlss2vkif30vm9y77m97qcx";
+    };
+
+    # Antlr (optional) allows the Java `gjdoc' tool to be built.  We want a
+    # binary distribution here to allow the whole chain to be bootstrapped.
+    javaAntlr = fetchurl {
+      url = http://www.antlr.org/download/antlr-4.4-complete.jar;
+      sha256 = "02lda2imivsvsis8rnzmbrbp8rh1kb8vmq4i67pqhkwz7lf8y6dz";
+    };
+
+    xlibs = [
+      libX11 libXt libSM libICE libXtst libXrender libXrandr libXi
+      xproto renderproto xextproto inputproto randrproto
+    ];
+
+    javaAwtGtk = langJava && x11Support;
+
+    /* Platform flags */
+    platformFlags = let
+        gccArch = stdenv.platform.gcc.arch or null;
+        gccCpu = stdenv.platform.gcc.cpu or null;
+        gccAbi = stdenv.platform.gcc.abi or null;
+        gccFpu = stdenv.platform.gcc.fpu or null;
+        gccFloat = stdenv.platform.gcc.float or null;
+        gccMode = stdenv.platform.gcc.mode or null;
+        withArch = if gccArch != null then " --with-arch=${gccArch}" else "";
+        withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else "";
+        withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else "";
+        withFpu = if gccFpu != null then " --with-fpu=${gccFpu}" else "";
+        withFloat = if gccFloat != null then " --with-float=${gccFloat}" else "";
+        withMode = if gccMode != null then " --with-mode=${gccMode}" else "";
+      in
+        withArch +
+        withCpu +
+        withAbi +
+        withFpu +
+        withFloat +
+        withMode;
+
+    /* Cross-gcc settings */
+    crossMingw = cross != null && cross.libc == "msvcrt";
+    crossDarwin = cross != null && cross.libc == "libSystem";
+    crossConfigureFlags = let
+        gccArch = stdenv.cross.gcc.arch or null;
+        gccCpu = stdenv.cross.gcc.cpu or null;
+        gccAbi = stdenv.cross.gcc.abi or null;
+        gccFpu = stdenv.cross.gcc.fpu or null;
+        gccFloat = stdenv.cross.gcc.float or null;
+        gccMode = stdenv.cross.gcc.mode or null;
+        withArch = if gccArch != null then " --with-arch=${gccArch}" else "";
+        withCpu = if gccCpu != null then " --with-cpu=${gccCpu}" else "";
+        withAbi = if gccAbi != null then " --with-abi=${gccAbi}" else "";
+        withFpu = if gccFpu != null then " --with-fpu=${gccFpu}" else "";
+        withFloat = if gccFloat != null then " --with-float=${gccFloat}" else "";
+        withMode = if gccMode != null then " --with-mode=${gccMode}" else "";
+      in
+        "--target=${cross.config}" +
+        withArch +
+        withCpu +
+        withAbi +
+        withFpu +
+        withFloat +
+        withMode +
+        (if crossMingw && crossStageStatic then
+          " --with-headers=${libcCross}/include" +
+          " --with-gcc" +
+          " --with-gnu-as" +
+          " --with-gnu-ld" +
+          " --with-gnu-ld" +
+          " --disable-shared" +
+          " --disable-nls" +
+          " --disable-debug" +
+          " --enable-sjlj-exceptions" +
+          " --enable-threads=win32" +
+          " --disable-win32-registry"
+          else if crossStageStatic then
+          " --disable-libssp --disable-nls" +
+          " --without-headers" +
+          " --disable-threads " +
+          " --disable-libmudflap " +
+          " --disable-libgomp " +
+          " --disable-libquadmath" +
+          " --disable-shared" +
+          " --disable-libatomic " +  # libatomic requires libc
+          " --disable-decimal-float" # libdecnumber requires libc
+          else
+          (if crossDarwin then " --with-sysroot=${libcCross}/share/sysroot"
+           else                " --with-headers=${libcCross}/include") +
+          # Ensure that -print-prog-name is able to find the correct programs.
+          (stdenv.lib.optionalString (crossMingw || crossDarwin) (
+            " --with-as=${binutilsCross}/bin/${cross.config}-as" +
+            " --with-ld=${binutilsCross}/bin/${cross.config}-ld"
+          )) +
+          " --enable-__cxa_atexit" +
+          " --enable-long-long" +
+          (if crossMingw then
+            " --enable-threads=win32" +
+            " --enable-sjlj-exceptions" +
+            " --enable-hash-synchronization" +
+            " --disable-libssp" +
+            " --disable-nls" +
+            " --with-dwarf2" +
+            # I think noone uses shared gcc libs in mingw, so we better do the same.
+            # In any case, mingw32 g++ linking is broken by default with shared libs,
+            # unless adding "-lsupc++" to any linking command. I don't know why.
+            " --disable-shared" +
+            # To keep ABI compatibility with upstream mingw-w64
+            " --enable-fully-dynamic-string"
+            else (if cross.libc == "uclibc" then
+              # In uclibc cases, libgomp needs an additional '-ldl'
+              # and as I don't know how to pass it, I disable libgomp.
+              " --disable-libgomp" else "") +
+            " --enable-threads=posix" +
+            " --enable-nls" +
+            " --disable-decimal-float") # No final libdecnumber (it may work only in 386)
+          );
+    stageNameAddon = if crossStageStatic then "-stage-static" else "-stage-final";
+    crossNameAddon = if cross != null then "-${cross.config}" + stageNameAddon else "";
+
+  bootstrap = cross == null && !stdenv.isArm && !stdenv.isMips;
+
+in
+
+# We need all these X libraries when building AWT with GTK+.
+assert x11Support -> (filter (x: x == null) ([ gtk libart_lgpl ] ++ xlibs)) == [];
+
+stdenv.mkDerivation ({
+  name = "${name}${if stripped then "" else "-debug"}-${version}" + crossNameAddon;
+
+  builder = ./builder.sh;
+
+  src = fetchurl {
+    url = "mirror://gnu/gcc/gcc-${version}/gcc-${version}.tar.bz2";
+    sha256 = "1bd5vj4px3s8nlakbgrh38ynxq4s654m6nxz7lrj03mvkkwgvnmp";
+  };
+
+  inherit patches;
+
+  postPatch =
+    if (stdenv.isGNU
+        || (libcCross != null                  # e.g., building `gcc.crossDrv'
+            && libcCross ? crossConfig
+            && libcCross.crossConfig == "i586-pc-gnu")
+        || (crossGNU && libcCross != null))
+    then
+      # On GNU/Hurd glibc refers to Hurd & Mach headers and libpthread is not
+      # in glibc, so add the right `-I' flags to the default spec string.
+      assert libcCross != null -> libpthreadCross != null;
+      let
+        libc = if libcCross != null then libcCross else stdenv.glibc;
+        gnu_h = "gcc/config/gnu.h";
+        extraCPPDeps =
+             libc.propagatedBuildInputs
+          ++ stdenv.lib.optional (libpthreadCross != null) libpthreadCross
+          ++ stdenv.lib.optional (libpthread != null) libpthread;
+        extraCPPSpec =
+          concatStrings (intersperse " "
+                          (map (x: "-I${x}/include") extraCPPDeps));
+        extraLibSpec =
+          if libpthreadCross != null
+          then "-L${libpthreadCross}/lib ${libpthreadCross.TARGET_LDFLAGS}"
+          else "-L${libpthread}/lib";
+      in
+        '' echo "augmenting \`CPP_SPEC' in \`${gnu_h}' with \`${extraCPPSpec}'..."
+           sed -i "${gnu_h}" \
+               -es'|CPP_SPEC *"\(.*\)$|CPP_SPEC "${extraCPPSpec} \1|g'
+
+           echo "augmenting \`LIB_SPEC' in \`${gnu_h}' with \`${extraLibSpec}'..."
+           sed -i "${gnu_h}" \
+               -es'|LIB_SPEC *"\(.*\)$|LIB_SPEC "${extraLibSpec} \1|g'
+
+           echo "setting \`NATIVE_SYSTEM_HEADER_DIR' and \`STANDARD_INCLUDE_DIR' to \`${libc}/include'..."
+           sed -i "${gnu_h}" \
+               -es'|#define STANDARD_INCLUDE_DIR.*$|#define STANDARD_INCLUDE_DIR "${libc}/include"|g'
+        ''
+    else if cross != null || stdenv.cc.libc != null then
+      # On NixOS, use the right path to the dynamic linker instead of
+      # `/lib/ld*.so'.
+      let
+        libc = if libcCross != null then libcCross else stdenv.cc.libc;
+      in
+        '' echo "fixing the \`GLIBC_DYNAMIC_LINKER' and \`UCLIBC_DYNAMIC_LINKER' macros..."
+           for header in "gcc/config/"*-gnu.h "gcc/config/"*"/"*.h
+           do
+             grep -q LIBC_DYNAMIC_LINKER "$header" || continue
+             echo "  fixing \`$header'..."
+             sed -i "$header" \
+                 -e 's|define[[:blank:]]*\([UCG]\+\)LIBC_DYNAMIC_LINKER\([0-9]*\)[[:blank:]]"\([^\"]\+\)"$|define \1LIBC_DYNAMIC_LINKER\2 "${libc}\3"|g'
+           done
+        ''
+    else null;
+
+  inherit noSysDirs staticCompiler langJava crossStageStatic
+    libcCross crossMingw;
+
+  nativeBuildInputs = [ texinfo which gettext ]
+    ++ (optional (perl != null) perl)
+    ++ (optional javaAwtGtk pkgconfig);
+
+  buildInputs = [ gmp mpfr libmpc libelf ]
+    ++ (optional (isl != null) isl)
+    ++ (optional (zlib != null) zlib)
+    ++ (optionals langJava [ boehmgc zip unzip ])
+    ++ (optionals javaAwtGtk ([ gtk libart_lgpl ] ++ xlibs))
+    ++ (optionals (cross != null) [binutilsCross])
+    ++ (optionals langAda [gnatboot])
+    ++ (optionals langVhdl [gnat])
+
+    # The builder relies on GNU sed (for instance, Darwin's `sed' fails with
+    # "-i may not be used with stdin"), and `stdenvNative' doesn't provide it.
+    ++ (optional stdenv.isDarwin gnused)
+    ;
+
+  NIX_LDFLAGS = stdenv.lib.optionalString  stdenv.isSunOS "-lm -ldl";
+
+  preConfigure = stdenv.lib.optionalString (stdenv.isSunOS && stdenv.is64bit) ''
+    export NIX_LDFLAGS=`echo $NIX_LDFLAGS | sed -e s~$prefix/lib~$prefix/lib/amd64~g`
+    export LDFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $LDFLAGS_FOR_TARGET"
+    export CXXFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CXXFLAGS_FOR_TARGET"
+    export CFLAGS_FOR_TARGET="-Wl,-rpath,$prefix/lib/amd64 $CFLAGS_FOR_TARGET"
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    if SDKROOT=$(/usr/bin/xcrun --show-sdk-path); then
+      configureFlagsArray+=(--with-native-system-header-dir=$SDKROOT/usr/include)
+      makeFlagsArray+=( \
+       CFLAGS_FOR_BUILD=-F$SDKROOT/System/Library/Frameworks \
+       CFLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
+       FLAGS_FOR_TARGET=-F$SDKROOT/System/Library/Frameworks \
+      )
+    fi
+  '';
+
+  dontDisableStatic = true;
+
+  configureFlags = "
+    ${if stdenv.isSunOS then
+      " --enable-long-long --enable-libssp --enable-threads=posix --disable-nls --enable-__cxa_atexit " +
+      # On Illumos/Solaris GNU as is preferred
+      " --with-gnu-as --without-gnu-ld "
+      else ""}
+    --enable-lto
+    ${if enableMultilib then "--disable-libquadmath" else "--disable-multilib"}
+    ${if enableShared then "" else "--disable-shared"}
+    ${if enablePlugin then "--enable-plugin" else "--disable-plugin"}
+    ${optionalString (isl != null) "--with-isl=${isl}"}
+    ${if langJava then
+      "--with-ecj-jar=${javaEcj} " +
+
+      # Follow Sun's layout for the convenience of IcedTea/OpenJDK.  See
+      # <http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2010-April/008888.html>.
+      "--enable-java-home --with-java-home=\${prefix}/lib/jvm/jre "
+      else ""}
+    ${if javaAwtGtk then "--enable-java-awt=gtk" else ""}
+    ${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr}" else ""}
+    --with-gmp=${gmp}
+    --with-mpfr=${mpfr}
+    --with-mpc=${libmpc}
+    ${if libelf != null then "--with-libelf=${libelf}" else ""}
+    --disable-libstdcxx-pch
+    --without-included-gettext
+    --with-system-zlib
+    --enable-static
+    --enable-languages=${
+      concatStrings (intersperse ","
+        (  optional langC        "c"
+        ++ optional langCC       "c++"
+        ++ optional langFortran  "fortran"
+        ++ optional langJava     "java"
+        ++ optional langAda      "ada"
+        ++ optional langVhdl     "vhdl"
+        ++ optional langGo       "go"
+        ++ optional langObjC     "objc"
+        ++ optional langObjCpp   "obj-c++"
+        ++ optionals crossDarwin [ "objc" "obj-c++" ]
+        )
+      )
+    }
+    ${if (stdenv ? glibc && cross == null)
+      then " --with-native-system-header-dir=${stdenv.glibc}/include"
+      else ""}
+    ${if langAda then " --enable-libada" else ""}
+    ${if cross == null && stdenv.isi686 then "--with-arch=i686" else ""}
+    ${if cross != null then crossConfigureFlags else ""}
+    ${if !bootstrap then "--disable-bootstrap" else ""}
+    ${if cross == null then platformFlags else ""}
+  ";
+
+  targetConfig = if cross != null then cross.config else null;
+
+  buildFlags = if bootstrap then
+    (if profiledCompiler then "profiledbootstrap" else "bootstrap")
+    else "";
+
+  installTargets =
+    if stripped
+    then "install-strip"
+    else "install";
+
+  crossAttrs = let
+    xgccArch = stdenv.cross.gcc.arch or null;
+    xgccCpu = stdenv.cross.gcc.cpu or null;
+    xgccAbi = stdenv.cross.gcc.abi or null;
+    xgccFpu = stdenv.cross.gcc.fpu or null;
+    xgccFloat = stdenv.cross.gcc.float or null;
+    xwithArch = if xgccArch != null then " --with-arch=${xgccArch}" else "";
+    xwithCpu = if xgccCpu != null then " --with-cpu=${xgccCpu}" else "";
+    xwithAbi = if xgccAbi != null then " --with-abi=${xgccAbi}" else "";
+    xwithFpu = if xgccFpu != null then " --with-fpu=${xgccFpu}" else "";
+    xwithFloat = if xgccFloat != null then " --with-float=${xgccFloat}" else "";
+  in {
+    AR = "${stdenv.cross.config}-ar";
+    LD = "${stdenv.cross.config}-ld";
+    CC = "${stdenv.cross.config}-gcc";
+    CXX = "${stdenv.cross.config}-gcc";
+    AR_FOR_TARGET = "${stdenv.cross.config}-ar";
+    LD_FOR_TARGET = "${stdenv.cross.config}-ld";
+    CC_FOR_TARGET = "${stdenv.cross.config}-gcc";
+    NM_FOR_TARGET = "${stdenv.cross.config}-nm";
+    CXX_FOR_TARGET = "${stdenv.cross.config}-g++";
+    # If we are making a cross compiler, cross != null
+    NIX_CC_CROSS = if cross == null then "${stdenv.ccCross}" else "";
+    dontStrip = true;
+    configureFlags = ''
+      ${if enableMultilib then "" else "--disable-multilib"}
+      ${if enableShared then "" else "--disable-shared"}
+      ${if langJava then "--with-ecj-jar=${javaEcj.crossDrv}" else ""}
+      ${if javaAwtGtk then "--enable-java-awt=gtk" else ""}
+      ${if langJava && javaAntlr != null then "--with-antlr-jar=${javaAntlr.crossDrv}" else ""}
+      --with-gmp=${gmp.crossDrv}
+      --with-mpfr=${mpfr.crossDrv}
+      --disable-libstdcxx-pch
+      --without-included-gettext
+      --with-system-zlib
+      --enable-languages=${
+        concatStrings (intersperse ","
+          (  optional langC        "c"
+          ++ optional langCC       "c++"
+          ++ optional langFortran  "fortran"
+          ++ optional langJava     "java"
+          ++ optional langAda      "ada"
+          ++ optional langVhdl     "vhdl"
+          ++ optional langGo       "go"
+          )
+        )
+      }
+      ${if langAda then " --enable-libada" else ""}
+      --target=${stdenv.cross.config}
+      ${xwithArch}
+      ${xwithCpu}
+      ${xwithAbi}
+      ${xwithFpu}
+      ${xwithFloat}
+    '';
+    buildFlags = "";
+  };
+
+
+  # Needed for the cross compilation to work
+  AR = "ar";
+  LD = "ld";
+  # http://gcc.gnu.org/install/specific.html#x86-64-x-solaris210
+  CC = if stdenv.system == "x86_64-solaris" then "gcc -m64" else "gcc";
+
+  # Setting $CPATH and $LIBRARY_PATH to make sure both `gcc' and `xgcc' find
+  # the library headers and binaries, regarless of the language being
+  # compiled.
+
+  # Note: When building the Java AWT GTK+ peer, the build system doesn't
+  # honor `--with-gmp' et al., e.g., when building
+  # `libjava/classpath/native/jni/java-math/gnu_java_math_GMP.c', so we just
+  # add them to $CPATH and $LIBRARY_PATH in this case.
+  #
+  # Likewise, the LTO code doesn't find zlib.
+
+  CPATH = concatStrings
+            (intersperse ":" (map (x: x + "/include")
+                                  (optionals (zlib != null) [ zlib ]
+                                   ++ optionals langJava [ boehmgc ]
+                                   ++ optionals javaAwtGtk xlibs
+                                   ++ optionals javaAwtGtk [ gmp mpfr ]
+                                   ++ optional (libpthread != null) libpthread
+                                   ++ optional (libpthreadCross != null) libpthreadCross
+
+                                   # On GNU/Hurd glibc refers to Mach & Hurd
+                                   # headers.
+                                   ++ optionals (libcCross != null && libcCross ? "propagatedBuildInputs" )
+                                        libcCross.propagatedBuildInputs)));
+
+  LIBRARY_PATH = concatStrings
+                   (intersperse ":" (map (x: x + "/lib")
+                                         (optionals (zlib != null) [ zlib ]
+                                          ++ optionals langJava [ boehmgc ]
+                                          ++ optionals javaAwtGtk xlibs
+                                          ++ optionals javaAwtGtk [ gmp mpfr ]
+                                          ++ optional (libpthread != null) libpthread)));
+
+  EXTRA_TARGET_CFLAGS =
+    if cross != null && libcCross != null
+    then "-idirafter ${libcCross}/include"
+    else null;
+
+  EXTRA_TARGET_LDFLAGS =
+    if cross != null && libcCross != null
+    then "-B${libcCross}/lib -Wl,-L${libcCross}/lib" +
+         (optionalString (libpthreadCross != null)
+           " -L${libpthreadCross}/lib -Wl,${libpthreadCross.TARGET_LDFLAGS}")
+    else null;
+
+  passthru =
+    { inherit langC langCC langObjC langObjCpp langAda langFortran langVhdl langGo version; isGNU = true; };
+
+  inherit enableParallelBuilding enableMultilib;
+
+  inherit (stdenv) is64bit;
+
+  meta = {
+    homepage = http://gcc.gnu.org/;
+    license = stdenv.lib.licenses.gpl3Plus;  # runtime support libraries are typically LGPLv3+
+    description = "GNU Compiler Collection, version ${version}"
+      + (if stripped then "" else " (with debugging info)");
+
+    longDescription = ''
+      The GNU Compiler Collection includes compiler front ends for C, C++,
+      Objective-C, Fortran, OpenMP for C/C++/Fortran, Java, and Ada, as well
+      as libraries for these languages (libstdc++, libgcj, libgomp,...).
+
+      GCC development is a part of the GNU Project, aiming to improve the
+      compiler used in the GNU system including the GNU/Linux variant.
+    '';
+
+    maintainers = with stdenv.lib.maintainers; [ viric shlevy simons ];
+
+    # gnatboot is not available out of linux platforms, so we disable the darwin build
+    # for the gnat (ada compiler).
+    platforms =
+      stdenv.lib.platforms.linux ++
+      stdenv.lib.platforms.freebsd ++
+      optionals (langAda == false) stdenv.lib.platforms.darwin;
+  };
+}
+
+// optionalAttrs (cross != null && cross.libc == "msvcrt" && crossStageStatic) {
+  makeFlags = [ "all-gcc" "all-target-libgcc" ];
+  installTargets = "install-gcc install-target-libgcc";
+}
+
+# Strip kills static libs of other archs (hence cross != null)
+// optionalAttrs (!stripped || cross != null) { dontStrip = true; NIX_STRIP_DEBUG = 0; }
+
+// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
+)
diff --git a/pkgs/development/compilers/gcc/5.1/gfortran-driving.patch b/pkgs/development/compilers/gcc/5.1/gfortran-driving.patch
new file mode 100644
index 000000000000..70708886b405
--- /dev/null
+++ b/pkgs/development/compilers/gcc/5.1/gfortran-driving.patch
@@ -0,0 +1,20 @@
+This patch fixes interaction with Libtool.
+See <http://thread.gmane.org/gmane.comp.gcc.patches/258777>, for details.
+
+--- a/gcc/fortran/gfortranspec.c
++++ b/gcc/fortran/gfortranspec.c
+@@ -461,8 +461,15 @@ For more information about these matters, see the file named COPYING\n\n"));
+     {
+       fprintf (stderr, _("Driving:"));
+       for (i = 0; i < g77_newargc; i++)
++	{
++	  if (g77_new_decoded_options[i].opt_index == OPT_l)
++	    /* Make sure no white space is inserted after `-l'.  */
++	    fprintf (stderr, " -l%s",
++		     g77_new_decoded_options[i].canonical_option[1]);
++	  else
+ 	fprintf (stderr, " %s",
+ 		 g77_new_decoded_options[i].orig_option_with_args_text);
++	}
+       fprintf (stderr, "\n");
+     }
diff --git a/pkgs/development/compilers/gcc/5.1/gnat-cflags.patch b/pkgs/development/compilers/gcc/5.1/gnat-cflags.patch
new file mode 100644
index 000000000000..bf2acf065e9b
--- /dev/null
+++ b/pkgs/development/compilers/gcc/5.1/gnat-cflags.patch
@@ -0,0 +1,33 @@
+diff --git a/libada/Makefile.in b/libada/Makefile.in
+index f5057a0..337e0c6 100644
+--- a/libada/Makefile.in
++++ b/libada/Makefile.in
+@@ -55,7 +55,7 @@ GCC_WARN_CFLAGS = $(LOOSE_WARN)
+ WARN_CFLAGS = @warn_cflags@
+ 
+ TARGET_LIBGCC2_CFLAGS=
+-GNATLIBCFLAGS= -g -O2
++GNATLIBCFLAGS= -g -O2 $(CFLAGS)
+ GNATLIBCFLAGS_FOR_C = $(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) -fexceptions \
+ 	-DIN_RTS @have_getipinfo@
+ 
+--- a/gcc/ada/gcc-interface/Makefile.in
++++ b/gcc/ada/gcc-interface/Makefile.in
+@@ -105,7 +105,7 @@ ADAFLAGS = -W -Wall -gnatpg -gnata
+ SOME_ADAFLAGS =-gnata
+ FORCE_DEBUG_ADAFLAGS = -g
+ GNATLIBFLAGS = -gnatpg -nostdinc
+-GNATLIBCFLAGS = -g -O2
++GNATLIBCFLAGS = -g -O2 $(CFLAGS_FOR_TARGET)
+ # Pretend that _Unwind_GetIPInfo is available for the target by default.  This
+ # should be autodetected during the configuration of libada and passed down to
+ # here, but we need something for --disable-libada and hope for the best.
+@@ -193,7 +193,7 @@ RTSDIR = rts$(subst /,_,$(MULTISUBDIR))
+ # Link flags used to build gnat tools.  By default we prefer to statically
+ # link with libgcc to avoid a dependency on shared libgcc (which is tricky
+ # to deal with as it may conflict with the libgcc provided by the system).
+-GCC_LINK_FLAGS=-static-libgcc
++GCC_LINK_FLAGS=-static-libgcc $(CFLAGS_FOR_TARGET)
+ 
+ # End of variables for you to override.
+ 
diff --git a/pkgs/development/compilers/gcc/5.1/java-jvgenmain-link.patch b/pkgs/development/compilers/gcc/5.1/java-jvgenmain-link.patch
new file mode 100644
index 000000000000..2612e8bfbbbc
--- /dev/null
+++ b/pkgs/development/compilers/gcc/5.1/java-jvgenmain-link.patch
@@ -0,0 +1,17 @@
+The `jvgenmain' executable must be linked against `vec.o', among others,
+since it uses its vector API.
+
+--- gcc-4.3.3/gcc/java/Make-lang.in	2008-12-05 00:00:19.000000000 +0100
++++ gcc-4.3.3/gcc/java/Make-lang.in	2009-07-03 16:11:41.000000000 +0200
+@@ -109,9 +109,9 @@ jcf-dump$(exeext): $(JCFDUMP_OBJS) $(LIB
+ 	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(JCFDUMP_OBJS) \
+ 		$(CPPLIBS) $(ZLIB) $(LDEXP_LIB) $(LIBS)
+ 
+-jvgenmain$(exeext): $(JVGENMAIN_OBJS) $(LIBDEPS)
++jvgenmain$(exeext): $(JVGENMAIN_OBJS) $(LIBDEPS) $(BUILD_RTL)
+ 	rm -f $@
+-	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(JVGENMAIN_OBJS) $(LIBS)
++	$(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(JVGENMAIN_OBJS) $(BUILD_RTL) $(LIBS)
+ 
+ #
+ # Build hooks:
diff --git a/pkgs/development/compilers/gcc/5.1/libstdc++-target.patch b/pkgs/development/compilers/gcc/5.1/libstdc++-target.patch
new file mode 100644
index 000000000000..fb622b395806
--- /dev/null
+++ b/pkgs/development/compilers/gcc/5.1/libstdc++-target.patch
@@ -0,0 +1,32 @@
+Patch to make the target libraries 'configure' scripts find the proper CPP.
+I noticed that building the mingw32 cross compiler.
+Looking at the build script for mingw in archlinux, I think that only nixos
+needs this patch. I don't know why.
+diff --git a/Makefile.in b/Makefile.in
+index 93f66b6..d691917 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -266,6 +266,7 @@ BASE_TARGET_EXPORTS = \
+ 	AR="$(AR_FOR_TARGET)"; export AR; \
+ 	AS="$(COMPILER_AS_FOR_TARGET)"; export AS; \
+ 	CC="$(CC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CC; \
++	CPP="$(CC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS -E"; export CC; \
+ 	CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \
+ 	CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
+ 	CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \
+@@ -291,11 +292,13 @@ BASE_TARGET_EXPORTS = \
+ RAW_CXX_TARGET_EXPORTS = \
+ 	$(BASE_TARGET_EXPORTS) \
+ 	CXX_FOR_TARGET="$(RAW_CXX_FOR_TARGET)"; export CXX_FOR_TARGET; \
+-	CXX="$(RAW_CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX;
++	CXX="$(RAW_CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX; \
++	CXXCPP="$(RAW_CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS -E"; export CXX;
+ 
+ NORMAL_TARGET_EXPORTS = \
+ 	$(BASE_TARGET_EXPORTS) \
+-	CXX="$(CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX;
++	CXX="$(CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export CXX; \
++	CXXCPP="$(CXX_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS -E"; export CXX;
+ 
+ # Where to find GMP
+ HOST_GMPLIBS = @gmplibs@
diff --git a/pkgs/development/compilers/gcc/5.1/no-sys-dirs.patch b/pkgs/development/compilers/gcc/5.1/no-sys-dirs.patch
new file mode 100644
index 000000000000..36df51904acf
--- /dev/null
+++ b/pkgs/development/compilers/gcc/5.1/no-sys-dirs.patch
@@ -0,0 +1,28 @@
+diff -ru -x '*~' gcc-4.8.3-orig/gcc/cppdefault.c gcc-4.8.3/gcc/cppdefault.c
+--- gcc-4.8.3-orig/gcc/cppdefault.c	2013-01-10 21:38:27.000000000 +0100
++++ gcc-4.8.3/gcc/cppdefault.c	2014-08-18 16:20:32.893944536 +0200
+@@ -35,6 +35,8 @@
+ # undef CROSS_INCLUDE_DIR
+ #endif
+ 
++#undef LOCAL_INCLUDE_DIR
++
+ const struct default_include cpp_include_defaults[]
+ #ifdef INCLUDE_DEFAULTS
+ = INCLUDE_DEFAULTS;
+diff -ru -x '*~' gcc-4.8.3-orig/gcc/gcc.c gcc-4.8.3/gcc/gcc.c
+--- gcc-4.8.3-orig/gcc/gcc.c	2014-03-23 12:30:57.000000000 +0100
++++ gcc-4.8.3/gcc/gcc.c	2014-08-18 13:19:32.689201690 +0200
+@@ -1162,10 +1162,10 @@
+ /* Default prefixes to attach to command names.  */
+ 
+ #ifndef STANDARD_STARTFILE_PREFIX_1
+-#define STANDARD_STARTFILE_PREFIX_1 "/lib/"
++#define STANDARD_STARTFILE_PREFIX_1 ""
+ #endif
+ #ifndef STANDARD_STARTFILE_PREFIX_2
+-#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/"
++#define STANDARD_STARTFILE_PREFIX_2 ""
+ #endif
+ 
+ #ifdef CROSS_DIRECTORY_STRUCTURE  /* Don't use these prefixes for a cross compiler.  */
diff --git a/pkgs/development/compilers/ghcjs/default.nix b/pkgs/development/compilers/ghcjs/default.nix
index 8206bb19e4fa..54604f548fa7 100644
--- a/pkgs/development/compilers/ghcjs/default.nix
+++ b/pkgs/development/compilers/ghcjs/default.nix
@@ -122,7 +122,7 @@ in mkDerivation (rec {
   };
 
   homepage = "https://github.com/ghcjs/ghcjs";
-  description = "GHCJS is a Haskell to JavaScript compiler that uses the GHC API";
+  description = "A Haskell to JavaScript compiler that uses the GHC API";
   license = stdenv.lib.licenses.bsd3;
   platforms = ghc.meta.platforms;
   maintainers = with stdenv.lib.maintainers; [ jwiegley cstrahan ];
diff --git a/pkgs/development/compilers/gwt/2.4.0.nix b/pkgs/development/compilers/gwt/2.4.0.nix
index f0dc9378c4f0..588861ee42de 100644
--- a/pkgs/development/compilers/gwt/2.4.0.nix
+++ b/pkgs/development/compilers/gwt/2.4.0.nix
@@ -18,6 +18,6 @@ stdenv.mkDerivation {
 
   meta = {
     homepage = http://code.google.com/webtoolkit/;
-    description = "Google Web Toolkit (GWT) is a development toolkit for building and optimizing complex browser-based applications";
+    description = "A development toolkit for building and optimizing complex browser-based applications";
   };
 }
diff --git a/pkgs/development/compilers/scala/2.10.nix b/pkgs/development/compilers/scala/2.10.nix
index b518a9a0e0ec..ab13e0ba7dc3 100644
--- a/pkgs/development/compilers/scala/2.10.nix
+++ b/pkgs/development/compilers/scala/2.10.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "Scala is a general purpose programming language";
+    description = "A general purpose programming language";
     longDescription = ''
       Scala is a general purpose programming language designed to express
       common programming patterns in a concise, elegant, and type-safe way.
diff --git a/pkgs/development/compilers/scala/2.9.nix b/pkgs/development/compilers/scala/2.9.nix
index de5db1eff996..c98e2e75c171 100644
--- a/pkgs/development/compilers/scala/2.9.nix
+++ b/pkgs/development/compilers/scala/2.9.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "Scala is a general purpose programming language";
+    description = "A general purpose programming language";
     longDescription = ''
       Scala is a general purpose programming language designed to express
       common programming patterns in a concise, elegant, and type-safe way.
diff --git a/pkgs/development/compilers/yap/default.nix b/pkgs/development/compilers/yap/default.nix
index f9b587c05049..2482f2ac1316 100644
--- a/pkgs/development/compilers/yap/default.nix
+++ b/pkgs/development/compilers/yap/default.nix
@@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = "http://www.dcc.fc.up.pt/~vsc/Yap/";
-    description = "Yap Prolog System is a ISO-compatible high-performance Prolog compiler";
+    description = "A ISO-compatible high-performance Prolog compiler";
     license = stdenv.lib.licenses.artistic2;
 
     maintainers = [ stdenv.lib.maintainers.simons ];
diff --git a/pkgs/development/coq-modules/bedrock/default.nix b/pkgs/development/coq-modules/bedrock/default.nix
index 478f74058bdf..92a3d16963b6 100644
--- a/pkgs/development/coq-modules/bedrock/default.nix
+++ b/pkgs/development/coq-modules/bedrock/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     homepage = http://plv.csail.mit.edu/bedrock/;
-    description = "Bedrock is a library that turns Coq into a tool much like classical verification systems";
+    description = "A library that turns Coq into a tool much like classical verification systems";
     maintainers = with maintainers; [ jwiegley ];
     platforms = coq.meta.platforms;
   };
diff --git a/pkgs/development/coq-modules/fiat/default.nix b/pkgs/development/coq-modules/fiat/default.nix
index 9f020de15345..92b69319e0bc 100644
--- a/pkgs/development/coq-modules/fiat/default.nix
+++ b/pkgs/development/coq-modules/fiat/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     homepage = http://plv.csail.mit.edu/fiat/;
-    description = "Fiat is a library for the Coq proof assistant for synthesizing efficient correct-by-construction programs from declarative specifications";
+    description = "A library for the Coq proof assistant for synthesizing efficient correct-by-construction programs from declarative specifications";
     maintainers = with maintainers; [ jwiegley ];
     platforms = coq.meta.platforms;
   };
diff --git a/pkgs/development/coq-modules/flocq/default.nix b/pkgs/development/coq-modules/flocq/default.nix
index 89555c2e13da..05267d6bf6c2 100644
--- a/pkgs/development/coq-modules/flocq/default.nix
+++ b/pkgs/development/coq-modules/flocq/default.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     homepage = http://flocq.gforge.inria.fr/;
-    description = "Flocq (Floats for Coq) is a floating-point formalization for the Coq system";
+    description = "A floating-point formalization for the Coq system";
     license = licenses.lgpl3;
     maintainers = with maintainers; [ jwiegley ];
     platforms = coq.meta.platforms;
diff --git a/pkgs/development/coq-modules/paco/default.nix b/pkgs/development/coq-modules/paco/default.nix
index c885d14aa3f2..98d447d21d38 100644
--- a/pkgs/development/coq-modules/paco/default.nix
+++ b/pkgs/development/coq-modules/paco/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     homepage = http://plv.mpi-sws.org/paco/;
-    description = "Paco is a Coq library implementing parameterized coinduction";
+    description = "A Coq library implementing parameterized coinduction";
     maintainers = with maintainers; [ jwiegley ];
     platforms = coq.meta.platforms;
   };
diff --git a/pkgs/development/coq-modules/tlc/default.nix b/pkgs/development/coq-modules/tlc/default.nix
index e47ffbdd4562..b98ff613f9d9 100644
--- a/pkgs/development/coq-modules/tlc/default.nix
+++ b/pkgs/development/coq-modules/tlc/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
 
   meta = with stdenv.lib; {
     homepage = http://www.chargueraud.org/softs/tlc/;
-    description = "TLC is a general purpose Coq library that provides an alternative to Coq's standard library";
+    description = "A general purpose Coq library that provides an alternative to Coq's standard library";
     maintainers = with maintainers; [ jwiegley ];
     platforms = coq.meta.platforms;
   };
diff --git a/pkgs/development/coq-modules/ynot/default.nix b/pkgs/development/coq-modules/ynot/default.nix
index 555945068b1a..d83e2c5c7909 100644
--- a/pkgs/development/coq-modules/ynot/default.nix
+++ b/pkgs/development/coq-modules/ynot/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     homepage = http://ynot.cs.harvard.edu/;
-    description = "Ynot is a library for writing and verifying imperative programs";
+    description = "A library for writing and verifying imperative programs";
     maintainers = with maintainers; [ jwiegley ];
     platforms = coq.meta.platforms;
   };
diff --git a/pkgs/development/libraries/apr/default.nix b/pkgs/development/libraries/apr/default.nix
index 3810a47fac3f..08fd1fe4d5f3 100644
--- a/pkgs/development/libraries/apr/default.nix
+++ b/pkgs/development/libraries/apr/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "apr-1.5.1";
+  name = "apr-1.5.2";
 
   src = fetchurl {
     url = "mirror://apache/apr/${name}.tar.bz2";
-    sha256 = "1b4qw686bwjn19iyb0lg918q23xxd6s2gnyczhjq992d3m1vwjp9";
+    sha256 = "0ypn51xblix5ys9xy7da3ngdydip0qqh9rdq8nz54w9aq8lys0vx";
   };
 
   patches = stdenv.lib.optionals stdenv.isDarwin [ ./is-this-a-compiler-bug.patch ];
diff --git a/pkgs/development/libraries/assimp/default.nix b/pkgs/development/libraries/assimp/default.nix
index 229db910ffd2..70447d9f8853 100644
--- a/pkgs/development/libraries/assimp/default.nix
+++ b/pkgs/development/libraries/assimp/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
   buildInputs = [ unzip cmake boost ];
 
   meta = with stdenv.lib; {
-    description = "Open Asset Import Library is a library to import various 3D model formats";
+    description = "A library to import various 3D model formats";
     homepage = http://assimp.sourceforge.net/;
     license = licenses.bsd3;
     maintainers = with maintainers; [ emery ];
diff --git a/pkgs/development/libraries/c-ares/default.nix b/pkgs/development/libraries/c-ares/default.nix
index 58e7c17f2495..678c7e151122 100644
--- a/pkgs/development/libraries/c-ares/default.nix
+++ b/pkgs/development/libraries/c-ares/default.nix
@@ -8,13 +8,11 @@ stdenv.mkDerivation rec {
     sha256 = "1nyka87yf2jfd0y6sspll0yxwb8zi7kyvajrdbjmh4axc5s1cw1x";
   };
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "A C library for asynchronous DNS requests";
-
     homepage = http://c-ares.haxx.se;
-
-    license = stdenv.lib.licenses.mit;
-
-    maintainers = [ stdenv.lib.maintainers.shlevy ];
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ shlevy ];
   };
 }
diff --git a/pkgs/development/libraries/fcgi/default.nix b/pkgs/development/libraries/fcgi/default.nix
index f75c21170840..6808ea52adff 100644
--- a/pkgs/development/libraries/fcgi/default.nix
+++ b/pkgs/development/libraries/fcgi/default.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
   postInstall = "ln -s . $out/include/fastcgi";
 
   meta = with stdenv.lib; {
-    description = "FastCGI  is a language independent, scalable, open extension to CG";
+    description = "A language independent, scalable, open extension to CG";
     homepage = http://www.fastcgi.com/;
     license = "FastCGI see LICENSE.TERMS";
     platforms = platforms.all;
diff --git a/pkgs/development/libraries/fox/fox-1.6.nix b/pkgs/development/libraries/fox/fox-1.6.nix
index 604fe3c2fdf0..e966388b2ad9 100644
--- a/pkgs/development/libraries/fox/fox-1.6.nix
+++ b/pkgs/development/libraries/fox/fox-1.6.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     branch = "1.6";
-    description = "FOX is a C++ based class library for building Graphical User Interfaces";
+    description = "A C++ based class library for building Graphical User Interfaces";
     longDescription = ''
         FOX stands for Free Objects for X.
         It is a C++ based class library for building Graphical User Interfaces.
diff --git a/pkgs/development/libraries/giflib/5.0.nix b/pkgs/development/libraries/giflib/5.0.nix
index 49e3fc40ba66..95038284cd60 100644
--- a/pkgs/development/libraries/giflib/5.0.nix
+++ b/pkgs/development/libraries/giflib/5.0.nix
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
 
   buildInputs = [ xmlto docbook_xml_dtd_412 docbook_xsl libxml2 ];
   meta = {
-    description = "giflib is a library for reading and writing gif images";
+    description = "A library for reading and writing gif images";
     platforms = stdenv.lib.platforms.unix;
     license = stdenv.lib.licenses.mit;
     maintainers = with stdenv.lib.maintainers; [ fuuzetsu ];
diff --git a/pkgs/development/libraries/giflib/5.1.nix b/pkgs/development/libraries/giflib/5.1.nix
index dcd52fc93f46..0bccb857d350 100644
--- a/pkgs/development/libraries/giflib/5.1.nix
+++ b/pkgs/development/libraries/giflib/5.1.nix
@@ -9,7 +9,7 @@ stdenv.mkDerivation {
 
   buildInputs = [ xmlto docbook_xml_dtd_412 docbook_xsl libxml2 ];
   meta = {
-    description = "giflib is a library for reading and writing gif images";
+    description = "A library for reading and writing gif images";
     platforms = stdenv.lib.platforms.unix;
     license = stdenv.lib.licenses.mit;
     maintainers = with stdenv.lib.maintainers; [ fuuzetsu ];
diff --git a/pkgs/development/libraries/isl/0.14.1.nix b/pkgs/development/libraries/isl/0.14.1.nix
new file mode 100644
index 000000000000..dc13bbae9892
--- /dev/null
+++ b/pkgs/development/libraries/isl/0.14.1.nix
@@ -0,0 +1,22 @@
+{ stdenv, fetchurl, gmp }:
+
+stdenv.mkDerivation rec {
+  name = "isl-0.14.1";
+
+  src = fetchurl {
+    url = "http://isl.gforge.inria.fr/${name}.tar.xz";
+    sha256 = "0xa6xagah5rywkywn19rzvbvhfvkmylhcxr6z9z7bz29cpiwk0l8";
+  };
+
+  buildInputs = [ gmp ];
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = http://www.kotnet.org/~skimo/isl/;
+    license = stdenv.lib.licenses.lgpl21;
+    description = "A library for manipulating sets and relations of integer points bounded by linear constraints";
+    maintainers = [ stdenv.lib.maintainers.shlevy ];
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/development/libraries/jansson/default.nix b/pkgs/development/libraries/jansson/default.nix
index 7b78c39924fd..f0f9cc65cb2b 100644
--- a/pkgs/development/libraries/jansson/default.nix
+++ b/pkgs/development/libraries/jansson/default.nix
@@ -8,9 +8,11 @@ stdenv.mkDerivation rec {
     sha256 = "1mvq9p85khsl818i4vbszyfab0fd45mdrwrxjkzw05mk1xcyc1br";
   };
 
-  meta = {
+  meta = with stdenv.lib; {
     homepage = "http://www.digip.org/jansson/";
     description = "C library for encoding, decoding and manipulating JSON data";
-    license = stdenv.lib.licenses.mit;
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ wkennington ];
   };
 }
diff --git a/pkgs/development/libraries/lame/default.nix b/pkgs/development/libraries/lame/default.nix
index abf05f4c1385..562e292791ab 100644
--- a/pkgs/development/libraries/lame/default.nix
+++ b/pkgs/development/libraries/lame/default.nix
@@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = {
-    description = "LAME is a high quality MPEG Audio Layer III (MP3) encoder";
+    description = "A high quality MPEG Audio Layer III (MP3) encoder";
     homepage    = http://lame.sourceforge.net;
     license     = licenses.lgpl2;
     maintainers = with maintainers; [ codyopel ];
diff --git a/pkgs/development/libraries/libtomcrypt/default.nix b/pkgs/development/libraries/libtomcrypt/default.nix
index 4a3196e44b88..e960f5ef57f3 100644
--- a/pkgs/development/libraries/libtomcrypt/default.nix
+++ b/pkgs/development/libraries/libtomcrypt/default.nix
@@ -21,6 +21,6 @@ stdenv.mkDerivation {
 
   meta = {
     homepage = "http://libtom.org/?page=features&newsitems=5&whatfile=crypt";
-    description = "LibTomCrypt is a fairly comprehensive, modular and portable cryptographic toolkit";
+    description = "A fairly comprehensive, modular and portable cryptographic toolkit";
   };
 }
diff --git a/pkgs/development/libraries/nghttp2/default.nix b/pkgs/development/libraries/nghttp2/default.nix
new file mode 100644
index 000000000000..b72abb57e8f2
--- /dev/null
+++ b/pkgs/development/libraries/nghttp2/default.nix
@@ -0,0 +1,72 @@
+{ stdenv, fetchurl, pkgconfig
+
+# Optinal Dependencies
+, openssl ? null, libev ? null, zlib ? null, jansson ? null, boost ? null
+, libxml2 ? null, jemalloc ? null
+
+# Extra argument
+, prefix ? ""
+}:
+
+let
+  mkFlag = trueStr: falseStr: cond: name: val:
+    if cond == null then null else
+      "--${if cond != false then trueStr else falseStr}${name}${if val != null && cond != false then "=${val}" else ""}";
+  mkEnable = mkFlag "enable-" "disable-";
+  mkWith = mkFlag "with-" "without-";
+  mkOther = mkFlag "" "" true;
+
+  shouldUsePkg = pkg: if pkg != null && stdenv.lib.any (x: x == stdenv.system) pkg.meta.platforms then pkg else null;
+
+  isLib = prefix == "lib";
+
+  optOpenssl = if isLib then null else shouldUsePkg openssl;
+  optLibev = if isLib then null else shouldUsePkg libev;
+  optZlib = if isLib then null else shouldUsePkg zlib;
+
+  hasApp = optOpenssl != null && optLibev != null && optZlib != null;
+
+  optJansson = if isLib then null else shouldUsePkg jansson;
+  #optBoost = if isLib then null else shouldUsePkg boost;
+  optBoost = null; # Currently detection is broken
+  optLibxml2 = if !hasApp then null else shouldUsePkg libxml2;
+  optJemalloc = if !hasApp then null else shouldUsePkg jemalloc;
+in
+stdenv.mkDerivation rec {
+  name = "${prefix}nghttp2-${version}";
+  version = "0.7.13";
+
+  # Don't use fetchFromGitHub since this needs a bootstrap curl
+  src = fetchurl {
+    url = "http://pub.wak.io/nixos/tarballs/nghttp2-0.7.13.tar.xz";
+    sha256 = "1nz14hmfhsxljmf7f3763q9kpn9prfdivrvdr7c74x72s75bzwli";
+  };
+
+  nativeBuildInputs = [ pkgconfig ];
+  buildInputs = [ optJansson optBoost optLibxml2 optJemalloc ]
+    ++ stdenv.lib.optionals hasApp [ optOpenssl optLibev optZlib ];
+
+  configureFlags = [
+    (mkEnable false                 "werror"          null)
+    (mkEnable false                 "debug"           null)
+    (mkEnable true                  "threads"         null)
+    (mkEnable hasApp                "app"             null)
+    (mkEnable (optJansson != null)  "hpack-tools"     null)
+    (mkEnable (optBoost != null)    "asio-lib"        null)
+    (mkEnable false                 "examples"        null)
+    (mkEnable false                 "python-bindings" null)
+    (mkEnable false                 "failmalloc"      null)
+    (mkWith   (optLibxml2 != null)  "libxml2"         null)
+    (mkWith   (optJemalloc != null) "jemalloc"        null)
+    (mkWith   false                 "spdylay"         null)
+    (mkWith   false                 "cython"          null)
+  ];
+
+  meta = with stdenv.lib; {
+    homepage = http://nghttp2.org/;
+    description = "an implementation of HTTP/2 in C";
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ wkennington ];
+  };
+}
diff --git a/pkgs/development/libraries/npapi-sdk/default.nix b/pkgs/development/libraries/npapi-sdk/default.nix
index 57b1b3af2d1c..c2799d039cc1 100644
--- a/pkgs/development/libraries/npapi-sdk/default.nix
+++ b/pkgs/development/libraries/npapi-sdk/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
   };
 
   meta = with stdenv.lib; {
-    description = "NPAPI-SDK is a bundle of NPAPI headers by Mozilla";
+    description = "A bundle of NPAPI headers by Mozilla";
 
     homepage = https://code.google.com/p/npapi-sdk/;
     license = licenses.bsd3;
diff --git a/pkgs/development/libraries/physics/geant4/default.nix b/pkgs/development/libraries/physics/geant4/default.nix
index 1e1fc7ea3b8f..872576d9fb02 100644
--- a/pkgs/development/libraries/physics/geant4/default.nix
+++ b/pkgs/development/libraries/physics/geant4/default.nix
@@ -92,7 +92,7 @@ let
       '';
 
       meta = {
-        description = "A toolkit for the simulation of the passage of particles through matter.";
+        description = "A toolkit for the simulation of the passage of particles through matter";
         longDescription = ''
           Geant4 is a toolkit for the simulation of the passage of particles through matter.
           Its areas of application include high energy, nuclear and accelerator physics, as well as studies in medical and space science.
@@ -129,7 +129,7 @@ let
       '';
 
       meta = {
-        description = "Data files for the Geant4 toolkit.";
+        description = "Data files for the Geant4 toolkit";
         homepage = http://www.geant4.org;
         license = stdenv.lib.licenses.g4sl;
         maintainers = [ ];
diff --git a/pkgs/development/libraries/physics/geant4/g4py/default.nix b/pkgs/development/libraries/physics/geant4/g4py/default.nix
index f90b2e6c4aee..e023b1220910 100644
--- a/pkgs/development/libraries/physics/geant4/g4py/default.nix
+++ b/pkgs/development/libraries/physics/geant4/g4py/default.nix
@@ -45,7 +45,7 @@ let
       '';
 
       meta = {
-        description = "Python bindings and utilities for Geant4.";
+        description = "Python bindings and utilities for Geant4";
         longDescription = ''
           Geant4 is a toolkit for the simulation of the passage of particles through matter.      
           Its areas of application include high energy, nuclear and accelerator physics, as well as studies in medical and space science.
diff --git a/pkgs/development/libraries/qmltermwidget/default.nix b/pkgs/development/libraries/qmltermwidget/default.nix
index a1be2afcd6ce..32d9bd0a8e5f 100644
--- a/pkgs/development/libraries/qmltermwidget/default.nix
+++ b/pkgs/development/libraries/qmltermwidget/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = {
-    description = "This project is a QML port of qtermwidget";
+    description = "A QML port of qtermwidget";
     homepage = "https://github.com/Swordifish90/qmltermwidget";
     license = with stdenv.lib.licenses; [ gpl2 ];
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/libraries/urt/default.nix b/pkgs/development/libraries/urt/default.nix
index 8570af2b2834..090ca28d7c45 100644
--- a/pkgs/development/libraries/urt/default.nix
+++ b/pkgs/development/libraries/urt/default.nix
@@ -56,6 +56,6 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = http://www.cs.utah.edu/gdc/projects/urt/;
-    description = "The Utah Raster Toolkit is a library for dealing with raster images";
+    description = "A library for dealing with raster images";
   };
 }
\ No newline at end of file
diff --git a/pkgs/development/lisp-modules/lisp-packages.nix b/pkgs/development/lisp-modules/lisp-packages.nix
index d7bd2348244e..7d4c88e5c9e0 100644
--- a/pkgs/development/lisp-modules/lisp-packages.nix
+++ b/pkgs/development/lisp-modules/lisp-packages.nix
@@ -98,7 +98,7 @@ let lispPackages = rec {
   clx-truetype = buildLispPackage rec {
     baseName = "clx-truetype";
     version = "git-20141112";
-    description = "clx-truetype is pure common lisp solution for antialiased TrueType font rendering using CLX and XRender extension";
+    description = "A pure Common Lisp solution for antialiased TrueType font rendering using CLX and the XRender extension";
     deps = [cl-fad cl-store cl-vectors clx trivial-features zpb-ttf];
     # Source type: git
     src = pkgs.fetchgit {
diff --git a/pkgs/development/ocaml-modules/gmetadom/default.nix b/pkgs/development/ocaml-modules/gmetadom/default.nix
index f1ec69143b07..f0a9387a537e 100644
--- a/pkgs/development/ocaml-modules/gmetadom/default.nix
+++ b/pkgs/development/ocaml-modules/gmetadom/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation {
 
   meta = {
     homepage = http://gmetadom.sourceforge.net/;
-    description = "GMetaDOM is a collection of librares, each library providing a DOM implementation";
+    description = "A collection of librares, each library providing a DOM implementation";
     license = stdenv.lib.licenses.lgpl21Plus;
     maintainers = [ stdenv.lib.maintainers.roconnor ];
   };
diff --git a/pkgs/development/ocaml-modules/ocaml-text/default.nix b/pkgs/development/ocaml-modules/ocaml-text/default.nix
index 44b30b368b32..c82785e4aa94 100644
--- a/pkgs/development/ocaml-modules/ocaml-text/default.nix
+++ b/pkgs/development/ocaml-modules/ocaml-text/default.nix
@@ -17,7 +17,7 @@ stdenv.mkDerivation {
 
   meta = {
     homepage = "http://ocaml-text.forge.ocamlcore.org/";
-    description = "OCaml-Text is a library for dealing with ``text'', i.e. sequence of unicode characters, in a convenient way. ";
+    description = "A library for convenient text manipulation";
     license = stdenv.lib.licenses.bsd3;
     platforms = ocaml.meta.platforms;
   };
diff --git a/pkgs/development/ocaml-modules/ulex/0.8/default.nix b/pkgs/development/ocaml-modules/ulex/0.8/default.nix
index 77ffa7528981..eddc71aeace2 100644
--- a/pkgs/development/ocaml-modules/ulex/0.8/default.nix
+++ b/pkgs/development/ocaml-modules/ulex/0.8/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation {
 
   meta = {
     homepage = http://www.cduce.org/download.html;
-    description = "ulex is a lexer generator for Unicode and OCaml";
+    description = "A lexer generator for Unicode and OCaml";
     license = stdenv.lib.licenses.mit;
     maintainers = [ stdenv.lib.maintainers.roconnor ];
   };
diff --git a/pkgs/development/ocaml-modules/ulex/default.nix b/pkgs/development/ocaml-modules/ulex/default.nix
index 123641ba1ac0..28950078f39e 100644
--- a/pkgs/development/ocaml-modules/ulex/default.nix
+++ b/pkgs/development/ocaml-modules/ulex/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation {
 
   meta = {
     homepage = http://www.cduce.org/download.html;
-    description = "ulex is a lexer generator for Unicode and OCaml";
+    description = "A lexer generator for Unicode and OCaml";
     license = stdenv.lib.licenses.mit;
     platforms = stdenv.lib.platforms.linux;
     maintainers = [ stdenv.lib.maintainers.roconnor ];
diff --git a/pkgs/development/tools/misc/checkbashisms/default.nix b/pkgs/development/tools/misc/checkbashisms/default.nix
index 9c48227c9a83..1585b126961b 100644
--- a/pkgs/development/tools/misc/checkbashisms/default.nix
+++ b/pkgs/development/tools/misc/checkbashisms/default.nix
@@ -12,7 +12,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = http://sourceforge.net/projects/checkbaskisms/;
-    description = "Performs basic checks on shell scripts for the presence of non portable syntax";
+    description = "Check shell scripts for non-portable syntax";
     license = stdenv.lib.licenses.gpl2;
   };
 
diff --git a/pkgs/development/tools/ocaml/camlidl/default.nix b/pkgs/development/tools/ocaml/camlidl/default.nix
index dee605ced570..7a980c69c183 100644
--- a/pkgs/development/tools/ocaml/camlidl/default.nix
+++ b/pkgs/development/tools/ocaml/camlidl/default.nix
@@ -37,7 +37,7 @@ stdenv.mkDerivation {
   '';
 
   meta = {
-    description = "CamlIDL is a stub code generator and COM binding for Objective Caml";
+    description = "A stub code generator and COM binding for Objective Caml";
     homepage = "${webpage}";
     license = "LGPL";
     maintainers = [ stdenv.lib.maintainers.roconnor ];
diff --git a/pkgs/development/tools/parsing/hammer/default.nix b/pkgs/development/tools/parsing/hammer/default.nix
index f04d773c374b..5392f14926b8 100644
--- a/pkgs/development/tools/parsing/hammer/default.nix
+++ b/pkgs/development/tools/parsing/hammer/default.nix
@@ -15,13 +15,15 @@ stdenv.mkDerivation rec {
   installPhase = "scons prefix=$out install";
 
   meta = with stdenv.lib; {
-    description = "Hammer is a parsing library";
-    longDescription = "Hammer is a parsing library. Like many modern parsing libraries,
-	       it provides a parser combinator interface for writing grammars
-	       as inline domain-specific languages, but Hammer also provides a
-	       variety of parsing backends. It's also bit-oriented rather than
-	       character-oriented, making it ideal for parsing binary data such
-	       as images, network packets, audio, and executables.";
+    description = "A bit-oriented parser combinator library";
+    longDescription = ''
+      Hammer is a parsing library. Like many modern parsing libraries,
+      it provides a parser combinator interface for writing grammars
+      as inline domain-specific languages, but Hammer also provides a
+      variety of parsing backends. It's also bit-oriented rather than
+      character-oriented, making it ideal for parsing binary data such
+      as images, network packets, audio, and executables.
+    '';
     homepage = https://github.com/UpstandingHackers/hammer;
     license = licenses.gpl2;
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/profiling/gprof2dot/default.nix b/pkgs/development/tools/profiling/gprof2dot/default.nix
new file mode 100644
index 000000000000..38315116eeb7
--- /dev/null
+++ b/pkgs/development/tools/profiling/gprof2dot/default.nix
@@ -0,0 +1,19 @@
+{ stdenv, fetchFromGitHub, pythonPackages }:
+
+pythonPackages.buildPythonPackage {
+  name = "gprof2dot-2015-04-27";
+
+  src = fetchFromGitHub {
+    owner = "jrfonseca";
+    repo = "gprof2dot";
+    rev = "6fbb81559609c12e7c64ae5dce7d102a414a7514";
+    sha256 = "1fff7w6dm6lld11hp2ij97f85ma1154h62dvchq19c5jja3zjw3c";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = "https://github.com/jrfonseca/gprof2dot";
+    description = "Python script to convert the output from many profilers into a dot graph";
+    license = licenses.lgpl3Plus;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/games/eduke32/default.nix b/pkgs/games/eduke32/default.nix
index cc47f9482404..e7a420b894a1 100644
--- a/pkgs/games/eduke32/default.nix
+++ b/pkgs/games/eduke32/default.nix
@@ -1,68 +1,70 @@
-{stdenv, fetchurl, SDL, SDL_mixer, libvorbis, mesa, gtk, pkgconfig, nasm, libvpx, flac, makeDesktopItem}:
+{ stdenv, fetchurl, flac, gtk, libvorbis, libvpx, makeDesktopItem, mesa, nasm
+, pkgconfig, SDL2, SDL2_mixer }:
 
-stdenv.mkDerivation rec {
-  name = "eduke32-20130303-3542";
+let
+  date = "20150420";
+  rev = "5160";
+  version = "${date}-${rev}";
+in stdenv.mkDerivation rec {
+  name = "eduke32-${version}";
 
   src = fetchurl {
-    url = http://dukeworld.duke4.net/eduke32/synthesis/20130303-3542/eduke32_src_20130303-3542.tar.bz2;
-    sha256 = "0v1q2bkmpnac5l9x97nnlhrrb95518vmhxx48zv3ncvmpafl1mqc";
+    url = "http://dukeworld.duke4.net/eduke32/synthesis/${version}/eduke32_src_${version}.tar.xz";
+    sha256 = "1nlq5jbglg00c1z1vsyl627fh0mqfxvk5qyxav5vzla2b4svik2v";
   };
 
-  buildInputs = [ SDL SDL_mixer libvorbis mesa gtk pkgconfig libvpx flac ]
+  buildInputs = [ flac gtk libvorbis libvpx mesa pkgconfig SDL2 SDL2_mixer ]
     ++ stdenv.lib.optional (stdenv.system == "i686-linux") nasm;
 
-  NIX_CFLAGS_COMPILE = "-I${SDL}/include/SDL";
-  NIX_LDFLAGS = "-L${SDL}/lib -lgcc_s";
+  postPatch = ''
+    substituteInPlace build/src/glbuild.c \
+      --replace libGL.so	${mesa}/lib/libGL.so \
+      --replace libGLU.so	${mesa}/lib/libGLU.so
+  '';
+
+  NIX_CFLAGS_COMPILE = "-I${SDL2}/include/SDL";
+  NIX_LDFLAGS = "-L${SDL2}/lib";
+
+  makeFlags = "LINKED_GTK=1 SDLCONFIG=${SDL2}/bin/sdl2-config VC_REV=${rev}";
 
   desktopItem = makeDesktopItem {
     name = "eduke32";
     exec = "eduke32-wrapper";
     comment = "Duke Nukem 3D port";
-    desktopName = "EDuke32";
+    desktopName = "Enhanced Duke Nukem 3D";
     genericName = "Duke Nukem 3D port";
     categories = "Application;Game;";
   };
 
-  preConfigure = ''
-    sed -i -e "s|/usr/bin/sdl-config|${SDL}/bin/sdl-config|" build/Makefile.shared
-  '';
-
-  buildPhase = ''
-    make OPTLEVEL=0 USE_LIBPNG=0
-  '';
-
   installPhase = ''
-    # Install binaries
-    mkdir -p $out/bin
-    cp eduke32 mapster32 $out/bin
-
     # Make wrapper script
-    cat > $out/bin/eduke32-wrapper <<EOF
+    cat > eduke32-wrapper <<EOF
     #!/bin/sh
 
-    if [ "$EDUKE32_DATA_DIR" = "" ]
-    then
+    if [ "$EDUKE32_DATA_DIR" = "" ]; then
         EDUKE32_DATA_DIR=/var/lib/games/eduke32
     fi
-    if [ "$EDUKE32_GRP_FILE" = "" ]
-    then
+    if [ "$EDUKE32_GRP_FILE" = "" ]; then
         EDUKE32_GRP_FILE=\$EDUKE32_DATA_DIR/DUKE3D.GRP
     fi
 
     cd \$EDUKE32_DATA_DIR
-    eduke32 -g \$EDUKE32_GRP_FILE
+    exec $out/bin/eduke32 -g \$EDUKE32_GRP_FILE
     EOF
-    chmod 755 $out/bin/eduke32-wrapper
+
+    # Install binaries
+    mkdir -p $out/bin
+    install -Dm755 eduke32{,-wrapper} mapster32 $out/bin
 
     # Install desktop item
-    mkdir -p $out/share/applications
-    cp ${desktopItem}/share/applications/* $out/share/applications
+    cp -rv ${desktopItem}/share $out
   '';
 
-  meta = {
+  meta = with stdenv.lib; {
+    inherit version;
     description = "Enhanched port of Duke Nukem 3D for various platforms";
-    license = stdenv.lib.licenses.gpl2Plus;
+    license = with licenses; gpl2Plus;
     homepage = http://eduke32.com;
-    maintainers = [ stdenv.lib.maintainers.sander ];
+    maintainers = with maintainers; [ nckx sander ];
   };
 }
diff --git a/pkgs/games/super-tux-kart/default.nix b/pkgs/games/super-tux-kart/default.nix
index db42572de5eb..f3574d137d39 100644
--- a/pkgs/games/super-tux-kart/default.nix
+++ b/pkgs/games/super-tux-kart/default.nix
@@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = "SuperTuxKart is a Free 3D kart racing game";
+    description = "A Free 3D kart racing game";
     longDescription = ''
       SuperTuxKart is a Free 3D kart racing game, with many tracks,
       characters and items for you to try, similar in spirit to Mario
diff --git a/pkgs/misc/emulators/cdemu/base.nix b/pkgs/misc/emulators/cdemu/base.nix
index 58727f10ef19..d7c91169ed3d 100644
--- a/pkgs/misc/emulators/cdemu/base.nix
+++ b/pkgs/misc/emulators/cdemu/base.nix
@@ -16,8 +16,8 @@ in stdenv.mkDerivation ({
   configurePhase = ''
     cmake ../${name} -DCMAKE_INSTALL_PREFIX=$out -DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_RPATH=ON
   '';
-  meta = {
-    description = "A Software suite designed to emulate an optical drive and disc (including CD-ROMs and DVD-ROMs) on the Linux operating system";
+  meta = with stdenv.lib; {
+    description = "A suite of tools for emulating optical drives and discs";
     longDescription = ''
       CDEmu consists of:
 
@@ -29,9 +29,9 @@ in stdenv.mkDerivation ({
 
       Optical media emulated by CDemu can be mounted within Linux. Automounting is also allowed.
     '';
-    homepage = "http://cdemu.sourceforge.net/";
-    license = stdenv.lib.licenses.gpl2Plus;
-    platforms = stdenv.lib.platforms.linux;
+    homepage = http://cdemu.sourceforge.net/;
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
     maintainers = [ "Rok Mandeljc <mrok AT users DOT sourceforge DOT net>" ];
   };
 } // drvParams)
diff --git a/pkgs/misc/vim-plugins/default.nix b/pkgs/misc/vim-plugins/default.nix
index 226f9375fd43..60d67b38a44a 100644
--- a/pkgs/misc/vim-plugins/default.nix
+++ b/pkgs/misc/vim-plugins/default.nix
@@ -439,6 +439,21 @@ rec {
     };
   };
 
+  vim-buffergator = buildVimPlugin {
+    name = "vim-buffergator-2015-03-31";
+    src = fetchFromGitHub {
+      owner = "jeetsukumaran";
+      repo = "vim-buffergator";
+      rev = "77cfdd127f";
+      sha256 = "11r9845kplwahf2d41whs2lg3bzy0dahs0mvmdbckp7ckq3gd3y4";
+      };
+     meta = with stdenv.lib; {
+      description = "Vim plugin to list, select and switch between buffers";
+      license = licenses.gpl3;
+      maintainers = with maintainers; [ hbunke ];
+     };
+  };
+
   vim-jinja = buildVimPlugin {
     name = "vim-jinja-git-2014-06-11";
     src = fetchFromGitHub {
@@ -453,6 +468,21 @@ rec {
     };
   };
 
+  vim-nerdtree-tabs = buildVimPlugin {
+    name = "vim-nerdtree-tabs-2014-09-25";
+    src = fetchFromGitHub {
+      owner = "jistr";
+      repo = "vim-nerdtree-tabs";
+      rev = "0decec122e";
+      sha256 = "0m51vpxq0d3mxy9i18hczsbqsqi7vlzwgjnpryb8gb5wmy999d6l";
+    };
+    meta = with stdenv.lib; {
+      description = "NERDTree and tabs together in Vim, painlessly";
+      license = licenses.asl20;
+      maintainers = with maintainers; [ hbunke ];
+    };
+  };
+
   vimproc = buildVimPlugin {
     name = "vimproc-git-2015-02-23";
     src = fetchgit {
diff --git a/pkgs/os-specific/linux/fatrace/default.nix b/pkgs/os-specific/linux/fatrace/default.nix
index c6e52934a774..39c606f3fb54 100644
--- a/pkgs/os-specific/linux/fatrace/default.nix
+++ b/pkgs/os-specific/linux/fatrace/default.nix
@@ -1,19 +1,25 @@
-{stdenv, fetchurl, python3}:
+{ stdenv, fetchurl, python3, which }:
 
+let version = "0.10"; in
 stdenv.mkDerivation rec {
-  version = "0.9";
   name = "fatrace-${version}";
 
   src = fetchurl {
-    url = "https://launchpad.net/fatrace/trunk/${version}/+download/${name}.tar.bz2";
-    sha256 = "c028d822ffde68805e5d1f62c4e2d0f4b3d4ae565802cc9468c82b25b92e68cd";
+    url = "http://launchpad.net/fatrace/trunk/${version}/+download/${name}.tar.bz2";
+    sha256 = "0q0cv2bsgf76wypz18v2acgj1crcdqhrhlsij3r53glsyv86xyra";
   };
 
-  buildInputs = [ python3 ];
+  buildInputs = [ python3 which ];
+
+  postPatch = ''
+    substituteInPlace power-usage-report \
+      --replace "'which'" "'${which}/bin/which'"
+  '';
 
   makeFlagsArray = "PREFIX=$(out)";
 
   meta = with stdenv.lib; {
+    inherit version;
     description = "Report system-wide file access events";
     homepage = https://launchpad.net/fatrace/;
     license = with licenses; gpl3Plus;
diff --git a/pkgs/os-specific/linux/fusionio/util.nix b/pkgs/os-specific/linux/fusionio/util.nix
index 16f1ef73dba5..e2f8d423a61d 100644
--- a/pkgs/os-specific/linux/fusionio/util.nix
+++ b/pkgs/os-specific/linux/fusionio/util.nix
@@ -36,7 +36,7 @@ stdenv.mkDerivation {
 
   meta = with stdenv.lib; {
     homepage = http://fusionio.com;
-    description = "Fusionio command line utilities.";
+    description = "Fusionio command line utilities";
     license = licenses.unfree;
     platforms = [ "x86_64-linux" ];
     broken = stdenv.system != "x86_64-linux";
diff --git a/pkgs/os-specific/linux/hal-flash/default.nix b/pkgs/os-specific/linux/hal-flash/default.nix
index 1ac67f199172..f61318e1b6bb 100644
--- a/pkgs/os-specific/linux/hal-flash/default.nix
+++ b/pkgs/os-specific/linux/hal-flash/default.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation {
 
   meta = with stdenv.lib; {
     homepage = https://github.com/cshorler/hal-flash;
-    description = "libhal stub library to satisfy the Flash Player DRM requirements.";
+    description = "libhal stub library to satisfy the Flash Player DRM requirements";
     longDescription =
       ''
         Stub library based loosely upon libhal.[ch] from the hal-0.5.14
diff --git a/pkgs/os-specific/linux/iproute/default.nix b/pkgs/os-specific/linux/iproute/default.nix
index a5bf8ccc1622..53812a712862 100644
--- a/pkgs/os-specific/linux/iproute/default.nix
+++ b/pkgs/os-specific/linux/iproute/default.nix
@@ -1,11 +1,11 @@
 { fetchurl, stdenv, flex, bison, db, iptables, pkgconfig }:
 
 stdenv.mkDerivation rec {
-  name = "iproute2-3.19.0";
+  name = "iproute2-4.0.0";
 
   src = fetchurl {
     url = "mirror://kernel/linux/utils/net/iproute2/${name}.tar.xz";
-    sha256 = "1c6pgysxfqs5qkd4kpwkbdhw3xydhjnskrz1q2k2nvqndv1ziyg2";
+    sha256 = "0616cg6liyysfddf6d8i4vyndd9b0hjmfw35icq8p18b0nqnxl2w";
   };
 
   patch = [ ./vpnc.patch ];
diff --git a/pkgs/os-specific/linux/kernel/linux-3.10.nix b/pkgs/os-specific/linux/kernel/linux-3.10.nix
index ff9f2f382430..68e5c940ca9e 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.10.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.10.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "3.10.75";
+  version = "3.10.76";
   extraMeta.branch = "3.10";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-    sha256 = "00wqcmya2ky9f1djlq99mcq8fyvpabnjnp5cn61japlgk8p7r60q";
+    sha256 = "0v4blm026fg4hk5ddh25b1fjhnk2yak2hpj4cz4wiq7yr84dr8p5";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.14.nix b/pkgs/os-specific/linux/kernel/linux-3.14.nix
index 188eb6f699c1..8b134e740064 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.14.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.14.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "3.14.39";
+  version = "3.14.40";
   # Remember to update grsecurity!
   extraMeta.branch = "3.14";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-    sha256 = "0zgfiqlvmprbn55k9ijf6db027mxlcww76y47g4g7vcj5qrpq6rd";
+    sha256 = "1w5j53ny5vahp1ipj16x0ahjb5yj6q859jsdshblymvwrbkcr29a";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/linux-3.19.nix b/pkgs/os-specific/linux/kernel/linux-3.19.nix
index 79302819d7c9..293b0abf9f34 100644
--- a/pkgs/os-specific/linux/kernel/linux-3.19.nix
+++ b/pkgs/os-specific/linux/kernel/linux-3.19.nix
@@ -1,13 +1,13 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "3.19.5";
+  version = "3.19.6";
   # Remember to update grsecurity!
   extraMeta.branch = "3.19";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v3.x/linux-${version}.tar.xz";
-    sha256 = "0s2yiyk1ks0z2fj8a8g56hkp6mfyvh9c34m1jpixhg9zck9xjdix";
+    sha256 = "1kqn796vwkmhj2qkv56nj7anpmxx1hxv47cf44fcmx9n1afry8j4";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/linux-4.0.nix b/pkgs/os-specific/linux/kernel/linux-4.0.nix
index b63aa7e9932f..161861d6f067 100644
--- a/pkgs/os-specific/linux/kernel/linux-4.0.nix
+++ b/pkgs/os-specific/linux/kernel/linux-4.0.nix
@@ -1,13 +1,12 @@
 { stdenv, fetchurl, ... } @ args:
 
 import ./generic.nix (args // rec {
-  version = "4.0";
-  modDirVersion = "4.0.0";
+  version = "4.0.1";
   extraMeta.branch = "4.0";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz";
-    sha256 = "14argl6ywkggdvgiycfx4jl2d7290f631ly59wfggj4vjx27sbqg";
+    sha256 = "1ggj26p1bm5v5kaviz6brfkjk32f8rib1mh61ns77gjlx5vsvc7z";
   };
 
   features.iwlwifi = true;
diff --git a/pkgs/os-specific/linux/kernel/patches.nix b/pkgs/os-specific/linux/kernel/patches.nix
index 998717b1f5d4..2bb8fb570003 100644
--- a/pkgs/os-specific/linux/kernel/patches.nix
+++ b/pkgs/os-specific/linux/kernel/patches.nix
@@ -65,17 +65,17 @@ rec {
   };
 
   grsecurity_stable = grsecPatch
-    { kversion  = "3.14.39";
-      revision  = "201504190814";
+    { kversion  = "3.14.40";
+      revision  = "201504290821";
       branch    = "stable";
-      sha256    = "0pjq0ggifh6hp5y62dl0ydskpmsmzj1cxxjaaqs6fpwn5ndsdji7";
+      sha256    = "0382ydr1dshjmwggx5a6ywrdr7qv52w178ify60qw59lrphbdkls";
     };
 
   grsecurity_unstable = grsecPatch
-    { kversion  = "3.19.5";
-      revision  = "201504190814";
+    { kversion  = "3.19.6";
+      revision  = "201504290821";
       branch    = "test";
-      sha256    = "0wj9bximhs41b11hh113mishmc1ya8bncc0v91cbrivx5y5hjpz0";
+      sha256    = "0nya84cpj2cgncchywfysvmzx5m3wl034f6p7zfxj9l6jhjdcd6q";
     };
 
   grsec_fix_path =
diff --git a/pkgs/os-specific/linux/mbpfan/default.nix b/pkgs/os-specific/linux/mbpfan/default.nix
new file mode 100644
index 000000000000..75099e95f90b
--- /dev/null
+++ b/pkgs/os-specific/linux/mbpfan/default.nix
@@ -0,0 +1,30 @@
+{ stdenv, lib, fetchFromGitHub, gnugrep, kmod }:
+
+stdenv.mkDerivation rec {
+  name = "mbpfan-${version}";
+  version = "1.9.0";
+  src = fetchFromGitHub {
+    owner = "dgraziotin";
+    repo = "mbpfan";
+    rev = "v${version}";
+    sha256 = "15nm1d0a0c0lzxqngrpn2qpsydsmglnn6d20djl7brpsq26j24h9";
+  };
+  patches = [ ./fixes.patch ];
+  postPatch = ''
+    substituteInPlace src/main.c \
+      --replace '@GREP@' '${gnugrep}/bin/grep' \
+      --replace '@LSMOD@' '${kmod}/bin/lsmod'
+  '';
+  installPhase = ''
+    mkdir -p $out/bin $out/etc
+    cp bin/mbpfan $out/bin
+    cp mbpfan.conf $out/etc
+  '';
+  meta = with lib; {
+    description = "Daemon that uses input from coretemp module and sets the fan speed using the applesmc module";
+    homepage = "https://github.com/dgraziotin/mbpfan";
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ cstrahan ];
+  };
+}
diff --git a/pkgs/os-specific/linux/mbpfan/fixes.patch b/pkgs/os-specific/linux/mbpfan/fixes.patch
new file mode 100644
index 000000000000..548cce05c358
--- /dev/null
+++ b/pkgs/os-specific/linux/mbpfan/fixes.patch
@@ -0,0 +1,29 @@
+diff --git a/src/main.c b/src/main.c
+index e8af708..6cfee17 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -71,7 +71,7 @@ void check_requirements()
+       * Check for coretemp and applesmc modules
+       * Credits: -http://stackoverflow.com/questions/12978794
+       */
+-    FILE *fd = popen("lsmod | grep coretemp", "r");
++    FILE *fd = popen("@LSMOD@ | @GREP@ coretemp", "r");
+     char buf[16];
+ 
+     if (!(fread (buf, 1, sizeof (buf), fd) > 0)) {
+@@ -87,7 +87,7 @@ void check_requirements()
+ 
+     pclose(fd);
+ 
+-    fd = popen("lsmod | grep applesmc", "r");
++    fd = popen("@LSMOD@ | @GREP@ applesmc", "r");
+ 
+     if (!(fread (buf, 1, sizeof (buf), fd) > 0)) {
+         DIR* dir = opendir(APPLESMC_PATH);
+@@ -145,4 +145,4 @@ int main(int argc, char *argv[])
+     void (*fan_control)() = mbpfan;
+     go_daemon(fan_control);
+     exit(EXIT_SUCCESS);
+-}
+\ No newline at end of file
++}
diff --git a/pkgs/os-specific/linux/mcelog/default.nix b/pkgs/os-specific/linux/mcelog/default.nix
index 342e29a6d2e0..a5f6242f84fd 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 = "116"; in
+let version = "117"; in
 stdenv.mkDerivation {
   name = "mcelog-${version}";
 
   src = fetchFromGitHub {
-    sha256 = "0nr3b924ardz9c1skna8finrjq22ac2vihp3zck9jixc9d5mvrmf";
+    sha256 = "0szc5s0bag16ypna336spwb5fagwbxaparn0h78w73wv05kcvwqw";
     rev = "v${version}";
     repo = "mcelog";
     owner = "andikleen";
diff --git a/pkgs/servers/mail/exim/default.nix b/pkgs/servers/mail/exim/default.nix
index 3dd0463b604f..856d4f61c54d 100644
--- a/pkgs/servers/mail/exim/default.nix
+++ b/pkgs/servers/mail/exim/default.nix
@@ -54,8 +54,8 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    homepage = "http://exim.org/";
-    description = "A mail transfer agent (MTA) for hosts that are running Unix or Unix-like operating systems";
+    homepage = http://exim.org/;
+    description = "A mail transfer agent (MTA)";
     license = stdenv.lib.licenses.gpl3;
     platforms = stdenv.lib.platforms.linux;
     maintainers = [ stdenv.lib.maintainers.tv ];
diff --git a/pkgs/servers/nosql/hyperdex/busybee.nix b/pkgs/servers/nosql/hyperdex/busybee.nix
index 19482db6f5a6..9fdbbf064b05 100644
--- a/pkgs/servers/nosql/hyperdex/busybee.nix
+++ b/pkgs/servers/nosql/hyperdex/busybee.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
   preConfigure = "autoreconf -i";
 
   meta = with stdenv.lib; {
-    description = "BusyBee is a high-performance messaging layer.";
+    description = "A high-performance messaging layer";
     homepage = https://github.com/rescrv/busybee;
     license = licenses.bsd3;
   };
diff --git a/pkgs/servers/nosql/hyperdex/default.nix b/pkgs/servers/nosql/hyperdex/default.nix
index 44cc0752088a..7ed3661b87ff 100644
--- a/pkgs/servers/nosql/hyperdex/default.nix
+++ b/pkgs/servers/nosql/hyperdex/default.nix
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
   preConfigure = "autoreconf -fi";
 
   meta = with stdenv.lib; {
-    description = "HyperDex is a scalable, searchable key-value store";
+    description = "A scalable, searchable key-value store";
     homepage = http://hyperdex.org;
     license = licenses.bsd3;
   };
diff --git a/pkgs/servers/nosql/hyperdex/replicant.nix b/pkgs/servers/nosql/hyperdex/replicant.nix
index c064aa419cde..69146b586723 100644
--- a/pkgs/servers/nosql/hyperdex/replicant.nix
+++ b/pkgs/servers/nosql/hyperdex/replicant.nix
@@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
   preConfigure = "autoreconf -i";
   
   meta = with stdenv.lib; {
-    description = "A system for maintaining replicated state machines.";
+    description = "A system for maintaining replicated state machines";
     homepage = https://github.com/rescrv/Replicant;
     license = licenses.bsd3;
   };
diff --git a/pkgs/servers/sql/monetdb/default.nix b/pkgs/servers/sql/monetdb/default.nix
index 2293e2ab3161..ebc0cffb3aa2 100644
--- a/pkgs/servers/sql/monetdb/default.nix
+++ b/pkgs/servers/sql/monetdb/default.nix
@@ -34,7 +34,7 @@ composableDerivation.composableDerivation {} {
   '';
 
   meta = { 
-    description = "MonetDB is a open-source database system for high-performance applications in data mining, OLAP, GIS, XML Query, text and multimedia retrieval";
+    description = "A open-source database system for high-performance applications in data mining, OLAP, GIS, XML Query, text and multimedia retrieval";
     homepage = http://monetdb.cwi.nl/;
     license = "MonetDB Public License"; # very similar to Mozilla public license (MPL) Version see 1.1 http://monetdb.cwi.nl/Legal/MonetDBLicense-1.1.html 
   };
diff --git a/pkgs/shells/mksh/default.nix b/pkgs/shells/mksh/default.nix
index ba510e8907a6..e951c24e6a04 100644
--- a/pkgs/shells/mksh/default.nix
+++ b/pkgs/shells/mksh/default.nix
@@ -41,7 +41,7 @@ stdenv.mkDerivation rec {
       systems.
     '';
     homepage = "https://www.mirbsd.org/mksh.htm";
-    license = "custom";
+    license = with stdenv.lib.licenses; free;
     maintainers = [ maintainers.AndersonTorres ];
     platforms = platforms.unix;
   };
diff --git a/pkgs/tools/backup/store-backup/default.nix b/pkgs/tools/backup/store-backup/default.nix
index c986adeafdcc..84351e19210f 100644
--- a/pkgs/tools/backup/store-backup/default.nix
+++ b/pkgs/tools/backup/store-backup/default.nix
@@ -100,7 +100,7 @@ stdenv.mkDerivation {
   '';
 
   meta = {
-    description = "Storebackup is a backup suite that stores files on other disks";
+    description = "A backup suite that stores files on other disks";
     homepage = http://savannah.nongnu.org/projects/storebackup;
     license = stdenv.lib.licenses.gpl3Plus;
     maintainers = [stdenv.lib.maintainers.marcweber];
diff --git a/pkgs/tools/cd-dvd/dvdisaster/default.nix b/pkgs/tools/cd-dvd/dvdisaster/default.nix
index 1bdf363300b6..101d69c0903b 100644
--- a/pkgs/tools/cd-dvd/dvdisaster/default.nix
+++ b/pkgs/tools/cd-dvd/dvdisaster/default.nix
@@ -1,5 +1,6 @@
 { stdenv, fetchurl, pkgconfig, which, gettext, intltool
 , glib, gtk2
+, enableSoftening ? true
 }:
 
 stdenv.mkDerivation rec {
@@ -10,8 +11,14 @@ stdenv.mkDerivation rec {
     sha256 = "e9787dea39aeafa38b26604752561bc895083c17b588489d857ac05c58be196b";
   };
 
+  patches = stdenv.lib.optional enableSoftening [
+    ./encryption.patch
+    ./dvdrom.patch
+  ];
+
   postPatch = ''
     patchShebangs ./
+    sed -i 's/dvdisaster48.png/dvdisaster/' contrib/dvdisaster.desktop
   '';
 
   # Explicit --docdir= is required for on-line help to work:
@@ -22,11 +29,27 @@ stdenv.mkDerivation rec {
     glib gtk2
   ];
 
-  meta = {
+  postInstall = ''
+    mkdir -pv $out/share/applications
+    cp contrib/dvdisaster.desktop $out/share/applications/
+
+    for size in 16 24 32 48 64; do
+      mkdir -pv $out/share/icons/hicolor/"$size"x"$size"/apps/
+      cp contrib/dvdisaster"$size".png $out/share/icons/hicolor/"$size"x"$size"/apps/dvdisaster.png
+    done
+  '';
+
+  meta = with stdenv.lib; {
     homepage = http://dvdisaster.net/;
-    description =
-      "Stores data on CD/DVD/BD in a way that it is fully recoverable even " +
-      "after some read errors have developed";
-    license = stdenv.lib.licenses.gpl2;
+    description = "Data loss/scratch/aging protection for CD/DVD media";
+    longDescription = ''
+      Dvdisaster provides a margin of safety against data loss on CD and
+      DVD media caused by scratches or aging media. It creates error correction
+      data which is used to recover unreadable sectors if the disc becomes
+      damaged at a later time.
+    '';
+    license = licenses.gpl2;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ jgeerds ];
   };
 }
diff --git a/pkgs/tools/cd-dvd/dvdisaster/dvdrom.patch b/pkgs/tools/cd-dvd/dvdisaster/dvdrom.patch
new file mode 100644
index 000000000000..ce3f3de2bc03
--- /dev/null
+++ b/pkgs/tools/cd-dvd/dvdisaster/dvdrom.patch
@@ -0,0 +1,19 @@
+Author: Corey Wright <undefined@pobox.com>
+Description: Adds support for DVD-ROM medium-type.
+
+Index: dvdisaster/scsi-layer.c
+===================================================================
+--- dvdisaster.orig/scsi-layer.c	2012-03-06 11:10:17.147044691 +0900
++++ dvdisaster/scsi-layer.c	2012-03-06 11:10:30.927044292 +0900
+@@ -913,6 +913,11 @@
+ 	    break;
+ 	 }
+ 
++	 if(layer_type & 0x01)
++	 {  dh->typeDescr = g_strdup("DVD-ROM");
++	    break;
++	 }
++
+ 	 if(layer_type & 0x06) /* strange thing: (re-)writeable but neither plus nor dash */ 
+ 	 {  dh->typeDescr = g_strdup("DVD-ROM (fake)");
+ 	    dh->subType = DVD;
diff --git a/pkgs/tools/cd-dvd/dvdisaster/encryption.patch b/pkgs/tools/cd-dvd/dvdisaster/encryption.patch
new file mode 100644
index 000000000000..a9383cb13cfe
--- /dev/null
+++ b/pkgs/tools/cd-dvd/dvdisaster/encryption.patch
@@ -0,0 +1,21 @@
+Author: n/a
+Description: Disables to skip on encrypted disks (e.g. DVD with CSS-Encryption).
+
+Index: dvdisaster/scsi-layer.c
+===================================================================
+--- dvdisaster.orig/scsi-layer.c	2012-04-08 21:51:10.995588783 +0900
++++ dvdisaster/scsi-layer.c	2012-04-08 21:51:29.259678075 +0900
+@@ -2693,11 +2693,12 @@
+        	 return NULL;
+       }
+    }
+-
++/*
+    if(dh->mainType == DVD && query_copyright(dh))
+    {  CloseDevice(dh);
+       Stop(_("This software does not support encrypted media.\n"));
+    }
++*/
+ 
+    /* Create the bitmap of simulated defects */
+ 
diff --git a/pkgs/tools/filesystems/btrfsprogs/default.nix b/pkgs/tools/filesystems/btrfsprogs/default.nix
index d1e0e8e430b5..9286d58482fd 100644
--- a/pkgs/tools/filesystems/btrfsprogs/default.nix
+++ b/pkgs/tools/filesystems/btrfsprogs/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchurl, pkgconfig, attr, acl, zlib, libuuid, e2fsprogs, lzo
 , asciidoc, xmlto, docbook_xml_dtd_45, docbook_xsl, libxslt }:
 
-let version = "3.19.1"; in
+let version = "4.0"; in
 
 stdenv.mkDerivation rec {
   name = "btrfs-progs-${version}";
 
   src = fetchurl {
     url = "mirror://kernel/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v${version}.tar.xz";
-    sha256 = "1nw8rsc0dc5k6hrg03m1c65n4d0f7rfs1fjv96xqhqg0wykn5214";
+    sha256 = "07ss0spfkb6dkvcwmkljy6bbyf437abwzngip141a1mhq6ng370p";
   };
 
   buildInputs = [
diff --git a/pkgs/tools/filesystems/yandex-disk/default.nix b/pkgs/tools/filesystems/yandex-disk/default.nix
index eb308f9de4ff..a64b7f550033 100644
--- a/pkgs/tools/filesystems/yandex-disk/default.nix
+++ b/pkgs/tools/filesystems/yandex-disk/default.nix
@@ -49,7 +49,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     homepage = http://help.yandex.com/disk/cli-clients.xml;
-    description = "Yandex.Disk is a free cloud file storage service";
+    description = "A free cloud file storage service";
     maintainers = with stdenv.lib.maintainers; [smironov];
     platforms = ["i686-linux" "x86_64-linux"];
     license = stdenv.lib.licenses.unfree;
diff --git a/pkgs/tools/misc/brltty/default.nix b/pkgs/tools/misc/brltty/default.nix
new file mode 100644
index 000000000000..4201fb25f98a
--- /dev/null
+++ b/pkgs/tools/misc/brltty/default.nix
@@ -0,0 +1,33 @@
+{ stdenv, fetchurl, pkgconfig, alsaSupport, alsaLib ? null, bluez }:
+
+assert alsaSupport -> alsaLib != null;
+
+stdenv.mkDerivation rec {
+  name = "brltty-5.2";
+  
+  src = fetchurl {
+    url = "http://brltty.com/archive/${name}.tar.gz";
+    sha256 = "1zaab5pxkqrv081n23p3am445d30gk0km4azqdirvcpw9z15q0cz";
+  };
+  
+  buildInputs = [ pkgconfig alsaLib bluez ]
+    ++ stdenv.lib.optional alsaSupport alsaLib;
+  
+  meta = {
+    description = "Access software for a blind person using a braille display";
+    longDescription = ''
+      BRLTTY is a background process (daemon) which provides access to the Linux/Unix
+      console (when in text mode) for a blind person using a refreshable braille display.
+      It drives the braille display, and provides complete screen review functionality.
+      Some speech capability has also been incorporated. 
+    '';
+    homepage = http://www.brltty.com/;
+    license = stdenv.lib.licenses.gpl2;
+    maintainers = [ stdenv.lib.maintainers.bramd ];
+    platforms = stdenv.lib.platforms.all;
+  };
+  
+  patchPhase = ''
+    substituteInPlace configure --replace /sbin/ldconfig ldconfig
+  '';
+}
diff --git a/pkgs/tools/networking/airfield/default.nix b/pkgs/tools/networking/airfield/default.nix
index 38c802f3c08f..aad3b769fe28 100644
--- a/pkgs/tools/networking/airfield/default.nix
+++ b/pkgs/tools/networking/airfield/default.nix
@@ -29,7 +29,7 @@ in nodePackages.buildNodePackage rec {
   passthru.names = ["Airfield"];
 
   meta = {
-    description = "Airfield is a web-interface for hipache-proxy";
+    description = "A web-interface for hipache-proxy";
     license = licenses.mit;
     homepage = https://github.com/emblica/airfield;
     maintainers = with maintainers; [offline];
diff --git a/pkgs/tools/networking/bwm-ng/default.nix b/pkgs/tools/networking/bwm-ng/default.nix
index c7376ad47b42..62dea1e6cd4f 100644
--- a/pkgs/tools/networking/bwm-ng/default.nix
+++ b/pkgs/tools/networking/bwm-ng/default.nix
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
   buildInputs = [ ncurses ];
 
   meta = with stdenv.lib; {
-    description = "Bandwidth Monitor NG is a small and simple console-based live network and disk io bandwidth monitor";
+    description = "A small and simple console-based live network and disk io bandwidth monitor";
     homepage = "http://www.gropp.org/?id=projects&sub=bwm-ng";
     license = licenses.gpl2;
     platforms = platforms.unix;
diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix
index 713fe40c1891..28f28c9a4f93 100644
--- a/pkgs/tools/networking/curl/default.nix
+++ b/pkgs/tools/networking/curl/default.nix
@@ -16,11 +16,11 @@ assert scpSupport -> libssh2 != null;
 assert c-aresSupport -> c-ares != null;
 
 stdenv.mkDerivation rec {
-  name = "curl-7.42.0";
+  name = "curl-7.42.1";
 
   src = fetchurl {
     url = "http://curl.haxx.se/download/${name}.tar.bz2";
-    sha256 = "13yhcqfksy2vwc4sjv97nv3cbd2pb2a8lnvv8g46qp1gail7sm9j";
+    sha256 = "11y8racpj6m4j9w7wa9sifmqvdgf22nk901sfkbxzhhy75rmk472";
   };
 
   # Zlib and OpenSSL must be propagated because `libcurl.la' contains
diff --git a/pkgs/tools/security/aide/default.nix b/pkgs/tools/security/aide/default.nix
index c1b6fe197a15..d190dff842ba 100644
--- a/pkgs/tools/security/aide/default.nix
+++ b/pkgs/tools/security/aide/default.nix
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     homepage = "http://aide.sourceforge.net/";
-    description = "Advanced Intrusion Detection Environment (AIDE) is a file and directory integrity checker";
+    description = "A file and directory integrity checker";
     license = licenses.free;
     maintainers = [ maintainers.tstrobel ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/text/html2text/default.nix b/pkgs/tools/text/html2text/default.nix
index 8fd0bea2254c..4f2eeb4be205 100644
--- a/pkgs/tools/text/html2text/default.nix
+++ b/pkgs/tools/text/html2text/default.nix
@@ -21,7 +21,7 @@ stdenv.mkDerivation {
   '';
 
   meta = {
-    description = "A command line utility, written in C++, that converts HTML documents into plain text";
+    description = "Convert HTML to plain text";
     homepage = http://www.mbayer.de/html2text/;
     license = stdenv.lib.licenses.gpl2Plus;
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/tools/video/rtmpdump/default.nix b/pkgs/tools/video/rtmpdump/default.nix
index 55240be19a44..552023278b6a 100644
--- a/pkgs/tools/video/rtmpdump/default.nix
+++ b/pkgs/tools/video/rtmpdump/default.nix
@@ -1,6 +1,6 @@
 { stdenv, fetchgit, zlib
-, gnutlsSupport ? true, gnutls ? null
-, opensslSupport ? false, openssl ? null
+, gnutlsSupport ? false, gnutls ? null
+, opensslSupport ? true, openssl ? null
 }:
 
 # Must have an ssl library enabled
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 1a560cdb97fd..66dc7b95a89e 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -715,6 +715,9 @@ let
 
   brasero = callPackage ../tools/cd-dvd/brasero { };
 
+  brltty = callPackage ../tools/misc/brltty {
+    alsaSupport = (!stdenv.isDarwin);
+  };
   bro = callPackage ../applications/networking/ids/bro { };
 
   bsod = callPackage ../misc/emulators/bsod { };
@@ -995,6 +998,7 @@ let
 
   clementine = callPackage ../applications/audio/clementine {
     boost = boost156;
+    gst_plugins = [ gst_plugins_base gst_plugins_good gst_plugins_ugly gst_ffmpeg ];
   };
 
   ciopfs = callPackage ../tools/filesystems/ciopfs { };
@@ -1557,6 +1561,11 @@ let
 
   grails = callPackage ../development/web/grails { jdk = null; };
 
+  gprof2dot = callPackage ../development/tools/profiling/gprof2dot {
+    # Using pypy provides significant performance improvements (~2x)
+    pythonPackages = pypyPackages;
+  };
+
   graphviz = callPackage ../tools/graphics/graphviz { };
 
   graphviz-nox = callPackage ../tools/graphics/graphviz {
@@ -1769,6 +1778,7 @@ let
 
   isl = callPackage ../development/libraries/isl { };
   isl_0_12 = callPackage ../development/libraries/isl/0.12.2.nix { };
+  isl_0_14 = callPackage ../development/libraries/isl/0.14.1.nix { };
 
   isync = callPackage ../tools/networking/isync { };
 
@@ -3369,6 +3379,7 @@ let
 
   ats = callPackage ../development/compilers/ats { };
   ats2 = callPackage ../development/compilers/ats2 { };
+  ats-extsolve = callPackage ../development/compilers/ats-extsolve { };
 
   avra = callPackage ../development/compilers/avra { };
 
@@ -3615,6 +3626,25 @@ let
       else null;
   }));
 
+  gcc51 = lowPrio (wrapCC (callPackage ../development/compilers/gcc/5.1 {
+    inherit noSysDirs;
+
+    # PGO seems to speed up compilation by gcc by ~10%, see #445 discussion
+    profiledCompiler = with stdenv; (!isDarwin && (isi686 || isx86_64));
+
+    # When building `gcc.crossDrv' (a "Canadian cross", with host == target
+    # and host != build), `cross' must be null but the cross-libc must still
+    # be passed.
+    cross = null;
+    libcCross = if crossSystem != null then libcCross else null;
+    libpthreadCross =
+      if crossSystem != null && crossSystem.config == "i586-pc-gnu"
+      then gnu.libpthreadCross
+      else null;
+
+    isl = isl_0_14;
+  }));
+
   gfortran = gfortran48;
 
   gfortran48 = wrapCC (gcc48.cc.override {
@@ -7238,6 +7268,12 @@ let
 
   newt = callPackage ../development/libraries/newt { };
 
+  nghttp2 = callPackage ../development/libraries/nghttp2 { };
+  libnghttp2 = nghttp2.override {
+    prefix = "lib";
+    fetchurl = fetchurlBoot;
+  };
+
   nix-plugins = callPackage ../development/libraries/nix-plugins {
     nix = pkgs.nixUnstable;
   };
@@ -9531,6 +9567,8 @@ let
 
   lvm2 = callPackage ../os-specific/linux/lvm2 { };
 
+  mbpfan = callPackage ../os-specific/linux/mbpfan { };
+
   mdadm = callPackage ../os-specific/linux/mdadm { };
 
   mingetty = callPackage ../os-specific/linux/mingetty { };
@@ -11593,6 +11631,8 @@ let
 
   pcmanfm = callPackage ../applications/misc/pcmanfm { };
 
+  pig = callPackage ../applications/networking/cluster/pig { };
+
   shotcut = callPackage ../applications/video/shotcut { mlt = mlt-qt5; };
 
   smplayer = callPackage ../applications/video/smplayer { };
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index e241fc6fc6da..cf3d239cc025 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -493,11 +493,11 @@ let
 
   application = buildPythonPackage rec {
     name = "python-application-${version}";
-    version = "1.4.1";
+    version = "1.5.0";
 
     src = pkgs.fetchurl {
       url = "https://pypi.python.org/packages/source/p/python-application/${name}.tar.gz";
-      sha256 = "3ae188e9dfd4bd63c9b43aebbf1d9de5df03fb5ac01e72f3bff5b41007570275";
+      sha256 = "9bc00c2c639bf633e2c5e08d4bf1bb5d7edaad6ccdd473692f0362df08f8aafc";
     };
   };
 
@@ -534,7 +534,7 @@ let
     };
 
     meta = with pkgs.stdenv.lib; {
-      description = "Advanced Python Scheduler (APScheduler) is a Python library that lets you schedule your Python code to be executed";
+      description = "A Python library that lets you schedule your Python code to be executed";
       homepage = http://pypi.python.org/pypi/APScheduler/;
       license = licenses.mit;
     };
@@ -777,7 +777,7 @@ let
     buildInputs = [ pkgs.lzma ];
 
     meta = {
-      describe = "Backport of Python 3.3's 'lzma' module for XZ/LZMA compressed files.";
+      describe = "Backport of Python 3.3's 'lzma' module for XZ/LZMA compressed files";
       homepage = https://github.com/peterjc/backports.lzma;
       license = stdenv.lib.licenses.bsd3;
     };
@@ -915,7 +915,7 @@ let
     };
 
     meta = {
-      description = "CalDAVCLientLibrary is a Python library and tool for CalDAV";
+      description = "A Python library and tool for CalDAV";
 
       longDescription = ''
         CalDAVCLientLibrary is a Python library and tool for CalDAV.
@@ -1688,7 +1688,7 @@ let
     };
 
     meta = with stdenv.lib; {
-      description = "This module implements a very fast JSON encoder/decoder for Python.";
+      description = "A very fast JSON encoder/decoder for Python";
       homepage    = "http://ag-projects.com/";
       license     = licenses.lgpl2;
       platforms   = platforms.all;
@@ -2920,17 +2920,17 @@ let
 
   eventlib = buildPythonPackage rec {
     name = "python-eventlib-${version}";
-    version = "0.2.0";
+    version = "0.2.1";
 
     src = pkgs.fetchurl {
       url = "http://download.ag-projects.com/SipClient/${name}.tar.gz";
-      sha256 = "0fld5lb85ql4a5bgc38sdxi5pgzqljysp1p8f7abxnd6vymh4rgi";
+      sha256 = "25224794420f430946fe46932718b521a6264903fe8c0ed3563dfdb844c623e7";
     };
 
     propagatedBuildInputs = with self; [ greenlet ];
 
     meta = with stdenv.lib; {
-      description = "Eventlib bindings for python.";
+      description = "Eventlib bindings for python";
       homepage    = "http://ag-projects.com/";
       license     = licenses.lgpl2;
       platforms   = platforms.all;
@@ -4685,7 +4685,7 @@ let
     buildInputs = with self; [ pkgs.git gevent geventhttpclient mock fastimport ];
 
     meta = with stdenv.lib; {
-      description = "Simple Python implementation of the Git file formats and protocols.";
+      description = "Simple Python implementation of the Git file formats and protocols";
       homepage = http://samba.org/~jelmer/dulwich/;
       license = licenses.gpl2Plus;
       maintainers = [ maintainers.koral ];
@@ -4705,7 +4705,7 @@ let
     propagatedBuildInputs = with self; [ pkgs.mercurial dulwich ];
 
     meta = with stdenv.lib; {
-      description = "Push and pull from a Git server using Mercurial.";
+      description = "Push and pull from a Git server using Mercurial";
       homepage = http://hg-git.github.com/;
       maintainers = [ maintainers.koral ];
     };
@@ -6337,6 +6337,26 @@ let
   };
 
 
+  le = buildPythonPackage rec {
+    name = "le-${version}";
+    version = "1.4.13";
+
+    src = pkgs.fetchFromGitHub {
+      owner = "logentries";
+      repo = "le";
+      rev = "v${version}";
+      sha256 = "12l6fqavykjinq286i9pgbbbrv5lq2mmiji91g0m05lfdx9pg4y1";
+    };
+
+    propagatedBuildInputs = with self; [ simplejson ];
+
+    meta = {
+      homepage = "https://github.com/logentries/le";
+      description = "Logentries agent";
+    };
+  };
+
+
   libcloud = buildPythonPackage (rec {
     name = "libcloud-0.14.1";
 
@@ -6527,7 +6547,7 @@ let
     #'';
 
     meta = {
-      description = "python-magic is a python interface to the libmagic file type identification library";
+      description = "A python interface to the libmagic file type identification library";
       homepage = https://github.com/ahupp/python-magic;
     };
   };
@@ -7059,11 +7079,11 @@ let
 
   msrplib = buildPythonPackage rec {
     name = "python-msrplib-${version}";
-    version = "0.15.0";
+    version = "0.17.0";
 
     src = pkgs.fetchurl {
-      url = "http://download.ag-projects.com/SipClient/${name}.tar.gz";
-      sha256 = "1sm03jcz663xkbhfmrk7rr5l3wlkydn8xs56fvqjxyapx0m5sw6f";
+      url = "http://download.ag-projects.com/MSRP/${name}.tar.gz";
+      sha256 = "fe6ee541fbb4380a5708d08f378724dbc93438ff35c0cd0400e31b070fce73c4";
     };
 
     propagatedBuildInputs = with self; [ eventlib application gnutls ];
@@ -9266,7 +9286,7 @@ let
 
     meta = {
       homepage = "https://launchpad.net/pygpgme";
-      description = "A Python wrapper for the GPGME library.";
+      description = "A Python wrapper for the GPGME library";
       license = licenses.lgpl21;
       maintainers = [ stdenv.lib.maintainers.garbas ];
     };
@@ -9418,7 +9438,7 @@ let
 
     meta = with stdenv.lib; {
       description = "JSON Web Token implementation in Python";
-      longDescription = "A Python implementation of JSON Web Token draft 01.";
+      longDescription = "A Python implementation of JSON Web Token draft 01";
       homepage = https://github.com/progrium/pyjwt;
       downloadPage = https://github.com/progrium/pyjwt/releases;
       license = licenses.mit;
@@ -9506,7 +9526,7 @@ let
 
     meta = {
       homepage = http://pyparsing.wikispaces.com/;
-      description = "The pyparsing module is an alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions.";
+      description = "An alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions";
     };
   };
 
@@ -11080,7 +11100,7 @@ let
     };
 
     meta = {
-      description = "simplejson is a simple, fast, extensible JSON encoder/decoder for Python";
+      description = "A simple, fast, extensible JSON encoder/decoder for Python";
 
       longDescription = ''
         simplejson is compatible with Python 2.4 and later with no
@@ -11451,14 +11471,14 @@ let
 
   sipsimple = buildPythonPackage rec {
     name = "sipsimple-${version}";
-    version = "2.3.1";
+    version = "2.4.0";
     disabled = isPy3k;
 
     configurePhase = "find -name 'configure' -exec chmod a+x {} \\; ; find -name 'aconfigure' -exec chmod a+x {} \\; ; ${python}/bin/${python.executable} setup.py build_ext --pjsip-clean-compile";
 
     src = pkgs.fetchurl {
       url = "http://download.ag-projects.com/SipClient/python-${name}.tar.gz";
-      sha256 = "1n3g1zg3zgdybikdla0qdqvpa06vn1ka2asr61lb8kk6xbvqkljv";
+      sha256 = "f66543c680f22aa3cf86f55373a01a2bb699366a1be5e257c417d018696b6840";
     };
 
     propagatedBuildInputs = with self; [ cython pkgs.openssl dns dateutil xcaplib msrplib lxml ];
@@ -13060,11 +13080,11 @@ let
 
   xcaplib = buildPythonPackage rec {
     name = "python-xcaplib-${version}";
-    version = "1.0.17";
+    version = "1.1.0";
 
     src = pkgs.fetchurl {
-      url = "http://download.ag-projects.com/SipClient/${name}.tar.gz";
-      sha256 = "1bf8n9ghmgxz8kjgnwy4y7ajijy5hi7viabgh0pvzkhz9gfvck86";
+      url = "http://download.ag-projects.com/XCAP/${name}.tar.gz";
+      sha256 = "2f8ea6fe7d005104ef1d854aa87bd8ee85ca242a70cde42f409f8e5557f864b3";
     };
 
     propagatedBuildInputs = with self; [ eventlib application ];
@@ -14351,7 +14371,7 @@ let
     LD_LIBRARY_PATH = "${pkgs.cairo}/lib";
 
     meta = {
-      description = "Graphite-web, without the interface. Just the rendering HTTP API.";
+      description = "Graphite-web, without the interface. Just the rendering HTTP API";
       homepage = https://github.com/brutasse/graphite-api;
       license = licenses.asl20;
     };
@@ -14604,7 +14624,7 @@ let
     buildInputs = with self; [ requests gevent ];
 
     meta = {
-      description = "GRequests allows you to use Requests with Gevent to make asynchronous HTTP Requests easily.";
+      description = "Asynchronous HTTP requests";
       homepage = https://github.com/kennethreitz/grequests;
       license = "bsd";
       maintainers = [ stdenv.lib.maintainers.matejc ];
@@ -14715,7 +14735,7 @@ let
     '';
     buildInputs = with self; [ pkgs.pkgconfig pkgs.e19.efl pkgs.e19.elementary ];
     meta = {
-      description = "Python bindings for EFL and Elementary.";
+      description = "Python bindings for EFL and Elementary";
       homepage = http://enlightenment.org/;
       maintainers = [ stdenv.lib.maintainers.matejc stdenv.lib.maintainers.tstrobel ];
       platforms = stdenv.lib.platforms.linux;
@@ -14996,7 +15016,7 @@ let
     };
 
     meta = {
-      description = "Thumbor is a smart imaging service. It enables on-demand crop, resizing and flipping of images.";
+      description = "A smart imaging service";
       homepage = https://github.com/globocom/thumbor/wiki;
       license = licenses.mit;
     };
@@ -15145,7 +15165,7 @@ let
 
     meta = {
       homepage = "https://github.com/erikrose/parsimonious";
-      description = "Fast arbitrary-lookahead packrat parser written in pure Python.";
+      description = "Fast arbitrary-lookahead packrat parser written in pure Python";
       license = licenses.mit;
     };
   };
@@ -15163,7 +15183,7 @@ let
 
     meta = {
       homepage = "https://networkx.github.io/";
-      description = "Library for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.";
+      description = "Library for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks";
       license = licenses.bsd3;
     };
   };