{
  pkgs,
  ...
}:
let
  themes = {
    gtk = {
      name = "rose-pine";
      package = pkgs.rose-pine-gtk-theme;
    };
    icons = {
      name = "Adwaita";
      package = pkgs.adwaita-icon-theme;
    };
    cursor = {
      name = "BreezeX-RosePine-Linux";
      package = pkgs.rose-pine-cursor;
    };
  };
  themePackages = map (subset: subset.package) (builtins.attrValues themes);
in
{
  alqueva.system.dconf = {
    enable = true;
    luminosity = "dark";
    theme = themes.gtk.name;
    icon.theme = themes.icons.name;
    cursor = {
      size = 24;
      theme = themes.cursor.name;
    };
  };

  qt = {
    enable = true;
    platformTheme = "qt5ct";
    style = "kvantum";
  };

  systemd.user.tmpfiles.rules = [
    "L+ %h/.config/gtk-4.0 - - - - ${themes.gtk.package}/share/themes/${themes.gtk.name}/gtk-4.0"
  ];

  # This is really just to please the functor.
  # Any value can be used in null's place.
  environment.systemPackages = themePackages;
}
