Skip to content

Revisit Linux Nerd Fonts installation (standalone, low priority) #751

Description

@ppat

Context

.chezmoiscripts/run_after_32_fonts.sh.tmpl is 71 lines that install JetBrainsMono and FiraCode Nerd Fonts on Linux by downloading upstream release archives with curl, unzipping into ~/.local/share/fonts/NerdFonts, and running fc-cache. It carries a hand-pinned NERD_FONTS_VERSION kept current by a # renovate: comment.

It exists because Homebrew font casks only populate the Caskroom and never reach fontconfig on Linux — so the cask approach used on macOS (Brewfile.system.darwin) doesn't work there. That finding is still believed correct and is not what's in question here.

What prompted this

The PoC in #747 replaced this script with two brew-cask: entries under mise's [bootstrap.packages], on the basis that mise is not shelling out to brew --cask — it writes font files directly into $XDG_DATA_HOME/fonts. In a throwaway Ubuntu 24.04 pod that produced 114 .ttf files in ~/.local/share/fonts/ with fontconfig picking them up, and a second run was a no-op.

That work is not being carried forward. PR #748 was closed unmerged, and the repo owner is not convinced the approach is sound enough to adopt on that evidence. This ticket exists so the question isn't silently dropped — not as a commitment to the PoC's design.

No urgency, and no strong value either way. The current script works. The upside is deleting 71 lines of bespoke download/unzip/cache logic plus a hand-pinned version; the downside is depending on a mise mechanism that is weeks old and, in the PoC, needed a conf.d per-OS overlay plus a mise bootstrap packages apply call to work at all.

If picked up

Evaluate fresh rather than resurrecting the PoC's shape:

  • Does mise's brew-cask: font path hold up outside a clean pod — on an established machine, across a font version bump, and against fc-cache behaviour with an existing NerdFonts/ directory from the current script?
  • What is the minimum machinery? The PoC needed a Linux-only conf.d overlay because [bootstrap.packages] has no per-entry OS filter, and macOS already installs these fonts via Brewfile.system.darwin — so a shared entry would double-install. Is a whole per-OS overlay mechanism worth it for two lines?
  • Are there alternatives that don't involve mise at all — e.g. keeping the script but simplifying it, or an apt/distro path.
  • Whatever is chosen: preserve the reasoning that Homebrew casks don't reach fontconfig on Linux. If a future reader sees a cask-flavoured approach working and concludes the original investigation was wrong, it wasn't — mise just isn't using brew.

References

Deliberately not linked as a sub-issue of #746 — this is standalone work, independent of that effort's direction.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions