summaryrefslogtreecommitdiffstats
path: root/pkgs/development/libraries/aqbanking/gwenhywfar.nix
blob: bbb65fd95ac9218f9d5e6ed231441c934dbebc8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
{
  lib,
  stdenv,
  fetchurl,
  gnutls,
  openssl,
  libgcrypt,
  libgpg-error,
  pkg-config,
  gettext,
  which,

  # GUI support
  gtk3,
  qt5,

  pluginSearchPaths ? [
    "/run/current-system/sw/lib/gwenhywfar/plugins"
    ".nix-profile/lib/gwenhywfar/plugins"
  ],
}:

let
  inherit ((import ./sources.nix).gwenhywfar) hash releaseId version;
in
stdenv.mkDerivation rec {
  pname = "gwenhywfar";
  inherit version;

  src = fetchurl {
    url = "https://www.aquamaniac.de/rdm/attachments/download/${releaseId}/gwenhywfar-${version}.tar.gz";
    inherit hash;
  };

  configureFlags = [
    "--with-openssl-includes=${openssl.dev}/include"
    "--with-openssl-libs=${lib.getLib openssl}/lib"
  ];

  preConfigure = ''
    configureFlagsArray+=("--with-guis=gtk3 qt5")
  '';

  postPatch =
    let
      isRelative = path: builtins.substring 0 1 path != "/";
      mkSearchPath =
        path:
        ''
          p; g; s,\<PLUGINDIR\>,"${path}",g;
        ''
        + lib.optionalString (isRelative path) ''
          s/AddPath(\(.*\));/AddRelPath(\1, GWEN_PathManager_RelModeHome);/g
        '';

    in
    ''
      sed -i -e '/GWEN_PathManager_DefinePath.*GWEN_PM_PLUGINDIR/,/^#endif/ {
        /^#if/,/^#endif/ {
          H; /^#endif/ {
            ${lib.concatMapStrings mkSearchPath pluginSearchPaths}
          }
        }
      }' src/gwenhywfar.c

      # Strip off the effective SO version from the path so that for example
      # "lib/gwenhywfar/plugins/60" becomes just "lib/gwenhywfar/plugins".
      sed -i -e '/^gwenhywfar_plugindir=/s,/\''${GWENHYWFAR_SO_EFFECTIVE},,' \
        configure
    '';

  nativeBuildInputs = [
    pkg-config
    gettext
    which
  ];

  buildInputs = [
    gtk3
    qt5.qtbase
    gnutls
    openssl
    libgcrypt
    libgpg-error
  ];

  dontWrapQtApps = true;

  meta = {
    description = "OS abstraction functions used by aqbanking and related tools";
    homepage = "https://www.aquamaniac.de/rdm/projects/gwenhywfar";
    license = lib.licenses.lgpl21Plus;
    maintainers = [ ];
    platforms = lib.platforms.linux;
  };
}