biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / graphics / openscad / default.nix
blobe0ea00e5c2984321cd292b345eef79c6c915d30a
1 { lib, stdenv
2 , fetchFromGitHub
3 , fetchpatch
4 , qtbase
5 , qtmultimedia
6 , qscintilla
7 , bison
8 , flex
9 , eigen
10 , boost
11 , libGLU, libGL
12 , glew
13 , opencsg
14 , cgal_4
15 , mpfr
16 , gmp
17 , glib
18 , pkg-config
19 , harfbuzz
20 , gettext
21 , freetype
22 , fontconfig
23 , double-conversion
24 , lib3mf
25 , libzip
26 , mkDerivation
27 , qtmacextras
28 , qmake
29 , spacenavSupport ? stdenv.isLinux, libspnav
30 , wayland
31 , wayland-protocols
32 , wrapGAppsHook
33 , qtwayland
34 , cairo
37 mkDerivation rec {
38   pname = "openscad";
39   version = "2021.01";
41   src = fetchFromGitHub {
42     owner = "openscad";
43     repo = "openscad";
44     rev = "${pname}-${version}";
45     sha256 = "sha256-2tOLqpFt5klFPxHNONnHVzBKEFWn4+ufx/MU+eYbliA=";
46   };
48   patches = [
49     (fetchpatch {
50       name = "CVE-2022-0496.patch";
51       url = "https://github.com/openscad/openscad/commit/00a4692989c4e2f191525f73f24ad8727bacdf41.patch";
52       sha256 = "sha256-q3SLj2b5aM/IQ8vIDj4iVcwCajgyJ5juNV/KN35uxfI=";
53     })
54     (fetchpatch {
55       name = "CVE-2022-0497.patch";
56       url = "https://github.com/openscad/openscad/commit/84addf3c1efbd51d8ff424b7da276400bbfa1a4b.patch";
57       sha256 = "sha256-KNEVu10E2d4G2x+FJcuHo2tjD8ygMRuhUcW9NbN98bM=";
58     })
59   ];
61   nativeBuildInputs = [ bison flex pkg-config gettext qmake wrapGAppsHook];
63   buildInputs = [
64     eigen boost glew opencsg cgal_4 mpfr gmp glib
65     harfbuzz lib3mf libzip double-conversion freetype fontconfig
66     qtbase qtmultimedia qscintilla cairo
67   ] ++ lib.optionals stdenv.isLinux [ libGLU libGL wayland wayland-protocols qtwayland ]
68     ++ lib.optional stdenv.isDarwin qtmacextras
69     ++ lib.optional spacenavSupport libspnav
70   ;
72   qmakeFlags = [ "VERSION=${version}" ] ++
73     lib.optionals spacenavSupport [
74       "ENABLE_SPNAV=1"
75       "SPNAV_INCLUDEPATH=${libspnav}/include"
76       "SPNAV_LIBPATH=${libspnav}/lib"
77     ];
79   enableParallelBuilding = true;
81   preBuild = ''
82     make objects/parser.cxx
83   '';
85   postInstall = lib.optionalString stdenv.isDarwin ''
86     mkdir $out/Applications
87     mv $out/bin/*.app $out/Applications
88     rmdir $out/bin || true
90     mv --target-directory=$out/Applications/OpenSCAD.app/Contents/Resources \
91       $out/share/openscad/{examples,color-schemes,locale,libraries,fonts,templates}
93     rmdir $out/share/openscad
94   '';
96   meta = {
97     description = "3D parametric model compiler";
98     longDescription = ''
99       OpenSCAD is a software for creating solid 3D CAD objects. It is free
100       software and available for Linux/UNIX, MS Windows and macOS.
102       Unlike most free software for creating 3D models (such as the famous
103       application Blender) it does not focus on the artistic aspects of 3D
104       modelling but instead on the CAD aspects. Thus it might be the
105       application you are looking for when you are planning to create 3D models of
106       machine parts but pretty sure is not what you are looking for when you are more
107       interested in creating computer-animated movies.
108     '';
109     homepage = "https://openscad.org/";
110     license = lib.licenses.gpl2;
111     platforms = lib.platforms.unix;
112     maintainers = with lib.maintainers; [ bjornfor raskin gebner ];
113     mainProgram = "openscad";
114   };