{ config, lib, ... }:

let
  inherit (config.xdg) userDirs;
  userCfg = config.users.foo-dogsquared;
  cfg = userCfg.programs.dconf;
in
{
  options.users.foo-dogsquared.programs.dconf.enable =
    lib.mkEnableOption "dconf configuration";

  config = lib.mkIf cfg.enable {
    dconf.settings = {
      # My GNOME Shell and programs configuration.
      "org/gnome/shell" = {
        favorite-apps =
          lib.optional userCfg.programs.browsers.firefox.enable "firefox.desktop"
          ++ lib.optional userCfg.setups.desktop.enable "thunderbird.desktop"
          ++ lib.optional userCfg.setups.development.enable "org.wezfurlong.wezterm.desktop"
          ++ lib.optional userCfg.programs.doom-emacs.enable "emacs.desktop"
          ++ lib.optional userCfg.programs.vs-code.enable "code.desktop";
      };

      "org/gnome/calculator" = {
        button-mode = "basic";
        show-thousands = true;
        base = 10;
        word-size = 64;
      };

      "org/freedesktop/tracker/miner/files" = {
        index-recursive-directories = [
          # We could also use the values from home-manager but just to make GNOME Settings happy.
          "&DESKTOP"
          "&DOCUMENTS"
          "&MUSIC"
          "&PICTURES"
          "&VIDEOS"
          "&PUBLIC_SHARE"

          userDirs.extraConfig.XDG_PROJECTS_DIR
        ];
      };
    };
  };
}