diff --git a/src/lib.rs b/src/lib.rs index 7726e7bc0a..86f730405c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -232,6 +232,56 @@ pub fn install_dir, S: AsRef>(config: Config, output_dir: P, recursive_chown: true, }.create(&output_dir)?; + if uid >= 1000 { + // Create XDG user dirs + //TODO: move to some autostart program? + for xdg_folder in &[ + "Desktop", + "Documents", + "Downloads", + "Music", + "Pictures", + "Public", + "Templates", + "Videos", + ".config", + ".local", + ".local/share", + ".local/share/Trash", + ".local/share/Trash/info", + ] { + FileConfig { + path: format!("{}/{}", home, xdg_folder), + data: String::new(), + symlink: false, + directory: true, + mode: Some(0o0700), + uid: Some(uid), + gid: Some(gid), + recursive_chown: false, + }.create(&output_dir)?; + } + FileConfig { + path: format!("{}/.config/user-dirs.dirs", home), + data: r#"# Produced by redox installer +XDG_DESKTOP_DIR="$HOME/Desktop" +XDG_DOCUMENTS_DIR="$HOME/Documents" +XDG_DOWNLOAD_DIR="$HOME/Downloads" +XDG_MUSIC_DIR="$HOME/Music" +XDG_PICTURES_DIR="$HOME/Pictures" +XDG_PUBLICSHARE_DIR="$HOME/Public" +XDG_TEMPLATES_DIR="$HOME/Templates" +XDG_VIDEOS_DIR="$HOME/Videos" +"#.to_string(), + symlink: false, + directory: false, + mode: Some(0o0600), + uid: Some(uid), + gid: Some(gid), + recursive_chown: false, + }.create(&output_dir)?; + } + let password = hash_password(&password)?; passwd.push_str(&format!("{};{};{};{};{};{}\n", username, uid, gid, name, home, shell));