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 { };