{ config, lib, this, ... }: with lib; { imports = let withBase = s: ["home-manager" "users" my.username "xdg" s]; in [ (mkAliasOptionModule ["dirs" "cache"] (withBase "cacheHome")) (mkAliasOptionModule ["dirs" "config"] (withBase "configHome")) (mkAliasOptionModule ["dirs" "data"] (withBase "dataHome")) (mkAliasOptionModule ["dirs" "state"] (withBase "stateHome")) (mkAliasOptionModule ["userDirs"] (withBase "userDirs")) ]; hm = { xdg = mkMerge [ { enable = true; userDirs = let inherit (config.my) home; tmp = home + "/tmp"; in { enable = true; createDirectories = this.isHeadful; desktop = tmp; documents = "${home}/doc"; download = tmp; music = tmp; pictures = tmp; videos = tmp; templates = tmp; publicShare = "${home}/share"; }; } (mkIf this.isHeadful { mimeApps = let images = [ "image/bmp" "image/gif" "image/jpeg" "image/jpg" "image/png" "image/svg+xml" "image/tiff" "image/webp" ]; media = [ "audio/aac" "audio/flac" "audio/mp3" "audio/ogg" "audio/wav" "audio/webm" "video/mkv" "video/mp4" "video/ogg" "video/webm" "video/x-matroska" ]; in { enable = true; defaultApplications = mkMerge (mapAttrsToList (n: ms: genAttrs ms (_: ["${n}.desktop"])) { aria2 = ["application/x-bittorrent" "x-scheme-handler/magnet"]; emacsclient = ["x-scheme-handler/mailto"]; firefox = [ "text/html" "x-scheme-handler/http" "x-scheme-handler/https" ]; gwenview = images; mpv = media; }); }; }) ]; }; }