1{
2 buildPythonPackage,
3 lib,
4 fetchFromGitHub,
5 gfortran,
6 makeWrapper,
7 setuptools,
8 numpy,
9 scipy,
10 distutils,
11 pytestCheckHook,
12 mock,
13 pytest-mock,
14 pythonAtLeast,
15}:
16
17buildPythonPackage rec {
18 pname = "i-pi";
19 version = "3.0";
20 pyproject = true;
21
22 src = fetchFromGitHub {
23 owner = "i-pi";
24 repo = "i-pi";
25 rev = "refs/tags/v${version}";
26 hash = "sha256-SJ0qTwwdIOR1nXs9MV6O1oxJPR6/6H86wscDy/sLc/g=";
27 };
28
29 build-system = [ setuptools ];
30
31 nativeBuildInputs = [
32 gfortran
33 makeWrapper
34 ];
35
36 dependencies = [
37 numpy
38 scipy
39 ];
40
41 nativeCheckInputs = [
42 pytestCheckHook
43 mock
44 pytest-mock
45 ] ++ lib.optional (pythonAtLeast "3.12") distutils;
46
47 pytestFlagsArray = [ "ipi_tests/unit_tests" ];
48
49 postFixup = ''
50 wrapProgram $out/bin/i-pi \
51 --set IPI_ROOT $out
52 '';
53
54 meta = with lib; {
55 description = "Universal force engine for ab initio and force field driven (path integral) molecular dynamics";
56 license = with licenses; [
57 gpl3Only
58 mit
59 ];
60 homepage = "http://ipi-code.org/";
61 platforms = platforms.linux;
62 maintainers = [ maintainers.sheepforce ];
63 };
64}