about summary refs log tree commit diff
path: root/pkgs/applications/graphics
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2021-02-11 02:11:01 +0100
committerJan Tojnar <jtojnar@gmail.com>2021-02-11 02:22:23 +0100
commit32d3da48bc4a127f3b0e233a5e995a6b8656f258 (patch)
tree211e7594beaaa194e752cf850a26cf4f41a31448 /pkgs/applications/graphics
parent7ec9410c6a76d52dd841a4dfd4cf64ce16b1799e (diff)
downloadnixlib-32d3da48bc4a127f3b0e233a5e995a6b8656f258.tar
nixlib-32d3da48bc4a127f3b0e233a5e995a6b8656f258.tar.gz
nixlib-32d3da48bc4a127f3b0e233a5e995a6b8656f258.tar.bz2
nixlib-32d3da48bc4a127f3b0e233a5e995a6b8656f258.tar.lz
nixlib-32d3da48bc4a127f3b0e233a5e995a6b8656f258.tar.xz
nixlib-32d3da48bc4a127f3b0e233a5e995a6b8656f258.tar.zst
nixlib-32d3da48bc4a127f3b0e233a5e995a6b8656f258.zip
gimpPlugins: Fix pluginDerivation’s installPlugins
`installPlugins` command installed stuff into directories based on package name
but GIMP actually requires the plug-in executable to match the directory,
so the plug-ins could not be loaded.

https://gitlab.gnome.org/GNOME/gimp/-/commit/efae55a73e98389e38fa0e59ebebcda0abe3ee96

Let’s update `installPlugins` and also rename since the old broken usage had different semantics.

Scripts work the old way.
Diffstat (limited to 'pkgs/applications/graphics')
-rw-r--r--pkgs/applications/graphics/gimp/plugins/default.nix17
1 files changed, 10 insertions, 7 deletions
diff --git a/pkgs/applications/graphics/gimp/plugins/default.nix b/pkgs/applications/graphics/gimp/plugins/default.nix
index 57ab023359b4..db3bd494b6b1 100644
--- a/pkgs/applications/graphics/gimp/plugins/default.nix
+++ b/pkgs/applications/graphics/gimp/plugins/default.nix
@@ -23,9 +23,12 @@ let
         mkdir -p $out/${gimp.targetScriptDir}/${name};
         for p in "$@"; do cp "$p" -r $out/${gimp.targetScriptDir}/${name}; done
       }
-      installPlugins(){
-        mkdir -p $out/${gimp.targetPluginDir}/${name};
-        for p in "$@"; do cp "$p" -r $out/${gimp.targetPluginDir}/${name}; done
+      installPlugin() {
+        # The base name of the first argument is the plug-in name and the main executable.
+        # GIMP only allows a single plug-in per directory:
+        # https://gitlab.gnome.org/GNOME/gimp/-/commit/efae55a73e98389e38fa0e59ebebcda0abe3ee96
+        pluginDir=$out/${gimp.targetPluginDir}/$(basename "$1")
+        install -Dt "$pluginDir" "$@"
       }
     '';
 
@@ -101,7 +104,7 @@ in
     installPhase = ''
       runHook preInstall
 
-      installPlugins fourier
+      installPlugin fourier
 
       runHook postInstall
     '';
@@ -144,7 +147,7 @@ in
       rev = "de4367f71e40fe6d82387eaee68611a80a87e0e1";
       sha256 = "1zzvbczly7k456c0y6s92a1i8ph4ywmbvdl8i4rcc29l4qd2z8fw";
     };
-    installPhase = "installPlugins src/texturize";
+    installPhase = "installPlugin src/texturize";
     meta.broken = true; # https://github.com/lmanul/gimp-texturize/issues/1
   };
 
@@ -158,7 +161,7 @@ in
       url = "https://github.com/pixlsus/registry.gimp.org_static/raw/master/registry.gimp.org/files/wavelet-sharpen-0.1.2.tar.gz";
       sha256 = "0vql1k67i21g5ivaa1jh56rg427m0icrkpryrhg75nscpirfxxqw";
     };
-    installPhase = "installPlugins src/wavelet-sharpen"; # TODO translations are not copied .. How to do this on nix?
+    installPhase = "installPlugin src/wavelet-sharpen"; # TODO translations are not copied .. How to do this on nix?
   };
 
   lqrPlugin = pluginDerivation rec {
@@ -194,7 +197,7 @@ in
     buildInputs = with pkgs; [ lensfun gexiv2 ];
 
     installPhase = "
-      installPlugins gimp-lensfun
+      installPlugin gimp-lensfun
     ";
 
     meta = {