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/cppcheck/default.nix4
-rw-r--r--pkgs/development/tools/analysis/verasco/default.nix51
-rw-r--r--pkgs/development/tools/ansible-lint/default.nix4
-rw-r--r--pkgs/development/tools/apktool/default.nix2
-rw-r--r--pkgs/development/tools/asmfmt/default.nix37
-rw-r--r--pkgs/development/tools/asmfmt/deps.nix20
-rw-r--r--pkgs/development/tools/build-managers/bazel/bazel-deps/default.nix9
-rw-r--r--pkgs/development/tools/build-managers/meson/default.nix20
-rw-r--r--pkgs/development/tools/check/default.nix30
-rw-r--r--pkgs/development/tools/check/deps.nix11
-rw-r--r--pkgs/development/tools/cppclean/default.nix31
-rw-r--r--pkgs/development/tools/database/timescaledb-parallel-copy/default.nix26
-rw-r--r--pkgs/development/tools/database/timescaledb-parallel-copy/deps.nix21
-rw-r--r--pkgs/development/tools/deadcode/default.nix31
-rw-r--r--pkgs/development/tools/errcheck/default.nix29
-rw-r--r--pkgs/development/tools/errcheck/deps.nix20
-rw-r--r--pkgs/development/tools/flyway/default.nix11
-rw-r--r--pkgs/development/tools/global-platform-pro/default.nix1
-rw-r--r--pkgs/development/tools/go-tools/default.nix29
-rw-r--r--pkgs/development/tools/go-tools/deps.nix20
-rw-r--r--pkgs/development/tools/gocode-gomod/default.nix50
-rw-r--r--pkgs/development/tools/gocode-gomod/deps.nix11
-rw-r--r--pkgs/development/tools/gocode/default.nix13
-rw-r--r--pkgs/development/tools/gocode/deps.nix4
-rw-r--r--pkgs/development/tools/goconst/default.nix27
-rw-r--r--pkgs/development/tools/gocyclo/default.nix28
-rw-r--r--pkgs/development/tools/gogetdoc/default.nix31
-rw-r--r--pkgs/development/tools/gogetdoc/deps.nix13
-rw-r--r--pkgs/development/tools/gometalinter/default.nix70
-rw-r--r--pkgs/development/tools/gosec/default.nix29
-rw-r--r--pkgs/development/tools/gosec/deps.nix193
-rw-r--r--pkgs/development/tools/gron/default.nix4
-rw-r--r--pkgs/development/tools/gron/deps.nix26
-rw-r--r--pkgs/development/tools/iferr/default.nix28
-rw-r--r--pkgs/development/tools/impl/default.nix30
-rw-r--r--pkgs/development/tools/impl/deps.nix11
-rw-r--r--pkgs/development/tools/ineffassign/default.nix29
-rw-r--r--pkgs/development/tools/interfacer/default.nix31
-rw-r--r--pkgs/development/tools/interfacer/deps.nix29
-rw-r--r--pkgs/development/tools/jq/darwin-strptime-test.patch16
-rw-r--r--pkgs/development/tools/jq/default.nix20
-rw-r--r--pkgs/development/tools/maligned/default.nix30
-rw-r--r--pkgs/development/tools/maligned/deps.nix20
-rw-r--r--pkgs/development/tools/misc/blackmagic/default.nix7
-rw-r--r--pkgs/development/tools/misc/dfu-programmer/default.nix2
-rw-r--r--pkgs/development/tools/misc/strace/default.nix4
-rw-r--r--pkgs/development/tools/misc/teensy-loader-cli/default.nix4
-rw-r--r--pkgs/development/tools/nrpl/default.nix5
-rw-r--r--pkgs/development/tools/ocaml/merlin/default.nix4
-rw-r--r--pkgs/development/tools/pyre/default.nix55
-rw-r--r--pkgs/development/tools/reftools/default.nix29
-rw-r--r--pkgs/development/tools/rust/cargo-asm/default.nix4
-rw-r--r--pkgs/development/tools/rust/pyo3-pack/default.nix35
-rw-r--r--pkgs/development/tools/simavr/default.nix14
-rw-r--r--pkgs/development/tools/sourcetrail/default.nix75
-rw-r--r--pkgs/development/tools/unconvert/default.nix31
-rw-r--r--pkgs/development/tools/unconvert/deps.nix29
-rw-r--r--pkgs/development/tools/yarn/default.nix4
58 files changed, 1277 insertions, 175 deletions
diff --git a/pkgs/development/tools/analysis/cppcheck/default.nix b/pkgs/development/tools/analysis/cppcheck/default.nix
index 5a095c8b6a0e..2f82c1ee66ad 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.84";
+  version = "1.85";
   name = "${pname}-${version}";
 
   src = fetchurl {
     url = "mirror://sourceforge/${pname}/${name}.tar.bz2";
-    sha256 = "1rp8j0akxzcpvr2na5zchz8zxq5ldngiwj7f6sibjq5p3dcyn2w5";
+    sha256 = "1xjc0gna9hrqc6liyzkzkr2naapj5bldzad8qdxcjgqz5yd6rb7i";
   };
 
   buildInputs = [ pcre ];
