biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / misc / pytrainer / default.nix
blob5f226752ccd31533b48d3a30fc7cc311140a2d60
1 { lib
2 , python310
3 , fetchFromGitHub
4 , gdk-pixbuf
5 , adwaita-icon-theme
6 , gpsbabel
7 , glib-networking
8 , glibcLocales
9 , gobject-introspection
10 , gtk3
11 , perl
12 , sqlite
13 , tzdata
14 , webkitgtk_4_0
15 , wrapGAppsHook3
16 , xvfb-run
19 let
20   python = python310.override {
21     self = python;
22     packageOverrides = (self: super: {
23       matplotlib = super.matplotlib.override {
24         enableGtk3 = true;
25       };
26     });
27   };
28 in python.pkgs.buildPythonApplication rec {
29   pname = "pytrainer";
30   version = "2.2.1";
32   src = fetchFromGitHub {
33     owner = "pytrainer";
34     repo = "pytrainer";
35     rev = "v${version}";
36     hash = "sha256-t61vHVTKN5KsjrgbhzljB7UZdRask7qfYISd+++QbV0=";
37   };
39   propagatedBuildInputs = with python.pkgs; [
40     sqlalchemy
41     python-dateutil
42     matplotlib
43     lxml
44     setuptools
45     requests
46     gdal
47   ];
49   nativeBuildInputs = [
50     gobject-introspection
51     wrapGAppsHook3
52   ];
54   buildInputs = [
55     sqlite
56     gtk3
57     webkitgtk_4_0
58     glib-networking
59     adwaita-icon-theme
60     gdk-pixbuf
61   ];
63   makeWrapperArgs = [
64     "--prefix" "PATH" ":" (lib.makeBinPath [ perl gpsbabel ])
65   ];
67   nativeCheckInputs = [
68     glibcLocales
69     perl
70     xvfb-run
71   ] ++ (with python.pkgs; [
72     mysqlclient
73     psycopg2
74   ]);
76   postPatch = ''
77     substituteInPlace pytrainer/platform.py \
78         --replace 'sys.prefix' "\"$out\""
79   '';
81   checkPhase = ''
82     env \
83       HOME=$TEMPDIR \
84       TZDIR=${tzdata}/share/zoneinfo \
85       TZ=Europe/Kaliningrad \
86       LC_TIME=C \
87       xvfb-run -s '-screen 0 800x600x24' \
88       ${python.interpreter} -m unittest
89   '';
91   meta = with lib; {
92     homepage = "https://github.com/pytrainer/pytrainer";
93     description = "Application for logging and graphing sporting excursions";
94     mainProgram = "pytrainer";
95     maintainers = with maintainers; [ rycee dotlambda ];
96     license = licenses.gpl2Plus;
97     platforms = platforms.linux;
98   };