diff options
Diffstat (limited to 'pkgs/applications/gis/qgis/unwrapped-ltr.nix')
-rw-r--r-- | pkgs/applications/gis/qgis/unwrapped-ltr.nix | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/pkgs/applications/gis/qgis/unwrapped-ltr.nix b/pkgs/applications/gis/qgis/unwrapped-ltr.nix new file mode 100644 index 00000000000..3de304f586f --- /dev/null +++ b/pkgs/applications/gis/qgis/unwrapped-ltr.nix @@ -0,0 +1,148 @@ +{ lib +, mkDerivation +, fetchFromGitHub +, cmake +, ninja +, flex +, bison +, proj +, geos +, xlibsWrapper +, sqlite +, gsl +, qwt +, fcgi +, python3 +, libspatialindex +, libspatialite +, postgresql +, txt2tags +, openssl +, libzip +, hdf5 +, netcdf +, exiv2 +, protobuf +, qtbase +, qtsensors +, qca-qt5 +, qtkeychain +, qt3d +, qscintilla +, qtserialport +, qtxmlpatterns +, withGrass ? true +, grass +, withWebKit ? true +, qtwebkit +, makeWrapper +}: + +let + + py = python3.override { + packageOverrides = self: super: { + pyqt5 = super.pyqt5.override { + withLocation = true; + }; + }; + }; + + pythonBuildInputs = with py.pkgs; [ + qscintilla-qt5 + gdal + jinja2 + numpy + psycopg2 + chardet + python-dateutil + pyyaml + pytz + requests + urllib3 + pygments + pyqt5 + sip_4 + owslib + six + ]; +in mkDerivation rec { + version = "3.16.16"; + pname = "qgis-ltr-unwrapped"; + + src = fetchFromGitHub { + owner = "qgis"; + repo = "QGIS"; + rev = "final-${lib.replaceStrings [ "." ] [ "_" ] version}"; + sha256 = "85RlV1Ik1BeN9B7UE51ktTWMiGkMga2E/fnhyiVwjIs="; + }; + + passthru = { + inherit pythonBuildInputs; + inherit py; + }; + + buildInputs = [ + openssl + proj + geos + xlibsWrapper + sqlite + gsl + qwt + exiv2 + protobuf + fcgi + libspatialindex + libspatialite + postgresql + txt2tags + libzip + hdf5 + netcdf + qtbase + qtsensors + qca-qt5 + qtkeychain + qscintilla + qtserialport + qtxmlpatterns + qt3d + ] ++ lib.optional withGrass grass + ++ lib.optional withWebKit qtwebkit + ++ pythonBuildInputs; + + nativeBuildInputs = [ makeWrapper cmake flex bison ninja ]; + + # Force this pyqt_sip_dir variable to point to the sip dir in PyQt5 + # + # TODO: Correct PyQt5 to provide the expected directory and fix + # build to use PYQT5_SIP_DIR consistently. + postPatch = '' + substituteInPlace cmake/FindPyQt5.py \ + --replace 'sip_dir = cfg.default_sip_dir' 'sip_dir = "${py.pkgs.pyqt5}/${py.pkgs.python.sitePackages}/PyQt5/bindings"' + ''; + + cmakeFlags = [ + "-DCMAKE_SKIP_BUILD_RPATH=OFF" + "-DWITH_3D=True" + "-DPYQT5_SIP_DIR=${py.pkgs.pyqt5}/${py.pkgs.python.sitePackages}/PyQt5/bindings" + "-DQSCI_SIP_DIR=${py.pkgs.qscintilla-qt5}/${py.pkgs.python.sitePackages}/PyQt5/bindings" + ] ++ lib.optional (!withWebKit) "-DWITH_QTWEBKIT=OFF" + ++ lib.optional withGrass "-DGRASS_PREFIX7=${grass}/grass78"; + + postFixup = lib.optionalString withGrass '' + # grass has to be availble on the command line even though we baked in + # the path at build time using GRASS_PREFIX + wrapProgram $out/bin/qgis \ + --prefix PATH : ${lib.makeBinPath [ grass ]} + ''; + + meta = with lib; { + description = "A Free and Open Source Geographic Information System"; + homepage = "https://www.qgis.org"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ lsix sikmir erictapen ]; + }; +} |