about summary refs log tree commit diff
path: root/pkgs/desktops/mate/caja
diff options
context:
space:
mode:
authorBobby Rong <rjl931189261@126.com>2024-02-22 23:55:54 +0800
committerBobby Rong <rjl931189261@126.com>2024-03-14 23:34:05 +0800
commit239d44557a78d34bd20181fff11711e64338c4ad (patch)
treef445a0670fa61ff442014cabfddeafddb454c003 /pkgs/desktops/mate/caja
parent8f62b25ef6cfaac4377904a1001f9fe9b8b5a7b0 (diff)
downloadnixlib-239d44557a78d34bd20181fff11711e64338c4ad.tar
nixlib-239d44557a78d34bd20181fff11711e64338c4ad.tar.gz
nixlib-239d44557a78d34bd20181fff11711e64338c4ad.tar.bz2
nixlib-239d44557a78d34bd20181fff11711e64338c4ad.tar.lz
nixlib-239d44557a78d34bd20181fff11711e64338c4ad.tar.xz
nixlib-239d44557a78d34bd20181fff11711e64338c4ad.tar.zst
nixlib-239d44557a78d34bd20181fff11711e64338c4ad.zip
mate.caja-with-extensions: Reimplement using lndir
This installs missing desktop files and icons and allows dropping
the caja-extensions hardcode gsettings patch.
Diffstat (limited to 'pkgs/desktops/mate/caja')
-rw-r--r--pkgs/desktops/mate/caja/with-extensions.nix61
1 files changed, 61 insertions, 0 deletions
diff --git a/pkgs/desktops/mate/caja/with-extensions.nix b/pkgs/desktops/mate/caja/with-extensions.nix
new file mode 100644
index 000000000000..b9a55b4b9209
--- /dev/null
+++ b/pkgs/desktops/mate/caja/with-extensions.nix
@@ -0,0 +1,61 @@
+{ stdenv
+, lib
+, glib
+, wrapGAppsHook
+, xorg
+, caja
+, cajaExtensions
+, extensions ? [ ]
+, useDefaultExtensions ? true
+}:
+
+let
+  selectedExtensions = extensions ++ (lib.optionals useDefaultExtensions cajaExtensions);
+in
+stdenv.mkDerivation {
+  pname = "${caja.pname}-with-extensions";
+  version = caja.version;
+
+  src = null;
+
+  nativeBuildInputs = [
+    glib
+    wrapGAppsHook
+  ];
+
+  buildInputs = lib.forEach selectedExtensions (x: x.buildInputs) ++ selectedExtensions
+    ++ [ caja ] ++ caja.buildInputs;
+
+  dontUnpack = true;
+  dontConfigure = true;
+  dontBuild = true;
+
+  preferLocalBuild = true;
+  allowSubstitutes = false;
+
+  installPhase = ''
+    runHook preInstall
+
+    mkdir -p $out
+    ${xorg.lndir}/bin/lndir -silent ${caja} $out
+
+    dbus_service_path="share/dbus-1/services/org.mate.freedesktop.FileManager1.service"
+    rm -f $out/share/applications/* "$out/$dbus_service_path"
+    for file in ${caja}/share/applications/*; do
+      substitute "$file" "$out/share/applications/$(basename $file)" \
+        --replace-fail "${caja}" "$out"
+    done
+    substitute "${caja}/$dbus_service_path" "$out/$dbus_service_path" \
+      --replace-fail "${caja}" "$out"
+
+    runHook postInstall
+  '';
+
+  preFixup = lib.optionalString (selectedExtensions != [ ]) ''
+    gappsWrapperArgs+=(
+      --set CAJA_EXTENSION_DIRS ${lib.concatMapStringsSep ":" (x: "${x.outPath}/lib/caja/extensions-2.0") selectedExtensions}
+    )
+  '';
+
+  inherit (caja.meta);
+}