nur-packages

My NUR packages
git clone git://git.sikmir.ru/nur-packages
Log | Files | Refs | README | LICENSE

package.nix (4067B)


      1 {
      2   lib,
      3   fetchFromGitHub,
      4   makeWrapper,
      5   writeShellScript,
      6   python3Packages,
      7   cogeo-mosaic,
      8   geojson-pydantic,
      9   rio-cogeo,
     10   rio-stac,
     11   starlette-cramjam,
     12 }:
     13 let
     14   pname = "titiler";
     15   version = "1.2.0";
     16 
     17   src = fetchFromGitHub {
     18     owner = "developmentseed";
     19     repo = "titiler";
     20     tag = version;
     21     hash = "sha256-SisZc/m3id+E6lGwPsTSezfw2atMop3APYZVXK3LPPI=";
     22   };
     23 
     24   meta = {
     25     description = "A modern dynamic tile server built on top of FastAPI and Rasterio/GDAL";
     26     homepage = "https://developmentseed.org/titiler/";
     27     license = lib.licenses.mit;
     28     maintainers = [ lib.maintainers.sikmir ];
     29   };
     30 
     31   titiler-core = python3Packages.buildPythonPackage (finalAttrs: {
     32     inherit version src meta;
     33     pname = "${pname}.core";
     34     sourceRoot = "${src.name}/src/titiler/core";
     35     pyproject = true;
     36 
     37     build-system = with python3Packages; [ hatchling ];
     38 
     39     dependencies = with python3Packages; [
     40       fastapi
     41       geojson-pydantic
     42       jinja2
     43       numpy
     44       pydantic
     45       rasterio
     46       rio-tiler
     47       morecantile
     48       simplejson
     49       typing-extensions
     50     ];
     51 
     52     optional-dependencies = {
     53       telemetry = with python3Packages; [
     54         opentelemetry-api
     55         opentelemetry-sdk
     56         opentelemetry-instrumentation-fastapi
     57         opentelemetry-instrumentation-logging
     58         opentelemetry-exporter-otlp
     59       ];
     60     };
     61 
     62     nativeCheckInputs = [
     63       python3Packages.pytestCheckHook
     64     ]
     65     ++ lib.flatten (builtins.attrValues finalAttrs.passthru.optional-dependencies);
     66   });
     67 
     68   titiler-extensions = python3Packages.buildPythonPackage (finalAttrs: {
     69     inherit version src meta;
     70     pname = "${pname}.extensions";
     71     sourceRoot = "${src.name}/src/titiler/extensions";
     72     pyproject = true;
     73 
     74     build-system = with python3Packages; [ hatchling ];
     75 
     76     dependencies = [ titiler-core ];
     77 
     78     optional-dependencies = {
     79       cogeo = [ rio-cogeo ];
     80       stac = [ python3Packages.rio-stac ];
     81     };
     82 
     83     nativeCheckInputs =
     84       with python3Packages;
     85       [
     86         jsonschema
     87         owslib
     88         pytestCheckHook
     89       ]
     90       ++ lib.flatten (builtins.attrValues finalAttrs.passthru.optional-dependencies);
     91 
     92     disabledTests = [
     93       "test_stacExtension" # requires network
     94     ];
     95   });
     96 
     97   titiler-mosaic = python3Packages.buildPythonPackage (finalAttrs: {
     98     inherit version src meta;
     99     pname = "${pname}.mosaic";
    100     sourceRoot = "${src.name}/src/titiler/mosaic";
    101     pyproject = true;
    102 
    103     build-system = with python3Packages; [ hatchling ];
    104 
    105     dependencies = [
    106       cogeo-mosaic
    107       titiler-core
    108     ];
    109 
    110     optional-dependencies = {
    111       mosaicjson = [ cogeo-mosaic ];
    112     };
    113 
    114     nativeCheckInputs =
    115       with python3Packages;
    116       [
    117         owslib
    118         pytestCheckHook
    119       ]
    120       ++ lib.flatten (builtins.attrValues finalAttrs.passthru.optional-dependencies);
    121   });
    122 in
    123 python3Packages.buildPythonPackage (finalAttrs: {
    124   inherit
    125     pname
    126     version
    127     src
    128     meta
    129     ;
    130   sourceRoot = "${src.name}/src/titiler/application";
    131   pyproject = true;
    132 
    133   build-system = with python3Packages; [ hatchling ];
    134 
    135   nativeBuildInputs = [ makeWrapper ];
    136 
    137   dependencies = with python3Packages; [
    138     pydantic-settings
    139     starlette-cramjam
    140     titiler-core
    141     titiler-core.optional-dependencies.telemetry
    142     titiler-extensions
    143     titiler-extensions.optional-dependencies.cogeo
    144     titiler-extensions.optional-dependencies.stac
    145     titiler-mosaic
    146     titiler-mosaic.optional-dependencies.mosaicjson
    147   ];
    148 
    149   nativeCheckInputs = with python3Packages; [
    150     boto3
    151     pytestCheckHook
    152   ];
    153 
    154   disabledTests = [
    155     "test_mosaic_auth_error" # requires network
    156   ];
    157 
    158   postInstall =
    159     let
    160       start_script = writeShellScript "titiler-serve" ''
    161         ${lib.getExe python3Packages.uvicorn} "$@" titiler.application.main:app;
    162       '';
    163     in
    164     ''
    165       makeWrapper ${start_script} $out/bin/titiler-serve \
    166         --prefix PYTHONPATH : "$out/${python3Packages.python.sitePackages}" \
    167         --prefix PYTHONPATH : "${python3Packages.makePythonPath finalAttrs.passthru.dependencies}";
    168     '';
    169 })