summary refs log tree commit diff
path: root/pkgs/tools/misc/man/default.nix
blob: 2f61a30714e2020aeade33f1f4d1a7079f28a21f (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
{ stdenv, fetchurl, groff, less }:
 
stdenv.mkDerivation rec {
  name = "man-1.6g";

  src = fetchurl {
    url = "http://primates.ximian.com/~flucifredi/man/${name}.tar.gz";
    sha256 = "17wmp2ahkhl72cvfzshmck22dnq2lbjg0678swihj270yk1vip6c";
  };
  
  buildInputs = [ groff less ];

  preBuild = ''
    makeFlagsArray=(bindir=$out/bin sbindir=$out/sbin libdir=$out/lib mandir=$out/share/man)
  '';

  patches = [
    # Search in "share/man" relative to each path in $PATH (in addition to "man").
    ./share.patch

    # Prefer /etc/man.conf over $out/lib/man.conf.  Man only reads the
    # first file that exists, so this is necessary to allow the
    # builtin config to be overriden.
    ./conf.patch
  ];

  preConfigure = ''
    sed 's/^PREPATH=.*/PREPATH=$PATH/' -i configure
  '';

  postInstall =
    ''
      # Use UTF-8 by default.  Otherwise man won't know how to deal
      # with certain characters.
      substituteInPlace $out/lib/man.conf \
        --replace "nroff -Tlatin1" "nroff" \
        --replace "eqn -Tlatin1" "eqn -Tutf8"

      # Work around a bug in substituteInPlace.  It loses the final
      # newline, and man requires every line in man.conf to be
      # terminated by a newline.
      echo >> $out/lib/man.conf
    '';

  meta = {
    homepage = http://primates.ximian.com/~flucifredi/man/;
    description = "Tool to read online Unix documentation";
    platforms = stdenv.lib.platforms.unix;
  };
}