about summary refs log tree commit diff
path: root/pkgs/desktops/mate
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
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')
-rw-r--r--pkgs/desktops/mate/caja-with-extensions/default.nix29
-rw-r--r--pkgs/desktops/mate/caja/with-extensions.nix61
-rw-r--r--pkgs/desktops/mate/default.nix5
3 files changed, 65 insertions, 30 deletions
diff --git a/pkgs/desktops/mate/caja-with-extensions/default.nix b/pkgs/desktops/mate/caja-with-extensions/default.nix
deleted file mode 100644
index 4de6d5d6d760..000000000000
--- a/pkgs/desktops/mate/caja-with-extensions/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ stdenv
-, lib
-, makeWrapper
-, caja-extensions
-, caja
-, extensions ? [ caja-extensions ]
-, mateUpdateScript
-}:
-
-stdenv.mkDerivation {
-  pname = "${caja.pname}-with-extensions";
-  version = caja.version;
-
-  dontUnpack = true;
-
-  nativeBuildInputs = [
-    makeWrapper
-  ];
-
-  inherit caja;
-
-  installPhase = ''
-    mkdir -p $out/bin
-    makeWrapper $caja/bin/caja $out/bin/caja \
-    --set CAJA_EXTENSION_DIRS ${lib.concatMapStringsSep ":" (x: "${x.outPath}/lib/caja/extensions-2.0") extensions}
-  '';
-
-  inherit (caja.meta);
-}
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);
+}
diff --git a/pkgs/desktops/mate/default.nix b/pkgs/desktops/mate/default.nix
index 50287c544c12..910c973ff4ec 100644
--- a/pkgs/desktops/mate/default.nix
+++ b/pkgs/desktops/mate/default.nix
@@ -14,7 +14,7 @@ let
     caja = callPackage ./caja { };
     caja-dropbox = callPackage ./caja-dropbox { };
     caja-extensions = callPackage ./caja-extensions { };
-    caja-with-extensions = callPackage ./caja-with-extensions { };
+    caja-with-extensions = callPackage ./caja/with-extensions.nix { };
     engrampa = callPackage ./engrampa { };
     eom = callPackage ./eom { };
     libmatekbd = callPackage ./libmatekbd { };
@@ -96,6 +96,9 @@ let
       pluma
     ];
 
+    cajaExtensions = [
+      caja-extensions
+    ];
   };
 
 in lib.makeScope pkgs.newScope packages