initial commit
This commit is contained in:
@@ -0,0 +1,202 @@
|
||||
{
|
||||
clangStdenv,
|
||||
cmake,
|
||||
cmark,
|
||||
curl,
|
||||
fetchFromGitHub,
|
||||
fmt,
|
||||
fontconfig,
|
||||
freetype,
|
||||
giflib,
|
||||
glib,
|
||||
harfbuzzFull,
|
||||
libicns,
|
||||
lib,
|
||||
libGL,
|
||||
libjpeg,
|
||||
libpng,
|
||||
libwebp,
|
||||
libx11,
|
||||
libxcursor,
|
||||
libxext,
|
||||
libxi,
|
||||
libxxf86vm,
|
||||
libxcb,
|
||||
libxrandr,
|
||||
ninja,
|
||||
pcre2,
|
||||
pixman,
|
||||
pkg-config,
|
||||
skia-aseprite,
|
||||
tinyxml-2,
|
||||
zlib,
|
||||
}:
|
||||
|
||||
let
|
||||
asepriteStrings = fetchFromGitHub {
|
||||
owner = "aseprite";
|
||||
repo = "strings";
|
||||
rev = "417074f649f359f98511fc87a707c276d87f5739";
|
||||
hash = "sha256-5bB7yK4eJHhkUwGYtIFYdFXpRrBt69VBbTh7EmPFI08=";
|
||||
};
|
||||
in
|
||||
clangStdenv.mkDerivation (finalAttrs: {
|
||||
pname = "aseprite";
|
||||
version = "44cd42d29dbc047ec9d341f05c0a8ff584ede151";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "aseprite";
|
||||
repo = "aseprite";
|
||||
rev = "${finalAttrs.version}";
|
||||
hash = "sha256-swXk8wwFgao2rpF4ntCjOMnV+yk0gi+wbWoWl/wv7e8=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
# Translation files are copied without overwriting existing ones to preserve the
|
||||
# potentially more up-to-date English file from the main source.
|
||||
postUnpack = ''
|
||||
cp --no-clobber ${asepriteStrings}/* "$sourceRoot/data/strings"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
pkg-config
|
||||
]
|
||||
++ lib.optionals clangStdenv.hostPlatform.isDarwin [
|
||||
libicns
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
cmark
|
||||
curl
|
||||
fmt
|
||||
fontconfig
|
||||
freetype
|
||||
giflib
|
||||
glib
|
||||
harfbuzzFull
|
||||
libGL
|
||||
libjpeg
|
||||
libpng
|
||||
libwebp
|
||||
libx11
|
||||
libxcursor
|
||||
libxext
|
||||
libxi
|
||||
libxxf86vm
|
||||
libxcb
|
||||
libxrandr
|
||||
pcre2
|
||||
pixman
|
||||
skia-aseprite
|
||||
tinyxml-2
|
||||
zlib
|
||||
];
|
||||
|
||||
patches = [
|
||||
./patches/shared-fmt.patch
|
||||
./patches/shared-libwebp.patch
|
||||
./patches/shared-skia-deps.patch
|
||||
./patches/shared-libjpeg-turbo.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/ver/CMakeLists.txt \
|
||||
--replace-fail '"1.x-dev"' '"${finalAttrs.version}"'
|
||||
|
||||
# Fix build on Darwin with `-Werror=format-security`.
|
||||
# (NSLog requires a string-literal format).
|
||||
substituteInPlace laf/os/osx/logger.mm \
|
||||
--replace-fail 'NSLog([NSString stringWithUTF8String:error]);' 'NSLog(@"%@", [NSString stringWithUTF8String:error]);'
|
||||
'';
|
||||
|
||||
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_LIBPNG=ON"
|
||||
"-DUSE_SHARED_PIXMAN=ON"
|
||||
"-DUSE_SHARED_TINYXML=OFF"
|
||||
"-DUSE_SHARED_WEBP=ON"
|
||||
"-DUSE_SHARED_ZLIB=ON"
|
||||
# Disable libarchive programs.
|
||||
"-DENABLE_CAT=OFF"
|
||||
"-DENABLE_CPIO=OFF"
|
||||
"-DENABLE_TAR=OFF"
|
||||
# UI backend.
|
||||
"-DLAF_BACKEND=skia"
|
||||
"-DLAF_WITH_EXAMPLES=OFF"
|
||||
"-DSKIA_DIR=${skia-aseprite}"
|
||||
"-DSKIA_LIBRARY_DIR=${skia-aseprite}/lib"
|
||||
];
|
||||
|
||||
# `libskia.a` is static, so its deps must be linked explicitly on Darwin
|
||||
# (otherwise we hit undefined `_jpeg_*`/`_WebP*` symbols, e.g. in the thumbnailer).
|
||||
env.NIX_LDFLAGS = lib.optionalString clangStdenv.hostPlatform.isDarwin "-ljpeg -lwebp -lwebpdemux -lwebpmux";
|
||||
|
||||
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}
|
||||
''
|
||||
+ lib.optionalString clangStdenv.hostPlatform.isDarwin ''
|
||||
install -d "$out/Applications"
|
||||
if [ -d "$out/bin/aseprite.app" ]; then
|
||||
rm -rf "$out/Applications/Aseprite.app"
|
||||
mv "$out/bin/aseprite.app" "$out/Applications/Aseprite.app"
|
||||
fi
|
||||
# Generate the `.icns` files referenced by Info.plist from the shipped PNGs.
|
||||
res="$out/Applications/Aseprite.app/Contents/Resources"
|
||||
icons="$res/data/icons"
|
||||
if [ -d "$icons" ] && command -v png2icns >/dev/null; then
|
||||
for spec in "Aseprite ase" "Document doc" "Extension ext"; do
|
||||
set -- $spec
|
||||
name="$1"
|
||||
prefix="$2"
|
||||
png2icns "$res/$name.icns" \
|
||||
"$icons/''${prefix}16.png" \
|
||||
"$icons/''${prefix}32.png" \
|
||||
"$icons/''${prefix}128.png" \
|
||||
"$icons/''${prefix}256.png"
|
||||
done
|
||||
fi
|
||||
# Keep $out/bin clean on Darwin; the bundle lives under $out/Applications.
|
||||
rmdir "$out/bin" 2>/dev/null || true
|
||||
'';
|
||||
|
||||
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 = [ lib.maintainers.iamanaws ];
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
mainProgram = "aseprite";
|
||||
};
|
||||
})
|
||||
Reference in New Issue
Block a user