diff --git a/system/fontdir.nix b/system/fontdir.nix index dc8874410fb7..846bfd5388dd 100644 --- a/system/fontdir.nix +++ b/system/fontdir.nix @@ -5,16 +5,32 @@ stdenv.mkDerivation name="X11-fonts"; phases="installPhase"; fontDirs = import ./fonts.nix {inherit pkgs config;}; + buildInputs = [mkfontdir mkfontscale]; + inherit fontalias; installCommand = " + list=''; + for i in \$fontDirs ; do + if [ -d \$i/ ]; then + list=\"\$list \$i\"; + fi; + done + list=\$(find \$list -name fonts.dir); + fontDirs=''; + for i in \$list ; do + fontDirs=\"\$fontDirs \$(dirname \$i)\"; + done; mkdir -p \$out/share/X11-fonts/; - for i in \$fontDirs; do - if ! echo \$i | egrep '~|/nix/var/nix/profiles' &>/dev/null; then - j=\${i#/nix/store/} - j=\${j%%/*} - if ! test -e \$out/share/X11-fonts/\${j}; then - ln -s \$i \$out/share/X11-fonts/\${j}; - fi; + for i in \$(find \$fontDirs -type f); do + j=\${i##*/} + if ! test -e \$out/share/X11-fonts/\${j}; then + ln -s \$i \$out/share/X11-fonts/\${j}; fi; done; + cd \$out/share/X11-fonts/ + rm fonts.dir + rm fonts.scale + mkfontdir + mkfontscale + cat \$( find \$fontalias/ -name fonts.alias) >fonts.alias "; } diff --git a/system/system.nix b/system/system.nix index faa79f4c2a1e..0aa5ad01bbf3 100644 --- a/system/system.nix +++ b/system/system.nix @@ -166,6 +166,7 @@ rec { fontDir = import ./fontdir.nix { inherit (pkgs) stdenv; inherit pkgs config; + inherit (pkgs.xorg) mkfontdir mkfontscale fontalias; }; # The wrapper setuid programs (since we can't have setuid programs