diff --git a/modules/targets/darwin/fonts.nix b/modules/targets/darwin/fonts.nix index 78723c43d..988c5edc9 100644 --- a/modules/targets/darwin/fonts.nix +++ b/modules/targets/darwin/fonts.nix @@ -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 ]} + ''; + }; }; }