gimpPlugins: include GIMP into the scope

So that it can be easily overridden.

Also clean up, update usage comment for this century and remove alias.
This commit is contained in:
Jan Tojnar 2020-11-11 14:33:49 +01:00
parent f4c513125d
commit aa96bd294b
No known key found for this signature in database
GPG Key ID: 7FAB2A15F7A607A4
2 changed files with 31 additions and 21 deletions

View File

@ -1,12 +1,18 @@
# install these packages into your profile. Then add # Use `gimp-with-plugins` package for GIMP with all plug-ins.
# ~/.nix-profile/gimp-version-plugins to your plugin list you can find at # If you just want a subset of plug-ins, you can specify them explicitly:
# preferences -> Folders -> Plug-ins # `gimp-with-plugins.override { plugins = with gimpPlugins; [ gap ]; }`.
# same applies for the scripts
{ config, lib, pkgs }:
{ config, pkgs, gimp }:
let let
inherit (pkgs) stdenv fetchurl pkgconfig intltool glib fetchFromGitHub; inherit (pkgs) stdenv fetchurl pkg-config intltool glib fetchFromGitHub;
inherit (gimp) targetPluginDir targetScriptDir; in
lib.makeScope pkgs.newScope (self:
let
# Use GIMP from the scope.
inherit (self) gimp;
pluginDerivation = attrs: let pluginDerivation = attrs: let
name = attrs.name or "${attrs.pname}-${attrs.version}"; name = attrs.name or "${attrs.pname}-${attrs.version}";
@ -14,12 +20,12 @@ let
prePhases = "extraLib"; prePhases = "extraLib";
extraLib = '' extraLib = ''
installScripts(){ installScripts(){
mkdir -p $out/${targetScriptDir}/${name}; mkdir -p $out/${gimp.targetScriptDir}/${name};
for p in "$@"; do cp "$p" -r $out/${targetScriptDir}/${name}; done for p in "$@"; do cp "$p" -r $out/${gimp.targetScriptDir}/${name}; done
} }
installPlugins(){ installPlugins(){
mkdir -p $out/${targetPluginDir}/${name}; mkdir -p $out/${gimp.targetPluginDir}/${name};
for p in "$@"; do cp "$p" -r $out/${targetPluginDir}/${name}; done for p in "$@"; do cp "$p" -r $out/${gimp.targetPluginDir}/${name}; done
} }
''; '';
@ -30,8 +36,16 @@ let
// attrs // attrs
// { // {
name = "gimp-plugin-${name}"; name = "gimp-plugin-${name}";
buildInputs = [ gimp gimp.gtk glib ] ++ (attrs.buildInputs or []); buildInputs = [
nativeBuildInputs = [ pkgconfig intltool ] ++ (attrs.nativeBuildInputs or []); gimp
gimp.gtk
glib
] ++ (attrs.buildInputs or []);
nativeBuildInputs = [
pkg-config
intltool
] ++ (attrs.nativeBuildInputs or []);
} }
); );
@ -39,10 +53,11 @@ let
phases = [ "extraLib" "installPhase" ]; phases = [ "extraLib" "installPhase" ];
installPhase = "installScripts ${src}"; installPhase = "installScripts ${src}";
} // attrs); } // attrs);
in in
{
# Allow overriding GIMP package in the scope.
inherit (pkgs) gimp;
stdenv.lib.makeScope pkgs.newScope (self: with self; {
gap = pluginDerivation { gap = pluginDerivation {
/* menu: /* menu:
Video Video
@ -201,9 +216,4 @@ stdenv.lib.makeScope pkgs.newScope (self: with self; {
sha256 = "c14a8f4f709695ede3f77348728a25b3f3ded420da60f3f8de3944b7eae98a49"; sha256 = "c14a8f4f709695ede3f77348728a25b3f3ded420da60f3f8de3944b7eae98a49";
}; };
}; };
} // stdenv.lib.optionalAttrs (config.allowAliases or true) {
resynthesizer2 = resynthesizer;
}) })

View File

@ -2,7 +2,7 @@
let let
allPlugins = lib.filter (pkg: lib.isDerivation pkg && !pkg.meta.broken or false) (lib.attrValues gimpPlugins); allPlugins = lib.filter (pkg: lib.isDerivation pkg && !pkg.meta.broken or false) (lib.attrValues gimpPlugins);
selectedPlugins = if plugins == null then allPlugins else plugins; selectedPlugins = lib.filter (pkg: pkg != gimpPlugins.gimp) (if plugins == null then allPlugins else plugins);
extraArgs = map (x: x.wrapArgs or "") selectedPlugins; extraArgs = map (x: x.wrapArgs or "") selectedPlugins;
versionBranch = stdenv.lib.versions.majorMinor gimp.version; versionBranch = stdenv.lib.versions.majorMinor gimp.version;