-
Notifications
You must be signed in to change notification settings - Fork 4
/
build.nix
92 lines (78 loc) · 1.99 KB
/
build.nix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
{ pkgs ? import <nixpkgs> {}, pythonPackages ? "python3Packages" }:
rec {
package = pythonPackages.buildPythonPackage rec {
pname = "lammps-cython";
version = "master";
disabled = pythonPackages.isPy27;
src = builtins.filterSource
(path: _: !builtins.elem (builtins.baseNameOf path) [".git" "result" "docs"])
./.;
buildInputs = with pythonPackages; [
pytestrunner
pkgs.lammps-mpi
cython
];
checkInputs = with pythonPackages; [
pytest
pytestcov
pkgs.openssh
pymatgen
ase
gsd
];
propagatedBuildInputs = with pythonPackages; [
numpy
mpi4py
];
postConfigure = ''
echo "Creating lammps.cfg file..."
cat << EOF > lammps.cfg
[lammps]
lammps_include_dir = ${pkgs.lammps-mpi}/include
lammps_library_dir = ${pkgs.lammps-mpi}/lib
lammps_library = lammps_mpi
[mpi]
mpi_include_dir = ${pythonPackages.mpi4py.mpi}/include
mpi_library_dir = ${pythonPackages.mpi4py.mpi}/lib
mpi_library = mpi
EOF
'';
checkPhase = ''
pytest --pkg-molecule
'';
};
docs = pkgs.stdenv.mkDerivation {
name = "docs";
version = "master";
src = builtins.filterSource
(path: _: !builtins.elem (builtins.baseNameOf path) [".git" "result"])
./.;
buildInputs = with pythonPackages; [
package
pkgs.openssh
sphinx
sphinx_rtd_theme
];
buildPhase = ''
cd docs;
sphinx-apidoc -o source/ ../lammps
sphinx-build -b html -d build/doctrees . build/html
'';
installPhase = ''
mkdir -p $out
cp -r build/html/* $out
touch $out/.nojekyll
'';
};
docker = pkgs.dockerTools.buildLayeredImage {
name = "lammps-cython";
tag = "latest";
contents = [
(pythonPackages.python.withPackages
(ps: with ps; [ jupyterlab package ase pymatgen gsd ]))
pkgs.openmpi
];
config.Cmd = [ "ipython" ];
maxLayers = 120;
};
}