1
0
Fork 0
mirror of https://github.com/LnL7/nix-darwin.git synced 2024-12-14 11:57:34 +00:00
nix-darwin/modules/fonts/default.nix

81 lines
2.2 KiB
Nix
Raw Normal View History

2018-09-30 11:22:24 +00:00
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.fonts;
in
{
imports = [
(mkRenamedOptionModule [ "fonts" "enableFontDir" ] [ "fonts" "fontDir" "enable" ])
];
2018-09-30 11:22:24 +00:00
options = {
fonts.fontDir.enable = mkOption {
default = false;
description = ''
Whether to enable font management and install configured fonts to
<filename>/Library/Fonts</filename>.
NOTE: removes any manually-added fonts.
'';
};
fonts.fonts = mkOption {
type = types.listOf types.path;
2022-09-25 18:12:08 +00:00
default = [ ];
example = literalExpression "[ pkgs.dejavu_fonts ]";
description = "List of fonts to install.";
2018-09-30 11:22:24 +00:00
};
};
2018-09-30 12:37:31 +00:00
config = {
2022-09-25 18:12:08 +00:00
system.build.fonts = pkgs.runCommand "fonts"
{ paths = cfg.fonts; preferLocalBuild = true; }
''
mkdir -p $out/Library/Fonts
for path in $paths; do
find -L $path/share/fonts -type f -print0 | while IFS= read -rd "" f; do
ln -sf "$f" $out/Library/Fonts
done
done
'';
system.activationScripts.fonts.text = optionalString cfg.fontDir.enable ''
2018-09-30 11:22:24 +00:00
# Set up fonts.
echo "configuring fonts..." >&2
find -L "$systemConfig/Library/Fonts" -type f -print0 | while IFS= read -rd "" l; do
font=''${l##*/}
f=$(readlink -f "$l")
if [ ! -e "/Library/Fonts/$font" ]; then
echo "updating font $font..." >&2
ln -fn -- "$f" /Library/Fonts 2>/dev/null || {
echo "Could not create hard link. Nix is probably on another filesystem. Copying the font instead..." >&2
rsync -az --inplace "$f" /Library/Fonts
}
fi
done
if [[ "`sw_vers -productVersion`" < "13.0" ]]; then
fontrestore default -n 2>&1 | while read -r f; do
case $f in
/Library/Fonts/*)
font=''${f##*/}
if [ ! -e "$systemConfig/Library/Fonts/$font" ]; then
echo "removing font $font..." >&2
rm "/Library/Fonts/$font"
fi
;;
/*)
# ignoring unexpected fonts
;;
esac
done
fi
'';
2018-09-30 11:22:24 +00:00
};
}