{
  config,
  lib,
  system,
  pkgs,
  ...
}: let
  inherit (lib.snowfall.system) is-linux;

  inherit (config.marleyos) isDesktop;
in {
  config = {
    home.preferXdgDirectories = true;

    xdg = let
      homeDir = config.home.homeDirectory;
    in
      lib.mkMerge [
        {
          enable = true;

          cacheHome = "${homeDir}/.cache";
          configHome = "${homeDir}/.config";
          dataHome = "${homeDir}/.local/share";
          stateHome = "${homeDir}/.local/state";
        }

        (lib.mkIf (isDesktop && (is-linux system)) {
          userDirs = {
            enable = true;
            createDirectories = true;

            desktop = "${homeDir}/desktop";
            documents = null;
            download = "${homeDir}/downloads";
            music = null;
            pictures = "${homeDir}/pictures";
            templates = null;
            videos = "${homeDir}/videos";
          };

          portal = {
            enable = true;
            xdgOpenUsePortal = true;
            extraPortals = [pkgs.xdg-desktop-portal-gtk];
            config.common.default = ["gtk"];
          };

          mimeApps = rec {
            enable = true;

            associations.added = {
              "application/json" = ["nvim.desktop"];
              "application/pdf" = ["org.pwmt.zathura-pdf-mupdf.desktop"];
              "application/xhtml+xml" = ["zen-alpha.desktop"];
              "application/x-extension-htm" = ["zen-alpha.desktop"];
              "application/x-extension-html" = ["zen-alpha.desktop"];
              "application/x-extension-shtml" = ["zen-alpha.desktop"];
              "application/x-extension-xhtml" = ["zen-alpha.desktop"];
              "application/x-extension-xht" = ["zen-alpha.desktop"];
              "image/png" = ["feh.desktop"];
              "text/html" = ["zen-alpha.desktop"];
              "text/plain" = ["nvim.desktop"];
              "x-scheme-handler/chrome" = ["zen-alpha.desktop"];
              "x-scheme-handler/http" = ["zen-alpha.desktop"];
              "x-scheme-handler/https" = ["zen-alpha.desktop"];
            };

            defaultApplications = associations.added;
          };
        })
      ];
  };
}