Merge pull request #330634 from r-ryantm/auto-update/circumflex
[NixPkgs.git] / pkgs / servers / nominatim / default.nix
blob529849625d93b9393d7e07cc0f8cb765bd647394
1 { stdenv, lib, fetchFromGitHub, fetchurl
2 , clang-tools, cmake, bzip2, zlib, expat, boost, git, pandoc, nlohmann_json
3 # Nominatim needs to be built with the same postgres version it will target
4 , postgresql
5 , python3, php, lua
6 }:
8 let
9   countryGrid = fetchurl {
10     # Nominatim docs mention https://www.nominatim.org/data/country_grid.sql.gz but it's not a very good URL for pinning
11     url = "https://web.archive.org/web/20220323041006/https://nominatim.org/data/country_grid.sql.gz";
12     sha256 = "sha256-/mY5Oq9WF0klXOv0xh0TqEJeMmuM5QQJ2IxANRZd4Ek=";
13   };
15 stdenv.mkDerivation rec {
16   pname = "nominatim";
17   version = "4.4.0";
19   src = fetchFromGitHub {
20     owner = "osm-search";
21     repo = "Nominatim";
22     rev = "v${version}";
23     fetchSubmodules = true;
24     hash = "sha256-GPMDbvTPl9SLpZi5gyRAPQ84NSTIRoSfGJeqWs1e9Oo=";
25   };
27   nativeBuildInputs = [
28     cmake
29     clang-tools
30     git
31     pandoc
32     php
33     lua
34   ];
36   buildInputs = [
37     bzip2
38     zlib
39     expat
40     boost
41     nlohmann_json
42     (python3.withPackages (ps: with ps; [
43       pyyaml
44       python-dotenv
45       psycopg2
46       sqlalchemy
47       asyncpg
48       psutil
49       jinja2
50       pyicu
51       datrie
52       pyosmium
53     ]))
54     # python3Packages.pylint  # We don't want to run pylint because the package could break on pylint bumps which is really annoying.
55     # python3Packages.pytest  # disabled since I can't get it to run tests anyway
56     # python3Packages.behave  # disabled since I can't get it to run tests anyway
57     postgresql
58   ];
60   postPatch = ''
61     mkdir -p ./data
62     ln -s ${countryGrid} ./data/country_osm_grid.sql.gz
63   '';
65   meta = with lib; {
66     description = "Search engine for OpenStreetMap data";
67     homepage = "https://nominatim.org/";
68     license = licenses.gpl2Plus;
69     platforms = platforms.unix;
70     maintainers = [ maintainers.mausch ];
71     mainProgram = "nominatim";
72   };