about summary refs log tree commit diff
path: root/nix/neatroff.nix
blob: b1b05e86df6e6c6099cd74509de5fa7432cfc0cc (plain)
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
{ stdenv, fetchurl, fetchgit, fetchFromGitHub, git }:
let
  neatroffSrc = fetchFromGitHub {
    owner = "aligrudi";
    repo = "neatroff";

    rev="9c58dba3438cbf2497178b45a7f4c7cdc001a7f0";
    sha256="0hh7kcxkzjvqapzy2x8c042zafv1dwirc4rjpny2z0940gw2c8mh";
  };
  neatpostSrc = fetchFromGitHub {
    owner = "aligrudi";
    repo = "neatpost";
    rev = "14fafdadb05a2ea128a8aa3ce43ac2010f77c5e0";
    sha256 = "17vzr0zbh2d4i53zdnidd14lvblgp8drv3pzzxrwnkln4ri448nh";
  };
  neatmkfnSrc = fetchFromGitHub {
    owner = "aligrudi";
    repo = "neatmkfn";
    rev = "75c3ea970de97a857fc27c70696e5009ccf73e71";
    sha256 = "0yhsvwb3yyc852q3174ldx37mjj7171kbaxnq9p5nmjz265dw88a";
  };
  neateqnSrc = fetchFromGitHub {
    owner = "aligrudi";
    repo = "neateqn";
    rev = "227fa723d1e703f6424968c8c99809769e10165f";
    sha256 = "0ihp7rkfyz3pnlyi53w3rpa0k42791q71d618jz1l88pmfa00p9w";
  };
  neatreferSrc = fetchFromGitHub {
    owner = "aligrudi";
    repo = "neatrefer";
    rev = "b11d03d051f79791d03d6d3c1c9f492c1fa1f512";
    sha256 = "12g47nd3qbkfzr4cpchcsx4bh0g8wiqs6vzya2j4w18rqrzi3166";
  };
  troffSrc = fetchgit {
    url = "git://repo.or.cz/troff.git";
    rev = "8a83ad3156f499f2483b46c03d6c4770592fb335";
    sha256 = "16hcybn1y9byvw2cv2z7m3yhdwak5m69gnq0x6kq62vlify31jl3";
  };
  fonts = stdenv.mkDerivation {
    name = "neatroff-fonts";
    srcs = fetchFromGitHub {
        name = "urw";
        owner = "ArtifexSoftware";
        repo = "urw-base35-fonts";
        rev = "20170801.1";
        sha256 = "sha256:1k578r3qb0sjfd715jw0bc00pjvbrgnw0b7zrrhk33xghrdvp4r6";
    };

    installPhase = ''
      mkdir -p $out
      cp fonts/*.t1 $out
      cp fonts/*.afm $out
    '';
  };
in
  stdenv.mkDerivation {
    name = "neatroff";

    src = fetchFromGitHub {
      repo = "neatroff_make";
      owner = "aligrudi";
      rev = "beeb7df77be057ffb5a0c537cf6e26fd3387e1af";
      sha256 = "174pi6j3zgnk7yv37pi4jlnyc9pc2syc2fj0nzgimnkgcznyxp30";
    };

    nativeBuildInputs = [ git ];

    buildPhase = ''
      cp -r ${neatroffSrc} neatroff
      cp -r ${neatpostSrc} neatpost
      cp -r ${neatmkfnSrc} neatmkfn
      cp -r ${neateqnSrc} neateqn
      cp -r ${neatreferSrc} neatrefer
      cp -r ${troffSrc} troff
      cp ${fonts}/* fonts
      chmod u+w -R neat*
      chmod u+w -R troff
      cd neatroff
      patch -p1 < ${./format-security.patch}
      cd ..
      cd neateqn
      patch -p1 < ${./eqn-format-security.patch}
      cd ..
      echo
      echo
      echo
      ls -l fonts
      echo
      echo
      echo
      make neat BASE=$out
    '';

    installPhase = ''
      mkdir -p $out/bin
      make install BASE=$out
      ln -s $out/neatroff/roff $out/bin/roff
      ln -s $out/neatpost/post $out/bin/post
      ln -s $out/neatpost/pdf $out/bin/pdf
      ln -s $out/neateqn/eqn $out/bin/eqn
      ln -s $out/neatrefer/refer $out/bin/refer
      ln -s $out/troff/pic/pic $out/bin/pic
      ln -s $out/troff/tbl/tbl $out/bin/tbl
      ln -s $out/soin/soin $out/bin/soin
    '';
  }