{
  lib,
  config,
  ...
}:
{
  options = {
    custom.catppuccin.enable = lib.mkEnableOption "Enable catppuccin theme";
  };
  config = lib.mkIf config.custom.catppuccin.enable {
    gtk = {
      enable = true;
      colorScheme = "dark";
    };
    programs.hyprlock = {
      enable = true;
      settings = {
        background = {
          color = "$base";
        };

        label = {
          color = "$text";
        };

        image = {
          border_color = "$accent";
        };

        input-field = {
          outer_color = "$accent";
          inner_color = "$surface0";
          font_color = "$text";
          check_color = "$accent";
          fail_color = "$red";
          capslock_color = "$yellow";
        };
      };
    };
    catppuccin = {
      enable = true;
      hyprlock.useDefaultConfig = false;
      cursors.enable = true;
    };
    wayland.windowManager.hyprland.settings.general = {
      "col.inactive_border" = "$surface2";
      "col.active_border" = "$accent";
    };
    xdg = {
      dataFile = {
        wallpaper = {
          source = ./wallpaper.jpg;
          target = "images/wallpaper.jpg";
        };
      };
      configFile = {
        hyprtoolkit = {
          source = ./hyprtoolkit.conf;
          target = "hypr/hyprtoolkit.conf";
        };
        mocha = {
          source = ./mocha.conf;
          target = "hypr/mocha.conf";
        };
        waybarColorscheme = {
          source = ./waybar.css;
        };
      };
    };
    services.hyprpaper = {
      settings = {
        wallpaper = {
          monitor = "";
          path = "$HOME/.local/share/images/wallpaper.jpg";
        };
      };
    };
  };
}
