summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/development/python-modules/ansible/core.nix83
-rw-r--r--pkgs/top-level/python-packages.nix2
2 files changed, 85 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/ansible/core.nix b/pkgs/development/python-modules/ansible/core.nix
new file mode 100644
index 00000000000..690d5a1725d
--- /dev/null
+++ b/pkgs/development/python-modules/ansible/core.nix
@@ -0,0 +1,83 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, installShellFiles
+, ansible-collections
+, cryptography
+, jinja2
+, junit-xml
+, lxml
+, ncclient
+, packaging
+, paramiko
+, pexpect
+, psutil
+, pycrypto
+, pyyaml
+, requests
+, resolvelib
+, scp
+, windowsSupport ? false, pywinrm
+, xmltodict
+}:
+
+buildPythonPackage rec {
+  pname = "ansible-core";
+  version = "2.11.0";
+
+  src = fetchPypi {
+    inherit pname version;
+    sha256 = "1if9cybdicjhrfzi6nndqakb4sh3mw1fijhvbzbsq7ki22vwww4l";
+  };
+
+  # ansible_connection is already wrapped, so don't pass it through
+  # the python interpreter again, as it would break execution of
+  # connection plugins.
+  postPatch = ''
+    substituteInPlace lib/ansible/executor/task_executor.py \
+      --replace "[python," "["
+
+    substituteInPlace requirements.txt \
+      --replace "resolvelib >= 0.5.3, < 0.6.0" "resolvelib"
+  '';
+
+  nativeBuildInputs = [
+    installShellFiles
+  ];
+
+  propagatedBuildInputs = [
+    # depend on ansible-collections instead of the other way around
+    ansible-collections
+    # from requirements.txt
+    cryptography
+    jinja2
+    packaging
+    pyyaml
+    resolvelib
+    # optional dependencies
+    junit-xml
+    lxml
+    ncclient
+    paramiko
+    pexpect
+    psutil
+    pycrypto
+    requests
+    scp
+    xmltodict
+  ] ++ lib.optional windowsSupport pywinrm;
+
+  postInstall = ''
+    installManPage docs/man/man1/*.1
+  '';
+
+  # internal import errors, missing dependencies
+  doCheck = false;
+
+  meta = with lib; {
+    description = "Radically simple IT automation";
+    homepage = "https://www.ansible.com";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ hexa ];
+  };
+}
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index 6e02706d248..ca9cd14d36d 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -417,6 +417,8 @@ in {
 
   ansible-collections = callPackage ../development/python-modules/ansible/collections.nix { };
 
+  ansible-core = callPackage ../development/python-modules/ansible/core.nix { };
+
   ansible-kernel = callPackage ../development/python-modules/ansible-kernel { };
 
   ansible-lint = callPackage ../development/python-modules/ansible-lint { };