{ config, lib, ... }: with lib; { imports = let withBase = a: ["nixfiles" "modules" "common" "xdg" a]; 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")) ]; options.nixfiles.modules.common.xdg = { cacheHome = mkOption { type = types.str; default = "${config.hm.home.homeDirectory}/.cache"; }; configHome = mkOption { type = types.str; default = "${config.hm.home.homeDirectory}/.config"; }; dataHome = mkOption { type = types.str; default = "${config.hm.home.homeDirectory}/.local/share"; }; stateHome = mkOption { type = types.str; default = "${config.hm.home.homeDirectory}/.local/state"; }; userDirs = mkOption { type = types.attrs; default = let inherit (config.my) home; tmp = home + "/tmp"; in { enable = true; desktop = tmp; documents = "${home}/doc"; download = tmp; music = tmp; pictures = tmp; publicShare = "${home}/share"; templates = tmp; videos = tmp; }; }; }; }