summary refs log tree commit diff
path: root/pkgs/tools
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools')
-rw-r--r--pkgs/tools/admin/azure-cli/default.nix248
-rw-r--r--pkgs/tools/admin/azure-cli/python-packages.nix247
-rw-r--r--pkgs/tools/admin/eksctl/default.nix6
-rw-r--r--pkgs/tools/audio/beets/default.nix18
-rw-r--r--pkgs/tools/backup/duplicity/default.nix2
-rw-r--r--pkgs/tools/compression/lz4/default.nix17
-rw-r--r--pkgs/tools/compression/zstd/default.nix30
-rw-r--r--pkgs/tools/compression/zstd/mcfgthreads-no-pthread.patch13
-rw-r--r--pkgs/tools/filesystems/duff/default.nix2
-rw-r--r--pkgs/tools/filesystems/nixpart/0.4/default.nix1
-rw-r--r--pkgs/tools/misc/vector/default.nix25
-rw-r--r--pkgs/tools/misc/youtube-dl/default.nix4
-rw-r--r--pkgs/tools/security/gnome-keysign/default.nix15
-rw-r--r--pkgs/tools/security/sequoia/default.nix8
-rw-r--r--pkgs/tools/security/sops/default.nix8
-rw-r--r--pkgs/tools/text/kdiff3/default.nix4
-rw-r--r--pkgs/tools/text/mdbook/default.nix6
17 files changed, 609 insertions, 45 deletions
diff --git a/pkgs/tools/admin/azure-cli/default.nix b/pkgs/tools/admin/azure-cli/default.nix
new file mode 100644
index 0000000000000..3a80b4752c255
--- /dev/null
+++ b/pkgs/tools/admin/azure-cli/default.nix
@@ -0,0 +1,248 @@
+{ lib, python, fetchFromGitHub, installShellFiles }:
+
+let
+  version = "2.0.76";
+  src = fetchFromGitHub {
+    owner = "Azure";
+    repo = "azure-cli";
+    rev = "azure-cli-${version}";
+    sha256 = "0zfy8nhw4nx0idh94qidr06vsfxgdk2ky0ih76s27121pdwr05aa";
+  };
+
+  # put packages that needs to be overriden in the py package scope
+  py = import ./python-packages.nix { inherit python lib src version; };
+in
+py.pkgs.toPythonApplication (py.pkgs.buildAzureCliPackage {
+  pname = "azure-cli";
+  inherit version src;
+  disabled = python.isPy27; # namespacing assumes PEP420, which isn't compat with py2
+
+  sourceRoot = "source/src/azure-cli";
+
+  prePatch = ''
+    substituteInPlace setup.py \
+      --replace "javaproperties==0.5.1" "javaproperties" \
+      --replace "pytz==2019.1" "pytz" \
+      --replace "mock~=2.0" "mock" \
+      --replace "azure-mgmt-reservations==0.3.1" "azure-mgmt-reservations~=0.3.1"
+
+    # remove namespace hacks
+    # remove urllib3 because it was added as 'urllib3[secure]', which doesn't get handled well
+    sed -i setup.py \
+      -e '/azure-cli-command_modules-nspkg/d' \
+      -e '/azure-cli-nspkg/d' \
+      -e '/urllib3/d'
+  '';
+
+  nativeBuildInputs = [ installShellFiles ];
+
+  propagatedBuildInputs = with py.pkgs; [
+    azure-batch
+    azure-cli-core
+    azure-cli-telemetry
+    azure-cosmos
+    azure-datalake-store
+    azure-functions-devops-build
+    azure-graphrbac
+    azure-keyvault
+    azure-mgmt-advisor
+    azure-mgmt-apimanagement
+    azure-mgmt-applicationinsights
+    azure-mgmt-appconfiguration
+    azure-mgmt-authorization
+    azure-mgmt-batch
+    azure-mgmt-batchai
+    azure-mgmt-billing
+    azure-mgmt-botservice
+    azure-mgmt-cdn
+    azure-mgmt-cognitiveservices
+    azure-mgmt-compute
+    azure-mgmt-consumption
+    azure-mgmt-containerinstance
+    azure-mgmt-containerregistry
+    azure-mgmt-containerservice
+    azure-mgmt-cosmosdb
+    azure-mgmt-datalake-analytics
+    azure-mgmt-datalake-store
+    azure-mgmt-datamigration
+    azure-mgmt-deploymentmanager
+    azure-mgmt-devtestlabs
+    azure-mgmt-dns
+    azure-mgmt-eventgrid
+    azure-mgmt-eventhub
+    azure-mgmt-hdinsight
+    azure-mgmt-imagebuilder
+    azure-mgmt-iotcentral
+    azure-mgmt-iothub
+    azure-mgmt-iothubprovisioningservices
+    azure-mgmt-keyvault
+    azure-mgmt-kusto
+    azure-mgmt-loganalytics
+    azure-mgmt-managedservices
+    azure-mgmt-managementgroups
+    azure-mgmt-maps
+    azure-mgmt-marketplaceordering
+    azure-mgmt-media
+    azure-mgmt-monitor
+    azure-mgmt-msi
+    azure-mgmt-network
+    azure-mgmt-netapp
+    azure-mgmt-policyinsights
+    azure-mgmt-privatedns
+    azure-mgmt-rdbms
+    azure-mgmt-recoveryservices
+    azure-mgmt-recoveryservicesbackup
+    azure-mgmt-redis
+    azure-mgmt-relay
+    azure-mgmt-reservations
+    azure-mgmt-resource
+    azure-mgmt-search
+    azure-mgmt-security
+    azure-mgmt-servicebus
+    azure-mgmt-servicefabric
+    azure-mgmt-signalr
+    azure-mgmt-sql
+    azure-mgmt-sqlvirtualmachine
+    azure-mgmt-storage
+    azure-mgmt-trafficmanager
+    azure-mgmt-web
+    azure-multiapi-storage
+    azure-storage-blob
+    colorama
+    cryptography
+    Fabric
+    jsmin
+    knack
+    mock
+    paramiko
+    pydocumentdb
+    pygments
+    pyopenssl
+    pytz
+    pyyaml
+    psutil
+    requests
+    scp
+    six
+    sshtunnel
+    urllib3
+    vsts-cd-manager
+    websocket_client
+    xmltodict
+    javaproperties
+    jsondiff
+    # urllib3[secure]
+    ipaddress
+    # shell completion
+    argcomplete
+  ];
+
+  # TODO: make shell completion actually work
+  # uses argcomplete, so completion needs PYTHONPATH to work
+  postInstall = ''
+    installShellCompletion --bash --name az.bash az.completion.sh
+    installShellCompletion --zsh --name _az az.completion.sh
+
+    # remove garbage
+    rm $out/bin/az.bat
+    rm $out/bin/az.completion.sh
+  '';
+
+  # wrap the executable so that the python packages are available
+  # it's just a shebang script which calls `python -m azure.cli "$@"`
+  postFixup = ''
+    wrapProgram $out/bin/az \
+      --set PYTHONPATH $PYTHONPATH
+  '';
+
+  # almost the entire test suite requires an azure account setup and networking
+  # ensure that the azure namespaces are setup correctly and that azure.cli can be accessed
+  checkPhase = ''
+    cd azure # avoid finding local copy
+    ${py.interpreter} -c 'import azure.cli.core; assert "${version}" == azure.cli.core.__version__'
+    HOME=$TMPDIR ${py.interpreter} -m azure.cli --help
+  '';
+
+  # ensure these namespaces are able to be accessed
+  pythonImportsCheck = [
+    "azure.batch"
+    "azure.cli.core"
+    "azure.cli.telemetry"
+    "azure.cosmos"
+    "azure.datalake.store"
+    "azure_functions_devops_build"
+    "azure.graphrbac"
+    "azure.keyvault"
+    "azure.mgmt.advisor"
+    "azure.mgmt.apimanagement"
+    "azure.mgmt.applicationinsights"
+    "azure.mgmt.appconfiguration"
+    "azure.mgmt.authorization"
+    "azure.mgmt.batch"
+    "azure.mgmt.batchai"
+    "azure.mgmt.billing"
+    "azure.mgmt.botservice"
+    "azure.mgmt.cdn"
+    "azure.mgmt.cognitiveservices"
+    "azure.mgmt.compute"
+    "azure.mgmt.consumption"
+    "azure.mgmt.containerinstance"
+    "azure.mgmt.containerregistry"
+    "azure.mgmt.containerservice"
+    "azure.mgmt.cosmosdb"
+    "azure.mgmt.datalake.analytics"
+    "azure.mgmt.datalake.store"
+    "azure.mgmt.datamigration"
+    "azure.mgmt.deploymentmanager"
+    "azure.mgmt.devtestlabs"
+    "azure.mgmt.dns"
+    "azure.mgmt.eventgrid"
+    "azure.mgmt.eventhub"
+    "azure.mgmt.hdinsight"
+    "azure.mgmt.imagebuilder"
+    "azure.mgmt.iotcentral"
+    "azure.mgmt.iothub"
+    "azure.mgmt.iothubprovisioningservices"
+    "azure.mgmt.keyvault"
+    "azure.mgmt.kusto"
+    "azure.mgmt.loganalytics"
+    "azure.mgmt.managedservices"
+    "azure.mgmt.managementgroups"
+    "azure.mgmt.maps"
+    "azure.mgmt.marketplaceordering"
+    "azure.mgmt.media"
+    "azure.mgmt.monitor"
+    "azure.mgmt.msi"
+    "azure.mgmt.network"
+    "azure.mgmt.netapp"
+    "azure.mgmt.policyinsights"
+    "azure.mgmt.privatedns"
+    "azure.mgmt.rdbms"
+    "azure.mgmt.recoveryservices"
+    "azure.mgmt.recoveryservicesbackup"
+    "azure.mgmt.redis"
+    "azure.mgmt.relay"
+    "azure.mgmt.reservations"
+    "azure.mgmt.resource"
+    "azure.mgmt.search"
+    "azure.mgmt.security"
+    "azure.mgmt.servicebus"
+    "azure.mgmt.servicefabric"
+    "azure.mgmt.signalr"
+    "azure.mgmt.sql"
+    "azure.mgmt.sqlvirtualmachine"
+    "azure.mgmt.storage"
+    "azure.mgmt.trafficmanager"
+    "azure.mgmt.web"
+    "azure.storage.blob"
+    "azure.storage.common"
+  ];
+
+  meta = with lib; {
+    homepage = "https://github.com/Azure/azure-cli";
+    description = "Next generation multi-platform command line experience for Azure";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jonringer ];
+  };
+})
+
diff --git a/pkgs/tools/admin/azure-cli/python-packages.nix b/pkgs/tools/admin/azure-cli/python-packages.nix
new file mode 100644
index 0000000000000..e925a239afb38
--- /dev/null
+++ b/pkgs/tools/admin/azure-cli/python-packages.nix
@@ -0,0 +1,247 @@
+{ python, lib, src, version }:
+
+let
+  buildAzureCliPackage = with py.pkgs; attrs: buildPythonPackage (attrs // {
+    # Remove overly restrictive version contraints and obsolete namespace setup
+    prePatch = (attrs.prePatch or "") + ''
+      rm -f azure_bdist_wheel.py tox.ini
+      substituteInPlace setup.py \
+        --replace "wheel==0.30.0" "wheel"
+      sed -i "/azure-namespace-package/c\ " setup.cfg
+    '';
+
+    # Prevent these __init__'s from violating PEP420, only needed for python2
+    postInstall = (attrs.postInstall or "") + ''
+      rm $out/${python.sitePackages}/azure/{,__pycache__/}__init__.* \
+         $out/${python.sitePackages}/azure/cli/{,__pycache__/}__init__.*
+    '';
+
+    checkInputs = [ mock pytest ] ++ (attrs.checkInputs or []);
+    checkPhase = attrs.checkPhase or ''
+      cd azure
+      HOME=$TMPDIR pytest
+    '';
+  });
+
+  overrideAzureMgmtPackage = package: version: extension: sha256:
+    package.overrideAttrs(oldAttrs: rec {
+      inherit version;
+
+      src = py.pkgs.fetchPypi {
+        inherit (oldAttrs) pname;
+        inherit version sha256 extension;
+      };
+
+      preBuild = ''
+        rm -f azure_bdist_wheel.py
+        substituteInPlace setup.cfg \
+          --replace "azure-namespace-package = azure-mgmt-nspkg" ""
+      '';
+    });
+
+  py = python.override {
+    packageOverrides = self: super: {
+      inherit buildAzureCliPackage;
+
+      # core and the actual application are highly coupled
+      azure-cli-core = buildAzureCliPackage {
+        pname = "azure-cli-core";
+        inherit version src;
+
+        sourceRoot = "source/src/azure-cli-core";
+
+        propagatedBuildInputs = with self; [
+          adal
+          argcomplete
+          azure-cli-telemetry
+          colorama
+          jmespath
+          humanfriendly
+          knack
+          msrest
+          msrestazure
+          paramiko
+          pygments
+          pyjwt
+          pyopenssl
+          pyyaml
+          requests
+          six
+          azure-mgmt-resource
+          tabulate
+          pyperclip
+          psutil
+        ]
+        ++ lib.optionals isPy3k [ antlr4-python3-runtime ]
+        ++ lib.optionals (!isPy3k) [ enum34 futures antlr4-python2-runtime ndg-httpsclient ];
+
+        # ignore test that does network call
+        checkPhase = ''
+          HOME=$TMPDIR pytest --ignore=azure/cli/core/tests/test_profile.py
+        '';
+
+        pythonImportsCheck = [
+          "azure.cli.telemetry"
+          "azure.cli.core"
+        ];
+      };
+
+      azure-cli-telemetry = buildAzureCliPackage {
+        pname = "azure-cli-telemetry";
+        version = "1.0.4"; # might be wrong, but doesn't really matter
+        inherit src;
+
+        sourceRoot = "source/src/azure-cli-telemetry";
+
+        propagatedBuildInputs = with super; [
+          applicationinsights
+          portalocker
+        ];
+
+        # ignore flaky test
+        checkPhase = ''
+          cd azure
+          HOME=$TMPDIR pytest -k 'not test_create_telemetry_note_file_from_scratch'
+        '';
+      };
+
+      azure-mgmt-resource = overrideAzureMgmtPackage super.azure-mgmt-resource "4.0.0" "zip"
+        "0gy89bi89ikg5hps8rvnq28r33lixci3sk2m86jvziv9fh9rz41b";
+
+      azure-mgmt-compute = overrideAzureMgmtPackage super.azure-mgmt-compute "8.0.0" "zip"
+        "06hmf9iq2yqpmmvw7pr9zm4v427q03i436lnin3aczizfndrk76i";
+
+      azure-mgmt-consumption = overrideAzureMgmtPackage super.azure-mgmt-consumption "2.0.0" "zip"
+        "12ai4qps73ivawh0yzvgb148ksx02r30pqlvfihx497j62gsi1cs";
+
+      azure-mgmt-containerservice = overrideAzureMgmtPackage super.azure-mgmt-containerservice "7.0.0" "zip"
+        "104w7rxv7hy84yzddbbpkjqha04ghr0zz9qy788n3wl69cj4cv1a";
+
+      azure-mgmt-iothub = overrideAzureMgmtPackage super.azure-mgmt-iothub "0.8.2" "zip"
+        "0w3w1d156rnkwjdarv3qvycklxr3z2j7lry7a3jfgj3ykzny12rq";
+
+      azure-mgmt-kusto = overrideAzureMgmtPackage super.azure-mgmt-kusto "0.3.0" "zip"
+        "1pmcdgimd66h964a3d5m2j2fbydshcwhrk87wblhwhfl3xwbgf4y";
+
+      azure-mgmt-devtestlabs = overrideAzureMgmtPackage super.azure-mgmt-devtestlabs "2.2.0" "zip"
+        "15lpyv9z8ss47rjmg1wx5akh22p9br2vckaj7jk3639vi38ac5nl";
+
+      azure-mgmt-netapp = overrideAzureMgmtPackage super.azure-mgmt-netapp "0.6.0" "zip"
+        "10ymvyj386z9bjdm2g1b5a4vfnn87ig2zm6xn2xddvbpy0jxnyfv";
+
+      azure-mgmt-dns = overrideAzureMgmtPackage super.azure-mgmt-dns "2.1.0" "zip"
+        "1l55py4fzzwhxlmnwa41gpmqk9v2ncc79w7zq11sm9a5ynrv2c1p";
+
+      azure-mgmt-network = overrideAzureMgmtPackage super.azure-mgmt-network "7.0.0" "zip"
+        "0ss5yc9k3dh78lb88nfh3z98yz1pcd8d7d7cfjlxmv4n3dlr1kij";
+
+      azure-mgmt-msi = overrideAzureMgmtPackage super.azure-mgmt-msi "0.2.0" "zip"
+        "0rvik03njz940x2hvqg6iiq8k0d88gyygsr86w8s0sa12sdbq8l6";
+
+      azure-mgmt-web = overrideAzureMgmtPackage super.azure-mgmt-web "0.42.0" "zip"
+        "0vp40i9aaw5ycz7s7qqir6jq7327f7zg9j9i8g31qkfl1h1c7pdn";
+
+      azure-mgmt-reservations = overrideAzureMgmtPackage super.azure-mgmt-reservations "0.3.2" "zip"
+        "0nksxjh5kh09dr0zw667fg8mzik4ymvfq3dipwag6pynbqr9ls4l";
+
+      azure-mgmt-security = overrideAzureMgmtPackage super.azure-mgmt-security "0.1.0" "zip"
+        "1cb466722bs0ribrirb32kc299716pl0pwivz3jyn40dd78cwhhx";
+
+      azure-mgmt-datamigration = overrideAzureMgmtPackage super.azure-mgmt-datamigration "0.1.0" "zip"
+        "1pq5rn32yvrf5kqjafnj0kc92gpfg435w2l0k7cm8gvlja4r4m77";
+
+      azure-mgmt-relay = overrideAzureMgmtPackage super.azure-mgmt-relay "0.1.0" "zip"
+        "1jss6qhvif8l5s0lblqw3qzijjf0h88agciiydaa7f4q577qgyfr";
+
+      azure-mgmt-eventhub = overrideAzureMgmtPackage super.azure-mgmt-eventhub "2.6.0" "zip"
+        "1nnp2ki4iz4f4897psmwb0v5khrwh84fgxja7nl7g73g3ym20sz8";
+
+      azure-mgmt-keyvault = overrideAzureMgmtPackage super.azure-mgmt-keyvault "1.1.0" "zip"
+        "16a0d3j5dilbp7pd7gbwf8jr46vzbjim1p9alcmisi12m4km7885";
+
+      azure-mgmt-containerregistry = overrideAzureMgmtPackage super.azure-mgmt-containerregistry "3.0.0rc7" "zip"
+        "1bzfpbz186dhnxn0blgr20xxnk67gkr8ysn2b3f1r41bq9hz97xp";
+
+      azure-mgmt-monitor = overrideAzureMgmtPackage super.azure-mgmt-monitor "0.5.2" "zip"
+        "1r01aq5rbynbc1my4qljdifjdj9h65bh8cdzgd7vm4ij7r48v9gi";
+
+      azure-mgmt-advisor =  overrideAzureMgmtPackage super.azure-mgmt-advisor "2.0.1" "zip"
+        "1wsfkprdrn22mwm24y2zlcms8ppp7jwq3s86r3ymbl29pbaxca8r";
+
+      azure-mgmt-applicationinsights = overrideAzureMgmtPackage super.azure-mgmt-applicationinsights "0.1.1" "zip"
+        "16raxr5naszrxmgbfhsvh7rqcph5cx6x3f480790m79ykvmjj0pi";
+
+      azure-mgmt-authorization = overrideAzureMgmtPackage super.azure-mgmt-authorization "0.52.0" "zip"
+        "0357laxgldb7lvvws81r8xb6mrq9dwwnr1bnwdnyj4bw6p21i9hn";
+
+      azure-mgmt-storage = overrideAzureMgmtPackage super.azure-mgmt-storage "5.0.0" "zip"
+        "1gzsscfnnfb8gxs34dq9hs339hidlzas7kgivw0234v3qz4gy9yx";
+
+      azure-mgmt-servicefabric = overrideAzureMgmtPackage super.azure-mgmt-servicefabric "0.2.0" "zip"
+        "1bcq6fcgrsvmk6q7v8mxzn1180jm2qijdqkqbv1m117zp1wj5gxj";
+
+      azure-mgmt-hdinsight = overrideAzureMgmtPackage super.azure-mgmt-hdinsight "1.1.0" "zip"
+        "0lj9dhb14dx4ag5pgd2zvrmn9y5ziq2qywvw38ccbv9g3bxpglkn";
+
+      azure-graphrbac = super.azure-graphrbac.overrideAttrs(oldAttrs: rec {
+        version = "0.60.0";
+
+        src = super.fetchPypi {
+          inherit (oldAttrs) pname;
+          inherit version;
+          sha256 = "1zna5vb887clvpyfp5439vhlz3j4z95blw9r7y86n6cfpzc65fyh";
+          extension = "zip";
+        };
+      });
+
+      azure-storage-blob = super.azure-storage-blob.overrideAttrs(oldAttrs: rec {
+        version = "1.5.0";
+        src = super.fetchPypi {
+          inherit (oldAttrs) pname;
+          inherit version;
+          sha256 = "0b15dzy75fml994gdfmaw5qcyij15gvh968mk3hg94d1wxwai1zi";
+        };
+      });
+
+      azure-storage-common = super.azure-storage-common.overrideAttrs(oldAttrs: rec {
+        version = "1.4.2";
+        src = super.fetchPypi {
+          inherit (oldAttrs) pname;
+          inherit version;
+          sha256 = "00g41b5q4ijlv02zvzjgfwrwy71cgr3lc3if4nayqmyl6xsprj2f";
+        };
+      });
+
+      # part of azure.mgmt.datalake namespace
+      azure-mgmt-datalake-analytics = super.azure-mgmt-datalake-analytics.overrideAttrs(oldAttrs: rec {
+        version = "0.2.1";
+
+        src = super.fetchPypi {
+          inherit (oldAttrs) pname;
+          inherit version;
+          sha256 = "192icfx82gcl3igr18w062744376r2ivh63c8nd7v17mjk860yac";
+          extension = "zip";
+        };
+
+        preBuild = ''
+          rm azure_bdist_wheel.py
+          substituteInPlace setup.cfg \
+            --replace "azure-namespace-package = azure-mgmt-datalake-nspkg" ""
+        '';
+      });
+
+
+
+
+
+
+
+
+
+
+
+
+    };
+  };
+in
+  py
diff --git a/pkgs/tools/admin/eksctl/default.nix b/pkgs/tools/admin/eksctl/default.nix
index 54223dfaea802..b7208d7b867b5 100644
--- a/pkgs/tools/admin/eksctl/default.nix
+++ b/pkgs/tools/admin/eksctl/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "eksctl";
-  version = "0.9.0";
+  version = "0.10.2";
 
   src = fetchFromGitHub {
     owner = "weaveworks";
     repo = pname;
     rev = version;
-    sha256 = "09r8qyc9gcc3slfldkxp91bkiyfgd6qh4di0dbnjggsqfncg34ra";
+    sha256 = "0j1kzll23rj87nabzjjhxydg95cnxlwbkqp3qivf96bv1xlby75k";
   };
 
