about 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/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/conan/default.nix10
-rw-r--r--pkgs/development/tools/build-managers/doit/default.nix4
-rw-r--r--pkgs/development/tools/documentation/gtk-doc/default.nix10
-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/go-langserver/default.nix25
-rw-r--r--pkgs/development/tools/haskell/multi-ghc-travis/default.nix4
-rw-r--r--pkgs/development/tools/icestorm/default.nix6
-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/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/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/mypy/default.nix4
-rw-r--r--pkgs/development/tools/parsing/jshon/default.nix4
-rw-r--r--pkgs/development/tools/selenium/chromedriver/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
35 files changed, 682 insertions, 42 deletions
diff --git a/pkgs/development/tools/analysis/checkstyle/default.nix b/pkgs/development/tools/analysis/checkstyle/default.nix
index 91037588552c9..6043e2d289d7f 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 97bd0d6e3dff8..02f44f4bf7047 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 f2481013fbbd5..ec4d19423e6d5 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 284bf26782feb..1be5655b1e533 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 158de9226c69a..d1320960f39ad 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 d131232e96d90..7fa39ef216278 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/conan/default.nix b/pkgs/development/tools/build-managers/conan/default.nix
index 4a2afbeedfe6f..6350798e1086e 100644
--- a/pkgs/development/tools/build-managers/conan/default.nix
+++ b/pkgs/development/tools/build-managers/conan/default.nix
@@ -1,26 +1,28 @@
 { lib, buildPythonApplication, fetchPypi
 , requests, fasteners, pyyaml, pyjwt, colorama, patch
-, bottle, pluginbase, six, distro, pylint, node-semver
+, bottle, pluginbase, six, distro11, pylint, node-semver2
 , future, pygments, mccabe
+, fetchpatch
 }:
 
 buildPythonApplication rec {
-  version = "0.28.1";
+  version = "1.1.1";
   pname = "conan";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0zf564iqh0099yd779f9fgk21qyp87d7cmgfj34hmncf8y3qh32a";
+    sha256 = "1k1r401bc9fgmhd5n5f29mjcn346r3zdrm7p28nwpr2r2p3fslrl";
   };
 
   propagatedBuildInputs = [
     requests fasteners pyyaml pyjwt colorama patch
-    bottle pluginbase six distro pylint node-semver
+    bottle pluginbase six distro11 pylint node-semver2
     future pygments mccabe
   ];
 
   # enable tests once all of these pythonPackages available:
   # [ nose nose_parameterized mock webtest codecov ]
+  # update 2018-03-11: only nose_parameterized is missing
   doCheck = false;
 
   meta = with lib; {
diff --git a/pkgs/development/tools/build-managers/doit/default.nix b/pkgs/development/tools/build-managers/doit/default.nix
index 200ec6429a797..aeeb4dbd7798c 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/documentation/gtk-doc/default.nix b/pkgs/development/tools/documentation/gtk-doc/default.nix
index a176c5cb76454..5414abff66ae4 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/flyway/default.nix b/pkgs/development/tools/flyway/default.nix
index 11e2c6d2c5a44..43026e55e7f34 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 0000000000000..11880213bada4
--- /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 f1533f551b2ea..58bc24e1ec64d 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 0000000000000..58ee7699b4599
--- /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/go-langserver/default.nix b/pkgs/development/tools/go-langserver/default.nix
new file mode 100644
index 0000000000000..84efaf2a4b635
--- /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/haskell/multi-ghc-travis/default.nix b/pkgs/development/tools/haskell/multi-ghc-travis/default.nix
index a259fd7d76bae..2bcf13f1337df 100644
--- a/pkgs/development/tools/haskell/multi-ghc-travis/default.nix
+++ b/pkgs/development/tools/haskell/multi-ghc-travis/default.nix
@@ -8,8 +8,8 @@ mkDerivation {
   src = fetchFromGitHub {
     owner = "haskell-CI";
     repo = "haskell-ci";
-    rev = "36b2ee58b9fd160d606608832625b2b6c32aec43";
-    sha256 = "16g99jh5bszvfvb7mmyhl95mkf1l3ydyax8d9py91hi3m8r0c2x0";
+    rev = "a4962f1478089654d138da7a3807dfcf2cef4284";
+    sha256 = "1qwknajabxcfz5w5g0yn30r8p0180wxp7pncr6nwfhszlhay0vb7";
   };
   isLibrary = true;
   isExecutable = true;
diff --git a/pkgs/development/tools/icestorm/default.nix b/pkgs/development/tools/icestorm/default.nix
index 0307027faa2eb..b277957efa937 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/json2hcl/default.nix b/pkgs/development/tools/json2hcl/default.nix
new file mode 100644
index 0000000000000..d53b39021339d
--- /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 0000000000000..bb9df28ad87f3
--- /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/gdb/darwin-target-match.patch b/pkgs/development/tools/misc/gdb/darwin-target-match.patch
new file mode 100644
index 0000000000000..1328d919503ae
--- /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 e068b908caf42..b5840d0746686 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 35126c85d3fef..296d9673d8f15 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/travis/Gemfile b/pkgs/development/tools/misc/travis/Gemfile
index d52f576be243a..788341de3fa68 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 529be07936056..a1c8332a3d448 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 a520c4deb3422..b5c5740e80ff4 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 148923848beb0..c9a54bd324c2a 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 0000000000000..ddcf493bb4682
--- /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/mypy/default.nix b/pkgs/development/tools/mypy/default.nix
index f06f9c6828c8d..7e8725745c2e3 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/parsing/jshon/default.nix b/pkgs/development/tools/parsing/jshon/default.nix
index 5406b4e9a0e53..359daad2d517c 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/selenium/chromedriver/default.nix b/pkgs/development/tools/selenium/chromedriver/default.nix
index 554a5585f150e..d5671b974f593 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/yarn2nix/bin/yarn2nix.js b/pkgs/development/tools/yarn2nix/bin/yarn2nix.js
new file mode 100755
index 0000000000000..3eadea559032f
--- /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 0000000000000..e86c0aac2c994
--- /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 0000000000000..dab1759c2046b
--- /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 0000000000000..130eee67c5606
--- /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 0000000000000..976d2c530e1e7
--- /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 0000000000000..a9e42e7d986c5
--- /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";
+      };
+    }
+  ];
+}