{ config, namespace, lib, pkgs, ... }: let inherit (lib) mkMerge mkIf; inherit (config.${namespace}) isDesktop; in { config = { home.preferXdgDirectories = true; xdg = let homeDir = config.home.homeDirectory; in mkMerge [ { enable = true; cacheHome = "${homeDir}/.cache"; configHome = "${homeDir}/.config"; dataHome = "${homeDir}/.local/share"; stateHome = "${homeDir}/.local/state"; } (mkIf isDesktop { 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; }; }) ]; }; }