Vconsole custom font mostly ignored

I’m trying to troubleshoot a behavior that I can not explain on my NixOS setup (25.11-stable).

What I’m trying to achieve is consistent, non-default console font using the ter-v20n font from the terminus_font package. Here’s the relevant part of my config:

    console = {
      earlySetup = true;
      font = "${pkgs.terminus_font}/share/consolefonts/ter-v20n.psf.gz";
      keyMap = "us";
      packages = [ pkgs.terminus_font ];
    };

I have a BTRFS + LUKS setup where I am prompted for an unlock password after I select the NixOS generation in systemd-boot. At this point (NixOS stage 1), I can see the custom font being used already. So far so good.

However, not long after I put in my password and boot progresses, I can see that the terminal console font then changes back to the default one (not ter-v20n). This continued well into my session and it won’t change to ter-v20n unless I manually run sudo systemctl restart systemd-vconsole-setup.

That is my problem: with the config above, shouldn’t my console font always be set to ter-v20n no matter what?

Here are the things I have tried (dead ends because they don’t work or breaks other part of the system):

  • Adding nomodeset to boot.kernelParams. This worked ok, the configured font persists, but my backlight is suddenly not detected (/sys/class/backlight is empty) and some of my GTK prompts in i3 suddenly became invisible.
  • Changing console.font to "ter-v20n" instead of the path above. No effect.
  • Changing earlySetup to false. Worse, now the initial prompt does not event use the configured font. Instead it only appeared to be used much more briefly, before being reset back to the default again.

I’m a little lost now as to what I should try next.

It seems like systemd-vconsole-setup is somehow temporarily broken during boot (it seems to be executed once?) but when I run it manually it actually fixes the system again.

Any pointers?

EDIT: Additional things I’ve tried:

  • Setting boot.initrd.systemd to true makes the custom font ignored completely. At no point during boot and after do I see that ter-v20n is used. I could systemctl restart systemd-vconsole-setup again from within my session and then I can see the custom font used.