1{
2 stdenv,
3 lib,
4 glib,
5 wrapGAppsHook3,
6 xorg,
7 caja,
8 cajaExtensions,
9 extensions ? [ ],
10 useDefaultExtensions ? true,
11}:
12
13let
14 selectedExtensions = extensions ++ (lib.optionals useDefaultExtensions cajaExtensions);
15in
16stdenv.mkDerivation {
17 pname = "${caja.pname}-with-extensions";
18 version = caja.version;
19
20 src = null;
21
22 nativeBuildInputs = [
23 glib
24 wrapGAppsHook3
25 ];
26
27 buildInputs =
28 lib.forEach selectedExtensions (x: x.buildInputs)
29 ++ selectedExtensions
30 ++ [ caja ]
31 ++ caja.buildInputs;
32
33 dontUnpack = true;
34 dontConfigure = true;
35 dontBuild = true;
36
37 preferLocalBuild = true;
38 allowSubstitutes = false;
39
40 installPhase = ''
41 runHook preInstall
42
43 mkdir -p $out
44 ${xorg.lndir}/bin/lndir -silent ${caja} $out
45
46 dbus_service_path="share/dbus-1/services/org.mate.freedesktop.FileManager1.service"
47 rm -f $out/share/applications/* "$out/$dbus_service_path"
48 for file in ${caja}/share/applications/*; do
49 substitute "$file" "$out/share/applications/$(basename $file)" \
50 --replace-fail "${caja}" "$out"
51 done
52 substitute "${caja}/$dbus_service_path" "$out/$dbus_service_path" \
53 --replace-fail "${caja}" "$out"
54
55 runHook postInstall
56 '';
57
58 preFixup = lib.optionalString (selectedExtensions != [ ]) ''
59 gappsWrapperArgs+=(
60 --set CAJA_EXTENSION_DIRS ${
61 lib.concatMapStringsSep ":" (x: "${x.outPath}/lib/caja/extensions-2.0") selectedExtensions
62 }
63 )
64 '';
65
66 inherit (caja) meta;
67}