76 lines
1.7 KiB
Nix
76 lines
1.7 KiB
Nix
|
{ config, pkgs, ... }:
|
||
|
|
||
|
with pkgs.lib;
|
||
|
|
||
|
let
|
||
|
|
||
|
fontDirs = config.fonts.fonts;
|
||
|
|
||
|
localDefs = with pkgs.builderDefs; pkgs.builderDefs.passthru.function rec {
|
||
|
src = "";/* put a fetchurl here */
|
||
|
buildInputs = [pkgs.xorg.mkfontdir pkgs.xorg.mkfontscale];
|
||
|
inherit fontDirs;
|
||
|
installPhase = fullDepEntry ("
|
||
|
list='';
|
||
|
for i in ${toString fontDirs} ; do
|
||
|
if [ -d \$i/ ]; then
|
||
|
list=\"\$list \$i\";
|
||
|
fi;
|
||
|
done
|
||
|
list=\$(find \$list -name fonts.dir -o -name '*.ttf' -o -name '*.otf');
|
||
|
fontDirs='';
|
||
|
for i in \$list ; do
|
||
|
fontDirs=\"\$fontDirs \$(dirname \$i)\";
|
||
|
done;
|
||
|
mkdir -p \$out/share/X11-fonts/;
|
||
|
find \$fontDirs -type f -o -type l | while read i; 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
|
||
|
rm fonts.alias
|
||
|
mkfontdir
|
||
|
mkfontscale
|
||
|
cat \$( find ${pkgs.xorg.fontalias}/ -name fonts.alias) >fonts.alias
|
||
|
") ["minInit" "addInputs"];
|
||
|
};
|
||
|
|
||
|
x11Fonts = with localDefs; stdenv.mkDerivation rec {
|
||
|
name = "X11-fonts";
|
||
|
builder = writeScript (name + "-builder")
|
||
|
(textClosure localDefs
|
||
|
[installPhase doForceShare doPropagate]);
|
||
|
};
|
||
|
|
||
|
in
|
||
|
|
||
|
{
|
||
|
|
||
|
options = {
|
||
|
|
||
|
fonts = {
|
||
|
|
||
|
enableFontDir = mkOption {
|
||
|
default = false;
|
||
|
description = ''
|
||
|
Whether to create a directory with links to all fonts in
|
||
|
<filename>/run/current-system/sw/share/X11-fonts</filename>.
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
};
|
||
|
|
||
|
};
|
||
|
|
||
|
config = mkIf config.fonts.enableFontDir {
|
||
|
|
||
|
environment.systemPackages = [ x11Fonts ];
|
||
|
|
||
|
};
|
||
|
|
||
|
}
|