diff --git a/pkgs/development/tools/analysis/verasco/default.nix b/pkgs/development/tools/analysis/verasco/default.nix
deleted file mode 100644
index 7f623e72dc31..000000000000
--- a/pkgs/development/tools/analysis/verasco/default.nix
+++ /dev/null
@@ -1,51 +0,0 @@
-{ stdenv, lib, fetchurl
-, coq, ocaml, findlib, menhir, zarith
-, tools ? stdenv.cc
-}:
-
-assert lib.versionAtLeast ocaml.version "4.02";
-
-stdenv.mkDerivation rec {
-  name = "verasco-1.3";
-  src = fetchurl {
-    url = "http://compcert.inria.fr/verasco/release/${name}.tgz";
-    sha256 = "0zvljrpwnv443k939zlw1f7ijwx18nhnpr8jl3f01jc5v66hr2k8";
-  };
-
-  buildInputs = [ coq ocaml findlib menhir zarith ];
-
-  preConfigure = ''
-    substituteInPlace ./configure --replace '{toolprefix}gcc' '{toolprefix}cc'
-  '';
-
-  configureFlags = [
-    "-toolprefix ${tools}/bin/"
-    (if stdenv.isDarwin then "ia32-macosx" else "ia32-linux")
-  ];
-
-  prefixKey = "-prefix ";
-
-  enableParallelBuilding = true;
-  buildFlags = "proof extraction ccheck";
-
-  installPhase = ''
-    mkdir -p $out/bin
-    cp ccheck $out/bin/
-    ln -s $out/bin/ccheck $out/bin/verasco
-    if [ -e verasco.ini ]
-    then
-      mkdir -p $out/share
-      cp verasco.ini $out/share/
-    fi
-    mkdir -p $out/lib/compcert
-    cp -riv runtime/include $out/lib/compcert
-  '';
-
-  meta = {
-    homepage = http://compcert.inria.fr/verasco/;
-    description = "A static analyzer for the CompCert subset of ISO C 1999";
-    maintainers = with stdenv.lib.maintainers; [ vbgl ];
-    license = stdenv.lib.licenses.unfree;
-    platforms = with stdenv.lib.platforms; darwin ++ linux;
-  };
-}
diff --git a/pkgs/development/tools/ansible-lint/default.nix b/pkgs/development/tools/ansible-lint/default.nix
index c460662f4f88..5433725b3050 100644
--- a/pkgs/development/tools/ansible-lint/default.nix
+++ b/pkgs/development/tools/ansible-lint/default.nix
@@ -19,6 +19,10 @@ pythonPackages.buildPythonPackage rec {
     patchShebangs bin/ansible-lint
   '';
 
+   preBuild = ''
+     export HOME="$TMP"
+   '';
+
   checkPhase = ''
     nosetests test
   '';
diff --git a/pkgs/development/tools/apktool/default.nix b/pkgs/development/tools/apktool/default.nix
index 42deae45a25d..17b0265fddde 100644
--- a/pkgs/development/tools/apktool/default.nix
+++ b/pkgs/development/tools/apktool/default.nix
@@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
     mkdir -p "$out/bin"
     makeWrapper "${jre}/bin/java" "$out/bin/apktool" \
         --add-flags "-jar $out/libexec/apktool/apktool.jar" \
-        --prefix PATH : "${buildTools}/build-tools/25.0.1/"
+        --prefix PATH : "${buildTools.v25_0_1}/build-tools/25.0.1/"
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/tools/asmfmt/default.nix b/pkgs/development/tools/asmfmt/default.nix
new file mode 100644
index 000000000000..d2cb7e807b58
--- /dev/null
+++ b/pkgs/development/tools/asmfmt/default.nix
@@ -0,0 +1,37 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+, fetchpatch
+}:
+
+buildGoPackage rec {
+  name = "asmfmt-${version}";
+  version = "1.1";
+
+  goPackagePath = "github.com/klauspost/asmfmt";
+
+  src = fetchFromGitHub {
+    owner = "klauspost";
+    repo = "asmfmt";
+    rev = "v${version}";
+    sha256 = "08mybfizcvck460axakycz9ndzcgwqilp5mmgm4bl8hfrn36mskw";
+  };
+
+  patches = [
+    (fetchpatch {
+      excludes = ["README.md"];
+      url = "https://github.com/klauspost/asmfmt/commit/39a37c8aed8095e0fdfb07f78fc8acbd465d9627.patch";
+      sha256 = "18bc77l87mf0yvqc3adlakxz6wflyqfsc2wrmh9q0nlqghlmnw5k";
+    })
+  ];
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "Go Assembler Formatter";
+    homepage = https://github.com/klauspost/asmfmt;
+    license = licenses.mit;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/asmfmt/deps.nix b/pkgs/development/tools/asmfmt/deps.nix
new file mode 100644
index 000000000000..0288fc206d49
--- /dev/null
+++ b/pkgs/development/tools/asmfmt/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "3a10b9bf0a52df7e992a8c3eb712a86d3c896c75";
+      sha256 = "19f3dijcc54jnd7458jab2dgpd0gzccmv2qympd9wi8cc8jpnhws";
+    };
+  }
+  {
+    goPackagePath = "sourcegraph.com/sqs/goreturns";
+    fetch = {
+      type = "git";
+      url = "https://github.com/sqs/goreturns";
+      rev = "538ac601451833c7c4449f8431d65d53c1c60e41";
+      sha256 = "0gcplch8zmcgwl6xvcffxg50g3xnf60n7dlqxgn51179qcjr354p";
+    };
+  }
+]
diff --git a/pkgs/development/tools/build-managers/bazel/bazel-deps/default.nix b/pkgs/development/tools/build-managers/bazel/bazel-deps/default.nix
index af8cd5faacde..142f729517d5 100644
--- a/pkgs/development/tools/build-managers/bazel/bazel-deps/default.nix
+++ b/pkgs/development/tools/build-managers/bazel/bazel-deps/default.nix
@@ -2,7 +2,7 @@
 
 buildBazelPackage rec {
   name = "bazel-deps-${version}";
-  version = "2018-08-16";
+  version = "2018-11-01";
 
   meta = with stdenv.lib; {
     homepage = "https://github.com/johnynek/bazel-deps";
@@ -15,8 +15,8 @@ buildBazelPackage rec {
   src = fetchFromGitHub {
     owner = "johnynek";
     repo = "bazel-deps";
-    rev = "942a0b03cbf159dd6e0f0f40787d6d8e4e832d81";
-    sha256 = "0ls2jvz9cxa169a8pbbykv2d4dik4ipf7dj1lkqx5g0ss7lgs6q5";
+    rev = "1af8921d52f053fad575f26762533a3823b4a847";
+    sha256 = "0srz0sbz4bq9n7cp4g1n3kd3j6rcjqfi25sq8aa64l27yqzbk53x";
   };
 
   bazelTarget = "//src/scala/com/github/johnynek/bazel_deps:parseproject_deploy.jar";
@@ -66,12 +66,13 @@ buildBazelPackage rec {
       find . -type d -empty -delete
     '';
 
-    sha256 = "0jkzf1hay0h8ksk9lhfvdliac6c5d7nih934i1xjbrn6zqlivy19";
+    sha256 = "1gvl4a9z8p4ch2gmcj3lpp0imrkrvy8wng949p3wlkibi14hc6ww";
   };
 
   buildAttrs = {
     installPhase = ''
       mkdir -p $out/bin/bazel-bin/src/scala/com/github/johnynek/bazel_deps
+
       cp gen_maven_deps.sh $out/bin
       wrapProgram "$out/bin/gen_maven_deps.sh" --set JAVA_HOME "${jre}" --prefix PATH : ${lib.makeBinPath [ jre ]}
       cp bazel-bin/src/scala/com/github/johnynek/bazel_deps/parseproject_deploy.jar $out/bin/bazel-bin/src/scala/com/github/johnynek/bazel_deps
diff --git a/pkgs/development/tools/build-managers/meson/default.nix b/pkgs/development/tools/build-managers/meson/default.nix
index 35ae59af617c..0ba44b1b17a7 100644
--- a/pkgs/development/tools/build-managers/meson/default.nix
+++ b/pkgs/development/tools/build-managers/meson/default.nix
@@ -1,4 +1,4 @@
-{ lib, python3Packages, stdenv, writeTextDir, substituteAll }:
+{ lib, python3Packages, stdenv, writeTextDir, substituteAll, targetPackages }:
 
 python3Packages.buildPythonApplication rec {
   version = "0.46.1";
@@ -47,20 +47,20 @@ python3Packages.buildPythonApplication rec {
 
   crossFile = writeTextDir "cross-file.conf" ''
     [binaries]
-    c = '${stdenv.cc.targetPrefix}cc'
-    cpp = '${stdenv.cc.targetPrefix}c++'
-    ar = '${stdenv.cc.bintools.targetPrefix}ar'
-    strip = '${stdenv.cc.bintools.targetPrefix}strip'
+    c = '${targetPackages.stdenv.cc.targetPrefix}cc'
+    cpp = '${targetPackages.stdenv.cc.targetPrefix}c++'
+    ar = '${targetPackages.stdenv.cc.bintools.targetPrefix}ar'
+    strip = '${targetPackages.stdenv.cc.bintools.targetPrefix}strip'
     pkgconfig = 'pkg-config'
 
     [properties]
     needs_exe_wrapper = true
 
     [host_machine]
-    system = '${stdenv.targetPlatform.parsed.kernel.name}'
-    cpu_family = '${stdenv.targetPlatform.parsed.cpu.family}'
-    cpu = '${stdenv.targetPlatform.parsed.cpu.name}'
-    endian = ${if stdenv.targetPlatform.isLittleEndian then "'little'" else "'big'"}
+    system = '${targetPackages.stdenv.targetPlatform.parsed.kernel.name}'
+    cpu_family = '${targetPackages.stdenv.targetPlatform.parsed.cpu.family}'
+    cpu = '${targetPackages.stdenv.targetPlatform.parsed.cpu.name}'
+    endian = ${if targetPackages.stdenv.targetPlatform.isLittleEndian then "'little'" else "'big'"}
   '';
 
   # 0.45 update enabled tests but they are failing
@@ -70,7 +70,7 @@ python3Packages.buildPythonApplication rec {
 
   inherit (stdenv) cc;
 
-  isCross = stdenv.buildPlatform != stdenv.hostPlatform;
+  isCross = stdenv.targetPlatform != stdenv.hostPlatform;
 
   meta = with lib; {
     homepage = http://mesonbuild.com;
diff --git a/pkgs/development/tools/check/default.nix b/pkgs/development/tools/check/default.nix
new file mode 100644
index 000000000000..dfa164e6755c
--- /dev/null
+++ b/pkgs/development/tools/check/default.nix
@@ -0,0 +1,30 @@
+{ buildGoPackage
+, lib
+, fetchFromGitLab
+}:
+
+buildGoPackage rec {
+  name = "check-unstable-${version}";
+  version = "2018-09-12";
+  rev = "88db195993f8e991ad402754accd0635490769f9";
+
+  goPackagePath = "gitlab.com/opennota/check";
+
+  src = fetchFromGitLab {
+    inherit rev;
+
+    owner = "opennota";
+    repo = "check";
+    sha256 = "1983xmdkgpqda4qz8ashc6xv1zg5jl4zly3w566grxc5sfxpgf0i";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "A set of utilities for checking Go sources.";
+    homepage = https://gitlab.com/opennota/check;
+    license = licenses.gpl3;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/check/deps.nix b/pkgs/development/tools/check/deps.nix
new file mode 100644
index 000000000000..b9c50d95d117
--- /dev/null
+++ b/pkgs/development/tools/check/deps.nix
@@ -0,0 +1,11 @@
+[
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "677d2ff680c1";
+      sha256 = "0vp1w1haqcjd82dxd6x9xrllbfwvm957rxwkpji96cgvhsli2bq5";
+    };
+  }
+]
diff --git a/pkgs/development/tools/cppclean/default.nix b/pkgs/development/tools/cppclean/default.nix
new file mode 100644
index 000000000000..96fe07a7799a
--- /dev/null
+++ b/pkgs/development/tools/cppclean/default.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, fetchFromGitHub, python3Packages }:
+
+with python3Packages;
+
+buildPythonApplication rec {
+  name = "cppclean-unstable-${version}";
+  version = "2018-05-12";
+
+  src = fetchFromGitHub {
+    owner  = "myint";
+    repo   = "cppclean";
+    rev    = "e7da41eca5e1fd2bd1dddd6655e50128bb96dc28";
+    sha256 = "0pymh6r7y19bwcypfkmgwyixrx36pmz338jd83yrjflsbjlriqm4";
+  };
+
+  postUnpack = ''
+    patchShebangs .
+    '';
+
+  checkPhase = ''
+    ./test.bash
+    '';
+
+  meta = with stdenv.lib; {
+    description = "Finds problems in C++ source that slow development of large code bases";
+    homepage    = https://github.com/myint/cppclean;
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ nthorne ];
+    platforms   = platforms.linux;
+  };
+}
diff --git a/pkgs/development/tools/database/timescaledb-parallel-copy/default.nix b/pkgs/development/tools/database/timescaledb-parallel-copy/default.nix
new file mode 100644
index 000000000000..d667e49e7cbe
--- /dev/null
+++ b/pkgs/development/tools/database/timescaledb-parallel-copy/default.nix
@@ -0,0 +1,26 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "timescaledb-parallel-copy-${version}";
+  version = "2018-05-14";
+
+  owner  = "timescale";
+  repo   = "timescaledb-parallel-copy";
+
+  goPackagePath = with src; "github.com/${owner}/${repo}";
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    inherit owner repo;
+    rev    = "20d3e8f8219329f2f4b0a5aa985f280dd04d10bb";
+    sha256 = "0waaccw991cnxaxjdxh9ksb94kiiyx1r7gif6pkd5k58js0kfvdn";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Bulk, parallel insert of CSV records into PostgreSQL";
+    homepage    = http://github.com/timescale/timescaledb-parallel-copy;
+    license     = licenses.asl20;
+    platforms   = platforms.linux;
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+}
diff --git a/pkgs/development/tools/database/timescaledb-parallel-copy/deps.nix b/pkgs/development/tools/database/timescaledb-parallel-copy/deps.nix
new file mode 100644
index 000000000000..c672611e09c1
--- /dev/null
+++ b/pkgs/development/tools/database/timescaledb-parallel-copy/deps.nix
@@ -0,0 +1,21 @@
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
+[
+  {
+    goPackagePath = "github.com/jmoiron/sqlx";
+    fetch = {
+      type = "git";
+      url = "https://github.com/jmoiron/sqlx";
+      rev = "0dae4fefe7c0e190f7b5a78dac28a1c82cc8d849";
+      sha256 = "0r8fyj70n0v84byvagw8w8rzz532s94mjr72b9sx018j0b6xglmy";
+    };
+  }
+  {
+    goPackagePath = "github.com/lib/pq";
+    fetch = {
+      type = "git";
+      url = "https://github.com/lib/pq";
+      rev = "90697d60dd844d5ef6ff15135d0203f65d2f53b8";
+      sha256 = "0hb4bfsk8g5473yzbf3lzrb373xicakjznkf0v085xgimz991i9r";
+    };
+  }
+]
diff --git a/pkgs/development/tools/deadcode/default.nix b/pkgs/development/tools/deadcode/default.nix
new file mode 100644
index 000000000000..fbed4e905cfc
--- /dev/null
+++ b/pkgs/development/tools/deadcode/default.nix
@@ -0,0 +1,31 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+# TODO(yl): should we package https://github.com/remyoudompheng/go-misc instead of
+# the standalone extract of deadcode from it?
+buildGoPackage rec {
+  name = "deadcode-unstable-${version}";
+  version = "2016-07-24";
+  rev = "210d2dc333e90c7e3eedf4f2242507a8e83ed4ab";
+
+  goPackagePath = "github.com/tsenart/deadcode";
+  excludedPackages = "\\(cmd/fillswitch/test-fixtures\\)";
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "tsenart";
+    repo = "deadcode";
+    sha256 = "05kif593f4wygnrq2fdjhn7kkcpdmgjnykcila85d0gqlb1f36g0";
+  };
+
+  meta = with lib; {
+    description = "deadcode is a very simple utility which detects unused declarations in a Go package.";
+    homepage = https://github.com/remyoudompheng/go-misc/tree/master/deadcode;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/errcheck/default.nix b/pkgs/development/tools/errcheck/default.nix
new file mode 100644
index 000000000000..1ce49a4cbb9d
--- /dev/null
+++ b/pkgs/development/tools/errcheck/default.nix
@@ -0,0 +1,29 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "errcheck-${version}";
+  version = "1.1.0";
+
+  goPackagePath = "github.com/kisielk/errcheck";
+  excludedPackages = "\\(testdata\\)";
+
+  src = fetchFromGitHub {
+    owner = "kisielk";
+    repo = "errcheck";
+    rev = "v${version}";
+    sha256 = "19vd4rxmqbk5lpiav3pf7df3yjlz0l0dwx9mn0gjq5f998iyhy6y";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "errcheck is a program for checking for unchecked errors in go programs.";
+    homepage = https://github.com/kisielk/errcheck;
+    license = licenses.mit;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/errcheck/deps.nix b/pkgs/development/tools/errcheck/deps.nix
new file mode 100644
index 000000000000..8470c9e12aa6
--- /dev/null
+++ b/pkgs/development/tools/errcheck/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "github.com/kisielk/gotool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kisielk/gotool";
+      rev = "80517062f582ea3340cd4baf70e86d539ae7d84d";
+      sha256 = "14af2pa0ssyp8bp2mvdw184s5wcysk6akil3wzxmr05wwy951iwn";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "3a10b9bf0a52df7e992a8c3eb712a86d3c896c75";
+      sha256 = "19f3dijcc54jnd7458jab2dgpd0gzccmv2qympd9wi8cc8jpnhws";
+    };
+  }
+]
diff --git a/pkgs/development/tools/flyway/default.nix b/pkgs/development/tools/flyway/default.nix
index 70f6d8021ff8..7386dc0eeeba 100644
--- a/pkgs/development/tools/flyway/default.nix
+++ b/pkgs/development/tools/flyway/default.nix
@@ -1,22 +1,23 @@
 { stdenv, fetchurl, jre_headless, makeWrapper }:
   let
-    version = "5.1.4";
+    version = "5.2.1";
   in
     stdenv.mkDerivation {
       name = "flyway-${version}";
       src = fetchurl {
-        url = "https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/5.1.4/flyway-commandline-${version}.tar.gz";
-        sha256 = "1raz125k55v6xa8gp6ylcjxz77r5364xqp9di46rayx3z2282f7q";
+        url = "https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/${version}/flyway-commandline-${version}.tar.gz";
+        sha256 = "0lm536qc8pqj4s21dd47gi99nwwflk17gqzfwaflghw3fnhn7i1s";
       };
       buildInputs = [ makeWrapper ];
       dontBuild = true;
       dontStrip = true;
       installPhase = ''
         mkdir -p $out/bin $out/share/flyway
-        cp -r sql jars lib drivers $out/share/flyway
+        cp -r sql jars drivers conf $out/share/flyway
+        cp -r lib/community $out/share/flyway/lib
         makeWrapper "${jre_headless}/bin/java" $out/bin/flyway \
           --add-flags "-Djava.security.egd=file:/dev/../dev/urandom" \
-          --add-flags "-cp '$out/share/flyway/lib/*:$out/share/flyway/drivers/*'" \
+          --add-flags "-classpath '$out/share/flyway/lib/*:$out/share/flyway/drivers/*'" \
           --add-flags "org.flywaydb.commandline.Main"
       '';
       meta = with stdenv.lib; {
diff --git a/pkgs/development/tools/global-platform-pro/default.nix b/pkgs/development/tools/global-platform-pro/default.nix
index ab32216de80d..9841e7900cd5 100644
--- a/pkgs/development/tools/global-platform-pro/default.nix
+++ b/pkgs/development/tools/global-platform-pro/default.nix
@@ -62,6 +62,7 @@ stdenv.mkDerivation rec {
     '';
     homepage = https://github.com/martinpaljak/GlobalPlatformPro;
     license = with licenses; [ lgpl3 ];
+    maintainers = with maintainers; [ ekleog ];
     platforms = platforms.all;
   };
 }
diff --git a/pkgs/development/tools/go-tools/default.nix b/pkgs/development/tools/go-tools/default.nix
new file mode 100644
index 000000000000..7e599ed8de71
--- /dev/null
+++ b/pkgs/development/tools/go-tools/default.nix
@@ -0,0 +1,29 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "go-tools-${version}";
+  version = "2017.2.2";
+
+  goPackagePath = "honnef.co/go/tools";
+  excludedPackages = ''\(simple\|ssa\|ssa/ssautil\|lint\|staticcheck\|unused\)/testdata'';
+
+  src = fetchFromGitHub {
+    owner = "dominikh";
+    repo = "go-tools";
+    rev = "${version}";
+    sha256 = "1khl6szjj0skkfqp234p9rf3icik7fw2pk2x0wbj3wa9q3f84hb7";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "A collection of tools and libraries for working with Go code, including linters and static analysis.";
+    homepage = https://staticcheck.io;
+    license = licenses.mit;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/go-tools/deps.nix b/pkgs/development/tools/go-tools/deps.nix
new file mode 100644
index 000000000000..afe5e50e47bd
--- /dev/null
+++ b/pkgs/development/tools/go-tools/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "github.com/kisielk/gotool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kisielk/gotool";
+      rev = "80517062f582ea3340cd4baf70e86d539ae7d84d";
+      sha256 = "14af2pa0ssyp8bp2mvdw184s5wcysk6akil3wzxmr05wwy951iwn";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "96e9e165b75e735822645eff82850b08c377be36";
+      sha256 = "1zj9ck5sg9b0pphxybmvxf64hhcap7v7j37fx3v5aknf18crjjdg";
+    };
+  }
+]
diff --git a/pkgs/development/tools/gocode-gomod/default.nix b/pkgs/development/tools/gocode-gomod/default.nix
new file mode 100644
index 000000000000..b0069d3488e0
--- /dev/null
+++ b/pkgs/development/tools/gocode-gomod/default.nix
@@ -0,0 +1,50 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "gocode-gomod-unstable-${version}";
+  version = "2018-10-16";
+  rev = "12640289f65065d652cc942ffa01a52bece1dd53";
+
+  goPackagePath = "github.com/stamblerre/gocode";
+
+  # we must allow references to the original `go` package,
+  # because `gocode` needs to dig into $GOROOT to provide completions for the
+  # standard packages.
+  allowGoReference = true;
+
+  excludedPackages = ''internal/suggest/testdata'';
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "stamblerre";
+    repo = "gocode";
+    sha256 = "1avv0b5p2l8pv38m5gg97k57ndr5k9yy0rfkmmwjq96pa221hs1q";
+  };
+
+  goDeps = ./deps.nix;
+
+  postInstall = ''
+    mv $bin/bin/gocode $bin/bin/gocode-gomod
+  '';
+
+  meta = with stdenv.lib; {
+    description = "An autocompletion daemon for the Go programming language";
+    longDescription = ''
+      Gocode is a helper tool which is intended to be integrated with your
+      source code editor, like vim, neovim and emacs. It provides several
+      advanced capabilities, which currently includes:
+
+        - Context-sensitive autocompletion
+
+      It is called daemon, because it uses client/server architecture for
+      caching purposes. In particular, it makes autocompletions very fast.
+      Typical autocompletion time with warm cache is 30ms, which is barely
+      noticeable.
+    '';
+    homepage = https://github.com/stamblerre/gocode;
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ kalbasit ];
+  };
+}
diff --git a/pkgs/development/tools/gocode-gomod/deps.nix b/pkgs/development/tools/gocode-gomod/deps.nix
new file mode 100644
index 000000000000..ac9662697063
--- /dev/null
+++ b/pkgs/development/tools/gocode-gomod/deps.nix
@@ -0,0 +1,11 @@
+[
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "78dc5bac0cacea7969e98b79c3b86597e0aa4e25";
+      sha256 = "16jg2x1sfm39kz4rchn0gxyq99fnkxw6v51wxriqbs76a2wrznp9";
+    };
+  }
+]
diff --git a/pkgs/development/tools/gocode/default.nix b/pkgs/development/tools/gocode/default.nix
index bb44074dfc75..3351c0e986b3 100644
--- a/pkgs/development/tools/gocode/default.nix
+++ b/pkgs/development/tools/gocode/default.nix
@@ -2,10 +2,11 @@
 
 buildGoPackage rec {
   name = "gocode-unstable-${version}";
-  version = "2018-10-22";
-  rev = "e893215113e5f7594faa3a8eb176c2700c921276";
+  version = "2018-11-05";
+  rev = "0af7a86943a6e0237c90f8aeb74a882e1862c898";
 
   goPackagePath = "github.com/mdempsky/gocode";
+  excludedPackages = ''internal/suggest/testdata'';
 
   # we must allow references to the original `go` package,
   # because `gocode` needs to dig into $GOROOT to provide completions for the
@@ -17,17 +18,11 @@ buildGoPackage rec {
 
     owner = "mdempsky";
     repo = "gocode";
-    sha256 = "1zsll7yghv64890k7skl0g2lg9rsaiisgrfnb8kshsxrcxi1kc2l";
+    sha256 = "0fxqn0v6dbwarn444lc1xrx5vfkcidi73f4ba7l4clsb9qdqgyam";
   };
 
   goDeps = ./deps.nix;
 
-  preBuild = ''
-    # getting an error building the testdata because they contain invalid files
-    # on purpose as part of the testing.
-    rm -r go/src/$goPackagePath/internal/suggest/testdata
-  '';
-
   meta = with stdenv.lib; {
     description = "An autocompletion daemon for the Go programming language";
     longDescription = ''
diff --git a/pkgs/development/tools/gocode/deps.nix b/pkgs/development/tools/gocode/deps.nix
index 4eefdd9c6d04..ac9662697063 100644
--- a/pkgs/development/tools/gocode/deps.nix
+++ b/pkgs/development/tools/gocode/deps.nix
@@ -4,8 +4,8 @@
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/tools";
-      rev = "6fe81c087942f588f40c3f67b41ce284f2f70eee";
-      sha256 = "04yl7rk2lf94bxz74ja5snh7ava9gcnf2yx6y002pfkk538r6w5d";
+      rev = "78dc5bac0cacea7969e98b79c3b86597e0aa4e25";
+      sha256 = "16jg2x1sfm39kz4rchn0gxyq99fnkxw6v51wxriqbs76a2wrznp9";
     };
   }
 ]
