base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12
[NixPkgs.git] / pkgs / by-name / as / aseprite / package.nix
blob6aae1d237f643cf455409432e27f3ccdbd19c244
2   clangStdenv,
3   cmake,
4   cmark,
5   curl,
6   fetchFromGitHub,
7   fetchpatch,
8   fmt,
9   fontconfig,
10   freetype,
11   giflib,
12   gitUpdater,
13   glib,
14   harfbuzzFull,
15   lib,
16   libGL,
17   libjpeg,
18   libpng,
19   libwebp,
20   libX11,
21   libXcursor,
22   libXext,
23   libXi,
24   libXxf86vm,
25   ninja,
26   pcre2,
27   pixman,
28   pkg-config,
29   skia-aseprite,
30   tinyxml-2,
31   zlib,
34 clangStdenv.mkDerivation (finalAttrs: {
35   pname = "aseprite";
36   version = "1.3.7";
38   src = fetchFromGitHub {
39     owner = "aseprite";
40     repo = "aseprite";
41     rev = "v" + finalAttrs.version;
42     fetchSubmodules = true;
43     hash = "sha256-75kYJXmyags0cW2D5Ksq1uUrFSCAkFOdmn7Ya/6jLXc=";
44   };
46   nativeBuildInputs = [
47     cmake
48     ninja
49     pkg-config
50   ];
52   buildInputs = [
53     cmark
54     curl
55     fmt
56     fontconfig
57     freetype
58     giflib
59     glib
60     harfbuzzFull
61     libGL
62     libjpeg
63     libpng
64     libwebp
65     libX11
66     libXcursor
67     libXext
68     libXi
69     libXxf86vm
70     pcre2
71     pixman
72     skia-aseprite
73     tinyxml-2
74     zlib
75   ];
77   patches = [
78     # https://github.com/aseprite/aseprite/issues/4486
79     # FIXME: remove on next release.
80     (fetchpatch {
81       name = "ENABLE_UPDATER-fix.patch";
82       url = "https://github.com/aseprite/aseprite/commit/8fce589.patch";
83       hash = "sha256-DbL6kK//gQXbsXEn/t+KTuoM7E9ocPAsVqEO+lYrka4=";
84     })
85     ./shared-fmt.patch
86     ./shared-libwebp.patch
87     ./shared-skia-deps.patch
88   ];
90   postPatch =
91     let
92       # Translation strings
93       strings = fetchFromGitHub {
94         owner = "aseprite";
95         repo = "strings";
96         rev = "e18a09fefbb6cd904e506183d5fbe08558a52ed4";
97         hash = "sha256-GyCCxbhgf0vST20EH/+KkNLrF+U9Xzgpxlao8s925PQ=";
98       };
99     in
100     ''
101       sed -i src/ver/CMakeLists.txt -e "s-set(VERSION \".*\")-set(VERSION \"$version\")-"
102       rm -rf data/strings
103       cp -r ${strings} data/strings
104     '';
106   cmakeFlags = [
107     "-DENABLE_DESKTOP_INTEGRATION=ON"
108     "-DENABLE_UPDATER=OFF"
109     "-DUSE_SHARED_CMARK=ON"
110     "-DUSE_SHARED_CURL=ON"
111     "-DUSE_SHARED_FMT=ON"
112     "-DUSE_SHARED_FREETYPE=ON"
113     "-DUSE_SHARED_GIFLIB=ON"
114     "-DUSE_SHARED_HARFBUZZ=ON"
115     "-DUSE_SHARED_JPEGLIB=ON"
116     "-DUSE_SHARED_LIBPNG=ON"
117     "-DUSE_SHARED_LIBWEBP=ON"
118     "-DUSE_SHARED_PIXMAN=ON"
119     "-DUSE_SHARED_TINYXML=ON"
120     "-DUSE_SHARED_WEBP=ON"
121     "-DUSE_SHARED_ZLIB=ON"
122     # Disable libarchive programs.
123     "-DENABLE_CAT=OFF"
124     "-DENABLE_CPIO=OFF"
125     "-DENABLE_TAR=OFF"
126     # UI backend.
127     "-DLAF_OS_BACKEND=skia"
128     "-DLAF_WITH_EXAMPLES=OFF"
129     "-DSKIA_DIR=${skia-aseprite}"
130     "-DSKIA_LIBRARY_DIR=${skia-aseprite}/lib"
131   ];
133   postInstall = ''
134     # Install desktop icons.
135     src="$out/share/aseprite/data/icons"
136     for size in 16 32 48 64 128 256; do
137       dst="$out"/share/icons/hicolor/"$size"x"$size"
138       install -Dm644 "$src"/ase"$size".png "$dst"/apps/aseprite.png
139       install -Dm644 "$src"/doc"$size".png "$dst"/mimetypes/image-x-aseprite.png
140     done
141     # Delete unneeded artifacts of bundled libraries.
142     rm -rf "$out"/{include,lib,man}
143   '';
145   passthru.updateScript = gitUpdater { rev-prefix = "v"; };
147   meta = {
148     homepage = "https://www.aseprite.org/";
149     description = "Animated sprite editor & pixel art tool";
150     license = lib.licenses.unfree;
151     longDescription = ''
152       Aseprite is a program to create animated sprites. Its main features are:
154                 - Sprites are composed by layers & frames (as separated concepts).
155                 - Supported color modes: RGBA, Indexed (palettes up to 256 colors), and Grayscale.
156                 - Load/save sequence of PNG files and GIF animations (and FLC, FLI, JPG, BMP, PCX, TGA).
157                 - Export/import animations to/from Sprite Sheets.
158                 - Tiled drawing mode, useful to draw patterns and textures.
159                 - Undo/Redo for every operation.
160                 - Real-time animation preview.
161                 - Multiple editors support.
162                 - Pixel-art specific tools like filled Contour, Polygon, Shading mode, etc.
163                 - Onion skinning.
164     '';
165     maintainers = with lib.maintainers; [
166       orivej
167     ];
168     platforms = lib.platforms.linux;
169   };