about summary refs log tree commit diff
path: root/pkgs/development/tools
diff options
context:
space:
mode:
authorvolth <volth@webmaster.ms>2018-10-13 13:22:11 +0000
committerGitHub <noreply@github.com>2018-10-13 13:22:11 +0000
commita974ecf803ff858e65f4e6172bdf8d35ec5019f2 (patch)
treeb2353dc656b6157820928d029a9da07e078e7987 /pkgs/development/tools
parentccd4024c56df7a084d112779daafa5ddc1a09e24 (diff)
parent548ced628d233e6ec5431ae3d8d1668d65177639 (diff)
downloadnixlib-a974ecf803ff858e65f4e6172bdf8d35ec5019f2.tar
nixlib-a974ecf803ff858e65f4e6172bdf8d35ec5019f2.tar.gz
nixlib-a974ecf803ff858e65f4e6172bdf8d35ec5019f2.tar.bz2
nixlib-a974ecf803ff858e65f4e6172bdf8d35ec5019f2.tar.lz
nixlib-a974ecf803ff858e65f4e6172bdf8d35ec5019f2.tar.xz
nixlib-a974ecf803ff858e65f4e6172bdf8d35ec5019f2.tar.zst
nixlib-a974ecf803ff858e65f4e6172bdf8d35ec5019f2.zip
Merge branch 'staging' into remove-top-perlXMLParser
Diffstat (limited to 'pkgs/development/tools')
-rw-r--r--pkgs/development/tools/analysis/cpplint/default.nix29
-rw-r--r--pkgs/development/tools/analysis/pmd/default.nix13
-rw-r--r--pkgs/development/tools/analysis/retdec/default.nix245
-rw-r--r--pkgs/development/tools/analysis/retdec/yaracpp.nix49
-rw-r--r--pkgs/development/tools/build-managers/buildbot/default.nix95
-rw-r--r--pkgs/development/tools/build-managers/buildbot/pkg.nix27
-rw-r--r--pkgs/development/tools/build-managers/buildbot/plugins.nix105
-rw-r--r--pkgs/development/tools/build-managers/buildbot/skip_test_linux_distro.patch11
-rw-r--r--pkgs/development/tools/build-managers/buildbot/worker.nix26
-rw-r--r--pkgs/development/tools/ejson/Gemfile4
-rw-r--r--pkgs/development/tools/ejson/Gemfile.lock54
-rw-r--r--pkgs/development/tools/ejson/default.nix46
-rw-r--r--pkgs/development/tools/ejson/deps.nix48
-rw-r--r--pkgs/development/tools/ejson/gemset.nix188
-rw-r--r--pkgs/development/tools/goa/default.nix6
-rw-r--r--pkgs/development/tools/goa/deps.nix67
-rw-r--r--pkgs/development/tools/lazygit/default.nix27
-rw-r--r--pkgs/development/tools/ocaml/camlp5/5.15.nix46
-rw-r--r--pkgs/development/tools/ocaml/merlin/default.nix14
-rw-r--r--pkgs/development/tools/profiling/systemtap/default.nix14
-rw-r--r--pkgs/development/tools/rust/bindgen/default.nix6
21 files changed, 654 insertions, 466 deletions
diff --git a/pkgs/development/tools/analysis/cpplint/default.nix b/pkgs/development/tools/analysis/cpplint/default.nix
new file mode 100644
index 000000000000..10ed99e3ffe6
--- /dev/null
+++ b/pkgs/development/tools/analysis/cpplint/default.nix
@@ -0,0 +1,29 @@
+{ lib, pythonPackages, fetchFromGitHub }:
+
+pythonPackages.buildPythonApplication rec {
+  pname = "cpplint";
+  version = "1.3.0";
+
+  # Fetch from github instead of pypi, since the test cases are not in the pypi archive
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    sha256 = "107v7bp35kxbv9v7wl79h7115z1m4b48rhasp0cnivql1grd277i";
+  };
+
+  postPatch = ''
+    patchShebangs cpplint_unittest.py
+  '';
+
+  checkPhase = ''
+    ./cpplint_unittest.py
+  '';
+
+  meta = with lib; {
+    homepage = https://github.com/cpplint/cpplint;
+    description = "Static code checker for C++";
+    maintainers = [ maintainers.bhipple ];
+    license = [ licenses.bsd3 ];
+  };
+}
diff --git a/pkgs/development/tools/analysis/pmd/default.nix b/pkgs/development/tools/analysis/pmd/default.nix
index 187b2d7b03f9..89b0a33c0682 100644
--- a/pkgs/development/tools/analysis/pmd/default.nix
+++ b/pkgs/development/tools/analysis/pmd/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
   name = "pmd-${version}";
-  version = "6.7.0";
+  version = "6.8.0";
 
   buildInputs = [ unzip ];
 
   src = fetchurl {
     url = "mirror://sourceforge/pmd/pmd-bin-${version}.zip";
-    sha256 = "0bnbr8zq28dgvwka563g5lbya5jhmjrahnbwagcs4afpsrm7zj6c";
+    sha256 = "1vfkg2l3sl5ahhs89nvkg0z1ah1k67c44nwpvaymq73rb2bb8ibr";
   };
 
   installPhase = ''