diff --git a/pkgs/development/tools/goconst/default.nix b/pkgs/development/tools/goconst/default.nix
new file mode 100644
index 000000000000..9ef94ffdc7fa
--- /dev/null
+++ b/pkgs/development/tools/goconst/default.nix
@@ -0,0 +1,27 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "goconst-${version}";
+  version = "1.1.0";
+
+  goPackagePath = "github.com/jgautheron/goconst";
+  excludedPackages = ''testdata'';
+
+  src = fetchFromGitHub {
+    owner = "jgautheron";
+    repo = "goconst";
+    rev = version;
+    sha256 = "0zhscvv9w54q1h2vs8xx3qkz98cf36qhxjvdq0xyz3qvn4vhnyw6";
+  };
+
+  meta = with lib; {
+    description = "Find in Go repeated strings that could be replaced by a constant";
+    homepage = https://github.com/jgautheron/goconst;
+    license = licenses.mit;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/gocyclo/default.nix b/pkgs/development/tools/gocyclo/default.nix
new file mode 100644
index 000000000000..91ebaff803eb
--- /dev/null
+++ b/pkgs/development/tools/gocyclo/default.nix
@@ -0,0 +1,28 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "gocyclo-unstable-${version}";
+  version = "2015-02-08";
+  rev = "aa8f8b160214d8dfccfe3e17e578dd0fcc6fede7";
+
+  goPackagePath = "github.com/alecthomas/gocyclo";
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "alecthomas";
+    repo = "gocyclo";
+    sha256 = "094rj97q38j53lmn2scshrg8kws8c542yq5apih1ahm9wdkv8pxr";
+  };
+
+  meta = with lib; {
+    description = "Calculate cyclomatic complexities of functions in Go source code.";
+    homepage = https://github.com/alecthomas/gocyclo;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/gogetdoc/default.nix b/pkgs/development/tools/gogetdoc/default.nix
new file mode 100644
index 000000000000..7724ee49465c
--- /dev/null
+++ b/pkgs/development/tools/gogetdoc/default.nix
@@ -0,0 +1,31 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "gogetdoc-unstable-${version}";
+  version = "2018-10-25";
+  rev = "9098cf5fc236a5e25060730544af2ba6d65cd968";
+
+  goPackagePath = "github.com/zmb3/gogetdoc";
+  excludedPackages = "\\(testdata\\)";
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "zmb3";
+    repo = "gogetdoc";
+    sha256 = "159dgkd2lz07kimbpzminli5p539l4ry0dr93r46iz3lk5q76znl";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "Gets documentation for items in Go source code";
+    homepage = https://github.com/zmb3/gogetdoc;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/gogetdoc/deps.nix b/pkgs/development/tools/gogetdoc/deps.nix
new file mode 100644
index 000000000000..d770057d1d78
--- /dev/null
+++ b/pkgs/development/tools/gogetdoc/deps.nix
@@ -0,0 +1,13 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "6adeb8aab2de";
+      sha256 = "0kylkki0ksdm12ppl37fghzbma9hmgqwph0nwngv08v4blk6li6k";
+    };
+  }
+]
diff --git a/pkgs/development/tools/gometalinter/default.nix b/pkgs/development/tools/gometalinter/default.nix
new file mode 100644
index 000000000000..cce678e9d073
--- /dev/null
+++ b/pkgs/development/tools/gometalinter/default.nix
@@ -0,0 +1,70 @@
+{ buildGoPackage
+, deadcode
+, errcheck
+, fetchFromGitHub
+, go
+, go-check
+, go-tools
+, goconst
+, gocyclo
+, golint
+, gosec
+, gotools
+, ineffassign
+, maligned
+, interfacer
+, lib
+, makeWrapper
+, unconvert
+}:
+
+with lib;
+
+let
+  runtimeDeps = [
+    deadcode
+    errcheck
+    go
+    go-check
+    go-tools
+    goconst
+    gocyclo
+    golint
+    gosec
+    gotools
+    ineffassign
+    interfacer
+    maligned
+    unconvert
+  ];
+
+in buildGoPackage rec {
+  name = "gometalinter-${version}";
+  version = "2.0.11";
+
+  goPackagePath = "github.com/alecthomas/gometalinter";
+  excludedPackages = "\\(regressiontests\\)";
+
+  src = fetchFromGitHub {
+    owner = "alecthomas";
+    repo = "gometalinter";
+    rev = "v${version}";
+    sha256 = "08p7bwvhpgizif8qi59m8mm3mcny70x9msbk8m8vjpphsq55wha4";
+  };
+
+  postInstall = ''
+    wrapProgram $bin/bin/gometalinter --prefix PATH : "${makeBinPath runtimeDeps}"
+  '';
+
+  buildInputs = [ makeWrapper ];
+
+  allowGoReference = true;
+
+  meta = with lib; {
+    description = "Concurrently run Go lint tools and normalise their output";
+    homepage = https://github.com/alecthomas/gometalinter;
+    license = licenses.mit;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/gosec/default.nix b/pkgs/development/tools/gosec/default.nix
new file mode 100644
index 000000000000..2cffd86f3965
--- /dev/null
+++ b/pkgs/development/tools/gosec/default.nix
@@ -0,0 +1,29 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "gosec-${version}";
+  version = "1.1.0";
+
+  goPackagePath = "github.com/securego/gosec";
+  excludedPackages = ''cmd/tlsconfig'';
+
+  src = fetchFromGitHub {
+    owner = "securego";
+    repo = "gosec";
+    rev = "${version}";
+    sha256 = "0vjn3g6w4y4ayx0g766jp31vb78cipl90fcg0mccjr0a539qrpy6";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "Golang security checker";
+    homepage = https://github.com/securego/gosec;
+    license = licenses.asl20 ;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/gosec/deps.nix b/pkgs/development/tools/gosec/deps.nix
new file mode 100644
index 000000000000..80a77e7fb807
--- /dev/null
+++ b/pkgs/development/tools/gosec/deps.nix
@@ -0,0 +1,193 @@
+# file generated from go.mod using vgo2nix (https://github.com/adisbladis/vgo2nix)
+[
+
+  {
+    goPackagePath = "github.com/davecgh/go-spew";
+    fetch = {
+      type = "git";
+      url = "https://github.com/davecgh/go-spew";
+      rev = "v1.1.1";
+      sha256 = "0hka6hmyvp701adzag2g26cxdj47g21x6jz4sc6jjz1mn59d474y";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/golang/protobuf";
+    fetch = {
+      type = "git";
+      url = "https://github.com/golang/protobuf";
+      rev = "v1.2.0";
+      sha256 = "0kf4b59rcbb1cchfny2dm9jyznp8ri2hsb14n8iak1q8986xa0ab";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/kisielk/gotool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kisielk/gotool";
+      rev = "0de1eaf82fa3";
+      sha256 = "177af7bjq6clmkqshnmnwlpwvx80kpi2277q275iwq59lp48viq1";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/kr/pretty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pretty";
+      rev = "v0.1.0";
+      sha256 = "18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/kr/pty";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/pty";
+      rev = "v1.1.1";
+      sha256 = "0383f0mb9kqjvncqrfpidsf8y6ns5zlrc91c6a74xpyxjwvzl2y6";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/kr/text";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kr/text";
+      rev = "v0.1.0";
+      sha256 = "1gm5bsl01apvc84bw06hasawyqm4q84vx1pm32wr9jnd7a8vjgj1";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/nbutton23/zxcvbn-go";
+    fetch = {
+      type = "git";
+      url = "https://github.com/nbutton23/zxcvbn-go";
+      rev = "a22cb81b2ecd";
+      sha256 = "0hm16vc7xrw0cqla6xcn59bb7n2sa0j8rkniywn5dqnbrpza12cd";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/onsi/ginkgo";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/ginkgo";
+      rev = "11459a886d9c";
+      sha256 = "1nswc1fnrrs792qbix05h91bilj8rr3wxmxgwi97p2gjk0r292zh";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/onsi/gomega";
+    fetch = {
+      type = "git";
+      url = "https://github.com/onsi/gomega";
+      rev = "dcabb60a477c";
+      sha256 = "1775lv5jbsgv3ghq5v2827slqlhqdadrzc1nkpq4y0hdv2qzrgkm";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/pmezard/go-difflib";
+    fetch = {
+      type = "git";
+      url = "https://github.com/pmezard/go-difflib";
+      rev = "v1.0.0";
+      sha256 = "0c1cn55m4rypmscgf0rrb88pn58j3ysvc2d0432dp3c6fqg6cnzw";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/ryanuber/go-glob";
+    fetch = {
+      type = "git";
+      url = "https://github.com/ryanuber/go-glob";
+      rev = "256dc444b735";
+      sha256 = "07rsd7hranghwc68ib0r2zxd9d5djanzjvd84j9dgj3wqsyg5mi2";
+    };
+  }
+
+  {
+    goPackagePath = "github.com/stretchr/testify";
+    fetch = {
+      type = "git";
+      url = "https://github.com/stretchr/testify";
+      rev = "v1.2.2";
+      sha256 = "0dlszlshlxbmmfxj5hlwgv3r22x0y1af45gn1vd198nvvs3pnvfs";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/net";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/net";
+      rev = "8351a756f30f";
+      sha256 = "0b6m579i3wrx1m69mqkdng5gjfssprxx0pg45kzrdi68sh0zr5d1";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/sync";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sync";
+      rev = "1d60e4601c6f";
+      sha256 = "046jlanz2lkxq1r57x9bl6s4cvfqaic6p2xybsj8mq1120jv4rs6";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/sys";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/sys";
+      rev = "164713f0dfce";
+      sha256 = "1qn9vvyqsaaj0az0rbilzc4pfv9sl4vh78c2g37yya5gcdnarh3w";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "1cbadb444a80";
+      sha256 = "0ih9ysagh4ylj08393497sscf3yziybc6acg4mrh0wa7mld75j56";
+    };
+  }
+
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "e531a2a1c15f";
+      sha256 = "0740w56nmjqdj7ld1h3gpcpi3x8n81bdx0pp267rz9hmwkrb2s1c";
+    };
+  }
+
+  {
+    goPackagePath = "gopkg.in/check.v1";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/check.v1";
+      rev = "788fd7840127";
+      sha256 = "0v3bim0j375z81zrpr5qv42knqs0y2qv2vkjiqi5axvb78slki1a";
+    };
+  }
+
+  {
+    goPackagePath = "gopkg.in/yaml.v2";
+    fetch = {
+      type = "git";
+      url = "https://gopkg.in/yaml.v2";
+      rev = "eb3733d160e7";
+      sha256 = "1srhvcaa9db3a6xj29mkjr5kg33y71pclrlx4vcwz5m1lgb5c7q6";
+    };
+  }
+]
diff --git a/pkgs/development/tools/gron/default.nix b/pkgs/development/tools/gron/default.nix
index 14c8f53a3944..ebe76197ef4e 100644
--- a/pkgs/development/tools/gron/default.nix
+++ b/pkgs/development/tools/gron/default.nix
@@ -2,7 +2,7 @@
 
 buildGoPackage rec {
   name = "gron-${version}";
-  version = "0.5.2";
+  version = "0.6.0";
 
   owner = "tomnomnom";
   repo = "gron";
@@ -11,7 +11,7 @@ buildGoPackage rec {
   src = fetchFromGitHub {
     inherit owner repo;
     rev = "v${version}";
-    sha256 = "0nxcvih8n5a4f0a53dxaipab5ckqxgnsznzymhfw5kv4inr9v6j6";
+    sha256 = "05f3w4zr15wd7xk75l12y5kip4gnv719a2x9w2hy23q3pnss9wk0";
   };
 
   goDeps = ./deps.nix;
diff --git a/pkgs/development/tools/gron/deps.nix b/pkgs/development/tools/gron/deps.nix
index c5b1feb888ae..effc255d877e 100644
--- a/pkgs/development/tools/gron/deps.nix
+++ b/pkgs/development/tools/gron/deps.nix
@@ -6,8 +6,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/${owner}/${repo}";
-      rev = "v1.6.0";
-      sha256 = "0k1v9dkhrxiqhg48yqkwzpd7x40xx38gv2pgknswbsy4r8w644i7";
+      rev = "v1.7.0";
+      sha256 = "0v8msvg38r8d1iiq2i5r4xyfx0invhc941kjrsg5gzwvagv55inv";
     };
   }
   rec {
@@ -32,4 +32,26 @@
       sha256 = "001i6n71ghp2l6kdl3qq1v2vmghcz3kicv9a5wgcihrzigm75pp5";
     };
   }
+  rec {
+    owner = "mattn";
+    repo = "go-colorable";
+    goPackagePath = "github.com/${owner}/${repo}";
+    fetch = {
+      type = "git";
+      url = "https://github.com/${owner}/${repo}";
+      rev = "v0.0.9";
+      sha256 = "1nwjmsppsjicr7anq8na6md7b1z84l9ppnlr045hhxjvbkqwalvx";
+    };
+  }
+  rec {
+    owner = "mattn";
+    repo = "go-isatty";
+    goPackagePath = "github.com/${owner}/${repo}";
+    fetch = {
+      type = "git";
+      url = "https://github.com/${owner}/${repo}";
+      rev = "v0.0.4";
+      sha256 = "0zs92j2cqaw9j8qx1sdxpv3ap0rgbs0vrvi72m40mg8aa36gd39w";
+    };
+  }
 ]
diff --git a/pkgs/development/tools/iferr/default.nix b/pkgs/development/tools/iferr/default.nix
new file mode 100644
index 000000000000..e2aebe9b2dc2
--- /dev/null
+++ b/pkgs/development/tools/iferr/default.nix
@@ -0,0 +1,28 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "iferr-unstable-${version}";
+  version = "2018-06-15";
+  rev = "bb332a3b1d9129b6486c7ddcb7030c11b05cfc88";
+
+  goPackagePath = "github.com/koron/iferr";
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "koron";
+    repo = "iferr";
+    sha256 = "1nyqy1sgq2afiama4wy7wap8s03c0hiwwa0f6kwq3y59097rfc0c";
+  };
+
+  meta = with lib; {
+    description = ''Generate "if err != nil {" block'';
+    homepage = https://github.com/koron/iferr;
+    license = licenses.mit;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/impl/default.nix b/pkgs/development/tools/impl/default.nix
new file mode 100644
index 000000000000..69bbf8afe5ac
--- /dev/null
+++ b/pkgs/development/tools/impl/default.nix
@@ -0,0 +1,30 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "impl-unstable-${version}";
+  version = "2018-02-27";
+  rev = "3d0f908298c49598b6aa84f101c69670e15d1d03";
+
+  goPackagePath = "github.com/josharian/impl";
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "josharian";
+    repo = "impl";
+    sha256 = "0xpip20x5vclrl0by1760lg73v6lj6nmkbiazlskyvpkw44h8a7c";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "impl generates method stubs for implementing an interface.";
+    homepage = https://github.com/josharian/impl;
+    license = licenses.mit;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/impl/deps.nix b/pkgs/development/tools/impl/deps.nix
new file mode 100644
index 000000000000..3477aaed6075
--- /dev/null
+++ b/pkgs/development/tools/impl/deps.nix
@@ -0,0 +1,11 @@
+[
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "96e9e165b75e735822645eff82850b08c377be36";
+      sha256 = "1zj9ck5sg9b0pphxybmvxf64hhcap7v7j37fx3v5aknf18crjjdg";
+    };
+  }
+]
diff --git a/pkgs/development/tools/ineffassign/default.nix b/pkgs/development/tools/ineffassign/default.nix
new file mode 100644
index 000000000000..10e5c61025ab
--- /dev/null
+++ b/pkgs/development/tools/ineffassign/default.nix
@@ -0,0 +1,29 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "ineffassign-unstable-${version}";
+  version = "2018-09-09";
+	rev = "1003c8bd00dc2869cb5ca5282e6ce33834fed514";
+
+  goPackagePath = "github.com/gordonklaus/ineffassign";
+  excludedPackages = ''testdata'';
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "gordonklaus";
+    repo = "ineffassign";
+    sha256 = "1rkzqvd3z03vq8q8qi9cghvgggsf02ammj9wq8jvpnx6b2sd16nd";
+  };
+
+  meta = with lib; {
+    description = "Detect ineffectual assignments in Go code.";
+    homepage = https://github.com/gordonklaus/ineffassign;
+    license = licenses.mit;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/interfacer/default.nix b/pkgs/development/tools/interfacer/default.nix
new file mode 100644
index 000000000000..274ced0b37cd
--- /dev/null
+++ b/pkgs/development/tools/interfacer/default.nix
@@ -0,0 +1,31 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "interfacer-unstable-${version}";
+  version = "2018-08-31";
+  rev = "c20040233aedb03da82d460eca6130fcd91c629a";
+
+  goPackagePath = "mvdan.cc/interfacer";
+  excludedPackages = ''check/testdata'';
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "mvdan";
+    repo = "interfacer";
+    sha256 = "0cx4m74mvn200360pmsqxx4z0apk9fcknwwqh8r94zd3jfv4akq2";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "A linter that suggests interface types.";
+    homepage = https://github.com/mvdan/interfacer;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/interfacer/deps.nix b/pkgs/development/tools/interfacer/deps.nix
new file mode 100644
index 000000000000..6810950878be
--- /dev/null
+++ b/pkgs/development/tools/interfacer/deps.nix
@@ -0,0 +1,29 @@
+[
+  {
+    goPackagePath = "github.com/kisielk/gotool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kisielk/gotool";
+      rev = "80517062f582ea3340cd4baf70e86d539ae7d84d";
+      sha256 = "14af2pa0ssyp8bp2mvdw184s5wcysk6akil3wzxmr05wwy951iwn";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "96e9e165b75e735822645eff82850b08c377be36";
+      sha256 = "1zj9ck5sg9b0pphxybmvxf64hhcap7v7j37fx3v5aknf18crjjdg";
+    };
+  }
+  {
+    goPackagePath = "mvdan.cc/lint";
+    fetch = {
+      type = "git";
+      url = "https://github.com/mvdan/lint";
+      rev = "adc824a0674b99099789b6188a058d485eaf61c0";
+      sha256 = "17mi2rvkg9kzv1shxcyawzcj4jj3v738d1j82fp4yygx859yvr8r";
+    };
+  }
+]
diff --git a/pkgs/development/tools/jq/darwin-strptime-test.patch b/pkgs/development/tools/jq/darwin-strptime-test.patch
deleted file mode 100644
index 4ea83fc164a3..000000000000
--- a/pkgs/development/tools/jq/darwin-strptime-test.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/tests/jq.test b/tests/jq.test
-index 4a4018b..f5aa7d5 100644
---- a/src/tests/jq.test
-+++ b/src/tests/jq.test
-@@ -1144,9 +1144,9 @@ bsearch(4)
- [1,2,3]
- -4
- 
--[strptime("%Y-%m-%dT%H:%M:%SZ")|(.,mktime)]
-+[strptime("%Y-%m-%dT%H:%M:%SZ")|mktime]
- "2015-03-05T23:51:47Z"
--[[2015,2,5,23,51,47,4,63],1425599507]
-+[1425599507]
- 
- strftime("%Y-%m-%dT%H:%M:%SZ")
- [2015,2,5,23,51,47,4,63]
diff --git a/pkgs/development/tools/jq/default.nix b/pkgs/development/tools/jq/default.nix
index 712ec64bd416..b7b2b5066b9f 100644
--- a/pkgs/development/tools/jq/default.nix
+++ b/pkgs/development/tools/jq/default.nix
@@ -2,33 +2,17 @@
 
 stdenv.mkDerivation rec {
   name = "jq-${version}";
-  version="1.5";
+  version="1.6";
 
   src = fetchurl {
     url="https://github.com/stedolan/jq/releases/download/jq-${version}/jq-${version}.tar.gz";
-    sha256="0g29kyz4ykasdcrb0zmbrp2jqs9kv1wz9swx849i2d1ncknbzln4";
+    sha256="1a76f46a652i2g333kfvrl6mp2w7whf6h1yly519izg4y967h9cn";
   };
 
   outputs = [ "bin" "doc" "man" "dev" "lib" "out" ];
 
   buildInputs = [ oniguruma ];
 
-  patches = [
-    (fetchpatch {
-      name = "CVE-2015-8863.patch";
-      url = https://github.com/stedolan/jq/commit/8eb1367ca44e772963e704a700ef72ae2e12babd.diff;
-      sha256 = "18bjanzvklfzlzzd690y88725l7iwl4f6wnr429na5pfmircbpvh";
-    })
-    (fetchpatch {
-      name = "CVE-2016-4074.patch";
-      url = https://patch-diff.githubusercontent.com/raw/stedolan/jq/pull/1214.diff;
-      sha256 = "1w8bapnyp56di6p9casbfczfn8258rw0z16grydavdjddfm280l9";
-    })
-  ]
-    ++ stdenv.lib.optional stdenv.isDarwin ./darwin-strptime-test.patch;
-
-  patchFlags = [ "-p2" ]; # `src` subdir was introduced after v1.5 was released
-
   configureFlags =
     [
     "--bindir=\${bin}/bin"
diff --git a/pkgs/development/tools/maligned/default.nix b/pkgs/development/tools/maligned/default.nix
new file mode 100644
index 000000000000..7e5cbaddd8b3
--- /dev/null
+++ b/pkgs/development/tools/maligned/default.nix
@@ -0,0 +1,30 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "maligned-unstable-${version}";
+  version = "2018-07-07";
+  rev = "6e39bd26a8c8b58c5a22129593044655a9e25959";
+
+  goPackagePath = "github.com/mdempsky/maligned";
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "mdempsky";
+    repo = "maligned";
+    sha256 = "08inr5xjqv9flrlyhqd8ck1q26y5xb6iilz0xkb6bqa4dl5ialhi";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "Tool to detect Go structs that would take less memory if their fields were sorted.";
+    homepage = https://github.com/mdempsky/maligned;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/maligned/deps.nix b/pkgs/development/tools/maligned/deps.nix
new file mode 100644
index 000000000000..afe5e50e47bd
--- /dev/null
+++ b/pkgs/development/tools/maligned/deps.nix
@@ -0,0 +1,20 @@
+[
+  {
+    goPackagePath = "github.com/kisielk/gotool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kisielk/gotool";
+      rev = "80517062f582ea3340cd4baf70e86d539ae7d84d";
+      sha256 = "14af2pa0ssyp8bp2mvdw184s5wcysk6akil3wzxmr05wwy951iwn";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "96e9e165b75e735822645eff82850b08c377be36";
+      sha256 = "1zj9ck5sg9b0pphxybmvxf64hhcap7v7j37fx3v5aknf18crjjdg";
+    };
+  }
+]
diff --git a/pkgs/development/tools/misc/blackmagic/default.nix b/pkgs/development/tools/misc/blackmagic/default.nix
index 2974c653acdd..281463528354 100644
--- a/pkgs/development/tools/misc/blackmagic/default.nix
+++ b/pkgs/development/tools/misc/blackmagic/default.nix
@@ -1,5 +1,5 @@
 { stdenv, lib, fetchFromGitHub
-, gcc-arm-embedded, libftdi
+, gcc-arm-embedded, binutils-arm-embedded, libftdi
 , python, pythonPackages
 }:
 
@@ -17,8 +17,11 @@ stdenv.mkDerivation rec {
     fetchSubmodules = true;
   };
 
+  nativeBuildInputs = [
+    gcc-arm-embedded binutils-arm-embedded
+  ];
+
   buildInputs = [
-    gcc-arm-embedded
     libftdi
     python
     pythonPackages.intelhex
diff --git a/pkgs/development/tools/misc/dfu-programmer/default.nix b/pkgs/development/tools/misc/dfu-programmer/default.nix
index 1c0f80e1ddd7..ba95889b5a80 100644
--- a/pkgs/development/tools/misc/dfu-programmer/default.nix
+++ b/pkgs/development/tools/misc/dfu-programmer/default.nix
@@ -19,6 +19,6 @@ stdenv.mkDerivation rec {
     description = "A Device Firmware Update based USB programmer for Atmel chips with a USB bootloader";
     homepage = http://dfu-programmer.sourceforge.net/;
     maintainers = [ maintainers.the-kenny ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/tools/misc/strace/default.nix b/pkgs/development/tools/misc/strace/default.nix
index 33a46e16a3ab..e2022156870d 100644
--- a/pkgs/development/tools/misc/strace/default.nix
+++ b/pkgs/development/tools/misc/strace/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "strace-${version}";
-  version = "4.24";
+  version = "4.25";
 
   src = fetchurl {
     url = "https://strace.io/files/${version}/${name}.tar.xz";
-    sha256 = "0d061cdzk6a1822ds4wpqxg10ny27mi4i9zjmnsbz8nz3vy5jkhz";
+    sha256 = "00f7zagfh3np5gwi0z7hi7zjd7s5nixcaq7z78n87dvhakkgi1fn";
   };
 
   depsBuildBuild = [ buildPackages.stdenv.cc ];
diff --git a/pkgs/development/tools/misc/teensy-loader-cli/default.nix b/pkgs/development/tools/misc/teensy-loader-cli/default.nix
index d6c5256ca84d..91f2a5c58fc2 100644
--- a/pkgs/development/tools/misc/teensy-loader-cli/default.nix
+++ b/pkgs/development/tools/misc/teensy-loader-cli/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "1a663bv3lvm7bsf2wcaj2c0vpmniak7w5hwix5qgz608bvm2v781";
   };
 
-  buildInputs = [ unzip libusb ];
+  buildInputs = [ libusb ];
 
   installPhase = ''
     install -Dm755 teensy_loader_cli $out/bin/teensy-loader-cli
@@ -21,6 +21,6 @@ stdenv.mkDerivation {
     description = "Firmware uploader for the Teensy microcontroller boards";
     homepage = https://www.pjrc.com/teensy/;
     maintainers = with maintainers; [ the-kenny ];
-    platforms = platforms.linux;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/tools/nrpl/default.nix b/pkgs/development/tools/nrpl/default.nix
index d6a357235902..234f5a5bfae7 100644
--- a/pkgs/development/tools/nrpl/default.nix
+++ b/pkgs/development/tools/nrpl/default.nix
@@ -25,7 +25,10 @@ stdenv.mkDerivation rec {
     "-lpcre"
   ];
 
-  buildPhase = "nim c -d:release nrpl.nim";
+  buildPhase = ''
+    HOME=$TMPDIR
+    nim c -d:release nrpl.nim
+  '';
 
   installPhase = "install -Dt $out/bin nrpl";
 
diff --git a/pkgs/development/tools/ocaml/merlin/default.nix b/pkgs/development/tools/ocaml/merlin/default.nix
index d74b480c9c5a..c15970d3f3e6 100644
--- a/pkgs/development/tools/ocaml/merlin/default.nix
+++ b/pkgs/development/tools/ocaml/merlin/default.nix
@@ -3,7 +3,7 @@
 assert stdenv.lib.versionAtLeast ocaml.version "4.02";
 
 let
-  version = "3.2.1";
+  version = "3.2.2";
 in
 
 stdenv.mkDerivation {
@@ -12,7 +12,7 @@ stdenv.mkDerivation {
 
   src = fetchzip {
     url = "https://github.com/ocaml/merlin/archive/v${version}.tar.gz";
-    sha256 = "1szv2b7d12ll5n6pvnhlv3a6vnlyrkpya4l9fiyyiwyvgd4xzxwf";
+    sha256 = "15ssgmwdxylbwhld9p1cq8x6kadxyhll5bfyf11dddj6cldna3hb";
   };
 
   buildInputs = [ ocaml findlib dune yojson ];
diff --git a/pkgs/development/tools/pyre/default.nix b/pkgs/development/tools/pyre/default.nix
index 99e53610c01c..382e733cb98b 100644
--- a/pkgs/development/tools/pyre/default.nix
+++ b/pkgs/development/tools/pyre/default.nix
@@ -1,9 +1,15 @@
 { stdenv, fetchFromGitHub, ocamlPackages, makeWrapper, writeScript
-, dune, python3, rsync, fetchpatch }:
+, dune, python3, rsync, fetchpatch, buck }:
 let
   # Manually set version - the setup script requires
   # hg and git + keeping the .git directory around.
-  pyre-version = "0.0.14";
+  pyre-version = "0.0.17";  # also change typeshed revision below with $pyre-src/.typeshed-version
+  pyre-src = fetchFromGitHub {
+    owner = "facebook";
+    repo = "pyre-check";
+    rev = "v${pyre-version}";
+    sha256 = "0y86a3g5xbgh0byksyx5jw7yq7w840x85dhz9inz6mkg5j06mcis";
+  };
   versionFile = writeScript "version.ml" ''
     cat > "./version.ml" <<EOF
     open Core
@@ -20,12 +26,7 @@ let
  pyre-bin = stdenv.mkDerivation {
   name = "pyre-${pyre-version}";
 
-  src = fetchFromGitHub {
-    owner = "facebook";
-    repo = "pyre-check";
-    rev = "v${pyre-version}";
-    sha256 = "0c8xzaa3ljqb6llr041sydw0l4xqn7x21nw9vaymdxh35nx9bp2v";
-  };
+  src = pyre-src;
 
   nativeBuildInputs = [ makeWrapper ];
 
@@ -49,7 +50,6 @@ let
     export HOME=.
 
     # "external" because https://github.com/facebook/pyre-check/pull/8/files
-    cp Makefile.template Makefile
     sed "s/%VERSION%/external/" dune.in > dune
 
     cp ${versionFile} ./scripts/generate-version-number.sh
@@ -77,20 +77,18 @@ let
     description = "A performant type-checker for Python 3";
     homepage = https://pyre-check.org;
     license = licenses.mit;
-    platforms = with platforms; linux;
+    platforms = ocamlPackages.ocaml.meta.platforms;
     maintainers = with maintainers; [ teh ];
   };
 };
 typeshed = stdenv.mkDerivation {
   name = "typeshed";
-  # typeshed doesn't have versions, it seems to be synchronized with
-  # mypy relases. I'm assigning a random version here (same as pyre).
   version = pyre-version;
   src = fetchFromGitHub {
     owner = "python";
     repo = "typeshed";
-    rev = "a08c6ea";
-    sha256 = "0wy8yh43vhyyc4g7iqnmlj66kz5in02y5qc0c4jdckhpa3mchaqk";
+    rev = "bc3f9fe1d3c43b00c04cedb23e0eeebc9e1734b6";
+    sha256 = "06b2kj4n49h4sgi8hn5kalmir8llhanfdc7f1924cxvrkj5ry94b";
   };
   phases = [ "unpackPhase" "installPhase" ];
   installPhase = "cp -r $src $out";
@@ -98,19 +96,8 @@ typeshed = stdenv.mkDerivation {
 in python3.pkgs.buildPythonApplication rec {
   pname = "pyre-check";
   version = pyre-version;
-  src = fetchFromGitHub {
-    owner = "facebook";
-    repo = "pyre-check";
-    rev = "v${pyre-version}";
-    sha256 = "0ig7bx2kfn2kbxw74wysh5365yp5gyby42l9l29iclrzdghgk32l";
-  };
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/facebook/pyre-check/commit/b473d2ed9fc11e7c1cd0c7b8c42f521e5cdc2003.patch";
-      sha256 = "05xvyp7j4n6z92bxf64rxfq5pvaadxgx1c8c5qziy75vdz72lkcy";
-    })
-    ./pyre-bdist-wheel.patch
-  ];
+  src = pyre-src;
+  patches = [ ./pyre-bdist-wheel.patch ];
 
   # The build-pypi-package script does some funky stuff with build
   # directories - easier to patch it a bit than to replace it
@@ -119,15 +106,21 @@ in python3.pkgs.buildPythonApplication rec {
     mkdir ./build
     substituteInPlace scripts/build-pypi-package.sh \
         --replace 'NIX_BINARY_FILE' '${pyre-bin}/bin/pyre.bin' \
-        --replace 'BUILD_ROOT="$(mktemp -d)"' "BUILD_ROOT=$(pwd)/build"
+        --replace 'BUILD_ROOT="$(mktemp -d)"' "BUILD_ROOT=$PWD/build"
+    substituteInPlace client/buck.py \
+        --replace '"buck"' '"${buck}/bin/buck"'
+    substituteInPlace client/tests/buck_test.py \
+        --replace '"buck"' '"${buck}/bin/buck"'
   '';
 
-  buildInputs = [ pyre-bin rsync ];
+  buildInputs = [ pyre-bin ];
+  nativeBuildInputs = [ rsync ]; # only required for build-pypi-package.sh
   propagatedBuildInputs = with python3.pkgs; [ docutils typeshed ];
   buildPhase = ''
     bash scripts/build-pypi-package.sh --version ${pyre-version} --bundle-typeshed ${typeshed}
     cp -r build/dist dist
   '';
-
-  doCheck = false; # can't open file 'nix_run_setup':
+  checkPhase = ''
+    bash scripts/run-python-tests.sh
+  '';
 }
diff --git a/pkgs/development/tools/reftools/default.nix b/pkgs/development/tools/reftools/default.nix
new file mode 100644
index 000000000000..6ef724022e8c
--- /dev/null
+++ b/pkgs/development/tools/reftools/default.nix
@@ -0,0 +1,29 @@
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "reftools-unstable-${version}";
+  version = "2018-09-14";
+  rev = "654d0ba4f96d62286ca33cd46f7674b84f76d399";
+
+  goPackagePath = "github.com/davidrjenni/reftools";
+  excludedPackages = "\\(cmd/fillswitch/test-fixtures\\)";
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "davidrjenni";
+    repo = "reftools";
+    sha256 = "12y2h1h15xadc8pa3xsj11hpdxz5dss6k7xaa4h1ifkvnasjp5w2";
+  };
+
+  meta = with lib; {
+    description = "reftools - refactoring tools for Go";
+    homepage = https://github.com/davidrjenni/reftools;
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/rust/cargo-asm/default.nix b/pkgs/development/tools/rust/cargo-asm/default.nix
index ca793bf49080..246f5b18843c 100644
--- a/pkgs/development/tools/rust/cargo-asm/default.nix
+++ b/pkgs/development/tools/rust/cargo-asm/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, rustPlatform }:
+{ stdenv, fetchFromGitHub, rustPlatform, Security }:
 
 rustPlatform.buildRustPackage rec {
   name = "cargo-asm-${version}";
@@ -13,6 +13,8 @@ rustPlatform.buildRustPackage rec {
 
   cargoSha256 = "1m2j6i8hc8isdlj77gv9m6sk6q0x3bvzpva2k16g27i1ngy1989b";
 
+  buildInputs = stdenv.lib.optional stdenv.isDarwin Security;
+
   # Test checks against machine code output, which fails with some
   # LLVM/compiler versions.
   doCheck = false;
diff --git a/pkgs/development/tools/rust/pyo3-pack/default.nix b/pkgs/development/tools/rust/pyo3-pack/default.nix
new file mode 100644
index 000000000000..05c57e46b893
--- /dev/null
+++ b/pkgs/development/tools/rust/pyo3-pack/default.nix
@@ -0,0 +1,35 @@
+{ stdenv, fetchFromGitHub, rustPlatform, dbus, gmp, openssl, pkgconfig
+, darwin }:
+
+let
+  inherit (darwin.apple_sdk.frameworks) Security;
+in rustPlatform.buildRustPackage rec {
+  name = "pyo3-pack-${version}";
+  version = "0.3.8";
+
+  src = fetchFromGitHub {
+    owner = "PyO3";
+    repo = "pyo3-pack";
+    rev = "v${version}";
+    sha256 = "14343209w7wphkqh7pnw08pah09spjbwhk6l548g9ivra057gwaz";
+  };
+
+  cargoSha256 = "0n7z9p3v92ijqc2ix60wi74as5rql61k5qbqi8b1b02b71xmsp7j";
+
+  nativeBuildInputs = [ pkgconfig ];
+
+  buildInputs = [ gmp openssl ]
+    ++ stdenv.lib.optional stdenv.isDarwin Security
+    ++ stdenv.lib.optional stdenv.isLinux dbus;
+
+  # Requires network access, fails in sandbox.
+  doCheck = false;
+
+  meta = with stdenv.lib; {
+    description = "Build and publish crates with pyo3 bindings as python packages";
+    homepage = https://github.com/PyO3/pyo3-pack;
+    license = licenses.mit;
+    maintainers = [ maintainers.danieldk ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/development/tools/simavr/default.nix b/pkgs/development/tools/simavr/default.nix
index b009d5ed601b..e28aad40ef47 100644
--- a/pkgs/development/tools/simavr/default.nix
+++ b/pkgs/development/tools/simavr/default.nix
@@ -1,4 +1,5 @@
-{ stdenv, fetchFromGitHub, avrbinutils, avrgcc, avrlibc, libelf, which, git, pkgconfig, freeglut
+{ stdenv, fetchFromGitHub, libelf, which, git, pkgconfig, freeglut
+, avrbinutils, avrgcc, avrlibc
 , libGLU_combined }:
 
 stdenv.mkDerivation rec {
@@ -15,14 +16,10 @@ stdenv.mkDerivation rec {
   # ld: cannot find -lsimavr
   enableParallelBuilding = false;
 
-  preConfigure = ''
-    substituteInPlace Makefile.common --replace "-I../simavr/sim/avr -I../../simavr/sim/avr" \
-    "-I${avrlibc}/avr/include -L${avrlibc}/avr/lib/avr5  -B${avrlibc}/avr/lib -I../simavr/sim/avr -I../../simavr/sim/avr"
-  '';
   buildFlags = "AVR_ROOT=${avrlibc}/avr SIMAVR_VERSION=${version}";
   installFlags = buildFlags + " DESTDIR=$(out)";
 
-  
+
   # Hack to avoid TMPDIR in RPATHs.
   preFixup = ''rm -rf "$(pwd)" && mkdir "$(pwd)" '';
 
@@ -31,8 +28,8 @@ stdenv.mkDerivation rec {
     patchelf --set-rpath "$(patchelf --print-rpath "$target"):$out/lib" "$target"
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
-  buildInputs = [ which git avrbinutils avrgcc avrlibc libelf freeglut libGLU_combined ];
+  nativeBuildInputs = [ which git pkgconfig avrgcc avrbinutils ];
+  buildInputs = [ libelf freeglut libGLU_combined ];
 
   meta = with stdenv.lib; {
     description = "A lean and mean Atmel AVR simulator";
@@ -43,4 +40,3 @@ stdenv.mkDerivation rec {
   };
 
 }
-
diff --git a/pkgs/development/tools/sourcetrail/default.nix b/pkgs/development/tools/sourcetrail/default.nix
new file mode 100644
index 000000000000..2182f8697aab
--- /dev/null
+++ b/pkgs/development/tools/sourcetrail/default.nix
@@ -0,0 +1,75 @@
+{ stdenv, fetchurl, autoPatchelfHook
+, icu, zlib, expat, dbus, libheimdal, openssl}:
+
+stdenv.mkDerivation rec {
+  name = "sourcetrail-${version}";
+  version = "2018.3.55";
+
+  src = fetchurl {
+    name = "sourtrail.tar.gz";
+    url = "https://www.sourcetrail.com/downloads/${version}/linux/64bit";
+    sha256 = "6f5fbbecc221e7165ecbf1c4d208e302dade4feea9d43eb3265521efc0a376e2";
+  };
+
+  nativeBuildInputs = [ autoPatchelfHook ];
+  buildInputs = [ zlib expat dbus stdenv.cc.cc openssl ];
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out/bin $out/opt
+
+    mv -v setup/share $out
+    mv -v data/gui/icon/logo_1024_1024.png $out/share/icons/sourcetrail.png
+    mv -v data/gui/icon/project_256_256.png $out/share/icons/project-sourcetrail.png
+
+    mkdir -p $out/share/sourcetrail/doc
+    mv -v README EULA.txt $out/share/sourcetrail/doc
+    mv -v plugin $out/share/sourcetrail
+
+    cp -rv . $out/opt
+
+    rm $out/opt/lib/libssl.so
+    rm $out/opt/lib/platforms/{libqeglfs.so,libqwebgl.so}
+    ln -s ${openssl}/lib/libssl.so $out/opt/lib/libssl.so
+
+    substituteInPlace \
+      $out/share/applications/sourcetrail.desktop \
+      --replace /usr/bin/ $out/bin/
+
+    cat <<EOF > $out/bin/sourcetrail
+      #! ${stdenv.shell} -e
+
+      # XXX: Sourcetrail somehow copies the initial config files into the home
+      # directory without write permissions. We currently just copy them
+      # ourselves to work around this problem.
+      setup_config() {
+        local src dst
+
+        [ ! -d ~/.config/sourcetrail ] && mkdir -p ~/.config/sourcetrail
+        for src in $out/opt/data/fallback/*; do
+          dst=~/.config/sourcetrail/"\$(basename "\$src")"
+          if [ ! -e "\$dst" ]; then
+            cp -r "\$src" "\$dst"
+          fi
+        done
+
+        chmod -R u+w ~/.config/sourcetrail
+      }
+
+      [ -d "\$HOME" ] && setup_config
+      exec "$out/opt/Sourcetrail.sh" "\$@"
+    EOF
+    chmod +x $out/bin/sourcetrail
+
+    runHook postInstall
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://www.sourcetrail.com;
+    description = "A cross-platform source explorer for C/C++ and Java";
+    platforms = [ "x86_64-linux" ];
+    license = licenses.unfree;
+    maintainers = with maintainers; [ midchildan ];
+  };
+}
diff --git a/pkgs/development/tools/unconvert/default.nix b/pkgs/development/tools/unconvert/default.nix
new file mode 100644
index 000000000000..1e81c5b9f86e
--- /dev/null
+++ b/pkgs/development/tools/unconvert/default.nix
@@ -0,0 +1,31 @@
+
+{ buildGoPackage
+, lib
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  name = "unconvert-unstable-${version}";
+  version = "2018-07-03";
+  rev = "1a9a0a0a3594e9363e49545fb6a4e24ac4c68b7b";
+
+  goPackagePath = "github.com/mdempsky/unconvert";
+
+  src = fetchFromGitHub {
+    inherit rev;
+
+    owner = "mdempsky";
+    repo = "unconvert";
+    sha256 = "1ww5qk1cmdis4ig5mb0b0w7nzrf3734s51plmgdxqsr35y88q4p9";
+  };
+
+  goDeps = ./deps.nix;
+
+  meta = with lib; {
+    description = "Remove unnecessary type conversions from Go source";
+    homepage = https://github.com/mdempsky/unconvert;
+    license = licenses.bsd3;
+    maintainers = with maintainers; [ kalbasit ];
+    platforms = platforms.linux ++ platforms.darwin;
+  };
+}
diff --git a/pkgs/development/tools/unconvert/deps.nix b/pkgs/development/tools/unconvert/deps.nix
new file mode 100644
index 000000000000..333ec7ca3b15
--- /dev/null
+++ b/pkgs/development/tools/unconvert/deps.nix
@@ -0,0 +1,29 @@
+[
+  {
+    goPackagePath = "github.com/kisielk/gotool";
+    fetch = {
+      type = "git";
+      url = "https://github.com/kisielk/gotool";
+      rev = "80517062f582ea3340cd4baf70e86d539ae7d84d";
+      sha256 = "14af2pa0ssyp8bp2mvdw184s5wcysk6akil3wzxmr05wwy951iwn";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/text";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/text";
+      rev = "6f44c5a2ea40ee3593d98cdcc905cc1fdaa660e2";
+      sha256 = "00mwzxly5isgf0glz7k3k2dkyqkjfc4z55qxajx4lgcp3h8xn9xj";
+    };
+  }
+  {
+    goPackagePath = "golang.org/x/tools";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/tools";
+      rev = "96e9e165b75e735822645eff82850b08c377be36";
+      sha256 = "1zj9ck5sg9b0pphxybmvxf64hhcap7v7j37fx3v5aknf18crjjdg";
+    };
+  }
+]
diff --git a/pkgs/development/tools/yarn/default.nix b/pkgs/development/tools/yarn/default.nix
index 47a11e1b7f4d..be2b0689f925 100644
--- a/pkgs/development/tools/yarn/default.nix
+++ b/pkgs/development/tools/yarn/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   name = "yarn-${version}";
-  version = "1.10.1";
+  version = "1.12.1";
 
   src = fetchzip {
     url = "https://github.com/yarnpkg/yarn/releases/download/v${version}/yarn-v${version}.tar.gz";
-    sha256 = "0j9y53k0wxgwjvvpbs6rr4nbydg3bn4khcxsrnzyrakym0ihgmr1";
+    sha256 = "084xci8y5na2765sh8flc8c5z7fik62filf1p58aqrb2000vna1j";
   };
 
   buildInputs = [ nodejs ];