summary refs log tree commit diff
path: root/pkgs/applications/office/moneyplex/default.nix
blob: 3e666b0f627289b7907c9935524b1512986a1de7 (plain) (blame)
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
{ stdenv, fetchurl, patchelf, coreutils, pcsclite
, zlib, glib, gdk-pixbuf, gtk2, cairo, pango, libX11, atk, openssl
, runtimeShell }:

let
  libPath = stdenv.lib.makeLibraryPath [
    stdenv.cc.cc zlib glib gdk-pixbuf gtk2 cairo pango libX11 atk openssl
  ];

  src_i686 = {
    url = "http://www.matrica.com/download/distribution/moneyplex_16_install32_22424.tar.gz";
    sha256 = "0yfpc6s85r08g796dycl378kagkma865vp7j72npia3hjc4vwamr";
  };

  src_x86_64 = {
    url = "http://www.matrica.com/download/distribution/moneyplex_16_install64_22424.tar.gz";
    sha256 = "03vxbg1yp8qyvcn6bw2a5s134nxzq9cn0vqbmlld7hh4knbsfqzw";
  };
in

stdenv.mkDerivation rec {
  name = "moneyplex-${version}";
  version = "16.0.22424";

  src = fetchurl (if stdenv.hostPlatform.system == "i686-linux" then src_i686
                  else if stdenv.hostPlatform.system == "x86_64-linux" then src_x86_64
                  else throw "moneyplex requires i686-linux or x86_64-linux");


  phases = [ "unpackPhase" "installPhase" "postInstall" ];

  buildInputs = [ ];

  installPhase =
  ''
    mkdir -p "$out/opt/moneyplex"
    cp -r . $out/opt/moneyplex

    mkdir "$out/bin"

    cat > $out/bin/moneyplex <<EOF
    #!${runtimeShell}

    if [ -z "\$XDG_DATA_HOME" ]; then
        MDIR=\$HOME/.local/share/moneyplex
    else
        MDIR=\$XDG_DATA_HOME/moneyplex
    fi

    if [ ! -d "\$MDIR" ]; then
        ${coreutils}/bin/mkdir -p \$MDIR
        ${coreutils}/bin/cp -r $out/opt/moneyplex/* \$MDIR
        ${coreutils}/bin/chmod 0644 \$MDIR/*
        ${coreutils}/bin/chmod 0755 \$MDIR/system
        ${coreutils}/bin/chmod 0644 \$MDIR/system/*
        ${coreutils}/bin/chmod 0755 \$MDIR/reports
        ${coreutils}/bin/chmod 0644 \$MDIR/reports/*
        ${coreutils}/bin/chmod 0755 \$MDIR/moneyplex
        ${coreutils}/bin/chmod 0755 \$MDIR/prestart
        ${coreutils}/bin/chmod 0755 \$MDIR/mpxalarm
    fi

    if [ ! -d "\$MDIR/pcsc" ]; then
        ${coreutils}/bin/mkdir -p \$MDIR/pcsc
    fi
    if [ ! -e "\$MDIR/pcsc/libpcsclite.so.1" ] || [ ! \`${coreutils}/bin/readlink -f "\$MDIR/pcsc/libpcsclite.so.1"\` -ef "${stdenv.lib.getLib pcsclite}/lib/libpcsclite.so.1" ]; then
        ${coreutils}/bin/ln -sf "${stdenv.lib.getLib pcsclite}/lib/libpcsclite.so.1" "\$MDIR/pcsc/libpcsclite.so.1"
    fi


    if [ -e "\$MDIR/rup/rupremote.lst" ]; then
      for i in \`${coreutils}/bin/cat "\$MDIR/rup/rupremote.lst"\`; do
        ${coreutils}/bin/mv "\$MDIR/rup/"\`${coreutils}/bin/basename \$i\` "\$MDIR/\$i"
      done
      rm -r "\$MDIR/rup/rupremote.lst"
    fi

    if [ ! -e "\$MDIR/moneyplex.patched" ] || [ "\$MDIR/moneyplex" -nt "\$MDIR/moneyplex.patched" ]; then
        ${coreutils}/bin/cp "\$MDIR/moneyplex" "\$MDIR/moneyplex.patched"
        ${coreutils}/bin/chmod 0755 "\$MDIR/moneyplex.patched"
    fi
    if [ ! \`${patchelf}/bin/patchelf --print-interpreter \$MDIR/moneyplex.patched\` = $(cat $NIX_CC/nix-support/dynamic-linker) ] ||
       [ ! \`${patchelf}/bin/patchelf --print-rpath \$MDIR/moneyplex.patched\` = "${libPath}" ]; then
        ${patchelf}/bin/patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) --set-rpath "${libPath}" "\$MDIR/moneyplex.patched"
    fi

    exec \$MDIR/moneyplex.patched
    EOF

    chmod +x $out/bin/moneyplex
    '';

  postInstall = ''
    mkdir -p $out/share/icons
    cp -r $out/opt/moneyplex/system/mpx256.png $out/share/icons/moneyplex.png

    mkdir -p $out/share/applications
    cat > $out/share/applications/moneyplex.desktop <<EOF
    [Desktop Entry]
    Type=Application
    Encoding=UTF-8
    Name=Moneyplex
    GenericName=Moneyplex online banking software
    Comment=Online banking software
    Icon=$out/share/icons/moneyplex.png
    Exec=$out/bin/moneyplex
    Terminal=false
    Categories=Application;
    StartupNotify=true
    EOF
    '';


  meta = with stdenv.lib; {
    description = "Moneyplex online banking software";
    maintainers = with maintainers; [ tstrobel ];
    platforms = platforms.linux;
    license = licenses.unfree;
    downloadPage = http://matrica.de/download/download.html;
  };

}