diff --git a/pkgs/by-name/si/sile/package.nix b/pkgs/by-name/si/sile/package.nix
new file mode 100644
index 0000000000000..54a2317adf8d6
--- /dev/null
+++ b/pkgs/by-name/si/sile/package.nix
@@ -0,0 +1,187 @@
+{
+ lib,
+ stdenv,
+ fetchzip,
+
+ # nativeBuildInputs
+ pkg-config,
+ jq,
+ cargo,
+ rustc,
+ rustPlatform,
+
+ # buildInputs
+ lua,
+ harfbuzz,
+ icu,
+ fontconfig,
+ libiconv,
+ stylua,
+ typos,
+ darwin,
+ # FONTCONFIG_FILE
+ makeFontsConf,
+ gentium,
+
+ # passthru.tests
+ runCommand,
+ poppler_utils,
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+ pname = "sile";
+ version = "0.15.5";
+
+ src = fetchzip {
+ url = "https://github.com/sile-typesetter/sile/releases/download/v${finalAttrs.version}/sile-${finalAttrs.version}.zip";
+ sha256 = "sha256-zP+MGCXGEg19U6tMrHIdgAAfKQT21vFtmoEROXgxUB0=";
+ };
+
+ cargoDeps = rustPlatform.fetchCargoTarball {
+ inherit (finalAttrs) src;
+ dontConfigure = true;
+ hash = "sha256-hmgDG29C5JfQX2acMr8c3lmswa1u5XHauRWFd4QGmOo=";
+ };
+
+ nativeBuildInputs = [
+ pkg-config
+ jq
+ cargo
+ rustc
+ rustPlatform.cargoSetupHook
+ ];
+
+ buildInputs =
+ [
+ finalAttrs.finalPackage.passthru.luaEnv
+ harfbuzz
+ icu
+ fontconfig
+ libiconv
+ stylua
+ typos
+ ]
+ ++ lib.optionals stdenv.hostPlatform.isDarwin [
+ darwin.apple_sdk.frameworks.AppKit
+ ];
+
+ 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
+ ];
+ };
+
+ enableParallelBuilding = true;
+
+ passthru = {
+ luaEnv = lua.withPackages (
+ ps:
+ with ps;
+ [
+ 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`
+ ]
+ ++ lib.optionals (lib.versionOlder lua.luaversion "5.2") [
+ bit32
+ ]
+ ++ lib.optionals (lib.versionOlder lua.luaversion "5.3") [
+ compat53
+ ]
+ );
+
+ # Copied from Makefile.am
+ tests.test = lib.optionalAttrs (!(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64)) (
+ runCommand "${finalAttrs.pname}-test"
+ {
+ nativeBuildInputs = [
+ poppler_utils
+ finalAttrs.finalPackage
+ ];
+ inherit (finalAttrs) FONTCONFIG_FILE;
+ }
+ ''
+ output=$(mktemp -t selfcheck-XXXXXX.pdf)
+ echo "foo" | sile -o $output -
+ pdfinfo $output | grep "SILE v${finalAttrs.version}" > $out
+ ''
+ );
+ };
+
+ meta = {
+ description = "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${finalAttrs.version}/CHANGELOG.md";
+ platforms = lib.platforms.unix;
+ maintainers = with lib.maintainers; [
+ doronbehar
+ alerque
+ ];
+ license = lib.licenses.mit;
+ mainProgram = "sile";
+ };
+})
diff --git a/pkgs/tools/typesetting/sile/default.nix b/pkgs/tools/typesetting/sile/default.nix
deleted file mode 100644
index 49dbc74422e7a..0000000000000
--- a/pkgs/tools/typesetting/sile/default.nix
+++ /dev/null
@@ -1,142 +0,0 @@
-{ lib
-, stdenv
-, darwin
-, fetchurl
-, makeWrapper
-, pkg-config
-, poppler_utils
-, gitMinimal
-, harfbuzz
-, icu
-, fontconfig
-, lua
-, libiconv
-, makeFontsConf
-, gentium
-, runCommand
-, sile
-}:
-
-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 (finalAttrs: {
- pname = "sile";
- version = "0.14.17";
-
- src = fetchurl {
- url = "https://github.com/sile-typesetter/sile/releases/download/v${finalAttrs.version}/sile-${finalAttrs.version}.tar.xz";
- sha256 = "sha256-f4m+3s7au1FoJQrZ3YDAntKJyOiMPQ11bS0dku4GXgQ=";
- };
-
- configureFlags = [
- "--with-system-luarocks"
- "--with-manual"
- ];
-
- nativeBuildInputs = [
- gitMinimal
- pkg-config
- makeWrapper
- ];
- buildInputs = [
- luaEnv
- harfbuzz
- icu
- fontconfig
- libiconv
- ]
- ++ lib.optional stdenv.hostPlatform.isDarwin darwin.apple_sdk.frameworks.AppKit
- ;
- passthru = {
- # So it will be easier to inspect this environment, in comparison to others
- inherit luaEnv;
- # Copied from Makefile.am
- tests.test = lib.optionalAttrs (!(stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64)) (
- runCommand "sile-test"
- {
- nativeBuildInputs = [ poppler_utils sile ];
- inherit (finalAttrs) FONTCONFIG_FILE;
- } ''
- output=$(mktemp -t selfcheck-XXXXXX.pdf)
- echo "foo" | sile -o $output -
- pdfinfo $output | grep "SILE v${finalAttrs.version}" > $out
- '');
- };
-
- postPatch = ''
- patchShebangs build-aux/*.sh
- '' + lib.optionalString stdenv.hostPlatform.isDarwin ''
- sed -i -e 's|@import AppKit;|#import |' src/macfonts.m
- '';
-
- NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isDarwin "-framework AppKit";
-
- FONTCONFIG_FILE = makeFontsConf {
- fontDirectories = [
- gentium
- ];
- };
-
- enableParallelBuilding = true;
-
- preBuild = lib.optionalString stdenv.cc.isClang ''
- substituteInPlace libtexpdf/dpxutil.c \
- --replace "ASSERT(ht && ht->table && iter);" "ASSERT(ht && iter);"
- '';
-
- # remove forbidden references to $TMPDIR
- preFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
- for f in "$out"/bin/*; do
- if isELF "$f"; then
- patchelf --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" "$f"
- fi
- done
- '';
-
- outputs = [ "out" "doc" "man" "dev" ];
-
- meta = with lib; {
- description = "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${finalAttrs.version}/CHANGELOG.md";
- platforms = platforms.unix;
- maintainers = with maintainers; [ doronbehar alerque ];
- license = licenses.mit;
- mainProgram = "sile";
- };
-})
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 5fcce25d1088d..55968eed13554 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -12093,10 +12093,6 @@ with pkgs;
silc_server = callPackage ../servers/silc-server { };
- sile = callPackage ../tools/typesetting/sile {
- lua = lua5_3;
- };
-
silenthound = callPackage ../tools/security/silenthound { };
silice = callPackage ../development/compilers/silice { };