Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 47 lines 1.3 kB view raw
1{ 2 lib, 3 symlinkJoin, 4 makeWrapper, 5 gimpPlugins, 6 gnome-themes-extra, 7 plugins ? null, 8}: 9 10let 11 inherit (gimpPlugins) gimp; 12 allPlugins = lib.filter (pkg: lib.isDerivation pkg && !pkg.meta.broken or false) ( 13 lib.attrValues gimpPlugins 14 ); 15 selectedPlugins = lib.filter (pkg: pkg != gimp) (if plugins == null then allPlugins else plugins); 16 extraArgs = 17 map (x: x.wrapArgs or "") selectedPlugins 18 ++ lib.optionals (gimp.majorVersion == "2.0") [ 19 ''--prefix GTK_PATH : "${gnome-themes-extra}/lib/gtk-2.0"'' 20 ]; 21 exeVersion = 22 if gimp.majorVersion == "2.0" then lib.versions.majorMinor gimp.version else gimp.majorVersion; 23 majorVersion = lib.versions.major gimp.version; 24 25in 26symlinkJoin { 27 name = "gimp-with-plugins-${gimp.version}"; 28 29 paths = [ gimp ] ++ selectedPlugins; 30 31 nativeBuildInputs = [ makeWrapper ]; 32 33 postBuild = '' 34 for each in gimp-${exeVersion} gimp-console-${exeVersion}; do 35 wrapProgram $out/bin/$each \ 36 --set GIMP${majorVersion}_PLUGINDIR "$out/${gimp.targetLibDir}" \ 37 --set GIMP${majorVersion}_DATADIR "$out/${gimp.targetDataDir}" \ 38 ${toString extraArgs} 39 done 40 set +x 41 for each in gimp gimp-console; do 42 ln -sf "$each-${exeVersion}" $out/bin/$each 43 done 44 ''; 45 46 inherit (gimp) meta; 47}