@@ -4,15 +4,19 @@ with lib;
44
55let
66
7+ cfg = config.fonts.fontDir;
8+
79 x11Fonts = pkgs.runCommand "X11-fonts" { preferLocalBuild = true; } ''
8− mkdir -p "$out/share/X11-fonts"
9− find ${toString config.fonts.fonts} \
10− \( -name fonts.dir -o -name '*.ttf' -o -name '*.otf' \) \
11− -exec ln -sf -t "$out/share/X11-fonts" '{}' \;
12− cd "$out/share/X11-fonts"
13− rm -f fonts.dir fonts.scale fonts.alias
14− ${pkgs.xorg.mkfontdir}/bin/mkfontdir
10+ mkdir -p "$out/share/X11/fonts"
11+ font_regexp='.*\.\(ttf\|otf\|pcf\|pfa\|pfb\|bdf\)\(\.gz\)?'
12+ find ${toString config.fonts.fonts} -regex "$font_regexp" \
13+ -exec ln -sf -t "$out/share/X11/fonts" '{}' \;
14+ cd "$out/share/X11/fonts"
15+ ${optionalString cfg.decompressFonts ''
16+ ${pkgs.gzip}/bin/gunzip -f *.gz
17+ ''}
1518 ${pkgs.xorg.mkfontscale}/bin/mkfontscale
19+ ${pkgs.xorg.mkfontdir}/bin/mkfontdir
1620 cat $(find ${pkgs.xorg.fontalias}/ -name fonts.alias) >fonts.alias
1721 '';
1822
@@ -21,28 +25,43 @@ in
2125{
2226
2327 options = {
28+ fonts.fontDir = {
2429
25− fonts = {
26−
27− enableFontDir = mkOption {
30+ enable = mkOption {
2831 type = types.bool;
2932 default = false;
3033 description = ''
3134 Whether to create a directory with links to all fonts in
32− <filename>/run/current-system/sw/share/X11-fonts</filename>.
35+ <filename>/run/current-system/sw/share/X11/fonts</filename>.
3336 '';
3437 };
3538
36− };
39+ decompressFonts = mkOption {
40+ type = types.bool;
41+ default = config.programs.xwayland.enable;
42+ description = ''
43+ Whether to decompress fonts in
44+ <filename>/run/current-system/sw/share/X11/fonts</filename>.
45+ '';
46+ };
3747
48+ };
3849 };
3950
40− config = mkIf config.fonts.enableFontDir {
51+ config = mkIf cfg.enable {
4152
53+ # This is enough to make a symlink because the xserver
54+ # module already links all /share/X11 paths.
4255 environment.systemPackages = [ x11Fonts ];
4356
44− environment.pathsToLink = [ "/share/X11-fonts" ];
57+ services.xserver.filesSection = ''
58+ FontPath "${x11Fonts}/share/X11/fonts"
59+ '';
4560
4661 };
4762
63+ imports = [
64+ (mkRenamedOptionModule [ "fonts" "enableFontDir" ] [ "fonts" "fontDir" "enable" ])
65+ ];
66+
4867}