@@ -16,10 +16,11 @@ stdenv.mkDerivation rec {
     cp -R * $out
   '';
 
-  meta = {
-    description = "Scans Java source code and looks for potential problems";
-    homepage = http://pmd.sourceforge.net/;
-    platforms = stdenv.lib.platforms.unix;
+  meta = with stdenv.lib; {
+    description = "An extensible cross-language static code analyzer.";
+    homepage = https://pmd.github.io/;
+    platforms = platforms.unix;
+    license = with licenses; [ bsdOriginal asl20 ];
   };
 }
 
diff --git a/pkgs/development/tools/analysis/retdec/default.nix b/pkgs/development/tools/analysis/retdec/default.nix
index a4c62e6fc32c..428ca259f496 100644
--- a/pkgs/development/tools/analysis/retdec/default.nix
+++ b/pkgs/development/tools/analysis/retdec/default.nix
@@ -1,121 +1,218 @@
-{ stdenv, fetchFromGitHub, fetchurl, fetchzip,
-# Native build inputs
-cmake,
-autoconf, automake, libtool,
-pkgconfig,
-bison, flex,
-groff,
-perl,
-python,
-# Runtime tools
-time,
-upx,
-# Build inputs
-ncurses,
-libffi,
-libxml2,
-zlib,
-# PE (Windows) data, huge space savings if not needed
-withPEPatterns ? false,
+{ stdenv
+, fetchFromGitHub
+, fetchzip
+, lib
+, callPackage
+, openssl
+, cmake
+, autoconf
+, automake
+, libtool
+, pkgconfig
+, bison
+, flex
+, groff
+, perl
+, python3
+, time
+, upx
+, ncurses
+, libffi
+, libxml2
+, zlib
+, withPEPatterns ? false
 }:
 
 let
-  release = "3.0";
-
+  capstone = fetchFromGitHub {
+    owner = "avast-tl";
+    repo = "capstone";
+    rev = "27c713fe4f6eaf9721785932d850b6291a6073fe";
+    sha256 = "105z1g9q7s6n15qpln9vzhlij7vj6cyc5dqdr05n7wzjvlagwgxc";
+  };
+  elfio = fetchFromGitHub {
+    owner = "avast-tl";
+    repo = "elfio";
+    rev = "998374baace397ea98f3b1d768e81c978b4fba41";
+    sha256 = "09n34rdp0wpm8zy30zx40wkkc4gbv2k3cv181y6c1260rllwk5d1";
+  };
+  keystone = fetchFromGitHub { # only for tests
+    owner = "keystone-engine";
+    repo = "keystone";
+    rev = "d7ba8e378e5284e6384fc9ecd660ed5f6532e922";
+    sha256 = "1yzw3v8xvxh1rysh97y0i8y9svzbglx2zbsqjhrfx18vngh0x58f";
+  };
+  libdwarf = fetchFromGitHub {
+    owner = "avast-tl";
+    repo = "libdwarf";
+    rev = "85465d5e235cc2d2f90d04016d6aca1a452d0e73";
+    sha256 = "11y62r65py8yp57i57a4cymxispimn62by9z4j2g19hngrpsgbki";
+  };
+  llvm = fetchFromGitHub {
+    owner = "avast-tl";
+    repo = "llvm";
+    rev = "725d0cee133c6ab9b95c493f05de3b08016f5c3c";
+    sha256 = "0dzvafmn4qs62w1y9vh0a11clpj6q3hb41aym4izpcyybjndf9bq";
+  };
+  pelib = fetchFromGitHub {
+    owner = "avast-tl";
+    repo = "pelib";
+    rev = "a7004b2e80e4f6dc984f78b821e7b585a586050d";
+    sha256 = "0nyrb3g749lxgcymz1j584xbb1x6rvy1mc700lyn0brznvqsm81n";
+  };
   rapidjson = fetchFromGitHub {
     owner = "Tencent";
     repo = "rapidjson";
     rev = "v1.1.0";
     sha256 = "1jixgb8w97l9gdh3inihz7avz7i770gy2j2irvvlyrq3wi41f5ab";
   };
+  yaracpp = callPackage ./yaracpp.nix {}; # is its own package because it needs a patch
+  yaramod = fetchFromGitHub {
+    owner = "avast-tl";
+    repo = "yaramod";
+    rev = "v2.1.2";
+    sha256 = "1rpyqzkrqvk721hf75wb7aasw5mzp9wz4j89p0x1l9p5x1b3maz3";
+  };
   jsoncpp = fetchFromGitHub {
     owner = "open-source-parsers";
     repo = "jsoncpp";
-    rev = "1.8.3";
-    sha256 = "05gkmg6r94q8a0qdymarcjlnlvmy9s365m9jhz3ysvi71cr31lkz";
+    rev = "1.8.4";
+    sha256 = "1z0gj7a6jypkijmpknis04qybs1hkd04d1arr3gy89lnxmp6qzlm";
   };
-  googletest = fetchFromGitHub {
+  googletest = fetchFromGitHub { # only for tests
     owner = "google";
     repo = "googletest";
-    rev = "release-1.8.0";
-    sha256 = "0bjlljmbf8glnd9qjabx73w6pd7ibv43yiyngqvmvgxsabzr8399";
+    rev = "83fa0cb17dad47a1d905526dcdddb5b96ed189d2";
+    sha256 = "1c2r0p9v7vz2vasy8bknfb448l6wsvzw35s8hmc5z013z5502mpk";
   };
   tinyxml2 = fetchFromGitHub {
     owner = "leethomason";
     repo = "tinyxml2";
-    rev = "5.0.1";
+    rev = "cc1745b552dd12bb1297a99f82044f83b06729e0";
     sha256 = "015g8520a0c55gwmv7pfdsgfz2rpdmh3d1nq5n9bd65n35492s3q";
   };
-  yara = fetchurl {
-     url = "https://github.com/avast-tl/yara/archive/v1.0-retdec.zip";
-     sha256 = "1bjrkgp1sgld2y7gvwrlrz5fs16521ink6xyq72v7yxj3vfa9gps";
-  };
-  openssl = fetchurl {
-    url = "https://www.openssl.org/source/openssl-1.1.0f.tar.gz";
-    sha256 = "0r97n4n552ns571diz54qsgarihrxvbn7kvyv8wjyfs9ybrldxqj";
-  };
 
-  retdec-support = fetchzip {
-    url = "https://github.com/avast-tl/retdec-support/releases/download/2017-12-12/retdec-support_2017-12-12.tar.xz";
-    sha256 = if withPEPatterns then "0pchl7hb42dm0sdbmpr8d3c6xc0lm6cs4p6g6kdb2cr9c99gjzn3"
-                               else "1hcyq6bf4wk739kb53ic2bs71gsbx6zd07pc07lzfnxf8k497mhv";
+  retdec-support = let
+    version = "2018-02-08"; # make sure to adjust both hashes (once with withPEPatterns=true and once withPEPatterns=false)
+  in fetchzip {
+    url = "https://github.com/avast-tl/retdec-support/releases/download/${version}/retdec-support_${version}.tar.xz";
+    sha256 = if withPEPatterns then "148i8flbyj1y4kfdyzsz7jsj38k4h97npjxj18h6v4wksd4m4jm7"
+                               else "0ixv9qyqq40pzyqy6v9jf5rxrvivjb0z0zn260nbmb9gk765bacy";
+    stripRoot = false;
     # Removing PE signatures reduces this from 3.8GB -> 642MB (uncompressed)
-    extraPostFetch = stdenv.lib.optionalString (!withPEPatterns) ''
-      rm -rf $out/generic/yara_patterns/static-code/pe
+    extraPostFetch = lib.optionalString (!withPEPatterns) ''
+      rm -r "$out/generic/yara_patterns/static-code/pe"
     '';
+  } // {
+    inherit version; # necessary to check the version against the expected version
   };
+
+  # patch CMakeLists.txt for a dependency and compare the versions to the ones expected by upstream
+  # this has to be applied for every dependency (which it is in postPatch)
+  patchDep = dep: ''
+    # check if our version of dep is the same version that upstream expects
+    echo "Checking version of ${dep.dep_name}"
+    expected_rev="$( sed -n -e 's|.*URL https://github.com/.*/archive/\(.*\)\.zip.*|\1|p' "deps/${dep.dep_name}/CMakeLists.txt" )"
+    if [ "$expected_rev" != '${dep.rev}' ]; then
+      echo "The ${dep.dep_name} dependency has the wrong version: ${dep.rev} while $expected_rev is expected."
+      exit 1
+    fi
+
+    # patch the CMakeLists.txt file to use our local copy of the dependency instead of fetching it at build time
+    sed -i -e 's|URL .*|URL ${dep}|' "deps/${dep.dep_name}/CMakeLists.txt"
+  '';
+
 in stdenv.mkDerivation rec {
   name = "retdec-${version}";
-  version = "${release}.0";
+
+  # If you update this you will also need to adjust the versions of the updated dependencies. You can do this by first just updating retdec
+  # itself and trying to build it. The build should fail and tell you which dependencies you have to upgrade to which versions.
+  # I've notified upstream about this problem here:
+  # https://github.com/avast-tl/retdec/issues/412
+  version = "3.2";
 
   src = fetchFromGitHub {
     owner = "avast-tl";
     repo = "retdec";
-    name = "retdec-${release}";
-    rev = "refs/tags/v${release}";
-    sha256 = "0cpc5lxg8qphdzl3gg9dx992ar35r8ik8wyysr91l2qvfhx93wks";
-    fetchSubmodules = true;
+    name = "retdec-${version}";
+    rev = "refs/tags/v${version}";
+    sha256 = "0chky656lsddn20bnm3pmz6ix20y4a0y8swwr42hrhi01vkhmzrp";
   };
 
-  nativeBuildInputs = [ cmake autoconf automake libtool pkgconfig bison flex groff perl python ];
+  nativeBuildInputs = [
+    cmake
+    autoconf
+    automake
+    libtool
+    pkgconfig
+    bison
+    flex
+    groff
+    perl
+    python3
+  ];
 
-  buildInputs = [ ncurses libffi libxml2 zlib ];
+  buildInputs = [
+    openssl
+    ncurses
+    libffi
+    libxml2
+    zlib
+  ];
 
-  prePatch = ''
-    find . -wholename "*/deps/rapidjson/CMakeLists.txt" -print0 | \
-      xargs -0 sed -i -e 's|GIT_REPOSITORY.*|URL ${rapidjson}|'
-    find . -wholename "*/deps/jsoncpp/CMakeLists.txt" -print0 | \
-      xargs -0 sed -i -e 's|GIT_REPOSITORY.*|URL ${jsoncpp}|'
-    find . -wholename "*/deps/googletest/CMakeLists.txt" -print0 | \
-      xargs -0 sed -i -e 's|GIT_REPOSITORY.*|URL ${googletest}|'
-    find . -wholename "*/deps/tinyxml2/CMakeLists.txt" -print0 | \
-      xargs -0 sed -i -e 's|GIT_REPOSITORY.*|URL ${tinyxml2}|'
+  cmakeFlags = [
+    "-DRETDEC_TESTS=ON" # build tests
+  ];
 
-    find . -wholename "*/yaracpp/deps/CMakeLists.txt" -print0 | \
-      xargs -0 sed -i -e 's|URL .*|URL ${yara}|'
+  # all dependencies that are normally fetched during build time (the subdirectories of `deps`)
+  # all of these need to be fetched through nix and the CMakeLists files need to be patched not to fetch them themselves
+  external_deps = [
+    (capstone // { dep_name = "capstone"; })
+    (elfio // { dep_name = "elfio"; })
+    (googletest // { dep_name = "googletest"; })
+    (jsoncpp // { dep_name = "jsoncpp"; })
+    (keystone // { dep_name = "keystone"; })
+    (libdwarf // { dep_name = "libdwarf"; })
+    (llvm // { dep_name = "llvm"; })
+    (pelib // { dep_name = "pelib"; })
+    (rapidjson // { dep_name = "rapidjson"; })
+    (tinyxml2 // { dep_name = "tinyxml2"; })
+    (yaracpp // { dep_name = "yaracpp"; })
+    (yaramod // { dep_name = "yaramod"; })
+  ];
 
-    find . -wholename "*/deps/openssl/CMakeLists.txt" -print0 | \
-      xargs -0 sed -i -e 's|OPENSSL_URL .*)|OPENSSL_URL ${openssl})|'
+  postPatch = (lib.concatMapStrings patchDep external_deps) + ''
+    # install retdec-support
+    echo "Checking version of retdec-support"
+    expected_version="$( sed -n -e "s|^version = '\(.*\)'$|\1|p" 'cmake/install-share.py' )"
+    if [ "$expected_version" != '${retdec-support.version}' ]; then
+      echo "The retdec-support dependency has the wrong version: ${retdec-support.version} while $expected_version is expected."
+      exit 1
+    fi
+    mkdir -p "$out/share/retdec"
+    cp -r ${retdec-support} "$out/share/retdec/support" # write permission needed during install
+    chmod -R u+w "$out/share/retdec/support"
+    # python file originally responsible for fetching the retdec-support archive to $out/share/retdec
+    # that is not necessary anymore, so empty the file
+    echo > cmake/install-share.py
 
-    cat > cmake/install-share.sh <<EOF
-      #!/bin/sh
-      mkdir -p $out/share/retdec/
-      ln -s ${retdec-support} $out/share/retdec/support
-    EOF
-    chmod +x cmake/*.sh
-    patchShebangs cmake/*.sh
-
-    substituteInPlace scripts/unpack.sh --replace '	upx -d' '	${upx}/bin/upx -d'
-    substituteInPlace scripts/config.sh --replace /usr/bin/time ${time}/bin/time
+    # call correct `time` and `upx` programs
+    substituteInPlace scripts/retdec-config.py --replace /usr/bin/time ${time}/bin/time
+    substituteInPlace scripts/retdec-unpacker.py --replace "'upx'" "'${upx}/bin/upx'"
   '';
 
   enableParallelBuilding = true;
 
-  meta = with stdenv.lib; {
+  doInstallCheck = true;
+  installCheckPhase = ''
+    ${python3.interpreter} "$out/bin/retdec-tests-runner.py"
+  '';
+
+  meta = with lib; {
     description = "A retargetable machine-code decompiler based on LLVM";
     homepage = https://retdec.com;
     license = licenses.mit;
-    maintainers = with maintainers; [ dtzWill ];
-    broken = withPEPatterns; # retdec-full is broken, 2018-04-11
+    maintainers = with maintainers; [ dtzWill timokau ];
+    platforms = ["x86_64-linux" "i686-linux"];
   };
 }
diff --git a/pkgs/development/tools/analysis/retdec/yaracpp.nix b/pkgs/development/tools/analysis/retdec/yaracpp.nix
new file mode 100644
index 000000000000..cc857b86145f
--- /dev/null
+++ b/pkgs/development/tools/analysis/retdec/yaracpp.nix
@@ -0,0 +1,49 @@
+{ stdenv
+, fetchFromGitHub
+, coreutils
+}:
+
+let
+  yara = fetchFromGitHub {
+    owner = "avast-tl";
+    repo = "yara";
+    rev = "ea101c5856941f39cad2db3012f2660d1d5c8b65";
+    sha256 = "033ssx2hql5k4pv9si043s3mjq2b748ymjzif8pg6rdwh260faky";
+  };
+in stdenv.mkDerivation rec {
+  # only fetches the yaracpp source patched to work with a local yara clone,
+  # does not build anything
+  name = "yaracpp-src-${version}";
+  version = "2018-10-09";
+  rev = "b92bde0e59e3b75bc445227e04b71105771dee8b"; # as specified in retdec/deps/yaracpp/CMakeLists.txt
+
+  src = fetchFromGitHub {
+    inherit rev;
+    owner = "avast-tl";
+    repo = "yaracpp";
+    sha256 = "0fan7q79j7s3bjmhsd2nw6sqyi14xgikn7mr2p4nj87lick5l4a2";
+  };
+
+  postPatch = ''
+      # check if our version of yara is the same version that upstream expects
+      echo "Checking version of yara"
+      expected_rev="$( sed -n -e 's|.*URL https://github.com/.*/archive/\(.*\)\.zip.*|\1|p' "deps/CMakeLists.txt" )"
+      if [ "$expected_rev" != '${yara.rev}' ]; then
+        echo "The yara dependency has the wrong version: ${yara.rev} while $expected_rev is expected."
+        exit 1
+      fi
+
+      # patch the CMakeLists.txt file to use our local copy of the dependency instead of fetching it at build time
+      sed -i -e "s|URL .*|URL ${yara}|" "deps/CMakeLists.txt"
+
+      # abuse the CONFIGURE_COMMAND to make the source writeable after copying it to the build locatoin (necessary for the build)
+      sed -i -e 's|CONFIGURE_COMMAND ""|CONFIGURE_COMMAND COMMAND ${coreutils}/bin/chmod -R u+w .|' "deps/CMakeLists.txt"
+    '';
+
+  buildPhase = "# do nothing";
+  configurePhase = "# do nothing";
+  installPhase = ''
+    mkdir -p "$out"
+    cp -r * "$out"
+  '';
+}
diff --git a/pkgs/development/tools/build-managers/buildbot/default.nix b/pkgs/development/tools/build-managers/buildbot/default.nix
deleted file mode 100644
index adb279cdea68..000000000000
--- a/pkgs/development/tools/build-managers/buildbot/default.nix
+++ /dev/null
@@ -1,95 +0,0 @@
-{ stdenv, openssh, buildbot-worker, buildbot-pkg, pythonPackages, runCommand, makeWrapper }:
-
-let
-  withPlugins = plugins: runCommand "wrapped-${package.name}" {
-    buildInputs = [ makeWrapper ] ++ plugins;
-    propagatedBuildInputs = package.propagatedBuildInputs;
-    passthru.withPlugins = moarPlugins: withPlugins (moarPlugins ++ plugins);
-  } ''
-    makeWrapper ${package}/bin/buildbot $out/bin/buildbot \
-      --prefix PYTHONPATH : "${package}/lib/python2.7/site-packages:$PYTHONPATH"
-    ln -sfv ${package}/lib $out/lib
-  '';
-
-  package = pythonPackages.buildPythonApplication rec {
-    name = "${pname}-${version}";
-    pname = "buildbot";
-    version = "1.2.0";
-
-    src = pythonPackages.fetchPypi {
-      inherit pname version;
-      sha256 = "02gwmls8kgm6scy36hdy0bg645zs1pxlrgwkcn79wrl7cfmabcbv";
-    };
-
-    buildInputs = with pythonPackages; [
-      lz4
-      txrequests
-      pyjade
-      boto3
-      moto
-      txgithub
-      mock
-      setuptoolsTrial
-      isort
-      pylint
-      astroid
-      pyflakes
-      openssh
-      buildbot-worker
-      buildbot-pkg
-      treq
-    ];
-
-    propagatedBuildInputs = with pythonPackages; [
-      # core
-      twisted
-      jinja2
-      zope_interface
-      sqlalchemy
-      sqlalchemy_migrate
-      future
-      dateutil
-      txaio
-      autobahn
-      pyjwt
-      distro
-
-      # tls
-      pyopenssl
-      service-identity
-      idna
-
-      # docs
-      sphinx
-      sphinxcontrib-blockdiag
-      sphinxcontrib-spelling
-      pyenchant
-      docutils
-      ramlfications
-      sphinx-jinja
-
-    ];
-
-    patches = [
-      # This patch disables the test that tries to read /etc/os-release which
-      # is not accessible in sandboxed builds.
-      ./skip_test_linux_distro.patch
-    ];
-
-    # TimeoutErrors on slow machines -> aarch64
-    doCheck = !stdenv.isAarch64;
-
-    postPatch = ''
-      substituteInPlace buildbot/scripts/logwatcher.py --replace '/usr/bin/tail' "$(type -P tail)"
-    '';
-
-    passthru = { inherit withPlugins; };
-
-    meta = with stdenv.lib; {
-      homepage = http://buildbot.net/;
-      description = "Buildbot is an open-source continuous integration framework for automating software build, test, and release processes";
-      maintainers = with maintainers; [ nand0p ryansydnor ];
-      license = licenses.gpl2;
-    };
-  };
-in package
diff --git a/pkgs/development/tools/build-managers/buildbot/pkg.nix b/pkgs/development/tools/build-managers/buildbot/pkg.nix
deleted file mode 100644
index 11f5be4e98e9..000000000000
--- a/pkgs/development/tools/build-managers/buildbot/pkg.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ stdenv, buildPythonPackage, fetchPypi, setuptools }:
-
-buildPythonPackage rec {
-  name = "${pname}-${version}";
-  pname = "buildbot-pkg";
-  version = "1.2.0";
-
-  src = fetchPypi {
-    inherit pname version;
-    sha256 = "70f429311c5812ffd334f023f4f50b904be5c672c8674ee6d28a11a7c096f18a";
-  };
-
-  propagatedBuildInputs = [ setuptools ];
-
-  postPatch = ''
-    # Their listdir function filters out `node_modules` folders.
-    # Do we have to care about that with Nix...?
-    substituteInPlace buildbot_pkg.py --replace "os.listdir = listdir" ""
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = http://buildbot.net/;
-    description = "Buildbot Packaging Helper";
-    maintainers = with maintainers; [ nand0p ryansydnor ];
-    license = licenses.gpl2;
-  };
-}
diff --git a/pkgs/development/tools/build-managers/buildbot/plugins.nix b/pkgs/development/tools/build-managers/buildbot/plugins.nix
deleted file mode 100644
index 430cdee3ca8c..000000000000
--- a/pkgs/development/tools/build-managers/buildbot/plugins.nix
+++ /dev/null
@@ -1,105 +0,0 @@
-{ stdenv, pythonPackages, buildbot-pkg }:
-
-{
-  www = pythonPackages.buildPythonPackage rec {
-    name = "${pname}-${version}";
-    pname = "buildbot_www";
-    version = buildbot-pkg.version;
-
-    # NOTE: wheel is used due to buildbot circular dependency
-    format = "wheel";
-
-    src = pythonPackages.fetchPypi {
-      inherit pname version format;
-      sha256 = "001kxjcyn5sxiq7m1izy4djj7alw6qpgaid4f518s9xgm4a8hwcb";
-    };
-
-    meta = with stdenv.lib; {
-      homepage = http://buildbot.net/;
-      description = "Buildbot UI";
-      maintainers = with maintainers; [ nand0p ryansydnor ];
-      license = licenses.gpl2;
-    };
-  };
-
-  console-view = pythonPackages.buildPythonPackage rec {
-    name = "${pname}-${version}";
-    pname = "buildbot-console-view";
-    version = buildbot-pkg.version;
-
-    src = pythonPackages.fetchPypi {
-      inherit pname version;
-      sha256 = "11p9l9r9rh8cq0ihzjcdxfbi55n7inbsz45zqq67rkvqn5nhj5b6";
-    };
-
-    propagatedBuildInputs = with pythonPackages; [ buildbot-pkg ];
-
-    meta = with stdenv.lib; {
-      homepage = http://buildbot.net/;
-      description = "Buildbot Console View Plugin";
-      maintainers = with maintainers; [ nand0p ryansydnor ];
-      license = licenses.gpl2;
-    };
-  };
-
-  waterfall-view = pythonPackages.buildPythonPackage rec {
-    name = "${pname}-${version}";
-    pname = "buildbot-waterfall-view";
-    version = buildbot-pkg.version;
-
-    src = pythonPackages.fetchPypi {
-      inherit pname version;
-      sha256 = "1yx63frfpbvwy4hfib1psyq5ad0wysyzfrla8d7lgbdaip021wzw";
-    };
-
-    propagatedBuildInputs = with pythonPackages; [ buildbot-pkg ];
-
-    meta = with stdenv.lib; {
-      homepage = http://buildbot.net/;
-      description = "Buildbot Waterfall View Plugin";
-      maintainers = with maintainers; [ nand0p ryansydnor ];
-      license = licenses.gpl2;
-    };
-  };
-
-  grid-view = pythonPackages.buildPythonPackage rec {
-    name = "${pname}-${version}";
-    pname = "buildbot-grid-view";
-    version = buildbot-pkg.version;
-
-    src = pythonPackages.fetchPypi {
-      inherit pname version;
-      sha256 = "06my75hli3w1skdkx1qz6zqw2wckanhrcvlqm4inylj9v9pcrgv6";
-    };
-
-    propagatedBuildInputs = with pythonPackages; [ buildbot-pkg ];
-
-    meta = with stdenv.lib; {
-      homepage = http://buildbot.net/;
-      description = "Buildbot Grid View Plugin";
-      maintainers = with maintainers; [ nand0p ];
-      license = licenses.gpl2;
-    };
-  };
-
-  wsgi-dashboards = pythonPackages.buildPythonPackage rec {
-    name = "${pname}-${version}";
-    pname = "buildbot-wsgi-dashboards";
-    version = buildbot-pkg.version;
-
-    src = pythonPackages.fetchPypi {
-      inherit pname version;
-      sha256 = "073gz44fa5k1p8k46k0ld9gg16j8zdj6sc297qfyqpiw28ybhc5s";
-    };
-
-    propagatedBuildInputs = with pythonPackages; [ buildbot-pkg ];
-
-    meta = with stdenv.lib; {
-      homepage = http://buildbot.net/;
-      description = "Buildbot WSGI dashboards Plugin";
-      maintainers = with maintainers; [ ];
-      license = licenses.gpl2;
-    };
-  };
-
-}
diff --git a/pkgs/development/tools/build-managers/buildbot/skip_test_linux_distro.patch b/pkgs/development/tools/build-managers/buildbot/skip_test_linux_distro.patch
deleted file mode 100644
index 8fe5c7b56b4f..000000000000
--- a/pkgs/development/tools/build-managers/buildbot/skip_test_linux_distro.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nur buildbot-0.9.6/buildbot/test/unit/test_buildbot_net_usage_data.py buildbot-0.9.6.patched/buildbot/test/unit/test_buildbot_net_usage_data.py
---- buildbot-0.9.6/buildbot/test/unit/test_buildbot_net_usage_data.py	2017-04-19 16:57:02.000000000 +0200
-+++ buildbot-0.9.6.patched/buildbot/test/unit/test_buildbot_net_usage_data.py	2017-05-04 12:22:54.575762551 +0200
-@@ -147,6 +147,7 @@
-         _sendBuildbotNetUsageData({'foo': 'bar'})
- 
-     def test_linux_distro(self):
-+        raise SkipTest("NixOS sandboxed builds hides /etc/os-release")
-         system = platform.system()
-         if system != "Linux":
-             raise SkipTest("test is only for linux")
diff --git a/pkgs/development/tools/build-managers/buildbot/worker.nix b/pkgs/development/tools/build-managers/buildbot/worker.nix
deleted file mode 100644
index 4fabad9d3701..000000000000
--- a/pkgs/development/tools/build-managers/buildbot/worker.nix
+++ /dev/null
@@ -1,26 +0,0 @@
-{ stdenv, pythonPackages }:
-
-pythonPackages.buildPythonApplication (rec {
-  name = "${pname}-${version}";
-  pname = "buildbot-worker";
-  version = "1.4.0";
-
-  src = pythonPackages.fetchPypi {
-    inherit pname version;
-    sha256 = "12zvf4c39b6s4g1f2w407q8kkw602m88rc1ggi4w9pkw3bwbxrgy";
-  };
-
-  buildInputs = with pythonPackages; [ setuptoolsTrial mock ];
-  propagatedBuildInputs = with pythonPackages; [ twisted future ];
-
-  postPatch = ''
-    substituteInPlace buildbot_worker/scripts/logwatcher.py --replace '/usr/bin/tail' "$(type -P tail)"
-  '';
-
-  meta = with stdenv.lib; {
-    homepage = http://buildbot.net/;
-    description = "Buildbot Worker Daemon";
-    maintainers = with maintainers; [ nand0p ryansydnor ];
-    license = licenses.gpl2;
-  };
-})
diff --git a/pkgs/development/tools/ejson/Gemfile b/pkgs/development/tools/ejson/Gemfile
new file mode 100644
index 000000000000..f860fe5075d4
--- /dev/null
+++ b/pkgs/development/tools/ejson/Gemfile
@@ -0,0 +1,4 @@
+source 'https://rubygems.org'
+
+gem 'fpm'
+gem 'ronn'
diff --git a/pkgs/development/tools/ejson/Gemfile.lock b/pkgs/development/tools/ejson/Gemfile.lock
new file mode 100644
index 000000000000..bc72352c7ab1
--- /dev/null
+++ b/pkgs/development/tools/ejson/Gemfile.lock
@@ -0,0 +1,54 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    arr-pm (0.0.10)
+      cabin (> 0)
+    backports (3.8.0)
+    cabin (0.9.0)
+    childprocess (0.7.1)
+      ffi (~> 1.0, >= 1.0.11)
+    clamp (1.0.1)
+    dotenv (2.2.1)
+    ffi (1.9.18)
+    fpm (1.9.2)
+      arr-pm (~> 0.0.10)
+      backports (>= 2.6.2)
+      cabin (>= 0.6.0)
+      childprocess
+      clamp (~> 1.0.0)
+      ffi
+      json (>= 1.7.7, < 2.0)
+      pleaserun (~> 0.0.29)
+      ruby-xz
+      stud
+    hpricot (0.8.6)
+    insist (1.0.0)
+    io-like (0.3.0)
+    json (1.8.6)
+    mustache (0.99.8)
+    pleaserun (0.0.30)
+      cabin (> 0)
+      clamp
+      dotenv
+      insist
+      mustache (= 0.99.8)
+      stud
+    rdiscount (2.2.0.1)
+    ronn (0.7.3)
+      hpricot (>= 0.8.2)
+      mustache (>= 0.7.0)
+      rdiscount (>= 1.5.8)
+    ruby-xz (0.2.3)
+      ffi (~> 1.9)
+      io-like (~> 0.3)
+    stud (0.0.23)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  fpm
+  ronn
+
+BUNDLED WITH
+   1.16.0
diff --git a/pkgs/development/tools/ejson/default.nix b/pkgs/development/tools/ejson/default.nix
new file mode 100644
index 000000000000..80129f318e39
--- /dev/null
+++ b/pkgs/development/tools/ejson/default.nix
@@ -0,0 +1,46 @@
+{ lib, bundlerEnv, ruby, buildGoPackage, fetchFromGitHub }:
+let
+  # needed for manpage generation
+  gems = bundlerEnv {
+    name = "ejson-gems";
+    gemdir = ./.;
+    inherit ruby;
+  };
+in buildGoPackage rec {
+  name = "ejson-${version}";
+  version = "1.2.0";
+  rev = "v${version}";
+
+  nativeBuildInputs = [ gems ];
+
+  goPackagePath = "github.com/Shopify/ejson";
+  subPackages = [ "cmd/ejson" ];
+
+  goDeps = ./deps.nix;
+
+  src = fetchFromGitHub {
+    owner = "Shopify";
+    repo = "ejson";
+    inherit rev;
+    sha256 = "07ig24fryb9n0mfyqb0sgpj7di9y7wbvh2ppwfs2jqfpvpncd7yh";
+  };
+
+  # set HOME, otherwise bundler will insert stuff in the manpages
+  postBuild = ''
+    cd go/src/$goPackagePath
+    HOME=$PWD make man
+  '';
+
+  postInstall = ''
+    mkdir -p $out/share
+    cp -r build/man $out/share
+  '';
+
+  meta = with lib; {
+    description = "A small library to manage encrypted secrets using asymmetric encryption.";
+    license = licenses.mit;
+    homepage = https://github.com/Shopify/ejson;
+    platforms = platforms.unix;
+    maintainers = [ maintainers.manveru ];
+  };
+}
diff --git a/pkgs/development/tools/ejson/deps.nix b/pkgs/development/tools/ejson/deps.nix
new file mode 100644
index 000000000000..b0c7defc5d78
--- /dev/null
+++ b/pkgs/development/tools/ejson/deps.nix
@@ -0,0 +1,48 @@
+# file generated from Gopkg.lock using dep2nix (https://github.com/nixcloud/dep2nix)
+[
+  {
+    goPackagePath  = "github.com/codegangsta/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/codegangsta/cli";
+      rev =  "9908e96513e5a94de37004098a3974a567f18111";
+      sha256 = "0g6sihdb53nlf770dp3jc0qqxnlir5n2yjbp5p5vf7kcj3p54p34";
+    };
+  }
+  {
+    goPackagePath  = "github.com/dustin/gojson";
+    fetch = {
+      type = "git";
+      url = "https://github.com/dustin/gojson";
+      rev =  "057ac0edc14e44d03df3bb03449e666ff50884c1";
+      sha256 = "1kzzbi5yshcg1v99gab5ymd3psild3p0rbq9jf7mssjvh11yza6f";
+    };
+  }
+  {
+    goPackagePath  = "github.com/smartystreets/goconvey";
+    fetch = {
+      type = "git";
+      url = "https://github.com/smartystreets/goconvey";
+      rev =  "90f2eae17a8bdcbe3f6f654fc76af7f39e97d7b9";
+      sha256 = "0s984ksmc8npf642nwwd1a81c2sfi613v7yia9jff710i5472fah";
+    };
+  }
+  {
+    goPackagePath  = "github.com/urfave/cli";
+    fetch = {
+      type = "git";
+      url = "https://github.com/urfave/cli";
+      rev =  "cfb38830724cc34fedffe9a2a29fb54fa9169cd1";
+      sha256 = "0y6f4sbzkiiwrxbl15biivj8c7qwxnvm3zl2dd3mw4wzg4x10ygj";
+    };
+  }
+  {
+    goPackagePath  = "golang.org/x/crypto";
+    fetch = {
+      type = "git";
+      url = "https://go.googlesource.com/crypto";
+      rev =  "ca7e7f10cb9fd9c1a6ff7f60436c086d73714180";
+      sha256 = "02wmfdq40fjszrd9l2w4c1g34zxnxyydwr4sqvp2blmw2s6ww4bx";
+    };
+  }
+]
\ No newline at end of file
diff --git a/pkgs/development/tools/ejson/gemset.nix b/pkgs/development/tools/ejson/gemset.nix
new file mode 100644
index 000000000000..b6fb1473d222
--- /dev/null
+++ b/pkgs/development/tools/ejson/gemset.nix
@@ -0,0 +1,188 @@
+{
+  arr-pm = {
+    dependencies = ["cabin"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07yx1g1nh4zdy38i2id1xyp42fvj4vl6i196jn7szvjfm0jx98hg";
+      type = "gem";
+    };
+    version = "0.0.10";
+  };
+  backports = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "17pcz0z6jms5jydr1r95kf1bpk3ms618hgr26c62h34icy9i1dpm";
+      type = "gem";
+    };
+    version = "3.8.0";
+  };
+  cabin = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0b3b8j3iqnagjfn1261b9ncaac9g44zrx1kcg81yg4z9i513kici";
+      type = "gem";
+    };
+    version = "0.9.0";
+  };
+  childprocess = {
+    dependencies = ["ffi"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04cypmwyy4aj5p9b5dmpwiz5p1gzdpz6jaxb42fpckdbmkpvn6j1";
+      type = "gem";
+    };
+    version = "0.7.1";
+  };
+  clamp = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0jb6l4scp69xifhicb5sffdixqkw8wgkk9k2q57kh2y36x1px9az";
+      type = "gem";
+    };
+    version = "1.0.1";
+  };
+  dotenv = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1pgzlvs0sswnqlgfm9gkz2hlhkc0zd3vnlp2vglb1wbgnx37pjjv";
+      type = "gem";
+    };
+    version = "2.2.1";
+  };
+  ffi = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "034f52xf7zcqgbvwbl20jwdyjwznvqnwpbaps9nk18v9lgb1dpx0";
+      type = "gem";
+    };
+    version = "1.9.18";
+  };
+  fpm = {
+    dependencies = ["arr-pm" "backports" "cabin" "childprocess" "clamp" "ffi" "json" "pleaserun" "ruby-xz" "stud"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09vzjsiwa2dlhph6fc519x5l0bfn2qfhayfld48cdl2561x5c7fb";
+      type = "gem";
+    };
+    version = "1.9.2";
+  };
+  hpricot = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1jn8x9ch79gqmnzgyz78kppavjh5lqx0y0r6frykga2b86rz9s6z";
+      type = "gem";
+    };
+    version = "0.8.6";
+  };
+  insist = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0bw3bdwns14mapbgb8cbjmr0amvwz8y72gyclq04xp43wpp5jrvg";
+      type = "gem";
+    };
+    version = "1.0.0";
+  };
+  io-like = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "04nn0s2wmgxij3k760h3r8m1dgih5dmd9h4v1nn085yi824i5z6k";
+      type = "gem";
+    };
+    version = "0.3.0";
+  };
+  json = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qmj7fypgb9vag723w1a49qihxrcf5shzars106ynw2zk352gbv5";
+      type = "gem";
+    };
+    version = "1.8.6";
+  };
+  mustache = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1g5hplm0k06vwxwqzwn1mq5bd02yp0h3rym4zwzw26aqi7drcsl2";
+      type = "gem";
+    };
+    version = "0.99.8";
+  };
+  pleaserun = {
+    dependencies = ["cabin" "clamp" "dotenv" "insist" "mustache" "stud"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0hgnrl67zkqaxmfkwbyscawj4wqjm7h8khpbj58s6iw54wp3408p";
+      type = "gem";
+    };
+    version = "0.0.30";
+  };
+  rdiscount = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1arvk3k06prxasq1djbj065ixar4zl171340g7wr1ww4gj9makx3";
+      type = "gem";
+    };
+    version = "2.2.0.1";
+  };
+  ronn = {
+    dependencies = ["hpricot" "mustache" "rdiscount"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "07plsxxfx5bxdk72ii9za6km0ziqlq8jh3bicr4774dalga6zpw2";
+      type = "gem";
+    };
+    version = "0.7.3";
+  };
+  ruby-xz = {
+    dependencies = ["ffi" "io-like"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "11bgpvvk0098ghvlxr4i713jmi2izychalgikwvdwmpb452r3ndw";
+      type = "gem";
+    };
+    version = "0.2.3";
+  };
+  stud = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qpb57cbpm9rwgsygqxifca0zma87drnlacv49cqs2n5iyi6z8kb";
+      type = "gem";
+    };
+    version = "0.0.23";
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/tools/goa/default.nix b/pkgs/development/tools/goa/default.nix
index dfb603d101fc..7469d506244b 100644
--- a/pkgs/development/tools/goa/default.nix
+++ b/pkgs/development/tools/goa/default.nix
@@ -1,8 +1,8 @@
-{ stdenv, buildGoPackage, fetchFromGitHub, makeWrapper }:
+{ stdenv, buildGoPackage, fetchFromGitHub }:
 
 buildGoPackage rec {
   name = "goa-${version}";
-  version = "1.0.0";
+  version = "1.4.0";
 
   goPackagePath = "github.com/goadesign/goa";
   subPackages = [ "goagen" ];
@@ -11,7 +11,7 @@ buildGoPackage rec {
     owner = "goadesign";
     repo = "goa";
     rev = "v${version}";
-    sha256 = "13401jf907z3qh11h9clb3z0i0fshwkmhx11fq9z6vx01x8x2in1";
+    sha256 = "1qx3c7dyq5wqxidfrk3ywc55fk64najj63f2jmfisfq4ixgwxdw9";
   };
 
   goDeps = ./deps.nix;
diff --git a/pkgs/development/tools/goa/deps.nix b/pkgs/development/tools/goa/deps.nix
index 14e9234be8a2..d92489259055 100644
--- a/pkgs/development/tools/goa/deps.nix
+++ b/pkgs/development/tools/goa/deps.nix
@@ -1,39 +1,12 @@
-# This file was generated by go2nix.
+# This file was generated by https://github.com/kamilchm/go2nix v1.2.1
 [
   {
-    goPackagePath = "github.com/armon/go-metrics";
-    fetch = {
-      type = "git";
-      url = "https://github.com/armon/go-metrics";
-      rev = "3df31a1ada83e310c2e24b267c8e8b68836547b4";
-      sha256 = "1l99f1bzvdhyqhnsrpi1pd07bps0msilzilrd7m4w7i1m5kra529";
-    };
-  }
-  {
     goPackagePath = "github.com/dimfeld/httppath";
     fetch = {
       type = "git";
       url = "https://github.com/dimfeld/httppath";
-      rev = "c8e499c3ef3c3e272ed8bdcc1ccf39f73c88debc";
-      sha256 = "0452zvrzjvy8pk5q6ykivz2cks082r4lmh7hghscxfqw6gf3siwi";
-    };
-  }
-  {
-    goPackagePath = "github.com/dimfeld/httptreemux";
-    fetch = {
-      type = "git";
-      url = "https://github.com/dimfeld/httptreemux";
-      rev = "96acf0909c0b45ebf4a25a816cedc6d317e63679";
-      sha256 = "0f9qbm1b8l7b21i2v8vmjyzfwf1mgkvxlk5250bwkp5i8n4ml2r6";
-    };
-  }
-  {
-    goPackagePath = "github.com/goadesign/goa";
-    fetch = {
-      type = "git";
-      url = "https://github.com/goadesign/goa";
-      rev = "ea323df387ea68f8ac9fd79336f523c25e12c92e";
-      sha256 = "13401jf907z3qh11h9clb3z0i0fshwkmhx11fq9z6vx01x8x2in1";
+      rev = "ee938bf735983d53694d79138ad9820efff94c92";
+      sha256 = "1c1kic8g3r78g6h4xl8n2ac1waxsb9fqz40k20ypi08k24mv3ha9";
     };
   }
   {
@@ -41,8 +14,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/manveru/faker";
-      rev = "717f7cf83fb78669bfab612749c2e8ff63d5be11";
-      sha256 = "1p6laz0hnb2vhfvam83rz6vl2amajqa6nifnsj2lg3mcs9ga8c0f";
+      rev = "9fbc68a78c4dbc7914e1a23f88f126bea4383b97";
+      sha256 = "1cnrf4wdjhxd9fryhlp2krl9acz6dzwic89gshs49pg3aajlf4dy";
     };
   }
   {
@@ -50,8 +23,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/satori/go.uuid";
-      rev = "0aa62d5ddceb50dbcb909d790b5345affd3669b6";
-      sha256 = "1vfzfcspanxcbpdpv49580rh6kamzcs3lm70xnx724mkwi41zi8w";
+      rev = "36e9d2ebbde5e3f13ab2e25625fd453271d6522e";
+      sha256 = "0nc0ggn0a6bcwdrwinnx3z6889x65c20a2dwja0n8can3xblxs35";
     };
   }
   {
@@ -59,8 +32,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/spf13/cobra";
-      rev = "9c28e4bbd74e5c3ed7aacbc552b2cab7cfdfe744";
-      sha256 = "02bgp0yy9bi05k2in9axqi3db1c6mjffdsmki51pn9iryxz4zkh3";
+      rev = "4dab30cb33e6633c33c787106bafbfbfdde7842d";
+      sha256 = "1g7p7c2azqaxbfkx5yaznk0z1inqnajlbwv921k6vh8i1xdblxk5";
     };
   }
   {
@@ -68,8 +41,8 @@
     fetch = {
       type = "git";
       url = "https://github.com/spf13/pflag";
-      rev = "c7e63cf4530bcd3ba943729cee0efeff2ebea63f";
-      sha256 = "197mlkgb01zk86fxfl8r8maymcxsspqblg7hmngjxf7ivdid1i1l";
+      rev = "1ce0cc6db4029d97571db82f85092fccedb572ce";
+      sha256 = "02wsc01npnpc7srqw7rzaihn2hjmrkfy2x412fxbb675j2hk9cx6";
     };
   }
   {
@@ -82,21 +55,12 @@
     };
   }
   {
-    goPackagePath = "golang.org/x/net";
-    fetch = {
-      type = "git";
-      url = "https://go.googlesource.com/net";
-      rev = "71a035914f99bb58fe82eac0f1289f10963d876c";
-      sha256 = "06m16c9vkwc8m2mcxcxa7p8mb26ikc810lgzd5m8k1r6lp3hc8wm";
-    };
-  }
-  {
     goPackagePath = "golang.org/x/tools";
     fetch = {
       type = "git";
       url = "https://go.googlesource.com/tools";
-      rev = "f1a397bba50dee815e8c73f3ec94ffc0e8df1a09";
-      sha256 = "1wy8nn2vg70n98g80i1zrk49129phyfbzxbicj748bmf82rnaxzg";
+      rev = "f60d9635b16a5a57b06eaa119614ba4df421966a";
+      sha256 = "1h587gvgwlpjdn8q3s8i1blfwfklqi0cpb0szj99w1mkgl0ads13";
     };
   }
   {
@@ -104,8 +68,9 @@
     fetch = {
       type = "git";
       url = "https://gopkg.in/yaml.v2";
-      rev = "31c299268d302dd0aa9a0dcf765a3d58971ac83f";
-      sha256 = "14jkpa8g0s448n2x5qdi05m59ncsdscby1wy2p089zxl9nqavm8h";
+      rev = "5420a8b6744d3b0345ab293f6fcba19c978f1183";
+      sha256 = "0dwjrs2lp2gdlscs7bsrmyc5yf6mm4fvgw71bzr9mv2qrd2q73s1";
     };
   }
 ]
