{ config, lib, ... }: let cfg = config.hm.conf.xdg-dirs; in { options.hm.conf.xdg-dirs = { enable = lib.mkEnableOption "enables xdg dirs"; mediaPath = lib.mkOption { type = lib.types.path; default = config.home.homeDirectory; description = "base path for media"; }; }; config = lib.mkIf cfg.enable { xdg.userDirs = { enable = true; createDirectories = true; download = "${config.home.homeDirectory}/dl"; documents = "${config.home.homeDirectory}/docs"; pictures = "${toString cfg.mediaPath}/pics"; videos = "${toString cfg.mediaPath}/vids"; desktop = null; music = null; publicShare = null; templates = null; extraConfig = { XDG_PROJECTS_DIR = "${config.home.homeDirectory}/proj"; XDG_GAMES_DIR = "${config.home.homeDirectory}/games"; XDG_MEDIA_DIR = "${toString cfg.mediaPath}"; XDG_SS_DIR = "${toString cfg.mediaPath}/pics/ss"; XDG_CLIPS_DIR = "${toString cfg.mediaPath}/vids/clips"; XDG_MOVIES_DIR = "${toString cfg.mediaPath}/movies"; XDG_ANIME_DIR = "${toString cfg.mediaPath}/anime"; XDG_ARCHIVE_DIR = "${toString cfg.mediaPath}/archive"; }; }; home.sessionVariables = { XDG_PROJECTS_DIR = "${config.home.homeDirectory}/proj"; XDG_GAMES_DIR = "${config.home.homeDirectory}/games"; XDG_MEDIA_DIR = "${toString cfg.mediaPath}"; XDG_SS_DIR = "${toString cfg.mediaPath}/pics/ss"; XDG_CLIPS_DIR = "${toString cfg.mediaPath}/vids/clips"; XDG_MOVIES_DIR = "${toString cfg.mediaPath}/movies"; XDG_ANIME_DIR = "${toString cfg.mediaPath}/anime"; XDG_ARCHIVE_DIR = "${toString cfg.mediaPath}/archive"; }; }; }