about summary refs log tree commit diff
diff options
context:
space:
mode:
authorgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>2021-01-15 01:16:33 +0000
committerGitHub <noreply@github.com>2021-01-15 01:16:33 +0000
commit9f69dadafd02400c157f7faf5f594a023b0009ac (patch)
tree0539212faf4329874a592ab9e05673821ba009ff
parent183b673b64a8ab9a56b00fa79b0a82c68c93c7cc (diff)
parent5525440dd68cc21d123b0c13fe511966080d24bb (diff)
downloadnixlib-9f69dadafd02400c157f7faf5f594a023b0009ac.tar
nixlib-9f69dadafd02400c157f7faf5f594a023b0009ac.tar.gz
nixlib-9f69dadafd02400c157f7faf5f594a023b0009ac.tar.bz2
nixlib-9f69dadafd02400c157f7faf5f594a023b0009ac.tar.lz
nixlib-9f69dadafd02400c157f7faf5f594a023b0009ac.tar.xz
nixlib-9f69dadafd02400c157f7faf5f594a023b0009ac.tar.zst
nixlib-9f69dadafd02400c157f7faf5f594a023b0009ac.zip
Merge master into staging-next
-rw-r--r--.github/CONTRIBUTING.md1
-rw-r--r--nixos/modules/services/databases/firebird.nix3
-rw-r--r--nixos/modules/services/databases/memcached.nix15
-rw-r--r--nixos/modules/services/databases/mongodb.nix7
-rw-r--r--nixos/modules/services/databases/redis.nix21
-rw-r--r--nixos/modules/services/databases/virtuoso.nix5
-rw-r--r--nixos/modules/services/misc/gitea.nix2
-rw-r--r--nixos/modules/services/misc/gitlab.nix8
-rw-r--r--nixos/modules/services/misc/gitolite.nix2
-rw-r--r--nixos/modules/services/misc/redmine.nix4
-rw-r--r--nixos/modules/system/boot/tmp.nix1
-rw-r--r--nixos/tests/git/hub.nix4
-rw-r--r--nixos/tests/zfs.nix2
-rw-r--r--pkgs/applications/editors/spacevim/default.nix4
-rwxr-xr-xpkgs/applications/networking/browsers/chromium/update.py26
-rw-r--r--pkgs/applications/networking/browsers/chromium/upstream-info.json6
-rw-r--r--pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix6
-rw-r--r--pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/default.nix2
-rw-r--r--pkgs/applications/version-management/git-and-tools/default.nix270
-rw-r--r--pkgs/applications/version-management/git-and-tools/git-fame/default.nix2
-rw-r--r--pkgs/development/libraries/hdf5-blosc/blosc_filter.pc.in13
-rw-r--r--pkgs/development/libraries/hdf5-blosc/default.nix39
-rw-r--r--pkgs/development/libraries/hdf5-blosc/no-external-blosc.patch26
-rw-r--r--pkgs/development/libraries/quickfix/default.nix43
-rw-r--r--pkgs/development/libraries/quickfix/disableUnitTests.patch65
-rw-r--r--pkgs/development/python-modules/gps3/default.nix27
-rw-r--r--pkgs/development/python-modules/json-schema-for-humans/default.nix14
-rw-r--r--pkgs/development/python-modules/pyhaversion/default.nix4
-rw-r--r--pkgs/development/python-modules/waterfurnace/default.nix43
-rw-r--r--pkgs/development/tools/misc/hydra/common.nix6
-rw-r--r--pkgs/development/tools/misc/remarkable/remarkable2-toolchain/default.nix39
-rw-r--r--pkgs/development/tools/unityhub/default.nix2
-rw-r--r--pkgs/misc/emulators/wine/sources.nix18
-rw-r--r--pkgs/os-specific/linux/target-isns/default.nix36
-rw-r--r--pkgs/os-specific/linux/target-isns/install_prefix_path.patch17
-rw-r--r--pkgs/servers/home-assistant/component-packages.nix6
-rw-r--r--pkgs/servers/home-assistant/default.nix4
-rw-r--r--pkgs/servers/matrix-synapse/default.nix4
-rw-r--r--pkgs/servers/monitoring/grafana/default.nix8
-rw-r--r--pkgs/shells/zsh/zsh-powerlevel10k/default.nix2
-rw-r--r--pkgs/tools/misc/bat-extras/default.nix4
-rw-r--r--pkgs/tools/misc/plantuml/default.nix6
-rw-r--r--pkgs/tools/system/gdu/default.nix6
-rw-r--r--pkgs/tools/system/inxi/default.nix4
-rw-r--r--pkgs/top-level/aliases.nix10
-rw-r--r--pkgs/top-level/all-packages.nix262
-rw-r--r--pkgs/top-level/python-packages.nix6
47 files changed, 742 insertions, 363 deletions
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 8ec9d535332d..31060040c1a7 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -57,6 +57,7 @@ Follow these steps to backport a change into a release branch in compliance with
 3. Create a branch for your change, e.g. `git checkout -b backport`.
 4. When the reason to backport is not obvious from the original commit message, use `git cherry-pick -xe <original commit>` and add a reason. Otherwise use `git cherry-pick -x <original commit>`. That's fine for minor version updates that only include security and bug fixes, commits that fixes an otherwise broken package or similar. Please also ensure the commits exists on the master branch; in the case of squashed or rebased merges, the commit hash will change and the new commits can be found in the merge message at the bottom of the master pull request.
 5. Push to GitHub and open a backport pull request. Make sure to select the release branch (e.g. `release-20.09`) as the target branch of the pull request, and link to the pull request in which the original change was comitted to `master`. The pull request title should be the commit title with the release version as prefix, e.g. `[20.09]`.
+6. When the backport pull request is merged and you have the necessary privileges you can also replace the label `9.needs: port to stable` with `8.has: port to stable` on the original pull request. This way maintainers can keep track of missing backports easier.
 
 ## Reviewing contributions
 
