summary refs log tree commit diff
path: root/pkgs/misc/tex/texlive/aggregate.nix
blob: 1723f48190625045c5d71dd257e85e6d6fb6d0a5 (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
args : with args;
rec {
  phaseNames = ["doAggregate"];
  name = "TeXLive-linkdir";

  buildInputs = lib.closePropagation paths;

  doAggregate = fullDepEntry (''

    ensureDir $out/bin
    for currentPath in ${lib.concatStringsSep " " buildInputs}; do
        echo Symlinking "$currentPath"
        find $currentPath/share/info $currentPath/share/man $(echo $currentPath/texmf*/) ! -type d | while read; do
            REPLY="''${REPLY#$currentPath}"
            ensureDir $out/"$(dirname "$REPLY")"
            ln -fs $currentPath/"$REPLY" $out/"$REPLY"
            echo
        done | while read; do head -n 99 >/dev/null; echo -n .; done

        for i in "$currentPath/bin/"* :; do
            test "$i" != : || continue
            echo -ne "#! $SHELL\\nexec $i \"\$@\"" > "$out/bin/$(basename "$i")" && \
            chmod a+x "$out/bin/$(basename "$i")"
        done

        echo

        cp -Trfp $currentPath/libexec $out/libexec || true
    done

    ln -s $out/texmf* $out/share/

    rm -r $out/texmf-config
    find $out/texmf/ -type d | while read; do
      REPLY="''${REPLY#$out/texmf}"
      ensureDir $out/texmf-config/"$REPLY"
    done

    for i in $out/libexec/*/* :; do
        test "$i" = : && continue;
        test -f "$i" && \
        test -x "$i" && \
        echo -ne "#! $SHELL\\nexec $i \"\$@\"" >$out/bin/$(basename $i) && \
        chmod a+x $out/bin/$(basename $i)
    done

    rm $out/texmf*/ls-R
    for i in web2c texconfig fonts/map; do
        cp -r $out/texmf/$i/* $out/texmf-config/$i || true
    done

    TEXMFCONFIG=$out/texmf-config HOME=$PWD PATH=$PATH:$out/bin updmap --syncwithtrees
    PATH=$PATH:$out/bin mktexlsr $out/texmf*
    TEXMFCONFIG=$out/texmf-config HOME=$PWD PATH=$PATH:$out/bin updmap --syncwithtrees
    PATH=$PATH:$out/bin mktexlsr $out/texmf*
  '') ["minInit" "defEnsureDir" "addInputs"];

  meta = {
    description = "TeX distribution directory";
    longDescription = ''
      Here all the files from different TeX-related
      packages are collected in one directory. Of
      course, mktexlsr is called. Later placed
      directories take precedence. It is supposed that
      share and libexec are symlinked, and bin is
      recreated with wrappers for libexec-located
      linked binaries.
    '';
  };
}