{
  options,
  config,
  pkgs,
  lib,
  ...
}:

with lib;
with lib.metacfg;
let
  cfg = config.metacfg.system.fonts;
in
{
  options.metacfg.system.fonts = with types; {
    enable = mkBoolOpt false "Whether or not to manage fonts.";
    fonts = mkOpt (listOf package) [ ] "Custom font packages to install.";
  };

  config = mkIf cfg.enable {
    environment.variables = {
      # Enable icons in tooling since we have nerdfonts.
      LOG_ICONS = "true";
    };

    fonts = {
      packages =
        with pkgs;
        [
          (nerdfonts.override {
            fonts = [
              "Hack"
              "FiraCode"
              "DroidSansMono"
              "JetBrainsMono"
            ];
          })
        ]
        ++ cfg.fonts;
    };
  };
}