1{
2 lib,
3 buildPythonPackage,
4 fetchPypi,
5 writeText,
6 setuptools,
7 ipywidgets,
8 six,
9 docopt,
10 tqdm,
11 jupyter,
12 psutil,
13 pyyaml,
14 ansible-runner,
15 ansible,
16 python,
17}:
18
19let
20 kernelSpecFile = writeText "kernel.json" (
21 builtins.toJSON {
22 argv = [
23 python.interpreter
24 "-m"
25 "ansible_kernel"
26 "-f"
27 "{connection_file}"
28 ];
29 codemirror_mode = "yaml";
30 display_name = "Ansible";
31 language = "ansible";
32 }
33 );
34in
35buildPythonPackage rec {
36 pname = "ansible-kernel";
37 version = "1.0.0";
38 pyproject = true;
39
40 src = fetchPypi {
41 inherit pname version;
42 hash = "sha256-UJjm9FpmXSznXtaIR2rVv5YJS/H83FvRkNz09vwoe0c=";
43 };
44
45 build-system = [ setuptools ];
46
47 dependencies = [
48 ipywidgets
49 six
50 docopt
51 tqdm
52 jupyter
53 psutil
54 pyyaml
55 ansible-runner
56 ansible
57 ];
58
59 postPatch = ''
60 # remove when merged
61 # https://github.com/ansible/ansible-jupyter-kernel/pull/82
62 touch LICENSE.md
63
64 # remove custom install
65 sed -i "s/cmdclass={'install': Installer},//" setup.py
66 '';
67
68 # tests hang with launched kernel
69 doCheck = false;
70
71 # install kernel manually
72 postInstall = ''
73 mkdir -p $out/share/jupyter/kernels/ansible/
74 ln -s ${kernelSpecFile} $out/share/jupyter/kernels/ansible/kernel.json
75 '';
76
77 meta = with lib; {
78 description = "Ansible kernel for Jupyter";
79 homepage = "https://github.com/ansible/ansible-jupyter-kernel";
80 license = licenses.asl20;
81 maintainers = [ ];
82 };
83}