{ config, lib, pkgs, catppuccin-themes, ... }:

{
  imports = [
    ./wlogout/default.nix
    ./waybar/default.nix
    ./swaync/default.nix
    ./rofi/default.nix
    ./anyrun.nix
    ./gtk.nix
  ];
  home.packages = with pkgs; [
    signal-desktop
    remmina
    libreoffice
    zotero
    minesweep-rs
  ];
  programs.rofi = {
    package = pkgs.rofi-wayland;
    terminal = "${pkgs.alacritty}/bin/alacritty";
    pass.extraConfig = ''
      backend=wtype
      clibpoard_backend=wl-clipboard
    '';
  };
  services.kanshi = {
    enable = true;
    systemdTarget = "hyprland-session.target";
  };
  stylix.targets.hyprland.enable = true;
  wayland.windowManager.hyprland = {
    enable = true;
    xwayland.enable = true;
    systemdIntegration = true;
    extraConfig = import ./config.nix {
      inherit config pkgs;
      theme = catppuccin-themes.hyprland;
    };
  };
  xdg = {
    configFile = {
      "hypr/hyprpaper.conf".text = ''
        preload = ${config.stylix.image}
        wallpaper = ,${config.stylix.image}
      '';
      "hypr/macchiato.conf".source = ./macchiato.conf;
      "hypr/extra.conf" = lib.mkDefault { text = ""; };
    };
    mimeApps = let
      associations = {
        "image/jpeg" = [ "swayimg.desktop" ];
        "image/png" = [ "swayimg.desktop" ];
        "video/mp4" = [ "mpv.desktop" ];
        "application/pdf" = [ "zathura.desktop" "emacs.desktop" ];
        "application/json" = [ "emacs.desktop" "firefox.desktop" ];
        "application/x-yaml" = [ "emacs.desktop" ];
        "text/csv" = [ "calc.desktop" "emacs.desktop" ];
      };
    in {
      enable = true;
      defaultApplications = associations;
      associations.added = associations;
    };
  };
}