#!/bin/bash # ============================================================ # setup_ubuntu.sh – Configure ubuntu user environment # Symlinks home dirs to /data so they persist across restarts # ============================================================ set -euo pipefail log() { echo "[UBUNTU] $*"; } export HOME=/data/home export USER=ubuntu # ── Symlink Downloads → /data/downloads ───────────────────── DOWNLOADS_LINK=/data/home/Downloads if [ -d "$DOWNLOADS_LINK" ] && [ ! -L "$DOWNLOADS_LINK" ]; then # First run: real dir exists – migrate contents and replace with symlink cp -rn "$DOWNLOADS_LINK/." /data/downloads/ 2>/dev/null || true rm -rf "$DOWNLOADS_LINK" fi if [ ! -L "$DOWNLOADS_LINK" ]; then ln -sf /data/downloads "$DOWNLOADS_LINK" log "Symlinked Downloads → /data/downloads" fi # ── Symlink Firefox profile → /data/firefox ────────────────── FIREFOX_DIR=/data/home/.mozilla/firefox if [ -d "$FIREFOX_DIR" ] && [ ! -L "$FIREFOX_DIR" ]; then cp -rn "$FIREFOX_DIR/." /data/firefox/ 2>/dev/null || true rm -rf "$FIREFOX_DIR" fi if [ ! -L "$FIREFOX_DIR" ]; then ln -sf /data/firefox "$FIREFOX_DIR" log "Symlinked Firefox profile → /data/firefox" fi # ── XFCE config ─────────────────────────────────────────────── mkdir -p /data/home/.config/xfce4 if [ ! -L /data/home/.config/xfce4 ]; then log "XFCE config dir ready at /data/home/.config/xfce4" fi # ── XDG runtime dir ─────────────────────────────────────────── mkdir -p /tmp/runtime-ubuntu chown ubuntu:ubuntu /tmp/runtime-ubuntu chmod 700 /tmp/runtime-ubuntu # ── .bashrc / .profile ─────────────────────────────────────── if [ ! -f /data/home/.bashrc ]; then cat > /data/home/.bashrc << 'EOF' # Ubuntu PRoot-style environment on Hugging Face Space export HOME=/data/home export WORKSPACE=/data/workspace export PS1='\[\033[01;32m\]ubuntu@hf-space\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' alias ll='ls -alF' alias la='ls -A' alias workspace='cd /data/workspace' echo "Welcome to your Ubuntu Desktop on Hugging Face Spaces!" echo "Workspace: /data/workspace | Home: /data/home" EOF log "Created .bashrc" fi # ── Desktop shortcut: Workspace folder ──────────────────────── DESKTOP_DIR=/data/home/Desktop cat > "$DESKTOP_DIR/workspace.desktop" << 'EOF' [Desktop Entry] Version=1.0 Type=Application Name=Workspace Comment=Open persistent workspace folder Exec=thunar /data/workspace Icon=folder-documents Terminal=false Categories=Utility; EOF chmod +x "$DESKTOP_DIR/workspace.desktop" # ── Desktop shortcut: Terminal ──────────────────────────────── cat > "$DESKTOP_DIR/terminal.desktop" << 'EOF' [Desktop Entry] Version=1.0 Type=Application Name=Terminal Comment=Open XFCE Terminal Exec=xfce4-terminal Icon=utilities-terminal Terminal=false Categories=System;TerminalEmulator; EOF chmod +x "$DESKTOP_DIR/terminal.desktop" # ── Final ownership ─────────────────────────────────────────── chown -R ubuntu:ubuntu /data/home log "Ubuntu user environment ready."