at master 1.9 kB view raw
1{ 2 lib, 3 buildPythonPackage, 4 pythonOlder, 5 fetchFromGitHub, 6 nodejs, 7 notebook, 8 ipywidgets, 9 ipykernel, 10 numpy, 11 runCommand, 12 jupyter-packaging, 13 jupyter-core, 14 notebook-shim, 15 setuptools-scm, 16 writableTmpDirAsHomeHook, 17 pytestCheckHook, 18 mock, 19 pillow, 20 ase, 21}: 22let 23 nodeModules = runCommand "nglview-node-modules" { } '' 24 mkdir -p $out/node_modules/@jupyter-widgets/base 25 cat > $out/node_modules/@jupyter-widgets/base/package.json <<EOF 26 { 27 "name": "@jupyter-widgets/base", 28 "version": "4.1.1", 29 "main": "lib/index.js" 30 } 31 EOF 32 ''; 33in 34buildPythonPackage rec { 35 pname = "nglview"; 36 version = "3.1.4"; 37 pyproject = true; 38 39 disabled = pythonOlder "3.7"; 40 41 src = fetchFromGitHub { 42 owner = "nglviewer"; 43 repo = "nglview"; 44 tag = "v${version}"; 45 hash = "sha256-QY7rn6q67noWeoLn0RU2Sn5SeJON+Br/j+aNMlK1PDo="; 46 }; 47 48 build-system = [ 49 nodejs 50 jupyter-packaging 51 jupyter-core 52 notebook-shim 53 setuptools-scm 54 writableTmpDirAsHomeHook 55 ]; 56 57 dependencies = [ 58 notebook 59 ipywidgets 60 ipykernel 61 numpy 62 ]; 63 64 preBuild = '' 65 cd js 66 cp -r ${nodeModules}/node_modules . 67 cd .. 68 ''; 69 70 pythonImportsCheck = [ "nglview" ]; 71 72 nativeCheckInputs = [ 73 pytestCheckHook 74 mock 75 pillow 76 ase 77 ]; 78 79 disabledTests = [ 80 # requires parmed 81 "test_show_schrodinger" 82 # requires older moviepy 83 "test_movie_maker" 84 ]; 85 86 postInstall = '' 87 mkdir -p $out/share/jupyter/nbextensions 88 cp -r nglview/static $out/share/jupyter/nbextensions/nglview-js-widgets 89 ''; 90 91 meta = { 92 description = "IPython/Jupyter widget to interactively view molecular structures and trajectories"; 93 homepage = "https://github.com/nglviewer/nglview"; 94 changelog = "https://github.com/nglviewer/nglview/releases/tag/v${version}"; 95 license = lib.licenses.mit; 96 maintainers = with lib.maintainers; [ guelakais ]; 97 }; 98}