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