summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/compilers/graalvm/default.nix44
-rw-r--r--pkgs/development/coq-modules/contribs/default.nix2
-rw-r--r--pkgs/development/coq-modules/mathcomp/default.nix46
-rw-r--r--pkgs/development/coq-modules/mathcomp/generic.nix42
-rw-r--r--pkgs/development/coq-modules/ssreflect/default.nix47
-rw-r--r--pkgs/development/coq-modules/ssreflect/generic.nix49
-rw-r--r--pkgs/development/dhall-modules/default.nix9
-rw-r--r--pkgs/development/dhall-modules/prelude/v3.nix25
-rw-r--r--pkgs/development/haskell-modules/configuration-common.nix3
-rw-r--r--pkgs/development/haskell-modules/generic-builder.nix1
-rw-r--r--pkgs/development/interpreters/python/cpython/3.4/default.nix214
-rw-r--r--pkgs/development/interpreters/python/cpython/3.4/ld_library_path.patch51
-rw-r--r--pkgs/development/interpreters/python/cpython/3.4/no-ldconfig.patch147
-rw-r--r--pkgs/development/interpreters/python/cpython/3.4/use-correct-tcl-tk-on-darwin.patch48
-rw-r--r--pkgs/development/libraries/http-parser/default.nix40
-rw-r--r--pkgs/development/libraries/java/lombok/default.nix4
-rw-r--r--pkgs/development/python-modules/httmock/default.nix22
-rw-r--r--pkgs/development/python-modules/imageio/default.nix32
-rw-r--r--pkgs/development/python-modules/moviepy/default.nix1
-rw-r--r--pkgs/development/python-modules/python-gitlab/default.nix22
-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/check/default.nix30
-rw-r--r--pkgs/development/tools/check/deps.nix11
-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/go-tools/default.nix29
-rw-r--r--pkgs/development/tools/go-tools/deps.nix20
-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/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/maligned/default.nix30
-rw-r--r--pkgs/development/tools/maligned/deps.nix20
-rw-r--r--pkgs/development/tools/reftools/default.nix29
-rw-r--r--pkgs/development/tools/unconvert/default.nix31
-rw-r--r--pkgs/development/tools/unconvert/deps.nix29
48 files changed, 1154 insertions, 619 deletions
diff --git a/pkgs/development/compilers/graalvm/default.nix b/pkgs/development/compilers/graalvm/default.nix
index 7721ce06a561..a35143b43496 100644
--- a/pkgs/development/compilers/graalvm/default.nix
+++ b/pkgs/development/compilers/graalvm/default.nix
@@ -50,6 +50,9 @@ let
     rec { sha1 = "280c265b789e041c02e5c97815793dfc283fb1e6"; name = "LIBFFI_${sha1}/libffi.tar.gz";                                                    url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/libffi-3.2.1.tar.gz; }
     rec { sha1 = "8819cea8bfe22c9c63f55465e296b3855ea41786"; name = "TruffleJSON_${sha1}/trufflejson.jar";                                             url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/trufflejson-20180130.jar; }
     rec { sha1 = "9712a8124c40298015f04a74f61b3d81a51513af"; name = "CHECKSTYLE_8.8_${sha1}/checkstyle-8.8.jar";                                       url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/checkstyle-8.8-all.jar; }