-  modSha256 = "0y222vxxs9aw17mhif4m0z35ks9xxv90ajk9am71x85sfvkglgl0";
+  modSha256 = "18n4aimf9diy9w7f2k08cd7xr8jay6pid5mwrc24y2pqkjhgpyp7";
 
   subPackages = [ "cmd/eksctl" ];
 
diff --git a/pkgs/tools/audio/beets/default.nix b/pkgs/tools/audio/beets/default.nix
index 241e552b05c3e..9509eccabdc18 100644
--- a/pkgs/tools/audio/beets/default.nix
+++ b/pkgs/tools/audio/beets/default.nix
@@ -6,6 +6,7 @@
 # Attributes needed for tests of the external plugins
 , callPackage, beets
 
+, enableAbsubmit       ? stdenv.lib.elem stdenv.hostPlatform.system essentia-extractor.meta.platforms, essentia-extractor ? null
 , enableAcousticbrainz ? true
 , enableAcoustid       ? true
 , enableBadfiles       ? true, flac ? null, mp3val ? null
@@ -33,6 +34,7 @@
 , bashInteractive, bash-completion
 }:
 
+assert enableAbsubmit    -> essentia-extractor            != null;
 assert enableAcoustid    -> pythonPackages.pyacoustid     != null;
 assert enableBadfiles    -> flac != null && mp3val != null;
 assert enableConvert     -> ffmpeg != null;
