nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 140 lines 4.2 kB view raw
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}