biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / gis / qgis / unwrapped-ltr.nix
blob98caf348ae805d4df99bf79866df195df50f2e55
1 { lib
2 , fetchFromGitHub
3 , makeWrapper
4 , mkDerivation
5 , substituteAll
6 , wrapGAppsHook3
7 , wrapQtAppsHook
9 , withGrass
10 , withWebKit
12 , bison
13 , cmake
14 , draco
15 , exiv2
16 , fcgi
17 , flex
18 , geos
19 , grass
20 , gsl
21 , hdf5
22 , libspatialindex
23 , libspatialite
24 , libzip
25 , netcdf
26 , ninja
27 , openssl
28 , pdal
29 , postgresql
30 , proj
31 , protobuf
32 , python311
33 , qca-qt5
34 , qscintilla
35 , qt3d
36 , qtbase
37 , qtkeychain
38 , qtlocation
39 , qtmultimedia
40 , qtsensors
41 , qtserialport
42 , qtwebkit
43 , qtxmlpatterns
44 , qwt
45 , sqlite
46 , txt2tags
47 , zstd
50 let
51   py = python311.override {
52     self = py;
53     packageOverrides = self: super: {
54       pyqt5 = super.pyqt5.override {
55         withLocation = true;
56       };
57     };
58   };
60   pythonBuildInputs = with py.pkgs; [
61     chardet
62     gdal
63     jinja2
64     numpy
65     owslib
66     psycopg2
67     pygments
68     pyqt5
69     pyqt-builder
70     python-dateutil
71     pytz
72     pyyaml
73     qscintilla-qt5
74     requests
75     setuptools
76     sip
77     six
78     urllib3
79   ];
80 in mkDerivation rec {
81   version = "3.34.11";
82   pname = "qgis-ltr-unwrapped";
84   src = fetchFromGitHub {
85     owner = "qgis";
86     repo = "QGIS";
87     rev = "final-${lib.replaceStrings [ "." ] [ "_" ] version}";
88     hash = "sha256-VNgUMEA7VKZXsLG1ZYUIlYvjwRrH8LsliGiVRMnXOM0=";
89   };
91   passthru = {
92     inherit pythonBuildInputs;
93     inherit py;
94   };
96   nativeBuildInputs = [
97     makeWrapper
98     wrapGAppsHook3
99     wrapQtAppsHook
101     bison
102     cmake
103     flex
104     ninja
105   ];
107   buildInputs = [
108     draco
109     exiv2
110     fcgi
111     geos
112     gsl
113     hdf5
114     libspatialindex
115     libspatialite
116     libzip
117     netcdf
118     openssl
119     pdal
120     postgresql
121     proj
122     protobuf
123     qca-qt5
124     qscintilla
125     qt3d
126     qtbase
127     qtkeychain
128     qtlocation
129     qtmultimedia
130     qtsensors
131     qtserialport
132     qtxmlpatterns
133     qwt
134     sqlite
135     txt2tags
136     zstd
137   ] ++ lib.optional withGrass grass
138     ++ lib.optional withWebKit qtwebkit
139     ++ pythonBuildInputs;
141   patches = [
142     (substituteAll {
143       src = ./set-pyqt-package-dirs-ltr.patch;
144       pyQt5PackageDir = "${py.pkgs.pyqt5}/${py.pkgs.python.sitePackages}";
145       qsciPackageDir = "${py.pkgs.qscintilla-qt5}/${py.pkgs.python.sitePackages}";
146     })
147   ];
149   # Add path to Qt platform plugins
150   # (offscreen is needed by "${APIS_SRC_DIR}/generate_console_pap.py")
151   env.QT_QPA_PLATFORM_PLUGIN_PATH="${qtbase}/${qtbase.qtPluginPrefix}/platforms";
153   cmakeFlags = [
154     "-DWITH_3D=True"
155     "-DWITH_PDAL=True"
156     "-DENABLE_TESTS=False"
157   ] ++ lib.optional (!withWebKit) "-DWITH_QTWEBKIT=OFF"
158     ++ lib.optional withGrass (let
159         gmajor = lib.versions.major grass.version;
160         gminor = lib.versions.minor grass.version;
161       in "-DGRASS_PREFIX${gmajor}=${grass}/grass${gmajor}${gminor}"
162     );
164   qtWrapperArgs = [
165     "--set QT_QPA_PLATFORM_PLUGIN_PATH ${qtbase}/${qtbase.qtPluginPrefix}/platforms"
166   ];
168   dontWrapGApps = true; # wrapper params passed below
170   postFixup = lib.optionalString withGrass ''
171     # GRASS has to be availble on the command line even though we baked in
172     # the path at build time using GRASS_PREFIX.
173     # Using wrapGAppsHook also prevents file dialogs from crashing the program
174     # on non-NixOS.
175     for program in $out/bin/*; do
176       wrapProgram $program \
177         "''${gappsWrapperArgs[@]}" \
178         --prefix PATH : ${lib.makeBinPath [ grass ]}
179     done
180   '';
182   meta = with lib; {
183     description = "Free and Open Source Geographic Information System";
184     homepage = "https://www.qgis.org";
185     license = licenses.gpl2Plus;
186     maintainers = with maintainers; teams.geospatial.members ++ [ lsix ];
187     platforms = with platforms; linux;
188   };