summary refs log tree commit diff
path: root/pkgs/development/tools
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools')
-rw-r--r--pkgs/development/tools/alloy/default.nix39
-rw-r--r--pkgs/development/tools/analysis/egypt/default.nix11
-rw-r--r--pkgs/development/tools/analysis/include-what-you-use/default.nix5
-rw-r--r--pkgs/development/tools/boomerang/dlopen_path.patch13
-rw-r--r--pkgs/development/tools/build-managers/cmake/2.8.11-cygwin.patch237
-rw-r--r--pkgs/development/tools/build-managers/cmake/cmake_find_openssl_for_openssl-1.0.1m_and_up.patch11
-rw-r--r--pkgs/development/tools/build-managers/gup/default.nix6
-rw-r--r--pkgs/development/tools/build-managers/icmake/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/rebar3/default.nix14
-rw-r--r--pkgs/development/tools/build-managers/rebar3/hermetic-rebar3.patch108
-rw-r--r--pkgs/development/tools/erlang/hex2nix/default.nix4
-rw-r--r--pkgs/development/tools/erlang/rebar3-nix-bootstrap/default.nix4
-rw-r--r--pkgs/development/tools/haskell/ihaskell/use-classy-prelude.patch34
-rw-r--r--pkgs/development/tools/java/cfr/default.nix29
-rw-r--r--pkgs/development/tools/misc/bin_replace_string/default.nix15
-rw-r--r--pkgs/development/tools/misc/binutils/default.nix8
-rw-r--r--pkgs/development/tools/misc/ccache/default.nix12
-rw-r--r--pkgs/development/tools/misc/ycmd/default.nix37
-rw-r--r--pkgs/development/tools/parsing/flexc++/default.nix31
-rw-r--r--pkgs/development/tools/parsing/lemon/default.nix6
-rw-r--r--pkgs/development/tools/vagrant/default.nix6
-rw-r--r--pkgs/development/tools/watchman/default.nix7
22 files changed, 242 insertions, 396 deletions
diff --git a/pkgs/development/tools/alloy/default.nix b/pkgs/development/tools/alloy/default.nix
index cb559a128ab..fbf784db0cc 100644
--- a/pkgs/development/tools/alloy/default.nix
+++ b/pkgs/development/tools/alloy/default.nix
@@ -1,33 +1,14 @@
 { stdenv, fetchurl, jre, makeDesktopItem }:
 
-let version = "4.2_2015-02-22"; in
 stdenv.mkDerivation rec {
   name = "alloy-${version}";
+  version = "4.2_2015-02-22";
 
   src = fetchurl {
     sha256 = "0p93v8jwx9prijpikkgmfdzb9qn8ljmvga5d9wvrkxddccjx9k28";
     url = "http://alloy.mit.edu/alloy/downloads/alloy${version}.jar";
   };
 
-  meta = with stdenv.lib; {
-    inherit version;
-    description = "Language & tool for relational models";
-    longDescription = ''
-      Alloy is a language for describing structures and a tool for exploring
-      them. An Alloy model is a collection of constraints that describes a set
-      of structures, e.g. all the possible security configurations of a web
-      application, or all the possible topologies of a switching network. The
-      Alloy Analyzer is a solver that takes the constraints of a model and
-      finds structures that satisfy them. Structures are displayed graphically,
-      and their appearance can be customized for the domain at hand.
-    '';
-    homepage = http://alloy.mit.edu/;
-    downloadPage = http://alloy.mit.edu/alloy/download.html;
-    license = licenses.mit;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ nckx ];
-  };
-
   desktopItem = makeDesktopItem rec {
     name = "alloy";
     exec = name;
@@ -57,4 +38,22 @@ stdenv.mkDerivation rec {
     install -Dm644 ${./icon.png} $out/share/pixmaps/alloy.png
     cp -r ${desktopItem}/share/applications $out/share
   '';
+
+  meta = with stdenv.lib; {
+    description = "Language & tool for relational models";
+    longDescription = ''
+      Alloy is a language for describing structures and a tool for exploring
+      them. An Alloy model is a collection of constraints that describes a set
+      of structures, e.g. all the possible security configurations of a web
+      application, or all the possible topologies of a switching network. The
+      Alloy Analyzer is a solver that takes the constraints of a model and
+      finds structures that satisfy them. Structures are displayed graphically,
+      and their appearance can be customized for the domain at hand.
+    '';
+    homepage = http://alloy.mit.edu/;
+    downloadPage = http://alloy.mit.edu/alloy/download.html;
+    license = licenses.mit;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ nckx ];
+  };
 }
diff --git a/pkgs/development/tools/analysis/egypt/default.nix b/pkgs/development/tools/analysis/egypt/default.nix
index 1233c4ce15a..fc63247468c 100644
--- a/pkgs/development/tools/analysis/egypt/default.nix
+++ b/pkgs/development/tools/analysis/egypt/default.nix
@@ -1,16 +1,19 @@
 { stdenv, fetchurl, buildPerlPackage }:
 