@@ -51,6 +53,7 @@ with stdenv.lib;
 
 let
   optionalPlugins = {
+    absubmit = enableAbsubmit;
     acousticbrainz = enableAcousticbrainz;
     badfiles = enableBadfiles;
     chroma = enableAcoustid;
@@ -75,12 +78,12 @@ let
   };
 
   pluginsWithoutDeps = [
-    "absubmit" "beatport" "bench" "bpd" "bpm" "bucket" "cue" "duplicates"
-    "edit" "embedart" "export" "filefilter" "freedesktop" "fromfilename"
-    "ftintitle" "fuzzy" "hook" "ihate" "importadded" "importfeeds" "info"
-    "inline" "ipfs" "lyrics" "mbcollection" "mbsubmit" "mbsync" "metasync"
-    "missing" "permissions" "play" "plexupdate" "random" "rewrite" "scrub"
-    "smartplaylist" "spotify" "the" "types" "zero"
+    "beatport" "bench" "bpd" "bpm" "bucket" "cue" "duplicates" "edit" "embedart"
+    "export" "filefilter" "freedesktop" "fromfilename" "ftintitle" "fuzzy"
+    "hook" "ihate" "importadded" "importfeeds" "info" "inline" "ipfs" "lyrics"
+    "mbcollection" "mbsubmit" "mbsync" "metasync" "missing" "permissions" "play"
+    "plexupdate" "random" "rewrite" "scrub" "smartplaylist" "spotify" "the"
+    "types" "zero"
   ];
 
   enabledOptionalPlugins = attrNames (filterAttrs (_: id) optionalPlugins);
