about summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2021-01-16 12:40:04 +0000
committerGitHub <noreply@github.com>2021-01-16 12:40:04 +0000
commit2445824f40799dd72f0120aa3f24b628c400cbf7 (patch)
treedf4036796da577ef099e39ebcc462f786a02c497 /pkgs/development
parentc435fdab0ae9d34d74da7d0f4bd9a1c48ff2e0e8 (diff)
parentafd7b550da9f0a000ac46a8821971f5cfd18e86a (diff)
downloadnixlib-2445824f40799dd72f0120aa3f24b628c400cbf7.tar
nixlib-2445824f40799dd72f0120aa3f24b628c400cbf7.tar.gz
nixlib-2445824f40799dd72f0120aa3f24b628c400cbf7.tar.bz2
nixlib-2445824f40799dd72f0120aa3f24b628c400cbf7.tar.lz
nixlib-2445824f40799dd72f0120aa3f24b628c400cbf7.tar.xz
nixlib-2445824f40799dd72f0120aa3f24b628c400cbf7.tar.zst
nixlib-2445824f40799dd72f0120aa3f24b628c400cbf7.zip
Merge master into staging-next
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/beam-modules/pc/default.nix2
-rw-r--r--pkgs/development/compilers/abcl/default.nix2
-rw-r--r--pkgs/development/compilers/clasp/default.nix2
-rw-r--r--pkgs/development/compilers/ghdl/default.nix16
-rw-r--r--pkgs/development/compilers/obliv-c/default.nix2
-rw-r--r--pkgs/development/compilers/prjxray-tools/default.nix29
-rw-r--r--pkgs/development/compilers/symbiflow-vtr/default.nix40
-rw-r--r--pkgs/development/compilers/symbiflow-yosys-plugins/default.nix37
-rw-r--r--pkgs/development/compilers/symbiflow-yosys/default.nix37
-rw-r--r--pkgs/development/compilers/yosys/default.nix30
-rw-r--r--pkgs/development/compilers/yosys/plugin-search-dirs.patch34
-rw-r--r--pkgs/development/compilers/yosys/plugins/bluespec.nix32
-rw-r--r--pkgs/development/compilers/yosys/plugins/ghdl.nix31
-rw-r--r--pkgs/development/compilers/yosys/setup-hook.sh5
-rw-r--r--pkgs/development/interpreters/icon-lang/default.nix2
-rw-r--r--pkgs/development/interpreters/rebol/default.nix2
-rw-r--r--pkgs/development/interpreters/unicon-lang/default.nix2
-rw-r--r--pkgs/development/libraries/arb/default.nix2
-rw-r--r--pkgs/development/libraries/cddlib/default.nix2
-rw-r--r--pkgs/development/libraries/dxflib/default.nix2
-rw-r--r--pkgs/development/libraries/eclib/default.nix2
-rw-r--r--pkgs/development/libraries/fflas-ffpack/default.nix2
-rw-r--r--pkgs/development/libraries/flint/default.nix2
-rw-r--r--pkgs/development/libraries/fplll/20160331.nix2
-rw-r--r--pkgs/development/libraries/fplll/default.nix2
-rw-r--r--pkgs/development/libraries/gf2x/default.nix2
-rw-r--r--pkgs/development/libraries/givaro/3.7.nix2
-rw-r--r--pkgs/development/libraries/givaro/3.nix2
-rw-r--r--pkgs/development/libraries/givaro/default.nix2
-rw-r--r--pkgs/development/libraries/gle/default.nix2
-rw-r--r--pkgs/development/libraries/qtinstaller/default.nix2
-rw-r--r--pkgs/development/libraries/tachyon/default.nix2
-rw-r--r--pkgs/development/lisp-modules/asdf/2.26.nix2
-rw-r--r--pkgs/development/lisp-modules/asdf/3.1.nix2
-rw-r--r--pkgs/development/lisp-modules/asdf/default.nix2
-rw-r--r--pkgs/development/lisp-modules/clwrapper/default.nix2
-rw-r--r--pkgs/development/lisp-modules/lisp-packages.nix2
-rw-r--r--pkgs/development/perl-modules/Percona-Toolkit/default.nix2
-rw-r--r--pkgs/development/python-modules/bc-python-hcl2/default.nix49
-rw-r--r--pkgs/development/python-modules/deep_merge/default.nix24
-rw-r--r--pkgs/development/python-modules/google-cloud-spanner/default.nix4
-rw-r--r--pkgs/development/python-modules/ipyvue/default.nix4
-rw-r--r--pkgs/development/python-modules/python-prjxray/default.nix44
-rw-r--r--pkgs/development/python-modules/spark_parser/default.nix2
-rw-r--r--pkgs/development/python-modules/symbiflow-fasm/default.nix27
-rw-r--r--pkgs/development/python-modules/textx/default.nix36
-rw-r--r--pkgs/development/python-modules/xc-fasm/default.nix45
-rw-r--r--pkgs/development/tools/analysis/checkov/default.nix77
-rw-r--r--pkgs/development/tools/parsing/tree-sitter/grammars/default.nix1
-rw-r--r--pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-c-sharp.json8
-rw-r--r--pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-nix.json10
-rw-r--r--pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-python.json8
-rw-r--r--pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-ruby.json8
-rw-r--r--pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-rust.json8
-rw-r--r--pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-typescript.json8
-rw-r--r--pkgs/development/tools/parsing/tree-sitter/update.nix4
56 files changed, 342 insertions, 372 deletions
diff --git a/pkgs/development/beam-modules/pc/default.nix b/pkgs/development/beam-modules/pc/default.nix
index d30b0fbdbd28..fac3b2988354 100644
--- a/pkgs/development/beam-modules/pc/default.nix
+++ b/pkgs/development/beam-modules/pc/default.nix
@@ -6,7 +6,7 @@ buildHex {
   sha256 = "0xq411ig5ny3iilkkkqa4vm3w3dgjc9cfzkqwk8pm13dw9mcm8h0";
 
   meta = {
-    description = ''a rebar3 port compiler for native code'';
+    description = "a rebar3 port compiler for native code";
     license = stdenv.lib.licenses.mit;
     homepage = "https://github.com/blt/port_compiler";
   };
diff --git a/pkgs/development/compilers/abcl/default.nix b/pkgs/development/compilers/abcl/default.nix
index 22f6ca7a0dd2..aa537169aaf8 100644
--- a/pkgs/development/compilers/abcl/default.nix
+++ b/pkgs/development/compilers/abcl/default.nix
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
   buildInputs = [jre ant jdk jre];
   meta = {
     inherit version;
-    description = ''A JVM-based Common Lisp implementation'';
+    description = "A JVM-based Common Lisp implementation";
     license = stdenv.lib.licenses.gpl3 ;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/compilers/clasp/default.nix b/pkgs/development/compilers/clasp/default.nix
index 664d84921135..b7da76d38f99 100644
--- a/pkgs/development/compilers/clasp/default.nix
+++ b/pkgs/development/compilers/clasp/default.nix
@@ -119,7 +119,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     inherit version;
-    description = ''A Common Lisp implementation based on LLVM with C++ integration'';
+    description = "A Common Lisp implementation based on LLVM with C++ integration";
     license = stdenv.lib.licenses.lgpl21Plus ;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/compilers/ghdl/default.nix b/pkgs/development/compilers/ghdl/default.nix
index 6d1fae337340..6181486f50c7 100644
--- a/pkgs/development/compilers/ghdl/default.nix
+++ b/pkgs/development/compilers/ghdl/default.nix
@@ -5,13 +5,15 @@ assert backend == "mcode" || backend == "llvm";
 
 stdenv.mkDerivation rec {
   pname = "ghdl-${backend}";
-  version = "0.37";
+  # NOTE(aseipp): move to 0.38 when it comes out, since it should support a stable
+  # version of the yosys plugin
+  version = "unstable-2021.01.14";
 
   src = fetchFromGitHub {
-    owner = "ghdl";
-    repo = "ghdl";
-    rev = "v${version}";
-    sha256 = "0b53yl4im33c1cd4mdyc4ks9cmrpixym17gzchfmplrl22w3l17y";
+    owner  = "ghdl";
+    repo   = "ghdl";
+    rev    = "4868294436574660552ccef50a5b0849559393de";
+    sha256 = "1wqjf0qc66dam1n2mskmlvj53bcsdwwk5rq9gimq6ah1vcwi222p";
   };
 
   LIBRARY_PATH = "${stdenv.cc.libc}/lib";
@@ -23,7 +25,7 @@ stdenv.mkDerivation rec {
     sed -i 's/check_version 7.0/check_version 7/g' configure
   '';
 
-  configureFlags = lib.optional (backend == "llvm")
+  configureFlags = [ "--enable-synth" ] ++ lib.optional (backend == "llvm")
     "--with-llvm-config=${llvm}/bin/llvm-config";
 
   hardeningDisable = [ "format" ];
@@ -33,7 +35,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/ghdl/ghdl";
     description = "VHDL 2008/93/87 simulator";
-    maintainers = with maintainers; [ lucus16 ];
+    maintainers = with maintainers; [ lucus16 thoughtpolice ];
     platforms = platforms.linux;
     license = licenses.gpl2;
   };
diff --git a/pkgs/development/compilers/obliv-c/default.nix b/pkgs/development/compilers/obliv-c/default.nix
index 8fd6f33740e4..cdd0cf375bc8 100644
--- a/pkgs/development/compilers/obliv-c/default.nix
+++ b/pkgs/development/compilers/obliv-c/default.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     inherit version;
-    description = ''A GCC wrapper that makes it easy to embed secure computation protocols inside regular C programs'';
+    description = "A GCC wrapper that makes it easy to embed secure computation protocols inside regular C programs";
     license = stdenv.lib.licenses.bsd3;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/compilers/prjxray-tools/default.nix b/pkgs/development/compilers/prjxray-tools/default.nix
deleted file mode 100644
index 652b5458a75e..000000000000
--- a/pkgs/development/compilers/prjxray-tools/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ stdenv
-, fetchFromGitHub
-, cmake
-}:
-
-stdenv.mkDerivation rec {
-  pname   = "prjxray-tools";
-  version = "0.1-2676-gac8d30e3";
-
-  src = fetchFromGitHub {
-    owner  = "SymbiFlow";
-    repo   = "prjxray";
-    fetchSubmodules = true;
-    rev    = "ac8d30e3fe2029122408888d2313844b3e0c265b";
-    sha256 = "1ag7dk12hdhip821crwinncp8vgyzs0r85l1h2vbgn61lnxc7f4h";
-  };
-
-  nativeBuildInputs = [ cmake ];
-
-  doCheck = true;
-
-  meta = with stdenv.lib; {
-    description = "Documenting the Xilinx 7-series bit-stream format";
-    homepage    = "https://github.com/SymbiFlow/prjxray";
-    license     = licenses.isc;
-    platforms   = platforms.all;
-    maintainers = with maintainers; [ mcaju ];
-  };
-}
diff --git a/pkgs/development/compilers/symbiflow-vtr/default.nix b/pkgs/development/compilers/symbiflow-vtr/default.nix
deleted file mode 100644
index 8735b12678c3..000000000000
--- a/pkgs/development/compilers/symbiflow-vtr/default.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ stdenv
-, fetchFromGitHub
-, bison
-, cmake
-, flex
-, pkg-config
-}:
-
-stdenv.mkDerivation rec {
-  pname   = "symbiflow-vtr";
-  version = "8.0.0.rc2-4003-g8980e4621";
-
-  src = fetchFromGitHub {
-    owner  = "SymbiFlow";
-    repo   = "vtr-verilog-to-routing";
-    rev    = "8980e46218542888fac879961b13aa7b0fba8432";
-    sha256 = "1sq7f1f3dzfm48a9vq5nvp0zllby0nasm3pvqab70f4jaq0m1aaa";
-  };
-
-  nativeBuildInputs = [
-    bison
-    cmake
-    flex
-    pkg-config
-  ];
-
-  cmakeFlags = [
-    "-DWITH_ODIN=OFF"
-    "-DWITH_ABC=OFF"
-  ];
-
-  doCheck = true;
-
-  meta = with stdenv.lib; {
-    description = "SymbiFlow WIP changes for Verilog to Routing (VTR)";
-    homepage    = "https://github.com/SymbiFlow/vtr-verilog-to-routing";
-    platforms   = platforms.all;
-    maintainers = with maintainers; [ mcaju ];
-  };
-}
diff --git a/pkgs/development/compilers/symbiflow-yosys-plugins/default.nix b/pkgs/development/compilers/symbiflow-yosys-plugins/default.nix
deleted file mode 100644
index b655f9d48733..000000000000
--- a/pkgs/development/compilers/symbiflow-yosys-plugins/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ stdenv
-, fetchFromGitHub
-, symbiflow-yosys
-, zlib
-, readline
-}:
-
-stdenv.mkDerivation rec {
-  pname   = "symbiflow-yosys-plugins";
-  version = "1.0.0.7-0060-g7454cd6b";
-
-  src = fetchFromGitHub {
-    owner  = "SymbiFlow";
-    repo   = "yosys-symbiflow-plugins";
-    rev    = "7454cd6b5e4fd22854e2ada219a5e3c3a06e0717";
-    sha256 = "0r9r31p7fy4ylfrwvwlbivq5a03xrph34blxbxzx2c8bc02mbv0s";
-  };
-
-  enableParallelBuilding = true;
-
-  nativeBuildInputs = [ symbiflow-yosys ];
-
-  buildInputs = [
-    readline
-    zlib
-  ];
-
-  makeFlags = [ "PLUGINS_DIR=${placeholder "out"}/share/yosys/plugins" ];
-
-  meta = with stdenv.lib; {
-    description = "Yosys SymbiFlow Plugins";
-    homepage    = "https://github.com/SymbiFlow/yosys-symbiflow-plugins";
-    license     = licenses.isc;
-    platforms   = platforms.all;
-    maintainers = with maintainers; [ mcaju ];
-  };
-}
diff --git a/pkgs/development/compilers/symbiflow-yosys/default.nix b/pkgs/development/compilers/symbiflow-yosys/default.nix
deleted file mode 100644
index b33003f312e4..000000000000
--- a/pkgs/development/compilers/symbiflow-yosys/default.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ stdenv
-, abc-verifier
-, fetchFromGitHub
-, yosys
-, plugins ? []
-}:
-
-let
-  localAbc-verifier = abc-verifier.overrideAttrs (_: rec {
-    pname = "abc-verifier";
-    version = "2020.06.22";
-
-    src = fetchFromGitHub {
-      owner  = "YosysHQ";
-      repo   = "abc";
-      rev    = "341db25668f3054c87aa3372c794e180f629af5d";
-      sha256 = "14cgv34vz5ljkcms6nrv19vqws2hs8bgjgffk5q03cbxnm2jxv5s";
-    };
-
-    passthru.rev = src.rev;
-  });
-in
-
-(yosys.overrideAttrs (oldAttrs: rec {
-  pname   = "symbiflow-yosys";
-  version = "0.9+2406";
-
-  src = fetchFromGitHub {
-    owner  = "SymbiFlow";
-    repo   = "yosys";
-    rev    = "d8b2d1a2b1a93057678cf49bb8f0329f191faba1";
-    sha256 = "1w8jnqzabvzixjllhb6ak2n2gmjvsn6qd996i7z70bsq5rgdkq9g";
-  };
-})).override {
-  abc-verifier = localAbc-verifier;
-  plugins = plugins;
-}
diff --git a/pkgs/development/compilers/yosys/default.nix b/pkgs/development/compilers/yosys/default.nix
index a83100911d13..7d2191f8f456 100644
--- a/pkgs/development/compilers/yosys/default.nix
+++ b/pkgs/development/compilers/yosys/default.nix
@@ -1,4 +1,4 @@
-{ stdenv
+{ stdenv, lib
 , abc-verifier
 , bash
 , bison
@@ -12,7 +12,6 @@
 , tcl
 , verilog
 , zlib
-, plugins ? []
 }:
 
 # NOTE: as of late 2020, yosys has switched to an automation robot that
@@ -33,8 +32,6 @@
 # ultimately less confusing than using dates.
 
 stdenv.mkDerivation rec {
-  inherit plugins;
-
   pname   = "yosys";
   version = "0.9+3830";
 
@@ -46,17 +43,21 @@ stdenv.mkDerivation rec {
   };
 
   enableParallelBuilding = true;
-  nativeBuildInputs = [ pkg-config protobuf flex bison python3 ];
+  nativeBuildInputs = [ pkg-config bison flex ];
   buildInputs = [ tcl readline libffi python3 protobuf zlib ];
 
   makeFlags = [ "ENABLE_PROTOBUF=1" "PREFIX=${placeholder "out"}"];
 
-  patchPhase = ''
+  patches = [
+    ./plugin-search-dirs.patch
+  ];
+
+  postPatch = ''
     substituteInPlace ./Makefile \
       --replace 'echo UNKNOWN' 'echo ${builtins.substring 0 10 src.rev}'
+
     chmod +x ./misc/yosys-config.in
-    patchShebangs ./misc/yosys-config.in
-    patchShebangs tests
+    patchShebangs tests ./misc/yosys-config.in
   '';
 
   preBuild = let
@@ -75,7 +76,7 @@ stdenv.mkDerivation rec {
     fi
 
     if ! grep -q "YOSYS_VER := $version" Makefile; then
-      echo "ERROR: yosys version in Makefile isn't equivalent to version of the nix package ($version), failing."
+      echo "ERROR: yosys version in Makefile isn't equivalent to version of the nix package (${version}), failing."
       exit 1
     fi
   '';
@@ -92,16 +93,11 @@ stdenv.mkDerivation rec {
   # add a symlink to fake things so that both variants work the same way. this
   # is also needed at build time for the test suite.
   postBuild   = "ln -sfv ${abc-verifier}/bin/abc ./yosys-abc";
-  postInstall = ''
-    ln -sfv ${abc-verifier}/bin/abc $out/bin/yosys-abc
+  postInstall = "ln -sfv ${abc-verifier}/bin/abc $out/bin/yosys-abc";
 
-    mkdir -p $out/share/yosys/plugins
-    for plugin in $plugins; do
-        ln -sfv $plugin/share/yosys/plugins/* $out/share/yosys/plugins/
-    done
-  '';
+  setupHook = ./setup-hook.sh;
 
-  meta = with stdenv.lib; {
+  meta = with lib; {
     description = "Open RTL synthesis framework and tools";
     homepage    = "http://www.clifford.at/yosys/";
     license     = licenses.isc;
diff --git a/pkgs/development/compilers/yosys/plugin-search-dirs.patch b/pkgs/development/compilers/yosys/plugin-search-dirs.patch
new file mode 100644
index 000000000000..0cb0aee9c7ed
--- /dev/null
+++ b/pkgs/development/compilers/yosys/plugin-search-dirs.patch
@@ -0,0 +1,34 @@
+diff --git a/passes/cmds/plugin.cc b/passes/cmds/plugin.cc
+index 3ed19497..f9534bd0 100644
+--- a/passes/cmds/plugin.cc
++++ b/passes/cmds/plugin.cc
+@@ -75,8 +75,27 @@ void load_plugin(std::string filename, std::vector<std::string> aliases)
+ 		#endif
+ 
+ 		void *hdl = dlopen(filename.c_str(), RTLD_LAZY|RTLD_LOCAL);
+-		if (hdl == NULL && orig_filename.find('/') == std::string::npos)
+-			hdl = dlopen((proc_share_dirname() + "plugins/" + orig_filename + ".so").c_str(), RTLD_LAZY|RTLD_LOCAL);
++		if (hdl == NULL && orig_filename.find('/') == std::string::npos) {
++			std::string install_dir = proc_share_dirname() + "plugins";
++
++			vector<string> all_dirs;
++			all_dirs.push_back(install_dir);
++
++			char* plugin_dirs = getenv("NIX_YOSYS_PLUGIN_DIRS");
++			if (plugin_dirs != NULL) {
++				std::string p(plugin_dirs), t;
++				std::stringstream ss(p);
++
++				while(std::getline(ss, t, ':')) {
++					all_dirs.push_back(t);
++				}
++			}
++
++			for (auto dir : all_dirs) {
++				hdl = dlopen((dir + "/" + orig_filename + ".so").c_str(), RTLD_LAZY|RTLD_LOCAL);
++				if (hdl != NULL) break;
++			}
++		}
+ 		if (hdl == NULL)
+ 			log_cmd_error("Can't load module `%s': %s\n", filename.c_str(), dlerror());
+ 		loaded_plugins[orig_filename] = hdl;
diff --git a/pkgs/development/compilers/yosys/plugins/bluespec.nix b/pkgs/development/compilers/yosys/plugins/bluespec.nix
new file mode 100644
index 000000000000..ea67ffc661cb
--- /dev/null
+++ b/pkgs/development/compilers/yosys/plugins/bluespec.nix
@@ -0,0 +1,32 @@
+{ stdenv, lib, fetchFromGitHub, pkg-config
+, yosys, readline, zlib, bluespec
+}:
+
+stdenv.mkDerivation {
+  pname = "yosys-bluespec";
+  version = "2021.01.14";
+
+  src = fetchFromGitHub {
+    owner  = "thoughtpolice";
+    repo   = "yosys-bluespec";
+    rev    = "7a0c609e9b601560067c34b8ce41e89ea4a397d4";
+    sha256 = "0xj9j5dwvq0dwqzfjd4ikmxkd28amj6d9m6ava7pwcrpjhyjnd0c";
+  };
+
+  buildInputs = [ yosys readline zlib bluespec ];
+  nativeBuildInputs = [ pkg-config ];
+
+  doCheck = true;
+  makeFlags = [
+    "PREFIX=$(out)/share/yosys/plugins"
+    "STATIC_BSC_PATH=${bluespec}/bin/bsc"
+    "STATIC_BSC_LIBDIR=${bluespec}/lib"
+  ];
+
+  meta = with lib; {
+    description = "Bluespec plugin for Yosys";
+    license     = licenses.isc;
+    platforms   = platforms.all;
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+}
diff --git a/pkgs/development/compilers/yosys/plugins/ghdl.nix b/pkgs/development/compilers/yosys/plugins/ghdl.nix
new file mode 100644
index 000000000000..ccf8efc7c805
--- /dev/null
+++ b/pkgs/development/compilers/yosys/plugins/ghdl.nix
@@ -0,0 +1,31 @@
+{ stdenv, lib, fetchFromGitHub, pkg-config
+, yosys, readline, zlib, ghdl
+}:
+
+stdenv.mkDerivation {
+  pname = "yosys-ghdl";
+  version = "2021.01.01";
+
+  src = fetchFromGitHub {
+    owner  = "ghdl";
+    repo   = "ghdl-yosys-plugin";
+    rev    = "8b3e740fef9a653a20a838f1ade475960e1d379b";
+    sha256 = "13kpcp37r11xgqd8aksddi40a5vpzqi7p8qgyjbs99lyscyli75x";
+  };
+
+  buildInputs = [ yosys readline zlib ghdl ];
+  nativeBuildInputs = [ pkg-config ];
+
+  doCheck = true;
+  installPhase = ''
+    mkdir -p $out/share/yosys/plugins
+    cp ghdl.so $out/share/yosys/plugins/ghdl.so
+  '';
+
+  meta = with lib; {
+    description = "GHDL plugin for Yosys";
+    license     = licenses.isc;
+    platforms   = platforms.all;
+    maintainers = with maintainers; [ thoughtpolice ];
+  };
+}
diff --git a/pkgs/development/compilers/yosys/setup-hook.sh b/pkgs/development/compilers/yosys/setup-hook.sh
new file mode 100644
index 000000000000..d01bbdd1a8c1
--- /dev/null
+++ b/pkgs/development/compilers/yosys/setup-hook.sh
@@ -0,0 +1,5 @@
+addYosysPluginPath() {
+  addToSearchPath NIX_YOSYS_PLUGIN_DIRS "$1/share/yosys/plugins"
+}
+
+addEnvHooks "$targetOffset" addYosysPluginPath
diff --git a/pkgs/development/interpreters/icon-lang/default.nix b/pkgs/development/interpreters/icon-lang/default.nix
index 02992e718718..30e260eee465 100644
--- a/pkgs/development/interpreters/icon-lang/default.nix
+++ b/pkgs/development/interpreters/icon-lang/default.nix
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with stdenv.lib; {
-    description = ''A very high level general-purpose programming language'';
+    description = "A very high level general-purpose programming language";
     maintainers = with maintainers; [ vrthra yurrriq ];
     platforms = with platforms; linux ++ darwin ++ freebsd ++ netbsd ++ openbsd ++ cygwin ++ illumos;
     license = licenses.publicDomain;
diff --git a/pkgs/development/interpreters/rebol/default.nix b/pkgs/development/interpreters/rebol/default.nix
index b26af7f0b1b7..4206e1e1604d 100644
--- a/pkgs/development/interpreters/rebol/default.nix
+++ b/pkgs/development/interpreters/rebol/default.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = with stdenv.lib; {
-    description = ''Relative expression based object language, a language where code is data'';
+    description = "Relative expression based object language, a language where code is data";
     maintainers = with maintainers; [ vrthra ];
     platforms = [ "x86_64-linux" ];
     license = licenses.asl20;
diff --git a/pkgs/development/interpreters/unicon-lang/default.nix b/pkgs/development/interpreters/unicon-lang/default.nix
index 9bdd31f400a8..4889a21ddfd4 100644
--- a/pkgs/development/interpreters/unicon-lang/default.nix
+++ b/pkgs/development/interpreters/unicon-lang/default.nix
@@ -34,7 +34,7 @@ stdenv.mkDerivation {
   '';
 
   meta = with stdenv.lib; {
-    description = ''A very high level, goal-directed, object-oriented, general purpose applications language'';
+    description = "A very high level, goal-directed, object-oriented, general purpose applications language";
     maintainers = with maintainers; [ vrthra ];
     platforms = platforms.linux;
     license = licenses.gpl2;
diff --git a/pkgs/development/libraries/arb/default.nix b/pkgs/development/libraries/arb/default.nix
index a9fb5de0bd9f..79a0df9a1035 100644
--- a/pkgs/development/libraries/arb/default.nix
+++ b/pkgs/development/libraries/arb/default.nix
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
   doCheck = true;
   meta = with stdenv.lib; {
     inherit version;
-    description = ''A library for arbitrary-precision interval arithmetic'';
+    description = "A library for arbitrary-precision interval arithmetic";
     homepage = "http://arblib.org/";
     license = stdenv.lib.licenses.lgpl21Plus;
     maintainers = teams.sage.members;
diff --git a/pkgs/development/libraries/cddlib/default.nix b/pkgs/development/libraries/cddlib/default.nix
index cebe6fb2bf6a..4b745a2a348c 100644
--- a/pkgs/development/libraries/cddlib/default.nix
+++ b/pkgs/development/libraries/cddlib/default.nix
@@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
   doCheck = true;
   meta = with stdenv.lib; {
     inherit version;
-    description = ''An implementation of the Double Description Method for generating all vertices of a convex polyhedron'';
+    description = "An implementation of the Double Description Method for generating all vertices of a convex polyhedron";
     license = licenses.gpl2Plus;
     maintainers = teams.sage.members;
     platforms = platforms.unix;
diff --git a/pkgs/development/libraries/dxflib/default.nix b/pkgs/development/libraries/dxflib/default.nix
index 1b63d8805fd9..f0f96273bea5 100644
--- a/pkgs/development/libraries/dxflib/default.nix
+++ b/pkgs/development/libraries/dxflib/default.nix
@@ -39,6 +39,6 @@ stdenv.mkDerivation rec {
   meta = {
     maintainers = with stdenv.lib.maintainers; [raskin];
     platforms = stdenv.lib.platforms.linux;
-    description = ''DXF file format library'';
+    description = "DXF file format library";
   };
 }
diff --git a/pkgs/development/libraries/eclib/default.nix b/pkgs/development/libraries/eclib/default.nix
index 9273fb7fd78e..278099b8ca72 100644
--- a/pkgs/development/libraries/eclib/default.nix
+++ b/pkgs/development/libraries/eclib/default.nix
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
   doCheck = true;
   meta = with stdenv.lib; {
     inherit version;
-    description = ''Elliptic curve tools'';
+    description = "Elliptic curve tools";
     homepage = "https://github.com/JohnCremona/eclib";
     license = licenses.gpl2Plus;
     maintainers = teams.sage.members;
diff --git a/pkgs/development/libraries/fflas-ffpack/default.nix b/pkgs/development/libraries/fflas-ffpack/default.nix
index faa8ed3c70e4..decea9bfb794 100644
--- a/pkgs/development/libraries/fflas-ffpack/default.nix
+++ b/pkgs/development/libraries/fflas-ffpack/default.nix
@@ -50,7 +50,7 @@ stdenv.mkDerivation rec {
 
   meta = with stdenv.lib; {
     inherit version;
-    description = ''Finite Field Linear Algebra Subroutines'';
+    description = "Finite Field Linear Algebra Subroutines";
     license = licenses.lgpl21Plus;
     maintainers = teams.sage.members;
     platforms = platforms.unix;
diff --git a/pkgs/development/libraries/flint/default.nix b/pkgs/development/libraries/flint/default.nix
index 3c768fc472c7..96c536984013 100644
--- a/pkgs/development/libraries/flint/default.nix
+++ b/pkgs/development/libraries/flint/default.nix
@@ -52,7 +52,7 @@ stdenv.mkDerivation rec {
   doCheck = true;
   meta = {
     inherit version;
-    description = ''Fast Library for Number Theory'';
+    description = "Fast Library for Number Theory";
     license = stdenv.lib.licenses.gpl2Plus;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.unix;
diff --git a/pkgs/development/libraries/fplll/20160331.nix b/pkgs/development/libraries/fplll/20160331.nix
index aabbfd14a78b..05a6a30a6ec6 100644
--- a/pkgs/development/libraries/fplll/20160331.nix
+++ b/pkgs/development/libraries/fplll/20160331.nix
@@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
   buildInputs = [gmp mpfr];
   meta = {
     inherit version;
-    description = ''Lattice algorithms using floating-point arithmetic'';
+    description = "Lattice algorithms using floating-point arithmetic";
     license = stdenv.lib.licenses.lgpl21Plus;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/libraries/fplll/default.nix b/pkgs/development/libraries/fplll/default.nix
index 82d56ea2af41..e15479bafcfa 100644
--- a/pkgs/development/libraries/fplll/default.nix
+++ b/pkgs/development/libraries/fplll/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with stdenv.lib; {
-    description = ''Lattice algorithms using floating-point arithmetic'';
+    description = "Lattice algorithms using floating-point arithmetic";
     changelog = [
       # Some release notes are added to the github tags, though they are not
       # always complete.
diff --git a/pkgs/development/libraries/gf2x/default.nix b/pkgs/development/libraries/gf2x/default.nix
index 14ea3021914a..3440697989ee 100644
--- a/pkgs/development/libraries/gf2x/default.nix
+++ b/pkgs/development/libraries/gf2x/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description = ''Routines for fast arithmetic in GF(2)[x]'';
+    description = "Routines for fast arithmetic in GF(2)[x]";
     homepage = "http://gf2x.gforge.inria.fr";
     license = licenses.gpl2Plus;
     maintainers = teams.sage.members;
diff --git a/pkgs/development/libraries/givaro/3.7.nix b/pkgs/development/libraries/givaro/3.7.nix
index debddc6723fb..1de84afe6213 100644
--- a/pkgs/development/libraries/givaro/3.7.nix
+++ b/pkgs/development/libraries/givaro/3.7.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
   buildInputs = [autoconf automake libtool gmpxx];
   meta = {
     inherit version;
-    description = ''A C++ library for arithmetic and algebraic computations'';
+    description = "A C++ library for arithmetic and algebraic computations";
     license = stdenv.lib.licenses.cecill-b;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/libraries/givaro/3.nix b/pkgs/development/libraries/givaro/3.nix
index efed0926bb32..fc9bb18988f4 100644
--- a/pkgs/development/libraries/givaro/3.nix
+++ b/pkgs/development/libraries/givaro/3.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
   buildInputs = [autoconf automake libtool gmpxx];
   meta = {
     inherit version;
-    description = ''A C++ library for arithmetic and algebraic computations'';
+    description = "A C++ library for arithmetic and algebraic computations";
     license = stdenv.lib.licenses.cecill-b;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/libraries/givaro/default.nix b/pkgs/development/libraries/givaro/default.nix
index 78b6b0882707..4da5a0cb75c1 100644
--- a/pkgs/development/libraries/givaro/default.nix
+++ b/pkgs/development/libraries/givaro/default.nix
@@ -37,7 +37,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     inherit version;
-    description = ''A C++ library for arithmetic and algebraic computations'';
+    description = "A C++ library for arithmetic and algebraic computations";
     license = stdenv.lib.licenses.cecill-b;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.unix;
diff --git a/pkgs/development/libraries/gle/default.nix b/pkgs/development/libraries/gle/default.nix
index d656473ba807..d0667b0f270e 100644
--- a/pkgs/development/libraries/gle/default.nix
+++ b/pkgs/development/libraries/gle/default.nix
@@ -10,7 +10,7 @@ stdenv.mkDerivation {
     sha256 = "09zs1di4dsssl9k322nzildvf41jwipbzhik9p43yb1bcfsp92nw";
   };
   meta = {
-    description = ''Tubing and extrusion library'';
+    description = "Tubing and extrusion library";
     license = stdenv.lib.licenses.gpl2 ;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/libraries/qtinstaller/default.nix b/pkgs/development/libraries/qtinstaller/default.nix
index 3c4c192bd4b9..91f853711066 100644
--- a/pkgs/development/libraries/qtinstaller/default.nix
+++ b/pkgs/development/libraries/qtinstaller/default.nix
@@ -40,7 +40,7 @@ stdenv.mkDerivation rec {
   '';
 
   meta = {
-    description = ''Qt installer framework'';
+    description = "Qt installer framework";
     inherit (qtbase.meta) platforms license homepage;
   };
 }
diff --git a/pkgs/development/libraries/tachyon/default.nix b/pkgs/development/libraries/tachyon/default.nix
index 20dc80b253d2..90aa62d946f5 100644
--- a/pkgs/development/libraries/tachyon/default.nix
+++ b/pkgs/development/libraries/tachyon/default.nix
@@ -66,7 +66,7 @@ stdenv.mkDerivation rec {
   '';
   meta = {
     inherit version;
-    description = ''A Parallel / Multiprocessor Ray Tracing System'';
+    description = "A Parallel / Multiprocessor Ray Tracing System";
     license = stdenv.lib.licenses.bsd3;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = with stdenv.lib.platforms; linux ++ cygwin ++ darwin;
diff --git a/pkgs/development/lisp-modules/asdf/2.26.nix b/pkgs/development/lisp-modules/asdf/2.26.nix
index 2afdf05546fe..41b971ebae28 100644
--- a/pkgs/development/lisp-modules/asdf/2.26.nix
+++ b/pkgs/development/lisp-modules/asdf/2.26.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation {
   '';
   meta = {
     inherit (s) version;
-    description = ''Standard software-system definition library for Common Lisp'';
+    description = "Standard software-system definition library for Common Lisp";
     license = stdenv.lib.licenses.mit ;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.linux;
diff --git a/pkgs/development/lisp-modules/asdf/3.1.nix b/pkgs/development/lisp-modules/asdf/3.1.nix
index 445295830b25..9149155fb2f2 100644
--- a/pkgs/development/lisp-modules/asdf/3.1.nix
+++ b/pkgs/development/lisp-modules/asdf/3.1.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation {
   '';
   meta = {
     inherit (s) version;
-    description = ''Standard software-system definition library for Common Lisp'';
+    description = "Standard software-system definition library for Common Lisp";
     license = stdenv.lib.licenses.mit ;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.unix;
diff --git a/pkgs/development/lisp-modules/asdf/default.nix b/pkgs/development/lisp-modules/asdf/default.nix
index 2b1b846d319e..579788194473 100644
--- a/pkgs/development/lisp-modules/asdf/default.nix
+++ b/pkgs/development/lisp-modules/asdf/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation {
   '';
   meta = {
     inherit (s) version;
-    description = ''Standard software-system definition library for Common Lisp'';
+    description = "Standard software-system definition library for Common Lisp";
     license = stdenv.lib.licenses.mit ;
     maintainers = [stdenv.lib.maintainers.raskin];
     platforms = stdenv.lib.platforms.unix;
diff --git a/pkgs/development/lisp-modules/clwrapper/default.nix b/pkgs/development/lisp-modules/clwrapper/default.nix
index 3cb8219e6874..821fe8920484 100644
--- a/pkgs/development/lisp-modules/clwrapper/default.nix
+++ b/pkgs/development/lisp-modules/clwrapper/default.nix
@@ -51,7 +51,7 @@ stdenv.mkDerivation {
   };
 
   meta = {
-    description = ''Script used to wrap Common Lisp implementations'';
+    description = "Script used to wrap Common Lisp implementations";
     maintainers = [stdenv.lib.maintainers.raskin];
   };
 }
diff --git a/pkgs/development/lisp-modules/lisp-packages.nix b/pkgs/development/lisp-modules/lisp-packages.nix
index f8338e48e19a..491597d760d7 100644
--- a/pkgs/development/lisp-modules/lisp-packages.nix
+++ b/pkgs/development/lisp-modules/lisp-packages.nix
@@ -85,7 +85,7 @@ let lispPackages = rec {
           buildSystems = [ "clx-truetype" ];
           parasites = [ "clx-truetype-test" ];
 
-          description = ''clx-truetype is pure common lisp solution for antialiased TrueType font rendering using CLX and XRender extension.'';
+          description = "clx-truetype is pure common lisp solution for antialiased TrueType font rendering using CLX and XRender extension.";
           deps = with pkgs.lispPackages; [
                   alexandria bordeaux-threads cl-aa cl-fad cl-paths cl-paths-ttf cl-store
                           cl-vectors clx trivial-features zpb-ttf
diff --git a/pkgs/development/perl-modules/Percona-Toolkit/default.nix b/pkgs/development/perl-modules/Percona-Toolkit/default.nix
index 85a11aaed46b..3c555ca37ab5 100644
--- a/pkgs/development/perl-modules/Percona-Toolkit/default.nix
+++ b/pkgs/development/perl-modules/Percona-Toolkit/default.nix
@@ -24,7 +24,7 @@ buildPerlPackage rec {
   '';
 
   meta = with lib; {
-    description = ''Collection of advanced command-line tools to perform a variety of MySQL and system tasks.'';
+    description = "Collection of advanced command-line tools to perform a variety of MySQL and system tasks.";
     homepage = "https://www.percona.com/software/database-tools/percona-toolkit";
     license = with licenses; [ gpl2 ];
     maintainers = with maintainers; [ izorkin ];
diff --git a/pkgs/development/python-modules/bc-python-hcl2/default.nix b/pkgs/development/python-modules/bc-python-hcl2/default.nix
new file mode 100644
index 000000000000..34eab21bf5d0
--- /dev/null
+++ b/pkgs/development/python-modules/bc-python-hcl2/default.nix
@@ -0,0 +1,49 @@
+{ lib, buildPythonPackage, fetchPypi, nose }:
+
+let
+  lark-parser = buildPythonPackage rec {
+    pname = "lark-parser";
+    version = "0.7.8";
+
+    src = fetchPypi {
+      inherit pname version;
+      sha256 = "JiFeuxV+b7LudDGapERbnzt+RW4mviFc4Z/aqpAcIKQ=";
+    };
+
+    doCheck = true;
+  };
+in
+buildPythonPackage rec {
+  pname = "bc-python-hcl2";
+  version = "0.3.11";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "VZhI1oJ2EDZGyz3iI6/KYvJq4BGafzR+rcSgHqlUDrA=";
+  };
+
+  # Nose is required during build process, so can not use `checkInputs`.
+  buildInputs = [
+    nose
+  ];
+
+  propagatedBuildInputs = [
+    lark-parser
+  ];
+
+  pythonImportsCheck = [ "hcl2" ];
+
+  meta = with lib; {
+    description = "A parser for HCL2 written in Python using Lark";
+    longDescription = ''
+    A parser for HCL2 written in Python using Lark.
+    This parser only supports HCL2 and isn't backwards compatible with HCL v1.
+    It can be used to parse any HCL2 config file such as Terraform.
+    '';
+    # Although this is the main homepage from PyPi but it is also a homepage
+    # of another PyPi package (python-hcl2). But these two are different.
+    homepage = "https://github.com/amplify-education/python-hcl2";
+    license = licenses.mit;
+    maintainers = [ maintainers.anhdle14 ];
+  };
+}
diff --git a/pkgs/development/python-modules/deep_merge/default.nix b/pkgs/development/python-modules/deep_merge/default.nix
new file mode 100644
index 000000000000..533bc6aa3477
--- /dev/null
+++ b/pkgs/development/python-modules/deep_merge/default.nix
@@ -0,0 +1,24 @@
+{ lib, buildPythonPackage, fetchPypi, pytestCheckHook, nose }:
+
+buildPythonPackage rec {
+  pname = "deep_merge";
+  version = "0.0.4";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "tUQV+Qk0xC4zQRTihky01OczWzStOW41rYYQyWBlpH4=";
+  };
+
+  checkInputs = [
+    nose
+  ];
+
+  doCheck = false;
+
+  meta = with lib; {
+    description = "This library contains a simple utility for deep-merging dictionaries and the data structures they contain";
+    homepage = "https://github.com/halfak/deep_merge";
+    license = licenses.mit;
+    maintainers = [ maintainers.anhdle14 ];
+  };
+}
diff --git a/pkgs/development/python-modules/google-cloud-spanner/default.nix b/pkgs/development/python-modules/google-cloud-spanner/default.nix
index c78f32847307..382476af0ca3 100644
--- a/pkgs/development/python-modules/google-cloud-spanner/default.nix
+++ b/pkgs/development/python-modules/google-cloud-spanner/default.nix
@@ -14,11 +14,11 @@
 
 buildPythonPackage rec {
   pname = "google-cloud-spanner";
-  version = "2.1.0";
+  version = "3.0.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "0mkkx6l3cbwfwng12zpisbv6m919fkhdb48xk24ayc19193bi86n";
+    sha256 = "060c53bc6f541660a2fe868fd83a695207d4e7b050e04fe103d1e77634b813c7";
   };
 
   postPatch = ''
diff --git a/pkgs/development/python-modules/ipyvue/default.nix b/pkgs/development/python-modules/ipyvue/default.nix
index 3941f08348a5..0ccb1b2a4e14 100644
--- a/pkgs/development/python-modules/ipyvue/default.nix
+++ b/pkgs/development/python-modules/ipyvue/default.nix
@@ -8,13 +8,13 @@
 
 buildPythonPackage rec {
   pname = "ipyvue";
-  version = "1.4.1";
+  version = "1.5.0";
 
   disabled = isPy27;
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "5b59cf92a1eb7fbef4f2d02be49ac562a721a6cf34f991ac963222cf4c8885a1";
+    sha256 = "e8549a7ac7dc45948a5f2735e17f97622313c7fea24ea3c1bd4a5ebf02bf5638";
   };
 
   propagatedBuildInputs = [ ipywidgets ];
diff --git a/pkgs/development/python-modules/python-prjxray/default.nix b/pkgs/development/python-modules/python-prjxray/default.nix
deleted file mode 100644
index 5b92311612b0..000000000000
--- a/pkgs/development/python-modules/python-prjxray/default.nix
+++ /dev/null
@@ -1,44 +0,0 @@
-{ stdenv
-, fetchFromGitHub
-, pkgs
-, buildPythonPackage
-, intervaltree
-, numpy
-, openpyxl
-, parse
-, progressbar
-, pyjson5
-, pyyaml
-, simplejson
-, symbiflow-fasm
-, textx
-}:
-
-buildPythonPackage rec {
-  pname = "python-prjxray";
-  version = pkgs.prjxray-tools.version;
-
-  src = pkgs.prjxray-tools.src;
-
-  propagatedBuildInputs = [
-    intervaltree
-    numpy
-    openpyxl
-    parse
-    progressbar
-    pyjson5
-    pyyaml
-    simplejson
-    symbiflow-fasm
-    textx
-  ];
-
-  doCheck = false;
-
-  meta = with stdenv.lib; {
-    description = "Documenting the Xilinx 7-series bit-stream format";
-    homepage    = "https://github.com/SymbiFlow/prjxray";
-    license     = licenses.isc;
-    maintainers = with maintainers; [ mcaju ];
-  };
-}
diff --git a/pkgs/development/python-modules/spark_parser/default.nix b/pkgs/development/python-modules/spark_parser/default.nix
index cfb641ddcfb5..ba927431f2c0 100644
--- a/pkgs/development/python-modules/spark_parser/default.nix
+++ b/pkgs/development/python-modules/spark_parser/default.nix
@@ -18,7 +18,7 @@ buildPythonPackage rec {
   propagatedBuildInputs = [ click ];
 
   meta = with lib; {
-    description = ''An Early-Algorithm Context-free grammar Parser'';
+    description = "An Early-Algorithm Context-free grammar Parser";
     homepage = "https://github.com/rocky/python-spark";
     license = licenses.mit;
     maintainers = with maintainers; [raskin];
diff --git a/pkgs/development/python-modules/symbiflow-fasm/default.nix b/pkgs/development/python-modules/symbiflow-fasm/default.nix
deleted file mode 100644
index 609987441ea6..000000000000
--- a/pkgs/development/python-modules/symbiflow-fasm/default.nix
+++ /dev/null
@@ -1,27 +0,0 @@
-{ stdenv
-, pkgs
-, fetchFromGitHub
-, buildPythonPackage
-, textx
-}:
-
-buildPythonPackage rec {
-  pname = "symbiflow-fasm";
-  version = "0.0.1-g4857dde";
-
-  src = fetchFromGitHub {
-    owner = "SymbiFlow";
-    repo = "fasm";
-    rev = "4857dde757edd88688c2faf808774d85bdbe3900";
-    sha256 = "1za7f8slf8wvp1mfbfc3vdv61115p49k0vwngs4db6ips1qg1435";
-  };
-
-  propagatedBuildInputs = [ textx ];
-
-  meta = with stdenv.lib; {
-    description = "FPGA Assembly (FASM) Parser and Generation library";
-    homepage = "https://github.com/SymbiFlow/fasm";
-    license = licenses.isc;
-    maintainers = with maintainers; [ mcaju ];
-  };
-}
diff --git a/pkgs/development/python-modules/textx/default.nix b/pkgs/development/python-modules/textx/default.nix
deleted file mode 100644
index 07c568b87d48..000000000000
--- a/pkgs/development/python-modules/textx/default.nix
+++ /dev/null
@@ -1,36 +0,0 @@
-{ stdenv
-, buildPythonPackage
-, fetchPypi
-, pytestCheckHook
-, arpeggio
-, click
-, jinja2
-}:
-
-buildPythonPackage rec {
-  pname = "textX";
-  version = "2.2.0";
-
-  src = fetchPypi {
-    inherit pname;
-    inherit version;
-    sha256 = "00mwd588ms96qp27m5vpjkzk30wfw53hnmv8y77slxca8lw9vq82";
-  };
-
-  checkInputs = [ pytestCheckHook ];
-
-  pytestFlagsArray = [ "tests/functional" ];
-
-  propagatedBuildInputs = [
-    arpeggio
-    click
-    jinja2
-  ];
-
-  meta = with stdenv.lib; {
-    description = "textX is a meta-language for building Domain-Specific Languages (DSLs) in Python";
-    homepage = "https://textx.github.io";
-    license = licenses.mit;
-    maintainers = with maintainers; [ mcaju ];
-  };
-}
diff --git a/pkgs/development/python-modules/xc-fasm/default.nix b/pkgs/development/python-modules/xc-fasm/default.nix
deleted file mode 100644
index bf00bb159010..000000000000
--- a/pkgs/development/python-modules/xc-fasm/default.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ stdenv
-, fetchFromGitHub
-, buildPythonPackage
-, pytestCheckHook
-, simplejson
-, intervaltree
-, python-prjxray
-, symbiflow-fasm
-, textx
-}:
-
-buildPythonPackage rec {
-  pname = "xc-fasm";
-  version = "0.0.1-g0ddd9516";
-
-  src = fetchFromGitHub {
-    owner = "SymbiFlow";
-    repo = "xc-fasm";
-    rev = "0ddd951602d47d5b95f2072f8aa751af5e81e577";
-    sha256 = "15bzw92sx99s0zldr48na4yhrnp7b90nxsd8ya6ag1pvvijp2al4";
-  };
-
-  propagatedBuildInputs = [
-    simplejson
-    intervaltree
-    python-prjxray
-    symbiflow-fasm
-    textx
-  ];
-
-  # Pip will check for and then install missing dependecies.
-  # Because some of them are installed from git, it will try
-  # to download them even if they're present in
-  # propagatedBuildInputs.
-  pipInstallFlags = [ "--no-deps" ];
-
-  checkInputs = [ pytestCheckHook ];
-
-  meta = with stdenv.lib; {
-    description = "XC FASM libraries";
-    homepage = "https://github.com/SymbiFlow/xc-fasm";
-    license = licenses.isc;
-    maintainers = with maintainers; [ mcaju ];
-  };
-}
diff --git a/pkgs/development/tools/analysis/checkov/default.nix b/pkgs/development/tools/analysis/checkov/default.nix
new file mode 100644
index 000000000000..6277b1d4239e
--- /dev/null
+++ b/pkgs/development/tools/analysis/checkov/default.nix
@@ -0,0 +1,77 @@
+{ stdenv, pkgs, lib, python3, fetchFromGitHub }:
+
+let
+  pname = "checkov";
+  version = "1.0.674";
+  src = fetchFromGitHub {
+    owner = "bridgecrewio";
+    repo = pname;
+    rev = version;
+    sha256 = "/S8ic5ZVxA2vd/rjRPX5gslbmnULL7BSx34vgWIsheQ=";
+  };
+
+  disabled = pkgs.python3Packages.pythonOlder "3.7";
+
+  # CheckOV only work with `dpath 1.5.0`
+  dpath = pkgs.python3Packages.buildPythonPackage rec {
+    pname = "dpath";
+    version = "1.5.0";
+
+    src = pkgs.python3Packages.fetchPypi {
+      inherit pname version;
+      sha256 = "SWYVtOqEI20Y4NKGEi3nSGmmDg+H4sfsZ4f/KGxINhs=";
+    };
+
+    doCheck = false;
+  };
+in
+python3.pkgs.buildPythonPackage rec {
+  inherit pname version disabled src;
+
+  nativeBuildInputs = with python3.pkgs; [ setuptools_scm ];
+
+  propagatedBuildInputs = with python3.pkgs; [
+    pytest
+    coverage
+    bandit
+    bc-python-hcl2
+    deep_merge
+    tabulate
+    colorama
+    termcolor
+    junit-xml
+    dpath
+    pyyaml
+    boto3
+    GitPython
+    six
+    jmespath
+    tqdm
+    update_checker
+    semantic-version
+    packaging
+  ];
+
+  # Both of these tests are pulling from external srouces (https://github.com/bridgecrewio/checkov/blob/f03a4204d291cf47e3753a02a9b8c8d805bbd1be/.github/workflows/build.yml)
+  preCheck = ''
+    rm -rf integration_tests/*
+    rm -rf tests/terraform/*
+  '';
+
+  # Wrap the executable so that the python packages are available
+  # it's just a shebang script which calls `python -m checkov "$@"`
+  postFixup = ''
+    wrapProgram $out/bin/checkov \
+      --set PYTHONPATH $PYTHONPATH
+  '';
+
+  meta = with lib; {
+    homepage = "https://github.com/bridgecrewio/checkov";
+    description = "Static code analysis tool for infrastructure-as-code";
+    longDescription = ''
+    Prevent cloud misconfigurations during build-time for Terraform, Cloudformation, Kubernetes, Serverless framework and other infrastructure-as-code-languages with Checkov by Bridgecrew.
+    '';
+    license = licenses.asl20;
+    maintainers = with maintainers; [ anhdle14 ];
+  };
+}
diff --git a/pkgs/development/tools/parsing/tree-sitter/grammars/default.nix b/pkgs/development/tools/parsing/tree-sitter/grammars/default.nix
index e1648b84be5e..6d8c9237bd0f 100644
--- a/pkgs/development/tools/parsing/tree-sitter/grammars/default.nix
+++ b/pkgs/development/tools/parsing/tree-sitter/grammars/default.nix
@@ -16,6 +16,7 @@
   tree-sitter-json = (builtins.fromJSON (builtins.readFile ./tree-sitter-json.json));
   tree-sitter-julia = (builtins.fromJSON (builtins.readFile ./tree-sitter-julia.json));
   tree-sitter-lua = (builtins.fromJSON (builtins.readFile ./tree-sitter-lua.json));
+  tree-sitter-nix = (builtins.fromJSON (builtins.readFile ./tree-sitter-nix.json));
   tree-sitter-ocaml = (builtins.fromJSON (builtins.readFile ./tree-sitter-ocaml.json));
   tree-sitter-php = (builtins.fromJSON (builtins.readFile ./tree-sitter-php.json));
   tree-sitter-python = (builtins.fromJSON (builtins.readFile ./tree-sitter-python.json));
diff --git a/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-c-sharp.json b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-c-sharp.json
index 6498e40497eb..81ccf5a84726 100644
--- a/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-c-sharp.json
+++ b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-c-sharp.json
@@ -1,9 +1,9 @@
 {
   "url": "https://github.com/tree-sitter/tree-sitter-c-sharp",
-  "rev": "b8bff2a389ecc098dbb7e8abee492816a5eb42db",
-  "date": "2020-11-15T07:54:17+00:00",
-  "path": "/nix/store/h5p71g661hbyzcdcj6xff8y5pcsivpa4-tree-sitter-c-sharp",
-  "sha256": "0x78s2wgd8b6pwjzbmc9fgp0ivdmxv39wikig1m55slai6yq51wh",
+  "rev": "aae8ab2b681082ce7a35d8d5fdf75ffcf7f994e5",
+  "date": "2021-01-08T13:18:05+00:00",
+  "path": "/nix/store/fpx44l1j2dz3drnvfb7746d8zxn37gwi-tree-sitter-c-sharp",
+  "sha256": "107bxz9bhyixdla3xli06ism8rnkha7pa79hi7lyx00sfnjmgcc8",
   "fetchSubmodules": false,
   "deepClone": false,
   "leaveDotGit": false
diff --git a/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-nix.json b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-nix.json
new file mode 100644
index 000000000000..6d055ca0ae93
--- /dev/null
+++ b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-nix.json
@@ -0,0 +1,10 @@
+{
+  "url": "https://github.com/cstrahan/tree-sitter-nix",
+  "rev": "791b5ff0e4f0da358cbb941788b78d436a2ca621",
+  "date": "2019-05-10T15:57:43-05:00",
+  "path": "/nix/store/5gcddcxf6jfr4f0p203jnbjc0zxk207d-tree-sitter-nix",
+  "sha256": "1y5b3wh3fcmbgq8r2i97likzfp1zp02m58zacw5a1cjqs5raqz66",
+  "fetchSubmodules": false,
+  "deepClone": false,
+  "leaveDotGit": false
+}
diff --git a/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-python.json b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-python.json
index 86551acbee09..ff60ff80101e 100644
--- a/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-python.json
+++ b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-python.json
@@ -1,9 +1,9 @@
 {
   "url": "https://github.com/tree-sitter/tree-sitter-python",
-  "rev": "65b486b42fe0188e4be344092151042bf1bc6d9a",
-  "date": "2020-12-15T09:33:20-08:00",
-  "path": "/nix/store/k9jziqzyxq2bv55pwl03jcmmca83fjyp-tree-sitter-python",
-  "sha256": "1yxqdlmp0jybm7vvza1ni5a320vrviqkd14pnpcrg9ilzq23mlsh",
+  "rev": "f568dfabf7c4611077467a9cd13297fa0658abb6",
+  "date": "2021-01-06T13:32:39-08:00",
+  "path": "/nix/store/5g256n8ym3ll2kp9jlmnkaxpnyf6rpk3-tree-sitter-python",
+  "sha256": "1lxmzrkw4k9pba4xywnbd1pk2x5s99qa4skgqvgy3imgbhy7ilkh",
   "fetchSubmodules": false,
   "deepClone": false,
   "leaveDotGit": false
diff --git a/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-ruby.json b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-ruby.json
index 027478e99f88..d5a1767a23ce 100644
--- a/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-ruby.json
+++ b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-ruby.json
@@ -1,9 +1,9 @@
 {
   "url": "https://github.com/tree-sitter/tree-sitter-ruby",
-  "rev": "bb572f60e9538bd11fbde95a54f97522073f1e06",
-  "date": "2020-12-20T12:25:50-08:00",
-  "path": "/nix/store/hkjgvxh8l4drk1z4zkhmd0wcj876x5y1-tree-sitter-ruby",
-  "sha256": "198sfmrb3mxvpfmlwmwfmb3qs075ih0bjmr0ffrdy4nqm4a00cb8",
+  "rev": "f86d90cce578e28c824afdcdbdca7d031b88c0b0",
+  "date": "2020-11-02T20:49:49-08:00",
+  "path": "/nix/store/gs0hhb1dlgmv0y60zyyz7ki30yvpddfx-tree-sitter-ruby",
+  "sha256": "1n1irdjfmv27p5ia2vqzv8zfsq19pxi0as0wrkb7z7s1lqr1gwrb",
   "fetchSubmodules": false,
   "deepClone": false,
   "leaveDotGit": false
diff --git a/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-rust.json b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-rust.json
index 38c9e44f2f6a..c02d03d11d94 100644
--- a/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-rust.json
+++ b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-rust.json
@@ -1,9 +1,9 @@
 {
   "url": "https://github.com/tree-sitter/tree-sitter-rust",
-  "rev": "8746bd4b584b8063ee8e445bf31015e887417d33",
-  "date": "2020-11-23T17:16:42-08:00",
-  "path": "/nix/store/1zzxvza23wsdyazw47lhjvrs0za6wjpn-tree-sitter-rust",
-  "sha256": "0bhxfyq8ycnp90pqvr6cf3gpq1vax8a34kaq85dmbrc6ar8a7ap6",
+  "rev": "2beedf23bedbd7b02b416518693e8eed3944d4a0",
+  "date": "2021-01-05T10:00:48-08:00",
+  "path": "/nix/store/2igv1zlnl535b86zj8s9s3ir4q85933x-tree-sitter-rust",
+  "sha256": "0iicwhxf1f56zqpsagbm8nr30fpssi970mi9i47az206dbs506ly",
   "fetchSubmodules": false,
   "deepClone": false,
   "leaveDotGit": false
diff --git a/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-typescript.json b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-typescript.json
index a875232eab6d..fda72fc99c6e 100644
--- a/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-typescript.json
+++ b/pkgs/development/tools/parsing/tree-sitter/grammars/tree-sitter-typescript.json
@@ -1,9 +1,9 @@
 {
   "url": "https://github.com/tree-sitter/tree-sitter-typescript",
-  "rev": "a3a4becef889692724bb1c2191f8fc4bce6573f9",
-  "date": "2020-12-15T13:34:55-08:00",
-  "path": "/nix/store/dra5wbhgxkkhphm1mhgv87hsfw0g18nw-tree-sitter-typescript",
-  "sha256": "0ir7lmzwnbf1zwbl4bfsib1jilg8pvfc1nabaq2n2rixvghlvf3d",
+  "rev": "2d1c7d5c10c33cb444d1781fa76f2936810afec4",
+  "date": "2021-01-07T09:49:56-08:00",
+  "path": "/nix/store/s65bv25523lwa9yrqbj9hsh0k4ig6pbx-tree-sitter-typescript",
+  "sha256": "09bv44n181az5rqjd43wngj9bghwy0237gpvs6xkjf9j19kvy0yi",
   "fetchSubmodules": false,
   "deepClone": false,
   "leaveDotGit": false
diff --git a/pkgs/development/tools/parsing/tree-sitter/update.nix b/pkgs/development/tools/parsing/tree-sitter/update.nix
index 7b0b16b403f4..631944cb67a0 100644
--- a/pkgs/development/tools/parsing/tree-sitter/update.nix
+++ b/pkgs/development/tools/parsing/tree-sitter/update.nix
@@ -63,6 +63,10 @@ let
   # If you need a grammar that already exists in the official orga,
   # make sure to give it a different name.
   otherGrammars = {
+    "tree-sitter-nix" = {
+      orga = "cstrahan";
+      repo = "tree-sitter-nix";
+    };
     "tree-sitter-lua" = {
       orga = "nvim-treesitter";
       repo = "tree-sitter-lua";