+
diff --git a/pkgs/development/tools/lazygit/default.nix b/pkgs/development/tools/lazygit/default.nix
new file mode 100644
index 000000000000..87571f1fcbb7
--- /dev/null
+++ b/pkgs/development/tools/lazygit/default.nix
@@ -0,0 +1,27 @@
+{ stdenv, buildGoPackage, fetchFromGitHub }:
+
+buildGoPackage rec {
+  name = "lazygit-${version}";
+  version = "0.4";
+
+  goPackagePath = "github.com/jesseduffield/lazygit";
+
+  src = fetchFromGitHub {
+    owner = "jesseduffield";
+    repo = "lazygit";
+    rev = "v${version}";
+    sha256 = "0piljnwv778z7zc1pglkidiys1a3yv4d7z9wsrcj1nszlcn3ifyz";
+  };
+
+  postPatch = ''
+    rm -rf scripts
+  '';
+
+  meta = with stdenv.lib; {
+    inherit (src.meta) homepage;
+    description = "Simple terminal UI for git commands";
+    license = licenses.mit;
+    maintainers = with stdenv.lib.maintainers; [ fpletz ];
+    platforms = stdenv.lib.platforms.unix;
+  };
+}
diff --git a/pkgs/development/tools/ocaml/camlp5/5.15.nix b/pkgs/development/tools/ocaml/camlp5/5.15.nix
deleted file mode 100644
index 2e03bb8025ef..000000000000
--- a/pkgs/development/tools/ocaml/camlp5/5.15.nix
+++ /dev/null
@@ -1,46 +0,0 @@
-{stdenv, fetchurl, ocaml, transitional ? false}:
-
-let
-  pname = "camlp5";
-  webpage = http://pauillac.inria.fr/~ddr/camlp5/;
-  metafile = ./META;
-in
-
-assert !stdenv.lib.versionOlder "4.00" ocaml.version;
-
-stdenv.mkDerivation rec {
-
-  name = "${pname}${if transitional then "_transitional" else ""}-${version}";
-  version = "5.15";
-
-  src = fetchurl {
-    url = "${webpage}/distrib/src/${pname}-${version}.tgz";
-    sha256 = "1sx5wlfpydqskm97gp7887p3avbl3vanlmrwj35wx5mbzj6kn9nq";
-  };
-
-  buildInputs = [ ocaml ];
-
-  prefixKey = "-prefix ";
-
-  preConfigure = "configureFlagsArray=(" +  (if transitional then "--transitional" else "--strict") +
-                  " --libdir $out/lib/ocaml/${ocaml.version}/site-lib)";
-
-  buildFlags = "world.opt";
-
-  postInstall = "cp ${metafile} $out/lib/ocaml/${ocaml.version}/site-lib/camlp5/META";
-
-  meta = {
-    description = "Preprocessor-pretty-printer for OCaml";
-    longDescription = ''
-      Camlp5 is a preprocessor and pretty-printer for OCaml programs.
-      It also provides parsing and printing tools.
-    '';
-    homepage = "${webpage}";
-    license = stdenv.lib.licenses.bsd3;
-    branch = "5";
-    platforms = ocaml.meta.platforms or [];
-    maintainers = [
-      stdenv.lib.maintainers.z77z
-    ];
-  };
-}
diff --git a/pkgs/development/tools/ocaml/merlin/default.nix b/pkgs/development/tools/ocaml/merlin/default.nix
index 4ad1bfb3234d..d74b480c9c5a 100644
--- a/pkgs/development/tools/ocaml/merlin/default.nix
+++ b/pkgs/development/tools/ocaml/merlin/default.nix
@@ -1,10 +1,9 @@
-{ stdenv, fetchzip, ocaml, findlib, yojson
-, withEmacsMode ? false, emacs }:
+{ stdenv, fetchzip, ocaml, findlib, dune, yojson }:
 
 assert stdenv.lib.versionAtLeast ocaml.version "4.02";
 
 let
