first commit
This commit is contained in:
Executable
+129
@@ -0,0 +1,129 @@
|
||||
#!/usr/bin/env bash
|
||||
# Instalación + configuración de Arch con GNOME en UN comando desde el USB live.
|
||||
#
|
||||
# ./gnome/setup.sh
|
||||
#
|
||||
# Dos fases en el mismo fichero (ponytail: una sola fuente de verdad por DE,
|
||||
# en vez de duplicar la lógica en un bootstrap + un post-install):
|
||||
# - SETUP_PHASE=host -> corre archinstall y se re-lanza dentro del chroot
|
||||
# - SETUP_PHASE=chroot -> instala paquetes/tema/chezmoi en el sistema nuevo
|
||||
set -euo pipefail
|
||||
|
||||
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
DE="gnome"
|
||||
SETUP_PHASE="${SETUP_PHASE:-host}"
|
||||
GITEA="https://gitea.josevi.ovh/josevi"
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# FASE 1 (USB live): archinstall + chroot
|
||||
# ---------------------------------------------------------------------------
|
||||
if [[ "$SETUP_PHASE" == "host" ]]; then
|
||||
[[ $EUID -eq 0 ]] || { echo "Ejecuta como root desde el live ISO."; exit 1; }
|
||||
|
||||
read -rp "Usuario a crear: " INSTALL_USER
|
||||
read -rsp "Token de Gitea (repo configs privado, Enter si es público): " GITEA_TOKEN; echo
|
||||
read -rp "Nombre para git [$INSTALL_USER]: " GIT_NAME; GIT_NAME="${GIT_NAME:-$INSTALL_USER}"
|
||||
read -rp "Email para git [josevisw@gmail.com]: " GIT_EMAIL; GIT_EMAIL="${GIT_EMAIL:-josevisw@gmail.com}"
|
||||
|
||||
echo ">> Lanzando archinstall (instala base + GNOME en /mnt)..."
|
||||
archinstall --config "$REPO_DIR/$DE/archinstall-config.json" --silent
|
||||
|
||||
echo ">> Copiando arch-setup al sistema nuevo y entrando en chroot..."
|
||||
cp -r "$REPO_DIR" /mnt/root/arch-setup
|
||||
arch-chroot /mnt env \
|
||||
SETUP_PHASE=chroot INSTALL_USER="$INSTALL_USER" GITEA_TOKEN="$GITEA_TOKEN" \
|
||||
GIT_NAME="$GIT_NAME" GIT_EMAIL="$GIT_EMAIL" \
|
||||
bash "/root/arch-setup/$DE/setup.sh"
|
||||
|
||||
echo ">> Listo. Quita el USB y reinicia: reboot"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# FASE 2 (dentro del chroot)
|
||||
# ---------------------------------------------------------------------------
|
||||
: "${INSTALL_USER:?falta INSTALL_USER}"
|
||||
source "$(dirname "${BASH_SOURCE[0]}")/../shared/packages-common.sh"
|
||||
|
||||
echo ">> Creando usuario $INSTALL_USER..."
|
||||
id "$INSTALL_USER" &>/dev/null || useradd -m -G wheel -s /bin/zsh "$INSTALL_USER"
|
||||
echo "Contraseña para $INSTALL_USER:"; passwd "$INSTALL_USER"
|
||||
# wheel con sudo; NOPASSWD temporal para que paru/makepkg no se cuelguen
|
||||
echo '%wheel ALL=(ALL:ALL) ALL' >/etc/sudoers.d/10-wheel
|
||||
echo "$INSTALL_USER ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/99-setup-nopasswd
|
||||
|
||||
echo ">> Paquetes oficiales (pacman)..."
|
||||
install_pacman "${PACMAN_COMMON[@]}" \
|
||||
gnome-calculator gnome-tweaks gnome-themes-extra \
|
||||
gnome-shell-extension-appindicator
|
||||
|
||||
echo ">> Bootstrapeando paru y paquetes AUR..."
|
||||
bootstrap_paru
|
||||
install_aur "${AUR_COMMON[@]}" \
|
||||
catppuccin-gtk-theme-mocha \
|
||||
gnome-shell-extension-dash-to-dock \
|
||||
gnome-shell-extension-caffeine \
|
||||
gnome-shell-extension-blur-my-shell \
|
||||
gnome-shell-extension-clipboard-indicator \
|
||||
gnome-shell-extension-vitals
|
||||
install_helpwire
|
||||
|
||||
echo ">> Servicios..."
|
||||
systemctl enable NetworkManager
|
||||
systemctl enable --global syncthing.service 2>/dev/null || true
|
||||
|
||||
# --- Aspecto: se aplica en el PRIMER login gráfico ------------------------
|
||||
# ponytail: dconf/gsettings necesitan sesión D-Bus, que no existe en chroot.
|
||||
# Un oneshot de autostart lo aplica al primer login y se autodesactiva.
|
||||
USER_HOME="/home/$INSTALL_USER"
|
||||
install -d -o "$INSTALL_USER" -g "$INSTALL_USER" "$USER_HOME/.local/bin" "$USER_HOME/.config/autostart"
|
||||
|
||||
cat >"$USER_HOME/.local/bin/firstboot-theme.sh" <<'EOS'
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
# Teclado: US internacional con teclas muertas
|
||||
gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us+intl')]"
|
||||
gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'
|
||||
gsettings set org.gnome.desktop.interface gtk-theme 'catppuccin-mocha-blue-standard+default'
|
||||
gsettings set org.gnome.desktop.interface icon-theme 'Papirus-Dark'
|
||||
gsettings set org.gnome.desktop.interface font-name 'JetBrainsMono Nerd Font 11'
|
||||
gsettings set org.gnome.desktop.interface monospace-font-name 'JetBrainsMono Nerd Font Mono 12'
|
||||
for e in \
|
||||
dash-to-dock@micxgx.gmail.com \
|
||||
appindicatorsupport@rgcjonas.gmail.com \
|
||||
blur-my-shell@aunetx \
|
||||
caffeine@patapon.info \
|
||||
clipboard-indicator@tudmotu.com \
|
||||
Vitals@CoreCoding.com ; do
|
||||
gnome-extensions enable "$e" 2>/dev/null || true
|
||||
done
|
||||
# Dock estilo macOS abajo
|
||||
D=org.gnome.shell.extensions.dash-to-dock
|
||||
gsettings set $D dock-position 'BOTTOM' 2>/dev/null || true
|
||||
gsettings set $D extend-height false 2>/dev/null || true
|
||||
gsettings set $D dock-fixed false 2>/dev/null || true
|
||||
# autodesactivarse
|
||||
rm -f "$HOME/.config/autostart/firstboot-theme.desktop"
|
||||
EOS
|
||||
chmod +x "$USER_HOME/.local/bin/firstboot-theme.sh"
|
||||
|
||||
cat >"$USER_HOME/.config/autostart/firstboot-theme.desktop" <<EOS
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=First boot theme (GNOME)
|
||||
Exec=$USER_HOME/.local/bin/firstboot-theme.sh
|
||||
X-GNOME-Autostart-enabled=true
|
||||
EOS
|
||||
chown -R "$INSTALL_USER:$INSTALL_USER" "$USER_HOME/.local" "$USER_HOME/.config"
|
||||
|
||||
# --- chezmoi: dotfiles personales (repo configs) --------------------------
|
||||
echo ">> chezmoi init --apply (repo configs)..."
|
||||
install_aur chezmoi
|
||||
REMOTE="$GITEA/configs.git"
|
||||
[[ -n "${GITEA_TOKEN:-}" ]] && REMOTE="https://$INSTALL_USER:$GITEA_TOKEN@gitea.josevi.ovh/josevi/configs.git"
|
||||
as_user "export GIT_NAME='$GIT_NAME' GIT_EMAIL='$GIT_EMAIL'; \
|
||||
chezmoi init --apply '$REMOTE'"
|
||||
|
||||
# quitar el NOPASSWD temporal
|
||||
rm -f /etc/sudoers.d/99-setup-nopasswd
|
||||
echo ">> Configuración de GNOME completada."
|
||||
Reference in New Issue
Block a user