summary refs log tree commit diff
path: root/pkgs/development/tools
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools')
-rw-r--r--pkgs/development/tools/analysis/autoflake/default.nix4
-rw-r--r--pkgs/development/tools/analysis/checkstyle/default.nix4
-rw-r--r--pkgs/development/tools/analysis/cppcheck/default.nix4
-rw-r--r--pkgs/development/tools/analysis/include-what-you-use/default.nix2
-rw-r--r--pkgs/development/tools/analysis/spin/default.nix21
-rw-r--r--pkgs/development/tools/apktool/default.nix4
-rw-r--r--pkgs/development/tools/build-managers/bazel/0.4.nix2
-rw-r--r--pkgs/development/tools/build-managers/cmake/2.8.nix7
-rw-r--r--pkgs/development/tools/build-managers/conan/default.nix60
-rw-r--r--pkgs/development/tools/build-managers/doit/default.nix4
-rw-r--r--pkgs/development/tools/build-managers/icmake/default.nix4
-rw-r--r--pkgs/development/tools/build-managers/meson/default.nix26
-rw-r--r--pkgs/development/tools/build-managers/meson/setup-hook.sh10
-rw-r--r--pkgs/development/tools/doctl/default.nix6
-rw-r--r--pkgs/development/tools/documentation/gtk-doc/default.nix10
-rw-r--r--pkgs/development/tools/documentation/mkdocs/default.nix4
-rw-r--r--pkgs/development/tools/flyway/default.nix2
-rw-r--r--pkgs/development/tools/fmbt/default.nix53
-rw-r--r--pkgs/development/tools/gauge/default.nix5
-rw-r--r--pkgs/development/tools/gllvm/default.nix22
-rw-r--r--pkgs/development/tools/gnulib/default.nix9
-rw-r--r--pkgs/development/tools/go-langserver/default.nix25
-rw-r--r--pkgs/development/tools/guile/guile-lint/default.nix2
-rw-r--r--pkgs/development/tools/haskell/multi-ghc-travis/default.nix5
-rw-r--r--pkgs/development/tools/icestorm/default.nix6
-rw-r--r--pkgs/development/tools/java/cfr/default.nix24
-rw-r--r--pkgs/development/tools/json2hcl/default.nix25
-rw-r--r--pkgs/development/tools/json2hcl/deps.nix20
-rw-r--r--pkgs/development/tools/misc/autogen/default.nix2
-rw-r--r--pkgs/development/tools/misc/automake/automake-1.16.x.nix (renamed from pkgs/development/tools/misc/automake/automake-1.15.x.nix)4
-rw-r--r--pkgs/development/tools/misc/fsatrace/default.nix31
-rw-r--r--pkgs/development/tools/misc/gdb/darwin-target-match.patch11
-rw-r--r--pkgs/development/tools/misc/gdb/default.nix3
-rw-r--r--pkgs/development/tools/misc/global/default.nix4
-rw-r--r--pkgs/development/tools/misc/intel-gpu-tools/default.nix4
-rw-r--r--pkgs/development/tools/misc/strace/default.nix7
-rw-r--r--pkgs/development/tools/misc/travis/Gemfile2
-rw-r--r--pkgs/development/tools/misc/travis/Gemfile.lock4
-rw-r--r--pkgs/development/tools/misc/travis/default.nix5
-rw-r--r--pkgs/development/tools/misc/travis/gemset.nix8
-rw-r--r--pkgs/development/tools/misc/travis/shell.nix11
-rw-r--r--pkgs/development/tools/misc/usb-modeswitch/data.nix4
-rw-r--r--pkgs/development/tools/mypy/default.nix4
-rw-r--r--pkgs/development/tools/node-webkit/nw11.nix59
-rw-r--r--pkgs/development/tools/nwjs/default.nix87
-rw-r--r--pkgs/development/tools/parsing/antlr/4.7.nix4
-rw-r--r--pkgs/development/tools/parsing/jshon/default.nix4
-rw-r--r--pkgs/development/tools/parsing/re2c/default.nix4
-rw-r--r--pkgs/development/tools/pew/default.nix2
-rw-r--r--pkgs/development/tools/pipenv/default.nix4
-rw-r--r--pkgs/development/tools/rtags/default.nix2
-rw-r--r--pkgs/development/tools/sassc/default.nix4
-rw-r--r--pkgs/development/tools/selenium/chromedriver/default.nix4
-rw-r--r--pkgs/development/tools/vcstool/default.nix4
-rw-r--r--pkgs/development/tools/wllvm/default.nix4
-rwxr-xr-xpkgs/development/tools/yarn2nix/bin/yarn2nix.js144
-rw-r--r--pkgs/development/tools/yarn2nix/default.nix199
-rw-r--r--pkgs/development/tools/yarn2nix/fixup_bin.js45
-rw-r--r--pkgs/development/tools/yarn2nix/package.json19
-rw-r--r--pkgs/development/tools/yarn2nix/yarn.lock11
-rw-r--r--pkgs/development/tools/yarn2nix/yarn.nix23
-rw-r--r--pkgs/development/tools/yq/default.nix12
62 files changed, 930 insertions, 179 deletions
diff --git a/pkgs/development/tools/analysis/autoflake/default.nix b/pkgs/development/tools/analysis/autoflake/default.nix
index 9522b1cf6b74..ce650adb7ef2 100644
--- a/pkgs/development/tools/analysis/autoflake/default.nix
+++ b/pkgs/development/tools/analysis/autoflake/default.nix
@@ -3,12 +3,12 @@
 with python3Packages;
 buildPythonApplication rec {
   pname = "autoflake";
-  version = "1.0";
+  version = "1.1";
   name = "${pname}-${version}";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "12k4v8w7awqp83j727y0iwcbjqj3ccvbai7c9m0wgbmq5xkvav8a";
+    sha256 = "a74d684a7a02654f74582addc24a3016c06809316cc140457a4fe93a1e6ed131";
   };
 
   propagatedBuildInputs = [ pyflakes ];
diff --git a/pkgs/development/tools/analysis/checkstyle/default.nix b/pkgs/development/tools/analysis/checkstyle/default.nix
index 91037588552c..6043e2d289d7 100644
--- a/pkgs/development/tools/analysis/checkstyle/default.nix
+++ b/pkgs/development/tools/analysis/checkstyle/default.nix
@@ -1,12 +1,12 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  version = "6.19";
+  version = "8.8";
   name = "checkstyle-${version}";
 
   src = fetchurl {
     url = "mirror://sourceforge/checkstyle/${name}-bin.tar.gz";
-    sha256 = "0x899i5yamwyhv7wgii80fv5hl8bdq0b8wlx1f789l85ik8rjwk9";
+    sha256 = "0yawd6mbz6cqj0qlrh01vy33p30f4s3pfrvsxwg5l11p416zzrz4";
   };
 
   installPhase = ''
diff --git a/pkgs/development/tools/analysis/cppcheck/default.nix b/pkgs/development/tools/analysis/cppcheck/default.nix
index 97bd0d6e3dff..02f44f4bf704 100644
--- a/pkgs/development/tools/analysis/cppcheck/default.nix
+++ b/pkgs/development/tools/analysis/cppcheck/default.nix
@@ -2,12 +2,12 @@
 
 stdenv.mkDerivation rec {
   pname = "cppcheck";
-  version = "1.80";
+  version = "1.82";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${name}.tar.bz2";
-    sha256 = "1yx06yhkqlv9849ns7p97mj09gm9j7xc51q7yvzkk8ldvx4d4h88";
+    sha256 = "0kk9injrxbv4mmmjswrh1kidal6l0sdzbp40kv8vwf5aiv8jjaz0";
   };
 
   buildInputs = [ pcre ];
