about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/python-modules/pre-commit/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/pre-commit/default.nix')
-rw-r--r--nixpkgs/pkgs/development/python-modules/pre-commit/default.nix63
1 files changed, 63 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/pre-commit/default.nix b/nixpkgs/pkgs/development/python-modules/pre-commit/default.nix
new file mode 100644
index 000000000000..a933093bef42
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/pre-commit/default.nix
@@ -0,0 +1,63 @@
+{ lib, fetchPypi, buildPythonPackage, pythonOlder
+, aspy-yaml
+, cached-property
+, cfgv
+, futures
+, identify
+, importlib-metadata
+, importlib-resources
+, isPy27
+, nodeenv
+, python
+, six
+, toml
+, virtualenv
+}:
+
+buildPythonPackage rec {
+  pname = "pre-commit";
+  version = "2.4.0";
+  disabled = isPy27;
+
+  src = fetchPypi {
+    inherit version;
+    pname = "pre_commit";
+    sha256 = "1l0lcl3l2544m2k8jlmblfsjn0p2hdxrzzwy646xpvp0rcs2wgkh";
+  };
+
+  patches = [
+    ./hook-tmpl-use-the-hardcoded-path-to-pre-commit.patch
+    ./languages-use-the-hardcoded-path-to-python-binaries.patch
+  ];
+
+  propagatedBuildInputs = [
+    aspy-yaml
+    cached-property
+    cfgv
+    identify
+    nodeenv
+    six
+    toml
+    virtualenv
+  ] ++ lib.optional (pythonOlder "3.8") importlib-metadata
+    ++ lib.optional (pythonOlder "3.7") importlib-resources;
+
+  # slow and impure
+  doCheck = false;
+
+  preFixup = ''
+    substituteInPlace $out/${python.sitePackages}/pre_commit/resources/hook-tmpl \
+      --subst-var-by pre-commit $out
+    substituteInPlace $out/${python.sitePackages}/pre_commit/languages/python.py \
+      --subst-var-by virtualenv ${virtualenv}
+    substituteInPlace $out/${python.sitePackages}/pre_commit/languages/node.py \
+      --subst-var-by nodeenv ${nodeenv}
+  '';
+
+  meta = with lib; {
+    description = "A framework for managing and maintaining multi-language pre-commit hooks";
+    homepage = "https://pre-commit.com/";
+    license = licenses.mit;
+    maintainers = with maintainers; [ borisbabic ];
+  };
+}