diff options
Diffstat (limited to 'pkgs/by-name/as/aseprite/package.nix')
-rw-r--r-- | pkgs/by-name/as/aseprite/package.nix | 171 |
1 files changed, 171 insertions, 0 deletions
diff --git a/pkgs/by-name/as/aseprite/package.nix b/pkgs/by-name/as/aseprite/package.nix new file mode 100644 index 0000000000000..13cd6e6bb0ddb --- /dev/null +++ b/pkgs/by-name/as/aseprite/package.nix @@ -0,0 +1,171 @@ +{ + clangStdenv, + cmake, + cmark, + curl, + fetchFromGitHub, + fetchpatch, + fmt, + fontconfig, + freetype, + giflib, + gitUpdater, + glib, + harfbuzzFull, + lib, + libGL, + libjpeg, + libpng, + libwebp, + libX11, + libXcursor, + libXext, + libXi, + libXxf86vm, + ninja, + pcre2, + pixman, + pkg-config, + skia-aseprite, + tinyxml-2, + zlib, +}: + +clangStdenv.mkDerivation (finalAttrs: { + pname = "aseprite"; + version = "1.3.7"; + + src = fetchFromGitHub { + owner = "aseprite"; + repo = "aseprite"; + rev = "v" + finalAttrs.version; + fetchSubmodules = true; + hash = "sha256-75kYJXmyags0cW2D5Ksq1uUrFSCAkFOdmn7Ya/6jLXc="; + }; + + nativeBuildInputs = [ + cmake + ninja + pkg-config + ]; + + buildInputs = [ + cmark + curl + fmt + fontconfig + freetype + giflib + glib + harfbuzzFull + libGL + libjpeg + libpng + libwebp + libX11 + libXcursor + libXext + libXi + libXxf86vm + pcre2 + pixman + skia-aseprite + tinyxml-2 + zlib + ]; + + patches = [ + # https://github.com/aseprite/aseprite/issues/4486 + # FIXME: remove on next release. + (fetchpatch { + name = "ENABLE_UPDATER-fix.patch"; + url = "https://github.com/aseprite/aseprite/commit/8fce589.patch"; + hash = "sha256-DbL6kK//gQXbsXEn/t+KTuoM7E9ocPAsVqEO+lYrka4="; + }) + ./shared-fmt.patch + ./shared-libwebp.patch + ./shared-skia-deps.patch + ]; + + postPatch = + let + # Translation strings + strings = fetchFromGitHub { + owner = "aseprite"; + repo = "strings"; + rev = "e18a09fefbb6cd904e506183d5fbe08558a52ed4"; + hash = "sha256-GyCCxbhgf0vST20EH/+KkNLrF+U9Xzgpxlao8s925PQ="; + }; + in + '' + sed -i src/ver/CMakeLists.txt -e "s-set(VERSION \".*\")-set(VERSION \"$version\")-" + rm -rf data/strings + cp -r ${strings} data/strings + ''; + + cmakeFlags = [ + "-DENABLE_DESKTOP_INTEGRATION=ON" + "-DENABLE_UPDATER=OFF" + "-DUSE_SHARED_CMARK=ON" + "-DUSE_SHARED_CURL=ON" + "-DUSE_SHARED_FMT=ON" + "-DUSE_SHARED_FREETYPE=ON" + "-DUSE_SHARED_GIFLIB=ON" + "-DUSE_SHARED_HARFBUZZ=ON" + "-DUSE_SHARED_JPEGLIB=ON" + "-DUSE_SHARED_LIBPNG=ON" + "-DUSE_SHARED_LIBWEBP=ON" + "-DUSE_SHARED_PIXMAN=ON" + "-DUSE_SHARED_TINYXML=ON" + "-DUSE_SHARED_WEBP=ON" + "-DUSE_SHARED_ZLIB=ON" + # Disable libarchive programs. + "-DENABLE_CAT=OFF" + "-DENABLE_CPIO=OFF" + "-DENABLE_TAR=OFF" + # UI backend. + "-DLAF_OS_BACKEND=skia" + "-DLAF_WITH_EXAMPLES=OFF" + "-DSKIA_DIR=${skia-aseprite}" + "-DSKIA_LIBRARY_DIR=${skia-aseprite}/lib" + ]; + + postInstall = '' + # Install desktop icons. + src="$out/share/aseprite/data/icons" + for size in 16 32 48 64 128 256; do + dst="$out"/share/icons/hicolor/"$size"x"$size" + install -Dm644 "$src"/ase"$size".png "$dst"/apps/aseprite.png + install -Dm644 "$src"/doc"$size".png "$dst"/mimetypes/image-x-aseprite.png + done + # Delete unneeded artifacts of bundled libraries. + rm -rf "$out"/{include,lib,man} + ''; + + passthru.updateScript = gitUpdater { rev-prefix = "v"; }; + + meta = { + homepage = "https://www.aseprite.org/"; + description = "Animated sprite editor & pixel art tool"; + license = lib.licenses.unfree; + longDescription = '' + Aseprite is a program to create animated sprites. Its main features are: + + - Sprites are composed by layers & frames (as separated concepts). + - Supported color modes: RGBA, Indexed (palettes up to 256 colors), and Grayscale. + - Load/save sequence of PNG files and GIF animations (and FLC, FLI, JPG, BMP, PCX, TGA). + - Export/import animations to/from Sprite Sheets. + - Tiled drawing mode, useful to draw patterns and textures. + - Undo/Redo for every operation. + - Real-time animation preview. + - Multiple editors support. + - Pixel-art specific tools like filled Contour, Polygon, Shading mode, etc. + - Onion skinning. + ''; + maintainers = with lib.maintainers; [ + orivej + vigress8 + ]; + platforms = lib.platforms.linux; + }; +}) |