biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / science / biology / neuron / default.nix
blobfe5de3c68fab5f9b543c0ecd635996e57eacaccf
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , readline
5 , xorg
6 , mpi
7 , cmake
8 , bison
9 , flex
10 , git
11 , perl
12 , gsl
13 , xcbuild
14 , python3
15 , useMpi ? false
16 , useIv ? true
17 , useCore ? false
18 , useRx3d ? false
20 let
21   inherit (lib.lists) optionals;
22   inherit (lib.strings) cmakeBool;
24 stdenv.mkDerivation (finalAttrs: {
25   pname = "neuron";
26   version = "8.2.6";
28   # format is for pythonModule conversion
29   format = "other";
31   nativeBuildInputs = [
32     cmake
33     bison
34     flex
35     git
36   ] ++ optionals useCore [ perl gsl ]
37   ++ optionals stdenv.hostPlatform.isDarwin [ xcbuild ];
39   buildInputs = optionals useIv [
40     xorg.libX11.dev
41     xorg.libXcomposite.dev
42     xorg.libXext.dev
43   ];
45   propagatedBuildInputs = [
46     readline
47     python3
48     python3.pkgs.wheel
49     python3.pkgs.setuptools
50     python3.pkgs.scikit-build
51     python3.pkgs.matplotlib
52   ] ++ optionals useMpi [
53     mpi
54   ] ++ optionals useMpi [
55     python3.pkgs.mpi4py
56   ] ++ optionals useRx3d [
57     python3.pkgs.cython_0 # NOTE: cython<3 is required as of 8.2.6
58     python3.pkgs.numpy
59   ];
61   # Patch build shells for cmake (bin, src, cmake) and submodules (external)
62   postPatch = ''
63     patchShebangs ./bin ./src ./external ./cmake
64     substituteInPlace external/coreneuron/extra/nrnivmodl_core_makefile.in \
65       --replace-fail \
66         "DESTDIR =" \
67         "DESTDIR = $out"
68   '';
70   cmakeFlags = [
71     (cmakeBool "NRN_ENABLE_INTERVIEWS" useIv)
72     (cmakeBool "NRN_ENABLE_MPI" useMpi)
73     (cmakeBool "NRN_ENABLE_CORENEURON" useCore)
74     (cmakeBool "NRN_ENABLE_RX3D" useRx3d)
75   ];
77   postInstall = ''
78     mkdir -p $out/${python3.sitePackages}
79     mv $out/lib/python/* $out/${python3.sitePackages}/
80     rm -rf $out/lib/python build
81     for entry in $out/lib/*.so; do
82       # remove references to build
83       patchelf --set-rpath $(patchelf --print-rpath $entry | tr ':' '\n' | sed '/^\/build/d' | tr '\n' ':') $entry
84     done
85   '';
87   src = fetchFromGitHub {
88     owner = "neuronsimulator";
89     repo = "nrn";
90     rev = finalAttrs.version;
91     fetchSubmodules = true;
92     hash = "sha256-xASBpsF8rIzrb5G+4Qi6rvWC2wqL7nAGlSeMsBAI6WM=";
93   };
95   meta = with lib; {
96     description = "Simulation environment for empirically-based simulations of neurons and networks of neurons";
97     longDescription = ''
98       NEURON is a simulation environment for developing and exercising models of
99       neurons and networks of neurons. It is particularly well-suited to problems where
100       cable properties of cells play an important role, possibly including extracellular
101       potential close to the membrane), and where cell membrane properties are complex,
102       involving many ion-specific channels, ion accumulation, and second messengers
103     '';
104     sourceProvenance = with sourceTypes; [ fromSource ];
105     license = licenses.bsd3;
106     homepage = "http://www.neuron.yale.edu/neuron";
107     maintainers = with maintainers; [ adev davidcromp ];
108     platforms = platforms.all;
109   };