forked from jan-leila/nix-config
		
	fix: fixed pkg dependencies for panoramax
This commit is contained in:
		
							parent
							
								
									1b1a3f7219
								
							
						
					
					
						commit
						3bee0c7402
					
				
					 13 changed files with 632 additions and 39 deletions
				
			
		|  | @ -1,4 +1,8 @@ | |||
| {pkgs, ...}: { | ||||
|   imports = [ | ||||
|     ./python | ||||
|   ]; | ||||
| 
 | ||||
|   nixpkgs.overlays = [ | ||||
|     (final: prev: { | ||||
|       webtoon-dl = | ||||
|  | @ -31,5 +35,9 @@ | |||
|     (final: prev: { | ||||
|       sgblur = pkgs.python3.pkgs.callPackage ./sgblur.nix {}; | ||||
|     }) | ||||
|     (final: prev: { | ||||
|       # Override h3 C library to version 4.3.0 | ||||
|       h3 = pkgs.callPackage ./h3-c-lib.nix {}; | ||||
|     }) | ||||
|   ]; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										36
									
								
								modules/common-modules/pkgs/h3-c-lib.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								modules/common-modules/pkgs/h3-c-lib.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,36 @@ | |||
| { | ||||
|   lib, | ||||
|   stdenv, | ||||
|   fetchFromGitHub, | ||||
|   cmake, | ||||
|   doxygen, | ||||
| }: | ||||
| stdenv.mkDerivation rec { | ||||
|   pname = "h3"; | ||||
|   version = "4.3.0"; | ||||
| 
 | ||||
|   src = fetchFromGitHub { | ||||
|     owner = "uber"; | ||||
|     repo = "h3"; | ||||
|     rev = "v${version}"; | ||||
|     hash = "sha256-DUILKZ1QvML6qg+WdOxir6zRsgTvk+En6yjeFf6MQBg="; | ||||
|   }; | ||||
| 
 | ||||
|   nativeBuildInputs = [ | ||||
|     cmake | ||||
|     doxygen | ||||
|   ]; | ||||
| 
 | ||||
|   cmakeFlags = [ | ||||
|     "-DBUILD_SHARED_LIBS=ON" | ||||
|     "-DBUILD_TESTING=OFF" | ||||
|   ]; | ||||
| 
 | ||||
|   meta = with lib; { | ||||
|     homepage = "https://github.com/uber/h3"; | ||||
|     description = "Hexagonal hierarchical geospatial indexing system"; | ||||
|     license = licenses.asl20; | ||||
|     maintainers = []; | ||||
|     platforms = platforms.all; | ||||
|   }; | ||||
| } | ||||
|  | @ -10,8 +10,27 @@ | |||
|   authlib, | ||||
|   sentry-sdk, | ||||
|   python-dateutil, | ||||
|   dateparser, | ||||
|   croniter, | ||||
|   pydantic, | ||||
|   flask-cors, | ||||
|   flask-compress, | ||||
|   flask-babel, | ||||
|   flasgger, | ||||
|   yoyo-migrations, | ||||
|   psycopg, | ||||
|   psycopg-pool, | ||||
|   tzdata, | ||||
|   email-validator, | ||||
|   pydantic-extra-types, | ||||
|   python-multipart, | ||||
|   fs, | ||||
|   fs-s3fs, | ||||
|   geopic-tag-reader, | ||||
|   pygeofilter, | ||||
|   pygeoif, | ||||
|   rfeed, | ||||
|   geojson-pydantic, | ||||
|   ... | ||||
| }: let | ||||
|   pname = "geovisio"; | ||||
|  | @ -42,8 +61,29 @@ in | |||
|       authlib | ||||
|       sentry-sdk | ||||
|       python-dateutil | ||||
|       dateparser | ||||
|       croniter | ||||
|       pydantic | ||||
|       flask-cors | ||||
|       flask-compress | ||||
|       flask-babel | ||||
|       flasgger | ||||
|       yoyo-migrations | ||||
|       psycopg | ||||
|       psycopg-pool | ||||
|       tzdata | ||||
|       email-validator | ||||
|       pydantic-extra-types | ||||
|       python-multipart | ||||
|       fs | ||||
|       fs-s3fs | ||||
|       geopic-tag-reader | ||||
|       pygeofilter | ||||
|       pygeoif | ||||
|       rfeed | ||||
|       geojson-pydantic | ||||
|       # Missing from nixpkgs - may need custom packages: | ||||
|       # flask-executor | ||||
|     ]; | ||||
| 
 | ||||
|     # Skip tests as they may require network access or specific setup | ||||
|  |  | |||
							
								
								
									
										18
									
								
								modules/common-modules/pkgs/python/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								modules/common-modules/pkgs/python/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| {...}: { | ||||
|   nixpkgs.overlays = [ | ||||
|     (final: prev: { | ||||
|       python3 = prev.python3.override { | ||||
|         packageOverrides = pythonPrev: pythonFinal: { | ||||
|           h3 = pythonPrev.callPackage ./h3.nix {h3 = final.h3;}; | ||||
|           pygeofilter = pythonPrev.callPackage ./pygeofilter.nix {}; | ||||
|           pygeoif = pythonPrev.callPackage ./pygeoif.nix {}; | ||||
|           rfeed = pythonPrev.callPackage ./rfeed.nix {}; | ||||
|           pyexiv2 = pythonPrev.callPackage ./pyexiv2.nix {}; | ||||
|           geojson-pydantic = pythonPrev.callPackage ./geojson-pydantic.nix {}; | ||||
|           geopic-tag-reader = pythonPrev.callPackage ./geopic-tag-reader.nix {}; | ||||
|         }; | ||||
|       }; | ||||
|       python3Packages = final.python3.pkgs; | ||||
|     }) | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										48
									
								
								modules/common-modules/pkgs/python/geojson-pydantic.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								modules/common-modules/pkgs/python/geojson-pydantic.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | |||
| { | ||||
|   lib, | ||||
|   fetchPypi, | ||||
|   buildPythonPackage, | ||||
|   flit-core, | ||||
|   pydantic, | ||||
|   geojson, | ||||
|   ... | ||||
| }: let | ||||
|   pname = "geojson_pydantic"; | ||||
|   version = "2.0.0"; | ||||
| in | ||||
|   buildPythonPackage { | ||||
|     inherit pname version; | ||||
| 
 | ||||
|     pyproject = true; | ||||
| 
 | ||||
|     src = fetchPypi { | ||||
|       inherit pname version; | ||||
|       hash = "sha256-ti6LRFAt0a1Ri19zkDWoGSSnb5gMvbOk6JFu+RO+JC4="; | ||||
|     }; | ||||
| 
 | ||||
|     build-system = [ | ||||
|       flit-core | ||||
|     ]; | ||||
| 
 | ||||
|     dependencies = [ | ||||
|       pydantic | ||||
|       geojson | ||||
|     ]; | ||||
| 
 | ||||
|     # Skip tests as they may require specific setup | ||||
|     doCheck = false; | ||||
| 
 | ||||
|     # Disable runtime dependencies check | ||||
|     dontCheckRuntimeDeps = true; | ||||
| 
 | ||||
|     # Basic imports check | ||||
|     pythonImportsCheck = ["geojson_pydantic"]; | ||||
| 
 | ||||
|     meta = with lib; { | ||||
|       description = "Pydantic models for GeoJSON objects"; | ||||
|       homepage = "https://github.com/developmentseed/geojson-pydantic"; | ||||
|       license = licenses.mit; | ||||
|       maintainers = []; | ||||
|       platforms = platforms.all; | ||||
|     }; | ||||
|   } | ||||
							
								
								
									
										70
									
								
								modules/common-modules/pkgs/python/geopic-tag-reader.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								modules/common-modules/pkgs/python/geopic-tag-reader.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,70 @@ | |||
| { | ||||
|   lib, | ||||
|   fetchFromGitLab, | ||||
|   buildPythonPackage, | ||||
|   flit-core, | ||||
|   typer, | ||||
|   xmltodict, | ||||
|   timezonefinder, | ||||
|   pytz, | ||||
|   types-pytz, | ||||
|   types-python-dateutil, | ||||
|   rtree, | ||||
|   python-dateutil, | ||||
|   pyexiv2, | ||||
|   ... | ||||
| }: let | ||||
|   pname = "geopic-tag-reader"; | ||||
|   version = "1.8.0"; | ||||
| in | ||||
|   buildPythonPackage { | ||||
|     inherit pname version; | ||||
| 
 | ||||
|     pyproject = true; | ||||
| 
 | ||||
|     src = fetchFromGitLab { | ||||
|       owner = "panoramax"; | ||||
|       repo = "server/geo-picture-tag-reader"; | ||||
|       rev = version; | ||||
|       sha256 = "0lzf5xxxcdqmq28bpvgpkxf5jxmh2nawwa4rl4yg04bdsi16rf1j"; | ||||
|     }; | ||||
| 
 | ||||
|     build-system = [ | ||||
|       flit-core | ||||
|     ]; | ||||
| 
 | ||||
|     dependencies = [ | ||||
|       typer | ||||
|       xmltodict | ||||
|       pyexiv2 | ||||
|       timezonefinder | ||||
|       pytz | ||||
|       types-pytz | ||||
|       types-python-dateutil | ||||
|       rtree | ||||
|     ]; | ||||
| 
 | ||||
|     optional-dependencies = { | ||||
|       write-exif = [ | ||||
|         python-dateutil | ||||
|         types-python-dateutil | ||||
|       ]; | ||||
|     }; | ||||
| 
 | ||||
|     # Skip tests as they may require network access or specific setup | ||||
|     doCheck = false; | ||||
| 
 | ||||
|     # Disable runtime dependencies check as some dependencies might have issues | ||||
|     dontCheckRuntimeDeps = true; | ||||
| 
 | ||||
|     # Disable imports check initially to avoid dependency issues | ||||
|     pythonImportsCheck = []; | ||||
| 
 | ||||
|     meta = with lib; { | ||||
|       description = "GeoPic Tag Reader - Python library to read and write standardized metadata from geolocated pictures EXIF metadata"; | ||||
|       homepage = "https://gitlab.com/panoramax/server/geo-picture-tag-reader"; | ||||
|       license = licenses.mit; | ||||
|       maintainers = []; | ||||
|       platforms = platforms.all; | ||||
|     }; | ||||
|   } | ||||
							
								
								
									
										81
									
								
								modules/common-modules/pkgs/python/h3.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								modules/common-modules/pkgs/python/h3.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,81 @@ | |||
| { | ||||
|   autoPatchelfHook, | ||||
|   buildPythonPackage, | ||||
|   cmake, | ||||
|   cython, | ||||
|   fetchFromGitHub, | ||||
|   h3, | ||||
|   lib, | ||||
|   ninja, | ||||
|   numpy, | ||||
|   pytestCheckHook, | ||||
|   pytest-cov-stub, | ||||
|   scikit-build-core, | ||||
|   stdenv, | ||||
| }: | ||||
| buildPythonPackage rec { | ||||
|   pname = "h3"; | ||||
|   version = "4.3.1"; | ||||
|   pyproject = true; | ||||
| 
 | ||||
|   # pypi version does not include tests | ||||
|   src = fetchFromGitHub { | ||||
|     owner = "uber"; | ||||
|     repo = "h3-py"; | ||||
|     tag = "v${version}"; | ||||
|     hash = "sha256-zt7zbBgSp2P9q7mObZeQZpW9Szip62dAYdPZ2cGTmi4="; | ||||
|   }; | ||||
| 
 | ||||
|   dontConfigure = true; | ||||
| 
 | ||||
|   nativeCheckInputs = [ | ||||
|     pytestCheckHook | ||||
|     pytest-cov-stub | ||||
|   ]; | ||||
| 
 | ||||
|   build-system = | ||||
|     [ | ||||
|       scikit-build-core | ||||
|       cmake | ||||
|       cython | ||||
|       ninja | ||||
|     ] | ||||
|     ++ lib.optionals stdenv.hostPlatform.isLinux [ | ||||
|       # On Linux the .so files ends up referring to libh3.so instead of the full | ||||
|       # Nix store path. I'm not sure why this is happening! On Darwin it works | ||||
|       # fine. | ||||
|       autoPatchelfHook | ||||
|     ]; | ||||
| 
 | ||||
|   # This is not needed per-se, it's only added for autoPatchelfHook to work | ||||
|   # correctly. See the note above ^^ | ||||
|   buildInputs = lib.optionals stdenv.hostPlatform.isLinux [h3]; | ||||
| 
 | ||||
|   dependencies = [numpy]; | ||||
| 
 | ||||
|   # The following prePatch replaces the h3lib compilation with using the h3 packaged in nixpkgs. | ||||
|   # | ||||
|   # - Remove the h3lib submodule. | ||||
|   # - Patch CMakeLists to avoid building h3lib, and use h3 instead. | ||||
|   prePatch = let | ||||
|     cmakeCommands = '' | ||||
|       include_directories(${lib.getDev h3}/include/h3) | ||||
|       link_directories(${h3}/lib) | ||||
|     ''; | ||||
|   in '' | ||||
|     rm -r src/h3lib | ||||
|     substituteInPlace CMakeLists.txt \ | ||||
|       --replace-fail "add_subdirectory(src/h3lib)" "${cmakeCommands}" \ | ||||
|       --replace-fail "\''${CMAKE_CURRENT_BINARY_DIR}/src/h3lib/src/h3lib/include/h3api.h" "${lib.getDev h3}/include/h3/h3api.h" | ||||
|   ''; | ||||
| 
 | ||||
|   # Extra check to make sure we can import it from Python | ||||
|   pythonImportsCheck = ["h3"]; | ||||
| 
 | ||||
|   meta = { | ||||
|     homepage = "https://github.com/uber/h3-py"; | ||||
|     description = "Hierarchical hexagonal geospatial indexing system"; | ||||
|     license = lib.licenses.asl20; | ||||
|     maintainers = [lib.maintainers.kalbasit]; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										49
									
								
								modules/common-modules/pkgs/python/pyexiv2.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								modules/common-modules/pkgs/python/pyexiv2.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,49 @@ | |||
| { | ||||
|   lib, | ||||
|   fetchFromGitHub, | ||||
|   buildPythonPackage, | ||||
|   exiv2, | ||||
|   boost, | ||||
|   pybind11, | ||||
|   setuptools, | ||||
|   ... | ||||
| }: let | ||||
|   pname = "pyexiv2"; | ||||
|   version = "2.15.3"; | ||||
| in | ||||
|   buildPythonPackage { | ||||
|     inherit pname version; | ||||
| 
 | ||||
|     pyproject = true; | ||||
|     build-system = [setuptools]; | ||||
| 
 | ||||
|     src = fetchFromGitHub { | ||||
|       owner = "LeoHsiao1"; | ||||
|       repo = "pyexiv2"; | ||||
|       rev = "v${version}"; | ||||
|       sha256 = "sha256-83bFMaoXncvhRJNcCgkkC7B29wR5pjuLO/EdkQdqxxo="; | ||||
|     }; | ||||
| 
 | ||||
|     buildInputs = [ | ||||
|       exiv2 | ||||
|       boost | ||||
|     ]; | ||||
| 
 | ||||
|     nativeBuildInputs = [ | ||||
|       pybind11 | ||||
|     ]; | ||||
| 
 | ||||
|     # Skip tests as they may require specific test images | ||||
|     doCheck = false; | ||||
| 
 | ||||
|     # Disable runtime dependencies check initially | ||||
|     dontCheckRuntimeDeps = true; | ||||
| 
 | ||||
|     meta = with lib; { | ||||
|       description = "Python binding to the library exiv2"; | ||||
|       homepage = "https://github.com/LeoHsiao1/pyexiv2"; | ||||
|       license = licenses.gpl3Plus; | ||||
|       maintainers = []; | ||||
|       platforms = platforms.linux; | ||||
|     }; | ||||
|   } | ||||
							
								
								
									
										52
									
								
								modules/common-modules/pkgs/python/pygeofilter.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								modules/common-modules/pkgs/python/pygeofilter.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,52 @@ | |||
| { | ||||
|   lib, | ||||
|   fetchPypi, | ||||
|   buildPythonPackage, | ||||
|   setuptools, | ||||
|   wheel, | ||||
|   lark, | ||||
|   python-dateutil, | ||||
|   shapely, | ||||
|   ... | ||||
| }: let | ||||
|   pname = "pygeofilter"; | ||||
|   version = "0.3.1"; | ||||
| in | ||||
|   buildPythonPackage { | ||||
|     inherit pname version; | ||||
| 
 | ||||
|     pyproject = true; | ||||
| 
 | ||||
|     src = fetchPypi { | ||||
|       inherit pname version; | ||||
|       hash = "sha256-+SvAYiCZ+H/os23nq92GBZ1hWontYIInNwgiI6V44VA="; | ||||
|     }; | ||||
| 
 | ||||
|     build-system = [ | ||||
|       setuptools | ||||
|       wheel | ||||
|     ]; | ||||
| 
 | ||||
|     dependencies = [ | ||||
|       lark | ||||
|       python-dateutil | ||||
|       shapely | ||||
|     ]; | ||||
| 
 | ||||
|     # Skip tests as they may require specific setup | ||||
|     doCheck = false; | ||||
| 
 | ||||
|     # Disable runtime dependencies check | ||||
|     dontCheckRuntimeDeps = true; | ||||
| 
 | ||||
|     # Basic imports check | ||||
|     pythonImportsCheck = ["pygeofilter"]; | ||||
| 
 | ||||
|     meta = with lib; { | ||||
|       description = "A pure Python parser implementation of OGC filtering standards"; | ||||
|       homepage = "https://github.com/geopython/pygeofilter"; | ||||
|       license = licenses.mit; | ||||
|       maintainers = []; | ||||
|       platforms = platforms.all; | ||||
|     }; | ||||
|   } | ||||
							
								
								
									
										48
									
								
								modules/common-modules/pkgs/python/pygeoif.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								modules/common-modules/pkgs/python/pygeoif.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | |||
| { | ||||
|   lib, | ||||
|   fetchPypi, | ||||
|   buildPythonPackage, | ||||
|   setuptools, | ||||
|   wheel, | ||||
|   typing-extensions, | ||||
|   ... | ||||
| }: let | ||||
|   pname = "pygeoif"; | ||||
|   version = "1.5.1"; | ||||
| in | ||||
|   buildPythonPackage { | ||||
|     inherit pname version; | ||||
| 
 | ||||
|     pyproject = true; | ||||
| 
 | ||||
|     src = fetchPypi { | ||||
|       inherit pname version; | ||||
|       hash = "sha256-8nprah7Lh66swrUbzFnKeb5w7RKgEE3oYBR4shPdXYE="; | ||||
|     }; | ||||
| 
 | ||||
|     build-system = [ | ||||
|       setuptools | ||||
|       wheel | ||||
|     ]; | ||||
| 
 | ||||
|     dependencies = [ | ||||
|       typing-extensions | ||||
|     ]; | ||||
| 
 | ||||
|     # Skip tests as they may require specific setup | ||||
|     doCheck = false; | ||||
| 
 | ||||
|     # Disable runtime dependencies check | ||||
|     dontCheckRuntimeDeps = true; | ||||
| 
 | ||||
|     # Basic imports check | ||||
|     pythonImportsCheck = ["pygeoif"]; | ||||
| 
 | ||||
|     meta = with lib; { | ||||
|       description = "A basic implementation of the __geo_interface__"; | ||||
|       homepage = "https://github.com/cleder/pygeoif"; | ||||
|       license = licenses.lgpl21Plus; | ||||
|       maintainers = []; | ||||
|       platforms = platforms.all; | ||||
|     }; | ||||
|   } | ||||
							
								
								
									
										40
									
								
								modules/common-modules/pkgs/python/rfeed.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								modules/common-modules/pkgs/python/rfeed.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | |||
| { | ||||
|   lib, | ||||
|   fetchPypi, | ||||
|   buildPythonPackage, | ||||
|   setuptools, | ||||
|   python-dateutil, | ||||
| }: | ||||
| buildPythonPackage rec { | ||||
|   pname = "rfeed"; | ||||
|   version = "1.1.1"; | ||||
|   pyproject = true; | ||||
| 
 | ||||
|   src = fetchPypi { | ||||
|     inherit pname version; | ||||
|     hash = "sha256-qpUG8oZrdPWjItOUoUpjwZpoJcLZR1X/GdRt0eJDSBk="; | ||||
|   }; | ||||
| 
 | ||||
|   build-system = [ | ||||
|     setuptools | ||||
|   ]; | ||||
| 
 | ||||
|   dependencies = [ | ||||
|     python-dateutil | ||||
|   ]; | ||||
| 
 | ||||
|   # No tests available in the package | ||||
|   doCheck = false; | ||||
| 
 | ||||
|   pythonImportsCheck = [ | ||||
|     "rfeed" | ||||
|   ]; | ||||
| 
 | ||||
|   meta = with lib; { | ||||
|     description = "RSS feed generation library for Python"; | ||||
|     homepage = "https://pypi.org/project/rfeed/"; | ||||
|     license = licenses.mit; | ||||
|     maintainers = []; | ||||
|     platforms = platforms.all; | ||||
|   }; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue