nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 installShellFiles,
6 pkg-config,
7 qmake,
8 qttools,
9 boost,
10 libGLU,
11 muparser,
12 qtbase,
13 qtscript,
14 qtsvg,
15 qtxmlpatterns,
16 qtmacextras,
17 wrapQtAppsHook,
18}:
19
20stdenv.mkDerivation rec {
21 pname = "qcad";
22 version = "3.32.3.1";
23
24 src = fetchFromGitHub {
25 name = "qcad-${version}-src";
26 owner = "qcad";
27 repo = "qcad";
28 rev = "v${version}";
29 hash = "sha256-YK5x0TbmJYOvciDZGj4rHN4bo89oS1t2Zulk9kJscj8=";
30 };
31
32 patches = [
33 # Patch directory lookup, remove __DATE__ and executable name
34 ./application-dir.patch
35 ];
36
37 postPatch = ''
38 if ! [ -d src/3rdparty/qt-labs-qtscriptgenerator-${qtbase.version} ]; then
39 mkdir src/3rdparty/qt-labs-qtscriptgenerator-${qtbase.version}
40 cp \
41 src/3rdparty/qt-labs-qtscriptgenerator-5.14.0/qt-labs-qtscriptgenerator-5.14.0.pro \
42 src/3rdparty/qt-labs-qtscriptgenerator-${qtbase.version}/qt-labs-qtscriptgenerator-${qtbase.version}.pro
43 fi
44 '';
45
46 nativeBuildInputs = [
47 installShellFiles
48 pkg-config
49 qmake
50 qttools
51 wrapQtAppsHook
52 ];
53
54 buildInputs = [
55 boost
56 libGLU
57 muparser
58 qtbase
59 qtscript
60 qtsvg
61 qtxmlpatterns
62 ]
63 ++ lib.optionals stdenv.hostPlatform.isDarwin [
64 qtmacextras
65 ];
66
67 qmakeFlags = [
68 "MUPARSER_DIR=${muparser}"
69 "INSTALLROOT=$(out)"
70 "BOOST_DIR=${boost.dev}"
71 "QMAKE_CXXFLAGS=-std=c++14"
72 ];
73
74 qtWrapperArgs =
75 lib.optionals stdenv.hostPlatform.isLinux [
76 "--prefix LD_LIBRARY_PATH : ${placeholder "out"}/lib"
77 ]
78 ++ lib.optionals stdenv.hostPlatform.isDarwin [
79 "--prefix DYLD_LIBRARY_PATH : ${placeholder "out"}/lib"
80 ];
81
82 installPhase = ''
83 runHook preInstall
84 ''
85 + lib.optionalString stdenv.hostPlatform.isLinux ''
86 install -Dm555 release/qcad-bin $out/bin/qcad
87 ''
88 + lib.optionalString stdenv.hostPlatform.isDarwin ''
89 install -Dm555 release/QCAD.app/Contents/MacOS/QCAD $out/bin/qcad
90 mkdir -p $out/lib
91 ''
92 + ''
93 install -Dm555 -t $out/lib release/libspatialindexnavel${stdenv.hostPlatform.extensions.sharedLibrary}
94 install -Dm555 -t $out/lib release/libqcadcore${stdenv.hostPlatform.extensions.sharedLibrary}
95 install -Dm555 -t $out/lib release/libqcadentity${stdenv.hostPlatform.extensions.sharedLibrary}
96 install -Dm555 -t $out/lib release/libqcadgrid${stdenv.hostPlatform.extensions.sharedLibrary}
97 install -Dm555 -t $out/lib release/libqcadsnap${stdenv.hostPlatform.extensions.sharedLibrary}
98 install -Dm555 -t $out/lib release/libqcadoperations${stdenv.hostPlatform.extensions.sharedLibrary}
99 install -Dm555 -t $out/lib release/libqcadstemmer${stdenv.hostPlatform.extensions.sharedLibrary}
100 install -Dm555 -t $out/lib release/libqcadspatialindex${stdenv.hostPlatform.extensions.sharedLibrary}
101 install -Dm555 -t $out/lib release/libqcadgui${stdenv.hostPlatform.extensions.sharedLibrary}
102 install -Dm555 -t $out/lib release/libqcadecmaapi${stdenv.hostPlatform.extensions.sharedLibrary}
103
104 install -Dm444 -t $out/share/applications qcad.desktop
105 install -Dm644 -t $out/share/pixmaps scripts/qcad_icon.png
106
107 cp -r scripts $out/lib
108 cp -r plugins $out/lib/plugins
109 cp -r patterns $out/lib/patterns
110 cp -r fonts $out/lib/fonts
111 cp -r libraries $out/lib/libraries
112 cp -r linetypes $out/lib/linetypes
113 cp -r ts $out/lib/ts
114
115 # workaround to fix the library browser:
116 rm -r $out/lib/plugins/sqldrivers
117 ln -s -t $out/lib/plugins ${qtbase}/${qtbase.qtPluginPrefix}/sqldrivers
118
119 rm -r $out/lib/plugins/printsupport
120 ln -s -t $out/lib/plugins ${qtbase}/${qtbase.qtPluginPrefix}/printsupport
121
122 rm -r $out/lib/plugins/imageformats
123 ln -s -t $out/lib/plugins ${qtbase}/${qtbase.qtPluginPrefix}/imageformats
124
125 install -Dm644 scripts/qcad_icon.svg $out/share/icons/hicolor/scalable/apps/qcad.svg
126
127 installManPage qcad.1
128
129 runHook postInstall
130 '';
131
132 meta = {
133 description = "2D CAD package based on Qt";
134 homepage = "https://qcad.org";
135 license = lib.licenses.gpl3Only;
136 mainProgram = "qcad";
137 maintainers = with lib.maintainers; [ yvesf ];
138 platforms = qtbase.meta.platforms;
139 };
140}