1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 fetchpatch,
6
7 # nativeBuildInputs
8 cmake,
9 libsForQt5,
10 pkg-config,
11 wrapGAppsHook3,
12
13 # buildInputs
14 opencv,
15 pcl,
16 liblapack,
17 xorg,
18 libusb1,
19 yaml-cpp,
20 libnabo,
21 libpointmatcher,
22 eigen,
23 g2o,
24 ceres-solver,
25 octomap,
26 freenect,
27 libdc1394,
28 libGL,
29 libGLU,
30 librealsense,
31 vtkWithQt5,
32 zed-open-capture,
33 hidapi,
34
35 # passthru
36 gitUpdater,
37}:
38
39stdenv.mkDerivation (finalAttrs: {
40 pname = "rtabmap";
41 version = "0.22.1";
42
43 src = fetchFromGitHub {
44 owner = "introlab";
45 repo = "rtabmap";
46 tag = finalAttrs.version;
47 hash = "sha256-6kDjIfUgyaqrsVAWO6k0h1qIDN/idMOJJxLpqMQ6DFY=";
48 };
49
50 nativeBuildInputs = [
51 cmake
52 libsForQt5.wrapQtAppsHook
53 pkg-config
54 wrapGAppsHook3
55 ];
56 buildInputs = [
57 ## Required
58 opencv
59 opencv.cxxdev
60 pcl
61 liblapack
62 xorg.libSM
63 xorg.libICE
64 xorg.libXt
65
66 ## Optional
67 libusb1
68 eigen
69 g2o
70 ceres-solver
71 yaml-cpp
72 libnabo
73 libpointmatcher
74 octomap
75 freenect
76 libdc1394
77 librealsense
78 libsForQt5.qtbase
79 libGL
80 libGLU
81 vtkWithQt5
82 zed-open-capture
83 hidapi
84 ];
85
86 # Configure environment variables
87 NIX_CFLAGS_COMPILE = "-Wno-c++20-extensions -I${vtkWithQt5}/include/vtk";
88
89 cmakeFlags = [
90 (lib.cmakeFeature "VTK_QT_VERSION" "5")
91 (lib.cmakeFeature "VTK_DIR" "${vtkWithQt5}/lib/cmake/vtk-${lib.versions.majorMinor vtkWithQt5.version}")
92 (lib.cmakeFeature "CMAKE_INCLUDE_PATH" "${vtkWithQt5}/include/vtk:${pcl}/include/pcl-${lib.versions.majorMinor pcl.version}")
93 ];
94
95 passthru = {
96 updateScript = gitUpdater { };
97 };
98
99 meta = {
100 description = "Real-Time Appearance-Based 3D Mapping";
101 homepage = "https://introlab.github.io/rtabmap/";
102 changelog = "https://github.com/introlab/rtabmap/releases/tag/${finalAttrs.version}";
103 license = lib.licenses.bsd3;
104 maintainers = with lib.maintainers; [ marius851000 ];
105 platforms = with lib.platforms; linux;
106 };
107})