@@ -129,7 +132,8 @@ in pythonPackages.buildPythonApplication rec {
     pythonPackages.gst-python
     pythonPackages.pygobject3
     gobject-introspection
-  ] ++ optional enableAcoustid      pythonPackages.pyacoustid
+  ] ++ optional enableAbsubmit      essentia-extractor
+    ++ optional enableAcoustid      pythonPackages.pyacoustid
     ++ optional (enableFetchart
               || enableEmbyupdate
               || enableKodiupdate
diff --git a/pkgs/tools/backup/duplicity/default.nix b/pkgs/tools/backup/duplicity/default.nix
index c1673c8308e9f..a33067e889791 100644
--- a/pkgs/tools/backup/duplicity/default.nix
+++ b/pkgs/tools/backup/duplicity/default.nix
@@ -43,7 +43,7 @@ python2Packages.buildPythonApplication rec {
   buildInputs = [ librsync makeWrapper python2Packages.wrapPython ];
   propagatedBuildInputs = [ backblaze-b2 ] ++ (with python2Packages; [
     boto cffi cryptography ecdsa enum idna pygobject3 fasteners
-    ipaddress lockfile paramiko pyasn1 pycrypto six
+    ipaddress lockfile paramiko pyasn1 pycrypto six pydrive
   ]);
   checkInputs = [
     gnupg  # Add 'gpg' to PATH.
diff --git a/pkgs/tools/compression/lz4/default.nix b/pkgs/tools/compression/lz4/default.nix
index 3f2497cd8d227..3ce0eac3fc5c6 100644
--- a/pkgs/tools/compression/lz4/default.nix
+++ b/pkgs/tools/compression/lz4/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
     })
   ];
 
