anvil-editor: init at 0.4
[NixPkgs.git] / pkgs / applications / science / biology / mrtrix / default.nix
blobe17aa3ca038c7125103aa2161f7ba397533b816a
1 { stdenv
2 , lib
3 , fetchFromGitHub
4 , python
5 , makeWrapper
6 , eigen
7 , fftw
8 , libtiff
9 , libpng
10 , zlib
11 , ants
12 , bc
13 , qt5
14 , libGL
15 , libGLU
16 , libX11
17 , libXext
18 , less
19 , withGui ? true
22 stdenv.mkDerivation rec {
23   pname = "mrtrix";
24   version = "3.0.4";
26   src = fetchFromGitHub {
27     owner = "MRtrix3";
28     repo = "mrtrix3";
29     rev = "refs/tags/${version}";
30     hash = "sha256-87zBAoBLWQPccGS37XyQ8H0GhL01k8GQFgcLL6IwbcM=";
31     fetchSubmodules = true;
32   };
34   nativeBuildInputs = [ eigen makeWrapper ] ++ lib.optional withGui qt5.wrapQtAppsHook;
36   buildInputs = [
37     ants
38     python
39     fftw
40     libtiff
41     libpng
42     zlib
43   ] ++ lib.optionals withGui [
44     libGL
45     libGLU
46     libX11
47     libXext
48     qt5.qtbase
49     qt5.qtsvg
50   ];
52   nativeInstallCheckInputs = [ bc ];
54   postPatch = ''
55     patchShebangs ./build ./configure ./run_tests ./bin/*
57     # patching interpreters before fixup is needed for tests:
58     patchShebangs ./bin/*
59     patchShebangs testing/binaries/data/vectorstats/*py
61     substituteInPlace ./run_tests  \
62       --replace 'git submodule update --init $datadir >> $LOGFILE 2>&1' ""
64     substituteInPlace ./build  \
65       --replace '"less -RX "' '"${less}/bin/less -RX "'
66   '';
68   configurePhase = ''
69     export EIGEN_CFLAGS="-isystem ${eigen}/include/eigen3"
70     unset LD  # similar to https://github.com/MRtrix3/mrtrix3/issues/1519
71     ./configure ${lib.optionalString (!withGui) "-nogui"};
72   '';
74   buildPhase = ''
75     ./build
76     (cd testing && ../build)
77   '';
79   installCheckPhase = ''
80     ./run_tests units
81     ./run_tests binaries
83     # can also `./run_tests scripts`, but this fails due to lack of FSL package
84     # (and there's no convenient way to disable individual tests)
85   '';
86   doInstallCheck = true;
88   installPhase = ''
89     runHook preInstall
90     mkdir -p $out
91     cp -ar lib $out/lib
92     cp -ar bin $out/bin
93     runHook postInstall
94   '';
96   postInstall = ''
97     for prog in $out/bin/*; do
98       if [[ -x "$prog" ]]; then
99         wrapProgram $prog --prefix PATH : ${lib.makeBinPath [ ants ]}
100       fi
101     done
102   '';
104   meta = with lib; {
105     broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
106     homepage = "https://github.com/MRtrix3/mrtrix3";
107     description = "Suite of tools for diffusion imaging";
108     maintainers = with maintainers; [ bcdarwin ];
109     platforms = platforms.linux;
110     license   = licenses.mpl20;
111   };