-  version = "3.1.0";
+  version = "3.2.1";
 in
 
 stdenv.mkDerivation {
@@ -13,15 +12,12 @@ stdenv.mkDerivation {
 
   src = fetchzip {
     url = "https://github.com/ocaml/merlin/archive/v${version}.tar.gz";
-    sha256 = "1vf0c2mmflp94r8hshb44lsvnfdy03ld6mld2n79cdxr3zl24ci2";
+    sha256 = "1szv2b7d12ll5n6pvnhlv3a6vnlyrkpya4l9fiyyiwyvgd4xzxwf";
   };
 
-  buildInputs = [ ocaml findlib yojson ]
-    ++ stdenv.lib.optional withEmacsMode emacs;
+  buildInputs = [ ocaml findlib dune yojson ];
 
-  preConfigure = "mkdir -p $out/bin";
-  prefixKey = "--prefix ";
-  configureFlags = stdenv.lib.optional withEmacsMode "--enable-compiled-emacs-mode";
+  inherit (dune) installPhase;
 
   meta = with stdenv.lib; {
     description = "An editor-independent tool to ease the development of programs in OCaml";
diff --git a/pkgs/development/tools/profiling/systemtap/default.nix b/pkgs/development/tools/profiling/systemtap/default.nix
index 55902f48bb73..ecc86d51a06e 100644
--- a/pkgs/development/tools/profiling/systemtap/default.nix
+++ b/pkgs/development/tools/profiling/systemtap/default.nix
@@ -5,9 +5,9 @@
 let
   ## fetchgit info
   url = git://sourceware.org/git/systemtap.git;
-  rev = "4051c70c9318c837981384cbb23f3e9eb1bd0892";
-  sha256 = "0sd8n3j3rishks3gyqj2jyqhps7hmlfjyz8i0w8v98cczhhh04rq";
-  version = "2017.10.18";
+  rev = "release-${version}";
+  sha256 = "0hckbmrlcz5nj438409fmdjjaaqzf68r2242v10lkssw5daia1gj";
+  version = "3.3";
 
   inherit (kernel) stdenv;
   inherit (stdenv) lib;
@@ -18,12 +18,6 @@ let
     src = fetchgit { inherit url rev sha256; };
     nativeBuildInputs = [ pkgconfig ];
     buildInputs = [ elfutils gettext python2 python2Packages.setuptools ];
-    # FIXME: Workaround for bug in kbuild, where quoted -I"/foo" flags would get mangled in out-of-tree kbuild dirs
-    postPatch = ''
-      substituteInPlace buildrun.cxx --replace \
-        'o << "EXTRA_CFLAGS += -I\"" << s.runtime_path << "\"" << endl;' \
-        'o << "EXTRA_CFLAGS += -I" << s.runtime_path << endl;'
-    '';
     enableParallelBuilding = true;
   };
 
@@ -53,7 +47,7 @@ in runCommand "systemtap-${kernel.version}-${version}" {
   };
 } ''
   mkdir -p $out/bin
-  for bin in $stapBuild/bin/*; do # hello emacs */
+  for bin in $stapBuild/bin/*; do
     ln -s $bin $out/bin
   done
   rm $out/bin/stap $out/bin/dtrace
diff --git a/pkgs/development/tools/rust/bindgen/default.nix b/pkgs/development/tools/rust/bindgen/default.nix
index 0463ab3ba0af..836003eeb736 100644
--- a/pkgs/development/tools/rust/bindgen/default.nix
+++ b/pkgs/development/tools/rust/bindgen/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   name = "rust-bindgen-${version}";
-  version = "0.40.0";
+  version = "0.42.2";
 
   src = fetchFromGitHub {
     owner = "rust-lang-nursery";
     repo = "rust-bindgen";
     rev = "v${version}";
-    sha256 = "0d7jqgi3aadwqcxiaz7axsq9h6n2i42yd3q0p1hc5l0kcdwwbj5k";
+    sha256 = "10h0h7x8yf4dsyw2p2nas2jg5p3i29np0y3rfzrdq898d70gvq4j";
   };
 
-  cargoSha256 = "1rjyazhnk9xihqw1qzkkcrab627lqbj789g5d5nb8bn2hkbdx5d6";
+  cargoSha256 = "01jvi86xgz0r7ia9agnfpms6b6x68lzwj6f085m0w659i94acgpi";
 
   libclang = llvmPackages.libclang.lib; #for substituteAll