nixpkgs/pkgs/by-name/si/sile/package.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

196 lines
5.2 KiB
Nix
Raw Normal View History

2024-11-04 09:33:14 +02:00
{
lib,
stdenv,
2024-11-09 18:24:14 +02:00
fetchurl,
# nativeBuildInputs
2024-11-09 18:24:14 +02:00
zstd,
pkg-config,
jq,
cargo,
rustc,
rustPlatform,
luarocks,
# buildInputs
lua,
2024-11-04 09:33:14 +02:00
harfbuzz,
icu,
fontconfig,
libiconv,
# FONTCONFIG_FILE
2024-11-04 09:33:14 +02:00
makeFontsConf,
gentium-plus,
# passthru.tests
2024-11-04 09:33:14 +02:00
runCommand,
poppler-utils,
2017-02-04 18:30:00 +01:00
}:
treewide: use finalAttrs in all packages I maintain (#255902) * mpd-touch-screen-gui: use finalAttrs in mkDerivation; reformat * musescore: use finalAttrs in mkDerivation * syncthingtray: use stdenv.mkDerivation with a function; reformat * ocrfeeder: use finalAttrs in mkDerivation; reformat * castget: use finalAttrs in mkDerivation * gnome-network-displays: use finalAttrs in mkDerivation * mailreaders: use finalAttrs in mkDerivation * mswatch: use finalAttrs in mkDerivation * uhd: use finalAttrs in mkDerivation * maxima: use finalAttrs in mkDerivation * qalculate-gtk: use finalAttrs in mkDerivation * qalculate-qt: use finalAttrs in mkDerivation * wxmaxima: use finalAttrs in mkDerivation * lammps: use finalAttrs in mkDerivation * mlterm: use finalAttrs in mkDerivation * video-trimmer: use finalAttrs in mkDerivation * nerdfonts: use finalAttrs in mkDerivation * gnomeExtensions.easyScreenCast: use finalAttrs in mkDerivation * octave: use finalAttrs in mkDerivation; reformat * comedilib: use finalAttrs in mkDerivation * cpp-utilities: use finalAttrs in mkDerivation * libsForQt5.kpeoplevcard: use finalAttrs in mkDerivation; reformat * liberio: use finalAttrs in mkDerivation * libqalculate: use finalAttrs in mkDerivation; reformat * libwtk-sdl2: use finalAttrs in mkDerivation * libsForQt5.pulseaudio-qt: use finalAttrs in mkDerivation; reformat * qrupdate: use finalAttrs in mkDerivation; reformat * libsForQt5.qtforkawesome: use finalAttrs in mkDerivation; reformat * libsForQt5.qtutilities: use finalAttrs in mkDerivation; reformat * sqlitecpp: use finalAttrs in mkDerivation; reformat * tweeny: use finalAttrs in mkDerivation * volk: use finalAttrs in mkDerivation * wiringpi: use finalAttrs in mkDerivation * snzip: use finalAttrs in mkDerivation; reformat * bpm-tools: use finalAttrs in mkDerivation; reformat * sacd: use finalAttrs in mkDerivation * gtk-gnutella: use finalAttrs in mkDerivation; reformat * sile: use finalAttrs in mkDerivation * pplatex: use finalAttrs in mkDerivation; reformat
2023-09-21 11:31:17 +03:00
stdenv.mkDerivation (finalAttrs: {
pname = "sile";
2025-06-01 09:39:26 +03:00
version = "0.15.13";
2017-02-11 15:52:50 +01:00
2024-11-09 18:24:14 +02:00
src = fetchurl {
url = "https://github.com/sile-typesetter/sile/releases/download/v${finalAttrs.version}/sile-${finalAttrs.version}.tar.zst";
2025-06-01 09:39:26 +03:00
hash = "sha256-XpfBllGv9xBoe5MpLVNhy0EWUglLzIxiyBHBn3qBRks=";
2017-02-11 15:52:50 +01:00
};
2017-02-04 18:30:00 +01:00
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
dontConfigure = true;
2024-11-09 18:24:14 +02:00
nativeBuildInputs = [ zstd ];
2025-06-01 09:39:26 +03:00
hash = "sha256-phRnyaF8KTYlgrgBeVNPxBAokRBUoj9vs7P9y97wbG8=";
};
nativeBuildInputs = [
2024-11-09 18:24:14 +02:00
zstd
pkg-config
2025-01-08 12:32:19 +01:00
fontconfig # fc-match
jq
cargo
rustc
rustPlatform.cargoSetupHook
luarocks
];
# luarocks propagates cmake, but it shouldn't be used as a build system.
dontUseCmakeConfigure = true;
buildInputs = [
finalAttrs.finalPackage.passthru.luaEnv
harfbuzz
icu
fontconfig
libiconv
];
configureFlags =
[
# Nix will supply all the Lua dependencies, so stop the build system from
# bundling vendored copies of them.
"--with-system-lua-sources"
"--with-system-luarocks"
# The automake check target uses pdfinfo to confirm the output of a test
# run, and uses autotools to discover it. This flake build eschews that
# test because it is run from the source directory but the binary is
# already built with system paths, so it can't be checked under Nix until
# after install. After install the Makefile isn't available of course, so
# we have our own copy of it with a hard coded path to `pdfinfo`. By
# specifying some binary here we skip the configure time test for
# `pdfinfo`, by using `false` we make sure that if it is expected during
# build time we would fail to build since we only provide it at test time.
"PDFINFO=false"
]
++ lib.optionals (!lua.pkgs.isLuaJIT) [
"--without-luajit"
];
outputs = [
"out"
"doc"
"man"
"dev"
];
# TODO: At some point, upstream should support installing the pre-built
# manual automatically
postInstall = ''
install -Dm0644 documentation/sile.pdf $out/share/doc/sile/manual.pdf
'';
FONTCONFIG_FILE = makeFontsConf {
fontDirectories = [
gentium-plus
];
};
2025-01-08 12:32:19 +01:00
strictDeps = true;
env.LUA = "${finalAttrs.finalPackage.passthru.luaEnv}/bin/lua";
enableParallelBuilding = true;
passthru = {
# Use this passthru variable to add packages to your lua environment. Use
# something like this in your development environment:
#
# myLuaEnv = lua.withPackages (
# ps: lib.attrVals (sile.passthru.luaPackages ++ [
# "lua-cjson"
# "lua-resty-http"
# ]) ps
# )
luaPackages =
2024-11-04 09:35:26 +02:00
[
"cassowary"
"cldr"
"fluent"
"linenoise"
"loadkit"
"lpeg"
"lua-zlib"
"lua_cliargs"
"luaepnf"
"luaexpat"
"luafilesystem"
"luarepl"
"luasec"
"luasocket"
"luautf8"
"penlight"
"vstruct"
# lua packages needed for testing
"busted"
"luacheck"
# packages needed for building api docs
"ldoc"
# NOTE: Add lua packages here, to change the luaEnv also read by `flake.nix`
2024-11-04 09:35:26 +02:00
]
++ lib.optionals (lib.versionOlder lua.luaversion "5.2") [
"bit32"
2024-11-04 09:35:26 +02:00
]
++ lib.optionals (lib.versionOlder lua.luaversion "5.3") [
"compat53"
];
luaEnv = lua.withPackages (ps: lib.attrVals finalAttrs.finalPackage.passthru.luaPackages ps);
# Copied from Makefile.am
tests.test = lib.optionalAttrs (!(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64)) (
runCommand "${finalAttrs.pname}-test"
{
2024-11-04 09:33:14 +02:00
nativeBuildInputs = [
poppler-utils
finalAttrs.finalPackage
2024-11-04 09:33:14 +02:00
];
treewide: use finalAttrs in all packages I maintain (#255902) * mpd-touch-screen-gui: use finalAttrs in mkDerivation; reformat * musescore: use finalAttrs in mkDerivation * syncthingtray: use stdenv.mkDerivation with a function; reformat * ocrfeeder: use finalAttrs in mkDerivation; reformat * castget: use finalAttrs in mkDerivation * gnome-network-displays: use finalAttrs in mkDerivation * mailreaders: use finalAttrs in mkDerivation * mswatch: use finalAttrs in mkDerivation * uhd: use finalAttrs in mkDerivation * maxima: use finalAttrs in mkDerivation * qalculate-gtk: use finalAttrs in mkDerivation * qalculate-qt: use finalAttrs in mkDerivation * wxmaxima: use finalAttrs in mkDerivation * lammps: use finalAttrs in mkDerivation * mlterm: use finalAttrs in mkDerivation * video-trimmer: use finalAttrs in mkDerivation * nerdfonts: use finalAttrs in mkDerivation * gnomeExtensions.easyScreenCast: use finalAttrs in mkDerivation * octave: use finalAttrs in mkDerivation; reformat * comedilib: use finalAttrs in mkDerivation * cpp-utilities: use finalAttrs in mkDerivation * libsForQt5.kpeoplevcard: use finalAttrs in mkDerivation; reformat * liberio: use finalAttrs in mkDerivation * libqalculate: use finalAttrs in mkDerivation; reformat * libwtk-sdl2: use finalAttrs in mkDerivation * libsForQt5.pulseaudio-qt: use finalAttrs in mkDerivation; reformat * qrupdate: use finalAttrs in mkDerivation; reformat * libsForQt5.qtforkawesome: use finalAttrs in mkDerivation; reformat * libsForQt5.qtutilities: use finalAttrs in mkDerivation; reformat * sqlitecpp: use finalAttrs in mkDerivation; reformat * tweeny: use finalAttrs in mkDerivation * volk: use finalAttrs in mkDerivation * wiringpi: use finalAttrs in mkDerivation * snzip: use finalAttrs in mkDerivation; reformat * bpm-tools: use finalAttrs in mkDerivation; reformat * sacd: use finalAttrs in mkDerivation * gtk-gnutella: use finalAttrs in mkDerivation; reformat * sile: use finalAttrs in mkDerivation * pplatex: use finalAttrs in mkDerivation; reformat
2023-09-21 11:31:17 +03:00
inherit (finalAttrs) FONTCONFIG_FILE;
2024-11-04 09:33:14 +02:00
}
''
output=$(mktemp -t selfcheck-XXXXXX.pdf)
echo "<sile>foo</sile>" | sile -o $output -
pdfinfo $output | grep "SILE v${finalAttrs.version}" > $out
''
);
};
2024-11-04 10:22:12 +02:00
meta = {
2017-02-04 18:30:00 +01:00
description = "Typesetting system";
longDescription = ''
2017-02-11 15:52:50 +01:00
SILE is a typesetting system; its job is to produce beautiful
printed documents. Conceptually, SILE is similar to TeXfrom
which it borrows some concepts and even syntax and
algorithmsbut the similarities end there. Rather than being a
derivative of the TeX family SILE is a new typesetting and
layout engine written from the ground up using modern
technologies and borrowing some ideas from graphical systems
such as InDesign.
2017-02-04 18:30:00 +01:00
'';
homepage = "https://sile-typesetter.org";
treewide: use finalAttrs in all packages I maintain (#255902) * mpd-touch-screen-gui: use finalAttrs in mkDerivation; reformat * musescore: use finalAttrs in mkDerivation * syncthingtray: use stdenv.mkDerivation with a function; reformat * ocrfeeder: use finalAttrs in mkDerivation; reformat * castget: use finalAttrs in mkDerivation * gnome-network-displays: use finalAttrs in mkDerivation * mailreaders: use finalAttrs in mkDerivation * mswatch: use finalAttrs in mkDerivation * uhd: use finalAttrs in mkDerivation * maxima: use finalAttrs in mkDerivation * qalculate-gtk: use finalAttrs in mkDerivation * qalculate-qt: use finalAttrs in mkDerivation * wxmaxima: use finalAttrs in mkDerivation * lammps: use finalAttrs in mkDerivation * mlterm: use finalAttrs in mkDerivation * video-trimmer: use finalAttrs in mkDerivation * nerdfonts: use finalAttrs in mkDerivation * gnomeExtensions.easyScreenCast: use finalAttrs in mkDerivation * octave: use finalAttrs in mkDerivation; reformat * comedilib: use finalAttrs in mkDerivation * cpp-utilities: use finalAttrs in mkDerivation * libsForQt5.kpeoplevcard: use finalAttrs in mkDerivation; reformat * liberio: use finalAttrs in mkDerivation * libqalculate: use finalAttrs in mkDerivation; reformat * libwtk-sdl2: use finalAttrs in mkDerivation * libsForQt5.pulseaudio-qt: use finalAttrs in mkDerivation; reformat * qrupdate: use finalAttrs in mkDerivation; reformat * libsForQt5.qtforkawesome: use finalAttrs in mkDerivation; reformat * libsForQt5.qtutilities: use finalAttrs in mkDerivation; reformat * sqlitecpp: use finalAttrs in mkDerivation; reformat * tweeny: use finalAttrs in mkDerivation * volk: use finalAttrs in mkDerivation * wiringpi: use finalAttrs in mkDerivation * snzip: use finalAttrs in mkDerivation; reformat * bpm-tools: use finalAttrs in mkDerivation; reformat * sacd: use finalAttrs in mkDerivation * gtk-gnutella: use finalAttrs in mkDerivation; reformat * sile: use finalAttrs in mkDerivation * pplatex: use finalAttrs in mkDerivation; reformat
2023-09-21 11:31:17 +03:00
changelog = "https://github.com/sile-typesetter/sile/raw/v${finalAttrs.version}/CHANGELOG.md";
2024-11-04 10:22:12 +02:00
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
2024-11-04 09:33:14 +02:00
doronbehar
alerque
];
2024-11-04 10:22:12 +02:00
license = lib.licenses.mit;
2023-11-23 03:51:17 +01:00
mainProgram = "sile";
2017-02-04 18:30:00 +01:00
};
treewide: use finalAttrs in all packages I maintain (#255902) * mpd-touch-screen-gui: use finalAttrs in mkDerivation; reformat * musescore: use finalAttrs in mkDerivation * syncthingtray: use stdenv.mkDerivation with a function; reformat * ocrfeeder: use finalAttrs in mkDerivation; reformat * castget: use finalAttrs in mkDerivation * gnome-network-displays: use finalAttrs in mkDerivation * mailreaders: use finalAttrs in mkDerivation * mswatch: use finalAttrs in mkDerivation * uhd: use finalAttrs in mkDerivation * maxima: use finalAttrs in mkDerivation * qalculate-gtk: use finalAttrs in mkDerivation * qalculate-qt: use finalAttrs in mkDerivation * wxmaxima: use finalAttrs in mkDerivation * lammps: use finalAttrs in mkDerivation * mlterm: use finalAttrs in mkDerivation * video-trimmer: use finalAttrs in mkDerivation * nerdfonts: use finalAttrs in mkDerivation * gnomeExtensions.easyScreenCast: use finalAttrs in mkDerivation * octave: use finalAttrs in mkDerivation; reformat * comedilib: use finalAttrs in mkDerivation * cpp-utilities: use finalAttrs in mkDerivation * libsForQt5.kpeoplevcard: use finalAttrs in mkDerivation; reformat * liberio: use finalAttrs in mkDerivation * libqalculate: use finalAttrs in mkDerivation; reformat * libwtk-sdl2: use finalAttrs in mkDerivation * libsForQt5.pulseaudio-qt: use finalAttrs in mkDerivation; reformat * qrupdate: use finalAttrs in mkDerivation; reformat * libsForQt5.qtforkawesome: use finalAttrs in mkDerivation; reformat * libsForQt5.qtutilities: use finalAttrs in mkDerivation; reformat * sqlitecpp: use finalAttrs in mkDerivation; reformat * tweeny: use finalAttrs in mkDerivation * volk: use finalAttrs in mkDerivation * wiringpi: use finalAttrs in mkDerivation * snzip: use finalAttrs in mkDerivation; reformat * bpm-tools: use finalAttrs in mkDerivation; reformat * sacd: use finalAttrs in mkDerivation * gtk-gnutella: use finalAttrs in mkDerivation; reformat * sile: use finalAttrs in mkDerivation * pplatex: use finalAttrs in mkDerivation; reformat
2023-09-21 11:31:17 +03:00
})