+    rec { sha1 = "a828a4f32caf9ac0b74f2548f87310959558c526"; name = "VISUALVM_COMMON_${sha1}/visualvm-common.tar.gz";                                  url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/visualvm-612.tar.gz; }
+    rec { sha1 = "7ac829f0c9a37f5cc39afd2265588a365480720d"; name = "VISUALVM_PLATFORM_SPECIFIC_${sha1}/visualvm-platform-specific.tar.gz";            url = https://lafo.ssw.uni-linz.ac.at/pub/graal-external-deps/visualvm-612-linux-amd64.tar.gz; }
+    rec { sha1 = "e6e60889b7211a80b21052a249bd7e0f88f79fee"; name = "Java-WebSocket_${sha1}/java-websocket.jar";                                       url = mirror://maven/org/java-websocket/Java-WebSocket/1.3.9/Java-WebSocket-1.3.9.jar; }
   ];
 
   findbugs = fetchzip {
@@ -61,13 +64,13 @@ let
 in rec {
 
   mx = stdenv.mkDerivation rec {
-    version = "5.176.4";
+    version = "5.192.0";
     name = "mx";
     src = fetchFromGitHub {
       owner  = "graalvm";
       repo   = "mx";
       rev    = version;
-      sha256 = "0xmx4hpnd6m9hk49lgwnvwd0q11s2m4d8axwq7zzc8wm10d692xw";
+      sha256 = "04gdf1gzlc8a6li8lcnrs2j9zicj11fs1vqqf7cmhb4pm2h72hml";
     };
     nativeBuildInputs = [ makeWrapper ];
     buildPhase = ''
@@ -79,6 +82,11 @@ in rec {
         'def download(path, urls, verbose=False, abortOnError=True, verifyOnly=False):
           print("FAKE download(path={} urls={} verbose={} abortOnError={} verifyOnly={})".format(path, urls, verbose, abortOnError, verifyOnly))
           return True'
+
+      # avoid crash with 'ValueError: ZIP does not support timestamps before 1980'
+      substituteInPlace mx.py --replace \
+        'zipfile.ZipInfo(arcname, time.localtime(os.path.getmtime(join(root, f)))[:6])' \
+        'zipfile.ZipInfo(arcname, time.strptime ("1 Jan 1980", "%d %b %Y"       )[:6])'
     '';
     installPhase = ''
       mkdir -p $out/bin
@@ -97,9 +105,9 @@ in rec {
 
   # copy of pkgs.oraclejvm8 with JVMCI interface (TODO: it should work with pkgs.openjdk8 too)
   jvmci8 = stdenv.mkDerivation rec {
-    version = "0.45";
+    version = "0.49";
     name = let
-             n = "jvmci8u171-${version}";
+             n = "jvmci${/*"8u191"*/ lib.removePrefix "oraclejdk-" oraclejdk8.name}-${version}";
            in if (lib.stringLength n) == (lib.stringLength oraclejdk8.name) then
                 n
               else
@@ -108,7 +116,7 @@ in rec {
       owner  = "graalvm";
       repo   = "graal-jvmci-8";
       rev    = "jvmci-${version}";
-      sha256 = "1nppk9dpamisiadss1iy82i3rf6igndbf1vax85w9lz310kh0d12";
+      sha256 = "1zgin0w1qa7wmfhcisx470fhnmddfxxp5nyyix31yaa7dznql82k";
     };
     buildInputs = [ mx mercurial ];
     postUnpack = ''
@@ -146,7 +154,7 @@ in rec {
   };
 
   graalvm8 = stdenv.mkDerivation rec {
-    version = "1.0.0-rc3";
+    version = "1.0.0-rc8";
     name = let
              n = "graal-${version}";
            in if (lib.stringLength n) == (lib.stringLength jvmci8.name) then
@@ -157,7 +165,7 @@ in rec {
       owner  = "oracle";
       repo   = "graal";
       rev    = "vm-${version}";
-      sha256 = "1hcs4m6ailapgi3bikav1i517vqn5pn595cyqqjfvlnkjwihbnc3";
+      sha256 = "1fada4awrr8bhw294xdiq4bagvgrlcr44mw6338gaal0ky3vkm0p";
     };
     buildInputs = [ mx zlib mercurial jvmci8 ];
     postUnpack = ''
@@ -170,6 +178,17 @@ in rec {
         hg checkout ${lib.escapeShellArg src.rev}
       )
     '';
+    postPatch = ''
+      substituteInPlace substratevm/src/com.oracle.svm.core.posix/src/com/oracle/svm/core/posix/headers/PosixDirectives.java \
+        --replace '<zlib.h>' '<${zlib.dev}/include/zlib.h>'
+      substituteInPlace substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/CCLinkerInvocation.java \
+        --replace 'cmd.add("-v");' 'cmd.add("-v"); cmd.add("-L${zlib}/lib");'
+      substituteInPlace substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/c/codegen/CCompilerInvoker.java \
+        --replace 'command.add(Platform.includedIn(Platform.WINDOWS.class) ? "CL" : "gcc");' \
+          'command.add(Platform.includedIn(Platform.WINDOWS.class) ? "CL" : "${stdenv.cc}/bin/gcc");'
+      substituteInPlace substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/image/CCLinkerInvocation.java \
+        --replace 'protected String compilerCommand = "cc";' 'protected String compilerCommand = "${stdenv.cc}/bin/cc";'
+    '';
     buildPhase = ''
       # make a copy of jvmci8
       cp -dpR ${jvmci8} $out
@@ -178,13 +197,14 @@ in rec {
 
       export MX_ALT_OUTPUT_ROOT=$NIX_BUILD_TOP/mxbuild
       export MX_CACHE_DIR=${makeMxCache graal-mxcache}
+
       ( cd substratevm
 
         mkdir -p clibraries
         mx --java-home $out build
 
         # bootstrap native-image (that was removed from mx build in https://github.com/oracle/graal/commit/140d7a7edf54ec5872a8ff45869cd1ae499efde4)
-        mx --java-home $out native-image -cp $MX_ALT_OUTPUT_ROOT/substratevm/dists/svm-driver.jar com.oracle.svm.driver.NativeImage
+        mx --java-home $out native-image -cp $MX_ALT_OUTPUT_ROOT/substratevm/dists/jdk1.8/svm-driver.jar com.oracle.svm.driver.NativeImage
       )
       ( cd tools
         mx --java-home $out build
@@ -195,17 +215,17 @@ in rec {
       mkdir -p $out/jre/tools/{profiler,chromeinspector,truffle/builder} $out/jre/lib/{graal,include,truffle/include}
       cp -vpLR substratevm/svmbuild/native-image-root/lib/*                         $out/jre/lib/           || true # ignore "same file" error when dereferencing symlinks
       cp -vp   $MX_ALT_OUTPUT_ROOT/truffle/linux-amd64/truffle-nfi-native/bin/*     $out/jre/lib/amd64/
-      cp -vp   $MX_ALT_OUTPUT_ROOT/compiler/dists/graal-*processor*.jar             $out/jre/lib/graal/
+      cp -vp   $MX_ALT_OUTPUT_ROOT/compiler/dists/jdk1.8/graal-*processor*.jar      $out/jre/lib/graal/
       cp -vp   $MX_ALT_OUTPUT_ROOT/truffle/linux-amd64/truffle-nfi-native/include/* $out/jre/lib/include/
-      cp -vp   $MX_ALT_OUTPUT_ROOT/compiler/dists/graal-management.jar              $out/jre/lib/jvmci/
+      cp -vp   $MX_ALT_OUTPUT_ROOT/compiler/dists/jdk1.8/graal-management.jar       $out/jre/lib/jvmci/
       cp -vdpR $out/jre/lib/svm/clibraries                                          $out/jre/lib/svm/builder/
-      cp -vpR  $MX_ALT_OUTPUT_ROOT/truffle/dists/*                                  $out/jre/lib/truffle/
+      cp -vpR  $MX_ALT_OUTPUT_ROOT/truffle/dists/jdk1.8/*                           $out/jre/lib/truffle/
       cp -vp   $MX_ALT_OUTPUT_ROOT/truffle/linux-amd64/truffle-nfi-native/include/* $out/jre/lib/truffle/include/
       cp -vpLR substratevm/svmbuild/native-image-root/tools/*                       $out/jre/tools/
       cp -vpR  $MX_ALT_OUTPUT_ROOT/tools/dists/chromeinspector*                     $out/jre/tools/chromeinspector/
       cp -vpR  $MX_ALT_OUTPUT_ROOT/tools/dists/truffle-profiler*                    $out/jre/tools/profiler/
       cp -vpR  $MX_ALT_OUTPUT_ROOT/truffle/linux-amd64/truffle-nfi-native/*         $out/jre/tools/truffle/
-      cp -vp   $MX_ALT_OUTPUT_ROOT/truffle/dists/truffle-nfi.jar                    $out/jre/tools/truffle/builder/
+      cp -vp   $MX_ALT_OUTPUT_ROOT/truffle/dists/jdk1.8/truffle-nfi.jar             $out/jre/tools/truffle/builder/
 
       echo "name=GraalVM ${version}"                                              > $out/jre/lib/amd64/server/vm.properties
       echo -n "graal"                                                             > $out/jre/lib/jvmci/compiler-name
diff --git a/pkgs/development/coq-modules/contribs/default.nix b/pkgs/development/coq-modules/contribs/default.nix
index d12d3fefb944..a1ecdd610a3e 100644
--- a/pkgs/development/coq-modules/contribs/default.nix
+++ b/pkgs/development/coq-modules/contribs/default.nix
@@ -1018,7 +1018,7 @@ let mkContrib = repo: revs: param:
     sha256 = "0fp3vdl79c8d759qjhk42rjfpkd0ba4pcw572f5gxn28kfwz3rrj";
   };
 
-  zfc = mkContrib "zfc" [ "8.5" "8.6" "8.7" ] {
+  zfc = mkContrib "zfc" [ "8.5" "8.6" "8.7" "8.8" ] {
     version = "v8.5.0-5-gbba3259";
     rev = "bba325933370fea64780b1afa2fad54c1b567819";
     sha256 = "0iwkpmc22nwasrk4g7ki4s5y05zjs7kmqk3j98giwp2wiavhgapn";
diff --git a/pkgs/development/coq-modules/mathcomp/default.nix b/pkgs/development/coq-modules/mathcomp/default.nix
index 92c3c87774ab..99a6fe311a01 100644
--- a/pkgs/development/coq-modules/mathcomp/default.nix
+++ b/pkgs/development/coq-modules/mathcomp/default.nix
@@ -1,6 +1,8 @@
-{ callPackage, fetchurl, coq }:
+{ stdenv, fetchurl, coq, ncurses, which
+, graphviz, withDoc ? false
+}:
 
-let param =
+let params =
 
   let param_1_7 = {
       version = "1.7.0";
@@ -16,14 +18,48 @@ let param =
     "8.6" = param_1_7;
     "8.7" = param_1_7;
     "8.8" = param_1_7;
+    "8.9" = param_1_7;
 
-  }."${coq.coq-version}"
-; in
+  };
+  param = params."${coq.coq-version}";
+in
 
-callPackage ./generic.nix {
+stdenv.mkDerivation {
   name = "coq${coq.coq-version}-mathcomp-${param.version}";
+
   src = fetchurl {
     url = "https://github.com/math-comp/math-comp/archive/mathcomp-${param.version}.tar.gz";
     inherit (param) sha256;
   };
+
+  nativeBuildInputs = stdenv.lib.optionals withDoc [ graphviz ];
+  buildInputs = [ coq ncurses which ] ++ (with coq.ocamlPackages; [ ocaml findlib camlp5 ]);
+
+  enableParallelBuilding = true;
+
+  buildFlags = stdenv.lib.optionalString withDoc "doc";
+
+  preBuild = ''
+    patchShebangs etc/utils/ssrcoqdep || true
+    cd mathcomp
+    export COQBIN=${coq}/bin/
+  '';
+
+  installPhase = ''
+    make -f Makefile.coq COQLIB=$out/lib/coq/${coq.coq-version}/ install
+  '' + stdenv.lib.optionalString withDoc ''
+    make -f Makefile.coq install-doc DOCDIR=$out/share/coq/${coq.coq-version}/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://ssr.msr-inria.inria.fr/;
+    license = licenses.cecill-b;
+    maintainers = [ maintainers.vbgl maintainers.jwiegley ];
+    platforms = coq.meta.platforms;
+  };
+
+  passthru = {
+    compatibleCoqVersions = v: builtins.hasAttr v params;
+  };
+
 }
diff --git a/pkgs/development/coq-modules/mathcomp/generic.nix b/pkgs/development/coq-modules/mathcomp/generic.nix
deleted file mode 100644
index 2a602711965f..000000000000
--- a/pkgs/development/coq-modules/mathcomp/generic.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ stdenv, coq, ncurses, which
-, graphviz, withDoc ? false
-, src, name
-}:
-
-stdenv.mkDerivation {
-
-  inherit name;
-  inherit src;
-
-  nativeBuildInputs = stdenv.lib.optionals withDoc [ graphviz ];
-  buildInputs = with coq.ocamlPackages; [ ocaml findlib camlp5 ncurses which ];
-  propagatedBuildInputs = [ coq ];
-
-  enableParallelBuilding = true;
-
-  buildFlags = stdenv.lib.optionalString withDoc "doc";
-
-  preBuild = ''
-    patchShebangs etc/utils/ssrcoqdep || true
-    cd mathcomp
-    export COQBIN=${coq}/bin/
-  '';
-
-  installPhase = ''
-    make -f Makefile.coq COQLIB=$out/lib/coq/${coq.coq-version}/ install
-  '' + stdenv.lib.optionalString withDoc ''
-    make -f Makefile.coq install-doc DOCDIR=$out/share/coq/${coq.coq-version}/
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = http://ssr.msr-inria.inria.fr/;
-    license = licenses.cecill-b;
-    maintainers = [ maintainers.vbgl maintainers.jwiegley ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.5" "8.6" "8.7" "8.8" ];
-  };
-
-}
diff --git a/pkgs/development/coq-modules/ssreflect/default.nix b/pkgs/development/coq-modules/ssreflect/default.nix
index 9e9c3c7957aa..840189e347a5 100644
--- a/pkgs/development/coq-modules/ssreflect/default.nix
+++ b/pkgs/development/coq-modules/ssreflect/default.nix
@@ -1,6 +1,8 @@
-{ callPackage, fetchurl, coq }:
+{ stdenv, fetchurl, coq, ncurses, which
+, graphviz, withDoc ? false
+}:
 
-let param =
+let params =
 
   let param_1_7 = {
     version = "1.7.0";
@@ -16,14 +18,49 @@ let param =
     "8.6" = param_1_7;
     "8.7" = param_1_7;
     "8.8" = param_1_7;
+    "8.9" = param_1_7;
 
-  }."${coq.coq-version}"
-; in
+  };
+  param = params."${coq.coq-version}";
+in
+
+stdenv.mkDerivation {
 
-callPackage ./generic.nix {
   name = "coq${coq.coq-version}-ssreflect-${param.version}";
   src = fetchurl {
     url = "https://github.com/math-comp/math-comp/archive/mathcomp-${param.version}.tar.gz";
     inherit (param) sha256;
   };
+
+  nativeBuildInputs = stdenv.lib.optionals withDoc [ graphviz ];
+  buildInputs = [ coq ncurses which ] ++ (with coq.ocamlPackages; [ ocaml findlib camlp5 ]);
+
+  enableParallelBuilding = true;
+
+  preBuild = ''
+    patchShebangs etc/utils/ssrcoqdep || true
+    cd mathcomp/ssreflect
+    export COQBIN=${coq}/bin/
+  '';
+
+  installPhase = ''
+    make -f Makefile.coq COQLIB=$out/lib/coq/${coq.coq-version}/ install
+  '';
+
+  postInstall = stdenv.lib.optionalString withDoc ''
+    mkdir -p $out/share/doc/coq/${coq.coq-version}/user-contrib/mathcomp/ssreflect/
+    cp -r html $out/share/doc/coq/${coq.coq-version}/user-contrib/mathcomp/ssreflect/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://ssr.msr-inria.inria.fr/;
+    license = licenses.cecill-b;
+    maintainers = with maintainers; [ vbgl jwiegley ];
+    inherit (coq.meta) platforms;
+  };
+
+  passthru = {
+    compatibleCoqVersions = v: builtins.hasAttr v params;
+  };
+
 }
diff --git a/pkgs/development/coq-modules/ssreflect/generic.nix b/pkgs/development/coq-modules/ssreflect/generic.nix
deleted file mode 100644
index 23e364cd960d..000000000000
--- a/pkgs/development/coq-modules/ssreflect/generic.nix
+++ /dev/null
@@ -1,49 +0,0 @@
-{ stdenv, coq, ncurses, which
-, graphviz, withDoc ? false
-, src, name, patches ? []
-}:
-
-stdenv.mkDerivation {
-
-  inherit name;
-  inherit src;
-
-  nativeBuildInputs = stdenv.lib.optionals withDoc [ graphviz ];
-  buildInputs = with coq.ocamlPackages; [ ocaml findlib camlp5 ncurses which ];
-  propagatedBuildInputs = [ coq ];
-
-  enableParallelBuilding = true;
-
-  inherit patches;
-
-  preBuild = ''
-    patchShebangs etc/utils/ssrcoqdep || true
-    cd mathcomp/ssreflect
-    export COQBIN=${coq}/bin/
-  '';
-
-  installPhase = ''
-    make -f Makefile.coq COQLIB=$out/lib/coq/${coq.coq-version}/ install
-  '';
-
-  postInstall = ''
-    # mkdir -p $out/bin
-    # cp -p bin/ssrcoq $out/bin
-    # cp -p bin/ssrcoq.byte $out/bin
-  '' + stdenv.lib.optionalString withDoc ''
-    mkdir -p $out/share/doc/coq/${coq.coq-version}/user-contrib/mathcomp/ssreflect/
-    cp -r html $out/share/doc/coq/${coq.coq-version}/user-contrib/mathcomp/ssreflect/
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = http://ssr.msr-inria.inria.fr/;
-    license = licenses.cecill-b;
-    maintainers = with maintainers; [ vbgl jwiegley ];
-    platforms = coq.meta.platforms;
-  };
-
-  passthru = {
-    compatibleCoqVersions = v: builtins.elem v [ "8.5" "8.6" "8.7" "8.8" ];
-  };
-
-}
diff --git a/pkgs/development/dhall-modules/default.nix b/pkgs/development/dhall-modules/default.nix
new file mode 100644
index 000000000000..b6632a86f31f
--- /dev/null
+++ b/pkgs/development/dhall-modules/default.nix
@@ -0,0 +1,9 @@
+{ pkgs }:
+
+# TODO: add into the toplevel fixpoint instead of using rec
+rec {
+
+  prelude = prelude_3_0_0;
+  prelude_3_0_0 = pkgs.callPackage ./prelude/v3.nix {};
+
+}
diff --git a/pkgs/development/dhall-modules/prelude/v3.nix b/pkgs/development/dhall-modules/prelude/v3.nix
new file mode 100644
index 000000000000..ef673310ceb0
--- /dev/null
+++ b/pkgs/development/dhall-modules/prelude/v3.nix
@@ -0,0 +1,25 @@
+{ stdenv, lib, fetchFromGitHub }:
+
+stdenv.mkDerivation {
+  name = "dhall-prelude";
+
+  src = fetchFromGitHub {
+    owner = "dhall-lang";
+    repo = "dhall-lang";
+    # Commit where the v3.0.0 prelude folder was merged into dhall-lang
+    # and a LICENSE file has been added.
+    rev = "f6aa9399f1ac831d66c34104abe6856023c5b2df";
+    sha256 = "0kqjgh3y1l3cb3rj381j7c09547g1vh2dsfzpm08y1qajhhf9vgf";
+  };
+
+  phases = [ "unpackPhase" "installPhase" ];
+
+  installPhase = ''
+    cp -r Prelude $out
+  '';
+
+  meta = {
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ Profpatsch ];
+  };
+}
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index 56ffd6ee54ee..1a6d38ba5d8d 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -893,6 +893,9 @@ self: super: {
   # https://github.com/aisamanra/config-ini/issues/12
   config-ini = dontCheck super.config-ini;
 
+  # We've remove cpython 3.4 from nixpkgs
+  cpython = null;
+
   # doctest >=0.9 && <0.12
   genvalidity-property = doJailbreak super.genvalidity-property;
   path = dontCheck super.path;
diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix
index 8f230c92aaa1..a0bf655a67b7 100644
--- a/pkgs/development/haskell-modules/generic-builder.nix
+++ b/pkgs/development/haskell-modules/generic-builder.nix
@@ -443,6 +443,7 @@ stdenv.mkDerivation ({
 
     env = shellFor {
       packages = p: [ drv ];
+      inherit shellHook;
     };
 
   };
diff --git a/pkgs/development/interpreters/python/cpython/3.4/default.nix b/pkgs/development/interpreters/python/cpython/3.4/default.nix
deleted file mode 100644
index 18b90cd1da46..000000000000
--- a/pkgs/development/interpreters/python/cpython/3.4/default.nix
+++ /dev/null
@@ -1,214 +0,0 @@
-{ stdenv, fetchurl, fetchpatch
-, bzip2
-, expat
-, libffi
-, gdbm
-, lzma
-, ncurses
-, openssl
-, readline
-, sqlite
-, tcl ? null, tk ? null, tix ? null, libX11 ? null, xproto ? null, x11Support ? false
-, zlib
-, callPackage
-, self
-, CF, configd
-, python-setup-hook
-# For the Python package set
-, packageOverrides ? (self: super: {})
-}:
-
-assert x11Support -> tcl != null
-                  && tk != null
-                  && xproto != null
-                  && libX11 != null;
-
-with stdenv.lib;
-
-let
-  majorVersion = "3.4";
-  minorVersion = "9";
-  minorVersionSuffix = "";
-  version = "${majorVersion}.${minorVersion}${minorVersionSuffix}";
-  libPrefix = "python${majorVersion}";
-  sitePackages = "lib/${libPrefix}/site-packages";
-
-  buildInputs = filter (p: p != null) [
-    zlib bzip2 expat lzma libffi gdbm sqlite readline ncurses openssl ]
-    ++ optionals x11Support [ tcl tk libX11 xproto ]
-    ++ optionals stdenv.isDarwin [ CF configd ];
-
-  hasDistutilsCxxPatch = !(stdenv.cc.isGNU or false);
-
-in stdenv.mkDerivation {
-  name = "python3-${version}";
-  pythonVersion = majorVersion;
-  inherit majorVersion version;
-
-  inherit buildInputs;
-
-  src = fetchurl {
-    url = "http://www.python.org/ftp/python/${version}/Python-${version}.tar.xz";
-    sha256 = "1n9b1kavmw8b7rc3gkrka4fjzrbfq9iqy791yncaf09bp9v9cqjr";
-  };
-
-  NIX_LDFLAGS = optionalString stdenv.isLinux "-lgcc_s";
-
-  # Determinism: The interpreter is patched to write null timestamps when compiling python files.
-  # This way python doesn't try to update them when we freeze timestamps in nix store.
-  DETERMINISTIC_BUILD=1;
-  # Determinism: We fix the hashes of str, bytes and datetime objects.
-  PYTHONHASHSEED=0;
-
-  prePatch = optionalString stdenv.isDarwin ''
-    substituteInPlace configure --replace '`/usr/bin/arch`' '"i386"'
-    substituteInPlace configure --replace '-Wl,-stack_size,1000000' ' '
-  '';
-
-  patches = [
-    ./no-ldconfig.patch
-    ./ld_library_path.patch
-  ] ++ optionals (x11Support && stdenv.isDarwin) [
-    ./use-correct-tcl-tk-on-darwin.patch
-  ] ++ optionals hasDistutilsCxxPatch [
-    # Fix for http://bugs.python.org/issue1222585
-    # Upstream distutils is calling C compiler to compile C++ code, which
-    # only works for GCC and Apple Clang. This makes distutils to call C++
-    # compiler when needed.
-    (fetchpatch {
-      url = "https://bugs.python.org/file47046/python-3.x-distutils-C++.patch";
-      sha256 = "0dgdn9k2kmw4wh90vdnjcrnn97ylxgx7mbn9l87fwz6j501jqvk8";
-      extraPrefix = "";
-    })
-  ];
-
-  postPatch = ''
-    # Determinism
-    substituteInPlace "Lib/py_compile.py" --replace "source_stats['mtime']" "(1 if 'DETERMINISTIC_BUILD' in os.environ else source_stats['mtime'])"
-    # Determinism. This is done unconditionally
-    substituteInPlace "Lib/importlib/_bootstrap.py" --replace "source_mtime = int(source_stats['mtime'])" "source_mtime = 1"
-  '' + optionalString (x11Support && (tix != null)) ''
-    substituteInPlace "Lib/tkinter/tix.py" --replace "os.environ.get('TIX_LIBRARY')" "os.environ.get('TIX_LIBRARY') or '${tix}/lib'"
-  ''
-    # Avoid picking up getentropy() from glibc >= 2.25, as that would break
-    # on older kernels.  http://bugs.python.org/issue29157
-    + optionalString stdenv.isLinux ''
-        substituteInPlace Python/random.c --replace 'defined(HAVE_GETENTROPY)' '0'
-        cat Python/random.c
-  '';
-
-  CPPFLAGS="${concatStringsSep " " (map (p: "-I${getDev p}/include") buildInputs)}";
-  LDFLAGS="${concatStringsSep " " (map (p: "-L${getLib p}/lib") buildInputs)}";
-  LIBS="${optionalString (!stdenv.isDarwin) "-lcrypt"} ${optionalString (ncurses != null) "-lncurses"}";
-
-  configureFlags = [
-    "--enable-shared"
-    "--with-threads"
-    "--without-ensurepip"
-    "--with-system-expat"
-    "--with-system-ffi"
-  ]
-    # Never even try to use lchmod on linux,
-    # don't rely on detecting glibc-isms.
-  ++ optional stdenv.hostPlatform.isLinux "ac_cv_func_lchmod=no";
-
-  preConfigure = ''
-    for i in /usr /sw /opt /pkg; do	# improve purity
-      substituteInPlace ./setup.py --replace $i /no-such-path
-    done
-    ${optionalString stdenv.isDarwin ''
-       export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -msse2"
-       export MACOSX_DEPLOYMENT_TARGET=10.6
-     ''
-     + optionalString stdenv.hostPlatform.isMusl ''
-      export NIX_CFLAGS_COMPILE+=" -DTHREAD_STACK_SIZE=0x100000"
-     ''}
-  '';
-
-  setupHook = python-setup-hook sitePackages;
-
-  postInstall = ''
-    # needed for some packages, especially packages that backport functionality
-    # to 2.x from 3.x
-    for item in $out/lib/python${majorVersion}/test/*; do
-      if [[ "$item" != */test_support.py*
-         && "$item" != */test/support
-         && "$item" != */test/libregrtest
-         && "$item" != */test/regrtest.py* ]]; then
-        rm -rf "$item"
-      else
-        echo $item
-      fi
-    done
-    touch $out/lib/python${majorVersion}/test/__init__.py
-
-    ln -s "$out/include/python${majorVersion}m" "$out/include/python${majorVersion}"
-    paxmark E $out/bin/python${majorVersion}
-
-    # Python on Nix is not manylinux1 compatible. https://github.com/NixOS/nixpkgs/issues/18484
-    echo "manylinux1_compatible=False" >> $out/lib/${libPrefix}/_manylinux.py
-
-    # Determinism: Windows installers were not deterministic.
-    # We're also not interested in building Windows installers.
-    find "$out" -name 'wininst*.exe' | xargs -r rm -f
-
-    # Use Python3 as default python
-    ln -s "$out/bin/idle3" "$out/bin/idle"
-    ln -s "$out/bin/pydoc3" "$out/bin/pydoc"
-    ln -s "$out/bin/python3" "$out/bin/python"
-    ln -s "$out/bin/python3-config" "$out/bin/python-config"
-    ln -s "$out/lib/pkgconfig/python3.pc" "$out/lib/pkgconfig/python.pc"
-
-    # Get rid of retained dependencies on -dev packages, and remove
-    # some $TMPDIR references to improve binary reproducibility.
-    # Note that the .pyc file of _sysconfigdata.py should be regenerated!
-    for i in $out/lib/python${majorVersion}/_sysconfigdata.py $out/lib/python${majorVersion}/config-${majorVersion}m/Makefile; do
-      sed -i $i -e "s|-I/nix/store/[^ ']*||g" -e "s|-L/nix/store/[^ ']*||g" -e "s|$TMPDIR|/no-such-path|g"
-    done
-
-    # Determinism: rebuild all bytecode
-    # We exclude lib2to3 because that's Python 2 code which fails
-    # We rebuild three times, once for each optimization level
-    find $out -name "*.py" | $out/bin/python -m compileall -q -f -x "lib2to3" -i -
-    find $out -name "*.py" | $out/bin/python -O -m compileall -q -f -x "lib2to3" -i -
-    find $out -name "*.py" | $out/bin/python -OO -m compileall -q -f -x "lib2to3" -i -
-  '';
-
-  passthru = let
-    pythonPackages = callPackage ../../../../../top-level/python-packages.nix {
-      python = self;
-      overrides = packageOverrides;
-    };
-  in rec {
-    inherit libPrefix sitePackages x11Support hasDistutilsCxxPatch;
-    executable = "${libPrefix}m";
-    buildEnv = callPackage ../../wrapper.nix { python = self; inherit (pythonPackages) requiredPythonModules; };
-    withPackages = import ../../with-packages.nix { inherit buildEnv pythonPackages;};
-    pkgs = pythonPackages;
-    isPy3 = true;
-    isPy34 = true;
-    is_py3k = true;  # deprecated
-    interpreter = "${self}/bin/${executable}";
-  };
-
-  enableParallelBuilding = true;
-
-  doCheck = false; # expensive, and fails
-
-  meta = {
-    homepage = http://python.org;
-    description = "A high-level dynamically-typed programming language";
-    longDescription = ''
-      Python is a remarkably powerful dynamic programming language that
-      is used in a wide variety of application domains. Some of its key
-      distinguishing features include: clear, readable syntax; strong
-      introspection capabilities; intuitive object orientation; natural
-      expression of procedural code; full modularity, supporting
-      hierarchical packages; exception-based error handling; and very
-      high level dynamic data types.
-    '';
-    license = licenses.psfl;
-    platforms = with platforms; linux ++ darwin;
-    maintainers = with maintainers; [ fridh ];
-  };
-}
diff --git a/pkgs/development/interpreters/python/cpython/3.4/ld_library_path.patch b/pkgs/development/interpreters/python/cpython/3.4/ld_library_path.patch
deleted file mode 100644
index 3172eb6d18e4..000000000000
--- a/pkgs/development/interpreters/python/cpython/3.4/ld_library_path.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 85991e0d7f0e631240f3f6233bd65d1128a66dec Mon Sep 17 00:00:00 2001
-From: Frederik Rietdijk <fridh@fridh.nl>
-Date: Thu, 14 Sep 2017 10:00:31 +0200
-Subject: [PATCH] ctypes.util: support LD_LIBRARY_PATH
-
-Backports support for LD_LIBRARY_PATH from 3.6
----
- Lib/ctypes/util.py | 26 +++++++++++++++++++++++++-
- 1 file changed, 25 insertions(+), 1 deletion(-)
-
-diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
-index 780cd5d21b..d7ac15070f 100644
---- a/Lib/ctypes/util.py
-+++ b/Lib/ctypes/util.py
-@@ -181,8 +181,32 @@ elif os.name == "posix":
-         def _findSoname_ldconfig(name):
-             return None
- 
-+        def _findLib_ld(name):
-+            # See issue #9998 for why this is needed
-+            expr = r'[^\(\)\s]*lib%s\.[^\(\)\s]*' % re.escape(name)
-+            cmd = ['ld', '-t']
-+            libpath = os.environ.get('LD_LIBRARY_PATH')
-+            if libpath:
-+                for d in libpath.split(':'):
-+                    cmd.extend(['-L', d])
-+            cmd.extend(['-o', os.devnull, '-l%s' % name])
-+            result = None
-+            try:
-+                p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
-+                                     stderr=subprocess.PIPE,
-+                                     universal_newlines=True)
-+                out, _ = p.communicate()
-+                res = re.search(expr, os.fsdecode(out))
-+                if res:
-+                    result = res.group(0)
-+            except Exception as e:
-+                pass  # result will be None
-+            return result
-+
-         def find_library(name):
--            return _findSoname_ldconfig(name) or _get_soname(_findLib_gcc(name))
-+            # See issue #9998
-+            return _findSoname_ldconfig(name) or \
-+                   _get_soname(_findLib_gcc(name) or _findLib_ld(name))
- 
- ################################################################
- # test code
--- 
-2.14.1
-
diff --git a/pkgs/development/interpreters/python/cpython/3.4/no-ldconfig.patch b/pkgs/development/interpreters/python/cpython/3.4/no-ldconfig.patch
deleted file mode 100644
index 3cb77a107254..000000000000
--- a/pkgs/development/interpreters/python/cpython/3.4/no-ldconfig.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From 81bd99ad9058feb1d0361bc8862e8567c21a6142 Mon Sep 17 00:00:00 2001
-From: Frederik Rietdijk <fridh@fridh.nl>
-Date: Mon, 28 Aug 2017 09:24:06 +0200
-Subject: [PATCH] Don't use ldconfig and speed up uuid load
-
----
- Lib/ctypes/util.py | 52 ++--------------------------------------------------
- Lib/uuid.py        | 50 ++------------------------------------------------
- 2 files changed, 4 insertions(+), 98 deletions(-)
-
-diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
-index 595113bffd..780cd5d21b 100644
---- a/Lib/ctypes/util.py
-+++ b/Lib/ctypes/util.py
-@@ -88,28 +88,7 @@ elif os.name == "posix":
-     import re, tempfile
- 
-     def _findLib_gcc(name):
--        expr = r'[^\(\)\s]*lib%s\.[^\(\)\s]*' % re.escape(name)
--        fdout, ccout = tempfile.mkstemp()
--        os.close(fdout)
--        cmd = 'if type gcc >/dev/null 2>&1; then CC=gcc; elif type cc >/dev/null 2>&1; then CC=cc;else exit 10; fi;' \
--              'LANG=C LC_ALL=C $CC -Wl,-t -o ' + ccout + ' 2>&1 -l' + name
--        try:
--            f = os.popen(cmd)
--            try:
--                trace = f.read()
--            finally:
--                rv = f.close()
--        finally:
--            try:
--                os.unlink(ccout)
--            except FileNotFoundError:
--                pass
--        if rv == 10:
--            raise OSError('gcc or cc command not found')
--        res = re.search(expr, trace)
--        if not res:
--            return None
--        return res.group(0)
-+        return None
- 
- 
-     if sys.platform == "sunos5":
-@@ -200,34 +179,7 @@ elif os.name == "posix":
-     else:
- 
-         def _findSoname_ldconfig(name):
--            import struct
--            if struct.calcsize('l') == 4:
--                machine = os.uname().machine + '-32'
--            else:
--                machine = os.uname().machine + '-64'
--            mach_map = {
--                'x86_64-64': 'libc6,x86-64',
--                'ppc64-64': 'libc6,64bit',
--                'sparc64-64': 'libc6,64bit',
--                's390x-64': 'libc6,64bit',
--                'ia64-64': 'libc6,IA-64',
--                }
--            abi_type = mach_map.get(machine, 'libc6')
--
--            # XXX assuming GLIBC's ldconfig (with option -p)
--            regex = os.fsencode(
--                '\s+(lib%s\.[^\s]+)\s+\(%s' % (re.escape(name), abi_type))
--            try:
--                with subprocess.Popen(['/sbin/ldconfig', '-p'],
--                                      stdin=subprocess.DEVNULL,
--                                      stderr=subprocess.DEVNULL,
--                                      stdout=subprocess.PIPE,
--                                      env={'LC_ALL': 'C', 'LANG': 'C'}) as p:
--                    res = re.search(regex, p.stdout.read())
--                    if res:
--                        return os.fsdecode(res.group(1))
--            except OSError:
--                pass
-+            return None
- 
-         def find_library(name):
-             return _findSoname_ldconfig(name) or _get_soname(_findLib_gcc(name))
-diff --git a/Lib/uuid.py b/Lib/uuid.py
-index 1061bffc43..846f5819f5 100644
---- a/Lib/uuid.py
-+++ b/Lib/uuid.py
-@@ -451,57 +451,11 @@ def _netbios_getnode():
-         return ((bytes[0]<<40) + (bytes[1]<<32) + (bytes[2]<<24) +
-                 (bytes[3]<<16) + (bytes[4]<<8) + bytes[5])
- 
--# Thanks to Thomas Heller for ctypes and for his help with its use here.
- 
--# If ctypes is available, use it to find system routines for UUID generation.
--# XXX This makes the module non-thread-safe!
- _uuid_generate_random = _uuid_generate_time = _UuidCreate = None
--try:
--    import ctypes, ctypes.util
- 
--    # The uuid_generate_* routines are provided by libuuid on at least
--    # Linux and FreeBSD, and provided by libc on Mac OS X.
--    for libname in ['uuid', 'c']:
--        try:
--            lib = ctypes.CDLL(ctypes.util.find_library(libname))
--        except:
--            continue
--        if hasattr(lib, 'uuid_generate_random'):
--            _uuid_generate_random = lib.uuid_generate_random
--        if hasattr(lib, 'uuid_generate_time'):
--            _uuid_generate_time = lib.uuid_generate_time
--            if _uuid_generate_random is not None:
--                break  # found everything we were looking for
--
--    # The uuid_generate_* functions are broken on MacOS X 10.5, as noted
--    # in issue #8621 the function generates the same sequence of values
--    # in the parent process and all children created using fork (unless
--    # those children use exec as well).
--    #
--    # Assume that the uuid_generate functions are broken from 10.5 onward,
--    # the test can be adjusted when a later version is fixed.
--    import sys
--    if sys.platform == 'darwin':
--        import os
--        if int(os.uname().release.split('.')[0]) >= 9:
--            _uuid_generate_random = _uuid_generate_time = None
--
--    # On Windows prior to 2000, UuidCreate gives a UUID containing the
--    # hardware address.  On Windows 2000 and later, UuidCreate makes a
--    # random UUID and UuidCreateSequential gives a UUID containing the
--    # hardware address.  These routines are provided by the RPC runtime.
--    # NOTE:  at least on Tim's WinXP Pro SP2 desktop box, while the last
--    # 6 bytes returned by UuidCreateSequential are fixed, they don't appear
--    # to bear any relationship to the MAC address of any network device
--    # on the box.
--    try:
--        lib = ctypes.windll.rpcrt4
--    except:
--        lib = None
--    _UuidCreate = getattr(lib, 'UuidCreateSequential',
--                          getattr(lib, 'UuidCreate', None))
--except:
--    pass
-+_uuid_generate_time = _UuidCreate = None
-+
- 
- def _unixdll_getnode():
-     """Get the hardware address on Unix using ctypes."""
--- 
-2.14.1
-
diff --git a/pkgs/development/interpreters/python/cpython/3.4/use-correct-tcl-tk-on-darwin.patch b/pkgs/development/interpreters/python/cpython/3.4/use-correct-tcl-tk-on-darwin.patch
deleted file mode 100644
index b73f62b97ec5..000000000000
--- a/pkgs/development/interpreters/python/cpython/3.4/use-correct-tcl-tk-on-darwin.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff --git a/setup.py b/setup.py
-index 2779658..902d0eb 100644
---- a/setup.py
-+++ b/setup.py
-@@ -1699,9 +1699,6 @@ class PyBuildExt(build_ext):
-         # Rather than complicate the code below, detecting and building
-         # AquaTk is a separate method. Only one Tkinter will be built on
-         # Darwin - either AquaTk, if it is found, or X11 based Tk.
--        if (host_platform == 'darwin' and
--            self.detect_tkinter_darwin(inc_dirs, lib_dirs)):
--            return
-
-         # Assume we haven't found any of the libraries or include files
-         # The versions with dots are used on Unix, and the versions without
-@@ -1747,22 +1744,6 @@ class PyBuildExt(build_ext):
-             if dir not in include_dirs:
-                 include_dirs.append(dir)
-
--        # Check for various platform-specific directories
--        if host_platform == 'sunos5':
--            include_dirs.append('/usr/openwin/include')
--            added_lib_dirs.append('/usr/openwin/lib')
--        elif os.path.exists('/usr/X11R6/include'):
--            include_dirs.append('/usr/X11R6/include')
--            added_lib_dirs.append('/usr/X11R6/lib64')
--            added_lib_dirs.append('/usr/X11R6/lib')
--        elif os.path.exists('/usr/X11R5/include'):
--            include_dirs.append('/usr/X11R5/include')
--            added_lib_dirs.append('/usr/X11R5/lib')
--        else:
--            # Assume default location for X11
--            include_dirs.append('/usr/X11/include')
--            added_lib_dirs.append('/usr/X11/lib')
--
-         # If Cygwin, then verify that X is installed before proceeding
-         if host_platform == 'cygwin':
-             x11_inc = find_file('X11/Xlib.h', [], include_dirs)
-@@ -1786,10 +1767,6 @@ class PyBuildExt(build_ext):
-         if host_platform in ['aix3', 'aix4']:
-             libs.append('ld')
-
--        # Finally, link with the X11 libraries (not appropriate on cygwin)
--        if host_platform != "cygwin":
--            libs.append('X11')
--
-         ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
-                         define_macros=[('WITH_APPINIT', 1)] + defs,
-                         include_dirs = include_dirs,
diff --git a/pkgs/development/libraries/http-parser/default.nix b/pkgs/development/libraries/http-parser/default.nix
index 5d4eae4e0639..02d767000682 100644
--- a/pkgs/development/libraries/http-parser/default.nix
+++ b/pkgs/development/libraries/http-parser/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, python2Packages, utillinux, fixDarwinDylibNames }:
+{ stdenv, fetchurl }:
 
 let
   version = "2.8.1";
@@ -10,38 +10,18 @@ in stdenv.mkDerivation {
     sha256 = "15ids8k2f0xhnnxh4m85w2f78pg5ndiwrpl24kyssznnp1l5yqai";
   };
 
+  NIX_CFLAGS_COMPILE = "-Wno-error";
   patches = [ ./build-shared.patch ];
+  makeFlags = [ "DESTDIR=" "PREFIX=$(out)" ];
+  buildFlags = "library";
+  doCheck = true;
+  checkTarget = "test";
 
-  configurePhase = "gyp -f make --depth=`pwd` http_parser.gyp";
-
-  buildFlags = [ "BUILDTYPE=Release" ];
-
-  buildInputs =
-    [ python2Packages.gyp ]
-    ++ stdenv.lib.optional stdenv.isLinux utillinux
-    ++ stdenv.lib.optionals stdenv.isDarwin [ python2Packages.python fixDarwinDylibNames ];
-
-  doCheck = !stdenv.isDarwin;
-
-  checkPhase = ''
-    out/Release/test-nonstrict
-    out/Release/test-strict
-  '';
-
-  installPhase = ''
-    mkdir -p $out/lib
-    mv out/Release/${if stdenv.isDarwin then "*.dylib" else "lib.target/*"} $out/lib
-
-    mkdir -p $out/include
-    mv http_parser.h $out/include
-  '';
-
-  meta = {
+  meta = with stdenv.lib; {
     description = "An HTTP message parser written in C";
-
     homepage = https://github.com/joyent/http-parser;
-
-    license = stdenv.lib.licenses.mit;
-    platforms = stdenv.lib.platforms.unix;
+    maintainers = with maintainers; [ matthewbauer ];
+    license = licenses.mit;
+    platforms = platforms.unix;
   };
 }
diff --git a/pkgs/development/libraries/java/lombok/default.nix b/pkgs/development/libraries/java/lombok/default.nix
index 5ec4634d6323..7f932d52dc41 100644
--- a/pkgs/development/libraries/java/lombok/default.nix
+++ b/pkgs/development/libraries/java/lombok/default.nix
@@ -1,11 +1,11 @@
 { stdenv, fetchurl }:
 
 stdenv.mkDerivation rec {
-  name = "lombok-1.16.22";
+  name = "lombok-1.18.4";
 
   src = fetchurl {
     url = "https://projectlombok.org/downloads/${name}.jar";
-    sha256 = "1hr2jjlqdnxrw7ablqkf7ljc6n2q6a04ww14di06zs6i3l82zzpa";
+    sha256 = "0hlpycnmzd71ihn59hzf445dvwky2lkv57jimx91i6v7xcnr5wrr";
   };
 
   buildCommand = ''
diff --git a/pkgs/development/python-modules/httmock/default.nix b/pkgs/development/python-modules/httmock/default.nix
new file mode 100644
index 000000000000..b50753c55864
--- /dev/null
+++ b/pkgs/development/python-modules/httmock/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchFromGitHub, requests }:
+
+buildPythonPackage rec {
+  pname   = "httmock";
+  version = "1.2.6";
+
+  src = fetchFromGitHub {
+    owner = "patrys";
+    repo = "httmock";
+    rev = version;
+    sha256 = "0iya8qsb2jm03s9p6sf1yzgm1irxl3dcq0k0a9ygl0skzjz5pvab";
+  };
+
+  checkInputs = [ requests ];
+
+  meta = with stdenv.lib; {
+    description = "A mocking library for requests";
+    homepage    = https://github.com/patrys/httmock;
+    license     = licenses.asl20;
+    maintainers = with maintainers; [ nyanloutre ];
+  };
+}
diff --git a/pkgs/development/python-modules/imageio/default.nix b/pkgs/development/python-modules/imageio/default.nix
index cdbcfee7180f..de8380280670 100644
--- a/pkgs/development/python-modules/imageio/default.nix
+++ b/pkgs/development/python-modules/imageio/default.nix
@@ -1,28 +1,42 @@
 { stdenv
 , buildPythonPackage
-, fetchurl
+, fetchPypi
+, pillow
+, psutil
 , pytest
 , numpy
+, isPy3k
+, futures
+, enum34
 }:
 
 buildPythonPackage rec {
   pname = "imageio";
-  version = "1.6";
+  version = "2.4.1";
 
-  src = fetchurl {
-    url = "https://github.com/imageio/imageio/archive/v${version}.tar.gz";
-    sha256 = "195snkk3fsbjqd5g1cfsd9alzs5q45gdbi2ka9ph4yxqb31ijrbv";
+  src = fetchPypi {
+    sha256 = "0jjiwf6wjipmykh33prjh448qv8mpgngfi77ndc7mym5r1xhgf0n";
+    inherit pname version;
   };
 
-  buildInputs = [ pytest ];
-  propagatedBuildInputs = [ numpy ];
+  checkInputs = [ pytest psutil ];
+  propagatedBuildInputs = [ numpy pillow ] ++ stdenv.lib.optionals (!isPy3k) [
+    futures
+    enum34
+  ];
 
   checkPhase = ''
+    export IMAGEIO_USERDIR="$TMP"
+    export IMAGEIO_NO_INTERNET="true"
+    export HOME="$(mktemp -d)"
     py.test
   '';
 
-  # Tries to write in /var/tmp/.imageio
-  doCheck = false;
+  # For some reason, importing imageio also imports xml on Nix, see
+  # https://github.com/imageio/imageio/issues/395
+  postPatch = ''
+    substituteInPlace tests/test_meta.py --replace '"urllib",' "\"urllib\",\"xml\""
+  '';
 
   meta = with stdenv.lib; {
     description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats";
diff --git a/pkgs/development/python-modules/moviepy/default.nix b/pkgs/development/python-modules/moviepy/default.nix
index 63613b516868..637c014cb1ab 100644
--- a/pkgs/development/python-modules/moviepy/default.nix
+++ b/pkgs/development/python-modules/moviepy/default.nix
@@ -4,6 +4,7 @@
 , numpy
 , decorator
 , imageio
+, isPy3k
 , tqdm
 }:
 
diff --git a/pkgs/development/python-modules/python-gitlab/default.nix b/pkgs/development/python-modules/python-gitlab/default.nix
new file mode 100644
index 000000000000..24ab69f1a0bc
--- /dev/null
+++ b/pkgs/development/python-modules/python-gitlab/default.nix
@@ -0,0 +1,22 @@
+{ stdenv, buildPythonPackage, fetchPypi, requests, six, mock, httmock }:
+
+buildPythonPackage rec {
+  pname   = "python-gitlab";
+  version = "1.6.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "20ceb9232f9a412ce6554056a6b5039013d0755261d57b5c8ada7035773de795";
+  };
+
+  propagatedBuildInputs = [ requests six ];
+
+  checkInputs = [ mock httmock ];
+
+  meta = with stdenv.lib; {
+    description = "Interact with GitLab API";
+    homepage    = https://github.com/python-gitlab/python-gitlab;
+    license     = licenses.lgpl3;
+    maintainers = with maintainers; [ nyanloutre ];
+  };
+}
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/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/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/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/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/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/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/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/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";
+    };
+  }
+]