darwin: fonts: speed up font installation
* Skip font installation if the derivation hasn't changed. * Use `rsync` instead of `install` to copy font files, to avoid useless copying of pre-existent identical files.
This commit is contained in:
parent
11edf9cad7
commit
738527f866
|
@ -10,20 +10,17 @@ let
|
|||
pathsToLink = "/share/fonts";
|
||||
};
|
||||
fonts = "${fontsEnv}/share/fonts";
|
||||
installDir = "${homeDir}/Library/Fonts/HomeManager";
|
||||
in {
|
||||
# macOS won't recognize symlinked fonts
|
||||
config = mkIf pkgs.stdenv.hostPlatform.isDarwin {
|
||||
home.activation.copyFonts = hm.dag.entryAfter [ "writeBoundary" ] ''
|
||||
copyFonts() {
|
||||
rm -rf ${homeDir}/Library/Fonts/HomeManager || :
|
||||
|
||||
local f
|
||||
find -L "${fonts}" -type f -printf '%P\0' | while IFS= read -rd "" f; do
|
||||
run install $VERBOSE_ARG -Dm644 -T \
|
||||
"${fonts}/$f" "${homeDir}/Library/Fonts/HomeManager/$f"
|
||||
done
|
||||
}
|
||||
copyFonts
|
||||
'';
|
||||
home.file."Library/Fonts/.home-manager-fonts-version" = {
|
||||
text = "${fontsEnv}";
|
||||
onChange = ''
|
||||
run mkdir -p ${escapeShellArg installDir}
|
||||
run ${pkgs.rsync}/bin/rsync $VERBOSE_ARG -acL --chmod=u+w --delete \
|
||||
${escapeShellArgs [ "${fonts}/" installDir ]}
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue