diff --git a/setup-base-asahi.sh b/setup-base-asahi.sh index de5ff7c..160d140 100644 --- a/setup-base-asahi.sh +++ b/setup-base-asahi.sh @@ -2,7 +2,7 @@ # macbook-setup/setup-base-asahi.sh # Basis-Setup fuer Asahi Linux (Fedora Remix) auf Apple Silicon M1 # Fokus: Terminal-Umgebung (zsh, Tools, Screensaver) -# System-spezifisches (XFCE, HiDPI, WireGuard, Energie) wird vor Ort gemacht +# System-spezifisches (HiDPI, Energie) wird vor Ort gemacht # Verwendung: sudo bash setup-base-asahi.sh # Kann mehrfach ausgefuehrt werden (idempotent) @@ -22,7 +22,7 @@ echo " Terminal-Grundsetup" echo "============================================" # ── 1. sudoers ─────────────────────────────────────────────────────────── -echo -e "\n=== 1/7 sudoers ===" +echo -e "\n=== 1/8 sudoers ===" cat > /etc/sudoers <<'SUDOEOF' Defaults env_reset Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" @@ -38,24 +38,24 @@ chmod 440 /etc/sudoers.d/rene ok "sudoers: Linux-Standard + NOPASSWD fuer rene" # ── 2. Locale & Timezone ──────────────────────────────────────────────── -echo -e "\n=== 2/7 Locale & Timezone ===" +echo -e "\n=== 2/8 Locale & Timezone ===" dnf install -y glibc-langpack-de 2>/dev/null || true localectl set-locale LANG=de_DE.UTF-8 timedatectl set-timezone Europe/Berlin 2>/dev/null || true ok "Locale: de_DE.UTF-8, Timezone: Europe/Berlin" # ── 3. Sleep verhindern waehrend Installation ─────────────────────────── -echo -e "\n=== 3/7 Sleep verhindern ===" +echo -e "\n=== 3/8 Sleep verhindern ===" systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target 2>/dev/null || true ok "Sleep/Suspend deaktiviert (fuer Installation)" # ── 4. System aktualisieren ───────────────────────────────────────────── -echo -e "\n=== 4/7 System aktualisieren ===" +echo -e "\n=== 4/8 System aktualisieren ===" dnf upgrade -y || warn "dnf upgrade hatte Probleme" ok "System aktuell" # ── 5. Pakete installieren ────────────────────────────────────────────── -echo -e "\n=== 5/7 Pakete installieren ===" +echo -e "\n=== 5/8 Pakete installieren ===" # Basis-Tools dnf install -y \ @@ -103,8 +103,17 @@ if ! command -v asciiquarium &>/dev/null; then rm -rf /tmp/asciiquarium* fi -# ── 6. /etc/hosts ─────────────────────────────────────────────────────── -echo -e "\n=== 6/7 /etc/hosts ===" +# ── 6. WireGuard VPN ────────────────────────────────────────────────────── +echo -e "\n=== 6/8 WireGuard VPN ===" +dnf install -y wireguard-tools 2>/dev/null || true +if [[ -f /etc/wireguard/m1.conf ]] || nmcli connection show m1 &>/dev/null; then + ok "WireGuard m1 bereits konfiguriert" +else + warn "WireGuard: m1.conf nach /etc/wireguard/ kopieren, dann: nmcli connection import type wireguard file /etc/wireguard/m1.conf" +fi + +# ── 7. /etc/hosts ─────────────────────────────────────────────────────── +echo -e "\n=== 7/8 /etc/hosts ===" for entry in "10.47.11.10 dsm.motocamp.de" "10.47.11.23 git.motocamp.de"; do host="${entry##* }" if ! grep -q "$host" /etc/hosts; then @@ -115,8 +124,8 @@ for entry in "10.47.11.10 dsm.motocamp.de" "10.47.11.23 git.motocamp.de"; do fi done -# ── 7. Services & Shell ───────────────────────────────────────────────── -echo -e "\n=== 7/7 Services & Shell ===" +# ── 8. Services & Shell ───────────────────────────────────────────────── +echo -e "\n=== 8/8 Services & Shell ===" systemctl enable sshd 2>/dev/null || true systemctl start sshd 2>/dev/null || true @@ -136,4 +145,4 @@ echo "" echo "Naechste Schritte:" echo " 1. Ausloggen und als rene mit zsh neu einloggen" echo " 2. setup-desktop-asahi.sh ausfuehren (oh-my-zsh, Dotfiles, p10k)" -echo " 3. System-Setup (XFCE, HiDPI, WireGuard etc.) vor Ort machen" +echo " 3. WireGuard: m1.conf einrichten (falls noch nicht importiert)" diff --git a/setup-desktop-asahi.sh b/setup-desktop-asahi.sh index 38e40e1..0bde0ec 100644 --- a/setup-desktop-asahi.sh +++ b/setup-desktop-asahi.sh @@ -1,7 +1,7 @@ #!/bin/bash # macbook-setup/setup-desktop-asahi.sh # Desktop-Setup fuer Asahi Linux (Fedora Remix) auf Apple Silicon M1 -# Braucht eine laufende Desktop-Session (XFCE) — NICHT in chroot ausfuehren! +# Braucht eine laufende Desktop-Session (GNOME) — NICHT in chroot ausfuehren! # Verwendung: bash setup-desktop-asahi.sh # Wird automatisch beim ersten Login gestartet (via Autostart) @@ -86,6 +86,10 @@ else warn "PrusaSlicer Flatpak nicht verfuegbar fuer ARM64 — ggf. aus Source bauen" fi +# FreeCAD +flatpak install --user -y flathub org.freecad.FreeCAD +ok "FreeCAD installiert (Flatpak)" + # ── 6. PlatformIO (pipx) ──────────────────────────────────────────────── echo -e "\n=== 6/8 PlatformIO ===" if ! command -v pio &>/dev/null; then @@ -150,6 +154,13 @@ if [[ -f "$DOTFILES_DIR/zsh/install-zsh-dotfiles.sh" ]]; then ok "Dot-Files: .zshrc" fi +# Powerlevel10k Instant Prompt: quiet-Modus ganz oben in .zshrc +# Muss VOR dem oh-my-zsh source stehen, nicht in .p10k.zsh (wird dort ueberschrieben) +if [[ -f ~/.zshrc ]] && ! grep -q 'POWERLEVEL9K_INSTANT_PROMPT=quiet' ~/.zshrc; then + sed -i '1i typeset -g POWERLEVEL9K_INSTANT_PROMPT=quiet' ~/.zshrc + ok "Powerlevel10k Instant Prompt: quiet" +fi + # ~/.secrets fuer API-Keys (source in .zshrc eintragen) if ! grep -q 'source ~/.secrets' ~/.zshrc 2>/dev/null; then echo '' >> ~/.zshrc @@ -166,45 +177,42 @@ else warn ".p10k.zsh nicht im Dotfiles-Repo — beim ersten zsh-Start 'p10k configure' ausfuehren" fi -# ── 8. XFCE-Einstellungen ─────────────────────────────────────────────── -echo -e "\n=== 8/8 XFCE-Einstellungen ===" +# ── 8. GNOME-Einstellungen ─────────────────────────────────────────────── +echo -e "\n=== 8/8 GNOME-Einstellungen ===" -# Keyboard: XFCE soll System-Layout respektieren -if command -v xfconf-query &>/dev/null; then - xfconf-query -c keyboard-layout -p /Default/XkbDisable -n -t bool -s true 2>/dev/null || true - ok "XFCE Keyboard: System-Layout wird verwendet" -fi - -# Energieeinstellungen -if command -v xfconf-query &>/dev/null; then - xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-ac-off -s 0 --create -t int - xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-ac-sleep -s 0 --create -t int - xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/blank-on-ac -s 0 --create -t int - xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/blank-on-battery -s 5 --create -t int - xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-battery-sleep -s 6 --create -t int - xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-on-battery-off -s 7 --create -t int - ok "XFCE Power Manager konfiguriert" +# Dash to Panel aktivieren (Taskleiste oben statt Dock + Top Bar) +if gnome-extensions list 2>/dev/null | grep -q dash-to-panel; then + gnome-extensions enable dash-to-panel@jderose9.github.com 2>/dev/null || true + # Panel-Position: oben + dconf write /org/gnome/shell/extensions/dash-to-panel/panel-positions '"{\"0\":\"TOP\"}"' + dconf write /org/gnome/shell/extensions/dash-to-panel/panel-sizes '"{\"0\":32}"' + ok "Dash to Panel aktiviert (oben, 32px)" else - warn "xfconf-query nicht gefunden — XFCE Energieeinstellungen uebersprungen" + warn "Dash to Panel nicht installiert — mit 'sudo dnf install gnome-shell-extension-dash-to-panel' nachinstallieren" fi -# XFCE Terminal: MesloLGS NF als Schriftart setzen -XFCE_TERM_RC="$HOME/.config/xfce4/terminal/terminalrc" -if [[ -d "$HOME/.config/xfce4" ]]; then - mkdir -p "$(dirname "$XFCE_TERM_RC")" - if [[ -f "$XFCE_TERM_RC" ]]; then - sed -i 's/^FontName=.*/FontName=MesloLGS NF 11/' "$XFCE_TERM_RC" 2>/dev/null || true - else - cat > "$XFCE_TERM_RC" <<'TERMEOF' -[Configuration] -FontName=MesloLGS NF 11 -MiscAlwaysShowTabs=FALSE -MiscBell=FALSE -MiscDefaultGeometry=120x35 -ScrollingBar=TERMINAL_SCROLLBAR_NONE -TERMEOF - fi - ok "XFCE Terminal: MesloLGS NF Schriftart" +# Energieeinstellungen: am Netzteil nicht dimmen/ausschalten +gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing' +gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 900 +gsettings set org.gnome.desktop.session idle-delay 300 +ok "GNOME Power: Batterie-Sleep 15min, Idle-Dimming 5min, AC kein Sleep" + +# Uhr: 24h-Format mit Datum und Wochentag +gsettings set org.gnome.desktop.interface clock-format '24h' +gsettings set org.gnome.desktop.interface clock-show-date true +gsettings set org.gnome.desktop.interface clock-show-weekday true +ok "GNOME Uhr: 24h mit Datum und Wochentag" + +# Batterie-Prozent anzeigen +gsettings set org.gnome.desktop.interface show-battery-percentage true +ok "GNOME Batterie-Prozent angezeigt" + +# GNOME Terminal: MesloLGS NF als Schriftart setzen +GNOME_TERM_PROFILE=$(gsettings get org.gnome.Terminal.ProfilesList default 2>/dev/null | tr -d "'") +if [[ -n "$GNOME_TERM_PROFILE" ]]; then + dconf write /org/gnome/terminal/legacy/profiles:/:$GNOME_TERM_PROFILE/use-system-font false + dconf write /org/gnome/terminal/legacy/profiles:/:$GNOME_TERM_PROFILE/font "'MesloLGS NF 11'" + ok "GNOME Terminal: MesloLGS NF 11" fi # ── Autostart entfernen ───────────────────────────────────────────────── @@ -224,8 +232,8 @@ warn "Noch manuell erledigen:" echo " 1. Synology Drive Client installieren (falls ARM64-Version verfuegbar)" echo " 2. Thunderbird starten -> Profil aus Synology Drive einbinden" echo " 3. Brave starten -> Synchronisation einrichten" -echo " 4. Falls p10k-Icons fehlen: Terminal-Schriftart auf 'MesloLGS NF' setzen" -echo " 5. API-Key aus Bitwarden in ~/.secrets eintragen:" +echo " 4. API-Key aus Bitwarden in ~/.secrets eintragen:" echo " echo 'export ANTHROPIC_API_KEY=\"sk-ant-...\"' > ~/.secrets && chmod 600 ~/.secrets" -echo " 6. Falls PrusaSlicer fehlt: aus Source bauen (kein ARM64-Flatpak)" -echo " 7. PlatformIO testen: ESP32-Toolchains evtl. nur x86 verfuegbar" +echo " 5. Falls PrusaSlicer fehlt: aus Source bauen (kein ARM64-Flatpak)" +echo " 6. PlatformIO testen: ESP32-Toolchains evtl. nur x86 verfuegbar" +echo " 7. Dash to Panel konfigurieren: Rechtsklick auf Leiste -> Einstellungen"