{ config, ... }: let metaLib = config.meta.lib; metaRepo = metaLib.repo; in { flake.modules.homeManager.xdg = { config, pkgs, ... }: let browserPackage = metaLib.resolvePackagePath { inherit pkgs; path = metaRepo.desktop.browser.packagePath; }; fileManagerPackage = metaLib.resolvePackagePath { inherit pkgs; path = metaRepo.desktop.fileManager.packagePath; }; homeDir = config.home.homeDirectory; localDir = "${homeDir}/.local"; mediaDir = "${homeDir}/media"; in { xdg = { enable = true; cacheHome = "${localDir}/cache"; configHome = "${homeDir}/.config"; dataHome = "${localDir}/share"; stateHome = "${localDir}/state"; userDirs = { enable = true; createDirectories = true; setSessionVariables = true; download = "${homeDir}/downloads"; documents = "${homeDir}/documents"; projects = "${homeDir}/dev"; music = "${mediaDir}/music"; pictures = "${mediaDir}/images"; videos = "${mediaDir}/videos"; desktop = "${localDir}/desktop"; publicShare = "${localDir}/public"; templates = "${localDir}/templates"; }; mimeApps = { enable = true; defaultApplicationPackages = with pkgs; [ sioyek imv neovim ] ++ [ browserPackage fileManagerPackage ]; }; }; }; }