chore: bootstrap lean sysadmin-chronicles repo

Import the runnable game code, content, docs, scripts, and repo guidance while leaving local agent state, dependency installs, build output, and backup copies out of the published tree.
This commit is contained in:
2026-05-02 11:49:07 -04:00
commit 0265afa054
252 changed files with 37574 additions and 0 deletions
+105
View File
@@ -0,0 +1,105 @@
#!/usr/bin/env bash
# suppress-maintenance-noise.sh — Reduce guest maintenance output noise.
#
# Suppresses on Debian/Ubuntu guests:
# - APT periodic background updates
# - MOTD dynamic scripts (package counts, landscape-sysinfo, news)
# - PAM motd modules (dynamic MOTD printed at login)
# - "X updates can be applied immediately" login banner
#
# Suppresses on Arch guests:
# - pkgfile update timer (if present)
# - quiet-mode marker for game to detect
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DRY_RUN=false
DOMAIN="${1:-}"
if [ -z "$DOMAIN" ]; then
echo "Usage: bash tools/vm/suppress-maintenance-noise.sh <domain> [--dry-run]"
exit 1
fi
if [[ "${2:-}" == "--dry-run" ]]; then
DRY_RUN=true
fi
source "$SCRIPT_DIR/lib/common.sh"
ensure_vm_tooling
tmp_script="$(mktemp)"
cat > "$tmp_script" <<'EOF'
# --- Debian/Ubuntu ---
if command -v apt-get >/dev/null 2>&1; then
# Disable APT background periodic tasks
mkdir -p /etc/apt/apt.conf.d
cat > /etc/apt/apt.conf.d/99sysadmin-chronicles-quiet <<'APT'
APT::Periodic::Enable "0";
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
APT::Periodic::Download-Upgradeable-Packages "0";
Acquire::Languages "none";
APT
# Disable dynamic MOTD scripts that show update counts, ads, news
if [ -d /etc/update-motd.d ]; then
chmod -x /etc/update-motd.d/* 2>/dev/null || true
# Preserve a minimal placeholder so PAM doesn't error
printf '#!/bin/sh\n' > /etc/update-motd.d/00-sysadmin-chronicles
chmod +x /etc/update-motd.d/00-sysadmin-chronicles
fi
# Remove static /etc/motd content if present
if [ -f /etc/motd ]; then
printf '' > /etc/motd
fi
# Disable PAM dynamic motd in sshd PAM config (suppresses update counts at login)
for pam_file in /etc/pam.d/sshd /etc/pam.d/login; do
if [ -f "$pam_file" ]; then
sed -i 's/^session\s\+optional\s\+pam_motd\.so/#&/' "$pam_file"
fi
done
# Suppress "X updates can be applied" from landscape-sysinfo / update-notifier
if [ -f /etc/landscape/client.conf ]; then
sed -i '/sysinfo/d' /etc/landscape/client.conf 2>/dev/null || true
fi
# Disable landscape-sysinfo if installed
if command -v landscape-sysinfo >/dev/null 2>&1; then
if [ -f /etc/landscape/client.conf ]; then
grep -q 'include_sysinfo_plugins' /etc/landscape/client.conf || \
printf '[sysinfo]\ninclude_sysinfo_plugins =\n' >> /etc/landscape/client.conf
else
mkdir -p /etc/landscape
printf '[sysinfo]\ninclude_sysinfo_plugins =\n' > /etc/landscape/client.conf
fi
fi
# Disable update-notifier login hint (Debian/Ubuntu)
if [ -d /etc/profile.d ]; then
for f in /etc/profile.d/update-notifier.sh /etc/profile.d/motd-news.sh; do
[ -f "$f" ] && chmod -x "$f" 2>/dev/null || true
done
fi
fi
# --- Arch Linux ---
if command -v pacman >/dev/null 2>&1; then
# Disable pkgfile update timer if present (produces periodic output)
if systemctl list-unit-files pkgfile-update.timer &>/dev/null; then
systemctl disable --now pkgfile-update.timer 2>/dev/null || true
fi
# Quiet-mode marker for game to detect
mkdir -p /etc/sysadmin-chronicles
printf 'managed=true\n' > /etc/sysadmin-chronicles/quiet-mode.conf
fi
EOF
info "Suppressing maintenance noise on ${DOMAIN}"
guest_run_sudo_script "$DOMAIN" "$tmp_script"
rm -f "$tmp_script"
ok "${DOMAIN}: maintenance noise suppressed"