-let version = "1.10"; in
 buildPerlPackage rec {
   name = "egypt-${version}";
+  version = "1.10";
 
   src = fetchurl {
     sha256 = "0r0wj6v8z9fzlh9pb5617kyjdf92ppmlbzajaarrq729bbb6ln5m";
     url = "http://www.gson.org/egypt/download/${name}.tar.gz";
   };
 
+  enableParallelBuilding = true;
+
+  doCheck = true;
+
   meta = with stdenv.lib; {
-    inherit version;
     description = "Tool for making call graphs of C programmes";
     longDescription = ''
       Egypt is a simple tool for creating call graphs of C programs. It neither
@@ -25,8 +28,4 @@ buildPerlPackage rec {
     platforms = platforms.linux;
     maintainers = with maintainers; [ nckx ];
   };
-
-  enableParallelBuilding = true;
-
-  doCheck = true;
 }
diff --git a/pkgs/development/tools/analysis/include-what-you-use/default.nix b/pkgs/development/tools/analysis/include-what-you-use/default.nix
index 75e4dba003b..374f0fee3f1 100644
--- a/pkgs/development/tools/analysis/include-what-you-use/default.nix
+++ b/pkgs/development/tools/analysis/include-what-you-use/default.nix
@@ -1,9 +1,9 @@
 { stdenv, fetchurl, cmake, llvmPackages }:
 
-# Also bump llvmPackages in all-packages.nix to the supported version!
-let version = "0.5"; in
 stdenv.mkDerivation rec {
   name = "include-what-you-use-${version}";
+  # Also bump llvmPackages in all-packages.nix to the supported version!
+  version = "0.5";
 
   src = fetchurl {
     sha256 = "19pwhgwvfr86n8ks099p9r02v7zh8d3qs7g7snzkhpdgq1azww85";
@@ -18,7 +18,6 @@ stdenv.mkDerivation rec {
   enableParallelBuilding = true;
 
   meta = with stdenv.lib; {
-    inherit version;
     description = "Analyze #includes in C/C++ source files with clang";
     longDescription = ''
       For every symbol (type, function variable, or macro) that you use in
diff --git a/pkgs/development/tools/boomerang/dlopen_path.patch b/pkgs/development/tools/boomerang/dlopen_path.patch
deleted file mode 100644
index 1e4bf3c75a3..00000000000
--- a/pkgs/development/tools/boomerang/dlopen_path.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/loader/BinaryFileFactory.cpp b/loader/BinaryFileFactory.cpp
-index 889a4ed..ca86765 100644
---- a/loader/BinaryFileFactory.cpp
-+++ b/loader/BinaryFileFactory.cpp
-@@ -109,7 +109,7 @@ BinaryFile* BinaryFileFactory::getInstanceFor( const char *sName ) {
- 	
- // Load the specific loader library
- #ifndef _WIN32		// Cygwin, Unix/Linux
--	libName = std::string("lib/lib") + libName;
-+	libName = std::string("lib") + libName;
- #ifdef	__CYGWIN__
- 	libName += ".dll";		// Cygwin wants .dll, but is otherwise like Unix
- #else
diff --git a/pkgs/development/tools/build-managers/cmake/2.8.11-cygwin.patch b/pkgs/development/tools/build-managers/cmake/2.8.11-cygwin.patch
deleted file mode 100644
index e16dab32632..00000000000
--- a/pkgs/development/tools/build-managers/cmake/2.8.11-cygwin.patch
+++ /dev/null
@@ -1,237 +0,0 @@
---- cmake-2.8.10/Source/cmFileCommand.cxx	2012-10-31 10:32:06.000000000 -0500
-+++ cmake-2.8.10/Source/cmFileCommand.cxx	2013-03-16 22:55:11.306681100 -0500
-@@ -1002,7 +1002,7 @@ protected:
-   MatchProperties CollectMatchProperties(const char* file)
-     {
-     // Match rules are case-insensitive on some platforms.
--#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
-+#if defined(_WIN32) || defined(__APPLE__)
-     std::string lower = cmSystemTools::LowerCase(file);
-     const char* file_to_match = lower.c_str();
- #else
---- cmake-2.8.10/Source/cmInstallCommand.cxx	2012-10-31 10:32:06.000000000 -0500
-+++ cmake-2.8.10/Source/cmInstallCommand.cxx	2013-03-16 22:56:21.008667800 -0500
-@@ -1090,7 +1090,7 @@ cmInstallCommand::HandleDirectoryMode(st
-       {
-       literal_args += " REGEX \"";
-     // Match rules are case-insensitive on some platforms.
--#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
-+#if defined(_WIN32) || defined(__APPLE__)
-       std::string regex = cmSystemTools::LowerCase(args[i]);
- #else
-       std::string regex = args[i];
---- cmake-2.8.10/Source/kwsys/Glob.cxx	2012-10-31 10:32:06.000000000 -0500
-+++ cmake-2.8.10/Source/kwsys/Glob.cxx	2013-03-16 22:58:54.192429400 -0500
-@@ -37,7 +37,7 @@
- #include <string.h>
- namespace KWSYS_NAMESPACE
- {
--#if defined(_WIN32) || defined(__APPLE__) || defined(__CYGWIN__)
-+#if defined(_WIN32) || defined(__APPLE__)
- // On Windows and apple, no difference between lower and upper case
- # define KWSYS_GLOB_CASE_INDEPENDENT
- #endif
---- cmake-2.8.11/Source/kwsys/SystemInformation.cxx	2013-05-15 12:38:13.000000000 -0500
-+++ cmake-2.8.11/Source/kwsys/SystemInformation.cxx	2013-07-08 01:57:31.216321800 -0500
-@@ -888,7 +888,7 @@ void SystemInformation::RunMemoryCheck()
- // Hide implementation details in an anonymous namespace.
- namespace {
- // *****************************************************************************
--#if defined(__linux) || defined(__APPLE__)
-+#if defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__)
- int LoadLines(
-       FILE *file,
-       kwsys_stl::vector<kwsys_stl::string> &lines)
-@@ -918,7 +918,7 @@ int LoadLines(
-   return nRead;
- }
- 
--# if defined(__linux)
-+# if defined(__linux) || defined(__CYGWIN__)
- // *****************************************************************************
- int LoadLines(
-       const char *fileName,
-@@ -957,7 +957,7 @@ int NameValue(
- }
- #endif
- 
--#if defined(__linux)
-+#if defined(__linux) || defined(__CYGWIN__)
- // ****************************************************************************
- template<typename T>
- int GetFieldsFromFile(
-@@ -2869,7 +2869,6 @@ bool SystemInformationImplementation::Re
-     pos = buffer.find("processor\t",pos+1);
-     }
- 
--#ifdef __linux
-   // Find the largest physical id.
-   int maxId = -1;
-   kwsys_stl::string idc =
-@@ -2893,14 +2892,6 @@ bool SystemInformationImplementation::Re
-   this->NumberOfPhysicalCPU=static_cast<unsigned int>(
-     numberOfCoresPerCPU*(maxId+1));
- 
--#else // __CYGWIN__
--  // does not have "physical id" entries, neither "cpu cores"
--  // this has to be fixed for hyper-threading.
--  kwsys_stl::string cpucount =
--    this->ExtractValueFromCpuInfoFile(buffer,"cpu count");
--  this->NumberOfPhysicalCPU=
--    this->NumberOfLogicalCPU = atoi(cpucount.c_str());
--#endif
-   // gotta have one, and if this is 0 then we get a / by 0n
-   // better to have a bad answer than a crash
-   if(this->NumberOfPhysicalCPU <= 0)
-@@ -3086,7 +3077,7 @@ SystemInformationImplementation::GetHost
-   GlobalMemoryStatusEx(&statex);
-   return statex.ullTotalPhys/1024;
- # endif
--#elif defined(__linux)
-+#elif defined(__linux) || defined(__CYGWIN__)
-   SystemInformation::LongLong memTotal=0;
-   int ierr=GetFieldFromFile("/proc/meminfo","MemTotal:",memTotal);
-   if (ierr)
-@@ -3217,7 +3208,7 @@ SystemInformationImplementation::GetHost
-   GlobalMemoryStatusEx(&statex);
-   return (statex.ullTotalPhys - statex.ullAvailPhys)/1024;
- # endif
--#elif defined(__linux)
-+#elif defined(__linux) || defined(__CYGWIN__)
-   const char *names[3]={"MemTotal:","MemFree:",NULL};
-   SystemInformation::LongLong values[2]={SystemInformation::LongLong(0)};
-   int ierr=GetFieldsFromFile("/proc/meminfo",names,values);
-@@ -3276,7 +3267,7 @@ SystemInformationImplementation::GetProc
-     return -2;
-     }
-   return pmc.WorkingSetSize/1024;
--#elif defined(__linux)
-+#elif defined(__linux) || defined(__CYGWIN__)
-   SystemInformation::LongLong memUsed=0;
-   int ierr=GetFieldFromFile("/proc/self/status","VmRSS:",memUsed);
-   if (ierr)
-@@ -3328,7 +3319,7 @@ SystemInformationImplementation::GetProc
- {
- #if defined(_WIN32)
-   return GetCurrentProcessId();
--#elif defined(__linux) || defined(__APPLE__)
-+#elif defined(__linux) || defined(__APPLE__) || defined(__CYGWIN__)
-   return getpid();
- #else
-   return -1;
---- cmake-2.8.10/Source/kwsys/SystemTools.cxx	2012-10-31 10:32:06.000000000 -0500
-+++ cmake-2.8.10/Source/kwsys/SystemTools.cxx	2013-03-16 22:52:11.830415600 -0500
-@@ -75,19 +75,12 @@
- // Windows API.
- #if defined(_WIN32)
- # include <windows.h>
--#elif defined (__CYGWIN__)
--# include <windows.h>
--# undef _WIN32
- #endif
- 
- #if !KWSYS_CXX_HAS_ENVIRON_IN_STDLIB_H
- extern char **environ;
- #endif
- 
--#ifdef __CYGWIN__
--extern "C" void cygwin_conv_to_win32_path(const char *path, char *win32_path);
--#endif
--
- // getpwnam doesn't exist on Windows and Cray Xt3/Catamount
- // same for TIOCGWINSZ
- #if defined(_WIN32) || defined (__LIBCATAMOUNT__)
-@@ -1068,7 +1061,7 @@ bool SystemTools::SameFile(const char* f
- }
- 
- //----------------------------------------------------------------------------
--#if defined(_WIN32) || defined(__CYGWIN__)
-+#if defined(_WIN32)
- static bool WindowsFileExists(const char* filename)
- {
-   WIN32_FILE_ATTRIBUTE_DATA fd;
-@@ -1083,7 +1076,7 @@ bool SystemTools::FileExists(const char*
-     {
-     return false;
-     }
--#if defined(__CYGWIN__)
-+#if 0
-   // Convert filename to native windows path if possible.
-   char winpath[MAX_PATH];
-   if(SystemTools::PathCygwinToWin32(filename, winpath))
-@@ -1111,7 +1104,7 @@ bool SystemTools::FileExists(const char*
- }
- 
- //----------------------------------------------------------------------------
--#ifdef __CYGWIN__
-+#if 0
- bool SystemTools::PathCygwinToWin32(const char *path, char *win32_path)
- {
-   SystemToolsTranslationMap::iterator i =
-@@ -3894,7 +3887,7 @@ bool SystemTools::LocateFileInDir(const
- bool SystemTools::FileIsFullPath(const char* in_name)
- {
-   kwsys_stl::string name = in_name;
--#if defined(_WIN32) || defined(__CYGWIN__)
-+#if defined(_WIN32)
-   // On Windows, the name must be at least two characters long.
-   if(name.length() < 2)
-     {
-@@ -4712,9 +4705,6 @@ bool SystemTools::ParseURL( const kwsys_
- unsigned int SystemToolsManagerCount;
- SystemToolsTranslationMap *SystemTools::TranslationMap;
- SystemToolsTranslationMap *SystemTools::LongPathMap;
--#ifdef __CYGWIN__
--SystemToolsTranslationMap *SystemTools::Cyg2Win32Map;
--#endif
- 
- // SystemToolsManager manages the SystemTools singleton.
- // SystemToolsManager should be included in any translation unit
-@@ -4760,9 +4750,6 @@ void SystemTools::ClassInitialize()
-   // Allocate the translation map first.
-   SystemTools::TranslationMap = new SystemToolsTranslationMap;
-   SystemTools::LongPathMap = new SystemToolsTranslationMap;
--#ifdef __CYGWIN__
--  SystemTools::Cyg2Win32Map = new SystemToolsTranslationMap;
--#endif
- 
-   // Add some special translation paths for unix.  These are not added
-   // for windows because drive letters need to be maintained.  Also,
-@@ -4817,9 +4804,6 @@ void SystemTools::ClassFinalize()
- {
-   delete SystemTools::TranslationMap;
-   delete SystemTools::LongPathMap;
--#ifdef __CYGWIN__
--  delete SystemTools::Cyg2Win32Map;
--#endif
- }
- 
- 
---- cmake-2.8.10/Source/kwsys/SystemTools.hxx.in	2012-10-31 10:32:06.000000000 -0500
-+++ cmake-2.8.10/Source/kwsys/SystemTools.hxx.in	2013-03-16 23:10:30.185237900 -0500
-@@ -277,15 +277,6 @@ public:
-   static bool FileExists(const char* filename);
- 
-   /**
--   * Converts Cygwin path to Win32 path. Uses dictionary container for
--   * caching and calls to cygwin_conv_to_win32_path from Cygwin dll
--   * for actual translation.  Returns true on success, else false.
--   */
--#ifdef __CYGWIN__
--  static bool PathCygwinToWin32(const char *path, char *win32_path);
--#endif
--
--  /**
-    * Return file length
-    */
-   static unsigned long FileLength(const char *filename);
-@@ -887,9 +878,6 @@ private:
-    */
-   static SystemToolsTranslationMap *TranslationMap;
-   static SystemToolsTranslationMap *LongPathMap;
--#ifdef __CYGWIN__
--  static SystemToolsTranslationMap *Cyg2Win32Map;
--#endif
-   friend class SystemToolsManager;
- };
- 
diff --git a/pkgs/development/tools/build-managers/cmake/cmake_find_openssl_for_openssl-1.0.1m_and_up.patch b/pkgs/development/tools/build-managers/cmake/cmake_find_openssl_for_openssl-1.0.1m_and_up.patch
deleted file mode 100644
index 25bbd2a91ba..00000000000
--- a/pkgs/development/tools/build-managers/cmake/cmake_find_openssl_for_openssl-1.0.1m_and_up.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./Modules/FindOpenSSL.cmake
-+++ ./Modules/FindOpenSSL.cmake
-@@ -264,7 +264,7 @@
-     set(OPENSSL_VERSION "${_OPENSSL_VERSION}")
-   elseif(OPENSSL_INCLUDE_DIR AND EXISTS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h")
-     file(STRINGS "${OPENSSL_INCLUDE_DIR}/openssl/opensslv.h" openssl_version_str
--         REGEX "^#define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
-+         REGEX "^# *define[\t ]+OPENSSL_VERSION_NUMBER[\t ]+0x([0-9a-fA-F])+.*")
-
-     # The version number is encoded as 0xMNNFFPPS: major minor fix patch status
-     # The status gives if this is a developer or prerelease and is ignored here.
diff --git a/pkgs/development/tools/build-managers/gup/default.nix b/pkgs/development/tools/build-managers/gup/default.nix
index dc6f1f8d002..0f1ecdcaa54 100644
--- a/pkgs/development/tools/build-managers/gup/default.nix
+++ b/pkgs/development/tools/build-managers/gup/default.nix
@@ -1,10 +1,10 @@
 { stdenv, fetchgit, lib, python, which }:
 let
-  version = "0.5.1";
+  version = "0.5.3";
   src = fetchgit {
     url = "https://github.com/gfxmonk/gup.git";
-    rev = "f185052e2177ed5e46720e6c6cfb529b96cd17e2";
-    sha256 = "c2e27cdba2231017ceb4868f58f5c3b224be0491b81558b4e59bb08a952ad1a5";
+    rev = "55ffd8828ddc28a2a786b75422d672d6569f961f";
+    sha256 = "7c2abbf5d3814c6b84da0de1c91f9f7d299c2362cf091da96f6a68d8fffcb5ce";
   };
 in
 import ./build.nix
diff --git a/pkgs/development/tools/build-managers/icmake/default.nix b/pkgs/development/tools/build-managers/icmake/default.nix
index 08e6a3b6559..b3788d7f324 100644
--- a/pkgs/development/tools/build-managers/icmake/default.nix
+++ b/pkgs/development/tools/build-managers/icmake/default.nix
@@ -30,7 +30,6 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with stdenv.lib; {
-    inherit version;
     description = "A program maintenance (make) utility using a C-like grammar";
     homepage = https://fbb-git.github.io/icmake/;
     license = licenses.gpl3;
diff --git a/pkgs/development/tools/build-managers/rebar3/default.nix b/pkgs/development/tools/build-managers/rebar3/default.nix
index dccb67efaf4..35a5b1b4d40 100644
--- a/pkgs/development/tools/build-managers/rebar3/default.nix
+++ b/pkgs/development/tools/build-managers/rebar3/default.nix
@@ -1,5 +1,5 @@
 { stdenv, writeText, callPackage, fetchurl,
-  fetchHex, erlang, rebar3-nix-bootstrap, tree, fetchFromGitHub }:
+  fetchHex, erlang, hermeticRebar3 ? true, rebar3-nix-bootstrap, tree, fetchFromGitHub }:
 
 
 let
@@ -67,6 +67,12 @@ let
     version = "0.2.0";
     sha256 = "03kiszlbgzscfd2ns7na6bzbfzmcqdb5cx3p6qy3657jk2fai332";
   };
+  # {eunit_formatters,    "0.2.0"}
+  rebar3_hex = fetchHex {
+    pkg = "rebar3_hex";
+    version = "1.12.0";
+    sha256 = "45467e93ae8d776c6038fdaeaffbc55d8f2f097f300a54dab9b81c6d1cf21f73";
+  };
 
 in
 stdenv.mkDerivation {
@@ -78,7 +84,9 @@ stdenv.mkDerivation {
     sha256 = "0px66scjdia9aaa5z36qzxb848r56m0k98g0bxw065a2narsh4xy";
   };
 
-  patches = [ ./hermetic-bootstrap.patch ];
+  patches = if hermeticRebar3 == true
+  then  [ ./hermetic-bootstrap.patch ./hermetic-rebar3.patch ]
+  else [];
 
   buildInputs = [ erlang tree  ];
   propagatedBuildInputs = [ registrySnapshot rebar3-nix-bootstrap ];
@@ -88,6 +96,7 @@ stdenv.mkDerivation {
     rebar3-nix-bootstrap registry-only
     echo "$ERL_LIBS"
     mkdir -p _build/default/lib/
+    mkdir -p _build/default/plugins
     cp --no-preserve=mode -R ${erlware_commons} _build/default/lib/erlware_commons
     cp --no-preserve=mode -R ${providers} _build/default/lib/providers
     cp --no-preserve=mode -R ${getopt} _build/default/lib/getopt
@@ -98,6 +107,7 @@ stdenv.mkDerivation {
     cp --no-preserve=mode -R ${eunit_formatters} _build/default/lib/eunit_formatters
     cp --no-preserve=mode -R ${relx} _build/default/lib/relx
     cp --no-preserve=mode -R ${ssl_verify_hostname} _build/default/lib/ssl_verify_hostname
+    cp --no-preserve=mode -R ${rebar3_hex} _build/default/plugins/rebar3_hex
   '';
 
   buildPhase = ''
diff --git a/pkgs/development/tools/build-managers/rebar3/hermetic-rebar3.patch b/pkgs/development/tools/build-managers/rebar3/hermetic-rebar3.patch
new file mode 100644
index 00000000000..8da323ab823
--- /dev/null
+++ b/pkgs/development/tools/build-managers/rebar3/hermetic-rebar3.patch
@@ -0,0 +1,108 @@
+diff --git a/src/rebar3.erl b/src/rebar3.erl
+index 2b73844..af1d871 100644
+--- a/src/rebar3.erl
++++ b/src/rebar3.erl
+@@ -282,9 +282,11 @@ start_and_load_apps(Caller) ->
+     ensure_running(crypto, Caller),
+     ensure_running(asn1, Caller),
+     ensure_running(public_key, Caller),
+-    ensure_running(ssl, Caller),
+-    inets:start(),
+-    inets:start(httpc, [{profile, rebar}]).
++    ensure_running(ssl, Caller).
++%%    Removed due to the hermicity requirements of Nix
++%%
++%%    inets:start(),
++%%    inets:start(httpc, [{profile, rebar}]).
+ 
+ ensure_running(App, Caller) ->
+     case application:start(App) of
+@@ -339,4 +341,4 @@ safe_define_test_macro(Opts) ->
+ test_defined([{d, 'TEST'}|_]) -> true;
+ test_defined([{d, 'TEST', true}|_]) -> true;
+ test_defined([_|Rest]) -> test_defined(Rest);
+-test_defined([]) -> false.
+\ No newline at end of file
++test_defined([]) -> false.
+diff --git a/src/rebar_hermicity.erl b/src/rebar_hermicity.erl
+new file mode 100644
+index 0000000..d814e2a
+--- /dev/null
++++ b/src/rebar_hermicity.erl
+@@ -0,0 +1,42 @@
++%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
++%% ex: ts=4 sw=4 et
++%% -------------------------------------------------------------------
++%%
++%% rebar: Erlang Build Tools
++%%
++%% Copyright (c) 2016 Eric Merritt (eric@merritt.tech)
++%%
++%% Permission is hereby granted, free of charge, to any person obtaining a copy
++%% of this software and associated documentation files (the "Software"), to deal
++%% in the Software without restriction, including without limitation the rights
++%% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++%% copies of the Software, and to permit persons to whom the Software is
++%% furnished to do so, subject to the following conditions:
++%%
++%% The above copyright notice and this permission notice shall be included in
++%% all copies or substantial portions of the Software.
++%%
++%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
++%% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++%% THE SOFTWARE.
++%% -------------------------------------------------------------------
++-module(rebar_hermicity).
++
++-export([request/5]).
++
++-include("rebar.hrl").
++
++%% ====================================================================
++%% Public API
++%% ====================================================================
++
++request(Method, {Url, _Headers}, _HTTPOptions, _Options, _Profile) ->
++    ?ERROR("A request is being made that violates Nix hermicity "
++           "This request has been stopped. Details of the request "
++           "are as follows:", []),
++    ?ERROR("Requesnt: ~p ~s", [Method, Url]),
++    erlang:halt(1).
+diff --git a/src/rebar_pkg_resource.erl b/src/rebar_pkg_resource.erl
+index 4f55ad1..f76fd5d 100644
+--- a/src/rebar_pkg_resource.erl
++++ b/src/rebar_pkg_resource.erl
+@@ -100,10 +100,10 @@ make_vsn(_) ->
+     {error, "Replacing version of type pkg not supported."}.
+ 
+ request(Url, ETag) ->
+-    case httpc:request(get, {Url, [{"if-none-match", ETag} || ETag =/= false]},
+-                       [{ssl, ssl_opts(Url)}, {relaxed, true}],
+-                       [{body_format, binary}],
+-                       rebar) of
++    case rebar_hermicity:request(get, {Url, [{"if-none-match", ETag} || ETag =/= false]},
++                                 [{ssl, ssl_opts(Url)}, {relaxed, true}],
++                                 [{body_format, binary}],
++                                 rebar) of
+         {ok, {{_Version, 200, _Reason}, Headers, Body}} ->
+             ?DEBUG("Successfully downloaded ~s", [Url]),
+             {"etag", ETag1} = lists:keyfind("etag", 1, Headers),
+diff --git a/src/rebar_prv_update.erl b/src/rebar_prv_update.erl
+index 6637ebe..d82c1d8 100644
+--- a/src/rebar_prv_update.erl
++++ b/src/rebar_prv_update.erl
+@@ -44,8 +44,8 @@ do(State) ->
+         TmpFile = filename:join(TmpDir, "packages.gz"),
+ 
+         Url = rebar_state:get(State, rebar_packages_cdn, ?DEFAULT_HEX_REGISTRY),
+-        case httpc:request(get, {Url, []},
+-                           [], [{stream, TmpFile}, {sync, true}],
++        case rebar_hermicity:request(get, {Url, []},
++                                     [], [{stream, TmpFile}, {sync, true}],
+                            rebar) of
+             {ok, saved_to_file} ->
+                 {ok, Data} = file:read_file(TmpFile),
diff --git a/pkgs/development/tools/erlang/hex2nix/default.nix b/pkgs/development/tools/erlang/hex2nix/default.nix
index 8bb8f68e3a4..e7d237cfea2 100644
--- a/pkgs/development/tools/erlang/hex2nix/default.nix
+++ b/pkgs/development/tools/erlang/hex2nix/default.nix
@@ -2,13 +2,13 @@
 
 buildRebar3 rec {
     name = "hex2nix";
-    version = "0.0.2";
+    version = "0.0.3";
 
     src = fetchFromGitHub {
          owner = "erlang-nix";
          repo = "hex2nix";
          rev = "${version}";
-         sha256 = "18gkq5fkdiwq5zj98cz4kqxbpzjkpqcplpsw987drxwdbvq4hkwm";
+         sha256 = "1snlcb60al7fz3z4c4rqrb9gqdyihyhsrr90n40v9rdm98csry3k";
      };
 
     erlangDeps = [ ibrowse jsx erlware_commons getopt ];
diff --git a/pkgs/development/tools/erlang/rebar3-nix-bootstrap/default.nix b/pkgs/development/tools/erlang/rebar3-nix-bootstrap/default.nix
index b32d196272b..39ec59e849f 100644
--- a/pkgs/development/tools/erlang/rebar3-nix-bootstrap/default.nix
+++ b/pkgs/development/tools/erlang/rebar3-nix-bootstrap/default.nix
@@ -2,13 +2,13 @@
 
 stdenv.mkDerivation rec {
     name = "rebar3-nix-bootstrap";
-    version = "0.0.1";
+    version = "0.0.3";
 
     src = fetchFromGitHub {
         owner = "erlang-nix";
         repo = "rebar3-nix-bootstrap";
         rev = "${version}";
-        sha256 = "0xyj7j59dmxyl5nhhsmb0r1pihmk0s4k02ga1rfgm30rij6n7431";
+        sha256 = "01yyaz104jj3mxx8k10q3rwpn2rh13q1ja5r0iq37qyjmg8xflhq";
     };
 
     buildInputs = [ erlang ];
diff --git a/pkgs/development/tools/haskell/ihaskell/use-classy-prelude.patch b/pkgs/development/tools/haskell/ihaskell/use-classy-prelude.patch
deleted file mode 100644
index b2c1362b62f..00000000000
--- a/pkgs/development/tools/haskell/ihaskell/use-classy-prelude.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From fad4e38079e91b13bf1e94732b7494504071b224 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Edward=20Tj=C3=B6rnhammar?= <ed@cflags.cc>
-Date: Sun, 28 Sep 2014 09:27:40 +0200
-Subject: [PATCH] catMaybes, explicitly use ClassyPrelude
-
----
- src/IHaskell/Eval/Completion.hs | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/IHaskell/Eval/Completion.hs b/src/IHaskell/Eval/Completion.hs
-index 790c903..93d7ac1 100644
---- a/src/IHaskell/Eval/Completion.hs
-+++ b/src/IHaskell/Eval/Completion.hs
-@@ -141,7 +141,7 @@ getTrueModuleName name = do
-       onlyImportDecl _ = Nothing
- 
-   -- Get all imports that we use.
--  imports <- catMaybes <$> map onlyImportDecl <$> getContext
-+  imports <- ClassyPrelude.catMaybes <$> map onlyImportDecl <$> getContext
- 
-   -- Find the ones that have a qualified name attached.
-   -- If this name isn't one of them, it already is the true name.
-@@ -178,7 +178,7 @@ completionType line loc target
-     = Empty
- 
-   -- When in a string, complete filenames.
--  | cursorInString line loc 
-+  | cursorInString line loc
-     = FilePath (getStringTarget lineUpToCursor) (getStringTarget lineUpToCursor)
- 
-   -- Complete module names in imports and elsewhere.
--- 
-2.1.0
-
diff --git a/pkgs/development/tools/java/cfr/default.nix b/pkgs/development/tools/java/cfr/default.nix
index 3d42de4640e..46170341437 100644
--- a/pkgs/development/tools/java/cfr/default.nix
+++ b/pkgs/development/tools/java/cfr/default.nix
@@ -1,28 +1,14 @@
 { stdenv, fetchurl, jre }:
 
-let version = "0_101"; in
 stdenv.mkDerivation rec {
   name = "cfr-${version}";
+  version = "0_101";
 
   src = fetchurl {
     sha256 = "0zwl3whypdm2qrw3hwaqjnifkb4wcdn8fx9scrjkli54bhr6dqch";
     url = "http://www.benf.org/other/cfr/cfr_${version}.jar";
   };
 
-  meta = with stdenv.lib; {
-    inherit version;
-    description = "Another java decompiler";
-    longDescription = ''
-      CFR will decompile modern Java features - Java 8 lambdas (pre and post
-      Java beta 103 changes), Java 7 String switches etc, but is written
-      entirely in Java 6.
-    '';
-    homepage = http://www.benf.org/other/cfr/;
-    license = licenses.mit;
-    platforms = platforms.all;
-    maintainers = with maintainers; [ nckx ];
-  };
-
   buildInputs = [ jre ];
 
   phases = [ "installPhase" ];
@@ -38,4 +24,17 @@ stdenv.mkDerivation rec {
     EOF
     install -Dm755 cfr $out/bin/cfr
   '';
+
+  meta = with stdenv.lib; {
+    description = "Another java decompiler";
+    longDescription = ''
+      CFR will decompile modern Java features - Java 8 lambdas (pre and post
+      Java beta 103 changes), Java 7 String switches etc, but is written
+      entirely in Java 6.
+    '';
+    homepage = http://www.benf.org/other/cfr/;
+    license = licenses.mit;
+    platforms = platforms.all;
+    maintainers = with maintainers; [ nckx ];
+  };
 }
diff --git a/pkgs/development/tools/misc/bin_replace_string/default.nix b/pkgs/development/tools/misc/bin_replace_string/default.nix
index 82a07d60f9a..fda527ee905 100644
--- a/pkgs/development/tools/misc/bin_replace_string/default.nix
+++ b/pkgs/development/tools/misc/bin_replace_string/default.nix
@@ -1,16 +1,20 @@
 { stdenv, fetchurl, libelf, txt2man }:
 
-let version = "0.2"; in
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   name = "bin_replace_string-${version}";
+  version = "0.2";
 
   src = fetchurl {
     sha256 = "1gnpddxwpsfrg4l76x5yplsvbcdbviybciqpn22yq3g3qgnr5c2a";
     url = "ftp://ohnopub.net/mirror/bin_replace_string-0.2.tar.bz2";
   };
 
+  buildInputs = [ libelf ];
+  nativeBuildInputs = [ txt2man ];
+
+  enableParallelBuilding = true;
+
   meta = with stdenv.lib; {
-    inherit version;
     description = "Edit precompiled binaries";
     longDescription = ''
       bin_replace_string edits C-style strings in precompiled binaries. This is
@@ -25,9 +29,4 @@ stdenv.mkDerivation {
     platforms = platforms.linux;
     maintainers = with maintainers; [ nckx ];
   };
-
-  buildInputs = [ libelf ];
-  nativeBuildInputs = [ txt2man ];
-
-  enableParallelBuilding = true;
 }
diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix
index ceec956004f..8fcf0354d94 100644
--- a/pkgs/development/tools/misc/binutils/default.nix
+++ b/pkgs/development/tools/misc/binutils/default.nix
@@ -71,19 +71,17 @@ stdenv.mkDerivation rec {
 
   postFixup = optionalString (cross == null) "ln -s $out/bin $dev/bin"; # tools needed for development
 
-  meta = {
+  meta = with stdenv.lib; {
     description = "Tools for manipulating binaries (linker, assembler, etc.)";
-
     longDescription = ''
       The GNU Binutils are a collection of binary tools.  The main
       ones are `ld' (the GNU linker) and `as' (the GNU assembler).
       They also include the BFD (Binary File Descriptor) library,
       `gprof', `nm', `strip', etc.
     '';
-
     homepage = http://www.gnu.org/software/binutils/;
-
-    license = stdenv.lib.licenses.gpl3Plus;
+    license = licenses.gpl3Plus;
+    platforms = platforms.unix;
 
     /* Give binutils a lower priority than gcc-wrapper to prevent a
        collision due to the ld/as wrappers/symlinks in the latter. */
diff --git a/pkgs/development/tools/misc/ccache/default.nix b/pkgs/development/tools/misc/ccache/default.nix
index 29fe621d676..4a278e052fa 100644
--- a/pkgs/development/tools/misc/ccache/default.nix
+++ b/pkgs/development/tools/misc/ccache/default.nix
@@ -1,15 +1,11 @@
 { stdenv, fetchurl, fetchpatch, runCommand, gcc, zlib }:
 
-let
+let ccache = stdenv.mkDerivation rec {
   name = "ccache-${version}";
   version = "3.2.4";
-  sha256 = "0pga3hvd80f2p7mz88jmmbwzxh4vn5ihyjx5f6na8y2fclzsjg8w";
 
-  ccache =
-stdenv.mkDerivation {
-  inherit name;
   src = fetchurl {
-    inherit sha256;
+    sha256 = "0pga3hvd80f2p7mz88jmmbwzxh4vn5ihyjx5f6na8y2fclzsjg8w";
     url = "mirror://samba/ccache/${name}.tar.xz";
   };
 
@@ -65,7 +61,6 @@ stdenv.mkDerivation {
   };
 
   meta = with stdenv.lib; {
-    inherit version;
     description = "Compiler cache for fast recompilation of C/C++ code";
     homepage = http://ccache.samba.org/;
     downloadPage = https://ccache.samba.org/download.html;
@@ -73,5 +68,4 @@ stdenv.mkDerivation {
     maintainers = with maintainers; [ nckx ];
   };
 };
-in
-ccache
+in ccache
diff --git a/pkgs/development/tools/misc/ycmd/default.nix b/pkgs/development/tools/misc/ycmd/default.nix
new file mode 100644
index 00000000000..029e76e0c99
--- /dev/null
+++ b/pkgs/development/tools/misc/ycmd/default.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchgit, cmake, python, llvmPackages, boost, pythonPackages, buildPythonPackage, makeWrapper
+}:
+
+stdenv.mkDerivation rec {
+  name = "ycmd-2016-01-12";
+
+  src = fetchgit {
+    url = "git://github.com/Valloric/ycmd.git";
+    rev = "f982f6251c5ff85e3abe6e862aad8bcd19e85ece";
+    sha256 = "1qp3ip6ab34610rfy0x85xsjg7blfkiy025vskwk9zw6gqglf3b3";
+  };
+
+  buildInputs = [ python cmake llvmPackages.clang boost makeWrapper ];
+
+  propagatedBuildInputs = with pythonPackages; [ waitress frozendict bottle ];
+
+  buildPhase = ''
+    python build.py --clang-completer --system-libclang --system-boost
+  '';
+
+  configurePhase = ":";
+
+  installPhase = with pythonPackages; ''
+    mkdir -p $out/lib/ycmd/third_party $out/bin
+    cp -r ycmd/ CORE_VERSION libclang.so.* ycm_client_support.so ycm_core.so $out/lib/ycmd/
+    wrapProgram $out/lib/ycmd/ycmd/__main__.py \
+      --prefix PYTHONPATH : "$(toPythonPath ${waitress}):$(toPythonPath ${frozendict}):$(toPythonPath ${bottle})"
+    ln -s $out/lib/ycmd/ycmd/__main__.py $out/bin/ycmd
+  '';
+
+  meta = {
+    description = "A code-completion and comprehension server";
+    homepage = "https://github.com/Valloric/ycmd";
+    license = stdenv.lib.licenses.gpl3;
+    platforms = stdenv.lib.platforms.all;
+  };
+}
diff --git a/pkgs/development/tools/parsing/flexc++/default.nix b/pkgs/development/tools/parsing/flexc++/default.nix
index 3cfd86f477e..e1426b3a1d4 100644
--- a/pkgs/development/tools/parsing/flexc++/default.nix
+++ b/pkgs/development/tools/parsing/flexc++/default.nix
@@ -1,8 +1,8 @@
 { stdenv, fetchFromGitHub, bobcat, icmake, yodl }:
 
-let version = "2.03.00"; in
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   name = "flexc++-${version}";
+  version = "2.03.00";
 
   src = fetchFromGitHub {
     sha256 = "1knb5h6l71n5zi9xzml5f6v7wspbk7vrcaiy2div8bnj7na3z717";
@@ -11,20 +11,6 @@ stdenv.mkDerivation {
     owner = "fbb-git";
   };
 
-  meta = with stdenv.lib; {
-    inherit version;
-    description = "C++ tool for generating lexical scanners";
-    longDescription = ''
-      Flexc++ was designed after `flex'. Flexc++ offers a cleaner class design
-      and requires simpler specification files than offered by flex's C++
-      option.
-    '';
-    homepage = https://fbb-git.github.io/flexcpp/;
-    license = licenses.gpl3;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ nckx ];
-  };
-
   sourceRoot = "flexcpp-${version}-src/flexc++";
 
   buildInputs = [ bobcat ];
@@ -48,4 +34,17 @@ stdenv.mkDerivation {
     ./build install skel
     ./build install std
   '';
+
+  meta = with stdenv.lib; {
+    description = "C++ tool for generating lexical scanners";
+    longDescription = ''
+      Flexc++ was designed after `flex'. Flexc++ offers a cleaner class design
+      and requires simpler specification files than offered by flex's C++
+      option.
+    '';
+    homepage = https://fbb-git.github.io/flexcpp/;
+    license = licenses.gpl3;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ nckx ];
+  };
 }
diff --git a/pkgs/development/tools/parsing/lemon/default.nix b/pkgs/development/tools/parsing/lemon/default.nix
index 23d4ea911db..46aaa830512 100644
--- a/pkgs/development/tools/parsing/lemon/default.nix
+++ b/pkgs/development/tools/parsing/lemon/default.nix
@@ -2,8 +2,6 @@
 
 let
 
-  version = "1.0";
-
   srcs = {
     lemon = fetchurl {
       sha256 = "1grm95m2cnc61zim332g7z8nchmcy91ljf50k13lm421v0ygyyv6";
@@ -17,8 +15,9 @@ let
     };
   };
 
-in stdenv.mkDerivation {
+in stdenv.mkDerivation rec {
   name = "lemon-${version}";
+  version = "1.0";
 
   phases = [ "buildPhase" "installPhase" ];
 
@@ -32,7 +31,6 @@ in stdenv.mkDerivation {
   '';
 
   meta = with stdenv.lib; {
-    inherit version;
     description = "An LALR(1) parser generator";
     longDescription = ''
       The Lemon program is an LALR(1) parser generator that takes a
diff --git a/pkgs/development/tools/vagrant/default.nix b/pkgs/development/tools/vagrant/default.nix
index 7ab37737fdc..2284c25cf66 100644
--- a/pkgs/development/tools/vagrant/default.nix
+++ b/pkgs/development/tools/vagrant/default.nix
@@ -4,7 +4,7 @@
 assert stdenv.system == "x86_64-linux" || stdenv.system == "i686-linux";
 
 let
-  version = "1.8.0";
+  version = "1.8.1";
   rake = buildRubyGem {
     inherit ruby;
     gemName = "rake";
@@ -20,12 +20,12 @@ stdenv.mkDerivation rec {
     if stdenv.system == "x86_64-linux" then
       fetchurl {
         url    = "https://releases.hashicorp.com/vagrant/${version}/vagrant_${version}_x86_64.deb";
-        sha256 = "0hvi6db5lphgzsykm1wn76jj4wwmm6lshvvd0qz7ipyyyhnd7sjp";
+        sha256 = "0gb999ql4kfxd9473cx3xn6a11094dm4iyrx1dzd9v2sygh1l3pd";
       }
     else
       fetchurl {
         url    = "https://releases.hashicorp.com/vagrant/${version}/vagrant_${version}_i686.deb";
-        sha256 = "1jvscbxqbhavw4q81y5718qbyj74b9lwfw3gb4c1f4jmgm08wxxk";
+        sha256 = "1nzg6i9i270xgaih381q096lb23rwxkif4ba9j62y3zjmj6az4xf";
       };
 
   meta = with stdenv.lib; {
diff --git a/pkgs/development/tools/watchman/default.nix b/pkgs/development/tools/watchman/default.nix
index b2029391b74..2f02a7a4a1f 100644
--- a/pkgs/development/tools/watchman/default.nix
+++ b/pkgs/development/tools/watchman/default.nix
@@ -5,13 +5,13 @@
 stdenv.mkDerivation rec {
   name = "watchman-${version}";
 
-  version = "4.1.0";
+  version = "4.3.0";
 
   src = fetchFromGitHub {
     owner = "facebook";
     repo = "watchman";
     rev = "v${version}";
-    sha256 = "01ak2gsmc76baswpivzz00g22r547mpp8l7xfziwl5804nzszrcg";
+    sha256 = "0dcaklw4d42z8hndy9zsdqqv1q8r18wnwldgdgjvp5c9vijvgyrd";
   };
 
   buildInputs = [ autoconf automake pcre ];
@@ -20,6 +20,9 @@ stdenv.mkDerivation rec {
       "--enable-lenient"
       "--enable-conffile=${if confFile == null then "no" else confFile}"
       "--with-pcre=yes"
+
+      # For security considerations re: --disable-statedir, see:
+      # https://github.com/facebook/watchman/issues/178
       "--disable-statedir"
   ];