nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 95 lines 2.7 kB view raw
1{ 2 lib, 3 bundlerApp, 4 bundlerUpdateScript, 5 makeWrapper, 6 withPngcrush ? true, 7 pngcrush, 8 withPngout ? false, 9 pngout, # disabled by default because it's unfree 10 withAdvpng ? true, 11 advancecomp, 12 withOptipng ? true, 13 optipng, 14 withPngquant ? true, 15 pngquant, 16 withOxipng ? true, 17 oxipng, 18 withJhead ? true, 19 jhead, 20 withJpegoptim ? true, 21 jpegoptim, 22 withJpegrecompress ? true, 23 jpeg-archive, 24 withJpegtran ? true, 25 libjpeg, 26 withGifsicle ? true, 27 gifsicle, 28 withSvgo ? true, 29 svgo, 30}: 31 32let 33 optionalDepsPath = 34 lib.optional withPngcrush pngcrush 35 ++ lib.optional withPngout pngout 36 ++ lib.optional withAdvpng advancecomp 37 ++ lib.optional withOptipng optipng 38 ++ lib.optional withPngquant pngquant 39 ++ lib.optional withOxipng oxipng 40 ++ lib.optional withJhead jhead 41 ++ lib.optional withJpegoptim jpegoptim 42 ++ lib.optional withJpegrecompress jpeg-archive 43 ++ lib.optional withJpegtran libjpeg 44 ++ lib.optional withGifsicle gifsicle 45 ++ lib.optional withSvgo svgo; 46 47 disabledWorkersFlags = 48 lib.optional (!withPngcrush) "--no-pngcrush" 49 ++ lib.optional (!withPngout) "--no-pngout" 50 ++ lib.optional (!withAdvpng) "--no-advpng" 51 ++ lib.optional (!withOptipng) "--no-optipng" 52 ++ lib.optional (!withPngquant) "--no-pngquant" 53 ++ lib.optional (!withOxipng) "--no-oxipng" 54 ++ lib.optional (!withJhead) "--no-jhead" 55 ++ lib.optional (!withJpegoptim) "--no-jpegoptim" 56 ++ lib.optional (!withJpegrecompress) "--no-jpegrecompress" 57 ++ lib.optional (!withJpegtran) "--no-jpegtran" 58 ++ lib.optional (!withGifsicle) "--no-gifsicle" 59 ++ lib.optional (!withSvgo) "--no-svgo"; 60in 61 62bundlerApp { 63 pname = "image_optim"; 64 gemdir = ./.; 65 66 exes = [ "image_optim" ]; 67 68 nativeBuildInputs = [ makeWrapper ]; 69 70 postBuild = '' 71 wrapProgram $out/bin/image_optim \ 72 --prefix PATH : ${lib.escapeShellArg (lib.makeBinPath optionalDepsPath)} \ 73 --add-flags "${lib.concatStringsSep " " disabledWorkersFlags}" 74 ''; 75 76 passthru.updateScript = bundlerUpdateScript "image_optim"; 77 78 meta = with lib; { 79 description = "Optimize images using multiple utilities"; 80 longDescription = '' 81 Command line tool and ruby interface to optimize (lossless compress, 82 optionally lossy) jpeg, png, gif and svg images using external utilities 83 (advpng, gifsicle, jhead, jpeg-recompress, jpegoptim, jpegrescan, 84 jpegtran, optipng, oxipng, pngcrush, pngout, pngquant, svgo) 85 ''; 86 homepage = "https://github.com/toy/image_optim"; 87 license = licenses.mit; 88 maintainers = with maintainers; [ 89 srghma 90 nicknovitski 91 ]; 92 platforms = platforms.all; 93 mainProgram = "image_optim"; 94 }; 95}