{
  config,
  inputs,
  lib,
  username,
  pkgs,
  vars,
  ...
}:
let
  cfg = config.catppuccinTheming;
in
#cursor-theme = "Catppuccin-${flavor-upper}-${accent-upper}";
{
  options = {
    catppuccinTheming = {
      enable = lib.mkEnableOption "Enable catppuccinTheming in NixOS & home-manager";
    };
  };
  config = lib.mkIf cfg.enable {
    stylix = {
      enable = true;
      autoEnable = true;
      image = ./wallpapers/biking-sunset.jpg;
      base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-frappe.yaml";
      opacity.terminal = 0.8;
      cursor.package = pkgs.bibata-cursors;
      cursor.name = "Bibata-Modern-Ice";
      cursor.size = 24;
      fonts = {
        monospace = {
          package = pkgs.nerd-fonts.jetbrains-mono;
          name = "JetBrainsMono Nerd Font Mono";
        };
        sansSerif = {
          package = pkgs.inter;
          name = "Inter";
        };
        serif = {
          package = pkgs.montserrat;
          name = "Montserrat";
        };
        sizes = {
          applications = 12;
          terminal = 15;
          desktop = 11;
          popups = 12;
        };
      };
    };
    fonts = {
      packages = with pkgs; [
        noto-fonts-emoji
        noto-fonts-cjk-sans
        font-awesome
        material-icons
      ];
    };
    home-manager.users.${username} = {
      stylix = {
        targets = {
          kitty.enable = true;
          foot.enable = true;
          mangohud.enable = false;
        };
        autoEnable = true;
      };

      services.xsettingsd = {
        settings = {
          # "Gtk/CursorThemeSize" = 24;
          # "Gtk/CursorThemeName" = "${cursor-theme}";
          # "Gtk/FontName" = "${sans-font},  12";
          "Net/IconThemeName" = "Papirus-Dark";
          # "Net/ThemeName" = "${GTK-THEME}";
        };
      };
      gtk.iconTheme = {
        package = pkgs.catppuccin-papirus-folders;
        name = "cat-mocha-lavender";
      };
    };
  };
}
