summary refs log tree commit diff
path: root/pkgs/development/tools
diff options
context:
space:
mode:
authorParnell Springmeyer <parnell@digitalmentat.com>2017-01-26 02:00:04 -0800
committerParnell Springmeyer <parnell@digitalmentat.com>2017-01-26 02:00:04 -0800
commita26a796d5c7fa305e007c2b5229e0521c8b3fb0f (patch)
tree6c35defae305b0da581f757b72b461a8f6052620 /pkgs/development/tools
parentad8fde5e5d9bc25a54ac238f485e28b37d6d185a (diff)
parent142696de884213e01cc518af813a20d2e2ece3cc (diff)
downloadnixpkgs-a26a796d5c7fa305e007c2b5229e0521c8b3fb0f.tar
nixpkgs-a26a796d5c7fa305e007c2b5229e0521c8b3fb0f.tar.gz
nixpkgs-a26a796d5c7fa305e007c2b5229e0521c8b3fb0f.tar.bz2
nixpkgs-a26a796d5c7fa305e007c2b5229e0521c8b3fb0f.tar.lz
nixpkgs-a26a796d5c7fa305e007c2b5229e0521c8b3fb0f.tar.xz
nixpkgs-a26a796d5c7fa305e007c2b5229e0521c8b3fb0f.tar.zst
nixpkgs-a26a796d5c7fa305e007c2b5229e0521c8b3fb0f.zip
Merging against master - updating smokingpig, rebase was going to be messy
Diffstat (limited to 'pkgs/development/tools')
-rw-r--r--pkgs/development/tools/analysis/frama-c/default.nix17
-rw-r--r--pkgs/development/tools/analysis/frama-c/dynamic.diff12
-rw-r--r--pkgs/development/tools/analysis/rr/default.nix8
-rw-r--r--pkgs/development/tools/apktool/default.nix21
-rw-r--r--pkgs/development/tools/build-managers/drake/Gemfile2
-rw-r--r--pkgs/development/tools/build-managers/drake/Gemfile.lock15
-rw-r--r--pkgs/development/tools/build-managers/drake/default.nix18
-rw-r--r--pkgs/development/tools/build-managers/drake/gemset.nix18
-rw-r--r--pkgs/development/tools/build-managers/gup/build.nix30
-rwxr-xr-xpkgs/development/tools/build-managers/gup/build.nix.gup6
-rw-r--r--pkgs/development/tools/build-managers/gup/default.nix26
-rw-r--r--pkgs/development/tools/build-managers/gup/src.json17
-rw-r--r--pkgs/development/tools/build-managers/rake/default.nix6
-rw-r--r--pkgs/development/tools/chefdk/default.nix4
-rw-r--r--pkgs/development/tools/compass/default.nix4
-rw-r--r--pkgs/development/tools/continuous-integration/cide/default.nix4
-rw-r--r--pkgs/development/tools/continuous-integration/gitlab-runner/default.nix8
-rw-r--r--pkgs/development/tools/gdm/default.nix25
-rw-r--r--pkgs/development/tools/gdm/deps.nix12
-rw-r--r--pkgs/development/tools/gtk-mac-bundler/default.nix31
-rw-r--r--pkgs/development/tools/guile/g-wrap/default.nix5
-rw-r--r--pkgs/development/tools/haskell/tinc/default.nix6
-rw-r--r--pkgs/development/tools/irony-server/default.nix26
-rw-r--r--pkgs/development/tools/java/jclasslib/default.nix2
-rw-r--r--pkgs/development/tools/manul/default.nix25
-rw-r--r--pkgs/development/tools/manul/deps.nix75
-rw-r--r--pkgs/development/tools/misc/gperf/3.0.x.nix33
-rw-r--r--pkgs/development/tools/misc/gperf/default.nix4
-rw-r--r--pkgs/development/tools/misc/swig/2.x.nix2
-rw-r--r--pkgs/development/tools/misc/swig/3.x.nix2
-rw-r--r--pkgs/development/tools/msgpack-tools/default.nix23
-rw-r--r--pkgs/development/tools/nimble/default.nix40
-rw-r--r--pkgs/development/tools/ocaml/camlidl/default.nix1
-rw-r--r--pkgs/development/tools/ocaml/camlp4/default.nix3
-rw-r--r--pkgs/development/tools/ocaml/js_of_ocaml/default.nix28
-rw-r--r--pkgs/development/tools/omniorb/default.nix4
-rw-r--r--pkgs/development/tools/packet/default.nix27
-rw-r--r--pkgs/development/tools/packet/deps.nix156
-rw-r--r--pkgs/development/tools/parsing/antlr/default.nix24
-rw-r--r--pkgs/development/tools/redis-dump/default.nix4
-rw-r--r--pkgs/development/tools/rhc/default.nix4
-rw-r--r--pkgs/development/tools/ronn/default.nix4
-rw-r--r--pkgs/development/tools/rtags/default.nix11
-rw-r--r--pkgs/development/tools/rubocop/Gemfile3
-rw-r--r--pkgs/development/tools/rubocop/Gemfile.lock27
-rw-r--r--pkgs/development/tools/rubocop/default.nix17
-rw-r--r--pkgs/development/tools/rubocop/gemset.nix69
-rw-r--r--pkgs/development/tools/sass/default.nix4
-rw-r--r--pkgs/development/tools/selenium/htmlunit-driver/default.nix25
-rw-r--r--pkgs/development/tools/selenium/server/default.nix7
-rw-r--r--pkgs/development/tools/vagrant/default.nix3
-rw-r--r--pkgs/development/tools/valadoc/default.nix6
-rw-r--r--pkgs/development/tools/vndr/default.nix23
-rw-r--r--pkgs/development/tools/xcbuild/default.nix8
-rw-r--r--pkgs/development/tools/xcbuild/wrapper.nix3
-rw-r--r--pkgs/development/tools/yarn/default.nix26
-rw-r--r--pkgs/development/tools/yuicompressor/default.nix8
57 files changed, 852 insertions, 170 deletions
diff --git a/pkgs/development/tools/analysis/frama-c/default.nix b/pkgs/development/tools/analysis/frama-c/default.nix
index fc817a8e391..a1239c6a121 100644
--- a/pkgs/development/tools/analysis/frama-c/default.nix
+++ b/pkgs/development/tools/analysis/frama-c/default.nix
@@ -1,6 +1,11 @@
-{ stdenv, fetchurl, ncurses, ocamlPackages, graphviz
+{ stdenv, fetchurl, makeWrapper, ncurses, ocamlPackages, graphviz
 , ltl2ba, coq, alt-ergo, why3 }:
 
+let
+  mkocamlpath = p: "${p}/lib/ocaml/${ocamlPackages.ocaml.version}/site-lib";
+  ocamlpath = "${mkocamlpath ocamlPackages.apron}:${mkocamlpath ocamlPackages.mlgmpidl}";
+in
+
 stdenv.mkDerivation rec {
   name    = "frama-c-${version}";
   version = "20160501";
@@ -16,9 +21,11 @@ stdenv.mkDerivation rec {
     sha256 = "1335bhq9v3h46m8aba2c5myi9ghm87q41in0m15xvdrwq5big1jg";
   };
 
+  nativeBuildInputs = [ makeWrapper ];
+
   buildInputs = with ocamlPackages; [
     ncurses ocaml findlib alt-ergo ltl2ba ocamlgraph
-    lablgtk coq graphviz zarith why3 zarith
+    lablgtk coq graphviz zarith why3 apron
   ];
 
 
@@ -38,11 +45,15 @@ stdenv.mkDerivation rec {
     FRAMAC=$out/bin/frama-c ./configure --prefix=$out
     make
     make install
+    for p in $out/bin/frama-c{,-gui};
+    do
+      wrapProgram $p --prefix OCAMLPATH ':' ${ocamlpath}
+    done
   '';
 
-
   # Enter frama-c directory before patching
   prePatch = ''cd frama*'';
+  patches = [ ./dynamic.diff ];
   postPatch = ''
     # strip absolute paths to /usr/bin
     for file in ./configure ./share/Makefile.common ./src/*/configure; do
diff --git a/pkgs/development/tools/analysis/frama-c/dynamic.diff b/pkgs/development/tools/analysis/frama-c/dynamic.diff
new file mode 100644
index 00000000000..7ab2b32de1e
--- /dev/null
+++ b/pkgs/development/tools/analysis/frama-c/dynamic.diff
@@ -0,0 +1,12 @@
+--- a/src/kernel_services/plugin_entry_points/dynamic.ml	2016-05-30 16:15:22.000000000 +0200
++++ b/src/kernel_services/plugin_entry_points/dynamic.ml	2016-10-13 18:25:31.000000000 +0200
+@@ -287,7 +287,8 @@
+         (List.fold_right (add_dir ~user:false) Config.plugin_dir []) ;
+     let pkgs = ref [] in
+     List.iter (scan_directory pkgs) !load_path ;
+-    let findlib_path = String.concat ":" !load_path in
++    let findlib_path = String.concat ":" (!load_path @
++      try [Sys.getenv "OCAMLPATH"] with Not_found -> []) in
+     Klog.debug ~dkey "setting findlib path to %s" findlib_path;
+     Findlib.init ~env_ocamlpath:findlib_path ();
+     load_packages (List.rev !pkgs) ;
diff --git a/pkgs/development/tools/analysis/rr/default.nix b/pkgs/development/tools/analysis/rr/default.nix
index 7606705edd8..11ba86724e6 100644
--- a/pkgs/development/tools/analysis/rr/default.nix
+++ b/pkgs/development/tools/analysis/rr/default.nix
@@ -1,14 +1,14 @@
 { stdenv, fetchFromGitHub, cmake, libpfm, zlib, pkgconfig, python2Packages, which, procps, gdb }:
 
 stdenv.mkDerivation rec {
-  version = "4.3.0";
+  version = "4.4.0";
   name = "rr-${version}";
 
   src = fetchFromGitHub {
     owner = "mozilla";
     repo = "rr";
     rev = version;
-    sha256 = "0hl59g6252zi1j9zng5x5gqlmdwa4gz7mbvz8h3b7z4gnn2q5l6c";
+    sha256 = "1ijzs5lwscg0k5ch1bljiqqh35rzai75xcgghgkjbz86ynmf62rd";
   };
 
   postPatch = ''
@@ -17,7 +17,9 @@ stdenv.mkDerivation rec {
     patchShebangs .
   '';
 
-  buildInputs = [ cmake libpfm zlib python2Packages.python pkgconfig python2Packages.pexpect which procps gdb ];
+  buildInputs = [
+    cmake libpfm zlib python2Packages.python pkgconfig python2Packages.pexpect which procps gdb
+  ];
   cmakeFlags = [
     "-DCMAKE_C_FLAGS_RELEASE:STRING="
     "-DCMAKE_CXX_FLAGS_RELEASE:STRING="
diff --git a/pkgs/development/tools/apktool/default.nix b/pkgs/development/tools/apktool/default.nix
index 9d97b0f9f31..4f87bcd1589 100644
--- a/pkgs/development/tools/apktool/default.nix
+++ b/pkgs/development/tools/apktool/default.nix
@@ -2,30 +2,25 @@
 
 stdenv.mkDerivation rec {
   name = "apktool-${version}";
-  version = "1.5.2";
+  version = "2.2.2";
 
   src = fetchurl {
-    url = "https://android-apktool.googlecode.com/files/apktool${version}.tar.bz2";
-    sha1 = "2dd828cf79467730c7406aa918f1da1bd21aaec8";
+    url = "https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_${version}.jar";
+    sha256 = "1a94jw0ml08xdwls1q9v5p1zak5qrbw2zyychnm5vch8znyws411";
   };
 
-  unpackCmd = ''
-    tar -xvf $src || true
-    cd apktool*
-  '';
-
-  phases = [ "unpackPhase" "installPhase" ];
+  phases = [ "installPhase" ];
 
-  buildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper ];
 
   sourceRoot = ".";
 
   installPhase = ''
-    install -D apktool.jar "$out/libexec/apktool/apktool.jar"
+    install -D ${src} "$out/libexec/apktool/apktool.jar"
     mkdir -p "$out/bin"
     makeWrapper "${jre}/bin/java" "$out/bin/apktool" \
         --add-flags "-jar $out/libexec/apktool/apktool.jar" \
-        --prefix PATH : "${buildTools}/build-tools/android-4.3/"
+        --prefix PATH : "${buildTools}/build-tools/25.0.1/"
   '';
 
   meta = with stdenv.lib; {
@@ -33,7 +28,7 @@ stdenv.mkDerivation rec {
     homepage    = https://code.google.com/p/android-apktool/;
     license     = licenses.asl20;
     maintainers = with maintainers; [ offline ];
-    platforms = with platforms; unix;
+    platforms   = with platforms; unix;
   };
 
 }
diff --git a/pkgs/development/tools/build-managers/drake/Gemfile b/pkgs/development/tools/build-managers/drake/Gemfile
new file mode 100644
index 00000000000..ddb13a65c16
--- /dev/null
+++ b/pkgs/development/tools/build-managers/drake/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'drake'
diff --git a/pkgs/development/tools/build-managers/drake/Gemfile.lock b/pkgs/development/tools/build-managers/drake/Gemfile.lock
new file mode 100644
index 00000000000..cf8900a30ee
--- /dev/null
+++ b/pkgs/development/tools/build-managers/drake/Gemfile.lock
@@ -0,0 +1,15 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    comp_tree (1.1.3)
+    drake (0.9.2.0.3.1)
+      comp_tree (>= 1.1.3)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  drake
+
+BUNDLED WITH
+   1.13.7
diff --git a/pkgs/development/tools/build-managers/drake/default.nix b/pkgs/development/tools/build-managers/drake/default.nix
new file mode 100644
index 00000000000..15a88b1fc31
--- /dev/null
+++ b/pkgs/development/tools/build-managers/drake/default.nix
@@ -0,0 +1,18 @@
+{ lib, bundlerEnv, ruby }:
+
+bundlerEnv {
+  name = "drake-0.9.2.0.3.1";
+
+  inherit ruby;
+  gemfile = ./Gemfile;
+  lockfile = ./Gemfile.lock;
+  gemset = ./gemset.nix;
+  
+  meta = with lib; {
+    description = "A branch of Rake supporting automatic parallelizing of tasks";
+    homepage = http://quix.github.io/rake/;
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = with maintainers; [ romildo ];
+  };
+}
diff --git a/pkgs/development/tools/build-managers/drake/gemset.nix b/pkgs/development/tools/build-managers/drake/gemset.nix
new file mode 100644
index 00000000000..fd5a6f06a2a
--- /dev/null
+++ b/pkgs/development/tools/build-managers/drake/gemset.nix
@@ -0,0 +1,18 @@
+{
+  comp_tree = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0dj9lkfxcczn67l1j12dcxswrfxxd1zgxa344zk6vqs2gwwhy9m9";
+      type = "gem";
+    };
+    version = "1.1.3";
+  };
+  drake = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09gkmdshwdmdnkdxi03dv4rk1dip0wdv6dx14wscrmi0jyk86yag";
+      type = "gem";
+    };
+    version = "0.9.2.0.3.1";
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/tools/build-managers/gup/build.nix b/pkgs/development/tools/build-managers/gup/build.nix
index a9af037bb81..b2a60c309b3 100644
--- a/pkgs/development/tools/build-managers/gup/build.nix
+++ b/pkgs/development/tools/build-managers/gup/build.nix
@@ -1,14 +1,30 @@
-# NOTE: this file is copied from the upstream repository for this package.
-# Please submit any changes you make here to https://github.com/timbertson/gup/
+# NOTE: the `nixpkgs` version of this file is copied from the upstream repository
+# for this package. Please make any changes to https://github.com/timbertson/gup/
 
-{ stdenv, lib, python, which, pychecker ? null }:
-{ src, version, meta ? {} }:
+{ stdenv, lib, pythonPackages }:
+{ src, version, meta ? {}, passthru ? {}, forceTests ? false }:
+let
+  testInputs = [
+    pythonPackages.mocktest or null
+    pythonPackages.whichcraft
+    pythonPackages.nose
+    pythonPackages.nose_progressive
+  ];
+  pychecker = pythonPackages.pychecker or null;
+  usePychecker = forceTests || pychecker != null;
+  enableTests = forceTests || (lib.all (dep: dep != null) testInputs);
+in
 stdenv.mkDerivation {
-  inherit src meta;
+  inherit src meta passthru;
   name = "gup-${version}";
-  buildInputs = lib.remove null [ python which pychecker ];
-  SKIP_PYCHECKER = pychecker == null;
+  buildInputs = [ pythonPackages.python ]
+    ++ (lib.optionals enableTests testInputs)
+    ++ (lib.optional usePychecker pychecker)
+  ;
+  SKIP_PYCHECKER = !usePychecker;
   buildPhase = "make python";
+  inherit pychecker;
+  testPhase = if enableTests then "make test" else "true";
   installPhase = ''
     mkdir $out
     cp -r python/bin $out/bin
diff --git a/pkgs/development/tools/build-managers/gup/build.nix.gup b/pkgs/development/tools/build-managers/gup/build.nix.gup
new file mode 100755
index 00000000000..915d4287566
--- /dev/null
+++ b/pkgs/development/tools/build-managers/gup/build.nix.gup
@@ -0,0 +1,6 @@
+#!/bin/bash
+set -eu
+if [ -n "${GUP_TARGET:-}" ]; then
+	gup --always
+fi
+curl -LSs -o "$1" https://raw.githubusercontent.com/timbertson/gup/master/nix/gup-python.nix
diff --git a/pkgs/development/tools/build-managers/gup/default.nix b/pkgs/development/tools/build-managers/gup/default.nix
index 8e85c63cb6e..e73beb03164 100644
--- a/pkgs/development/tools/build-managers/gup/default.nix
+++ b/pkgs/development/tools/build-managers/gup/default.nix
@@ -1,21 +1,21 @@
-{ stdenv, fetchFromGitHub, lib, python, which }:
-let
-  version = "0.5.5";
-  src = fetchFromGitHub {
-    sha256 = "12yv0j333z6jkaaal8my3jx3k4ml9hq8ldis5zfvr8179d4xah7q";
-    rev = "version-${version}";
-    repo = "gup";
-    owner = "timbertson";
-  };
-in
+{ stdenv, fetchFromGitHub, lib, pythonPackages, nix-update-source, curl }:
 import ./build.nix
-  { inherit stdenv lib python which; }
-  { inherit src version;
+  { inherit stdenv lib pythonPackages; }
+  { inherit (nix-update-source.fetch ./src.json) src version;
     meta = {
-      inherit (src.meta) homepage;
+      homepage = https://github.com/timbertson/gup/;
       description = "A better make, inspired by djb's redo";
       license = stdenv.lib.licenses.lgpl2Plus;
       maintainers = [ stdenv.lib.maintainers.timbertson ];
       platforms = stdenv.lib.platforms.all;
     };
+    passthru = {
+      updateScript = ''
+        set -e
+        echo
+        cd ${toString ./.}
+        ${nix-update-source}/bin/nix-update-source --prompt version src.json
+        ./build.nix.gup build.nix
+      '';
+    };
   }
diff --git a/pkgs/development/tools/build-managers/gup/src.json b/pkgs/development/tools/build-managers/gup/src.json
new file mode 100644
index 00000000000..6b9719a3076
--- /dev/null
+++ b/pkgs/development/tools/build-managers/gup/src.json
@@ -0,0 +1,17 @@
+{
+  "fetch": {
+    "args": {
+      "owner": "timbertson",
+      "repo": "gup",
+      "rev": "version-0.6.0",
+      "sha256": "053xnx39jh9kn9l572z4k0q7bbxjpisf1fm9aq27ybj2ha1rh6wr"
+    },
+    "fn": "fetchFromGitHub",
+    "rev": "version-0.6.0",
+    "version": "0.6.0"
+  },
+  "owner": "timbertson",
+  "repo": "gup",
+  "rev": "version-{version}",
+  "type": "fetchFromGitHub"
+}
\ No newline at end of file
diff --git a/pkgs/development/tools/build-managers/rake/default.nix b/pkgs/development/tools/build-managers/rake/default.nix
index 3cf85b5fcb5..db7c987465a 100644
--- a/pkgs/development/tools/build-managers/rake/default.nix
+++ b/pkgs/development/tools/build-managers/rake/default.nix
@@ -4,10 +4,8 @@ bundlerEnv {
   name = "rake-11.1.1";
 
   inherit ruby;
-  gemfile = ./Gemfile;
-  lockfile = ./Gemfile.lock;
-  gemset = ./gemset.nix;
-  
+  gemdir = ./.;
+
   meta = with lib; {
     description = "A software task management and build automation tool";
     homepage = https://github.com/ruby/rake;
diff --git a/pkgs/development/tools/chefdk/default.nix b/pkgs/development/tools/chefdk/default.nix
index 80f9ef56abc..880d0ddcc74 100644
--- a/pkgs/development/tools/chefdk/default.nix
+++ b/pkgs/development/tools/chefdk/default.nix
@@ -4,9 +4,7 @@ bundlerEnv {
   name = "chefdk-0.11.2";
 
   inherit ruby;
-  gemfile = ./Gemfile;
-  lockfile = ./Gemfile.lock;
-  gemset = ./gemset.nix;
+  gemdir = ./.;
 
   buildInputs = [ perl autoconf ];
 
diff --git a/pkgs/development/tools/compass/default.nix b/pkgs/development/tools/compass/default.nix
index 9b21ec48c1c..f96d3e810ca 100644
--- a/pkgs/development/tools/compass/default.nix
+++ b/pkgs/development/tools/compass/default.nix
@@ -4,9 +4,7 @@ bundlerEnv {
   name = "compass-1.0.3";
 
   inherit ruby;
-  gemfile = ./Gemfile;
-  lockfile = ./Gemfile.lock;
-  gemset = ./gemset.nix;
+  gemdir = ./.;
 
   meta = with lib; {
     description = "Stylesheet Authoring Environment that makes your website design simpler to implement and easier to maintain";
diff --git a/pkgs/development/tools/continuous-integration/cide/default.nix b/pkgs/development/tools/continuous-integration/cide/default.nix
index 1ed752fb393..932a02cf2bc 100644
--- a/pkgs/development/tools/continuous-integration/cide/default.nix
+++ b/pkgs/development/tools/continuous-integration/cide/default.nix
@@ -7,9 +7,7 @@ stdenv.mkDerivation rec {
   env = bundlerEnv {
     name = "${name}-gems";
 
-    gemfile = ./Gemfile;
-    lockfile = ./Gemfile.lock;
-    gemset = ./gemset.nix;
+    gemdir = ./.;
   };
 
   phases = ["installPhase"];
diff --git a/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix b/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix
index 1338201b996..c2e105d469e 100644
--- a/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix
+++ b/pkgs/development/tools/continuous-integration/gitlab-runner/default.nix
@@ -1,16 +1,16 @@
 { lib, buildGoPackage, fetchFromGitLab, fetchurl, go-bindata }:
 
 let
-  version = "1.9.0";
+  version = "1.10.0";
   # Gitlab runner embeds some docker images these are prebuilt for arm and x86_64
   docker_x86_64 = fetchurl {
     url = "https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v${version}/docker/prebuilt-x86_64.tar.xz";
-    sha256 = "12hcpvc0j6g200qhz12gfsslngbqx4sifrikr05vh2av17hba25s";
+    sha256 = "1fv4sv92ng4gx53pbpagb6kv2hdab04lf2chsflf10xgzqw5l521";
   };
 
   docker_arm = fetchurl {
     url = "https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/v${version}/docker/prebuilt-arm.tar.xz";
-    sha256 = "1hqwhg94g514g0ad4h0h7wh7k5clm9i7whzr6c30i8yb00ga628s";
+    sha256 = "153dbgk6fvl73d5qhainqr9hzicsryc6ynlryi9si40ld82flrsr";
   };
 in
 buildGoPackage rec {
@@ -29,7 +29,7 @@ buildGoPackage rec {
     owner = "gitlab-org";
     repo = "gitlab-ci-multi-runner";
     rev = "v${version}";
-    sha256 = "1b30daxnpn1psy3vds1m4mnbl2hmvr2bc0zrd3nn9xm3xacm3dqj";
+    sha256 = "0ma6b6624c8218cz4gg5pr077li7nbs0v3mpgr1hxq7v465spa7j";
   };
 
   buildInputs = [ go-bindata ];
diff --git a/pkgs/development/tools/gdm/default.nix b/pkgs/development/tools/gdm/default.nix
new file mode 100644
index 00000000000..35328fdf66c
--- /dev/null
+++ b/pkgs/development/tools/gdm/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "gdm-${version}";
+  version = "1.4";
+
+  goPackagePath = "github.com/sparrc/gdm";
+
+  src = fetchFromGitHub {
+    owner = "sparrc";
+    repo = "gdm";
+    rev = version;
+    sha256 = "0kpqmbg144qcvd8k88j9yx9lrld85ray2viw161xajafk16plvld";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "Minimalist dependency manager for Go written in Go.";
+    homepage = https://github.com/sparrc/gdm;
+    license = licenses.unlicense;
+    platforms = platforms.all;
+    maintainers = [ maintainers.mic92 ];
+  };
+}
diff --git a/pkgs/development/tools/gdm/deps.nix b/pkgs/development/tools/gdm/deps.nix
new file mode 100644
index 00000000000..62a3df65e3a
--- /dev/null
+++ b/pkgs/development/tools/gdm/deps.nix
@@ -0,0 +1,12 @@
+# This file was generated by go2nix.
+[
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "0d047c8d5a8c3a1c89d9d78511f4ed7aef49ea0c";
+      sha256 = "0ahyxvqy25zpyppmrb7vsad332gmq2cdi7hb0si6ni0cmrlqcfwr";
+    };
+  }
+]
diff --git a/pkgs/development/tools/gtk-mac-bundler/default.nix b/pkgs/development/tools/gtk-mac-bundler/default.nix
new file mode 100644
index 00000000000..6a16a0372c1
--- /dev/null
+++ b/pkgs/development/tools/gtk-mac-bundler/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "gtk-mac-bundler-${version}";
+  version = "0.7.4";
+
+  src = fetchFromGitHub {
+    owner = "GNOME";
+    repo = "gtk-mac-bundler";
+    rev = "bundler-${version}";
+    sha256 = "1kyyq2hc217i5vhbfff0ldgv0r3aziwryd1xlck5cw3s6hgskbza";
+  };
+
+  installPhase = ''
+  	mkdir -p $out/bin
+    substitute gtk-mac-bundler.in $out/bin/gtk-mac-bundler \
+      --subst-var-by PATH $out/share
+    chmod a+x $out/bin/gtk-mac-bundler
+
+    mkdir -p $out/share
+    cp -r bundler $out/share
+  '';
+
+  meta = with lib; {
+    description = "a helper script that creates application bundles form GTK+ executables for Mac OS X";
+    maintainers = [ maintainers.matthewbauer ];
+    platforms = platforms.darwin;
+    homepage = https://wiki.gnome.org/Projects/GTK+/OSX/Bundling;
+    license = licenses.gpl2;
+  };
+}
diff --git a/pkgs/development/tools/guile/g-wrap/default.nix b/pkgs/development/tools/guile/g-wrap/default.nix
index a1564859e84..030693714f0 100644
--- a/pkgs/development/tools/guile/g-wrap/default.nix
+++ b/pkgs/development/tools/guile/g-wrap/default.nix
@@ -9,12 +9,11 @@ stdenv.mkDerivation rec {
 
   # Note: Glib support is optional, but it's quite useful (e.g., it's
   # used by Guile-GNOME).
-  buildInputs = [ guile pkgconfig glib ]
-    ++ stdenv.lib.optional doCheck guile_lib;
+  buildInputs = [ guile pkgconfig glib guile_lib ];
 
   propagatedBuildInputs = [ libffi ];
 
-  doCheck = !stdenv.isFreeBSD; # XXX: 00-socket.test hangs
+  doCheck = true;
 
   meta = {
     description = "G-Wrap, a wrapper generator for Guile";
diff --git a/pkgs/development/tools/haskell/tinc/default.nix b/pkgs/development/tools/haskell/tinc/default.nix
index 82d6492ce18..c35002c3311 100644
--- a/pkgs/development/tools/haskell/tinc/default.nix
+++ b/pkgs/development/tools/haskell/tinc/default.nix
@@ -7,12 +7,12 @@
 }:
 mkDerivation {
   pname = "tinc";
-  version = "20161102";
+  version = "20161119";
   src = fetchFromGitHub {
     owner = "sol";
     repo = "tinc";
-    rev = "411d0f319717d01dc71bd5c1faef8035656eaf3d";
-    sha256 = "040vyg9n7ihnqs6fyhhr5p4xscfxhji02wsfw4nncpxflzaciji5";
+    rev = "8e31ed920ad1660b3bc458b4f6b281bacaf4bd14";
+    sha256 = "0y9pvr20p9z4dddbfxgy9hl3ny7pxixxjg8ij7g8l14br6mcak30";
   };
   isLibrary = false;
   isExecutable = true;
diff --git a/pkgs/development/tools/irony-server/default.nix b/pkgs/development/tools/irony-server/default.nix
new file mode 100644
index 00000000000..ac5495b98d9
--- /dev/null
+++ b/pkgs/development/tools/irony-server/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, fetchgit, cmake, llvmPackages, irony }:
+
+stdenv.mkDerivation rec {
+  name = "irony-server-${version}";
+  inherit (irony) version;
+
+  buildInputs = [ cmake llvmPackages.clang ];
+
+  dontUseCmakeBuildDir = true;
+
+  cmakeDir = "server";
+
+  cmakeFlags = [
+    ''-DCMAKE_PREFIX_PATH=${llvmPackages.clang.cc}''
+  ];
+
+  src = irony.src;
+
+  meta = {
+    description = "The server part of irony.";
+    homepage = "https://melpa.org/#/irony";
+    maintainers = [ stdenv.lib.maintainers.deepfire ];
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.free;
+  };
+}
diff --git a/pkgs/development/tools/java/jclasslib/default.nix b/pkgs/development/tools/java/jclasslib/default.nix
index cb3f6164b02..1d8ae80572a 100644
--- a/pkgs/development/tools/java/jclasslib/default.nix
+++ b/pkgs/development/tools/java/jclasslib/default.nix
@@ -5,7 +5,7 @@ stdenv.mkDerivation {
   builder = ./builder.sh;
   src = fetchurl {
     url = mirror://sourceforge/jclasslib/jclasslib_unix_2_0.tar.gz;
-    md5 = "31d91bb03fee23410689d2f1c4c439b1";
+    sha256 = "1y2fbg5h2p3fwcp7h5n1qib7x9svyrilq3i58vm6vany1xzg7nx5";
   };
 
   inherit jre xpf ant;
diff --git a/pkgs/development/tools/manul/default.nix b/pkgs/development/tools/manul/default.nix
new file mode 100644
index 00000000000..c4df52da170
--- /dev/null
+++ b/pkgs/development/tools/manul/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "manul-unstable-2016-09-30";
+
+  goPackagePath = "github.com/kovetskiy/manul";
+  excludedPackages = "tests";
+
+  src = fetchFromGitHub {
+    owner = "kovetskiy";
+    repo = "manul";
+    rev = "7bddb5404b9ecc66fd28075bb899c2d6dc7a1c51";
+    sha256 = "06kglxdgj1dfpc9bdnvhsh8z0c1pdbmwmfx4km01wpppzk06dnvm";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with stdenv.lib; {
+    description = "The madness vendoring utility for Golang programs";
+    homepage = https://github.com/kovetskiy/manul;
+    license = licenses.mit;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.mic92 ];
+  };
+}
diff --git a/pkgs/development/tools/manul/deps.nix b/pkgs/development/tools/manul/deps.nix
new file mode 100644
index 00000000000..e99a597b078
--- /dev/null
+++ b/pkgs/development/tools/manul/deps.nix
@@ -0,0 +1,75 @@
+# This file was generated by go2nix.
+[
+  {
+    goPackagePath = "github.com/PuerkitoBio/goquery";
+    fetch = {
+      type = "git";
+      url = "https://github.com/PuerkitoBio/goquery";
+      rev = "3cb3b8656883c2cc3deb9c643d93ea6e5157e425";
+      sha256 = "0qhyssjwv98jncsiph95iz77sygkismvpprsalqi3xm3k50xi6r7";
+    };
+  }
+  {
+    goPackagePath = "github.com/andybalholm/cascadia";
+    fetch = {
+      type = "git";
+      url = "https://github.com/andybalholm/cascadia";
+      rev = "349dd0209470eabd9514242c688c403c0926d266";
+      sha256 = "12ikz849vkdb3dsdn6mdpkihvm0hbmkplyi0qdcm7s4ib4n003b1";
+    };
+  }
+  {
+    goPackagePath = "github.com/kovetskiy/godocs";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kovetskiy/godocs";
+      rev = "2d9428f80f3442e07f67daf7ba378cd0ff6cfe24";
+      sha256 = "128dlvxqk31crzl9p3ps0nir724cjzxv4lxpgdvsir0wvfp8f83j";
+    };
+  }
+  {
+    goPackagePath = "github.com/reconquest/executil-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/reconquest/executil-go";
+      rev = "e72bce509b1a5e89ab21f29c92830d4304620765";
+      sha256 = "06z05hl4bym5agv0h1vgksj0mx0l4987ganwqcfb153w7pclvan3";
+    };
+  }
+  {
+    goPackagePath = "github.com/reconquest/hierr-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/reconquest/hierr-go";
+      rev = "bbf802f3f943e7b6a364a485ccf90807f3bfcc0e";
+      sha256 = "1v3fssw881vcawc2abvp8abwb7705yzxrb0khbzmn8qvdpqwh7hl";
+    };
+  }
+  {
+    goPackagePath = "github.com/reconquest/ser-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/reconquest/ser-go";
+      rev = "47f084a1e4a5433ac3d6ab6cfe8c1e30028a4d76";
+      sha256 = "1hgafiqc3mlazs2zg4rqjm4sasy2gjrjl64cy8mmlg5cayvbj4hq";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev = "c197bcf24cde29d3f73c7b4ac6fd41f4384e8af6";
+      sha256 = "1y2bbghi594m8p4pcm9pwrzql06179xj6zvhaghwcc6y0l48rbgp";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "6acef71eb69611914f7a30939ea9f6e194c78172";
+      sha256 = "1fcsv50sbq0lpzrhx3m9jw51wa255fsbqjwsx9iszq4d0gysnnvc";
+    };
+  }
+]
diff --git a/pkgs/development/tools/misc/gperf/3.0.x.nix b/pkgs/development/tools/misc/gperf/3.0.x.nix
new file mode 100644
index 00000000000..bfada264d50
--- /dev/null
+++ b/pkgs/development/tools/misc/gperf/3.0.x.nix
@@ -0,0 +1,33 @@
+{stdenv, fetchurl}:
+
+stdenv.mkDerivation rec {
+  name = "gperf-3.0.4";
+
+  src = fetchurl {
+    url = "mirror://gnu/gperf/${name}.tar.gz";
+    sha256 = "0gnnm8iqcl52m8iha3sxrzrl9mcyhg7lfrhhqgdn4zj00ji14wbn";
+  };
+
+  meta = {
+    description = "Perfect hash function generator";
+
+    longDescription = ''
+      GNU gperf is a perfect hash function generator.  For a given
+      list of strings, it produces a hash function and hash table, in
+      form of C or C++ code, for looking up a value depending on the
+      input string.  The hash function is perfect, which means that
+      the hash table has no collisions, and the hash table lookup
+      needs a single string comparison only.
+
+      GNU gperf is highly customizable.  There are options for
+      generating C or C++ code, for emitting switch statements or
+      nested ifs instead of a hash table, and for tuning the algorithm
+      employed by gperf.
+    '';
+
+    license = stdenv.lib.licenses.gpl3Plus;
+
+    homepage = http://www.gnu.org/software/gperf/;
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/development/tools/misc/gperf/default.nix b/pkgs/development/tools/misc/gperf/default.nix
index bfada264d50..b88a107bdbc 100644
--- a/pkgs/development/tools/misc/gperf/default.nix
+++ b/pkgs/development/tools/misc/gperf/default.nix
@@ -1,11 +1,11 @@
 {stdenv, fetchurl}:
 
 stdenv.mkDerivation rec {
-  name = "gperf-3.0.4";
+  name = "gperf-3.1";
 
   src = fetchurl {
     url = "mirror://gnu/gperf/${name}.tar.gz";
-    sha256 = "0gnnm8iqcl52m8iha3sxrzrl9mcyhg7lfrhhqgdn4zj00ji14wbn";
+    sha256 = "1qispg6i508rq8pkajh26cznwimbnj06wq9sd85vg95v8nwld1aq";
   };
 
   meta = {
diff --git a/pkgs/development/tools/misc/swig/2.x.nix b/pkgs/development/tools/misc/swig/2.x.nix
index 48ba12ccd9c..21da4b21a4b 100644
--- a/pkgs/development/tools/misc/swig/2.x.nix
+++ b/pkgs/development/tools/misc/swig/2.x.nix
@@ -14,6 +14,8 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ autoconf automake libtool bison ];
   buildInputs = [ pcre ];
 
+  configureFlags = "--without-tcl";
+
   postPatch = ''
     # Disable ccache documentation as it need yodl
     sed -i '/man1/d' CCache/Makefile.in
diff --git a/pkgs/development/tools/misc/swig/3.x.nix b/pkgs/development/tools/misc/swig/3.x.nix
index 2d5358b2255..dfcfe7c9e89 100644
--- a/pkgs/development/tools/misc/swig/3.x.nix
+++ b/pkgs/development/tools/misc/swig/3.x.nix
@@ -14,6 +14,8 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ autoconf automake libtool bison ];
   buildInputs = [ pcre ];
 
+  configureFlags = "--without-tcl";
+
   postPatch = ''
     # Disable ccache documentation as it need yodl
     sed -i '/man1/d' CCache/Makefile.in
diff --git a/pkgs/development/tools/msgpack-tools/default.nix b/pkgs/development/tools/msgpack-tools/default.nix
new file mode 100644
index 00000000000..d83be1c1431
--- /dev/null
+++ b/pkgs/development/tools/msgpack-tools/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, fetchFromGitHub, cmake }:
+
+stdenv.mkDerivation rec {
+  name = "msgpack-tools-${version}";
+  version = "v0.6";
+
+  src = fetchFromGitHub {
+    owner = "ludocode";
+    repo = "msgpack-tools";
+    rev = version;
+    sha256 = "1ygjk25zlpqjckxgqmahnz999704zy2bd9id6hp5jych1szkjgs5";
+  };
+
+  buildInputs = [ cmake ];
+
+  meta = with stdenv.lib; {
+    description = "Command-line tools for converting between MessagePack and JSON";
+    homepage = https://github.com/ludocode/msgpack-tools;
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ alibabzo ];
+  };
+}
diff --git a/pkgs/development/tools/nimble/default.nix b/pkgs/development/tools/nimble/default.nix
deleted file mode 100644
index d3248d6219e..00000000000
--- a/pkgs/development/tools/nimble/default.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ stdenv, fetchFromGitHub, nim, openssl }:
-
-stdenv.mkDerivation rec {
-  name = "nimble-${version}";
-
-  version = "0.7.10";
-
-  src = fetchFromGitHub {
-    owner = "nim-lang";
-    repo = "nimble";
-    rev = "v${version}";
-    sha256 = "1bcv8chir73nn6x7q8n3sw2scf3m0x2w9gkkzx162ryivza1nm1r";
-  };
-
-  buildInputs = [ nim openssl ];
-
-  patchPhase = ''
-    substituteInPlace src/nimble.nim.cfg --replace "./vendor/nim" "${nim}/share"
-    echo "--clib:crypto" >> src/nimble.nim.cfg
-  '';
-
-  buildPhase = ''
-    cd src && nim c -d:release nimble
-  '';
-
-  installPhase = ''
-    mkdir -p $out/bin
-    cp nimble $out/bin
-  '';
-
-  dontStrip = true;
-
-  meta = with stdenv.lib; {
-    description = "Package manager for the Nim programming language";
-    homepage = https://github.com/nim-lang/nimble;
-    license = licenses.bsd2;
-    maintainers = with maintainers; [ kamilchm ];
-    platforms = platforms.linux ++ platforms.darwin;
-  };
-}
diff --git a/pkgs/development/tools/ocaml/camlidl/default.nix b/pkgs/development/tools/ocaml/camlidl/default.nix
index feedd883548..780862b6727 100644
--- a/pkgs/development/tools/ocaml/camlidl/default.nix
+++ b/pkgs/development/tools/ocaml/camlidl/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
     substituteInPlace config/Makefile --replace BINDIR=/usr/local/bin BINDIR=$out
     substituteInPlace config/Makefile --replace OCAMLLIB=/usr/local/lib/ocaml OCAMLLIB=$out/lib/ocaml/${ocaml.version}/site-lib/camlidl
     substituteInPlace config/Makefile --replace CPP=/lib/cpp CPP=${stdenv.cc}/bin/cpp
+    substituteInPlace config/Makefile --replace "OCAMLC=ocamlc -g" "OCAMLC=ocamlc -g -warn-error -31"
     mkdir -p $out/lib/ocaml/${ocaml.version}/site-lib/camlidl/caml
   '';
 
diff --git a/pkgs/development/tools/ocaml/camlp4/default.nix b/pkgs/development/tools/ocaml/camlp4/default.nix
index 1e1d2eb68ea..a257a88287c 100644
--- a/pkgs/development/tools/ocaml/camlp4/default.nix
+++ b/pkgs/development/tools/ocaml/camlp4/default.nix
@@ -7,6 +7,9 @@ let param = {
   "4.03.0" = {
      version = "4.03+1";
      sha256 = "1f2ndch6f1m4fgnxsjb94qbpwjnjgdlya6pard44y6n0dqxi1wsq"; };
+  "4.04.0" = {
+     version = "4.04+1";
+     sha256 = "1ad7rygqjxrc1im95gw9lp8q83nhdaf383f2808f1p63yl42xm7k"; };
   }."${ocaml.version}";
 in
 
diff --git a/pkgs/development/tools/ocaml/js_of_ocaml/default.nix b/pkgs/development/tools/ocaml/js_of_ocaml/default.nix
index 33a7fe52c39..81cd2caf7ee 100644
--- a/pkgs/development/tools/ocaml/js_of_ocaml/default.nix
+++ b/pkgs/development/tools/ocaml/js_of_ocaml/default.nix
@@ -1,16 +1,26 @@
-{ stdenv, fetchurl, ocaml, findlib, ocaml_lwt, menhir, ocsigen_deriving, ppx_deriving, camlp4,
- cmdliner, tyxml, reactivedata, cppo, which, base64}:
+{ stdenv, fetchurl, ocaml, findlib, ocaml_lwt, menhir, ocsigen_deriving, ppx_deriving, camlp4, ocamlbuild
+, cmdliner, tyxml, reactivedata, cppo, which, base64, uchar
+}:
+
+let version = if stdenv.lib.versionAtLeast ocaml.version "4.02"
+  then "2.8.3" else "2.7";
+in
 
 stdenv.mkDerivation {
-  name = "js_of_ocaml-2.7";
+  name = "js_of_ocaml-${version}";
   src = fetchurl {
-    url = https://github.com/ocsigen/js_of_ocaml/archive/2.7.tar.gz;
-    sha256 = "1dali1akyd4zmkwav0d957ynxq2jj6cc94r4xiaql7ca89ajz4jj";
-    };
+    url = "https://github.com/ocsigen/js_of_ocaml/archive/${version}.tar.gz";
+    sha256 = {
+      "2.7" = "1dali1akyd4zmkwav0d957ynxq2jj6cc94r4xiaql7ca89ajz4jj";
+      "2.8.3" = "0xrw215w5saqdcdd9ipjhvg8f982z63znsds9ih445s3jr49szm7";
+    }."${version}";
+  };
 
-  buildInputs = [ ocaml findlib menhir ocsigen_deriving
-                 cmdliner tyxml reactivedata cppo which base64];
-  propagatedBuildInputs = [ ocaml_lwt camlp4 ppx_deriving ];
+  buildInputs = [ ocaml findlib menhir ocsigen_deriving ocamlbuild
+                 cmdliner reactivedata cppo which base64 ]
+  ++ stdenv.lib.optional (stdenv.lib.versionAtLeast ocaml.version "4.02") tyxml;
+  propagatedBuildInputs = [ ocaml_lwt camlp4 ppx_deriving ]
+  ++ stdenv.lib.optional (version == "2.8.3") uchar;
 
   patches = [ ./Makefile.conf.diff ];
 
diff --git a/pkgs/development/tools/omniorb/default.nix b/pkgs/development/tools/omniorb/default.nix
index 8488d47dea5..821401d578c 100644
--- a/pkgs/development/tools/omniorb/default.nix
+++ b/pkgs/development/tools/omniorb/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, python }:
+{ stdenv, fetchurl, python2 }:
 stdenv.mkDerivation rec {
 
   name = "omniorb-${version}";
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     sha256 = "1g58xcw4641wyisp9wscrkzaqrz0vf123dgy52qq2a3wk7y77hkl";
   };
 
-  buildInputs = [ python ];
+  buildInputs = [ python2 ];
 
   hardeningDisable = [ "format" ];
 
diff --git a/pkgs/development/tools/packet/default.nix b/pkgs/development/tools/packet/default.nix
new file mode 100644
index 00000000000..eb1a48d24b8
--- /dev/null
+++ b/pkgs/development/tools/packet/default.nix
@@ -0,0 +1,27 @@
+# This file was generated by go2nix.
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "packet-${version}";
+  version = "20161215-${stdenv.lib.strings.substring 0 7 rev}";
+  rev = "2b8f07ae2246e1a96e007233419867fa0d6747f9";
+
+  goPackagePath = "github.com/ebsarr/packet";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "ebsarr";
+    repo = "packet";
+    sha256 = "1wchrm96ly5m1rcy9d51fs3xjswh746r27hgc410rksiahanzhff";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = {
+    description = "a CLI tool to manage packet.net services";
+    homepage = https://github.com/ebsarr/packet;
+    license = stdenv.lib.licenses.mit;
+    maintainers = [ stdenv.lib.maintainers.grahamc ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/development/tools/packet/deps.nix b/pkgs/development/tools/packet/deps.nix
new file mode 100644
index 00000000000..0c7fee1a11a
--- /dev/null
+++ b/pkgs/development/tools/packet/deps.nix
@@ -0,0 +1,156 @@
+# This file was generated by go2nix.
+[
+  {
+    goPackagePath = "github.com/cpuguy83/go-md2man";
+    fetch = {
+      type = "git";
+      url = "https://github.com/cpuguy83/go-md2man";
+      rev = "a65d4d2de4d5f7c74868dfa9b202a3c8be315aaa";
+      sha256 = "1rm3zjrmfpzy0l3qp02xmd5pqzl77pdql9pbxhl0k1qw2vfzrjv6";
+    };
+  }
+  {
+    goPackagePath = "github.com/fsnotify/fsnotify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/fsnotify/fsnotify";
+      rev = "fd9ec7deca8bf46ecd2a795baaacf2b3a9be1197";
+      sha256 = "0jf7zmkypfl6v24xxnv12w55384diyabfp2m7ibafgafljwlg3ls";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev = "eb6f65b2d77ed5078887f960ff570fbddbbeb49d";
+      sha256 = "1wx6hpxmq5sby54025j9hliz10gv5v0bq6q1z2cd0asznj154ij1";
+    };
+  }
+  {
+    goPackagePath = "github.com/magiconair/properties";
+    fetch = {
+      type = "git";
+      url = "https://github.com/magiconair/properties";
+      rev = "b3b15ef068fd0b17ddf408a23669f20811d194d2";
+      sha256 = "0m6jvlsi4bcnrfb4mas54wxp80d4ls209vhanvv20zgpy4y7qdsh";
+    };
+  }
+  {
+    goPackagePath = "github.com/mitchellh/mapstructure";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mitchellh/mapstructure";
+      rev = "bfdb1a85537d60bc7e954e600c250219ea497417";
+      sha256 = "141kkh801jyp1r6hba14krydqg1iivp13j12is70j0g05z9fbji8";
+    };
+  }
+  {
+    goPackagePath = "github.com/packethost/packngo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/packethost/packngo";
+      rev = "91a3a4f65e3cd6ee66d919b4e7103ae038ce66ff";
+      sha256 = "0v032qv9jjvv67fm2jl20pk4f46pymj688b6j0i42kpgmc9zxanz";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-buffruneio";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-buffruneio";
+      rev = "df1e16fde7fc330a0ca68167c23bf7ed6ac31d6d";
+      sha256 = "0jwn2g4jfdb3wvpqisd8h055099pwx6c5i3bb4zxk5l9vybg1c5f";
+    };
+  }
+  {
+    goPackagePath = "github.com/pelletier/go-toml";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pelletier/go-toml";
+      rev = "a1f048ba24490f9b0674a67e1ce995d685cddf4a";
+      sha256 = "09fb872v64bvjgzp3a926ic5hm08pzy0i53j02yb93v38g4ihdv3";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/afero";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/afero";
+      rev = "72b31426848c6ef12a7a8e216708cb0d1530f074";
+      sha256 = "0sbmpv1zxxl32nsv76bp3n3zp08in2yz4fv02mjzaws9rk97yfj8";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cast";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cast";
+      rev = "56a7ecbeb18dde53c6db4bd96b541fd9741b8d44";
+      sha256 = "16fj6ghk7wykcfh3ka4iyhl1s11briawrvscncb6l64dv794w2cr";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/cobra";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/cobra";
+      rev = "1dd5ff2e11b6dca62fdcb275eb804b94607d8b06";
+      sha256 = "0whzk9yz0yby9vag9m7hk4n1kwa07qcgi6wizvw20j0y30d31hgx";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/jwalterweatherman";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/jwalterweatherman";
+      rev = "fa7ca7e836cf3a8bb4ebf799f472c12d7e903d66";
+      sha256 = "0404b7bzx7cq1b2bgdb3gs7gjzm4vvg1hl2y9mcm4m6vz56vbcz8";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/pflag";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/pflag";
+      rev = "51268031d79952516489a9f8aa34e9709b98d946";
+      sha256 = "04qkkm2gjklh66hx3zj4jm6v0bdxvyq6rchs4r0k87aba7syw008";
+    };
+  }
+  {
+    goPackagePath = "github.com/spf13/viper";
+    fetch = {
+      type = "git";
+      url = "https://github.com/spf13/viper";
+      rev = "5ed0fc31f7f453625df314d8e66b9791e8d13003";
+      sha256 = "16j2lly6rv60hc7mpbmda9vp1vs1qhig9kjgf6mss7n6my40s3ga";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "d75a52659825e75fff6158388dddc6a5b04f9ba5";
+      sha256 = "0zbv11kq5d8dxiddd4kzr785gbwb7x8d7lq4rqs5s7s43h0pl3x7";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "11dbc599981ccdf4fb18802a28392a8bcf7a9395";
+      sha256 = "139hlf5xr5ggy48dbrfya3ajy7q3z3y6p6lrvkvl6m5wxfapa9hj";
+    };
+  }
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "a5b47d31c556af34a302ce5d659e6fea44d90de0";
+      sha256 = "0v6l48fshdjrqzyq1kwn22gy7vy434xdr1i0lm3prsf6jbln9fam";
+    };
+  }
+]
diff --git a/pkgs/development/tools/parsing/antlr/default.nix b/pkgs/development/tools/parsing/antlr/default.nix
deleted file mode 100644
index e866f61f25a..00000000000
--- a/pkgs/development/tools/parsing/antlr/default.nix
+++ /dev/null
@@ -1,24 +0,0 @@
-{stdenv, fetchurl, jre}:
-
-stdenv.mkDerivation {
-  name = "antlr-3.0b3";
-  builder = ./builder.sh;
-  src = fetchurl {
-    url = http://www.antlr.org/download/antlr-3.0b3.tar.gz;
-    md5 = "6a7e70ccece8149b735cc3aaa24241cc";
-  };
-  inherit jre;
-
-  meta = with stdenv.lib; {
-    description = "Powerful parser generator";
-    longDescription = ''
-      ANTLR (ANother Tool for Language Recognition) is a powerful parser
-      generator for reading, processing, executing, or translating structured
-      text or binary files. It's widely used to build languages, tools, and
-      frameworks. From a grammar, ANTLR generates a parser that can build and
-      walk parse trees.
-    '';
-    homepage = http://www.antlr.org/;
-    platforms = platforms.linux;
-  };
-}
diff --git a/pkgs/development/tools/redis-dump/default.nix b/pkgs/development/tools/redis-dump/default.nix
index bc1adf730a3..054517ea547 100644
--- a/pkgs/development/tools/redis-dump/default.nix
+++ b/pkgs/development/tools/redis-dump/default.nix
@@ -4,9 +4,7 @@ bundlerEnv {
   name = "redis-dump-0.3.5";
 
   inherit ruby;
-  gemfile = ./Gemfile;
-  lockfile = ./Gemfile.lock;
-  gemset = ./gemset.nix;
+  gemdir = ./.;
 
   buildInputs = [ perl autoconf ];
 
diff --git a/pkgs/development/tools/rhc/default.nix b/pkgs/development/tools/rhc/default.nix
index e9efdb9f423..e6b342dd7b6 100644
--- a/pkgs/development/tools/rhc/default.nix
+++ b/pkgs/development/tools/rhc/default.nix
@@ -4,9 +4,7 @@ bundlerEnv {
   name = "rhc-1.36.4";
 
   inherit ruby;
-  gemfile = ./Gemfile;
-  lockfile = ./Gemfile.lock;
-  gemset = ./gemset.nix;
+  gemdir = ./.;
 
   meta = with lib; {
     homepage = https://github.com/openshift/rhc;
diff --git a/pkgs/development/tools/ronn/default.nix b/pkgs/development/tools/ronn/default.nix
index 7720c4f2bf2..5f20e89d408 100644
--- a/pkgs/development/tools/ronn/default.nix
+++ b/pkgs/development/tools/ronn/default.nix
@@ -6,9 +6,7 @@ stdenv.mkDerivation rec {
 
   env = bundlerEnv rec {
     name = "ronn-gems";
-    gemfile = ./Gemfile;
-    lockfile = ./Gemfile.lock;
-    gemset = ./gemset.nix;
+    gemdir = ./.;
   };
 
   phases = ["installPhase"];
diff --git a/pkgs/development/tools/rtags/default.nix b/pkgs/development/tools/rtags/default.nix
index f8f9646182b..44f922906e8 100644
--- a/pkgs/development/tools/rtags/default.nix
+++ b/pkgs/development/tools/rtags/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "rtags-${version}";
-  version = "2.3";
+  version = "2.8-p1";
 
   buildInputs = [ cmake llvmPackages.llvm openssl llvmPackages.clang emacs ]
-    ++ lib.optional stdenv.isDarwin apple_sdk.sdk;
+    ++ lib.optionals stdenv.isDarwin [ apple_sdk.sdk apple_sdk.frameworks.CoreServices ];
 
   preConfigure = ''
-    export LIBCLANG_CXXFLAGS="-isystem ${llvmPackages.clang.cc}/include $(llvm-config --cxxflags) " \
+    export LIBCLANG_CXXFLAGS="-isystem ${llvmPackages.clang.cc}/include $(llvm-config --cxxflags) -fexceptions" \
            LIBCLANG_LIBDIR="${llvmPackages.clang.cc}/lib" \
 
   '' + lib.optionalString stdenv.isDarwin ''
@@ -17,10 +17,11 @@ stdenv.mkDerivation rec {
   '';
 
   src = fetchgit {
-    rev = "refs/tags/v${version}";
+    # rev = "refs/tags/v${version}"; # TODO Renable if sha1 below is tagged as release
+    rev = "f85bd60f00d51748ea159b00fda7b5bfa78ef571";
     fetchSubmodules = true;
     url = "https://github.com/andersbakken/rtags.git";
-    sha256 = "05kzch88x2wiimygfli6vsr9i5hzgkybsya8qx4zvb6daip4b7yf";
+    sha256 = "0g9sgc763c5d695hjffhis19sbaqk8z4884szljf7kbrjxl17y78";
   };
 
   meta = {
diff --git a/pkgs/development/tools/rubocop/Gemfile b/pkgs/development/tools/rubocop/Gemfile
new file mode 100644
index 00000000000..f6ab81c8112
--- /dev/null
+++ b/pkgs/development/tools/rubocop/Gemfile
@@ -0,0 +1,3 @@
+source 'https://rubygems.org'
+gem 'rake'
+gem 'rubocop'
diff --git a/pkgs/development/tools/rubocop/Gemfile.lock b/pkgs/development/tools/rubocop/Gemfile.lock
new file mode 100644
index 00000000000..abc782465cc
--- /dev/null
+++ b/pkgs/development/tools/rubocop/Gemfile.lock
@@ -0,0 +1,27 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    ast (2.3.0)
+    parser (2.3.3.1)
+      ast (~> 2.2)
+    powerpack (0.1.1)
+    rainbow (2.2.1)
+    rake (12.0.0)
+    rubocop (0.47.0)
+      parser (>= 2.3.3.1, < 3.0)
+      powerpack (~> 0.1)
+      rainbow (>= 1.99.1, < 3.0)
+      ruby-progressbar (~> 1.7)
+      unicode-display_width (~> 1.0, >= 1.0.1)
+    ruby-progressbar (1.8.1)
+    unicode-display_width (1.1.3)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  rake
+  rubocop
+
+BUNDLED WITH
+   1.13.7
diff --git a/pkgs/development/tools/rubocop/default.nix b/pkgs/development/tools/rubocop/default.nix
new file mode 100644
index 00000000000..850fb5ad7f5
--- /dev/null
+++ b/pkgs/development/tools/rubocop/default.nix
@@ -0,0 +1,17 @@
+{ stdenv, lib, bundlerEnv, ruby, makeWrapper }:
+
+bundlerEnv rec {
+  pname = "rubocop";
+
+  inherit ruby;
+
+  gemdir = ./.;
+
+  meta = with lib; {
+    description = "Automatic Ruby code style checking tool";
+    homepage = http://rubocop.readthedocs.io/en/latest/;
+    license = licenses.mit;
+    maintainers = with maintainers; [ leemachin ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/tools/rubocop/gemset.nix b/pkgs/development/tools/rubocop/gemset.nix
new file mode 100644
index 00000000000..908b5b76dd3
--- /dev/null
+++ b/pkgs/development/tools/rubocop/gemset.nix
@@ -0,0 +1,69 @@
+{
+  ast = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0pp82blr5fakdk27d1d21xq9zchzb6vmyb1zcsl520s3ygvprn8m";
+      type = "gem";
+    };
+    version = "2.3.0";
+  };
+  parser = {
+    dependencies = ["ast"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1nply96nqrkgx8d3jay31sfy5p4q74dg8ymln0mdazxx5cz2n8bq";
+      type = "gem";
+    };
+    version = "2.3.3.1";
+  };
+  powerpack = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1fnn3fli5wkzyjl4ryh0k90316shqjfnhydmc7f8lqpi0q21va43";
+      type = "gem";
+    };
+    version = "0.1.1";
+  };
+  rainbow = {
+    dependencies = ["rake"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0frz90gyi5k26jx3ham1x661hpkxf82rkxb85nakcz70dna7i8ri";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+  rake = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "01j8fc9bqjnrsxbppncai05h43315vmz9fwg28qdsgcjw9ck1d7n";
+      type = "gem";
+    };
+    version = "12.0.0";
+  };
+  rubocop = {
+    dependencies = ["parser" "powerpack" "rainbow" "ruby-progressbar" "unicode-display_width"];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1lsv3zbjl14nqyqqvcwciz15nq76l7vg97nydrdsrxs2bc5jrlsm";
+      type = "gem";
+    };
+    version = "0.47.0";
+  };
+  ruby-progressbar = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1qzc7s7r21bd7ah06kskajc2bjzkr9y0v5q48y0xwh2l55axgplm";
+      type = "gem";
+    };
+    version = "1.8.1";
+  };
+  unicode-display_width = {
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1r28mxyi0zwby24wyn1szj5hcnv67066wkv14wyzsc94bf04fqhx";
+      type = "gem";
+    };
+    version = "1.1.3";
+  };
+}
diff --git a/pkgs/development/tools/sass/default.nix b/pkgs/development/tools/sass/default.nix
index a291ca2de5d..cfeb3ccc0f9 100644
--- a/pkgs/development/tools/sass/default.nix
+++ b/pkgs/development/tools/sass/default.nix
@@ -4,9 +4,7 @@ bundlerEnv {
   name = "sass-3.4.22";
 
   inherit ruby;
-  gemfile = ./Gemfile;
-  lockfile = ./Gemfile.lock;
-  gemset = ./gemset.nix;
+  gemdir = ./.;
 
   meta = with lib; {
     description = "Tools and Ruby libraries for the CSS3 extension languages: Sass and SCSS";
diff --git a/pkgs/development/tools/selenium/htmlunit-driver/default.nix b/pkgs/development/tools/selenium/htmlunit-driver/default.nix
new file mode 100644
index 00000000000..2fc38db1bb0
--- /dev/null
+++ b/pkgs/development/tools/selenium/htmlunit-driver/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl }:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  name = "htmlunit-driver-standalone-${version}";
+  version = "2.21";
+
+  src = fetchurl {
+    url = "https://github.com/SeleniumHQ/htmlunit-driver/releases/download/${version}/htmlunit-driver-standalone-${version}.jar";
+    sha256 = "1wrbam0hb036717z3y73lsw4pwp5sdiw2i1818kg9pvc7i3fb3yn";
+  };
+
+  unpackPhase = "true";
+
+  installPhase = "install -D $src $out/share/lib/${name}/${name}.jar";
+
+  meta = {
+    homepage = https://github.com/SeleniumHQ/htmlunit-driver;
+    description = "A WebDriver server for running Selenium tests on the HtmlUnit headless browser";
+    maintainers = with maintainers; [ coconnor offline ];
+    platforms = platforms.all;
+    license = licenses.asl20;
+  };
+}
diff --git a/pkgs/development/tools/selenium/server/default.nix b/pkgs/development/tools/selenium/server/default.nix
index fe8bf2b13b5..ca225adab6d 100644
--- a/pkgs/development/tools/selenium/server/default.nix
+++ b/pkgs/development/tools/selenium/server/default.nix
@@ -1,5 +1,5 @@
 { stdenv, fetchurl, makeWrapper, jre, jdk, gcc, xorg
-, chromedriver, chromeSupport ? true }:
+, htmlunit-driver, chromedriver, chromeSupport ? true }:
 
 with stdenv.lib;
 
@@ -25,8 +25,9 @@ in stdenv.mkDerivation rec {
     mkdir -p $out/share/lib/${name}
     cp $src $out/share/lib/${name}/${name}.jar
     makeWrapper ${jre}/bin/java $out/bin/selenium-server \
-      --add-flags "-jar $out/share/lib/${name}/${name}.jar" \
-      --add-flags ${optionalString chromeSupport "-Dwebdriver.chrome.driver=${chromedriver}/bin/chromedriver"}
+      --add-flags "-cp ${htmlunit-driver}/share/lib/${htmlunit-driver.name}/${htmlunit-driver.name}.jar:$out/share/lib/${name}/${name}.jar" \
+      --add-flags ${optionalString chromeSupport "-Dwebdriver.chrome.driver=${chromedriver}/bin/chromedriver"} \
+      --add-flags "org.openqa.grid.selenium.GridLauncher"
   '';
 
   meta = {
diff --git a/pkgs/development/tools/vagrant/default.nix b/pkgs/development/tools/vagrant/default.nix
index 39c7ca77f8f..659c831bbe3 100644
--- a/pkgs/development/tools/vagrant/default.nix
+++ b/pkgs/development/tools/vagrant/default.nix
@@ -117,7 +117,8 @@ in stdenv.mkDerivation rec {
     mkdir -p "$out"
     cp -r opt "$out"
     cp -r usr/bin "$out"
-    wrapProgram "$out/bin/vagrant" --prefix LD_LIBRARY_PATH : "$out/opt/vagrant/embedded/lib"
+    wrapProgram "$out/bin/vagrant" --prefix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath [ libxml2 libxslt ]}" \
+                                   --prefix LD_LIBRARY_PATH : "$out/opt/vagrant/embedded/lib"
   '';
 
   preFixup = ''
diff --git a/pkgs/development/tools/valadoc/default.nix b/pkgs/development/tools/valadoc/default.nix
index 7d4e61c8799..3fd92dfeba4 100644
--- a/pkgs/development/tools/valadoc/default.nix
+++ b/pkgs/development/tools/valadoc/default.nix
@@ -1,12 +1,12 @@
 {stdenv, fetchgit, gnome3, automake, autoconf, which, libtool, pkgconfig, graphviz, glib, gobjectIntrospection, expat}:
 stdenv.mkDerivation rec {
-  version = "2016-10-09";
+  version = "2016-11-11";
   name = "valadoc-unstable-${version}";
 
   src = fetchgit {
     url = "git://git.gnome.org/valadoc";
-    rev = "37756970379d1363453562e9f2af2c354d172fb4";
-    sha256 = "1s9sf6f0srh5sqqikswnb3bgwv5s1r9bd4n10hs2lzfmh7z227qb";
+    rev = "8080b626db9c16ac9a0a9802677b4f6ab0d36d4e";
+    sha256 = "1y00yls4wgxggzfagm3hcmzkpskfbs3m52pjgl71lg4p85kv6msv";
   };
 
   nativeBuildInputs = [ automake autoconf which gnome3.vala libtool pkgconfig gobjectIntrospection ];
diff --git a/pkgs/development/tools/vndr/default.nix b/pkgs/development/tools/vndr/default.nix
new file mode 100644
index 00000000000..7cc77bd1bb3
--- /dev/null
+++ b/pkgs/development/tools/vndr/default.nix
@@ -0,0 +1,23 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "vndr-${version}";
+  version = "20161110-${lib.strings.substring 0 7 rev}";
+  rev = "cf8678fba5591fbacc4dafab1a22d64f6c603c20";
+
+  goPackagePath = "github.com/LK4D4/vndr";
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "LK4D4";
+    repo = "vndr";
+    sha256 = "1fbrpdpfir05hqj1dr8rxw8hnjkhl0xbzncxkva56508vyyzbxcs";
+  };
+
+  meta = {
+    description = "Stupid golang vendoring tool, inspired by docker vendor script";
+    homepage = "https://github.com/LK4D4/vndr";
+    maintainers = with lib.maintainers; [ vdemeester ];
+    licence = lib.licenses.asl20;
+  };
+}
diff --git a/pkgs/development/tools/xcbuild/default.nix b/pkgs/development/tools/xcbuild/default.nix
index 3a1b753bf31..99859ed9640 100644
--- a/pkgs/development/tools/xcbuild/default.nix
+++ b/pkgs/development/tools/xcbuild/default.nix
@@ -15,14 +15,14 @@ let
     sha256 = "0wasql7ph5g473zxhc2z47z3pjp42q0dsn4gpijwzbxawid71b4w";
   };
 in stdenv.mkDerivation rec {
-  name    = "xcbuild-${stdenv.lib.substring 0 8 version}";
-  version = "0ab861abcc11185a17d59608f96a015752a6fadc";
+  name    = "xcbuild-${version}";
+  version = "0.1.1";
 
   src = fetchFromGitHub {
     owner  = "facebook";
     repo   = "xcbuild";
     rev    = version;
-    sha256 = "12h0rn8v0js2vph2pwp5wvcrfkj12nz365i5qxw9miyfn4msnz26";
+    sha256 = "0i98c6lii8r3bgs5gj7div12pxyzjvm4qqzmmzgr7dyhj00qa8r5";
   };
 
   prePatch = ''
@@ -39,6 +39,8 @@ in stdenv.mkDerivation rec {
     rmdir $out/usr
   '';
 
+  NIX_CFLAGS_COMPILE = "-Wno-error=strict-aliasing";
+
   buildInputs = [ cmake zlib libxml2 libpng ninja ]
     ++ stdenv.lib.optionals stdenv.isDarwin [ CoreServices CoreGraphics ImageIO ];
 
diff --git a/pkgs/development/tools/xcbuild/wrapper.nix b/pkgs/development/tools/xcbuild/wrapper.nix
index a40a3440d68..0da733b8078 100644
--- a/pkgs/development/tools/xcbuild/wrapper.nix
+++ b/pkgs/development/tools/xcbuild/wrapper.nix
@@ -60,7 +60,8 @@ stdenv.mkDerivation {
       --add-flags "DERIVED_DATA_DIR=." \
       --set DEVELOPER_DIR "$out"
     wrapProgram $out/bin/xcrun \
-      --add-flags "-sdk ${sdkName}" \
+      --set DEVELOPER_DIR "$out"
+    wrapProgram $out/bin/xcode-select \
       --set DEVELOPER_DIR "$out"
   '';
 
diff --git a/pkgs/development/tools/yarn/default.nix b/pkgs/development/tools/yarn/default.nix
new file mode 100644
index 00000000000..7d93ea1fcab
--- /dev/null
+++ b/pkgs/development/tools/yarn/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, nodejs, fetchzip, makeWrapper }:
+
+stdenv.mkDerivation rec {
+  name = "yarn-${version}";
+  version = "0.19.1";
+
+  src = fetchzip {
+    url = "https://github.com/yarnpkg/yarn/releases/download/v${version}/yarn-v${version}.tar.gz";
+    sha256 = "1006ijhig9pcmrlsqfwxhn4i78bcji2grvkl4hz64fmqv6rh783s";
+  };
+
+  buildInputs = [makeWrapper nodejs];
+
+  installPhase = ''
+    mkdir -p $out/{bin,libexec/yarn/}
+    cp -R . $out/libexec/yarn
+    makeWrapper $out/libexec/yarn/bin/yarn.js $out/bin/yarn
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://yarnpkg.com/;
+    description = "Fast, reliable, and secure dependency management for javascript";
+    license = licenses.bsd2;
+    maintainers = [ maintainers.offline ];
+  };
+}
diff --git a/pkgs/development/tools/yuicompressor/default.nix b/pkgs/development/tools/yuicompressor/default.nix
index 1a5485af541..da9b9df3cd4 100644
--- a/pkgs/development/tools/yuicompressor/default.nix
+++ b/pkgs/development/tools/yuicompressor/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl }:
+{ stdenv, fetchurl, makeWrapper, jre }:
 
 stdenv.mkDerivation rec {
   name = "yuicompressor";
@@ -8,6 +8,8 @@ stdenv.mkDerivation rec {
     sha256 = "1qjxlak9hbl9zd3dl5ks0w4zx5z64wjsbk7ic73r1r45fasisdrh";
   };
 
+  buildInputs = [makeWrapper jre];
+
   meta = {
     description = "A JavaScript and CSS minifier";
     maintainers = [ stdenv.lib.maintainers.jwiegley ];
@@ -17,7 +19,9 @@ stdenv.mkDerivation rec {
   };
 
   buildCommand = ''
-    mkdir -p $out/lib
+    mkdir -p $out/{bin,lib}
     ln -s $src $out/lib/yuicompressor.jar
+    makeWrapper ${jre}/bin/java $out/bin/${name} --add-flags \
+     "-cp $out/lib/yuicompressor.jar com.yahoo.platform.yui.compressor.YUICompressor"
   '';
 }