python312Packages.types-aiobotocore: 2.15.2 -> 2.15.2.post3 (#361801)
[NixPkgs.git] / pkgs / applications / office / kmymoney / default.nix
blob86547c638dfaa75f3b809e692a3dc8acd8ca6d69
1 { stdenv, lib, fetchurl, doxygen, extra-cmake-modules, graphviz, kdoctools
2 , wrapQtAppsHook
3 , autoPatchelfHook
5 , akonadi, alkimia, aqbanking, gmp, gwenhywfar, kactivities, karchive
6 , kcmutils, kcontacts, qtwebengine, kdiagram, kholidays, kidentitymanagement
7 , kitemmodels, libical, libofx, qgpgme
9 , sqlcipher
11 # Needed for running tests:
12 , xvfb-run
14 , python3
17 stdenv.mkDerivation rec {
18   pname = "kmymoney";
19   version = "5.1.3";
21   src = fetchurl {
22     url = "mirror://kde/stable/kmymoney/${version}/src/${pname}-${version}.tar.xz";
23     sha256 = "sha256-OTi4B4tzkboy4Su0I5di+uE0aDoMLsGnUQXDAso+Xj8=";
24   };
26   cmakeFlags = [
27     # Remove this when upgrading to a KMyMoney release that includes
28     # https://invent.kde.org/office/kmymoney/-/merge_requests/118
29     "-DENABLE_WEBENGINE=ON"
30   ];
32   # Hidden dependency that wasn't included in CMakeLists.txt:
33   env.NIX_CFLAGS_COMPILE = "-I${kitemmodels.dev}/include/KF5";
35   nativeBuildInputs = [
36     doxygen extra-cmake-modules graphviz kdoctools
37     python3.pkgs.wrapPython wrapQtAppsHook autoPatchelfHook
38   ];
40   buildInputs = [
41     akonadi alkimia aqbanking gmp gwenhywfar kactivities karchive kcmutils
42     kcontacts qtwebengine kdiagram kholidays kidentitymanagement kitemmodels
43     libical libofx qgpgme
44     sqlcipher
46     # Put it into buildInputs so that CMake can find it, even though we patch
47     # it into the interface later.
48     python3.pkgs.woob
49   ];
51   postPatch = ''
52     buildPythonPath "${python3.pkgs.woob}"
53     patchPythonScript "kmymoney/plugins/woob/interface/kmymoneywoob.py"
55     # Within the embedded Python interpreter, sys.argv is unavailable, so let's
56     # assign it to a dummy value so that the assignment of sys.argv[0] injected
57     # by patchPythonScript doesn't fail:
58     sed -i -e '1i import sys; sys.argv = [""]' \
59       "kmymoney/plugins/woob/interface/kmymoneywoob.py"
60   '';
62   doInstallCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
63   nativeInstallCheckInputs = [ xvfb-run ];
64   installCheckPhase =
65     lib.optionalString doInstallCheck ''
66       xvfb-run -s '-screen 0 1024x768x24' make test \
67         ARGS="-E '(reports-chart-test)'" # Test fails, so exclude it for now.
68     '';
70   # libpython is required by the python interpreter embedded in kmymoney, so we
71   # need to explicitly tell autoPatchelf about it.
72   postFixup = ''
73     patchelf --debug --add-needed libpython${python3.pythonVersion}.so \
74       "$out/bin/.kmymoney-wrapped"
75   '';
77   meta = {
78     description = "Personal finance manager for KDE";
79     mainProgram = "kmymoney";
80     homepage = "https://kmymoney.org/";
81     platforms = lib.platforms.linux;
82     license = lib.licenses.gpl2Plus;
83     maintainers = with lib.maintainers; [ aidalgol das-g ];
84   };