summary refs log tree commit diff
path: root/pkgs/applications/networking/mailreaders/evolution/evolution/wrapper.nix
blob: ea3f09b8f4c3daacd936fa8beb21edf1bbb00e42 (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
{ lib, makeWrapper, symlinkJoin, gnome3, plugins }:

symlinkJoin {
  name = "evolution-with-plugins";
  paths = [ gnome3.evolution-data-server ] ++ plugins;

  nativeBuildInputs = [ makeWrapper ];

  postBuild = ''
    for i in $out/bin/* $out/libexec/**; do
    if [ ! -d $i ]; then
      echo wrapping $i
      wrapProgram $i \
        --set LD_LIBRARY_PATH "$out/lib" \
        --set EDS_ADDRESS_BOOK_MODULES "$out/lib/evolution-data-server/addressbook-backends/" \
        --set EDS_CALENDAR_MODULES "$out/lib/evolution-data-server/calendar-backends/" \
        --set EDS_CAMEL_PROVIDER_DIR "$out/lib/evolution-data-server/camel-providers/" \
        --set EDS_REGISTRY_MODULES "$out/lib/evolution-data-server/registry-modules/" \
        --set EVOLUTION_MODULEDIR "$out/lib/evolution/modules"
    fi
    done

    fixSymlink () {
     local link=$1
     local target=$(readlink $link);
     local newtarget=$(sed "s@/nix/store/[^/]*/@$out/@" <<< "$target")
     if [[ $target != $newtarget ]] && [[ -d $newtarget ]]; then
       echo fixing link to point to $newtarget instead of $target
       rm $link
       ln -s $newtarget $link
     fi
    }

    fixSymlink $out/share/dbus-1/service
    fixSymlink $out/lib/systemd/user
    for i in $out/share/dbus-1/services/*.service $out/lib/systemd/user/*.service; do
      echo fixing service file $i to point to $out
      sed -i "s@/nix/store/[^/]*/@$out/@" $i
    done
  '';
}