91 lines
2.9 KiB
Nix
91 lines
2.9 KiB
Nix
{ lib, stdenv, fetchFromGitHub, pkg-config, gtk2, fontconfig, freetype, imlib2
|
|
, SDL_image, libGLU, libGL, libXmu, freeglut, pcre, dbus, dbus-glib, glib
|
|
, librsvg, freeimage, libxslt, cairo, gdk-pixbuf, pango
|
|
, atk, patchelf, fetchurl, bzip2, python, gettext, quesoglc
|
|
, gd, cmake, shapelib, SDL_ttf, fribidi, makeWrapper
|
|
, qtquickcontrols, qtmultimedia, qtspeech, qtsensors
|
|
, qtlocation, qtdeclarative, qtsvg
|
|
, qtSupport ? false, qtbase #need to fix qt_qpainter
|
|
, sdlSupport ? true, SDL
|
|
, xkbdSupport ? true, xkbd
|
|
, espeakSupport ? true, espeak
|
|
, postgresqlSupport ? false, postgresql
|
|
, speechdSupport ? false, speechd ? null
|
|
}:
|
|
|
|
assert speechdSupport -> speechd != null;
|
|
|
|
with lib;
|
|
stdenv.mkDerivation rec {
|
|
pname = "navit";
|
|
version = "0.5.3";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "navit-gps";
|
|
repo = "navit";
|
|
rev = "v${version}";
|
|
sha256 = "071drvqzxpxbfh0lf0lra5a97rv8ny40l96n9xl0dx0s8w30j61i";
|
|
};
|
|
|
|
sample_map = fetchurl {
|
|
url = "http://www.navit-project.org/maps/osm_bbox_11.3,47.9,11.7,48.2.osm.bz2";
|
|
name = "sample_map.bz2";
|
|
sha256 = "0vg6b6rhsa2cxqj4rbhfhhfss71syhnfa6f1jg2i2d7l88dm5x7d";
|
|
};
|
|
|
|
patches = [ ./CMakeLists.txt.patch ];
|
|
|
|
NIX_CFLAGS_COMPILE = toString (optional sdlSupport "-I${SDL.dev}/include/SDL"
|
|
++ optional speechdSupport "-I${speechd}/include/speech-dispatcher");
|
|
|
|
# we choose only cmdline and speech-dispatcher speech options.
|
|
# espeak builtins is made for non-cmdline OS as winCE
|
|
cmakeFlags = [
|
|
"-DSAMPLE_MAP=n " "-DCMAKE_BUILD_TYPE=Release"
|
|
"-Dspeech/qt5_espeak=FALSE" "-Dsupport/espeak=FALSE"
|
|
];
|
|
|
|
buildInputs = [
|
|
gtk2 fontconfig freetype imlib2 libGLU libGL freeimage
|
|
libxslt libXmu freeglut python gettext quesoglc gd
|
|
fribidi pcre dbus dbus-glib librsvg shapelib glib
|
|
cairo gdk-pixbuf pango atk
|
|
] ++ optionals sdlSupport [ SDL SDL_ttf SDL_image ]
|
|
++ optional postgresqlSupport postgresql
|
|
++ optional speechdSupport speechd
|
|
++ optionals qtSupport [
|
|
qtquickcontrols qtmultimedia qtspeech qtsensors
|
|
qtbase qtlocation qtdeclarative qtsvg
|
|
];
|
|
|
|
nativeBuildInputs = [ makeWrapper pkg-config cmake patchelf bzip2 ];
|
|
|
|
# we dont want blank screen by defaut
|
|
postInstall = ''
|
|
# emulate DSAMPLE_MAP
|
|
mkdir -p $out/share/navit/maps/
|
|
bzcat "${sample_map}" | $out/bin/maptool "$out/share/navit/maps/osm_bbox_11.3,47.9,11.7,48.2.bin"
|
|
'';
|
|
|
|
# TODO: fix upstream?
|
|
libPath = lib.makeLibraryPath ([ stdenv.cc.libc ] ++ buildInputs );
|
|
postFixup =
|
|
''
|
|
find "$out/lib" -type f -name "*.so" -exec patchelf --set-rpath $libPath {} \;
|
|
|
|
wrapProgram $out/bin/navit \
|
|
--prefix PATH : ${makeBinPath (
|
|
optional xkbdSupport xkbd
|
|
++ optional espeakSupport espeak
|
|
++ optional speechdSupport speechd ) }
|
|
'';
|
|
|
|
meta = {
|
|
homepage = "https://www.navit-project.org";
|
|
description = "Car navigation system with routing engine using OSM maps";
|
|
license = licenses.gpl2;
|
|
maintainers = [ ];
|
|
platforms = platforms.linux;
|
|
};
|
|
}
|