diff --git a/pkgs/development/tools/analysis/include-what-you-use/default.nix b/pkgs/development/tools/analysis/include-what-you-use/default.nix
index f2481013fbbd..ec4d19423e6d 100644
--- a/pkgs/development/tools/analysis/include-what-you-use/default.nix
+++ b/pkgs/development/tools/analysis/include-what-you-use/default.nix
@@ -29,6 +29,6 @@ stdenv.mkDerivation rec {
     '';
     homepage = http://include-what-you-use.org;
     license = licenses.bsd3;
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/tools/analysis/spin/default.nix b/pkgs/development/tools/analysis/spin/default.nix
index 284bf26782fe..1be5655b1e53 100644
--- a/pkgs/development/tools/analysis/spin/default.nix
+++ b/pkgs/development/tools/analysis/spin/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchurl, makeWrapper, yacc, gcc
+{ stdenv, lib, requireFile, makeWrapper, yacc, gcc
 , withISpin ? true, tk, swarm, graphviz }:
 
 let
@@ -7,12 +7,17 @@ let
 
 in stdenv.mkDerivation rec {
   name = "spin-${version}";
-  version = "6.4.7";
+  version = "6.4.8";
   url-version = stdenv.lib.replaceChars ["."] [""] version;
 
-  src = fetchurl {
-    url = "http://spinroot.com/spin/Src/spin${url-version}.tar.gz";
-    sha256 = "17m2xaag0jns8hsa4466zxq35ylg9fnzynzvjjmx4ympbiil6mqv";
+  src = requireFile {
+    name = "spin${url-version}.tar.gz";
+    sha256 = "1rpazi5fj772121cn7r85fxypmaiv0x6x2l82b5y1xqzyf0fi4ph";
+    message = ''
+      reCAPTCHA is preventing us to download the file for you.
+      Please download it at http://spinroot.com/spin/Src/index.html
+      and add it to the nix-store using nix-prefetch-url.
+    '';
   };
 
   nativeBuildInputs = [ makeWrapper ];
@@ -20,6 +25,12 @@ in stdenv.mkDerivation rec {
 
   sourceRoot = "Spin/Src${version}";
 
+  unpackPhase = ''
+    # The archive is compressed twice
+    gunzip -c $src > spin.tar.gz
+    tar -xzf spin.tar.gz
+  '';
+
   installPhase = ''
     install -Dm755 spin $out/bin/spin
     wrapProgram $out/bin/spin \
diff --git a/pkgs/development/tools/apktool/default.nix b/pkgs/development/tools/apktool/default.nix
index 158de9226c69..d1320960f39a 100644
--- a/pkgs/development/tools/apktool/default.nix
+++ b/pkgs/development/tools/apktool/default.nix
@@ -2,14 +2,14 @@
 
 stdenv.mkDerivation rec {
   name = "apktool-${version}";
-  version = "2.3.0";
+  version = "2.3.1";
 
   src = fetchurl {
     urls = [
       "https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_${version}.jar"
       "https://github.com/iBotPeaches/Apktool/releases/download/v${version}/apktool_${version}.jar"
     ];
-    sha256 = "b724c158ec99dbad723024e259fd73e5135c40d652a3c599cec6ade9264a568e";
+    sha256 = "01xj2hivwwp3msvv0psxyxrzg95vj2ny56l3n90glhwznn7l60ai";
   };
 
   phases = [ "installPhase" ];
diff --git a/pkgs/development/tools/build-managers/bazel/0.4.nix b/pkgs/development/tools/build-managers/bazel/0.4.nix
index d131232e96d9..7fa39ef21627 100644
--- a/pkgs/development/tools/build-managers/bazel/0.4.nix
+++ b/pkgs/development/tools/build-managers/bazel/0.4.nix
@@ -13,7 +13,7 @@ stdenv.mkDerivation rec {
     description = "Build tool that builds code quickly and reliably";
     license = licenses.asl20;
     maintainers = with maintainers; [ cstrahan philandstuff ];
-    platforms = platforms.unix;
+    platforms = platforms.linux;
   };
 
   name = "bazel-${version}";
diff --git a/pkgs/development/tools/build-managers/cmake/2.8.nix b/pkgs/development/tools/build-managers/cmake/2.8.nix
index b4b2a4210d21..fcf06782e4dd 100644
--- a/pkgs/development/tools/build-managers/cmake/2.8.nix
+++ b/pkgs/development/tools/build-managers/cmake/2.8.nix
@@ -43,6 +43,11 @@ stdenv.mkDerivation rec {
       sha256 = "16acmdr27adma7gs9rs0dxdiqppm15vl3vv3agy7y8s94wyh4ybv";
     });
 
+  postPatch = ''
+    substituteInPlace Utilities/cmlibarchive/CMakeLists.txt \
+      --replace '"-framework CoreServices"' '""'
+  '';
+
   buildInputs = [ curl expat zlib bzip2 ]
     ++ optional useNcurses ncurses
     ++ optional useQt4 qt4;
@@ -76,7 +81,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = http://www.cmake.org/;
     description = "Cross-Platform Makefile Generator";
-    platforms = if useQt4 then qt4.meta.platforms else stdenv.lib.platforms.linux;
+    platforms = if useQt4 then qt4.meta.platforms else stdenv.lib.platforms.unix;
     maintainers = with stdenv.lib.maintainers; [ ];
   };
 }
diff --git a/pkgs/development/tools/build-managers/conan/default.nix b/pkgs/development/tools/build-managers/conan/default.nix
index 4a2afbeedfe6..04d7d93455e9 100644
--- a/pkgs/development/tools/build-managers/conan/default.nix
+++ b/pkgs/development/tools/build-managers/conan/default.nix
@@ -1,27 +1,59 @@
-{ lib, buildPythonApplication, fetchPypi
-, requests, fasteners, pyyaml, pyjwt, colorama, patch
-, bottle, pluginbase, six, distro, pylint, node-semver
-, future, pygments, mccabe
-}:
-
-buildPythonApplication rec {
-  version = "0.28.1";
+{ lib, fetchpatch, python }:
+
+let newPython = python.override {
+  packageOverrides = self: super: {
+    distro = super.distro.overridePythonAttrs (oldAttrs: rec {
+      version = "1.1.0";
+      src = oldAttrs.src.override {
+        inherit version;
+        sha256 = "1vn1db2akw98ybnpns92qi11v94hydwp130s8753k6ikby95883j";
+      };
+    });
+    node-semver = super.node-semver.overridePythonAttrs (oldAttrs: rec {
+      version = "0.2.0";
+      src = oldAttrs.src.override {
+        inherit version;
+        sha256 = "1080pdxrvnkr8i7b7bk0dfx6cwrkkzzfaranl7207q6rdybzqay3";
+      };
+    });
+  };
+};
+
+in newPython.pkgs.buildPythonApplication rec {
+  version = "1.1.1"; # remove patch below when updating
   pname = "conan";
 
-  src = fetchPypi {
+  src = newPython.pkgs.fetchPypi {
     inherit pname version;
-    sha256 = "0zf564iqh0099yd779f9fgk21qyp87d7cmgfj34hmncf8y3qh32a";
+    sha256 = "1k1r401bc9fgmhd5n5f29mjcn346r3zdrm7p28nwpr2r2p3fslrl";
   };
 
-  propagatedBuildInputs = [
+  checkInputs = with newPython.pkgs; [
+    nose
+    parameterized
+    mock
+    webtest
+    codecov
+  ];
+
+  propagatedBuildInputs = with newPython.pkgs; [
     requests fasteners pyyaml pyjwt colorama patch
     bottle pluginbase six distro pylint node-semver
     future pygments mccabe
   ];
 
-  # enable tests once all of these pythonPackages available:
-  # [ nose nose_parameterized mock webtest codecov ]
-  doCheck = false;
+  patches = [
+    # already merged, remove with the next package update
+    (fetchpatch {
+      url = "https://github.com/conan-io/conan/commit/51cc4cbd51ac8f9b9efa2bf678a2d7810e273ff3.patch";
+      sha256 = "0d93g4hjpfk8z870imwdswkw5qba2h5zhfgwwijiqhr2pv7fl1y7";
+    })
+  ];
+
+  preCheck = ''
+    export HOME="$TMP/conan-home"
+    mkdir -p "$HOME"
+  '';
 
   meta = with lib; {
     homepage = https://conan.io;
diff --git a/pkgs/development/tools/build-managers/doit/default.nix b/pkgs/development/tools/build-managers/doit/default.nix
index 200ec6429a79..aeeb4dbd7798 100644
--- a/pkgs/development/tools/build-managers/doit/default.nix
+++ b/pkgs/development/tools/build-managers/doit/default.nix
@@ -3,14 +3,14 @@
 let
 
   name = "doit";
-  version = "0.30.3";
+  version = "0.31.0";
 
 in python3Packages.buildPythonApplication {
   name = "${name}-${version}";
 
   src = fetchurl {
     url = "mirror://pypi/d/${name}/${name}-${version}.tar.gz";
-    sha256 = "1fcsslc3mc4bszq5xdqbxv37720s1s31d6pbfwc2iyxk1x2wi219";
+    sha256 = "0v1yr04bfqnz3sp261np3zhf0y1b3a1daxc83iq308lscf39fdgx";
   };
 
   buildInputs = with python3Packages; [ mock pytest ];
diff --git a/pkgs/development/tools/build-managers/icmake/default.nix b/pkgs/development/tools/build-managers/icmake/default.nix
index 4a37ca011c28..2f4daa2edc86 100644
--- a/pkgs/development/tools/build-managers/icmake/default.nix
+++ b/pkgs/development/tools/build-managers/icmake/default.nix
@@ -2,10 +2,10 @@
 
 stdenv.mkDerivation rec {
   name = "icmake-${version}";
-  version = "9.02.06";
+  version = "9.02.07";
 
   src = fetchFromGitHub {
-    sha256 = "1hs7fhqpkhlrjvjhfarf5bmxl8dw3r0immzdib27gwh3sfzgpx0b";
+    sha256 = "1q3rwri5s1sqm4h75bahkjnlym4bk2ygg4fb75yrniwnj8rhdp12";
     rev = version;
     repo = "icmake";
     owner = "fbb-git";
diff --git a/pkgs/development/tools/build-managers/meson/default.nix b/pkgs/development/tools/build-managers/meson/default.nix
index 5db0bce21f79..27aa38cfa7e1 100644
--- a/pkgs/development/tools/build-managers/meson/default.nix
+++ b/pkgs/development/tools/build-managers/meson/default.nix
@@ -1,5 +1,7 @@
-{ lib, python3Packages }:
-python3Packages.buildPythonApplication rec {
+{ lib, python3Packages, stdenv, targetPlatform, writeTextDir, m4 }: let
+  targetPrefix = lib.optionalString stdenv.isCross
+                   (targetPlatform.config + "-");
+in python3Packages.buildPythonApplication rec {
   version = "0.44.0";
   pname = "meson";
   name = "${pname}-${version}";
@@ -33,6 +35,26 @@ python3Packages.buildPythonApplication rec {
 
   setupHook = ./setup-hook.sh;
 
+  crossFile = writeTextDir "cross-file.conf" ''
+    [binaries]
+    c = '${targetPrefix}cc'
+    cpp = '${targetPrefix}c++'
+    ar = '${targetPrefix}ar'
+    strip = '${targetPrefix}strip'
+    pkgconfig = 'pkg-config'
+
+    [properties]
+    needs_exe_wrapper = true
+
+    [host_machine]
+    system = '${targetPlatform.parsed.kernel.name}'
+    cpu_family = '${targetPlatform.parsed.cpu.family}'
+    cpu = '${targetPlatform.parsed.cpu.name}'
+    endian = ${if targetPlatform.isLittleEndian then "'little'" else "'big'"}
+  '';
+
+  inherit (stdenv) cc isCross;
+
   meta = with lib; {
     homepage = http://mesonbuild.com;
     description = "SCons-like build system that use python as a front-end language and Ninja as a building backend";
diff --git a/pkgs/development/tools/build-managers/meson/setup-hook.sh b/pkgs/development/tools/build-managers/meson/setup-hook.sh
index 8f96e6146be0..341b1ff9e6eb 100644
--- a/pkgs/development/tools/build-managers/meson/setup-hook.sh
+++ b/pkgs/development/tools/build-managers/meson/setup-hook.sh
@@ -6,11 +6,15 @@ mesonConfigurePhase() {
     fi
 
     # Build release by default.
-    mesonFlags="--buildtype=${mesonBuildType:-release} $mesonFlags"
+    if [ -n "@isCross@" ]; then
+      crossMesonFlags="--cross-file=@crossFile@/cross-file.conf"
+    fi
+
+    mesonFlags="${crossMesonFlags+$crossMesonFlags }--buildtype=${mesonBuildType:-release} $mesonFlags"
 
     echo "meson flags: $mesonFlags ${mesonFlagsArray[@]}"
 
-    meson build $mesonFlags "${mesonFlagsArray[@]}"
+    CC=@cc@/bin/cc CXX=@cc@/bin/c++ meson build $mesonFlags "${mesonFlagsArray[@]}"
     cd build
 
     if ! [[ -v enableParallelBuilding ]]; then
@@ -29,7 +33,7 @@ fi
 mesonCheckPhase() {
     runHook preCheck
 
-    meson test
+    meson test --print-errorlogs
 
     runHook postCheck
 }
diff --git a/pkgs/development/tools/doctl/default.nix b/pkgs/development/tools/doctl/default.nix
index a28e4a32168d..14c5eab8cd68 100644
--- a/pkgs/development/tools/doctl/default.nix
+++ b/pkgs/development/tools/doctl/default.nix
@@ -4,8 +4,8 @@ buildGoPackage rec {
   name = "doctl-${version}";
   version = "${major}.${minor}.${patch}";
   major = "1";
-  minor = "5";
-  patch = "0";
+  minor = "7";
+  patch = "2";
   goPackagePath = "github.com/digitalocean/doctl";
 
   excludedPackages = ''\(doctl-gen-doc\|install-doctl\|release-doctl\)'';
@@ -21,7 +21,7 @@ buildGoPackage rec {
     owner = "digitalocean";
     repo = "doctl";
     rev = "v${version}";
-    sha256 = "0dk7l4b0ngqkwdlx8qgr99jzipyzazvkv7dybi75dnp725lwxkl2";
+    sha256 = "1nkyl5274mbdf4j60f2sj0kvvppcpccf7xws11c9vj9c3zxs7r97";
   };
 
   meta = {
diff --git a/pkgs/development/tools/documentation/gtk-doc/default.nix b/pkgs/development/tools/documentation/gtk-doc/default.nix
index a176c5cb7645..5414abff66ae 100644
--- a/pkgs/development/tools/documentation/gtk-doc/default.nix
+++ b/pkgs/development/tools/documentation/gtk-doc/default.nix
@@ -1,13 +1,17 @@
 { stdenv, fetchurl, autoreconfHook, pkgconfig, perl, python, libxml2Python, libxslt, which
 , docbook_xml_dtd_43, docbook_xsl, gnome-doc-utils, dblatex, gettext, itstool }:
 
+let
+  pythonEnv = python.withPackages (ps: with ps; [ six ]);
+in
+
 stdenv.mkDerivation rec {
   name = "gtk-doc-${version}";
-  version = "1.25";
+  version = "1.27";
 
   src = fetchurl {
     url = "mirror://gnome/sources/gtk-doc/${version}/${name}.tar.xz";
-    sha256 = "0hpxcij9xx9ny3gs9p0iz4r8zslw8wqymbyababiyl7603a6x90y";
+    sha256 = "0vwsdl61nvnmqswlz5j9m4hg7qirhazwcikcnqf9nx0c13vx6sz2";
   };
 
   patches = [
@@ -18,7 +22,7 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ autoreconfHook ];
   buildInputs =
-   [ pkgconfig perl python libxml2Python libxslt docbook_xml_dtd_43 docbook_xsl
+   [ pkgconfig perl pythonEnv libxml2Python libxslt docbook_xml_dtd_43 docbook_xsl
      gnome-doc-utils dblatex gettext which itstool
    ];
 
diff --git a/pkgs/development/tools/documentation/mkdocs/default.nix b/pkgs/development/tools/documentation/mkdocs/default.nix
index b6daade32e78..95c2a6a28a78 100644
--- a/pkgs/development/tools/documentation/mkdocs/default.nix
+++ b/pkgs/development/tools/documentation/mkdocs/default.nix
@@ -4,14 +4,14 @@ with python.pkgs;
 
 buildPythonApplication rec {
   pname = "mkdocs";
-  version = "0.17.2";
+  version = "0.17.3";
   name = "${pname}-${version}";
 
   src = fetchFromGitHub {
     owner = "mkdocs";
     repo = "mkdocs";
     rev = version;
-    sha256 = "0hpjs9qj0nr57a249yv8xvl61d3d2rrdfqxp1fm28z77l2xjj772";
+    sha256 = "15lv60gdc837zja5kn2rfp78kwyb1ckc43jg01zfzqra4qz7b6rw";
   };
 
   checkInputs = [
diff --git a/pkgs/development/tools/flyway/default.nix b/pkgs/development/tools/flyway/default.nix
index 11e2c6d2c5a4..43026e55e7f3 100644
--- a/pkgs/development/tools/flyway/default.nix
+++ b/pkgs/development/tools/flyway/default.nix
@@ -23,7 +23,7 @@
         description = "Evolve your Database Schema easily and reliably across all your instances";
         homepage = "https://flywaydb.org/";
         license = licenses.asl20;
-        platforms = platforms.linux;
+        platforms = platforms.unix;
         maintainers = [ maintainers.cmcdragonkai ];
       };
     }
diff --git a/pkgs/development/tools/fmbt/default.nix b/pkgs/development/tools/fmbt/default.nix
new file mode 100644
index 000000000000..11880213bada
--- /dev/null
+++ b/pkgs/development/tools/fmbt/default.nix
@@ -0,0 +1,53 @@
+{ stdenv, fetchFromGitHub, python, autoreconfHook, pkgconfig, makeWrapper
+, flex
+, gettext, libedit, glib, imagemagick, libxml2, boost, gnuplot, graphviz
+, tesseract, gts, libXtst
+}:
+stdenv.mkDerivation rec {
+  version = "0.39";
+  name = "fMBT-${version}";
+
+  src = fetchFromGitHub {
+    owner = "intel";
+    repo = "fMBT";
+    rev = "v${version}";
+    sha256 = "15sxwdcsjybq50vkla4md2ay8m67ndc4vwcsl5vwsjkim5qlxslb";
+  };
+
+  nativeBuildInputs = [ autoreconfHook pkgconfig flex makeWrapper
+    python.pkgs.wrapPython ];
+
+  buildInputs = [ python gettext libedit glib imagemagick libxml2 boost
+    gnuplot graphviz tesseract gts 
+    ];
+
+  propagatedBuildInputs = with python.pkgs; [
+    pyside pydbus pexpect pysideShiboken
+  ];
+
+  preBuild = ''
+    export PYTHONPATH="$PYTHONPATH:$out/lib/python${python.pythonVersion}/site-packages"
+    export PATH="$PATH:$out/bin"
+    export LD_LIBRARY_PATH="${stdenv.lib.makeLibraryPath [libXtst]}"
+  '';
+
+  postInstall = ''
+    echo -e '#! ${stdenv.shell}\npython "$@"' > "$out/bin/fmbt-python"
+    chmod a+x "$out/bin/fmbt-python"
+    patchShebangs "$out/bin"
+    for i in "$out"/bin/*; do
+      wrapProgram "$i" --suffix "PATH" ":" "$PATH" \
+        --suffix "PYTHONPATH" ":" "$PYTHONPATH" \
+        --suffix "LD_LIBRARY_PATH" ":" "$LD_LIBRARY_PATH"
+    done
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Free Model-Based Testing tool";
+    homepage = "https://github.com/intel/fMBT";
+    license = licenses.lgpl21;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ raskin ];
+  };
+}
+
diff --git a/pkgs/development/tools/gauge/default.nix b/pkgs/development/tools/gauge/default.nix
index f1533f551b2e..58bc24e1ec64 100644
--- a/pkgs/development/tools/gauge/default.nix
+++ b/pkgs/development/tools/gauge/default.nix
@@ -2,15 +2,16 @@
 
 buildGoPackage rec {
   name = "gauge-${version}";
-  version = "0.9.6";
+  version = "0.9.7";
 
   goPackagePath = "github.com/getgauge/gauge";
+  excludedPackages = ''\(build\|man\)'';
 
   src = fetchFromGitHub {
     owner = "getgauge";
     repo = "gauge";
     rev = "v${version}";
-    sha256 = "0p2bnrzgx616jbyr9h4h9azaq7ry63z4qkwgy0ivwrpmhfqfqwmh";
+    sha256 = "09afsi97yxlqwmrxvihravqvz17m7y402gbw4hvdk0iixa6jpq6a";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/tools/gllvm/default.nix b/pkgs/development/tools/gllvm/default.nix
new file mode 100644
index 000000000000..58ee7699b459
--- /dev/null
+++ b/pkgs/development/tools/gllvm/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "gllvm-${version}";
+  version = "2018-02-09";
+
+  goPackagePath = "github.com/SRI-CSL/gllvm";
+
+  src = fetchFromGitHub {
+    owner = "SRI-CSL";
+    repo = "gllvm";
+    rev = "ef83222afd22452dd1277329df227a326db9f84f";
+    sha256 = "068mc8q7jmpjzh6pr0ygvv39mh4k7vz0dmiacxf3pdsigy3d1y1a";
+  };
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/SRI-CSL/gllvm;
+    description = "Whole Program LLVM: wllvm ported to go";
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ dtzWill ];
+  };
+}
diff --git a/pkgs/development/tools/gnulib/default.nix b/pkgs/development/tools/gnulib/default.nix
index f11bb83a74ab..4ca3bf5e0741 100644
--- a/pkgs/development/tools/gnulib/default.nix
+++ b/pkgs/development/tools/gnulib/default.nix
@@ -1,17 +1,16 @@
 { stdenv, fetchgit }:
 
 stdenv.mkDerivation {
-  name = "gnulib-0.1-357-gffe6467";
-
-  phases = ["unpackPhase" "installPhase"];
+  name = "gnulib-20180226";
 
   src = fetchgit {
     url = "http://git.savannah.gnu.org/r/gnulib.git";
-    rev = "92b60e61666f008385d9b7f7443da17c7a44d1b1";
-    sha256 = "0sa1dndvaxhw0zyc19al5cmpgzlwnnznjz89lw1b4vj3xn7avjnr";
+    rev = "0bec5d56c6938c2f28417bb5fd1c4b05ea2e7d28";
+    sha256 = "0sifr3bkmhyr5s6ljgfyr0fw6w49ajf11rlp1r797f3r3r6j9w4k";
   };
 
   installPhase = "mkdir -p $out; mv * $out/";
+  dontFixup = true;
 
   meta = {
     homepage = http://www.gnu.org/software/gnulib/;
diff --git a/pkgs/development/tools/go-langserver/default.nix b/pkgs/development/tools/go-langserver/default.nix
new file mode 100644
index 000000000000..84efaf2a4b63
--- /dev/null
+++ b/pkgs/development/tools/go-langserver/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "go-langserver-${version}";
+  version = "unstable-2018-03-05";
+  rev = "5d7a5dd74738978d635f709669241f164c120ebd";
+
+  goPackagePath = "github.com/sourcegraph/go-langserver";
+  subPackages = [ "." ];
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "sourcegraph";
+    repo = "go-langserver";
+    sha256 = "0aih0akk3wk3332znkhr2bzxcc3parijq7n089mdahnf20k69xyz";
+  };
+
+  meta = with stdenv.lib; {
+    description = "A Go language server protocol server";
+    homepage = https://github.com/sourcegraph/go-langserver;
+    license = licenses.mit;
+    maintainers = with maintainers; [ johnchildren ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/tools/guile/guile-lint/default.nix b/pkgs/development/tools/guile/guile-lint/default.nix
index 19441c540179..fd9347a4007f 100644
--- a/pkgs/development/tools/guile/guile-lint/default.nix
+++ b/pkgs/development/tools/guile/guile-lint/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
       "exec guile" "exec ${guile}/bin/guile"
   '';
 
-  doCheck = true;
+  doCheck = !stdenv.isDarwin;
 
   meta = with stdenv.lib; {
     description = "Checks syntax and semantics in a Guile program or module";
diff --git a/pkgs/development/tools/haskell/multi-ghc-travis/default.nix b/pkgs/development/tools/haskell/multi-ghc-travis/default.nix
index a259fd7d76ba..7efe556ebde0 100644
--- a/pkgs/development/tools/haskell/multi-ghc-travis/default.nix
+++ b/pkgs/development/tools/haskell/multi-ghc-travis/default.nix
@@ -8,9 +8,10 @@ mkDerivation {
   src = fetchFromGitHub {
     owner = "haskell-CI";
     repo = "haskell-ci";
-    rev = "36b2ee58b9fd160d606608832625b2b6c32aec43";
-    sha256 = "16g99jh5bszvfvb7mmyhl95mkf1l3ydyax8d9py91hi3m8r0c2x0";
+    rev = "7ca5d751c35c6dc43392397b4641c4611ed55121";
+    sha256 = "04f9jcxqv1mn0rw31x23ns6xdhgqjv55blsksadwr25qn2521zxb";
   };
+  jailbreak = true;
   isLibrary = true;
   isExecutable = true;
   libraryHaskellDepends = [
diff --git a/pkgs/development/tools/icestorm/default.nix b/pkgs/development/tools/icestorm/default.nix
index 0307027faa2e..b277957efa93 100644
--- a/pkgs/development/tools/icestorm/default.nix
+++ b/pkgs/development/tools/icestorm/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "icestorm-${version}";
-  version = "2018.02.14";
+  version = "2018.03.07";
 
   src = fetchFromGitHub {
     owner  = "cliffordwolf";
     repo   = "icestorm";
-    rev    = "edbf5fce90ff0e71922a54241a1aec914cc3e230";
-    sha256 = "01d6xv5c4x8w8lamc8n3vnqsyn7ykhh1ws7k96d6ij5fs52k94xb";
+    rev    = "535fde63613eccfeb7e5aad8ff97fbfb652a33b6";
+    sha256 = "1j2p961k1fsq1xq8fnrv0hpwrb948q12jkb479zmrfk61w6la0df";
   };
 
   nativeBuildInputs = [ pkgconfig ];
diff --git a/pkgs/development/tools/java/cfr/default.nix b/pkgs/development/tools/java/cfr/default.nix
index bfb37fc5f03b..c7cc05439763 100644
--- a/pkgs/development/tools/java/cfr/default.nix
+++ b/pkgs/development/tools/java/cfr/default.nix
@@ -1,28 +1,20 @@
-{ stdenv, fetchurl, jre }:
+{ stdenv, makeWrapper, fetchurl, jre }:
 
 stdenv.mkDerivation rec {
   name = "cfr-${version}";
-  version = "0_101";
+  version = "0_125";
 
   src = fetchurl {
-    sha256 = "0zwl3whypdm2qrw3hwaqjnifkb4wcdn8fx9scrjkli54bhr6dqch";
     url = "http://www.benf.org/other/cfr/cfr_${version}.jar";
+    sha256 = "1ad9ddg79cybv8j8l3mm67znyw54z5i55x4m9n239fn26p1ndawa";
   };
 
-  buildInputs = [ jre ];
+  buildInputs = [ makeWrapper ];
 
-  phases = [ "installPhase" ];
-
-  installPhase = ''
-    jar=$out/share/cfr/cfr_${version}.jar
-
-    install -Dm644 ${src} $jar
-
-    cat << EOF > cfr
-    #!${stdenv.shell}
-    exec ${jre}/bin/java -jar $jar "\''${@}"
-    EOF
-    install -Dm755 cfr $out/bin/cfr
+  buildCommand = ''
+    jar=$out/share/java/cfr_${version}.jar
+    install -Dm444 $src $jar
+    makeWrapper ${jre}/bin/java $out/bin/cfr --add-flags "-jar $jar"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/tools/json2hcl/default.nix b/pkgs/development/tools/json2hcl/default.nix
new file mode 100644
index 000000000000..d53b39021339
--- /dev/null
+++ b/pkgs/development/tools/json2hcl/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  pname = "json2hcl";
+  name = "${pname}-${version}";
+  version = "0.0.6";
+
+  src = fetchFromGitHub {
+    inherit owner;
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "0knil88n2w41w3nzqz6ljgfjkl5r3x0bh7ifqgiyf6sin3pl4pn0";
+  };
+
+  owner = "kvz";
+  goPackagePath = "github.com/${owner}/${pname}";
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "Convert JSON to HCL, and vice versa";
+    license = with licenses; [ mit ];
+    maintainers = [ maintainers.matthewbauer ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/development/tools/json2hcl/deps.nix b/pkgs/development/tools/json2hcl/deps.nix
new file mode 100644
index 000000000000..bb9df28ad87f
--- /dev/null
+++ b/pkgs/development/tools/json2hcl/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "github.com/Acconut/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/Acconut/hcl";
+      rev = "23c074d0eceb2b8a5bfdbb271ab780cde70f05a8";
+      sha256 = "0db4lpqb5m130rmfy3s3gjjf4dxllypmyrzxv6ggqhkmwmc7w4mc";
+    };
+  }
+  {
+    goPackagePath = "github.com/hashicorp/hcl";
+    fetch = {
+      type = "git";
+      url = "https://github.com/hashicorp/hcl";
+      rev = "23c074d0eceb2b8a5bfdbb271ab780cde70f05a8";
+      sha256 = "0db4lpqb5m130rmfy3s3gjjf4dxllypmyrzxv6ggqhkmwmc7w4mc";
+    };
+  }
+]
diff --git a/pkgs/development/tools/misc/autogen/default.nix b/pkgs/development/tools/misc/autogen/default.nix
index 77944297a972..660917ee9f1f 100644
--- a/pkgs/development/tools/misc/autogen/default.nix
+++ b/pkgs/development/tools/misc/autogen/default.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   nativeBuildInputs = [ which pkgconfig perl ]
     # autogen needs a build autogen when cross-compiling
     ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
-      buildPackages.autogen buildPackages.texinfo ];
+      buildPackages.buildPackages.autogen buildPackages.texinfo ];
   buildInputs = [
     guile libxml2
   ];
diff --git a/pkgs/development/tools/misc/automake/automake-1.15.x.nix b/pkgs/development/tools/misc/automake/automake-1.16.x.nix
index 507df5def0c1..43efcf462800 100644
--- a/pkgs/development/tools/misc/automake/automake-1.15.x.nix
+++ b/pkgs/development/tools/misc/automake/automake-1.16.x.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl, perl, autoconf, makeWrapper, doCheck ? false }:
 
 stdenv.mkDerivation rec {
-  name = "automake-1.15.1";
+  name = "automake-1.16";
 
   src = fetchurl {
     url = "mirror://gnu/automake/${name}.tar.xz";
-    sha256 = "1bzd9g32dfm4rsbw93ld9x7b5nc1y6i4m6zp032qf1i28a8s6sxg";
+    sha256 = "12jvcmkcmd5p14b41w9f7ixd3sca97pymd6lqbkwnl8qn6bjv3zr";
   };
 
   nativeBuildInputs = [ autoconf perl ];
diff --git a/pkgs/development/tools/misc/fsatrace/default.nix b/pkgs/development/tools/misc/fsatrace/default.nix
new file mode 100644
index 000000000000..e84aa0ef555a
--- /dev/null
+++ b/pkgs/development/tools/misc/fsatrace/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  name = "fsatrace-${version}";
+  version = "0.0.1-160";
+
+  src = fetchFromGitHub {
+    owner = "jacereda";
+    repo = "fsatrace";
+    rev = "2bf89d836e0156e68f121b0ffeedade7c9381f77";
+    sha256 = "0bndfmm0y738azwzf6m6xg6gjnrwcqlfjsampk67vga40yylwkbw";
+  };
+
+  preConfigure = ''
+    mkdir -p $out/libexec/${name}
+    export makeFlags=INSTALLDIR=$out/libexec/${name}
+  '';
+
+  postInstall = ''
+    mkdir -p $out/bin
+    ln -s $out/libexec/${name}/fsatrace $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/jacereda/fsatrace;
+    description = "filesystem access tracer";
+    license = licenses.isc;
+    maintainers = [ maintainers.peti ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/development/tools/misc/gdb/darwin-target-match.patch b/pkgs/development/tools/misc/gdb/darwin-target-match.patch
new file mode 100644
index 000000000000..1328d919503a
--- /dev/null
+++ b/pkgs/development/tools/misc/gdb/darwin-target-match.patch
@@ -0,0 +1,11 @@
+--- a/configure	2017-06-05 00:51:26.000000000 +0900
++++ b/configure	2018-03-06 23:12:58.000000000 +0900
+@@ -3603,7 +3603,7 @@
+     noconfigdirs="$noconfigdirs ld gprof"
+     noconfigdirs="$noconfigdirs sim target-rda"
+     ;;
+-  x86_64-*-darwin[912]*)
++  x86_64-*-darwin*)
+     noconfigdirs="$noconfigdirs ld gas gprof"
+     noconfigdirs="$noconfigdirs sim target-rda"
+     ;;
diff --git a/pkgs/development/tools/misc/gdb/default.nix b/pkgs/development/tools/misc/gdb/default.nix
index e068b908caf4..b5840d074668 100644
--- a/pkgs/development/tools/misc/gdb/default.nix
+++ b/pkgs/development/tools/misc/gdb/default.nix
@@ -35,7 +35,8 @@ stdenv.mkDerivation rec {
     sha256 = "0d2bpqk58fqlx21rbnk8mbcjlggzc9kb5sjirrfrrrjq70ka0qdg";
   };
 
-  patches = [ ./debug-info-from-env.patch ];
+  patches = [ ./debug-info-from-env.patch ]
+    ++ stdenv.lib.optional stdenv.isDarwin ./darwin-target-match.patch;
 
   nativeBuildInputs = [ pkgconfig texinfo perl setupDebugInfoDirs ]
     # TODO(@Ericson2314) not sure if should be host or target
diff --git a/pkgs/development/tools/misc/global/default.nix b/pkgs/development/tools/misc/global/default.nix
index 35126c85d3fe..296d9673d8f1 100644
--- a/pkgs/development/tools/misc/global/default.nix
+++ b/pkgs/development/tools/misc/global/default.nix
@@ -4,11 +4,11 @@
 
 stdenv.mkDerivation rec {
   name = "global-${version}";
-  version = "6.5.7";
+  version = "6.6.2";
 
   src = fetchurl {
     url = "mirror://gnu/global/${name}.tar.gz";
-    sha256 = "0cnd7a7d1pl46yk15q6mnr9i9w3xi8pxgchw4ia9njgr4jjqzh6r";
+    sha256 = "0zvi5vxwiq0dy8mq2cgs64m8harxs0fvkmsnvi0ayb0w608lgij3";
   };
 
   nativeBuildInputs = [ libtool makeWrapper ];
diff --git a/pkgs/development/tools/misc/intel-gpu-tools/default.nix b/pkgs/development/tools/misc/intel-gpu-tools/default.nix
index 3d8b29e4ebc2..775a31df2b17 100644
--- a/pkgs/development/tools/misc/intel-gpu-tools/default.nix
+++ b/pkgs/development/tools/misc/intel-gpu-tools/default.nix
@@ -3,11 +3,11 @@
 , procps, autoreconfHook, utilmacros, gnome2 }:
 
 stdenv.mkDerivation rec {
-  name = "intel-gpu-tools-1.21";
+  name = "intel-gpu-tools-1.22";
 
   src = fetchurl {
     url = "http://xorg.freedesktop.org/archive/individual/app/${name}.tar.xz";
-    sha256 = "0gvh317dg5c7kvjxxkh8g70hh3r3dc73mc4dzyvfa8nb4ix6xbyr";
+    sha256 = "0p4swf9577p6hzglw1lh2sz63wjkk37b7691saj2qw8ha7fc2rix";
   };
 
   nativeBuildInputs = [ pkgconfig utilmacros ];
diff --git a/pkgs/development/tools/misc/strace/default.nix b/pkgs/development/tools/misc/strace/default.nix
index 80d1a75e801d..f5da3f9daa4d 100644
--- a/pkgs/development/tools/misc/strace/default.nix
+++ b/pkgs/development/tools/misc/strace/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl, libunwind }:
+{ stdenv, fetchurl, perl, libunwind, buildPackages }:
 
 stdenv.mkDerivation rec {
   name = "strace-${version}";
@@ -9,11 +9,12 @@ stdenv.mkDerivation rec {
     sha256 = "0dsw6xcfrmygidp1dj2ch8cl8icrar7789snkb2r8gh78kdqhxjw";
   };
 
+  depsBuildBuild = [ buildPackages.stdenv.cc ];
   nativeBuildInputs = [ perl ];
 
-  buildInputs = [ libunwind ]; # support -k
+  buildInputs = stdenv.lib.optional libunwind.supportsHost [ libunwind ]; # support -k
 
-  configureFlags = stdenv.lib.optional stdenv.hostPlatform.isAarch64 "--enable-mpers=check";
+  configureFlags = stdenv.lib.optional (stdenv.hostPlatform.isAarch64 || stdenv.hostPlatform.isRiscV) "--enable-mpers=check";
 
   meta = with stdenv.lib; {
     homepage = http://strace.io/;
diff --git a/pkgs/development/tools/misc/travis/Gemfile b/pkgs/development/tools/misc/travis/Gemfile
index d52f576be243..788341de3fa6 100644
--- a/pkgs/development/tools/misc/travis/Gemfile
+++ b/pkgs/development/tools/misc/travis/Gemfile
@@ -1,3 +1,3 @@
 source "https://rubygems.org"
 
-gem "travis"
+gem "travis", "1.8.8"
diff --git a/pkgs/development/tools/misc/travis/Gemfile.lock b/pkgs/development/tools/misc/travis/Gemfile.lock
index 529be0793605..a1c8332a3d44 100644
--- a/pkgs/development/tools/misc/travis/Gemfile.lock
+++ b/pkgs/development/tools/misc/travis/Gemfile.lock
@@ -45,7 +45,7 @@ PLATFORMS
   ruby
 
 DEPENDENCIES
-  travis
+  travis (= 1.8.8)
 
 BUNDLED WITH
-   1.14.4
+   1.14.6
diff --git a/pkgs/development/tools/misc/travis/default.nix b/pkgs/development/tools/misc/travis/default.nix
index a520c4deb342..b5c5740e80ff 100644
--- a/pkgs/development/tools/misc/travis/default.nix
+++ b/pkgs/development/tools/misc/travis/default.nix
@@ -1,5 +1,10 @@
 { lib, bundlerEnv, ruby }:
 
+# Maintainer notes for updating
+# 1. increment version number in Gemfile
+# 2. run $ nix-shell --command "bundler install && bundix"
+#    in the travis directory in nixpkgs
+
 bundlerEnv {
   inherit ruby;
   pname = "travis";
diff --git a/pkgs/development/tools/misc/travis/gemset.nix b/pkgs/development/tools/misc/travis/gemset.nix
index 148923848beb..c9a54bd324c2 100644
--- a/pkgs/development/tools/misc/travis/gemset.nix
+++ b/pkgs/development/tools/misc/travis/gemset.nix
@@ -16,6 +16,7 @@
     version = "3.6.8";
   };
   ethon = {
+    dependencies = ["ffi"];
     source = {
       remotes = ["https://rubygems.org"];
       sha256 = "1i873cvma4j52xmij7kasjylh66vf60cy5prkp4cz4hcn9jlkznl";
@@ -24,6 +25,7 @@
     version = "0.10.1";
   };
   faraday = {
+    dependencies = ["multipart-post"];
     source = {
       remotes = ["https://rubygems.org"];
       sha256 = "18p1csdivgwmshfw3mb698a3bn0yrykg30khk5qxjf6n168g91jr";
@@ -32,6 +34,7 @@
     version = "0.11.0";
   };
   faraday_middleware = {
+    dependencies = ["faraday"];
     source = {
       remotes = ["https://rubygems.org"];
       sha256 = "0bcarc90brm1y68bl957w483bddsy9idj2gghqnysk6bbxpsvm00";
@@ -48,6 +51,7 @@
     version = "1.9.18";
   };
   gh = {
+    dependencies = ["addressable" "backports" "faraday" "multi_json" "net-http-persistent" "net-http-pipeline"];
     source = {
       remotes = ["https://rubygems.org"];
       sha256 = "0g4df0jsscq16g6f27flfmvk7p4sbq81d5mdylbz4ikqq60kywzg";
@@ -72,6 +76,7 @@
     version = "2.0.3";
   };
   launchy = {
+    dependencies = ["addressable"];
     source = {
       remotes = ["https://rubygems.org"];
       sha256 = "190lfbiy1vwxhbgn4nl4dcbzxvm049jwc158r2x7kq3g5khjrxa2";
@@ -112,6 +117,7 @@
     version = "1.0.1";
   };
   pusher-client = {
+    dependencies = ["json" "websocket"];
     source = {
       remotes = ["https://rubygems.org"];
       sha256 = "18ymxz34gmg7jff3h0nyzp5vdg5i06dbdxlrdl2nq4hf14qwj1f4";
@@ -120,6 +126,7 @@
     version = "0.6.2";
   };
   travis = {
+    dependencies = ["backports" "faraday" "faraday_middleware" "gh" "highline" "launchy" "pusher-client" "typhoeus"];
     source = {
       remotes = ["https://rubygems.org"];
       sha256 = "02bjz73f6r9b7nskwzcvcbr4hlvgwrf9rnr6d218d2i1rk4ww936";
@@ -128,6 +135,7 @@
     version = "1.8.8";
   };
   typhoeus = {
+    dependencies = ["ethon"];
     source = {
       remotes = ["https://rubygems.org"];
       sha256 = "03x3fxjsnhgayl4s96h0a9975awlvx2v9nmx2ba0cnliglyczdr8";
diff --git a/pkgs/development/tools/misc/travis/shell.nix b/pkgs/development/tools/misc/travis/shell.nix
new file mode 100644
index 000000000000..ddcf493bb468
--- /dev/null
+++ b/pkgs/development/tools/misc/travis/shell.nix
@@ -0,0 +1,11 @@
+# Env to update Gemfile.lock / gemset.nix
+
+with import <nixpkgs> {};
+stdenv.mkDerivation {
+  name = "env";
+  buildInputs = [
+    ruby.devEnv
+    gnumake
+    bundix
+  ];
+}
diff --git a/pkgs/development/tools/misc/usb-modeswitch/data.nix b/pkgs/development/tools/misc/usb-modeswitch/data.nix
index 0ad79005d91e..0fa854f9b2a1 100644
--- a/pkgs/development/tools/misc/usb-modeswitch/data.nix
+++ b/pkgs/development/tools/misc/usb-modeswitch/data.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "usb-modeswitch-data-${version}";
-  version = "20170205";
+  version = "20170806";
 
   src = fetchurl {
     url    = "http://www.draisberghof.de/usb_modeswitch/${name}.tar.bz2";
-    sha256 = "1l9q4xk02zd0l50bqhyk906wbcs26ji7259q0f7qv3cj52fzvp72";
+    sha256 = "0b1wari3aza6qjggqd0hk2zsh93k1q8scgmwh6f8wr0flpr3whff";
   };
 
   inherit (usb-modeswitch) makeFlags;
diff --git a/pkgs/development/tools/mypy/default.nix b/pkgs/development/tools/mypy/default.nix
index f06f9c6828c8..7e8725745c2e 100644
--- a/pkgs/development/tools/mypy/default.nix
+++ b/pkgs/development/tools/mypy/default.nix
@@ -2,14 +2,14 @@
 
 buildPythonApplication rec {
   pname = "mypy";
-  version = "0.560";
+  version = "0.570";
 
   # Tests not included in pip package.
   doCheck = false;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "1jja0xlwqajxzab8sabiycax8060zikg89dnl9a7lkqcrwprl35x";
+    sha256 = "09cz0h4d6xcdqlchw080nkjlwki3mgjrlvfnj5hxxwi3cgv9imw3";
   };
 
   propagatedBuildInputs = [ lxml typed-ast psutil ];
diff --git a/pkgs/development/tools/node-webkit/nw11.nix b/pkgs/development/tools/node-webkit/nw11.nix
deleted file mode 100644
index 5028ac9580c5..000000000000
--- a/pkgs/development/tools/node-webkit/nw11.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{ stdenv, fetchurl, buildEnv, makeWrapper
-, xorg, alsaLib, dbus, glib, gtk2, atk, pango, freetype, fontconfig
-, gdk_pixbuf, cairo, zlib, nss, nssTools, nspr, gconf, expat, systemd, libcap
-, libnotify}:
-let
-  bits = if stdenv.system == "x86_64-linux" then "x64"
-         else "ia32";
-
-  nwEnv = buildEnv {
-    name = "node-webkit-env";
-    paths = [
-      xorg.libX11 xorg.libXrender glib gtk2 atk pango cairo gdk_pixbuf
-      freetype fontconfig xorg.libXcomposite alsaLib xorg.libXdamage
-      xorg.libXext xorg.libXfixes nss nspr gconf expat dbus stdenv.cc
-      xorg.libXtst xorg.libXi xorg.libXcursor xorg.libXrandr libcap
-      libnotify
-    ];
-    
-    extraOutputsToInstall = [ "lib" "out" ];
-  };
-
-in stdenv.mkDerivation rec {
-  name = "node-webkit-${version}";
-  version = "0.11.2";
-
-  src = fetchurl {
-    url = "http://dl.node-webkit.org/v${version}/node-webkit-v${version}-linux-${bits}.tar.gz";
-    sha256 = if bits == "x64" then
-      "1iby0yrnbk9xfcsfz59f6g00l6rxiyxvq78shs0c145ky7lknq5q" else
-      "1hk3c9z3kwmqaj87vc5k1a7fv8jhkyqw1wjmsl3q5i50w880h398";
-  };
-
-  installPhase = ''
-    mkdir -p $out/share/node-webkit
-    cp -R * $out/share/node-webkit
-
-    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/share/node-webkit/nw
-    patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/share/node-webkit/nwsnapshot
-
-    ln -s ${systemd.lib}/lib/libudev.so $out/share/node-webkit/libudev.so.0
-
-    patchelf --set-rpath "${nwEnv}/lib:${nwEnv}/lib64:$out/share/node-webkit" $out/share/node-webkit/nw
-    patchelf --set-rpath "${nwEnv}/lib:${nwEnv}/lib64:$out/share/node-webkit" $out/share/node-webkit/nwsnapshot
-
-    mkdir -p $out/bin
-    ln -s $out/share/node-webkit/nw $out/bin
-    ln -s $out/share/node-webkit/nwsnapshot $out/bin
-  '';
-
-  buildInputs = [ makeWrapper ];
-
-  meta = with stdenv.lib; {
-    description = "An app runtime based on Chromium and node.js";
-    homepage = https://github.com/rogerwang/node-webkit;
-    platforms = ["i686-linux" "x86_64-linux"];
-    maintainers = [ maintainers.offline ];
-    license = licenses.bsd3;
-  };
-}
diff --git a/pkgs/development/tools/nwjs/default.nix b/pkgs/development/tools/nwjs/default.nix
new file mode 100644
index 000000000000..6a2995b2bbe0
--- /dev/null
+++ b/pkgs/development/tools/nwjs/default.nix
@@ -0,0 +1,87 @@
+{ stdenv, fetchurl, buildEnv, makeWrapper
+
+, xorg, alsaLib, dbus, glib, gtk2, gtk3, atk, pango, freetype, fontconfig
+, gdk_pixbuf, cairo, zlib, nss, nssTools, nspr, gconf, expat, systemd, libcap
+, libnotify
+, ffmpeg, libxcb, libXScrnSaver, cups
+, sqlite, udev
+}:
+let
+  bits = if stdenv.system == "x86_64-linux" then "x64"
+         else "ia32";
+
+  nwEnv = buildEnv {
+    name = "nwjs-env";
+    paths = [
+      xorg.libX11 xorg.libXrender glib /*gtk2*/ gtk3 atk pango cairo gdk_pixbuf
+      freetype fontconfig xorg.libXcomposite alsaLib xorg.libXdamage
+      xorg.libXext xorg.libXfixes nss nspr gconf expat dbus
+      xorg.libXtst xorg.libXi xorg.libXcursor xorg.libXrandr
+      xorg.libXScrnSaver cups
+      libcap libnotify
+      # libnw-specific (not chromium dependencies)
+      ffmpeg libxcb
+      # chromium runtime deps (dlopen’d)
+      sqlite udev
+    ];
+
+    extraOutputsToInstall = [ "lib" "out" ];
+  };
+
+in stdenv.mkDerivation rec {
+  name = "nwjs-${version}";
+  version = "0.23.6";
+
+  src = fetchurl {
+    url = "http://dl.nwjs.io/v${version}/nwjs-v${version}-linux-${bits}.tar.gz";
+    sha256 = if bits == "x64" then
+      "0ppyjspdvacarhdn4xd5i1pqgmf4z1bxnh1cry780489h25rcjgj" else
+      "0c0j73vnzhsry5rdx41d954a29jmjnvzli728cfbjybfr51zdybg";
+  };
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  # we have runtime deps like sqlite3 that should remain
+  dontPatchELF = true;
+
+  installPhase =
+    let ccPath = stdenv.lib.makeLibraryPath [ stdenv.cc.cc ];
+    in ''
+      mkdir -p $out/share/nwjs
+      cp -R * $out/share/nwjs
+      find $out/share/nwjs
+
+      patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/share/nwjs/nw
+
+      ln -s ${systemd.lib}/lib/libudev.so $out/share/nwjs/libudev.so.0
+
+      libpath="$out/share/nwjs/lib/"
+      for f in "$libpath"/*.so; do
+        patchelf --set-rpath "${nwEnv}/lib:${ccPath}:$libpath" "$f"
+      done
+      patchelf --set-rpath "${nwEnv}/lib:${nwEnv}/lib64:${ccPath}:$libpath" $out/share/nwjs/nw
+      # check, whether all RPATHs are correct (all dependencies found)
+      checkfile=$(mktemp)
+      for f in "$libpath"/*.so "$out/share/nwjs/nw"; do
+         (echo "$f:";
+          ldd "$f"  ) > "$checkfile"
+      done
+      if <"$checkfile" grep -e "not found"; then
+        cat "$checkfile"
+        exit 1
+      fi
+
+      mkdir -p $out/bin
+      ln -s $out/share/nwjs/nw $out/bin
+  '';
+
+  buildInputs = [ makeWrapper ];
+
+  meta = with stdenv.lib; {
+    description = "An app runtime based on Chromium and node.js";
+    homepage = http://nwjs.io/;
+    platforms = ["i686-linux" "x86_64-linux"];
+    maintainers = [ maintainers.offline ];
+    license = licenses.bsd3;
+  };
+}
diff --git a/pkgs/development/tools/parsing/antlr/4.7.nix b/pkgs/development/tools/parsing/antlr/4.7.nix
index 41b079bbd23b..f58d0f9904aa 100644
--- a/pkgs/development/tools/parsing/antlr/4.7.nix
+++ b/pkgs/development/tools/parsing/antlr/4.7.nix
@@ -2,10 +2,10 @@
 
 stdenv.mkDerivation rec {
   name = "antlr-${version}";
-  version = "4.7";
+  version = "4.7.1";
   src = fetchurl {
     url ="http://www.antlr.org/download/antlr-${version}-complete.jar";
-    sha256 = "0r08ay63s5aajix5j8j7lf7j7l7wiwdkr112b66nyhkj5f6c72yd";
+    sha256 = "1236gwnzchama92apb2swmklnypj01m7bdwwfvwvl8ym85scw7gl";
   };
 
   unpackPhase = "true";
diff --git a/pkgs/development/tools/parsing/jshon/default.nix b/pkgs/development/tools/parsing/jshon/default.nix
index 5406b4e9a0e5..359daad2d517 100644
--- a/pkgs/development/tools/parsing/jshon/default.nix
+++ b/pkgs/development/tools/parsing/jshon/default.nix
@@ -1,10 +1,10 @@
 { stdenv, lib, fetchFromGitHub, fetchpatch, jansson }:
 
 stdenv.mkDerivation rec {
-  name = "jshon-20140712";
+  name = "jshon-20160111.2";
 
   rev = "a61d7f2f85f4627bc3facdf951746f0fd62334b7";
-  sha256 = "b0365e58553b9613a5636545c5bfd4ad05ab5024f192e1cb1d1824bae4e1a380";
+  sha256 = "1053w7jbl90q3p5y34pi4i8an1ddsjzwaib5cfji75ivamc5wdmh";
 
   src = fetchFromGitHub {
     inherit rev sha256;
diff --git a/pkgs/development/tools/parsing/re2c/default.nix b/pkgs/development/tools/parsing/re2c/default.nix
index dcf89d1604d9..da1bcced32ec 100644
--- a/pkgs/development/tools/parsing/re2c/default.nix
+++ b/pkgs/development/tools/parsing/re2c/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   name = "re2c-${version}";
-  version = "0.16";
+  version = "1.0.3";
 
   sourceRoot = "${src.name}/re2c";
 
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
     owner  = "skvadrik";
     repo   = "re2c";
     rev    = version;
-    sha256 = "0cijgmbyx34nwl2jmsswggkgvzy364871rkbxz8biq9x8xrhhjw5";
+    sha256 = "0grx7nl9fwcn880v5ssjljhcb9c5p2a6xpwil7zxpmv0rwnr3yqi";
   };
 
   nativeBuildInputs = [ autoreconfHook ];
diff --git a/pkgs/development/tools/pew/default.nix b/pkgs/development/tools/pew/default.nix
index 6eb3e88a0d13..73046165b1ab 100644
--- a/pkgs/development/tools/pew/default.nix
+++ b/pkgs/development/tools/pew/default.nix
@@ -29,4 +29,4 @@ with python3Packages; buildPythonApplication rec {
       platforms = platforms.all;
       maintainers = with maintainers; [ berdario ];
     };
-  }
\ No newline at end of file
+  }
diff --git a/pkgs/development/tools/pipenv/default.nix b/pkgs/development/tools/pipenv/default.nix
index de2e6eb96a81..c5c406ef36c0 100644
--- a/pkgs/development/tools/pipenv/default.nix
+++ b/pkgs/development/tools/pipenv/default.nix
@@ -2,11 +2,11 @@
 with python3Packages; buildPythonApplication rec {
     name = "${pname}-${version}";
     pname = "pipenv";
-    version = "10.1.0";
+    version = "10.1.2";
 
     src = fetchPypi {
       inherit pname version;
-      sha256 = "3732350e3cd8cc033d66748c418bab4b018dc0a4fcf1687f17a103ac44eac0c6";
+      sha256 = "ce6dbb305fb1f262dba0dcb50c06591e4d146f7bfe079cc9f0ce3f89c7516ae9";
     };
 
     LC_ALL = "en_US.UTF-8";
diff --git a/pkgs/development/tools/rtags/default.nix b/pkgs/development/tools/rtags/default.nix
index 13fbea3fc231..a2c75a02aa28 100644
--- a/pkgs/development/tools/rtags/default.nix
+++ b/pkgs/development/tools/rtags/default.nix
@@ -32,6 +32,6 @@ stdenv.mkDerivation rec {
     description = "C/C++ client-server indexer based on clang";
     homepage = https://github.com/andersbakken/rtags;
     license = stdenv.lib.licenses.gpl3;
-    platforms = stdenv.lib.platforms.allBut [ "i686-linux" ];
+    platforms = with stdenv.lib.platforms; x86_64 ++ aarch64;
   };
 }
diff --git a/pkgs/development/tools/sassc/default.nix b/pkgs/development/tools/sassc/default.nix
index 326fa84f472a..5598dc1606d9 100644
--- a/pkgs/development/tools/sassc/default.nix
+++ b/pkgs/development/tools/sassc/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "sassc-${version}";
-  version = "3.4.8";
+  version = "3.5.0";
 
   src = fetchurl {
     url = "https://github.com/sass/sassc/archive/${version}.tar.gz";
-    sha256 = "02lnibrl6zgczkhvz01bdp0d2b0rbl69dfv5mdnbr4l8km7sa7b1";
+    sha256 = "0hl0j4ky13fzcv2y7w352gaq8fjmypwgazf7ddqdv0sbj8qlxx96";
   };
 
   patchPhase = ''
diff --git a/pkgs/development/tools/selenium/chromedriver/default.nix b/pkgs/development/tools/selenium/chromedriver/default.nix
index 554a5585f150..d5671b974f59 100644
--- a/pkgs/development/tools/selenium/chromedriver/default.nix
+++ b/pkgs/development/tools/selenium/chromedriver/default.nix
@@ -6,7 +6,7 @@ let
   allSpecs = {
     "x86_64-linux" = {
       system = "linux64";
-      sha256 = "13iyz6579yw4fk9dr4nf2pdj55v1iflj8yf9a4zz7qw5996d5yk7";
+      sha256 = "1m119kbsr6gm8a37q92rflp5mp3fjzw8cy4r5j4bnihkai7khq94";
     };
 
     "x86_64-darwin" = {
@@ -28,7 +28,7 @@ let
 in
 stdenv.mkDerivation rec {
   name = "chromedriver-${version}";
-  version = "2.35";
+  version = "2.36";
 
   src = fetchurl {
     url = "http://chromedriver.storage.googleapis.com/${version}/chromedriver_${spec.system}.zip";
diff --git a/pkgs/development/tools/vcstool/default.nix b/pkgs/development/tools/vcstool/default.nix
index 51e066f3d390..0822b33aef00 100644
--- a/pkgs/development/tools/vcstool/default.nix
+++ b/pkgs/development/tools/vcstool/default.nix
@@ -6,11 +6,11 @@ with python3Packages;
 buildPythonApplication rec {
   name = "${pname}-${version}";
   pname = "vcstool";
-  version = "0.1.31";
+  version = "0.1.33";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0n2zkvy2km9ky9lljf1mq5nqyqi5qqzfy2a6sgkjg2grvsk7abxc";
+    sha256 = "1140d3ecafb2c42c2c1a309950c7f327b09b548c00fbf6e37c8f44b8a610dfbc";
   };
 
   propagatedBuildInputs = [ pyyaml ];
diff --git a/pkgs/development/tools/wllvm/default.nix b/pkgs/development/tools/wllvm/default.nix
index 19bdb1cd9ef7..c78767e115a2 100644
--- a/pkgs/development/tools/wllvm/default.nix
+++ b/pkgs/development/tools/wllvm/default.nix
@@ -1,13 +1,13 @@
 { stdenv, python3Packages }:
 
 python3Packages.buildPythonApplication rec {
-  version = "1.1.3";
+  version = "1.1.5";
   pname = "wllvm";
   name = "${pname}-${version}";
 
   src = python3Packages.fetchPypi {
     inherit pname version;
-    sha256 = "1scv9bwr888x2km8njg0000xkj8pz73c0gjbphhqaj8vy87y25cb";
+    sha256 = "02lnilhqz7mq0w6mp574rmjxiszp1wyla16jqr89r0z9vjg2j9rv";
   };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/tools/yarn2nix/bin/yarn2nix.js b/pkgs/development/tools/yarn2nix/bin/yarn2nix.js
new file mode 100755
index 000000000000..3eadea559032
--- /dev/null
+++ b/pkgs/development/tools/yarn2nix/bin/yarn2nix.js
@@ -0,0 +1,144 @@
+#!/usr/bin/env node
+"use strict";
+
+const crypto = require('crypto');
+const fs = require("fs");
+const https = require("https");
+const path = require("path");
+const util = require("util");
+
+const lockfile = require("@yarnpkg/lockfile")
+const docopt = require("docopt").docopt;
+
+////////////////////////////////////////////////////////////////////////////////
+
+const USAGE = `
+Usage: yarn2nix [options]
+
+Options:
+  -h --help        Shows this help.
+  --no-nix         Hide the nix output
+  --no-patch       Don't patch the lockfile if hashes are missing
+  --lockfile=FILE  Specify path to the lockfile [default: ./yarn.lock].
+`
+
+const HEAD = `
+{fetchurl, linkFarm}: rec {
+  offline_cache = linkFarm "offline" packages;
+  packages = [
+`.trim();
+
+////////////////////////////////////////////////////////////////////////////////
+
+function generateNix(lockedDependencies) {
+  let found = {};
+
+  console.log(HEAD)
+
+  for (var depRange in lockedDependencies) {
+    let dep = lockedDependencies[depRange];
+
+    let depRangeParts = depRange.split('@');
+    let [url, sha1] = dep["resolved"].split("#");
+    let file_name = path.basename(url)
+
+    if (found.hasOwnProperty(file_name)) {
+      continue;
+    } else {
+      found[file_name] = null;
+    }
+
+
+    console.log(`
+    {
+      name = "${file_name}";
+      path = fetchurl {
+        name = "${file_name}";
+        url  = "${url}";
+        sha1 = "${sha1}";
+      };
+    }`)
+  }
+
+  console.log("  ];")
+  console.log("}")
+}
+
+
+function getSha1(url) {
+  return new Promise((resolve, reject) => {
+    https.get(url, (res) => {
+      const { statusCode } = res;
+      const hash = crypto.createHash('sha1');
+      if (statusCode !== 200) {
+        const err = new Error('Request Failed.\n' +
+                          `Status Code: ${statusCode}`);
+        // consume response data to free up memory
+        res.resume();
+        reject(err);
+      }
+
+      res.on('data', (chunk) => { hash.update(chunk); });
+      res.on('end', () => { resolve(hash.digest('hex')) });
+      res.on('error', reject);
+    });
+  });
+};
+
+function updateResolvedSha1(pkg) {
+  // local dependency
+  if (!pkg.resolved) { return Promise.resolve(); }
+  let [url, sha1] = pkg.resolved.split("#", 2)
+  if (!sha1) {
+    return new Promise((resolve, reject) => {
+      getSha1(url).then(sha1 => {
+        pkg.resolved = `${url}#${sha1}`;
+        resolve();
+      }).catch(reject);
+    });
+  } else {
+    // nothing to do
+    return Promise.resolve();
+  };
+}
+
+function values(obj) {
+  var entries = [];
+  for (let key in obj) {
+    entries.push(obj[key]);
+  }
+  return entries;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Main
+////////////////////////////////////////////////////////////////////////////////
+
+var options = docopt(USAGE);
+
+let data = fs.readFileSync(options['--lockfile'], 'utf8')
+let json = lockfile.parse(data)
+if (json.type != "success") {
+  throw new Error("yarn.lock parse error")
+}
+
+// Check fore missing hashes in the yarn.lock and patch if necessary
+var pkgs = values(json.object);
+Promise.all(pkgs.map(updateResolvedSha1)).then(() => {
+  let newData = lockfile.stringify(json.object);
+
+  if (newData != data) {
+    console.error("found changes in the lockfile", options["--lockfile"]);
+
+    if (options["--no-patch"]) {
+      console.error("...aborting");
+      process.exit(1);
+    }
+
+    fs.writeFileSync(options['--lockfile'], newData);
+  }
+
+  if (!options['--no-nix']) {
+    generateNix(json.object);
+  }
+})
diff --git a/pkgs/development/tools/yarn2nix/default.nix b/pkgs/development/tools/yarn2nix/default.nix
new file mode 100644
index 000000000000..e86c0aac2c99
--- /dev/null
+++ b/pkgs/development/tools/yarn2nix/default.nix
@@ -0,0 +1,199 @@
+{ stdenv, lib, fetchurl, linkFarm, runCommand, nodejs, yarn }:
+
+let
+  unlessNull = item: alt:
+    if item == null then alt else item;
+
+  yarn2nix = mkYarnPackage {
+    src = ./.;
+    yarnNix = ./yarn.nix;
+
+    passthru = {
+      inherit
+        defaultYarnFlags
+        linkNodeModulesHook
+        mkYarnModules
+        mkYarnNix
+        mkYarnPackage
+        # Export yarn again to make it easier to find out which yarn was used.
+        yarn
+        ;
+    };
+
+    meta = with lib; {
+      description = "generate nix expressions from a yarn.lock file";
+      homepage = "https://github.com/moretea/yarn2nix";
+      license = licenses.gpl3;
+      maintainers = with maintainers; [ manveru zimbatm ];
+    };
+  };
+
+  # Generates the yarn.nix from the yarn.lock file
+  mkYarnNix = yarnLock:
+    runCommand "yarn.nix" {}
+      "${yarn2nix}/bin/yarn2nix --lockfile ${yarnLock} --no-patch > $out";
+
+  # Loads the generated offline cache. This will be used by yarn as
+  # the package source.
+  importOfflineCache = yarnNix:
+    let
+      pkg = import yarnNix { inherit fetchurl linkFarm; };
+    in
+      pkg.offline_cache;
+
+  defaultYarnFlags = [
+    "--offline"
+    "--frozen-lockfile"
+    "--ignore-engines"
+    "--ignore-scripts"
+  ];
+
+  mkYarnModules = {
+    name,
+    packageJSON,
+    yarnLock,
+    yarnNix ? mkYarnNix yarnLock,
+    yarnFlags ? defaultYarnFlags,
+    pkgConfig ? {},
+    preBuild ? "",
+  }:
+    let
+      offlineCache = importOfflineCache yarnNix;
+      extraBuildInputs = (lib.flatten (builtins.map (key:
+        pkgConfig.${key} . buildInputs or []
+      ) (builtins.attrNames pkgConfig)));
+      postInstall = (builtins.map (key:
+        if (pkgConfig.${key} ? postInstall) then
+          ''
+            for f in $(find -L -path '*/node_modules/${key}' -type d); do
+              (cd "$f" && (${pkgConfig.${key}.postInstall}))
+            done
+          ''
+        else
+          ""
+      ) (builtins.attrNames pkgConfig));
+    in
+    stdenv.mkDerivation {
+      inherit name preBuild;
+      phases = ["configurePhase" "buildPhase"];
+      buildInputs = [ yarn nodejs ] ++ extraBuildInputs;
+
+      configurePhase = ''
+        # Yarn writes cache directories etc to $HOME.
+        export HOME=$PWD/yarn_home
+      '';
+
+      buildPhase = ''
+        runHook preBuild
+
+        cp ${packageJSON} ./package.json
+        cp ${yarnLock} ./yarn.lock
+        chmod +w ./yarn.lock
+
+        yarn config --offline set yarn-offline-mirror ${offlineCache}
+
+        # Do not look up in the registry, but in the offline cache.
+        # TODO: Ask upstream to fix this mess.
+        sed -i -E 's|^(\s*resolved\s*")https?://.*/|\1|' yarn.lock
+        yarn install ${lib.escapeShellArgs yarnFlags}
+
+        ${lib.concatStringsSep "\n" postInstall}
+
+        mkdir $out
+        mv node_modules $out/
+        patchShebangs $out
+      '';
+    };
+
+  # This can be used as a shellHook in mkYarnPackage. It brings the built node_modules into
+  # the shell-hook environment.
+  linkNodeModulesHook = ''
+    if [[ -d node_modules || -L node_modules ]]; then
+      echo "./node_modules is present. Replacing."
+      rm -rf node_modules
+    fi
+
+    ln -s "$node_modules" node_modules
+  '';
+
+  mkYarnPackage = {
+    name ? null,
+    src,
+    packageJSON ? src + "/package.json",
+    yarnLock ? src + "/yarn.lock",
+    yarnNix ? mkYarnNix yarnLock,
+    yarnFlags ? defaultYarnFlags,
+    yarnPreBuild ? "",
+    pkgConfig ? {},
+    extraBuildInputs ? [],
+    publishBinsFor ? null,
+    ...
+  }@attrs:
+    let
+      package = lib.importJSON packageJSON;
+      pname = package.name;
+      version = package.version;
+      deps = mkYarnModules {
+        name = "${pname}-modules-${version}";
+        preBuild = yarnPreBuild;
+        inherit packageJSON yarnLock yarnNix yarnFlags pkgConfig;
+      };
+      publishBinsFor_ = unlessNull publishBinsFor [pname];
+    in stdenv.mkDerivation (builtins.removeAttrs attrs ["pkgConfig"] // {
+      inherit src;
+
+      name = unlessNull name "${pname}-${version}";
+
+      buildInputs = [ yarn nodejs ] ++ extraBuildInputs;
+
+      node_modules = deps + "/node_modules";
+
+      configurePhase = attrs.configurePhase or ''
+        runHook preConfigure
+
+        if [ -d npm-packages-offline-cache ]; then
+          echo "npm-pacakges-offline-cache dir present. Removing."
+          rm -rf npm-packages-offline-cache
+        fi
+
+        if [[ -d node_modules || -L node_modules ]]; then
+          echo "./node_modules is present. Removing."
+          rm -rf node_modules
+        fi
+
+        mkdir -p node_modules
+        ln -s $node_modules/* node_modules/
+        ln -s $node_modules/.bin node_modules/
+
+        if [ -d node_modules/${pname} ]; then
+          echo "Error! There is already an ${pname} package in the top level node_modules dir!"
+          exit 1
+        fi
+
+        runHook postConfigure
+      '';
+
+      # Replace this phase on frontend packages where only the generated
+      # files are an interesting output.
+      installPhase = attrs.installPhase or ''
+        runHook preInstall
+
+        mkdir -p $out
+        cp -r node_modules $out/node_modules
+        cp -r . $out/node_modules/${pname}
+        rm -rf $out/node_modules/${pname}/node_modules
+
+        mkdir $out/bin
+        node ${./fixup_bin.js} $out ${lib.concatStringsSep " " publishBinsFor_}
+
+        runHook postInstall
+      '';
+
+      passthru = {
+        inherit package deps;
+      } // (attrs.passthru or {});
+
+      # TODO: populate meta automatically
+    });
+in
+  yarn2nix
diff --git a/pkgs/development/tools/yarn2nix/fixup_bin.js b/pkgs/development/tools/yarn2nix/fixup_bin.js
new file mode 100644
index 000000000000..dab1759c2046
--- /dev/null
+++ b/pkgs/development/tools/yarn2nix/fixup_bin.js
@@ -0,0 +1,45 @@
+#!/usr/bin/env node
+"use strict";
+
+/* Usage:
+ * node fixup_bin.js <output_dir> [<bin_pkg_1>, <bin_pkg_2> ... ]
+ */
+
+const fs = require("fs");
+const path = require("path");
+
+const output = process.argv[2];
+const packages_to_publish_bin = process.argv.slice(3);
+const derivation_bin_path = output + "/bin";
+
+function processPackage(name) {
+  console.log("Processing ", name);
+  const package_path = output + "/node_modules/" + name;
+  const package_json_path = package_path + "/package.json";
+  const package_json = JSON.parse(fs.readFileSync(package_json_path));
+
+  if (!package_json.bin) {
+    console.log("No binaries provided");
+    return;
+  }
+
+  // There are two alternative syntaxes for `bin`
+  // a) just a plain string, in which case the name of the package is the name of the binary.
+  // b) an object, where key is the name of the eventual binary, and the value the path to that binary.
+  if (typeof package_json.bin == "string") {
+    let bin_name = package_json.bin;
+    package_json.bin = { };
+    package_json.bin[package_json.name] = bin_name;
+  }
+
+  for (let binName in package_json.bin) {
+    const bin_path = package_json.bin[binName];
+    const full_bin_path = path.normalize(package_path + "/" + bin_path);
+    fs.symlinkSync(full_bin_path, derivation_bin_path + "/"+ binName);
+    console.log("Linked", binName);
+  }
+}
+
+packages_to_publish_bin.forEach((pkg) => {
+  processPackage(pkg);
+});
diff --git a/pkgs/development/tools/yarn2nix/package.json b/pkgs/development/tools/yarn2nix/package.json
new file mode 100644
index 000000000000..130eee67c560
--- /dev/null
+++ b/pkgs/development/tools/yarn2nix/package.json
@@ -0,0 +1,19 @@
+{
+  "name": "yarn2nix",
+  "version": "1.0.0",
+  "description": "Convert packages.json and yarn.lock into a Nix expression that downloads all the dependencies",
+  "main": "index.js",
+  "repository": ".",
+  "author": "Maarten Hoogendoorn <maarten@moretea.nl>",
+  "license": "MIT",
+  "scripts": {
+    "yarn2nix": "bin/yarn2nix.js"
+  },
+  "bin": {
+    "yarn2nix": "bin/yarn2nix.js"
+  },
+  "dependencies": {
+    "@yarnpkg/lockfile": "^1.0.0",
+    "docopt": "^0.6.2"
+  }
+}
diff --git a/pkgs/development/tools/yarn2nix/yarn.lock b/pkgs/development/tools/yarn2nix/yarn.lock
new file mode 100644
index 000000000000..976d2c530e1e
--- /dev/null
+++ b/pkgs/development/tools/yarn2nix/yarn.lock
@@ -0,0 +1,11 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@yarnpkg/lockfile@^1.0.0":
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.0.0.tgz#33d1dbb659a23b81f87f048762b35a446172add3"
+
+docopt@^0.6.2:
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/docopt/-/docopt-0.6.2.tgz#b28e9e2220da5ec49f7ea5bb24a47787405eeb11"
\ No newline at end of file
diff --git a/pkgs/development/tools/yarn2nix/yarn.nix b/pkgs/development/tools/yarn2nix/yarn.nix
new file mode 100644
index 000000000000..a9e42e7d986c
--- /dev/null
+++ b/pkgs/development/tools/yarn2nix/yarn.nix
@@ -0,0 +1,23 @@
+{fetchurl, linkFarm}: rec {
+  offline_cache = linkFarm "offline" packages;
+  packages = [
+
+    {
+      name = "lockfile-1.0.0.tgz";
+      path = fetchurl {
+        name = "lockfile-1.0.0.tgz";
+        url  = "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.0.0.tgz";
+        sha1 = "33d1dbb659a23b81f87f048762b35a446172add3";
+      };
+    }
+
+    {
+      name = "docopt-0.6.2.tgz";
+      path = fetchurl {
+        name = "docopt-0.6.2.tgz";
+        url  = "https://registry.yarnpkg.com/docopt/-/docopt-0.6.2.tgz";
+        sha1 = "b28e9e2220da5ec49f7ea5bb24a47787405eeb11";
+      };
+    }
+  ];
+}
diff --git a/pkgs/development/tools/yq/default.nix b/pkgs/development/tools/yq/default.nix
index 6fb7f8440ef4..c911cdb58250 100644
--- a/pkgs/development/tools/yq/default.nix
+++ b/pkgs/development/tools/yq/default.nix
@@ -1,25 +1,23 @@
-{ stdenv, lib, buildPythonApplication, fetchPypi, pyyaml, jq }:
+{ stdenv, lib, buildPythonApplication, fetchPypi, pyyaml, xmltodict, jq }:
 
 buildPythonApplication rec {
-
   pname = "yq";
-  version = "2.3.4";
+  version = "2.4.1";
 
-  propagatedBuildInputs = [ pyyaml jq ];
+  propagatedBuildInputs = [ pyyaml xmltodict jq ];
 
   # ValueError: underlying buffer has been detached
   doCheck = false;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "04ckrlmin8m176iicyfhddp4r0yry5hx306vhfglf8mcp1jkga78";
+    sha256 = "4833d4055b0f1c1f1a2fd292421b3472da39c7dc2727d7819efd11065a5fd310";
   };
 
   meta = with lib; {
     description = "Command-line YAML processor - jq wrapper for YAML documents.";
-    homepage = https://pypi.python.org/pypi/yq;
+    homepage = https://github.com/kislyuk/yq;
     license = [ licenses.asl20 ];
     maintainers = [ maintainers.womfoo ];
   };
-
 }