+  # TODO(@Ericson2314): Separate binaries and libraries
   outputs = [ "out" "dev" ];
 
   buildInputs = stdenv.lib.optional doCheck valgrind;
@@ -33,17 +34,27 @@ stdenv.mkDerivation rec {
     # TODO do this instead
     #"BUILD_STATIC=${if enableStatic then "yes" else "no"}"
     #"BUILD_SHARED=${if enableShared then "yes" else "no"}"
+    #"WINDRES:=${stdenv.cc.bintools.targetPrefix}windres"
   ]
     # TODO delete and do above
     ++ stdenv.lib.optional (enableStatic) "BUILD_STATIC=yes"
     ++ stdenv.lib.optional (!enableShared) "BUILD_SHARED=no"
+    ++ stdenv.lib.optional stdenv.hostPlatform.isMinGW "WINDRES:=${stdenv.cc.bintools.targetPrefix}windres"
+    # TODO make full dictionary
+    ++ stdenv.lib.optional stdenv.hostPlatform.isMinGW "TARGET_OS=MINGW"
     ;
 
   doCheck = false; # tests take a very long time
   checkTarget = "test";
 
-  # TODO remove
-  postInstall = stdenv.lib.optionalString (!enableStatic) "rm $out/lib/*.a";
+  # TODO(@Ericson2314): Make resusable setup hook for this issue on Windows.
+  postInstall =
+    stdenv.lib.optionalString stdenv.hostPlatform.isWindows ''
+      mv $out/bin/*.dll $out/lib
+      ln -s $out/lib/*.dll
+    ''
+    # TODO remove
+    + stdenv.lib.optionalString (!enableStatic) "rm $out/lib/*.a";
 
   meta = with stdenv.lib; {
     description = "Extremely fast compression algorithm";
@@ -56,6 +67,6 @@ stdenv.mkDerivation rec {
     '';
     homepage = https://lz4.github.io/lz4/;
     license = with licenses; [ bsd2 gpl2Plus ];
-    platforms = platforms.unix;
+    platforms = platforms.all;
   };
 }
diff --git a/pkgs/tools/compression/zstd/default.nix b/pkgs/tools/compression/zstd/default.nix
index 01e8525fe8fbb..a3aecf88c907b 100644
--- a/pkgs/tools/compression/zstd/default.nix
+++ b/pkgs/tools/compression/zstd/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchFromGitHub, gnugrep
+{ stdenv, fetchFromGitHub, fetchpatch, gnugrep
 , fixDarwinDylibNames
 , file
 , legacySupport ? false }:
@@ -14,11 +14,33 @@ stdenv.mkDerivation rec {
     owner = "facebook";
   };
 
-  buildInputs = stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames;
+  patches = [
+    # All 3 from https://github.com/facebook/zstd/pull/1883
+    (fetchpatch {
+      url = "https://github.com/facebook/zstd/commit/106278e7e5fafaea3b7deb4147bdc8071562d2f0.diff";
+      sha256 = "13z7id1qbc05cv1rmak7c8xrchp7jh1i623bq5pwcihg57wzcyr8";
+    })
+    (fetchpatch {
+      url = "https://github.com/facebook/zstd/commit/0ede342acc2c26f87ae962fa88e158904d4198c4.diff";
+      sha256 = "12l5xbvnzkvr76mvl1ls767paqfwbd9q1pzq44ckacfpz4f6iaap";
+      excludes = [
+        # I think line endings are causing problems, or something like that
+        "programs/windres/generate_res.bat"
+      ];
+    })
+    (fetchpatch {
+      url = "https://github.com/facebook/zstd/commit/10552eaffef84c011f67af0e04f0780b50a5ab26.diff";
+      sha256 = "1s27ravar3rn7q8abybp9733jhpsfcaci51k04da94ahahvxwiqw";
+    })
+  ] # This I didn't upstream because if you use posix threads with MinGW it will
+    # work find, and I'm not sure how to write the condition.
+    ++ stdenv.lib.optional stdenv.hostPlatform.isWindows ./mcfgthreads-no-pthread.patch;
+
+  nativeBuildInputs = stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames;
 
   makeFlags = [
     "ZSTD_LEGACY_SUPPORT=${if legacySupport then "1" else "0"}"
-  ];
+  ] ++ stdenv.lib.optional stdenv.hostPlatform.isWindows "OS=Windows";
 
   checkInputs = [ file ];
   doCheck = true;
@@ -56,7 +78,7 @@ stdenv.mkDerivation rec {
     homepage = https://facebook.github.io/zstd/;
     license = with licenses; [ bsd3 ]; # Or, at your opinion, GPL-2.0-only.
 
-    platforms = platforms.unix;
+    platforms = platforms.all;
     maintainers = with maintainers; [ orivej ];
   };
 }
diff --git a/pkgs/tools/compression/zstd/mcfgthreads-no-pthread.patch b/pkgs/tools/compression/zstd/mcfgthreads-no-pthread.patch
new file mode 100644
index 0000000000000..69921c0c7bade
--- /dev/null
+++ b/pkgs/tools/compression/zstd/mcfgthreads-no-pthread.patch
@@ -0,0 +1,13 @@
+diff --git a/programs/Makefile b/programs/Makefile
+index 7882fe8c..1e8237bb 100644
+--- a/programs/Makefile
++++ b/programs/Makefile
+@@ -107,7 +107,7 @@ HAVE_THREAD := $(shell [ "$(HAVE_PTHREAD)" -eq "1" -o -n "$(filter Windows%,$(OS
+ ifeq ($(HAVE_THREAD), 1)
+ THREAD_MSG := ==> building with threading support
+ THREAD_CPP := -DZSTD_MULTITHREAD
+-THREAD_LD := -pthread
++THREAD_LD :=
+ else
+ THREAD_MSG := $(NO_THREAD_MSG)
+ endif
diff --git a/pkgs/tools/filesystems/duff/default.nix b/pkgs/tools/filesystems/duff/default.nix
index 3981521097a94..d68ad10bd0dc1 100644
--- a/pkgs/tools/filesystems/duff/default.nix
+++ b/pkgs/tools/filesystems/duff/default.nix
@@ -33,7 +33,7 @@ stdenv.mkDerivation {
       Duff is a Unix command-line utility for quickly finding duplicates in
       a given set of files.
     '';
-    homepage = http://duff.dreda.org/;
+    homepage = https://duff.dreda.org/;
     license = licenses.zlib;
     platforms = platforms.all;
   };
diff --git a/pkgs/tools/filesystems/nixpart/0.4/default.nix b/pkgs/tools/filesystems/nixpart/0.4/default.nix
index b293b6d8146d3..129283e83ebe3 100644
--- a/pkgs/tools/filesystems/nixpart/0.4/default.nix
+++ b/pkgs/tools/filesystems/nixpart/0.4/default.nix
@@ -73,6 +73,5 @@ in buildPythonApplication rec {
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.aszlig ];
     platforms = platforms.linux;
-    broken = true;
   };
 }
diff --git a/pkgs/tools/misc/vector/default.nix b/pkgs/tools/misc/vector/default.nix
index 8c5ba4100c640..b5e3416503030 100644
--- a/pkgs/tools/misc/vector/default.nix
+++ b/pkgs/tools/misc/vector/default.nix
@@ -6,20 +6,31 @@
     (if stdenv.isAarch64
      then [ "jemallocator" ]
      else [ "leveldb" "jemallocator" ])
+
+# Unfortunately, buildRustPackage does not really support using overrideAttrs
+# on the underlying fields, because it doesn't pass them to stdenv.mkDerivation
+# as an attr. making it a parameter is the only way to do so. sigh
+
+, version ? "0.5.0"
+
+, srcRef ? {
+    rev    = "refs/tags/v${version}";
+    sha256 = "0niyxlvphn3awrpfh1hbqy767cckgjzyjrkqjxj844czxhh1hhff";
+  }
+
+, cargoSha256 ? "0bdgan891hrah54g6aaysqizkxrfsbidnxihai0i7h7knzq9gsk5"
+, patches ? []
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "vector";
-  version = "0.5.0";
-
+  inherit version cargoSha256 patches;
   src = fetchFromGitHub {
-    owner  = "timberio";
-    repo   = pname;
-    rev    = "refs/tags/v${version}";
-    sha256 = "0niyxlvphn3awrpfh1hbqy767cckgjzyjrkqjxj844czxhh1hhff";
+    owner = "timberio";
+    repo  = pname;
+    inherit (srcRef) rev sha256;
   };
 
-  cargoSha256 = "0bdgan891hrah54g6aaysqizkxrfsbidnxihai0i7h7knzq9gsk5";
   buildInputs = [ openssl pkgconfig protobuf ]
                 ++ stdenv.lib.optional stdenv.isDarwin [ Security libiconv ];
 
diff --git a/pkgs/tools/misc/youtube-dl/default.nix b/pkgs/tools/misc/youtube-dl/default.nix
index bc198eb595b67..da54b885bfc20 100644
--- a/pkgs/tools/misc/youtube-dl/default.nix
+++ b/pkgs/tools/misc/youtube-dl/default.nix
@@ -18,11 +18,11 @@ buildPythonPackage rec {
   # The websites youtube-dl deals with are a very moving target. That means that
   # downloads break constantly. Because of that, updates should always be backported
   # to the latest stable release.
-  version = "2019.11.05";
+  version = "2019.11.22";
 
   src = fetchurl {
     url = "https://yt-dl.org/downloads/${version}/${pname}-${version}.tar.gz";
-    sha256 = "129461i4103slqj3nq69djnlmgjj3lfgmazn41avc5g967w29b85";
+    sha256 = "0avdlp0dc9p3lm68mfnic21x6blxmr0zvlxa4br5vj4y4sckq2m8";
   };
 
   nativeBuildInputs = [ makeWrapper ];
diff --git a/pkgs/tools/security/gnome-keysign/default.nix b/pkgs/tools/security/gnome-keysign/default.nix
index 04fa923ce2cc1..2c216c0a40446 100644
--- a/pkgs/tools/security/gnome-keysign/default.nix
+++ b/pkgs/tools/security/gnome-keysign/default.nix
@@ -1,5 +1,6 @@
 { stdenv
 , fetchFromGitLab
+, fetchpatch
 , python3
 , wrapGAppsHook
 , gobject-introspection
@@ -11,22 +12,30 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "gnome-keysign";
-  version = "1.0.1";
+  version = "1.2.0";
 
   src = fetchFromGitLab {
     domain = "gitlab.gnome.org";
     owner = "GNOME";
     repo = pname;
     rev = version;
-    sha256 = "0iy70dskd7wly37lpb2ypd9phhyml5j3c7rzajii4f2s7zgb3abg";
+    sha256 = "1sjphi1lsivg9jmc8khbcqa9w6608pkrccz4nz3rlcc54hn0k0sj";
   };
 
+  patches = [
+    # fix build failure due to missing import
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/gnome-keysign/commit/216c3677e68960afc517edc00529323e85909323.patch";
+      sha256 = "1w410gvcridbq26sry7fxn49v59ss2lc0w5ab7csva8rzs1nc990";
+    })
+  ];
+
   nativeBuildInputs = [
     wrapGAppsHook
     gobject-introspection
   ] ++ (with python3.pkgs; [
     Babel
-    lxml
+    babelgladeextractor
   ]);
 
   buildInputs = [
diff --git a/pkgs/tools/security/sequoia/default.nix b/pkgs/tools/security/sequoia/default.nix
index 554ed93f0934e..21403225aad2e 100644
--- a/pkgs/tools/security/sequoia/default.nix
+++ b/pkgs/tools/security/sequoia/default.nix
@@ -9,16 +9,16 @@ assert pythonSupport -> pythonPackages != null;
 
 rustPlatform.buildRustPackage rec {
   pname = "sequoia";
-  version = "0.10.0";
+  version = "0.11.0";
 
   src = fetchFromGitLab {
     owner = "sequoia-pgp";
     repo = pname;
     rev = "v${version}";
-    sha256 = "0gvczghyik56jlnb8cz7jg2l3nbm519gf19g7l5blxci3009v23d";
+    sha256 = "1k0pr3vn77fpfzyvbg7xb4jwm6srsiws9bsd8q7i3hl6j56a880i";
   };
 
-  cargoSha256 = "0dk9sjcbmygbdpwqnah5krli1p9j5hahgiqrca9c0kfpfiwgx62q";
+  cargoSha256 = "15bhg7b88rq8p0bn6y5wwv2l42kqb1qyx2s3kw0r0v0wadf823q3";
 
   nativeBuildInputs = [
     pkgconfig
@@ -87,6 +87,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ minijackson doronbehar ];
     platforms = platforms.all;
-    broken = true;
+    broken = stdenv.targetPlatform.isDarwin;
   };
 }
diff --git a/pkgs/tools/security/sops/default.nix b/pkgs/tools/security/sops/default.nix
index b132066fee526..8aa2e219e7df4 100644
--- a/pkgs/tools/security/sops/default.nix
+++ b/pkgs/tools/security/sops/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "sops";
-  version = "3.4.0";
+  version = "3.5.0";
 
   src = fetchFromGitHub {
-    rev = version;
+    rev = "v${version}";
     owner = "mozilla";
     repo = pname;
-    sha256 = "1mrqf9xgv88v919x7gz9l1x70xwvp6cfz3zp9ip1nj2pzn6ixz3d";
+    sha256 = "1515bk0fl0pvdkp402l51gdg63bmqlh89sglss6prc1qqvv5v2xy";
   };
 
-  modSha256 = "13ja8nxycmdjnrnsxdd1qs06x408aqr4im127a6y433pkx2dg7gc";
+  modSha256 = "0vhxd3dschj5i9sig6vpxzbl59cas1qa843akzmjnfjrrafb916y";
 
   meta = with stdenv.lib; {
     homepage = "https://github.com/mozilla/sops";
diff --git a/pkgs/tools/text/kdiff3/default.nix b/pkgs/tools/text/kdiff3/default.nix
index aa53aeb42061f..d55ed89e633dc 100644
--- a/pkgs/tools/text/kdiff3/default.nix
+++ b/pkgs/tools/text/kdiff3/default.nix
@@ -1,7 +1,7 @@
 {
   mkDerivation, lib, fetchurl,
   extra-cmake-modules, kdoctools, wrapGAppsHook,
-  kcrash, kconfig, kinit, kparts
+  kcrash, kconfig, kinit, kparts, kiconthemes
 }:
 
 mkDerivation rec {
@@ -15,7 +15,7 @@ mkDerivation rec {
 
   nativeBuildInputs = [ extra-cmake-modules kdoctools wrapGAppsHook ];
 
-  propagatedBuildInputs = [ kconfig kcrash kinit kparts ];
+  propagatedBuildInputs = [ kconfig kcrash kinit kparts kiconthemes ];
 
   meta = with lib; {
     homepage = http://kdiff3.sourceforge.net/;
diff --git a/pkgs/tools/text/mdbook/default.nix b/pkgs/tools/text/mdbook/default.nix
index 3123d31a7b54c..b21523ce863aa 100644
--- a/pkgs/tools/text/mdbook/default.nix
+++ b/pkgs/tools/text/mdbook/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "mdbook";
-  version = "0.3.1";
+  version = "0.3.5";
 
   src = fetchFromGitHub {
     owner = "rust-lang-nursery";
     repo = "mdBook";
     rev = "v${version}";
-    sha256 = "0py69267jbs6b7zw191hcs011cm1v58jz8mglqx3ajkffdfl3ghw";
+    sha256 = "0gcrv54iswphzxxkmak1c7pmmpakiri6jk50j4bxrsplwjr76f7n";
   };
 
-  cargoSha256 = "0qwhc42a86jpvjcaysmfcw8kmwa150lmz01flmlg74g6qnimff5m";
+  cargoSha256 = "00grlxjz61vxinr18f28ga6610yjxcq48lr75wmyc5wq317j12fn";
 
   buildInputs = stdenv.lib.optionals stdenv.isDarwin [ CoreServices ];