diff --git a/nixos/modules/services/databases/firebird.nix b/nixos/modules/services/databases/firebird.nix
index 95837aa1cea6..36dbb87f7303 100644
--- a/nixos/modules/services/databases/firebird.nix
+++ b/nixos/modules/services/databases/firebird.nix
@@ -59,6 +59,7 @@ in
 
       port = mkOption {
         default = "3050";
+        type = types.port;
         description = ''
           Port Firebird uses.
         '';
@@ -66,6 +67,7 @@ in
 
       user = mkOption {
         default = "firebird";
+        type = types.str;
         description = ''
           User account under which firebird runs.
         '';
@@ -73,6 +75,7 @@ in
 
       baseDir = mkOption {
         default = "/var/db/firebird"; # ubuntu is using /var/lib/firebird/2.1/data/.. ?
+        type = types.str;
         description = ''
           Location containing data/ and system/ directories.
           data/ stores the databases, system/ stores the password database security2.fdb.
diff --git a/nixos/modules/services/databases/memcached.nix b/nixos/modules/services/databases/memcached.nix
index f54bb6cc9b18..ca7b20eb049a 100644
--- a/nixos/modules/services/databases/memcached.nix
+++ b/nixos/modules/services/databases/memcached.nix
@@ -17,39 +17,44 @@ in
   options = {
 
     services.memcached = {
-
       enable = mkEnableOption "Memcached";
 
       user = mkOption {
+        type = types.str;
         default = "memcached";
         description = "The user to run Memcached as";
       };
 
       listen = mkOption {
+        type = types.str;
         default = "127.0.0.1";
-        description = "The IP address to bind to";
+        description = "The IP address to bind to.";
       };
 
       port = mkOption {
+        type = types.port;
         default = 11211;
-        description = "The port to bind to";
+        description = "The port to bind to.";
       };
 
       enableUnixSocket = mkEnableOption "unix socket at /run/memcached/memcached.sock";
 
       maxMemory = mkOption {
+        type = types.ints.unsigned;
         default = 64;
         description = "The maximum amount of memory to use for storage, in megabytes.";
       };
 
       maxConnections = mkOption {
+        type = types.ints.unsigned;
         default = 1024;
-        description = "The maximum number of simultaneous connections";
+        description = "The maximum number of simultaneous connections.";
       };
 
       extraOptions = mkOption {
+        type = types.listOf types.str;
         default = [];
-        description = "A list of extra options that will be added as a suffix when running memcached";
+        description = "A list of extra options that will be added as a suffix when running memcached.";
       };
     };
 
diff --git a/nixos/modules/services/databases/mongodb.nix b/nixos/modules/services/databases/mongodb.nix
index 4af0b9d44e13..db1e5fedf50d 100644
--- a/nixos/modules/services/databases/mongodb.nix
+++ b/nixos/modules/services/databases/mongodb.nix
@@ -41,16 +41,19 @@ in
       };
 
       user = mkOption {
+        type = types.str;
         default = "mongodb";
         description = "User account under which MongoDB runs";
       };
 
       bind_ip = mkOption {
+        type = types.str;
         default = "127.0.0.1";
         description = "IP to bind to";
       };
 
       quiet = mkOption {
+        type = types.bool;
         default = false;
         description = "quieter output";
       };
@@ -68,16 +71,19 @@ in
       };
 
       dbpath = mkOption {
+        type = types.str;
         default = "/var/db/mongodb";
         description = "Location where MongoDB stores its files";
       };
 
       pidFile = mkOption {
+        type = types.str;
         default = "/run/mongodb.pid";
         description = "Location of MongoDB pid file";
       };
 
       replSetName = mkOption {
+        type = types.str;
         default = "";
         description = ''
           If this instance is part of a replica set, set its name here.
@@ -86,6 +92,7 @@ in
       };
 
       extraConfig = mkOption {
+        type = types.lines;
         default = "";
         example = ''
           storage.journal.enabled: false
diff --git a/nixos/modules/services/databases/redis.nix b/nixos/modules/services/databases/redis.nix
index 9628d30e76a3..1b90e59b1663 100644
--- a/nixos/modules/services/databases/redis.nix
+++ b/nixos/modules/services/databases/redis.nix
@@ -122,12 +122,29 @@ in
       };
 
       slaveOf = mkOption {
-        default = null; # { ip, port }
-        description = "An attribute set with two attributes: ip and port to which this redis instance acts as a slave.";
+        type = with types; nullOr (submodule ({ ... }: {
+          options = {
+            ip = mkOption {
+              type = str;
+              description = "IP of the Redis master";
+              example = "192.168.1.100";
+            };
+
+            port = mkOption {
+              type = port;
+              description = "port of the Redis master";
+              default = 6379;
+            };
+          };
+        }));
+
+        default = null;
+        description = "IP and port to which this redis instance acts as a slave.";
         example = { ip = "192.168.1.100"; port = 6379; };
       };
 
       masterAuth = mkOption {
+        type = types.str;
         default = null;
         description = ''If the master is password protected (using the requirePass configuration)
         it is possible to tell the slave to authenticate before starting the replication synchronization
diff --git a/nixos/modules/services/databases/virtuoso.nix b/nixos/modules/services/databases/virtuoso.nix
index 6eb09e0a58fc..8b01622ecb03 100644
--- a/nixos/modules/services/databases/virtuoso.nix
+++ b/nixos/modules/services/databases/virtuoso.nix
@@ -16,28 +16,33 @@ with lib;
       enable = mkEnableOption "Virtuoso Opensource database server";
 
       config = mkOption {
+        type = types.lines;
         default = "";
         description = "Extra options to put into Virtuoso configuration file.";
       };
 
       parameters = mkOption {
+        type = types.lines;
         default = "";
         description = "Extra options to put into [Parameters] section of Virtuoso configuration file.";
       };
 
       listenAddress = mkOption {
+        type = types.str;
         default = "1111";
         example = "myserver:1323";
         description = "ip:port or port to listen on.";
       };
 
       httpListenAddress = mkOption {
+        type = types.nullOr types.str;
         default = null;
         example = "myserver:8080";
         description = "ip:port or port for Virtuoso HTTP server to listen on.";
       };
 
       dirsAllowed = mkOption {
+        type = types.nullOr types.str; # XXX Maybe use a list in the future?
         default = null;
         example = "/www, /home/";
         description = "A list of directories Virtuoso is allowed to access";
diff --git a/nixos/modules/services/misc/gitea.nix b/nixos/modules/services/misc/gitea.nix
index ac702a05ee8b..7eb52fef43d5 100644
--- a/nixos/modules/services/misc/gitea.nix
+++ b/nixos/modules/services/misc/gitea.nix
@@ -453,7 +453,7 @@ in
       description = "gitea";
       after = [ "network.target" ] ++ lib.optional usePostgresql "postgresql.service" ++ lib.optional useMysql "mysql.service";
       wantedBy = [ "multi-user.target" ];
-      path = [ gitea pkgs.gitAndTools.git ];
+      path = [ gitea pkgs.git ];
 
       preStart = let
         runConfig = "${cfg.stateDir}/custom/conf/app.ini";
diff --git a/nixos/modules/services/misc/gitlab.nix b/nixos/modules/services/misc/gitlab.nix
index 35a9dccdff28..de4d1bf1987a 100644
--- a/nixos/modules/services/misc/gitlab.nix
+++ b/nixos/modules/services/misc/gitlab.nix
@@ -736,7 +736,7 @@ in {
       environment = gitlabEnv;
       path = with pkgs; [
         postgresqlPackage
-        gitAndTools.git
+        git
         ruby
         openssh
         nodejs
@@ -764,7 +764,7 @@ in {
       path = with pkgs; [
         openssh
         procps  # See https://gitlab.com/gitlab-org/gitaly/issues/1562
-        gitAndTools.git
+        git
         cfg.packages.gitaly.rubyEnv
         cfg.packages.gitaly.rubyEnv.wrappedRuby
         gzip
@@ -806,7 +806,7 @@ in {
       wantedBy = [ "multi-user.target" ];
       path = with pkgs; [
         exiftool
-        gitAndTools.git
+        git
         gnutar
         gzip
         openssh
@@ -854,7 +854,7 @@ in {
       environment = gitlabEnv;
       path = with pkgs; [
         postgresqlPackage
-        gitAndTools.git
+        git
         openssh
         nodejs
         procps
diff --git a/nixos/modules/services/misc/gitolite.nix b/nixos/modules/services/misc/gitolite.nix
index 59cbdac319c8..190ea9212d2a 100644
--- a/nixos/modules/services/misc/gitolite.nix
+++ b/nixos/modules/services/misc/gitolite.nix
@@ -227,6 +227,6 @@ in
     };
 
     environment.systemPackages = [ pkgs.gitolite pkgs.git ]
-        ++ optional cfg.enableGitAnnex pkgs.gitAndTools.git-annex;
+        ++ optional cfg.enableGitAnnex pkgs.git-annex;
   });
 }
diff --git a/nixos/modules/services/misc/redmine.nix b/nixos/modules/services/misc/redmine.nix
index 1313bdaccc49..8b53eb471db6 100644
--- a/nixos/modules/services/misc/redmine.nix
+++ b/nixos/modules/services/misc/redmine.nix
@@ -230,7 +230,7 @@ in
       production = {
         scm_subversion_command = "${pkgs.subversion}/bin/svn";
         scm_mercurial_command = "${pkgs.mercurial}/bin/hg";
-        scm_git_command = "${pkgs.gitAndTools.git}/bin/git";
+        scm_git_command = "${pkgs.git}/bin/git";
         scm_cvs_command = "${pkgs.cvs}/bin/cvs";
         scm_bazaar_command = "${pkgs.breezy}/bin/bzr";
         scm_darcs_command = "${pkgs.darcs}/bin/darcs";
@@ -299,7 +299,7 @@ in
         breezy
         cvs
         darcs
-        gitAndTools.git
+        git
         mercurial
         subversion
       ];
diff --git a/nixos/modules/system/boot/tmp.nix b/nixos/modules/system/boot/tmp.nix
index 837e308cbea9..5bb299adb15f 100644
--- a/nixos/modules/system/boot/tmp.nix
+++ b/nixos/modules/system/boot/tmp.nix
@@ -34,6 +34,7 @@ with lib;
       {
         what = "tmpfs";
         where = "/tmp";
+        type = "tmpfs";
         mountConfig.Options = [ "mode=1777" "strictatime" "rw" "nosuid" "nodev" "size=50%" ];
       }
     ];
diff --git a/nixos/tests/git/hub.nix b/nixos/tests/git/hub.nix
index 51ec3d5b4129..4f3189861a00 100644
--- a/nixos/tests/git/hub.nix
+++ b/nixos/tests/git/hub.nix
@@ -6,12 +6,12 @@ import ../make-test-python.nix ({ pkgs, ...} : {
 
   nodes.hub = { pkgs, ... }:
     {
-      environment.systemPackages = [ pkgs.gitAndTools.hub ];
+      environment.systemPackages = [ pkgs.hub ];
     };
 
   testScript =
     ''
-      assert "git version ${pkgs.git.version}\nhub version ${pkgs.gitAndTools.hub.version}\n" in hub.succeed("hub version")
+      assert "git version ${pkgs.git.version}\nhub version ${pkgs.hub.version}\n" in hub.succeed("hub version")
       assert "These GitHub commands are provided by hub" in hub.succeed("hub help")
     '';
 })
diff --git a/nixos/tests/zfs.nix b/nixos/tests/zfs.nix
index 08a0867f1a87..03aa5e5399c6 100644
--- a/nixos/tests/zfs.nix
+++ b/nixos/tests/zfs.nix
@@ -8,7 +8,7 @@ with import ../lib/testing-python.nix { inherit system pkgs; };
 let
 
   makeZfsTest = name:
-    { kernelPackage ? pkgs.linuxPackages_latest
+    { kernelPackage ? if enableUnstable then pkgs.linuxPackages_latest else pkgs.linuxPackages
     , enableUnstable ? false
     , extraTest ? ""
     }:
diff --git a/pkgs/applications/editors/spacevim/default.nix b/pkgs/applications/editors/spacevim/default.nix
index 02c6fd82d8c5..2193d0ea5bb0 100644
--- a/pkgs/applications/editors/spacevim/default.nix
+++ b/pkgs/applications/editors/spacevim/default.nix
@@ -1,4 +1,4 @@
-{ ripgrep, gitAndTools, fzf, makeWrapper, vim_configurable, vimPlugins, fetchFromGitHub, writeTextDir
+{ ripgrep, git, fzf, makeWrapper, vim_configurable, vimPlugins, fetchFromGitHub, writeTextDir
 , lib, stdenv, runCommandNoCC, remarshal, formats, spacevim_config ? import ./init.nix }:
 with stdenv;
 let
@@ -39,7 +39,7 @@ in mkDerivation rec {
     # trailing slash very important for SPACEVIMDIR
     makeWrapper "${vim-customized}/bin/vim" "$out/bin/spacevim" \
         --add-flags "-u $out/SpaceVim/vimrc" --set SPACEVIMDIR "${spacevimdir}/" \
-        --prefix PATH : ${lib.makeBinPath [ fzf gitAndTools.git ripgrep]}
+        --prefix PATH : ${lib.makeBinPath [ fzf git ripgrep]}
   '';
 
   meta = with lib; {
diff --git a/pkgs/applications/networking/browsers/chromium/update.py b/pkgs/applications/networking/browsers/chromium/update.py
index 2b9f9232c24d..314d000e08a2 100755
--- a/pkgs/applications/networking/browsers/chromium/update.py
+++ b/pkgs/applications/networking/browsers/chromium/update.py
@@ -102,6 +102,31 @@ def get_latest_ungoogled_chromium_build():
     }
 
 
+def channel_name_to_attr_name(channel_name):
+    """Maps a channel name to the corresponding main Nixpkgs attribute name."""
+    if channel_name == 'stable':
+        return 'chromium'
+    if channel_name == 'beta':
+        return 'chromiumBeta'
+    if channel_name == 'dev':
+        return 'chromiumDev'
+    if channel_name == 'ungoogled-chromium':
+        return 'ungoogled-chromium'
+    print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr)
+    sys.exit(1)
+
+
+def print_updates(channels_old, channels_new):
+    """Print a summary of the updates."""
+    print('Updates:')
+    for channel_name in channels_old:
+        version_old = channels_old[channel_name]["version"]
+        version_new = channels_new[channel_name]["version"]
+        if version_old < version_new:
+            attr_name = channel_name_to_attr_name(channel_name)
+            print(f'- {attr_name}: {version_old} -> {version_new}')
+
+
 channels = {}
 last_channels = load_json(JSON_PATH)
 
@@ -174,3 +199,4 @@ with open(JSON_PATH, 'w') as out:
     sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key))
     json.dump(sorted_channels, out, indent=2)
     out.write('\n')
+    print_updates(last_channels, sorted_channels)
diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.json b/pkgs/applications/networking/browsers/chromium/upstream-info.json
index e7661c32caa4..f01f835e436d 100644
--- a/pkgs/applications/networking/browsers/chromium/upstream-info.json
+++ b/pkgs/applications/networking/browsers/chromium/upstream-info.json
@@ -18,9 +18,9 @@
     }
   },
   "beta": {
-    "version": "88.0.4324.79",
-    "sha256": "1xmssngzg370gazvqngw5mzhfq476fan5y3sp4ggs8fx5anh6jlz",
-    "sha256bin64": "16m2k4kr92236yvfnl276cy77d5324b7ca3grsw990c0b2kgizq7",
+    "version": "88.0.4324.87",
+    "sha256": "0pfrx8b2rmrxx5dfv4kc1ggrgi7kj7gbxrzqzd7rsvjpasyidbxg",
+    "sha256bin64": "07xl02zg5pi89l6dqrbqx2ibl8pm9v6njqfl8p4l2hwsb881hx8g",
     "deps": {
       "gn": {
         "version": "2020-11-05",
diff --git a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
index 8c70b13cfe15..4c705bb79d0d 100644
--- a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
+++ b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix
@@ -91,19 +91,19 @@ let
   fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ];
 
   # Upstream source
-  version = "10.0.7";
+  version = "10.0.8";
 
   lang = "en-US";
 
   srcs = {
     x86_64-linux = fetchurl {
       url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz";
-      sha256 = "1phqsdf9lav0s111chlgyh4xiq2rm5zcxbx676i9711lkmc5l053";
+      sha256 = "23sp9vMbXg/c4o9wm+G0bW4KaP7lCUMpSQNK/5mSmeo=";
     };
 
     i686-linux = fetchurl {
       url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz";
-      sha256 = "1nkppwdcjbrx8nh3d6qvvkgd5by6ja5ckjgpbkhavyy2pqlxyqk8";
+      sha256 = "vliiyw8KSCiZ2ycCvqOPEW3qSDH9wXwIygU1RYAqA6g=";
     };
   };
 in
diff --git a/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/default.nix b/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/default.nix
index 68edb8503bfc..695250a5cc47 100644
--- a/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/bitbucket-server-cli/default.nix
@@ -9,7 +9,7 @@ bundlerEnv rec {
 
   pname = "atlassian-stash";
 
-  passthru.updateScript = bundlerUpdateScript "gitAndTools.bitbucket-server-cli";
+  passthru.updateScript = bundlerUpdateScript "bitbucket-server-cli";
 
   meta = with lib; {
     description = "A command line interface to interact with BitBucket Server (formerly Atlassian Stash)";
diff --git a/pkgs/applications/version-management/git-and-tools/default.nix b/pkgs/applications/version-management/git-and-tools/default.nix
deleted file mode 100644
index 2b0efdf69046..000000000000
--- a/pkgs/applications/version-management/git-and-tools/default.nix
+++ /dev/null
@@ -1,270 +0,0 @@
-/* All git-relates tools live here, in a separate attribute set so that users
- * can get a fast overview over what's available.
- */
-args @ {config, lib, pkgs}: with args; with pkgs;
-let
-  gitBase = callPackage ./git {
-    svnSupport = false;         # for git-svn support
-    guiSupport = false;         # requires tcl/tk
-    sendEmailSupport = false;   # requires plenty of perl libraries
-    perlLibs = [perlPackages.LWP perlPackages.URI perlPackages.TermReadKey];
-    smtpPerlLibs = [
-      perlPackages.libnet perlPackages.NetSMTPSSL
-      perlPackages.IOSocketSSL perlPackages.NetSSLeay
-      perlPackages.AuthenSASL perlPackages.DigestHMAC
-    ];
-  };
-
-  self = rec {
-  # Try to keep this generally alphabetized
-
-  bfg-repo-cleaner = callPackage ./bfg-repo-cleaner { };
-
-  bitbucket-server-cli = callPackage ./bitbucket-server-cli { };
-
-  bump2version = pkgs.python37Packages.callPackage ./bump2version { };
-
-  darcs-to-git = callPackage ./darcs-to-git { };
-
-  delta = callPackage ./delta {
-    inherit (darwin.apple_sdk.frameworks) Security;
-  };
-
-  diff-so-fancy = callPackage ./diff-so-fancy { };
-
-  gh = callPackage ./gh { };
-
-  ghorg = callPackage ./ghorg { };
-
-  ghq = callPackage ./ghq { };
-
-  ghr = callPackage ./ghr { };
-
-  git = appendToName "minimal" gitBase;
-
-  git-absorb = callPackage ./git-absorb {
-    inherit (darwin.apple_sdk.frameworks) Security;
-  };
-
-  git-annex = pkgs.haskellPackages.git-annex;
-
-  git-annex-metadata-gui = libsForQt5.callPackage ./git-annex-metadata-gui {
-    inherit (python3Packages) buildPythonApplication pyqt5 git-annex-adapter;
-  };
-
-  git-annex-remote-b2 = callPackage ./git-annex-remote-b2 { };
-
-  git-annex-remote-dbx = callPackage ./git-annex-remote-dbx {
-    inherit (python3Packages)
-    buildPythonApplication
-    fetchPypi
-    dropbox
-    annexremote
-    humanfriendly;
-  };
-
-  git-annex-remote-rclone = callPackage ./git-annex-remote-rclone { };
-
-  git-annex-utils = callPackage ./git-annex-utils { };
-
-  git-brunch = pkgs.haskellPackages.git-brunch;
-
-  git-appraise = callPackage ./git-appraise {};
-
-  git-bug = callPackage ./git-bug { };
-
-  # support for bugzilla
-  git-bz = callPackage ./git-bz { };
-
-  git-chglog = callPackage ./git-chglog { };
-
-  git-cinnabar = callPackage ./git-cinnabar { };
-
-  git-codeowners = callPackage ./git-codeowners { };
-
-  git-codereview = callPackage ./git-codereview { };
-
-  git-cola = callPackage ./git-cola { };
-
-  git-crypt = callPackage ./git-crypt { };
-
-  git-delete-merged-branches = callPackage ./git-delete-merged-branches { };
-
-  git-dit = callPackage ./git-dit {
-    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
-  };
-
-  git-doc = lib.addMetaAttrs {
-    description = "Additional documentation for Git";
-    longDescription = ''
-      This package contains additional documentation (HTML and text files) that
-      is referenced in the man pages of Git.
-    '';
-  } gitFull.doc;
-
-  git-extras = callPackage ./git-extras { };
-
-  git-fame = callPackage ./git-fame {};
-
-  git-fast-export = callPackage ./fast-export { mercurial = mercurial_4; };
-
-  git-filter-repo = callPackage ./git-filter-repo {
-    pythonPackages = python3Packages;
-  };
-
-  git-gone = callPackage ./git-gone {
-    inherit (darwin.apple_sdk.frameworks) Security;
-  };
-
-  git-hub = callPackage ./git-hub { };
-
-  git-ignore = callPackage ./git-ignore { };
-
-  git-imerge = python3Packages.callPackage ./git-imerge { };
-
-  git-interactive-rebase-tool = callPackage ./git-interactive-rebase-tool {
-    inherit (darwin.apple_sdk.frameworks) Security;
-  };
-
-  git-machete = python3Packages.callPackage ./git-machete { };
-
-  git-my = callPackage ./git-my { };
-
-  git-octopus = callPackage ./git-octopus { };
-
-  git-open = callPackage ./git-open { };
-
-  git-radar = callPackage ./git-radar { };
-
-  git-recent = callPackage ./git-recent {
-    util-linux = if stdenv.isLinux then util-linuxMinimal else util-linux;
-  };
-
-  git-remote-codecommit = python3Packages.callPackage ./git-remote-codecommit { };
-
-  git-remote-gcrypt = callPackage ./git-remote-gcrypt { };
-
-  git-remote-hg = callPackage ./git-remote-hg { };
-
-  git-reparent = callPackage ./git-reparent { };
-
-  git-secret = callPackage ./git-secret { };
-
-  git-secrets = callPackage ./git-secrets { };
-
-  git-standup = callPackage ./git-standup { };
-
-  git-stree = callPackage ./git-stree { };
-
-  git-subrepo = callPackage ./git-subrepo { };
-
-  git-subset = callPackage ./git-subset {
-    inherit (darwin.apple_sdk.frameworks) Security;
-  };
-
-  git-subtrac = callPackage ./git-subtrac { };
-
-  git-sync = callPackage ./git-sync { };
-
-  git-test = callPackage ./git-test { };
-
-  git-trim = callPackage ./git-trim {
-    inherit (darwin.apple_sdk.frameworks) Security;
-  };
-
-  git-when-merged = callPackage ./git-when-merged { };
-
-  git-workspace = callPackage ./git-workspace {
-    inherit (darwin.apple_sdk.frameworks) Security;
-  };
-
-  git2cl = callPackage ./git2cl { };
-
-  # The full-featured Git.
-  gitFull = gitBase.override {
-    svnSupport = true;
-    guiSupport = true;
-    sendEmailSupport = true;
-    withLibsecret = !stdenv.isDarwin;
-  };
-
-  # Git with SVN support, but without GUI.
-  gitSVN = lowPrio (appendToName "with-svn" (gitBase.override {
-    svnSupport = true;
-  }));
-
-  gita = python3Packages.callPackage ./gita {};
-
-  gitbatch = callPackage ./gitbatch { };
-
-  gitflow = callPackage ./gitflow { };
-
-  gitin = callPackage ./gitin { };
-
-  gitstatus = callPackage ./gitstatus { };
-
-  gitui = callPackage ./gitui {
-    inherit (darwin.apple_sdk.frameworks) Security AppKit;
-    inherit (pkgs) openssl perl;
-  };
-
-  glab = callPackage ./glab { };
-
-  grv = callPackage ./grv { };
-
-  hub = callPackage ./hub { };
-
-  lab = callPackage ./lab { };
-
-  lefthook = callPackage ./lefthook {
-    # Please use empty attrset once upstream bugs have been fixed
-    # https://github.com/Arkweid/lefthook/issues/151
-    buildGoModule = buildGo114Module;
-  };
-
-  legit = callPackage ./legit { };
-
-  pass-git-helper = python3Packages.callPackage ./pass-git-helper { };
-
-  pre-commit = pkgs.python3Packages.toPythonApplication pkgs.python3Packages.pre-commit;
-
-  qgit = qt5.callPackage ./qgit { };
-
-  rs-git-fsmonitor = callPackage ./rs-git-fsmonitor { };
-
-  scmpuff = callPackage ./scmpuff { };
-
-  stgit = callPackage ./stgit { };
-
-  subgit = callPackage ./subgit { };
-
-  svn-all-fast-export = libsForQt5.callPackage ./svn-all-fast-export { };
-
-  svn2git = callPackage ./svn2git {
-    git = gitSVN;
-  };
-
-  thicket = callPackage ./thicket { };
-
-  tig = callPackage ./tig { };
-
-  top-git = callPackage ./topgit { };
-
-  transcrypt = callPackage ./transcrypt { };
-
-  git-vanity-hash = callPackage ./git-vanity-hash { };
-
-  ydiff = pkgs.python3.pkgs.toPythonApplication pkgs.python3.pkgs.ydiff;
-
-} // lib.optionalAttrs (config.allowAliases or true) (with self; {
-  # aliases
-  darcsToGit = darcs-to-git;
-  gitAnnex = git-annex;
-  gitBrunch = git-brunch;
-  gitFastExport = git-fast-export;
-  gitRemoteGcrypt = git-remote-gcrypt;
-  svn_all_fast_export = svn-all-fast-export;
-  topGit = top-git;
-});
-in
-  self
diff --git a/pkgs/applications/version-management/git-and-tools/git-fame/default.nix b/pkgs/applications/version-management/git-and-tools/git-fame/default.nix
index 6084d496a565..216a1035c72b 100644
--- a/pkgs/applications/version-management/git-and-tools/git-fame/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/git-fame/default.nix
@@ -7,7 +7,7 @@ bundlerEnv {
 
   gemdir = ./.;
 
-  passthru.updateScript = bundlerUpdateScript "gitAndTools.git-fame";
+  passthru.updateScript = bundlerUpdateScript "git-fame";
 
   meta = with lib; {
     description = ''
diff --git a/pkgs/development/libraries/hdf5-blosc/blosc_filter.pc.in b/pkgs/development/libraries/hdf5-blosc/blosc_filter.pc.in
new file mode 100644
index 000000000000..04e29515d9b1
--- /dev/null
+++ b/pkgs/development/libraries/hdf5-blosc/blosc_filter.pc.in
@@ -0,0 +1,13 @@
+prefix=@out@
+includedir=${prefix}/include
+libdir=${prefix}/lib
+
+Name: blosc_filter
+Description: Blosc Filter
+URL: http://blosc.org/
+Version: @version@
+Requires: \
+  blosc \
+  hdf5
+Cflags: -isystem${includedir}
+Libs: -L${libdir} -Wl,-rpath,${libdir} -lblosc_filter
diff --git a/pkgs/development/libraries/hdf5-blosc/default.nix b/pkgs/development/libraries/hdf5-blosc/default.nix
new file mode 100644
index 000000000000..ebce203125c6
--- /dev/null
+++ b/pkgs/development/libraries/hdf5-blosc/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, c-blosc, cmake, hdf5, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "hdf5-blosc";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "Blosc";
+    repo = pname;
+    rev =  "v${version}";
+    sha256 = "1nj2bm1v6ymm3fmyvhbn6ih5fgdiapavlfghh1pvbmhw71cysyqs";
+  };
+
+  patches = [ ./no-external-blosc.patch ];
+
+  outputs = [ "out" "dev" "plugin" ];
+
+  buildInputs = [ c-blosc cmake hdf5 ];
+
+  preConfigure = ''
+    substituteInPlace CMakeLists.txt --replace 'set(BLOSC_INSTALL_DIR "''${CMAKE_CURRENT_BINARY_DIR}/blosc")' 'set(BLOSC_INSTALL_DIR "${c-blosc}")'
+  '';
+
+  cmakeFlags = [
+    "-DPLUGIN_INSTALL_PATH=${placeholder "plugin"}/hdf5/lib/plugin"
+  ];
+
+  postInstall = ''
+    mkdir -p $out/lib/pkgconfig
+    substituteAll ${./blosc_filter.pc.in} $out/lib/pkgconfig/blosc_filter.pc
+  '';
+
+  meta = with stdenv.lib; {
+    description = "Filter for HDF5 that uses the Blosc compressor";
+    homepage = "https://github.com/Blosc/hdf5-blosc";
+    license = licenses.mit;
+    maintainers = with maintainers; [ bhipple ];
+  };
+}
diff --git a/pkgs/development/libraries/hdf5-blosc/no-external-blosc.patch b/pkgs/development/libraries/hdf5-blosc/no-external-blosc.patch
new file mode 100644
index 000000000000..8f2bd8579ed8
--- /dev/null
+++ b/pkgs/development/libraries/hdf5-blosc/no-external-blosc.patch
@@ -0,0 +1,26 @@
+--- a/CMakeLists.txt      2019-10-11 12:12:27.445417039 -0400
++++ b/CMakeLists.txt      2019-10-11 12:27:26.630691742 -0400
+@@ -22,14 +22,6 @@
+ message("BLOSC_CMAKE_ARGS='${BLOSC_CMAKE_ARGS}'")
+ message("GIT_EXECUTABLE='${GIT_EXECUTABLE}'")
+
+-ExternalProject_Add(project_blosc
+-  PREFIX ${BLOSC_PREFIX}
+-  GIT_REPOSITORY https://github.com/Blosc/c-blosc.git
+-  INSTALL_DIR ${BLOSC_INSTALL_DIR}
+-  CMAKE_ARGS ${BLOSC_CMAKE_ARGS}
+-)
+-
+-
+ # sources
+ set(SOURCES src/blosc_filter.c)
+ set(PLUGIN_SOURCES src/blosc_filter.c src/blosc_plugin.c )
+@@ -53,7 +45,6 @@
+ # add blosc libraries
+ add_library(blosc_shared SHARED IMPORTED)
+ set_property(TARGET blosc_shared PROPERTY IMPORTED_LOCATION ${BLOSC_INSTALL_DIR}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}blosc${CMAKE_SHARED_LIBRARY_SUFFIX})
+-add_dependencies(blosc_shared project_blosc)
+ include_directories(${BLOSC_INSTALL_DIR}/include)
+
+ add_library(blosc_filter_shared SHARED ${SOURCES})
+
diff --git a/pkgs/development/libraries/quickfix/default.nix b/pkgs/development/libraries/quickfix/default.nix
new file mode 100644
index 000000000000..5e7300ee19c5
--- /dev/null
+++ b/pkgs/development/libraries/quickfix/default.nix
@@ -0,0 +1,43 @@
+{ stdenv, fetchFromGitHub, fetchpatch, autoconf, automake, libtool }:
+
+stdenv.mkDerivation rec {
+  pname = "quickfix";
+  version = "1.15.1";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev =  "v${version}";
+    sha256 = "1fgpwgvyw992mbiawgza34427aakn5zrik3sjld0i924a9d17qwg";
+  };
+
+  patches = [
+    # Improved C++17 compatibility
+    (fetchpatch {
+      url = "https://github.com/quickfix/quickfix/commit/a46708090444826c5f46a5dbf2ba4b069b413c58.diff";
+      sha256 = "1wlk4j0wmck0zm6a70g3nrnq8fz0id7wnyxn81f7w048061ldhyd";
+    })
+    ./disableUnitTests.patch
+  ];
+
+  # autoreconfHook does not work
+  nativeBuildInputs = [ autoconf automake libtool ];
+
+  enableParallelBuilding = true;
+
+  preConfigure = ''
+    ./bootstrap
+  '';
+
+  # More hacking out of the unittests
+  preBuild = ''
+    substituteInPlace Makefile --replace 'UnitTest++' ' '
+  '';
+
+  meta = with stdenv.lib; {
+    description = "QuickFIX C++ Fix Engine Library";
+    homepage = "http://www.quickfixengine.org";
+    license = licenses.free; # similar to BSD 4-clause
+    maintainers = with maintainers; [ bhipple ];
+  };
+}
diff --git a/pkgs/development/libraries/quickfix/disableUnitTests.patch b/pkgs/development/libraries/quickfix/disableUnitTests.patch
new file mode 100644
index 000000000000..41a2f698e55f
--- /dev/null
+++ b/pkgs/development/libraries/quickfix/disableUnitTests.patch
@@ -0,0 +1,65 @@
+diff -u -r source-baseline-patchPhase/configure.ac source/configure.ac
+--- source-baseline-patchPhase/configure.ac	1970-01-01 00:00:01.000000000 +0000
++++ source/configure.ac	2021-01-12 22:49:28.948861699 +0000
+@@ -43,7 +43,7 @@
+ 
+ AC_CANONICAL_HOST
+ 
+-build_no_unit_test = no
++build_no_unit_test = yes
+ 
+ # Detect the target system
+ case "${host_os}" in
+@@ -344,8 +344,6 @@
+     examples/Makefile
+     examples/executor/Makefile
+     examples/executor/C++/Makefile
+-    examples/ordermatch/Makefile
+-    examples/ordermatch/test/Makefile
+     examples/tradeclient/Makefile
+     examples/tradeclientgui/Makefile
+     examples/tradeclientgui/banzai/Makefile
+diff -u -r source-baseline-patchPhase/examples/Makefile.am source/examples/Makefile.am
+--- source-baseline-patchPhase/examples/Makefile.am	1970-01-01 00:00:01.000000000 +0000
++++ source/examples/Makefile.am	2021-01-12 22:51:55.782568550 +0000
+@@ -1,3 +1,3 @@
+-SUBDIRS = executor ordermatch tradeclient tradeclientgui
++SUBDIRS = executor tradeclient tradeclientgui
+ 
+-EXTRA_DIST = examples.dsw configure configure.in bootstrap Makefile.am
+\ No newline at end of file
++EXTRA_DIST = examples.dsw configure configure.in bootstrap Makefile.am
+diff -u -r source-baseline-patchPhase/src/Makefile.am source/src/Makefile.am
+--- source-baseline-patchPhase/src/Makefile.am	1970-01-01 00:00:01.000000000 +0000
++++ source/src/Makefile.am	2021-01-12 22:53:02.593432380 +0000
+@@ -15,27 +15,23 @@
+ if NO_UNIT_TEST
+ noinst_PROGRAMS =
+ else
+-noinst_PROGRAMS = at ut pt
++noinst_PROGRAMS = at pt
+ endif
+ 
+ at_SOURCES = at.cpp at_application.h
+-ut_SOURCES = ut.cpp
+ pt_SOURCES = pt.cpp
+ 
+ EXTRA_DIST = getopt.c getopt-repl.h
+ 
+ at_LDADD = C++/libquickfix.la
+-ut_LDADD = C++/test/libquickfixcpptest.la C++/libquickfix.la
+ pt_LDADD = C++/libquickfix.la
+ 
+ INCLUDES =-IC++ -IC++/test -I../UnitTest++/src
+-LDFLAGS =-L../UnitTest++ -lUnitTest++
++ 
+ 
+ all-local:
+-	rm -f ../test/ut ../test/pt ../test/at ../test/ut_debug
+-	ln -s ../src/ut ../test/ut
++	rm -rf ../test/pt ../test/at ../test/ut_debug
+ 	ln -s ../src/pt ../test/pt
+ 	ln -s ../src/at ../test/at
+-	ln -s ../src/.libs/ut ../test/ut_debug
+ 
+ clean-local:
diff --git a/pkgs/development/python-modules/gps3/default.nix b/pkgs/development/python-modules/gps3/default.nix
new file mode 100644
index 000000000000..76321182dcb6
--- /dev/null
+++ b/pkgs/development/python-modules/gps3/default.nix
@@ -0,0 +1,27 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+}:
+
+buildPythonPackage rec {
+  pname = "gps3";
+  version = "0.33.3";
+
+  src = fetchFromGitHub {
+    owner = "onkelbeh";
+    repo = pname;
+    rev = version;
+    sha256 = "0a0qpk7d2b1cld58qcdn6bxrkil6ascs51af01dy4p83062h1hi6";
+  };
+
+  # Project has no tests
+  doCheck = false;
+  pythonImportsCheck = [ "gps3" ];
+
+  meta = with lib; {
+    description = "Python client for GPSD";
+    homepage = "https://github.com/onkelbeh/gps3";
+    license = with licenses; [ mit ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/python-modules/json-schema-for-humans/default.nix b/pkgs/development/python-modules/json-schema-for-humans/default.nix
index bc32f57f50a7..2ab2b2f18748 100644
--- a/pkgs/development/python-modules/json-schema-for-humans/default.nix
+++ b/pkgs/development/python-modules/json-schema-for-humans/default.nix
@@ -1,26 +1,18 @@
-{ stdenv, buildPythonPackage, fetchFromGitHub, fetchurl
+{ stdenv, buildPythonPackage, fetchFromGitHub
 , pbr, click, dataclasses-json, htmlmin, jinja2, markdown2, pygments, pytz, pyyaml, requests, pytestCheckHook, beautifulsoup4, tox
 }:
 
 buildPythonPackage rec {
   pname = "json-schema-for-humans";
-  version = "0.27.0";
+  version = "0.27.1";
 
   src = fetchFromGitHub {
     owner = "coveooss";
     repo = pname;
     rev = "v${version}";
-    sha256 = "1r40i192z6aasil5vsgcgp5yvx392dhhqnfc2qxbxvpja6l3p6p2";
+    sha256 = "0d2a4a2lcqssr5g9rmc76f86nkqc9grixh507vzc9fi1h3gbi765";
   };
 
-  patches = [ (fetchurl {
-    url = "https://github.com/coveooss/json-schema-for-humans/commit/1fe2e2391da5a796204fd1889e4a11a53f83f7c9.patch";
-    sha256 = "0kpydpddlg0rib9snl8albhbrrs6d3ds292gpgpg7bdpqrwamdib";
-  }) (fetchurl {
-    url = "https://github.com/astro/json-schema-for-humans/commit/9bcc9b461102062dff214ca1ec2375b8aea53711.patch";
-    sha256 = "142a07v8bn1j20b7177yb60f4944kbx4cdqqq2nz6xkxmamw704d";
-  }) ];
-
   nativeBuildInputs = [ pbr ];
   propagatedBuildInputs = [
     click dataclasses-json htmlmin jinja2 markdown2
diff --git a/pkgs/development/python-modules/pyhaversion/default.nix b/pkgs/development/python-modules/pyhaversion/default.nix
index 3af6b3a263e8..22290695cc0a 100644
--- a/pkgs/development/python-modules/pyhaversion/default.nix
+++ b/pkgs/development/python-modules/pyhaversion/default.nix
@@ -5,7 +5,7 @@
 , awesomeversion
 , buildPythonPackage
 , fetchFromGitHub
-, pythonAtLeast
+, pythonOlder
 , pytest-asyncio
 , pytestCheckHook
 }:
@@ -15,7 +15,7 @@ buildPythonPackage rec {
   version = "20.12.1";
 
   # Only 3.8.0 and beyond are supported
-  disabled = pythonAtLeast "3.8";
+  disabled = pythonOlder "3.8";
 
   src = fetchFromGitHub {
     owner = "ludeeus";
diff --git a/pkgs/development/python-modules/waterfurnace/default.nix b/pkgs/development/python-modules/waterfurnace/default.nix
new file mode 100644
index 000000000000..a07c1e6333e8
--- /dev/null
+++ b/pkgs/development/python-modules/waterfurnace/default.nix
@@ -0,0 +1,43 @@
+{ lib
+, buildPythonPackage
+, click
+, fetchFromGitHub
+, mock
+, pytest-runner
+, pytestCheckHook
+, requests
+, websocket_client
+}:
+
+buildPythonPackage rec {
+  pname = "waterfurnace";
+  version = "1.1.0";
+
+  src = fetchFromGitHub {
+    owner = "sdague";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1ba247fw1fvi7zy31zj2wbjq7fajrbxhp139cl9jj67rfvxfv8xf";
+  };
+
+  propagatedBuildInputs = [
+    click
+    pytest-runner
+    requests
+    websocket_client
+  ];
+
+  checkInputs = [
+    mock
+    pytestCheckHook
+  ];
+
+  pythonImportsCheck = [ "waterfurnace" ];
+
+  meta = with lib; {
+    description = "Python interface to waterfurnace geothermal systems";
+    homepage = "https://github.com/sdague/waterfurnace";
+    license = with licenses; [ asl20 ];
+    maintainers = with maintainers; [ fab ];
+  };
+}
diff --git a/pkgs/development/tools/misc/hydra/common.nix b/pkgs/development/tools/misc/hydra/common.nix
index 4af9fe045874..eb8ffb472852 100644
--- a/pkgs/development/tools/misc/hydra/common.nix
+++ b/pkgs/development/tools/misc/hydra/common.nix
@@ -1,6 +1,6 @@
 { stdenv, nix, perlPackages, buildEnv, fetchFromGitHub
 , makeWrapper, autoconf, automake, libtool, unzip, pkgconfig, sqlite, libpqxx
-, gitAndTools, mercurial, darcs, subversion, breezy, openssl, bzip2, libxslt
+, top-git, mercurial, darcs, subversion, breezy, openssl, bzip2, libxslt
 , guile, perl, postgresql, nukeReferences, git, boehmgc, nlohmann_json
 , docbook_xsl, openssh, gnused, coreutils, findutils, gzip, lzma, gnutar
 , rpm, dpkg, cdrkit, pixz, lib, boost, autoreconfHook, src ? null, version ? null
@@ -80,7 +80,7 @@ in stdenv.mkDerivation rec {
 
   buildInputs =
     [ makeWrapper autoconf automake libtool unzip nukeReferences sqlite libpqxx
-      gitAndTools.top-git mercurial /*darcs*/ subversion breezy openssl bzip2 libxslt
+      top-git mercurial /*darcs*/ subversion breezy openssl bzip2 libxslt
       perlDeps perl nix
       postgresql # for running the tests
       nlohmann_json
@@ -89,7 +89,7 @@ in stdenv.mkDerivation rec {
 
   hydraPath = lib.makeBinPath (
     [ sqlite subversion openssh nix coreutils findutils pixz
-      gzip bzip2 lzma gnutar unzip git gitAndTools.top-git mercurial /*darcs*/ gnused breezy
+      gzip bzip2 lzma gnutar unzip git top-git mercurial /*darcs*/ gnused breezy
     ] ++ lib.optionals stdenv.isLinux [ rpm dpkg cdrkit ] );
 
   nativeBuildInputs = [ autoreconfHook pkgconfig ];
diff --git a/pkgs/development/tools/misc/remarkable/remarkable2-toolchain/default.nix b/pkgs/development/tools/misc/remarkable/remarkable2-toolchain/default.nix
new file mode 100644
index 000000000000..f4f83f21840b
--- /dev/null
+++ b/pkgs/development/tools/misc/remarkable/remarkable2-toolchain/default.nix
@@ -0,0 +1,39 @@
+{ stdenv, fetchurl, libarchive, python3, file }:
+
+stdenv.mkDerivation rec {
+  pname = "remarkable2-toolchain";
+  version = "2.5.2";
+
+  src = fetchurl {
+    url = "https://storage.googleapis.com/codex-public-bucket/codex-x86_64-cortexa7hf-neon-rm11x-toolchain-${version}.sh";
+    sha256 = "1v410q1jn8flisdpkrymxd4pa1ylawd0rh3rljjpkqw1bp8a5vw1";
+  };
+
+  nativeBuildInputs = [
+    libarchive
+    python3
+    file
+  ];
+
+  unpackCmd = ''
+    mkdir src
+    install $curSrc src/install-toolchain.sh
+  '';
+
+  dontBuild = true;
+
+  installPhase = ''
+    patchShebangs install-toolchain.sh
+    sed -i -e '3,9d' install-toolchain.sh # breaks PATH
+    sed -i 's|PYTHON=.*$|PYTHON=${python3}/bin/python|' install-toolchain.sh
+    ./install-toolchain.sh -D -y -d $out
+  '';
+
+  meta = with stdenv.lib; {
+    description = "A toolchain for cross-compiling to reMarkable 2 tablets";
+    homepage = "https://remarkable.engineering/";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ tadfisher ];
+    platforms = platforms.x86_64;
+  };
+}
diff --git a/pkgs/development/tools/unityhub/default.nix b/pkgs/development/tools/unityhub/default.nix
index baa89a33ad91..9a2c1d72caa3 100644
--- a/pkgs/development/tools/unityhub/default.nix
+++ b/pkgs/development/tools/unityhub/default.nix
@@ -13,7 +13,7 @@ in appimageTools.wrapType2 rec {
     libX11 libXcursor libXdamage libXfixes libXrender libXi
     libXcomposite libXext libXrandr libXtst libSM libICE libxcb
 
-    libselinux pciutils libpulseaudio libxml2
+    libselinux pciutils libpulseaudio libxml2 icu clang
   ]);
 
   profile = ''
diff --git a/pkgs/misc/emulators/wine/sources.nix b/pkgs/misc/emulators/wine/sources.nix
index afa172823853..3a5abe18d754 100644
--- a/pkgs/misc/emulators/wine/sources.nix
+++ b/pkgs/misc/emulators/wine/sources.nix
@@ -44,32 +44,24 @@ in rec {
 
   unstable = fetchurl rec {
     # NOTE: Don't forget to change the SHA256 for staging as well.
-    version = "5.22";
-    url = "https://dl.winehq.org/wine/source/5.x/wine-${version}.tar.xz";
-    sha256 = "sha256-Cb0GyHyMl05q00UHzsh11yF+tW/Anfg41UU+DrvOTSE=";
+    version = "6.0-rc4";
+    url = "https://dl.winehq.org/wine/source/6.0/wine-${version}.tar.xz";
+    sha256 = "sha256-ndeBORgnfYmtPbvZEesaetocknePF8cnyjqfulkcfsU=";
     inherit (stable) mono gecko32 gecko64;
 
     patches = [
       # Also look for root certificates at $NIX_SSL_CERT_FILE
       ./cert-path.patch
-
-      # Hotfix picked from master for https://bugs.winehq.org/show_bug.cgi?id=50163
-      (pkgs.fetchpatch {
-        url = "https://bugs.winehq.org/attachment.cgi?id=68680";
-        sha256 = "sha256-GTPQhRWeu6DPadqgFiuVUjI6MzJPaTN4l//8DSG6hpo=";
-      })
      ];
   };
 
   staging = fetchFromGitHub rec {
     # https://github.com/wine-staging/wine-staging/releases
     inherit (unstable) version;
-    sha256 = "sha256-HzAKLPlybO1lrkHo4Q1Y9H0vmjiqo9HiT05TcX08Ubk=";
+    sha256 = "sha256-GdFiCGnGSDOxGERlfsPMJdSrQTvnx8gf4z4joqIKT7c=";
     owner = "wine-staging";
     repo = "wine-staging";
-    #rev = "v${version}"; # revert back to this statement on next release
-    # Include hotfix for https://bugs.winehq.org/show_bug.cgi?id=50162
-    rev = "f257f37b92041fc718de04aa83ec3139b748ffa2";
+    rev = "v${version}";
 
     # Just keep list empty, if current release haven't broken patchsets
     disabledPatchsets = [ ];
diff --git a/pkgs/os-specific/linux/target-isns/default.nix b/pkgs/os-specific/linux/target-isns/default.nix
new file mode 100644
index 000000000000..32e0669ed543
--- /dev/null
+++ b/pkgs/os-specific/linux/target-isns/default.nix
@@ -0,0 +1,36 @@
+{ stdenv, cmake, fetchFromGitHub, fetchpatch } :
+
+stdenv.mkDerivation rec {
+  pname = "target-isns";
+  version = "0.6.8";
+
+  src = fetchFromGitHub {
+    owner = "open-iscsi";
+    repo = pname;
+    rev = "v${version}";
+    sha256 = "1b6jjalvvkkjyjbg1pcgk8vmvc6xzzksyjnh2pfi45bbpya4zxim";
+  };
+
+  patches = [
+    # fix absoulute paths
+    ./install_prefix_path.patch
+
+    # fix gcc 10 compiler warning, remove with next update
+    (fetchpatch {
+      url = "https://github.com/open-iscsi/target-isns/commit/3d0c47dd89bcf83d828bcc22ecaaa5f58d78b58e.patch";
+      sha256 = "1x2bkc1ff15621svhpq1r11m0q4ajv0j4fng6hm7wkkbr2s6d1vx";
+    })
+  ];
+
+  cmakeFlags = [ "-DSUPPORT_SYSTEMD=ON" ];
+
+  nativeBuildInputs = [ cmake ];
+
+  meta = with stdenv.lib; {
+    description = "iSNS client for the Linux LIO iSCSI target";
+    homepage = "https://github.com/open-iscsi/target-isns";
+    maintainers = [ maintainers.markuskowa ];
+    license = licenses.gpl2Only;
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/os-specific/linux/target-isns/install_prefix_path.patch b/pkgs/os-specific/linux/target-isns/install_prefix_path.patch
new file mode 100644
index 000000000000..f98fc21b7a24
--- /dev/null
+++ b/pkgs/os-specific/linux/target-isns/install_prefix_path.patch
@@ -0,0 +1,17 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f46144d..aeac3e4 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -14,10 +14,10 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror")
+ option(SUPPORT_SYSTEMD "Support service control via systemd" OFF)
+
+ add_subdirectory(src)
+-install(FILES target-isns.conf DESTINATION /etc/)
++install(FILES target-isns.conf DESTINATION ${CMAKE_INSTALL_PREFIX}/etc/)
+ install(FILES target-isns.8 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man8/)
+ if (SUPPORT_SYSTEMD)
+-  install(FILES target-isns.service DESTINATION /usr/lib/systemd/system/)
++  install(FILES target-isns.service DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/systemd/system/)
+ endif (SUPPORT_SYSTEMD)
+
+ add_subdirectory(tests)
diff --git a/pkgs/servers/home-assistant/component-packages.nix b/pkgs/servers/home-assistant/component-packages.nix
index b7c72607f063..60c9506f9982 100644
--- a/pkgs/servers/home-assistant/component-packages.nix
+++ b/pkgs/servers/home-assistant/component-packages.nix
@@ -2,7 +2,7 @@
 # Do not edit!
 
 {
-  version = "2021.1.1";
+  version = "2021.1.2";
   components = {
     "abode" = ps: with ps; [ abodepy ];
     "accuweather" = ps: with ps; [ accuweather ];
@@ -317,7 +317,7 @@
     "google_travel_time" = ps: with ps; [ googlemaps ];
     "google_wifi" = ps: with ps; [ ];
     "gpmdp" = ps: with ps; [ websocket_client ];
-    "gpsd" = ps: with ps; [ ]; # missing inputs: gps3
+    "gpsd" = ps: with ps; [ gps3 ];
     "gpslogger" = ps: with ps; [ aiohttp-cors ];
     "graphite" = ps: with ps; [ ];
     "gree" = ps: with ps; [ ]; # missing inputs: greeclimate
@@ -915,7 +915,7 @@
     "wake_on_lan" = ps: with ps; [ wakeonlan ];
     "waqi" = ps: with ps; [ ]; # missing inputs: waqiasync
     "water_heater" = ps: with ps; [ ];
-    "waterfurnace" = ps: with ps; [ ]; # missing inputs: waterfurnace
+    "waterfurnace" = ps: with ps; [ waterfurnace ];
     "watson_iot" = ps: with ps; [ ]; # missing inputs: ibmiotf
     "watson_tts" = ps: with ps; [ ]; # missing inputs: ibm-watson
     "waze_travel_time" = ps: with ps; [ WazeRouteCalculator ];
diff --git a/pkgs/servers/home-assistant/default.nix b/pkgs/servers/home-assistant/default.nix
index 2275f8c14b5c..ec12fd572d76 100644
--- a/pkgs/servers/home-assistant/default.nix
+++ b/pkgs/servers/home-assistant/default.nix
@@ -62,7 +62,7 @@ let
   extraBuildInputs = extraPackages py.pkgs;
 
   # Don't forget to run parse-requirements.py after updating
-  hassVersion = "2021.1.1";
+  hassVersion = "2021.1.2";
 
 in with py.pkgs; buildPythonApplication rec {
   pname = "homeassistant";
@@ -81,7 +81,7 @@ in with py.pkgs; buildPythonApplication rec {
     owner = "home-assistant";
     repo = "core";
     rev = version;
-    sha256 = "1linjv1hryqsh8y1rql1i95b4lz4h8siw847gm78m1z8niacz7ss";
+    sha256 = "0v8a8p524mhf75jnkw5n1fdsr20jwcayyxfba2vg4z8x0n704hxz";
   };
 
   # leave this in, so users don't have to constantly update their downstream patch handling
diff --git a/pkgs/servers/matrix-synapse/default.nix b/pkgs/servers/matrix-synapse/default.nix
index 6c6636b47ee0..e11bceb14dea 100644
--- a/pkgs/servers/matrix-synapse/default.nix
+++ b/pkgs/servers/matrix-synapse/default.nix
@@ -12,11 +12,11 @@ let
 in
 buildPythonApplication rec {
   pname = "matrix-synapse";
-  version = "1.24.0";
+  version = "1.25.0";
 
   src = fetchPypi {
     inherit pname version;
-    sha256 = "sha256-yxcdFd7iVXbDIUx1lW73FKLy+BZfSspz60LKw7BCtl4=";
+    sha256 = "sha256-RL0LXBPJR1Qef3TNYYZdo83gh51nrN3BJeLtVzXDAg0=";
   };
 
   patches = [
diff --git a/pkgs/servers/monitoring/grafana/default.nix b/pkgs/servers/monitoring/grafana/default.nix
index c06da6fee111..9dc18936acf3 100644
--- a/pkgs/servers/monitoring/grafana/default.nix
+++ b/pkgs/servers/monitoring/grafana/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "grafana";
-  version = "7.3.6";
+  version = "7.3.7";
 
   excludedPackages = [ "release_publisher" ];
 
@@ -10,15 +10,15 @@ buildGoModule rec {
     rev = "v${version}";
     owner = "grafana";
     repo = "grafana";
-    sha256 = "10hm5bz2q9mccrjx1x77xckqvn2x9m7cl2dn60gvrl8m7q3afscp";
+    sha256 = "134x2jqrczp5qfa2rmqc7jikv3w258kks532jp1qi65qk7w7jhb9";
   };
 
   srcStatic = fetchurl {
     url = "https://dl.grafana.com/oss/release/grafana-${version}.linux-amd64.tar.gz";
-    sha256 = "1fl4ng39qkc01nv49cfzm19sv3yzzshl22ylkwlsb41rmaifbd1f";
+    sha256 = "052r9gajggd9jlwnl82hq0jflhlz7cbdflkjapq4nx3rpnfscqgp";
   };
 
-  vendorSha256 = "0p4wwacvka5lgzwhlwnn6iiwi9x67zgqf0l4vblpfckvvb3ar41h";
+  vendorSha256 = "0474d5y40q7i7k1gm1k7ac1dqhizvqql8w9nn44qxb7g2w2bfqiv";
 
   postPatch = ''
     substituteInPlace pkg/cmd/grafana-server/main.go \
diff --git a/pkgs/shells/zsh/zsh-powerlevel10k/default.nix b/pkgs/shells/zsh/zsh-powerlevel10k/default.nix
index 7e39e6779d19..0bba4bffdeff 100644
--- a/pkgs/shells/zsh/zsh-powerlevel10k/default.nix
+++ b/pkgs/shells/zsh/zsh-powerlevel10k/default.nix
@@ -6,7 +6,7 @@
 let
   # match gitstatus version with given `gitstatus_version`:
   # https://github.com/romkatv/powerlevel10k/blob/master/gitstatus/build.info
-  gitstatus = pkgs.gitAndTools.gitstatus.overrideAttrs (oldAtttrs: rec {
+  gitstatus = pkgs.gitstatus.overrideAttrs (oldAtttrs: rec {
     version = "1.3.1";
 
     src = fetchFromGitHub {
diff --git a/pkgs/tools/misc/bat-extras/default.nix b/pkgs/tools/misc/bat-extras/default.nix
index a2ec5afd965a..c52cae4eac06 100644
--- a/pkgs/tools/misc/bat-extras/default.nix
+++ b/pkgs/tools/misc/bat-extras/default.nix
@@ -13,7 +13,7 @@
 , withEntr ? entr != null, entr ? null
 # batdiff
 , gitMinimal
-, withDelta ? gitAndTools?delta, gitAndTools ? null
+, withDelta ? delta != null, delta ? null
 }:
 
 let
@@ -133,7 +133,7 @@ let
     stdenv.lib.optional cond dep;
 in
 {
-  batdiff = script "batdiff" ([ less coreutils gitMinimal ] ++ optionalDep withDelta gitAndTools.delta);
+  batdiff = script "batdiff" ([ less coreutils gitMinimal ] ++ optionalDep withDelta delta);
   batgrep = script "batgrep" [ less coreutils ripgrep ];
   batman = script "batman" [];
   batwatch = script "batwatch" ([ less coreutils ] ++ optionalDep withEntr entr);
diff --git a/pkgs/tools/misc/plantuml/default.nix b/pkgs/tools/misc/plantuml/default.nix
index e366673d7737..0bc6e73fe4f6 100644
--- a/pkgs/tools/misc/plantuml/default.nix
+++ b/pkgs/tools/misc/plantuml/default.nix
@@ -1,12 +1,12 @@
 { lib, stdenv, fetchurl, makeWrapper, jre, graphviz }:
 
 stdenv.mkDerivation rec {
-  version = "1.2020.22";
+  version = "1.2020.26";
   pname = "plantuml";
 
   src = fetchurl {
     url = "mirror://sourceforge/project/plantuml/${version}/plantuml.${version}.jar";
-    sha256 = "10s2a5z903k1nhq6zdvj4wfms5ma4ldhq9330nnnkdzhbxdp14yx";
+    sha256 = "1k8gad75qvqljg61db76z7blnniwk9l56xy0fkrqhh48p1gxakah";
   };
 
   nativeBuildInputs = [ makeWrapper ];
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
     homepage = "http://plantuml.sourceforge.net/";
     # "plantuml -license" says GPLv3 or later
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ bjornfor ];
+    maintainers = with maintainers; [ bjornfor Mogria ];
     platforms = platforms.unix;
   };
 }
diff --git a/pkgs/tools/system/gdu/default.nix b/pkgs/tools/system/gdu/default.nix
index 6fb65e0c3a20..7b1bb36856e2 100644
--- a/pkgs/tools/system/gdu/default.nix
+++ b/pkgs/tools/system/gdu/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "gdu";
-  version = "2.2.0";
+  version = "2.3.0";
 
   src = fetchFromGitHub {
     owner = "dundee";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0ajkc0vbzyl56d6z03s5vb17frjrg5wl145x60asnrmh7lg8adsj";
+    sha256 = "1dc0z6daxpbid2ilpms0dw76qyyc84gx0bcqsx0b3s5p5p154xzq";
   };
 
-  vendorSha256 = "1jqbsda9bch3awdq816w4jybv7wz9mfflmvs5y2wsa2qnhn9nbyp";
+  vendorSha256 = "18a3qwshz8jmw0j29qvmzarxig0kj1n0fnmlx81qzswsyl85kncv";
 
   buildFlagsArray = [ "-ldflags=-s -w -X main.AppVersion=${version}" ];
 
diff --git a/pkgs/tools/system/inxi/default.nix b/pkgs/tools/system/inxi/default.nix
index 9de9d0b7368e..6b732a92ebb9 100644
--- a/pkgs/tools/system/inxi/default.nix
+++ b/pkgs/tools/system/inxi/default.nix
@@ -22,13 +22,13 @@ let
     ++ recommendedDisplayInformationPrograms;
 in stdenv.mkDerivation rec {
   pname = "inxi";
-  version = "3.2.02-1";
+  version = "3.2.02-2";
 
   src = fetchFromGitHub {
     owner = "smxi";
     repo = "inxi";
     rev = version;
-    hash = "sha256-+6EURaeN1kJ4X+xdhN8ojuCbcBtxqNksGFEqPhIwCc4=";
+    sha256 = "sha256-WHfW0empveOxC3jvYq46jlvVZDb8JLne5JHPtFE6nTs=";
   };
 
   buildInputs = [ perl makeWrapper ];
diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix
index f73aac69aef3..15d6e2ed927d 100644
--- a/pkgs/top-level/aliases.nix
+++ b/pkgs/top-level/aliases.nix
@@ -194,7 +194,15 @@ mapAliases ({
   gdb-multitarget = gdb; # added 2017-11-13
   gdk_pixbuf = gdk-pixbuf; # added 2019-05-22
   gettextWithExpat = gettext; # 2016-02-19
-  git-hub = gitAndTools.git-hub; # added 2016-04-29
+  gitAndTools = self // { # added 2021-01-14
+    darcsToGit = darcs-to-git;
+    gitAnnex = git-annex;
+    gitBrunch = git-brunch;
+    gitFastExport = git-fast-export;
+    gitRemoteGcrypt = git-remote-gcrypt;
+    svn_all_fast_export = svn-all-fast-export;
+    topGit = top-git;
+  };
   glib_networking = glib-networking; # added 2018-02-25
   gmailieer = lieer; # added 2020-04-19
   gnome-mpv = celluloid; # added 2019-08-22
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index e4ed020e6135..9e2555445d6c 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -1317,6 +1317,8 @@ in
 
   pass = callPackage ../tools/security/pass { };
 
+  pass-git-helper = python3Packages.callPackage ../applications/version-management/git-and-tools/pass-git-helper { };
+
   pass-nodmenu = callPackage ../tools/security/pass {
     dmenuSupport = false;
     pass = pass-nodmenu;
@@ -1566,6 +1568,8 @@ in
 
   bitbucket-cli = python2Packages.bitbucket-cli;
 
+  bitbucket-server-cli = callPackage ../applications/version-management/git-and-tools/bitbucket-server-cli { };
+
   blink = libsForQt5.callPackage ../applications/networking/instant-messengers/blink { };
 
   blockbook = callPackage ../servers/blockbook { };
@@ -2855,7 +2859,7 @@ in
 
   bettercap = callPackage ../tools/security/bettercap { };
 
-  bfg-repo-cleaner = gitAndTools.bfg-repo-cleaner;
+  bfg-repo-cleaner = callPackage ../applications/version-management/git-and-tools/bfg-repo-cleaner { };
 
   bfs = callPackage ../tools/system/bfs { };
 
@@ -2896,6 +2900,8 @@ in
     inherit (pythonPackages) gyp;
   };
 
+  bump2version = python37Packages.callPackage ../applications/version-management/git-and-tools/bump2version { };
+
   bumpver = callPackage ../applications/version-management/bumpver { };
 
   bup = callPackage ../tools/backup/bup { };
@@ -3382,6 +3388,10 @@ in
 
   deer = callPackage ../shells/zsh/zsh-deer { };
 
+  delta = callPackage ../applications/version-management/git-and-tools/delta {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
   deno = callPackage ../development/web/deno {
     inherit (darwin.apple_sdk.frameworks) Security CoreServices;
   };
@@ -3464,6 +3474,8 @@ in
 
   diction = callPackage ../tools/text/diction { };
 
+  diff-so-fancy = callPackage ../applications/version-management/git-and-tools/diff-so-fancy { };
+
   diffoscope = callPackage ../tools/misc/diffoscope {
     inherit (androidenv.androidPkgs_9_0) build-tools;
     jdk = jdk8;
@@ -4300,36 +4312,184 @@ in
 
   ggobi = callPackage ../tools/graphics/ggobi { };
 
+  gh = callPackage ../applications/version-management/git-and-tools/gh { };
+
+  ghorg = callPackage ../applications/version-management/git-and-tools/ghorg { };
+
+  ghq = callPackage ../applications/version-management/git-and-tools/ghq { };
+
+  ghr = callPackage ../applications/version-management/git-and-tools/ghr { };
+
   gibo = callPackage ../tools/misc/gibo { };
 
   gifsicle = callPackage ../tools/graphics/gifsicle { };
 
   gifski = callPackage ../tools/graphics/gifski { };
 
+  git-absorb = callPackage ../applications/version-management/git-and-tools/git-absorb {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  inherit (haskellPackages) git-annex;
+
+  git-annex-metadata-gui = libsForQt5.callPackage ../applications/version-management/git-and-tools/git-annex-metadata-gui {
+    inherit (python3Packages) buildPythonApplication pyqt5 git-annex-adapter;
+  };
+
+  git-annex-remote-b2 = callPackage ../applications/version-management/git-and-tools/git-annex-remote-b2 { };
+
+  git-annex-remote-dbx = callPackage ../applications/version-management/git-and-tools/git-annex-remote-dbx {
+    inherit (python3Packages)
+    buildPythonApplication
+    fetchPypi
+    dropbox
+    annexremote
+    humanfriendly;
+  };
+
+  git-annex-remote-rclone = callPackage ../applications/version-management/git-and-tools/git-annex-remote-rclone { };
+
+  git-annex-utils = callPackage ../applications/version-management/git-and-tools/git-annex-utils { };
+
+  git-appraise = callPackage ../applications/version-management/git-and-tools/git-appraise {};
+
   git-backup = callPackage ../applications/version-management/git-backup {
     inherit (darwin.apple_sdk.frameworks) Security;
   };
 
   git-big-picture = callPackage ../applications/version-management/git-and-tools/git-big-picture { };
 
+  inherit (haskellPackages) git-brunch;
+
+  git-bug = callPackage ../applications/version-management/git-and-tools/git-bug { };
+
+  # support for bugzilla
+  git-bz = callPackage ../applications/version-management/git-and-tools/git-bz { };
+
+  git-chglog = callPackage ../applications/version-management/git-and-tools/git-chglog { };
+
+  git-cinnabar = callPackage ../applications/version-management/git-and-tools/git-cinnabar { };
+
+  git-codeowners = callPackage ../applications/version-management/git-and-tools/git-codeowners { };
+
+  git-codereview = callPackage ../applications/version-management/git-and-tools/git-codereview { };
+
+  git-cola = callPackage ../applications/version-management/git-and-tools/git-cola { };
+
   git-crecord = callPackage ../applications/version-management/git-crecord { };
 
+  git-crypt = callPackage ../applications/version-management/git-and-tools/git-crypt { };
+
+  git-delete-merged-branches = callPackage ../applications/version-management/git-and-tools/git-delete-merged-branches { };
+
+  git-dit = callPackage ../applications/version-management/git-and-tools/git-dit {
+    inherit (darwin.apple_sdk.frameworks) CoreFoundation Security;
+  };
+
+  git-extras = callPackage ../applications/version-management/git-and-tools/git-extras { };
+
+  git-fame = callPackage ../applications/version-management/git-and-tools/git-fame {};
+
+  git-fast-export = callPackage ../applications/version-management/git-and-tools/fast-export { mercurial = mercurial_4; };
+
+  git-filter-repo = callPackage ../applications/version-management/git-and-tools/git-filter-repo {
+    pythonPackages = python3Packages;
+  };
+
+  git-gone = callPackage ../applications/version-management/git-and-tools/git-gone {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-hub = callPackage ../applications/version-management/git-and-tools/git-hub { };
+
+  git-ignore = callPackage ../applications/version-management/git-and-tools/git-ignore { };
+
+  git-imerge = python3Packages.callPackage ../applications/version-management/git-and-tools/git-imerge { };
+
+  git-interactive-rebase-tool = callPackage ../applications/version-management/git-and-tools/git-interactive-rebase-tool {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
   git-lfs = lowPrio (callPackage ../applications/version-management/git-lfs { });
 
   git-lfs1 = callPackage ../applications/version-management/git-lfs/1.nix { };
 
   git-ftp = callPackage ../development/tools/git-ftp { };
 
+  git-machete = python3Packages.callPackage ../applications/version-management/git-and-tools/git-machete { };
+
+  git-my = callPackage ../applications/version-management/git-and-tools/git-my { };
+
+  git-octopus = callPackage ../applications/version-management/git-and-tools/git-octopus { };
+
+  git-open = callPackage ../applications/version-management/git-and-tools/git-open { };
+
+  git-radar = callPackage ../applications/version-management/git-and-tools/git-radar { };
+
+  git-recent = callPackage ../applications/version-management/git-and-tools/git-recent {
+    util-linux = if stdenv.isLinux then util-linuxMinimal else util-linux;
+  };
+
+  git-remote-codecommit = python3Packages.callPackage ../applications/version-management/git-and-tools/git-remote-codecommit { };
+
+  git-remote-gcrypt = callPackage ../applications/version-management/git-and-tools/git-remote-gcrypt { };
+
+  git-remote-hg = callPackage ../applications/version-management/git-and-tools/git-remote-hg { };
+
+  git-reparent = callPackage ../applications/version-management/git-and-tools/git-reparent { };
+
+  git-secret = callPackage ../applications/version-management/git-and-tools/git-secret { };
+
+  git-secrets = callPackage ../applications/version-management/git-and-tools/git-secrets { };
+
   git-series = callPackage ../development/tools/git-series { };
 
   git-sizer = callPackage ../applications/version-management/git-sizer { };
 
+  git-standup = callPackage ../applications/version-management/git-and-tools/git-standup { };
+
+  git-stree = callPackage ../applications/version-management/git-and-tools/git-stree { };
+
+  git-subrepo = callPackage ../applications/version-management/git-and-tools/git-subrepo { };
+
+  git-subset = callPackage ../applications/version-management/git-and-tools/git-subset {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git-subtrac = callPackage ../applications/version-management/git-and-tools/git-subtrac { };
+
+  git-sync = callPackage ../applications/version-management/git-and-tools/git-sync { };
+
+  git-test = callPackage ../applications/version-management/git-and-tools/git-test { };
+
+  git-trim = callPackage ../applications/version-management/git-and-tools/git-trim {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
   git-up = callPackage ../applications/version-management/git-up {
     pythonPackages = python3Packages;
   };
 
+  git-vanity-hash = callPackage ../applications/version-management/git-and-tools/git-vanity-hash { };
+
+  git-when-merged = callPackage ../applications/version-management/git-and-tools/git-when-merged { };
+
+  git-workspace = callPackage ../applications/version-management/git-and-tools/git-workspace {
+    inherit (darwin.apple_sdk.frameworks) Security;
+  };
+
+  git2cl = callPackage ../applications/version-management/git-and-tools/git2cl { };
+
+  gita = python3Packages.callPackage ../applications/version-management/git-and-tools/gita { };
+
+  gitbatch = callPackage ../applications/version-management/git-and-tools/gitbatch { };
+
+  gitflow = callPackage ../applications/version-management/git-and-tools/gitflow { };
+
   gitfs = callPackage ../tools/filesystems/gitfs { };
 
+  gitin = callPackage ../applications/version-management/git-and-tools/gitin { };
+
   gitinspector = callPackage ../applications/version-management/gitinspector { };
 
   gitkraken = callPackage ../applications/version-management/gitkraken { };
@@ -4358,6 +4518,13 @@ in
 
   gitstats = callPackage ../applications/version-management/gitstats { };
 
+  gitstatus = callPackage ../applications/version-management/git-and-tools/gitstatus { };
+
+  gitui = callPackage ../applications/version-management/git-and-tools/gitui {
+    inherit (darwin.apple_sdk.frameworks) Security AppKit;
+    inherit (pkgs) openssl perl;
+  };
+
   gogs = callPackage ../applications/version-management/gogs { };
 
   git-latexdiff = callPackage ../tools/typesetting/git-latexdiff { };
@@ -4366,6 +4533,8 @@ in
 
   gl2ps = callPackage ../development/libraries/gl2ps { };
 
+  glab = callPackage ../applications/version-management/git-and-tools/glab { };
+
   glusterfs = callPackage ../tools/filesystems/glusterfs { };
 
   glmark2 = callPackage ../tools/graphics/glmark2 { };
@@ -4581,6 +4750,8 @@ in
     stdenv = overrideCC stdenv buildPackages.pkgsi686Linux.gcc6;
   } // (config.grub or {}));
 
+  grv = callPackage ../applications/version-management/git-and-tools/grv { };
+
   trustedGrub = pkgsi686Linux.callPackage ../tools/misc/grub/trusted.nix { };
 
   trustedGrub-for-HP = pkgsi686Linux.callPackage ../tools/misc/grub/trusted.nix { for_HP_laptop = true; };
@@ -4786,6 +4957,8 @@ in
       configureFlags = oldAttrs.configureFlags ++ ["--enable-threadsafe" "--disable-hl" ];
   }));
 
+  hdf5-blosc = callPackage ../development/libraries/hdf5-blosc { };
+
   hdfview = callPackage ../tools/misc/hdfview {
     javac = jdk8; # TODO: https://github.com/NixOS/nixpkgs/pull/89731
   };
@@ -4861,6 +5034,8 @@ in
 
   httpx = callPackage ../tools/security/httpx { };
 
+  hub = callPackage ../applications/version-management/git-and-tools/hub { };
+
   hubicfuse = callPackage ../tools/filesystems/hubicfuse { };
 
   humanfriendly = with python3Packages; toPythonApplication humanfriendly;
@@ -5271,6 +5446,8 @@ in
 
   k6 = callPackage ../development/tools/k6 { };
 
+  lab = callPackage ../applications/version-management/git-and-tools/lab { };
+
   lalezar-fonts = callPackage ../data/fonts/lalezar-fonts { };
 
   ldc = callPackage ../development/compilers/ldc { };
@@ -5279,7 +5456,11 @@ in
 
   lbreakout2 = callPackage ../games/lbreakout2 { };
 
-  lefthook = gitAndTools.lefthook;
+  lefthook = callPackage ../applications/version-management/git-and-tools/lefthook {
+    # Please use empty attrset once upstream bugs have been fixed
+    # https://github.com/Arkweid/lefthook/issues/151
+    buildGoModule = buildGo114Module;
+  };
 
   lego = callPackage ../tools/admin/lego { };
 
@@ -6870,7 +7051,7 @@ in
 
   pptpd = callPackage ../tools/networking/pptpd {};
 
-  pre-commit = gitAndTools.pre-commit;
+  pre-commit = with python3Packages; toPythonApplication pre-commit;
 
   pretty-simple = callPackage ../development/tools/pretty-simple { };
 
@@ -7012,6 +7193,8 @@ in
 
   qdigidoc = libsForQt5.callPackage ../tools/security/qdigidoc { } ;
 
+  qgit = qt5.callPackage ../applications/version-management/git-and-tools/qgit { };
+
   qgrep = callPackage ../tools/text/qgrep {
     inherit (darwin.apple_sdk.frameworks) CoreServices CoreFoundation;
   };
@@ -7036,6 +7219,8 @@ in
 
   qtikz = libsForQt5.callPackage ../applications/graphics/ktikz { };
 
+  quickfix = callPackage ../development/libraries/quickfix { };
+
   quickjs = callPackage ../development/interpreters/quickjs { };
 
   quickserve = callPackage ../tools/networking/quickserve { };
@@ -7222,6 +7407,8 @@ in
     inherit (darwin) libiconv;
   };
 
+  rs-git-fsmonitor = callPackage ../applications/version-management/git-and-tools/rs-git-fsmonitor { };
+
   rsnapshot = callPackage ../tools/backup/rsnapshot { };
 
   rlwrap = callPackage ../tools/misc/rlwrap { };
@@ -7352,6 +7539,8 @@ in
 
   scdoc = callPackage ../tools/typesetting/scdoc { };
 
+  scmpuff = callPackage ../applications/version-management/git-and-tools/scmpuff { };
+
   scream-receivers = callPackage ../misc/scream-receivers {
     pulseSupport = config.pulseaudio or false;
   };
@@ -7694,6 +7883,8 @@ in
 
   sstp = callPackage ../tools/networking/sstp {};
 
+  stgit = callPackage ../applications/version-management/git-and-tools/stgit { };
+
   strip-nondeterminism = perlPackages.strip-nondeterminism;
 
   structure-synth = callPackage ../tools/graphics/structure-synth { };
@@ -7702,6 +7893,8 @@ in
 
   subberthehut = callPackage ../tools/misc/subberthehut { };
 
+  subgit = callPackage ../applications/version-management/git-and-tools/subgit { };
+
   subsurface = libsForQt514.callPackage ../applications/misc/subsurface { };
 
   sudo = callPackage ../tools/security/sudo { };
@@ -7791,8 +7984,14 @@ in
 
   swec = callPackage ../tools/networking/swec { };
 
+  svn2git = callPackage ../applications/version-management/git-and-tools/svn2git {
+    git = gitSVN;
+  };
+
   svnfs = callPackage ../tools/filesystems/svnfs { };
 
+  svn-all-fast-export = libsForQt5.callPackage ../applications/version-management/git-and-tools/svn-all-fast-export { };
+
   svtplay-dl = callPackage ../tools/misc/svtplay-dl { };
 
   sycl-info = callPackage ../development/libraries/sycl-info { };
@@ -7842,6 +8041,8 @@ in
 
   targetcli = callPackage ../os-specific/linux/targetcli { };
 
+  target-isns = callPackage ../os-specific/linux/target-isns { };
+
   tarsnap = callPackage ../tools/backup/tarsnap { };
 
   tarsnapper = callPackage ../tools/backup/tarsnapper { };
@@ -7922,6 +8123,8 @@ in
 
   thefuck = python3Packages.callPackage ../tools/misc/thefuck { };
 
+  thicket = callPackage ../applications/version-management/git-and-tools/thicket { };
+
   thin-provisioning-tools = callPackage ../tools/misc/thin-provisioning-tools {  };
 
   thinkpad-scripts = python3.pkgs.callPackage ../tools/misc/thinkpad-scripts { };
@@ -8008,6 +8211,8 @@ in
     inherit (darwin.apple_sdk.frameworks) Foundation;
   };
 
+  top-git = callPackage ../applications/version-management/git-and-tools/topgit { };
+
   tor = callPackage ../tools/security/tor { };
 
   tor-arm = callPackage ../tools/security/tor/tor-arm.nix { };
@@ -8062,6 +8267,8 @@ in
 
   tracefilesim = callPackage ../development/tools/analysis/garcosim/tracefilesim { };
 
+  transcrypt = callPackage ../applications/version-management/git-and-tools/transcrypt { };
+
   transifex-client = python3.pkgs.callPackage ../tools/text/transifex-client { };
 
   translate-shell = callPackage ../applications/misc/translate-shell { };
@@ -9691,6 +9898,8 @@ in
 
   remarkable-toolchain = callPackage ../development/tools/misc/remarkable/remarkable-toolchain { };
 
+  remarkable2-toolchain = callPackage ../development/tools/misc/remarkable/remarkable2-toolchain { };
+
   tacacsplus = callPackage ../servers/tacacsplus { };
 
   tamarin-prover =
@@ -21040,6 +21249,8 @@ in
     configureFlags = (lib.remove "-flibrary" drv.configureFlags or []) ++ ["-f-library"];
   });
 
+  darcs-to-git = callPackage ../applications/version-management/git-and-tools/darcs-to-git { };
+
   darktable = callPackage ../applications/graphics/darktable {
     lua = lua5_3;
     pugixml = pugixml.override { shared = true; };
@@ -21835,15 +22046,44 @@ in
     gtk = gtk3;
   };
 
-  gitAndTools = recurseIntoAttrs (callPackage ../applications/version-management/git-and-tools {});
+  git = callPackage ../applications/version-management/git-and-tools/git {
+    svnSupport = false;         # for git-svn support
+    guiSupport = false;         # requires tcl/tk
+    sendEmailSupport = false;   # requires plenty of perl libraries
+    perlLibs = [perlPackages.LWP perlPackages.URI perlPackages.TermReadKey];
+    smtpPerlLibs = [
+      perlPackages.libnet perlPackages.NetSMTPSSL
+      perlPackages.IOSocketSSL perlPackages.NetSSLeay
+      perlPackages.AuthenSASL perlPackages.DigestHMAC
+    ];
+  };
 
-  inherit (gitAndTools) git gitFull gitSVN git-cola git-doc svn2git git-radar git-secret git-secrets transcrypt git-crypt ghq;
+  # The full-featured Git.
+  gitFull = git.override {
+    svnSupport = true;
+    guiSupport = true;
+    sendEmailSupport = true;
+    withLibsecret = !stdenv.isDarwin;
+  };
+
+  # Git with SVN support, but without GUI.
+  gitSVN = lowPrio (appendToName "with-svn" (git.override {
+    svnSupport = true;
+  }));
 
-  gitMinimal = git.override {
+  git-doc = lib.addMetaAttrs {
+    description = "Additional documentation for Git";
+    longDescription = ''
+      This package contains additional documentation (HTML and text files) that
+      is referenced in the man pages of Git.
+    '';
+  } gitFull.doc;
+
+  gitMinimal = appendToName "minimal" (git.override {
     withManual = false;
     pythonSupport = false;
     withpcre2 = false;
-  };
+  });
 
   gitRepo = callPackage ../applications/version-management/git-repo { };
 
@@ -21851,7 +22091,7 @@ in
 
   git-review = python3Packages.callPackage ../applications/version-management/git-review { };
 
-  github-cli = gitAndTools.gh;
+  github-cli = gh;
 
   gitolite = callPackage ../applications/version-management/gitolite { };
 
@@ -22671,7 +22911,7 @@ in
 
   lemonbar-xft = callPackage ../applications/window-managers/lemonbar/xft.nix { };
 
-  legit = gitAndTools.legit;
+  legit = callPackage ../applications/version-management/git-and-tools/legit { };
 
   lens = callPackage ../applications/networking/cluster/lens { };
 
@@ -24625,7 +24865,7 @@ in
 
   tickrs = callPackage ../applications/misc/tickrs { };
 
-  tig = gitAndTools.tig;
+  tig = callPackage ../applications/version-management/git-and-tools/tig { };
 
   timbreid = callPackage ../applications/audio/pd-plugins/timbreid {
     fftw = fftwSinglePrec;
@@ -25529,7 +25769,7 @@ in
 
   yate = callPackage ../applications/misc/yate { };
 
-  inherit (gitAndTools) ydiff;
+  ydiff = with python3.pkgs; toPythonApplication ydiff;
 
   yed = callPackage ../applications/graphics/yed {};
 
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index fe514945aa87..4ca774dcd461 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -2491,7 +2491,7 @@ in {
   gipc = callPackage ../development/python-modules/gipc { };
 
   git-annex-adapter =
-    callPackage ../development/python-modules/git-annex-adapter { inherit (pkgs.gitAndTools) git-annex; };
+    callPackage ../development/python-modules/git-annex-adapter { };
 
   gitdb2 = throw "gitdb2 has been deprecated, use gitdb instead."; # added 2020-03-14
 
@@ -2678,6 +2678,8 @@ in {
 
   gprof2dot = callPackage ../development/python-modules/gprof2dot { inherit (pkgs) graphviz; };
 
+  gps3 = callPackage ../development/python-modules/gps3 { };
+
   gpsoauth = callPackage ../development/python-modules/gpsoauth { };
 
   gpxpy = callPackage ../development/python-modules/gpxpy { };
@@ -8021,6 +8023,8 @@ in {
 
   watchdog = callPackage ../development/python-modules/watchdog { };
 
+  waterfurnace = callPackage ../development/python-modules/waterfurnace { };
+
   WazeRouteCalculator = callPackage ../development/python-modules/WazeRouteCalculator { };
 
   wcwidth = callPackage ../development/python-modules/wcwidth { };