{
  config,
  lib,
  pkgs,
  ...
}:
let
  inherit (config.catppuccin) sources;

  cfg = config.programs.k9s.catppuccin;
  enable = cfg.enable && config.programs.k9s.enable;

  # NOTE: On MacOS specifically, k9s expects its configuration to be in
  # `~/Library/Application Support` when not using XDG
  enableXdgConfig = !pkgs.stdenv.hostPlatform.isDarwin || config.xdg.enable;

  themeName = "catppuccin-${cfg.flavor}" + lib.optionalString cfg.transparent "-transparent";
  themeFile = "${themeName}.yaml";
  themePath = "k9s/skins/${themeFile}";
  theme = sources.k9s + "/dist/${themeFile}";
in
{
  options.programs.k9s.catppuccin = lib.ctp.mkCatppuccinOpt { name = "k9s"; } // {
    transparent = lib.mkEnableOption "transparent version of flavor";
  };

  config = lib.mkIf enable (
    lib.mkMerge [
      (lib.mkIf (!enableXdgConfig) {
        home.file."Library/Application Support/${themePath}".source = theme;
      })
      (lib.mkIf enableXdgConfig { xdg.configFile.${themePath}.source = theme; })
      { programs.k9s.settings.k9s.ui.skin = themeName; }
    ]
  );
}
