1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
{ lib, stdenv
, darwin
, fetchurl
, makeWrapper
, pkg-config
, poppler_utils
, gitMinimal
, harfbuzz
, icu
, fontconfig
, lua
, libiconv
, makeFontsConf
, gentium
}:
let
luaEnv = lua.withPackages(ps: with ps; [
cassowary
cldr
cosmo
fluent
linenoise
loadkit
lpeg
lua-zlib
lua_cliargs
luaepnf
luaexpat
luafilesystem
luarepl
luasec
luasocket
luautf8
penlight
vstruct
] ++ lib.optionals (lib.versionOlder lua.luaversion "5.2") [
bit32
] ++ lib.optionals (lib.versionOlder lua.luaversion "5.3") [
compat53
]);
in
stdenv.mkDerivation rec {
pname = "sile";
version = "0.14.4";
src = fetchurl {
url = "https://github.com/sile-typesetter/sile/releases/download/v${version}/${pname}-${version}.tar.xz";
sha256 = "091sy3k29q15ksqr650qmf9lz8j9lqbabfph4cf63plg4dnf9m98";
};
configureFlags = [
"--with-system-luarocks"
"--with-manual"
];
nativeBuildInputs = [
gitMinimal
pkg-config
makeWrapper
];
buildInputs = [
luaEnv
harfbuzz
icu
fontconfig
libiconv
]
++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.AppKit
;
checkInputs = [
poppler_utils
];
passthru = {
# So it will be easier to inspect this environment, in comparison to others
inherit luaEnv;
};
postPatch = ''
patchShebangs build-aux/*.sh
'' + lib.optionalString stdenv.isDarwin ''
sed -i -e 's|@import AppKit;|#import <AppKit/AppKit.h>|' src/macfonts.m
'';
NIX_LDFLAGS = lib.optionalString stdenv.isDarwin "-framework AppKit";
FONTCONFIG_FILE = makeFontsConf {
fontDirectories = [
gentium
];
};
doCheck = true;
enableParallelBuilding = true;
preBuild = lib.optionalString stdenv.cc.isClang ''
substituteInPlace libtexpdf/dpxutil.c \
--replace "ASSERT(ht && ht->table && iter);" "ASSERT(ht && iter);"
'';
# Hack to avoid TMPDIR in RPATHs.
preFixup = ''rm -rf "$(pwd)" && mkdir "$(pwd)" '';
outputs = [ "out" "doc" "man" "dev" ];
meta = with lib; {
broken = stdenv.isDarwin;
description = "A typesetting system";
longDescription = ''
SILE is a typesetting system; its job is to produce beautiful
printed documents. Conceptually, SILE is similar to TeX—from
which it borrows some concepts and even syntax and
algorithms—but 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.
'';
homepage = "https://sile-typesetter.org";
changelog = "https://github.com/sile-typesetter/sile/raw/v${version}/CHANGELOG.md";
platforms = platforms.unix;
maintainers = with maintainers; [ doronbehar alerque ];
license = licenses.mit;
};
}
|