nixpkgs/pkgs/servers/nominatim/default.nix
traxys 758e0ef541 nominatim: fix issues with package
There are two issues that make the package unusable as is:
- The python dependencies are not taken into account, giving import
  errors on launch
- nominatim needs to be built with the same postgres version it will run
  on. It's a bit dirty to do an override postgresql_12 =
  postgresql_another_version, so this commit adds a `postgres` attribute
  to be more consistent
2023-11-02 17:21:57 +01:00

68 lines
1.7 KiB
Nix

{ stdenv, lib, fetchFromGitHub, fetchurl
, clang-tools, cmake, bzip2, zlib, expat, boost, git, pandoc
# Nominatim needs to be built with the same postgres version it will target
, postgresql
, python3, php
}:
let
countryGrid = fetchurl {
# Nominatim docs mention https://www.nominatim.org/data/country_grid.sql.gz but it's not a very good URL for pinning
url = "https://web.archive.org/web/20220323041006/https://nominatim.org/data/country_grid.sql.gz";
sha256 = "sha256-/mY5Oq9WF0klXOv0xh0TqEJeMmuM5QQJ2IxANRZd4Ek=";
};
in
stdenv.mkDerivation rec {
pname = "nominatim";
version = "4.0.1";
src = fetchFromGitHub {
owner = "osm-search";
repo = "Nominatim";
rev = "v${version}";
fetchSubmodules = true;
sha256 = "sha256-sKI/KBKveb5kAWJ7y1xw+ZF1thynr402rJhVjkIdFMo=";
};
nativeBuildInputs = [
cmake
clang-tools
git
pandoc
php
];
buildInputs = [
bzip2
zlib
expat
boost
(python3.withPackages (ps: with ps; [
pyyaml
python-dotenv
psycopg2
psutil
jinja2
pyicu
datrie
]))
# python3Packages.pylint # We don't want to run pylint because the package could break on pylint bumps which is really annoying.
# python3Packages.pytest # disabled since I can't get it to run tests anyway
# python3Packages.behave # disabled since I can't get it to run tests anyway
postgresql
];
postPatch = ''
mkdir -p ./data
ln -s ${countryGrid} ./data/country_osm_grid.sql.gz
'';
meta = with lib; {
description = "Search engine for OpenStreetMap data";
homepage = "https://nominatim.org/";
license = licenses.gpl2Plus;
platforms = platforms.unix;
maintainers = [ maintainers.mausch ];
};
}