aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp
diff options
context:
space:
mode:
authorMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
committerMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
commitc4625b175f8200f643fd6e11010932ea44c78433 (patch)
treebce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp
parent49f735974dd103039ddc4cb576bb76555164a9e7 (diff)
parentd661aa56a8843e991261510c1bb28fdc2f6975ae (diff)
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7 git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/default.nix180
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/hardcode-plugin-interpreters.patch11
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/plugins/default.nix248
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/plugins/patches/focusblur-glib.patch200
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/remove-cc-reference.patch13
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/wrapper.nix29
6 files changed, 681 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/default.nix
new file mode 100644
index 000000000000..025f97b54e69
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/default.nix
@@ -0,0 +1,180 @@
+{ stdenv
+, lib
+, fetchurl
+, substituteAll
+, autoreconfHook
+, pkgconfig
+, intltool
+, babl
+, gegl
+, gtk2
+, glib
+, gdk-pixbuf
+, isocodes
+, pango
+, cairo
+, freetype
+, fontconfig
+, lcms
+, libpng
+, libjpeg
+, poppler
+, poppler_data
+, libtiff
+, libmng
+, librsvg
+, libwmf
+, zlib
+, libzip
+, ghostscript
+, aalib
+, shared-mime-info
+, python2
+, libexif
+, gettext
+, makeWrapper
+, xorg
+, glib-networking
+, libmypaint
+, gexiv2
+, harfbuzz
+, mypaint-brushes1
+, libwebp
+, libheif
+, libgudev
+, openexr
+, AppKit
+, Cocoa
+, gtk-mac-integration-gtk2
+}:
+
+let
+ python = python2.withPackages (pp: [ pp.pygtk ]);
+in stdenv.mkDerivation rec {
+ pname = "gimp";
+ version = "2.10.22";
+
+ outputs = [ "out" "dev" ];
+
+ src = fetchurl {
+ url = "http://download.gimp.org/pub/gimp/v${lib.versions.majorMinor version}/${pname}-${version}.tar.bz2";
+ sha256 = "1fqqyshakvdarf1jipk2n33ibqr23ni22z3d8srq13bpydblpf1d";
+ };
+
+ patches = [
+ # to remove compiler from the runtime closure, reference was retained via
+ # gimp --version --verbose output
+ (substituteAll {
+ src = ./remove-cc-reference.patch;
+ cc_version = stdenv.cc.cc.name;
+ })
+
+ # Use absolute paths instead of relying on PATH
+ # to make sure plug-ins are loaded by the correct interpreter.
+ ./hardcode-plugin-interpreters.patch
+ ];
+
+ nativeBuildInputs = [
+ autoreconfHook # hardcode-plugin-interpreters.patch changes Makefile.am
+ pkgconfig
+ intltool
+ gettext
+ makeWrapper
+ ];
+
+ buildInputs = [
+ babl
+ gegl
+ gtk2
+ glib
+ gdk-pixbuf
+ pango
+ cairo
+ gexiv2
+ harfbuzz
+ isocodes
+ freetype
+ fontconfig
+ lcms
+ libpng
+ libjpeg
+ poppler
+ poppler_data
+ libtiff
+ openexr
+ libmng
+ librsvg
+ libwmf
+ zlib
+ libzip
+ ghostscript
+ aalib
+ shared-mime-info
+ libwebp
+ libheif
+ python
+ libexif
+ xorg.libXpm
+ glib-networking
+ libmypaint
+ mypaint-brushes1
+ ] ++ lib.optionals stdenv.isDarwin [
+ AppKit
+ Cocoa
+ gtk-mac-integration-gtk2
+ ] ++ lib.optionals stdenv.isLinux [
+ libgudev
+ ];
+
+ # needed by gimp-2.0.pc
+ propagatedBuildInputs = [
+ gegl
+ ];
+
+ configureFlags = [
+ "--without-webkit" # old version is required
+ "--disable-check-update"
+ "--with-bug-report-url=https://github.com/NixOS/nixpkgs/issues/new"
+ "--with-icc-directory=/run/current-system/sw/share/color/icc"
+ # fix libdir in pc files (${exec_prefix} needs to be passed verbatim)
+ "--libdir=\${exec_prefix}/lib"
+ ];
+
+ enableParallelBuilding = true;
+
+ # on Darwin,
+ # test-eevl.c:64:36: error: initializer element is not a compile-time constant
+ doCheck = !stdenv.isDarwin;
+
+ # Check if librsvg was built with --disable-pixbuf-loader.
+ PKG_CONFIG_GDK_PIXBUF_2_0_GDK_PIXBUF_MODULEDIR = "${librsvg}/${gdk-pixbuf.moduleDir}";
+
+ preConfigure = ''
+ # The check runs before glib-networking is registered
+ export GIO_EXTRA_MODULES="${glib-networking}/lib/gio/modules:$GIO_EXTRA_MODULES"
+ '';
+
+ postFixup = ''
+ wrapProgram $out/bin/gimp-${lib.versions.majorMinor version} \
+ --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
+ '';
+
+ passthru = rec {
+ # The declarations for `gimp-with-plugins` wrapper,
+ # used for determining plug-in installation paths
+ majorVersion = "${lib.versions.major version}.0";
+ targetPluginDir = "lib/gimp/${majorVersion}/plug-ins";
+ targetScriptDir = "share/gimp/${majorVersion}/scripts";
+
+ # probably its a good idea to use the same gtk in plugins ?
+ gtk = gtk2;
+ };
+
+ meta = with lib; {
+ description = "The GNU Image Manipulation Program";
+ homepage = "https://www.gimp.org/";
+ maintainers = with maintainers; [ jtojnar ];
+ license = licenses.gpl3Plus;
+ platforms = platforms.unix;
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/hardcode-plugin-interpreters.patch b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/hardcode-plugin-interpreters.patch
new file mode 100644
index 000000000000..1528404c31d2
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/hardcode-plugin-interpreters.patch
@@ -0,0 +1,11 @@
+--- a/plug-ins/pygimp/Makefile.am
++++ b/plug-ins/pygimp/Makefile.am
+@@ -157,7 +157,7 @@ install-interp-file:
+ echo 'python=$(PYBIN_PATH)' > '$(DESTDIR)$(pyinterpfile)'
+ echo 'python2=$(PYBIN_PATH)' >> '$(DESTDIR)$(pyinterpfile)'
+ echo '/usr/bin/python=$(PYBIN_PATH)' >> '$(DESTDIR)$(pyinterpfile)'
+- echo ":Python:E::py::`basename $(PYTHON)`:" >> '$(DESTDIR)$(pyinterpfile)'
++ echo ":Python:E::py::$(PYTHON):" >> '$(DESTDIR)$(pyinterpfile)'
+
+ install-data-local: install-env-file install-interp-file
+
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/plugins/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/plugins/default.nix
new file mode 100644
index 000000000000..0b5e6a7f379f
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/plugins/default.nix
@@ -0,0 +1,248 @@
+# install these packages into your profile. Then add
+# ~/.nix-profile/gimp-version-plugins to your plugin list you can find at
+# preferences -> Folders -> Plug-ins
+# same applies for the scripts
+
+{ config, pkgs, gimp }:
+let
+ inherit (pkgs) stdenv fetchurl pkgconfig intltool glib fetchFromGitHub;
+ inherit (gimp) targetPluginDir targetScriptDir;
+
+ pluginDerivation = a: let
+ name = a.name or "${a.pname}-${a.version}";
+ in stdenv.mkDerivation ({
+ prePhases = "extraLib";
+ extraLib = ''
+ installScripts(){
+ mkdir -p $out/${targetScriptDir}/${name};
+ for p in "$@"; do cp "$p" -r $out/${targetScriptDir}/${name}; done
+ }
+ installPlugins(){
+ mkdir -p $out/${targetPluginDir}/${name};
+ for p in "$@"; do cp "$p" -r $out/${targetPluginDir}/${name}; done
+ }
+ '';
+ }
+ // a
+ // {
+ name = "gimp-plugin-${name}";
+ buildInputs = [ gimp gimp.gtk glib ] ++ (a.buildInputs or []);
+ nativeBuildInputs = [ pkgconfig intltool ] ++ (a.nativeBuildInputs or []);
+ }
+ );
+
+ scriptDerivation = {src, ...}@attrs : pluginDerivation ({
+ phases = [ "extraLib" "installPhase" ];
+ installPhase = "installScripts ${src}";
+ } // attrs);
+
+in
+
+stdenv.lib.makeScope pkgs.newScope (self: with self; {
+ gap = pluginDerivation {
+ /* menu:
+ Video
+ */
+ name = "gap-2.6.0";
+ src = fetchurl {
+ url = "https://ftp.gimp.org/pub/gimp/plug-ins/v2.6/gap/gimp-gap-2.6.0.tar.bz2";
+ sha256 = "1jic7ixcmsn4kx2cn32nc5087rk6g8xsrz022xy11yfmgvhzb0ql";
+ };
+ NIX_LDFLAGS = "-lm";
+ patchPhase = ''
+ sed -e 's,^\(GIMP_PLUGIN_DIR=\).*,\1'"$out/${gimp.name}-plugins", \
+ -e 's,^\(GIMP_DATA_DIR=\).*,\1'"$out/share/${gimp.name}", -i configure
+ '';
+ hardeningDisable = [ "format" ];
+ meta = with stdenv.lib; {
+ description = "The GIMP Animation Package";
+ homepage = "https://www.gimp.org";
+ # The main code is given in GPLv3, but it has ffmpeg in it, and I think ffmpeg license
+ # falls inside "free".
+ license = with licenses; [ gpl3 free ];
+ };
+ };
+
+ fourier = pluginDerivation rec {
+ /* menu:
+ Filters/Generic/FFT Forward
+ Filters/Generic/FFT Inverse
+ */
+ name = "fourier-0.4.3";
+ buildInputs = with pkgs; [ fftw ];
+
+ src = fetchurl {
+ url = "https://www.lprp.fr/files/old-web/soft/gimp/${name}.tar.gz";
+ sha256 = "0mf7f8vaqs2madx832x3kcxw3hv3w3wampvzvaps1mkf2kvrjbsn";
+ };
+
+ installPhase = "installPlugins fourier";
+
+ meta = with stdenv.lib; {
+ description = "GIMP plug-in to do the fourier transform";
+ homepage = "https://people.via.ecp.fr/~remi/soft/gimp/gimp_plugin_en.php3#fourier";
+ license = with licenses; [ gpl3Plus ];
+ };
+ };
+
+ focusblur = pluginDerivation rec {
+ /* menu:
+ Blur/Focus Blur
+ */
+ name = "focusblur-3.2.6";
+ buildInputs = with pkgs; [ fftwSinglePrec ];
+ patches = [ ./patches/focusblur-glib.patch ];
+ postInstall = "fail";
+ installPhase = "installPlugins src/focusblur";
+ src = fetchurl {
+ url = "http://registry.gimp.org/files/${name}.tar.bz2";
+ sha256 = "1gqf3hchz7n7v5kpqkhqh8kwnxbsvlb5cr2w2n7ngrvl56f5xs1h";
+ };
+ meta.broken = true;
+ };
+
+ resynthesizer = pluginDerivation rec {
+ /* menu:
+ Edit/Fill with pattern seamless...
+ Filters/Enhance/Heal selection...
+ Filters/Enhance/Heal transparency...
+ Filters/Enhance/Sharpen by synthesis...
+ Filters/Enhance/Uncrop...
+ Filters/Map/Style...
+ Filters/Render/Texture...
+ */
+ pname = "resynthesizer";
+ version = "2.0.3";
+ buildInputs = with pkgs; [ fftw ];
+ nativeBuildInputs = with pkgs; [ autoreconfHook ];
+ makeFlags = [ "GIMP_LIBDIR=${placeholder "out"}/lib/gimp/2.0" ];
+ src = fetchFromGitHub {
+ owner = "bootchk";
+ repo = "resynthesizer";
+ rev = "v${version}";
+ sha256 = "1jwc8bhhm21xhrgw56nzbma6fwg59gc8anlmyns7jdiw83y0zx3j";
+ };
+ };
+
+ texturize = pluginDerivation {
+ name = "texturize-2.2.2017-07-28";
+ src = fetchFromGitHub {
+ owner = "lmanul";
+ repo = "gimp-texturize";
+ rev = "de4367f71e40fe6d82387eaee68611a80a87e0e1";
+ sha256 = "1zzvbczly7k456c0y6s92a1i8ph4ywmbvdl8i4rcc29l4qd2z8fw";
+ };
+ installPhase = "installPlugins src/texturize";
+ meta.broken = true; # https://github.com/lmanul/gimp-texturize/issues/1
+ };
+
+ waveletSharpen = pluginDerivation {
+ /* menu:
+ Filters/Enhance/Wavelet sharpen
+ */
+ name = "wavelet-sharpen-0.1.2";
+ NIX_LDFLAGS = "-lm";
+ src = fetchurl {
+ url = "http://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?
+ };
+
+ lqrPlugin = pluginDerivation {
+ /* menu:
+ Layer/Liquid Rescale
+ */
+ name = "lqr-plugin-0.6.1";
+ buildInputs = with pkgs; [ liblqr1 ];
+ src = fetchurl {
+ url = "http://registry.gimp.org/files/gimp-lqr-plugin-0.6.1.tar.bz2";
+ sha256 = "00hklkpcimcbpjly4rjhfipaw096cpy768g9wixglwrsyqhil7l9";
+ };
+ #postInstall = ''mkdir -p $out/nix-support; echo "${liblqr1}" > "$out/nix-support/propagated-user-env-packages"'';
+ installPhase = "installPlugins src/gimp-lqr-plugin";
+ };
+
+ gmic = pkgs.gmic-qt.override {
+ variant = "gimp";
+ };
+
+ ufraw = pkgs.ufraw.gimpPlugin;
+
+ gimplensfun = pluginDerivation rec {
+ version = "unstable-2018-10-21";
+ name = "gimplensfun-${version}";
+
+ src = fetchFromGitHub {
+ owner = "seebk";
+ repo = "GIMP-Lensfun";
+ rev = "1c5a5c1534b5faf098b7441f8840d22835592f17";
+ sha256 = "1jj3n7spkjc63aipwdqsvq9gi07w13bb1v8iqzvxwzld2kxa3c8w";
+ };
+
+ buildInputs = with pkgs; [ lensfun gexiv2 ];
+
+ installPhase = "
+ installPlugins gimp-lensfun
+ ";
+
+ meta = {
+ description = "GIMP plugin to correct lens distortion using the lensfun library and database";
+
+ homepage = "http://lensfun.sebastiankraft.net/";
+
+ license = stdenv.lib.licenses.gpl3Plus;
+ maintainers = [ ];
+ platforms = stdenv.lib.platforms.gnu ++ stdenv.lib.platforms.linux;
+ };
+ };
+
+ /* =============== simple script files ==================== */
+
+ # also have a look at enblend-enfuse in all-packages.nix
+ exposureBlend = scriptDerivation {
+ name = "exposure-blend";
+ src = fetchurl {
+ url = "http://tir.astro.utoledo.edu/jdsmith/code/eb/exposure-blend.scm";
+ sha256 = "1b6c9wzpklqras4wwsyw3y3jp6fjmhnnskqiwm5sabs8djknfxla";
+ };
+ meta.broken = true;
+ };
+
+ lightning = scriptDerivation {
+ name = "Lightning";
+ src = fetchurl {
+ url = "http://registry.gimp.org/files/Lightning.scm";
+ sha256 = "c14a8f4f709695ede3f77348728a25b3f3ded420da60f3f8de3944b7eae98a49";
+ };
+ };
+
+ /* space in name trouble ?
+
+ rainbowPlasma = scriptDerivation {
+ # http://registry.gimp.org/node/164
+ name = "rainbow-plasma";
+ src = fetchurl {
+ url = "http://registry.gimp.org/files/Rainbow Plasma.scm";
+ sha256 = "34308d4c9441f9e7bafa118af7ec9540f10ea0df75e812e2f3aa3fd7b5344c23";
+ name = "Rainbow-Plasma.scm"; # nix doesn't like spaces, does it?
+ };
+ };
+ */
+
+ /* doesn't seem to be working :-(
+ lightningGate = scriptDerivation {
+ # http://registry.gimp.org/node/153
+ name = "lightning-gate";
+ src = fetchurl {
+ url = "http://registry.gimp.org/files/LightningGate.scm";
+ sha256 = "181w1zi9a99kn2mfxjp43wkwcgw5vbb6iqjas7a9mhm8p04csys2";
+ };
+ };
+ */
+
+} // stdenv.lib.optionalAttrs (config.allowAliases or true) {
+
+ resynthesizer2 = resynthesizer;
+
+})
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/plugins/patches/focusblur-glib.patch b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/plugins/patches/focusblur-glib.patch
new file mode 100644
index 000000000000..b1079ab36604
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/plugins/patches/focusblur-glib.patch
@@ -0,0 +1,200 @@
+ls diff --git focusblur-3.2.6/src/aaa.h focusblur-3.2.6/src/aaa.h
+index 4a6d90b..c74cab2 100644
+--- focusblur-3.2.6/src/aaa.h
++++ focusblur-3.2.6/src/aaa.h
+@@ -19,8 +19,7 @@
+ #ifndef __AAA_H__
+ #define __AAA_H__
+
+-#include <glib/gmacros.h>
+-#include <glib/gtypes.h>
++#include <glib.h>
+
+
+ G_BEGIN_DECLS
+diff --git focusblur-3.2.6/src/brush.h focusblur-3.2.6/src/brush.h
+index 685b253..8778fec 100644
+--- focusblur-3.2.6/src/brush.h
++++ focusblur-3.2.6/src/brush.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_BRUSH_H__
+ #define __FOCUSBLUR_BRUSH_H__
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include "focusblurtypes.h"
+
+ G_BEGIN_DECLS
+diff --git focusblur-3.2.6/src/depthmap.h focusblur-3.2.6/src/depthmap.h
+index 78f5e99..baee540 100644
+--- focusblur-3.2.6/src/depthmap.h
++++ focusblur-3.2.6/src/depthmap.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_DEPTHMAP_H__
+ #define __FOCUSBLUR_DEPTHMAP_H__
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+
+ #include "focusblurtypes.h"
+ #include "focusblurenums.h"
+diff --git focusblur-3.2.6/src/diffusion.h focusblur-3.2.6/src/diffusion.h
+index 07ffe4b..3c1e4b9 100644
+--- focusblur-3.2.6/src/diffusion.h
++++ focusblur-3.2.6/src/diffusion.h
+@@ -23,7 +23,7 @@
+ #define __FOCUSBLUR_DIFFUSION_H__
+
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+
+ #include "focusblur.h"
+ #include "focusblurtypes.h"
+diff --git focusblur-3.2.6/src/fftblur.h focusblur-3.2.6/src/fftblur.h
+index 124bcba..cd809fa 100644
+--- focusblur-3.2.6/src/fftblur.h
++++ focusblur-3.2.6/src/fftblur.h
+@@ -23,8 +23,7 @@
+ #define __FOCUSBLUR_FFTBLUR_H__
+
+
+-#include <glib/gmacros.h>
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <libgimpwidgets/gimpwidgetstypes.h>
+
+ #include "focusblurparam.h"
+diff --git focusblur-3.2.6/src/fftblurbuffer.h focusblur-3.2.6/src/fftblurbuffer.h
+index b34d682..42e6380 100644
+--- focusblur-3.2.6/src/fftblurbuffer.h
++++ focusblur-3.2.6/src/fftblurbuffer.h
+@@ -28,8 +28,7 @@
+ #endif
+ #include <fftw3.h>
+
+-#include <glib/gmacros.h>
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <gtk/gtkstyle.h>
+ #include <libgimp/gimptypes.h>
+ #include <libgimpwidgets/gimpwidgetstypes.h>
+diff --git focusblur-3.2.6/src/fftblurproc.h focusblur-3.2.6/src/fftblurproc.h
+index 495572d..10a34f4 100644
+--- focusblur-3.2.6/src/fftblurproc.h
++++ focusblur-3.2.6/src/fftblurproc.h
+@@ -23,8 +23,7 @@
+ #define __FOCUSBLUR_FFTBLUR_PROC_H__
+
+
+-#include <glib/gmacros.h>
+-#include <glib/gtypes.h>
++#include <glib.h>
+
+ #include "focusblurtypes.h"
+
+diff --git focusblur-3.2.6/src/focusblur.h focusblur-3.2.6/src/focusblur.h
+index 54ca40a..d7e13a6 100644
+--- focusblur-3.2.6/src/focusblur.h
++++ focusblur-3.2.6/src/focusblur.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_H__
+ #define __FOCUSBLUR_H__
+
+-#include <glib/gmacros.h>
++#include <glib.h>
+
+ G_BEGIN_DECLS
+
+diff --git focusblur-3.2.6/src/focusblurparam.h focusblur-3.2.6/src/focusblurparam.h
+index 64c887b..32865b4 100644
+--- focusblur-3.2.6/src/focusblurparam.h
++++ focusblur-3.2.6/src/focusblurparam.h
+@@ -22,8 +22,7 @@
+ #ifndef __FOCUSBLUR_PARAM_H__
+ #define __FOCUSBLUR_PARAM_H__
+
+-#include <glib/gmacros.h>
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <gtk/gtkstyle.h>
+ #include <libgimp/gimptypes.h>
+
+diff --git focusblur-3.2.6/src/focusblurstock.h focusblur-3.2.6/src/focusblurstock.h
+index 15f3603..cfc0567 100644
+--- focusblur-3.2.6/src/focusblurstock.h
++++ focusblur-3.2.6/src/focusblurstock.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_STOCK_H__
+ #define __FOCUSBLUR_STOCK_H__
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+
+ G_BEGIN_DECLS
+
+diff --git focusblur-3.2.6/src/focusblurtypes.h focusblur-3.2.6/src/focusblurtypes.h
+index 0954c60..1531c84 100644
+--- focusblur-3.2.6/src/focusblurtypes.h
++++ focusblur-3.2.6/src/focusblurtypes.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_TYPES_H__
+ #define __FOCUSBLUR_TYPES_H__
+
+-#include <glib/gmacros.h>
++#include <glib.h>
+
+
+ G_BEGIN_DECLS
+diff --git focusblur-3.2.6/src/interface.h focusblur-3.2.6/src/interface.h
+index 6defd27..e819c60 100644
+--- focusblur-3.2.6/src/interface.h
++++ focusblur-3.2.6/src/interface.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_INTERFACE_H__
+ #define __FOCUSBLUR_INTERFACE_H__
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+
+ #include "focusblurtypes.h"
+
+diff --git focusblur-3.2.6/src/render.h focusblur-3.2.6/src/render.h
+index febbd24..a501f1e 100644
+--- focusblur-3.2.6/src/render.h
++++ focusblur-3.2.6/src/render.h
+@@ -24,7 +24,7 @@
+
+ #include "config.h"
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+ //#include <libgimp/gimp.h>
+ #include <libgimp/gimpui.h>
+
+diff --git focusblur-3.2.6/src/shine.h focusblur-3.2.6/src/shine.h
+index c5a3621..86b4c09 100644
+--- focusblur-3.2.6/src/shine.h
++++ focusblur-3.2.6/src/shine.h
+@@ -22,7 +22,7 @@
+ #ifndef __FOCUSBLUR_SHINE_H__
+ #define __FOCUSBLUR_SHINE_H__
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <libgimp/gimptypes.h>
+
+ #include "focusblurtypes.h"
+diff --git focusblur-3.2.6/src/source.h focusblur-3.2.6/src/source.h
+index 50d34ca..8eec35c 100644
+--- focusblur-3.2.6/src/source.h
++++ focusblur-3.2.6/src/source.h
+@@ -24,7 +24,7 @@
+
+ #include "config.h"
+
+-#include <glib/gtypes.h>
++#include <glib.h>
+ #include <libgimp/gimptypes.h>
+
+ #include "focusblurtypes.h"
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/remove-cc-reference.patch b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/remove-cc-reference.patch
new file mode 100644
index 000000000000..20c350bdaea1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/remove-cc-reference.patch
@@ -0,0 +1,13 @@
+diff --git a/app/gimp-version.c b/app/gimp-version.c
+index 3d1894a036..48bb670b64 100644
+--- a/app/gimp-version.c
++++ b/app/gimp-version.c
+@@ -230,7 +230,7 @@ gimp_version (gboolean be_verbose,
+ GIMP_BUILD_ID,
+ gimp_version_get_revision (),
+ GIMP_BUILD_PLATFORM_FAMILY,
+- CC_VERSION,
++ "@cc_version@",
+ lib_versions);
+ g_free (lib_versions);
+
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/wrapper.nix
new file mode 100644
index 000000000000..841728d3a294
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/graphics/gimp/wrapper.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, symlinkJoin, gimp, makeWrapper, gimpPlugins, gnome3, plugins ? null}:
+
+let
+allPlugins = lib.filter (pkg: lib.isDerivation pkg && !pkg.meta.broken or false) (lib.attrValues gimpPlugins);
+selectedPlugins = if plugins == null then allPlugins else plugins;
+extraArgs = map (x: x.wrapArgs or "") selectedPlugins;
+versionBranch = stdenv.lib.versions.majorMinor gimp.version;
+
+in symlinkJoin {
+ name = "gimp-with-plugins-${gimp.version}";
+
+ paths = [ gimp ] ++ selectedPlugins;
+
+ buildInputs = [ makeWrapper ];
+
+ postBuild = ''
+ for each in gimp-${versionBranch} gimp-console-${versionBranch}; do
+ wrapProgram $out/bin/$each \
+ --set GIMP2_PLUGINDIR "$out/lib/gimp/2.0" \
+ --set GIMP2_DATADIR "$out/share/gimp/2.0" \
+ --prefix GTK_PATH : "${gnome3.gnome-themes-extra}/lib/gtk-2.0" \
+ ${toString extraArgs}
+ done
+ set +x
+ for each in gimp gimp-console; do
+ ln -sf "$each-${versionBranch}" $out/bin/$each
+ done
+ '';
+}