{
  config,
  pkgs,
  ...
}: {
  imports = [
    ./mime-apps.nix
    ./user-dirs.nix
    ./config-files.nix
    ./portal.nix
  ];

  xdg = {
    enable = true;
    cacheHome = "${config.home.homeDirectory}/.cache";
    configHome = "${config.home.homeDirectory}/.config";
    dataHome = "${config.home.homeDirectory}/.local/share";
    stateHome = "${config.home.homeDirectory}/.local/state";
  };

  # These are not supported via xdg configuration, set them manually
  # Defined in /etc/profiles/per-user/$USER/etc/profile.d/hm-session-vars.sh
  home.sessionVariables = {
    "XDG_RUNTIME_DIR" = "/run/user/$UID";
    "XDG_BIN_HOME" = "${config.home.homeDirectory}/.local/bin";
  };

  # xdg-ninja is a CLI tool that checks $HOME for unwanted
  # files/dirs and shows how to move them to XDG dirs
  home.packages = [pkgs.xdg-ninja];
}
