about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/typesetting/skribilo/default.nix
blob: 85031f900849418c538fd10017e353bc14b0a133 (plain) (blame)
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
{ lib
, stdenv
, fetchurl
, gettext
, ghostscript
, guile
, guile-lib
, guile-reader
, imagemagick
, makeWrapper
, pkg-config
, ploticus
, fig2dev
, enableEmacs ? false, emacs
, enableLout ? true, lout
, enableTex ? true, tex
}:

let
  inherit (lib) optional;
in stdenv.mkDerivation rec{
  pname = "skribilo";
  version = "0.9.5";

  src = fetchurl {
    url = "http://download.savannah.nongnu.org/releases/skribilo/${pname}-${version}.tar.gz";
    sha256 = "sha256-AIJqIcRjT7C0EO6J60gGjERdgAglh0ZU49U9XKPwvwk=";
  };

  nativeBuildInputs = [
    pkg-config
    makeWrapper
  ];
  buildInputs = [
    gettext
    ghostscript
    guile
    guile-lib
    guile-reader
    imagemagick
    ploticus
    fig2dev
  ]
  ++ optional enableEmacs emacs
  ++ optional enableLout lout
  ++ optional enableTex tex;

  postInstall =
    let
      guileVersion = lib.versions.majorMinor guile.version;
    in
    ''
      wrapProgram $out/bin/skribilo \
        --prefix GUILE_LOAD_PATH : "$out/share/guile/site/${guileVersion}:$GUILE_LOAD_PATH" \
        --prefix GUILE_LOAD_COMPILED_PATH : "$out/lib/guile/${guileVersion}/site-ccache:$GUILE_LOAD_COMPILED_PATH"
    '';

  meta = with lib; {
    homepage = "https://www.nongnu.org/skribilo/";
    description = "The Ultimate Document Programming Framework";
    longDescription = ''
      Skribilo is a free document production tool that takes a structured
      document representation as its input and renders that document in a
      variety of output formats: HTML and Info for on-line browsing, and Lout
      and LaTeX for high-quality hard copies.

      The input document can use Skribilo's markup language to provide
      information about the document's structure, which is similar to HTML or
      LaTeX and does not require expertise. Alternatively, it can use a simpler,
      "markup-less" format that borrows from Emacs' outline mode and from other
      conventions used in emails, Usenet and text.
    '';
    license = licenses.gpl3Plus;
    maintainers = with maintainers; [ AndersonTorres ];
    platforms = platforms.unix;
  };
}
# TODO: Better Emacs and TeX integration