{
  pkgs,
  config,
  ...
}:
let
  # FIXME(xdg): That should use config options and just reference whatever is configured as the default
  files = [ "org.gnome.Nautilus.desktop" ];
  browser = [ "zen.desktop" ];
  editor = [ "code.desktop" ];
  steam = [ "steam-session.desktop" ];
  # Extensive list of associations here:
  # https://github.com/iggut/GamiNiX/blob/8070528de419703e13b4d234ef39f05966a7fafb/system/desktop/home-main.nix#L77
  associations = {
    "x-scheme-handler/steam" = steam;
    "x-scheme-handler/steamlink" = steam;

    "inode/directory" = files;

    "text/*" = editor;
    "text/plain" = editor;

    # "text/html" = browser;
    "application/x-zerosize" = editor; # empty files

    "application/x-shellscript" = editor;
    "application/x-perl" = editor;
    "application/json" = editor;
    "application/x-extension-htm" = browser;
    "application/x-extension-html" = browser;
    "application/x-extension-shtml" = browser;
    "application/xhtml+xml" = browser;
    "application/x-extension-xhtml" = browser;
    "application/x-extension-xht" = browser;
    "application/pdf" = browser;

    "x-scheme-handler/http" = browser;
    "x-scheme-handler/https" = browser;

    "image/*" = browser;
  };

in
{
  # Enables app shorcuts
  targets.genericLinux.enable = true;
  xdg.mime.enable = true;
  xdg.mimeApps.enable = true;
  xdg.mimeApps.defaultApplications = associations;
  xdg.mimeApps.associations.added = associations;
  xdg.systemDirs.data = [ "${config.home.homeDirectory}/.nix-profile/share/applications" ];

  home.packages = builtins.attrValues {
    inherit (pkgs)
      handlr-regex # better xdg-open for desktop apps
      ;
  };

}
