# --- This file has been auto-generated. For permanent changes alter the appropriate block in the README.org. --- { lib, config, pkgs, ... }: let cfg = config.xdg.userDirs; in { options.xdg.userDirs = { enable = lib.mkEnableOption "XDG User Directories"; directories = lib.mkOption { type = lib.types.attrsOf lib.types.str; default = { DESKTOP = "Desktop"; DOWNLOAD = "Downloads"; TEMPLATES = "Templates"; PUBLICSHARE = "Public"; DOCUMENTS = "Documents"; MUSIC = "Music"; PICTURES = "Pictures"; VIDEOS = "Videos"; }; description = '' XDG User Directories. Specify the subdirectory names for each XDG user directory type. ''; }; }; config = lib.mkIf cfg.enable { environment.sessionVariables = lib.genAttrs cfg.directories ( dirName: dirValue: let dirUpper = builtins.toUpper dirName; dataHome = config.xdg.dataHome or ("/home/" + (config.defaultUser or "henrov")); in "XDG_${dirUpper}_DIR" -> "${dataHome}/${dirValue}" ); system.activationScripts.xdgUserDirs = let dataHome = config.xdg.dataHome or ("/home/" + (config.defaultUser or "henrov")); userName = builtins.elemAt (builtins.attrNames config.users.users) 0 or "henrov"; in '' mkdir -p ${builtins.toJSON ( builtins.attrValues ( builtins.mapAttrs (dirName: dirValue: "${dataHome}/${dirValue}") cfg.directories ) )} chown -R ${userName}: "${dataHome}" ''; }; }