aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/data/fonts/uw-ttyp0/default.nix
blob: 96cde444d2b95a2f0ebd9da8cb3216c36881ace8 (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
{ stdenv, fetchurl, perl
, bdftopcf, bdf2psf, mkfontdir
, fonttosfnt
, targetsDat  ? null
, variantsDat ? null
}:

stdenv.mkDerivation rec {
  pname = "uw-ttyp0";
  version = "1.3";

  src = fetchurl {
    url = "https://people.mpi-inf.mpg.de/~uwe/misc/${pname}/${pname}-${version}.tar.gz";
    sha256 = "1vp053bwv8sr40p3pn4sjaiq570zp7knh99z9ynk30v7ml4cz2i8";
  };

  # remove for version >1.3
  patches = [ ./determinism.patch ];

  nativeBuildInputs = [ perl bdftopcf bdf2psf fonttosfnt mkfontdir ];

  # configure sizes, encodings and variants
  preConfigure =
    (if targetsDat == null
      then ''
        cat << EOF > TARGETS.dat
        SIZES = 11 12 13 14 15 16 17 18 22 \
        11b 12b 13b 14b 15b 16b 17b 18b 22b 15i 16i 17i 18i
        ENCODINGS = uni
        EOF
      ''
      else ''cp "${targetsDat}" TARGETS.dat'') +
    (if variantsDat == null
      then ''
        cat << EOF > VARIANTS.dat
        COPYTO AccStress PApostropheAscii
        COPYTO PAmComma AccGraveAscii
        COPYTO Digit0Slashed Digit0
        EOF
      ''
      else ''cp "${variantsDat}" VARIANTS.dat'');

  postBuild = ''
    # convert bdf fonts to psf
    build=$(pwd)
    mkdir {psf,otb}
    cd ${bdf2psf}/share/bdf2psf
    for i in $build/genbdf/*.bdf; do
      name="$(basename $i .bdf)"
      bdf2psf \
        --fb "$i" standard.equivalents \
        ascii.set+useful.set+linux.set 512 \
        "$build/psf/$name.psf"
    done
    cd -

    # convert unicode bdf fonts to otb
    for i in $build/genbdf/*-uni.bdf; do
      name="$(basename $i .bdf)"
      fonttosfnt -v -o "$build/otb/$name.otb" "$i"
    done
  '';

  postInstall = ''
    # install psf fonts
    fontDir="$out/share/consolefonts"
    install -m 644 -D psf/*.psf -t "$fontDir"

    # install otb fonts
    fontDir="$otb/share/fonts/X11/misc"
    install -m 644 -D otb/*.otb -t "$fontDir"
    mkfontdir "$fontDir"
  '';

  # Nix with multiple outputs adds several flags
  # that the ./configure script doesn't understand.
  configurePhase = ''
    runHook preConfigure
    ./configure --prefix="$out"
    runHook postConfigure
  '';

  outputs = [ "out" "otb" ];

  meta = with stdenv.lib; {
    description = "Monospace bitmap screen fonts for X11";
    homepage = "https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/";
    license = with licenses; [ free mit ];
    maintainers = with maintainers; [ rnhmjoj ];
  };

}