Asahi-Skripte: GNOME-Desktop, WireGuard, FreeCAD, p10k-Fix
setup-base-asahi.sh: - WireGuard-Setup (wireguard-tools + m1.conf Hinweis) - Header bereinigt, Nummerierung auf 1-8 setup-desktop-asahi.sh: - XFCE-Block durch GNOME-Einstellungen ersetzt (Dash to Panel, Power, Uhr 24h, Batterie-%, Terminal-Font) - FreeCAD als Flatpak - Powerlevel10k Instant Prompt quiet-Fix
This commit is contained in:
parent
b27d5c81c1
commit
3f33bdf776
2 changed files with 68 additions and 51 deletions
|
|
@ -2,7 +2,7 @@
|
||||||
# macbook-setup/setup-base-asahi.sh
|
# macbook-setup/setup-base-asahi.sh
|
||||||
# Basis-Setup fuer Asahi Linux (Fedora Remix) auf Apple Silicon M1
|
# Basis-Setup fuer Asahi Linux (Fedora Remix) auf Apple Silicon M1
|
||||||
# Fokus: Terminal-Umgebung (zsh, Tools, Screensaver)
|
# 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
|
# Verwendung: sudo bash setup-base-asahi.sh
|
||||||
# Kann mehrfach ausgefuehrt werden (idempotent)
|
# Kann mehrfach ausgefuehrt werden (idempotent)
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ echo " Terminal-Grundsetup"
|
||||||
echo "============================================"
|
echo "============================================"
|
||||||
|
|
||||||
# ── 1. sudoers ───────────────────────────────────────────────────────────
|
# ── 1. sudoers ───────────────────────────────────────────────────────────
|
||||||
echo -e "\n=== 1/7 sudoers ==="
|
echo -e "\n=== 1/8 sudoers ==="
|
||||||
cat > /etc/sudoers <<'SUDOEOF'
|
cat > /etc/sudoers <<'SUDOEOF'
|
||||||
Defaults env_reset
|
Defaults env_reset
|
||||||
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
|
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"
|
ok "sudoers: Linux-Standard + NOPASSWD fuer rene"
|
||||||
|
|
||||||
# ── 2. Locale & Timezone ────────────────────────────────────────────────
|
# ── 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
|
dnf install -y glibc-langpack-de 2>/dev/null || true
|
||||||
localectl set-locale LANG=de_DE.UTF-8
|
localectl set-locale LANG=de_DE.UTF-8
|
||||||
timedatectl set-timezone Europe/Berlin 2>/dev/null || true
|
timedatectl set-timezone Europe/Berlin 2>/dev/null || true
|
||||||
ok "Locale: de_DE.UTF-8, Timezone: Europe/Berlin"
|
ok "Locale: de_DE.UTF-8, Timezone: Europe/Berlin"
|
||||||
|
|
||||||
# ── 3. Sleep verhindern waehrend Installation ───────────────────────────
|
# ── 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
|
systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target 2>/dev/null || true
|
||||||
ok "Sleep/Suspend deaktiviert (fuer Installation)"
|
ok "Sleep/Suspend deaktiviert (fuer Installation)"
|
||||||
|
|
||||||
# ── 4. System aktualisieren ─────────────────────────────────────────────
|
# ── 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"
|
dnf upgrade -y || warn "dnf upgrade hatte Probleme"
|
||||||
ok "System aktuell"
|
ok "System aktuell"
|
||||||
|
|
||||||
# ── 5. Pakete installieren ──────────────────────────────────────────────
|
# ── 5. Pakete installieren ──────────────────────────────────────────────
|
||||||
echo -e "\n=== 5/7 Pakete installieren ==="
|
echo -e "\n=== 5/8 Pakete installieren ==="
|
||||||
|
|
||||||
# Basis-Tools
|
# Basis-Tools
|
||||||
dnf install -y \
|
dnf install -y \
|
||||||
|
|
@ -103,8 +103,17 @@ if ! command -v asciiquarium &>/dev/null; then
|
||||||
rm -rf /tmp/asciiquarium*
|
rm -rf /tmp/asciiquarium*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── 6. /etc/hosts ───────────────────────────────────────────────────────
|
# ── 6. WireGuard VPN ──────────────────────────────────────────────────────
|
||||||
echo -e "\n=== 6/7 /etc/hosts ==="
|
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
|
for entry in "10.47.11.10 dsm.motocamp.de" "10.47.11.23 git.motocamp.de"; do
|
||||||
host="${entry##* }"
|
host="${entry##* }"
|
||||||
if ! grep -q "$host" /etc/hosts; then
|
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
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# ── 7. Services & Shell ─────────────────────────────────────────────────
|
# ── 8. Services & Shell ─────────────────────────────────────────────────
|
||||||
echo -e "\n=== 7/7 Services & Shell ==="
|
echo -e "\n=== 8/8 Services & Shell ==="
|
||||||
systemctl enable sshd 2>/dev/null || true
|
systemctl enable sshd 2>/dev/null || true
|
||||||
systemctl start sshd 2>/dev/null || true
|
systemctl start sshd 2>/dev/null || true
|
||||||
|
|
||||||
|
|
@ -136,4 +145,4 @@ echo ""
|
||||||
echo "Naechste Schritte:"
|
echo "Naechste Schritte:"
|
||||||
echo " 1. Ausloggen und als rene mit zsh neu einloggen"
|
echo " 1. Ausloggen und als rene mit zsh neu einloggen"
|
||||||
echo " 2. setup-desktop-asahi.sh ausfuehren (oh-my-zsh, Dotfiles, p10k)"
|
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)"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# macbook-setup/setup-desktop-asahi.sh
|
# macbook-setup/setup-desktop-asahi.sh
|
||||||
# Desktop-Setup fuer Asahi Linux (Fedora Remix) auf Apple Silicon M1
|
# 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
|
# Verwendung: bash setup-desktop-asahi.sh
|
||||||
# Wird automatisch beim ersten Login gestartet (via Autostart)
|
# Wird automatisch beim ersten Login gestartet (via Autostart)
|
||||||
|
|
||||||
|
|
@ -86,6 +86,10 @@ else
|
||||||
warn "PrusaSlicer Flatpak nicht verfuegbar fuer ARM64 — ggf. aus Source bauen"
|
warn "PrusaSlicer Flatpak nicht verfuegbar fuer ARM64 — ggf. aus Source bauen"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# FreeCAD
|
||||||
|
flatpak install --user -y flathub org.freecad.FreeCAD
|
||||||
|
ok "FreeCAD installiert (Flatpak)"
|
||||||
|
|
||||||
# ── 6. PlatformIO (pipx) ────────────────────────────────────────────────
|
# ── 6. PlatformIO (pipx) ────────────────────────────────────────────────
|
||||||
echo -e "\n=== 6/8 PlatformIO ==="
|
echo -e "\n=== 6/8 PlatformIO ==="
|
||||||
if ! command -v pio &>/dev/null; then
|
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"
|
ok "Dot-Files: .zshrc"
|
||||||
fi
|
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)
|
# ~/.secrets fuer API-Keys (source in .zshrc eintragen)
|
||||||
if ! grep -q 'source ~/.secrets' ~/.zshrc 2>/dev/null; then
|
if ! grep -q 'source ~/.secrets' ~/.zshrc 2>/dev/null; then
|
||||||
echo '' >> ~/.zshrc
|
echo '' >> ~/.zshrc
|
||||||
|
|
@ -166,45 +177,42 @@ else
|
||||||
warn ".p10k.zsh nicht im Dotfiles-Repo — beim ersten zsh-Start 'p10k configure' ausfuehren"
|
warn ".p10k.zsh nicht im Dotfiles-Repo — beim ersten zsh-Start 'p10k configure' ausfuehren"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── 8. XFCE-Einstellungen ───────────────────────────────────────────────
|
# ── 8. GNOME-Einstellungen ───────────────────────────────────────────────
|
||||||
echo -e "\n=== 8/8 XFCE-Einstellungen ==="
|
echo -e "\n=== 8/8 GNOME-Einstellungen ==="
|
||||||
|
|
||||||
# Keyboard: XFCE soll System-Layout respektieren
|
# Dash to Panel aktivieren (Taskleiste oben statt Dock + Top Bar)
|
||||||
if command -v xfconf-query &>/dev/null; then
|
if gnome-extensions list 2>/dev/null | grep -q dash-to-panel; then
|
||||||
xfconf-query -c keyboard-layout -p /Default/XkbDisable -n -t bool -s true 2>/dev/null || true
|
gnome-extensions enable dash-to-panel@jderose9.github.com 2>/dev/null || true
|
||||||
ok "XFCE Keyboard: System-Layout wird verwendet"
|
# Panel-Position: oben
|
||||||
fi
|
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}"'
|
||||||
# Energieeinstellungen
|
ok "Dash to Panel aktiviert (oben, 32px)"
|
||||||
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"
|
|
||||||
else
|
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
|
fi
|
||||||
|
|
||||||
# XFCE Terminal: MesloLGS NF als Schriftart setzen
|
# Energieeinstellungen: am Netzteil nicht dimmen/ausschalten
|
||||||
XFCE_TERM_RC="$HOME/.config/xfce4/terminal/terminalrc"
|
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
|
||||||
if [[ -d "$HOME/.config/xfce4" ]]; then
|
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-timeout 900
|
||||||
mkdir -p "$(dirname "$XFCE_TERM_RC")"
|
gsettings set org.gnome.desktop.session idle-delay 300
|
||||||
if [[ -f "$XFCE_TERM_RC" ]]; then
|
ok "GNOME Power: Batterie-Sleep 15min, Idle-Dimming 5min, AC kein Sleep"
|
||||||
sed -i 's/^FontName=.*/FontName=MesloLGS NF 11/' "$XFCE_TERM_RC" 2>/dev/null || true
|
|
||||||
else
|
# Uhr: 24h-Format mit Datum und Wochentag
|
||||||
cat > "$XFCE_TERM_RC" <<'TERMEOF'
|
gsettings set org.gnome.desktop.interface clock-format '24h'
|
||||||
[Configuration]
|
gsettings set org.gnome.desktop.interface clock-show-date true
|
||||||
FontName=MesloLGS NF 11
|
gsettings set org.gnome.desktop.interface clock-show-weekday true
|
||||||
MiscAlwaysShowTabs=FALSE
|
ok "GNOME Uhr: 24h mit Datum und Wochentag"
|
||||||
MiscBell=FALSE
|
|
||||||
MiscDefaultGeometry=120x35
|
# Batterie-Prozent anzeigen
|
||||||
ScrollingBar=TERMINAL_SCROLLBAR_NONE
|
gsettings set org.gnome.desktop.interface show-battery-percentage true
|
||||||
TERMEOF
|
ok "GNOME Batterie-Prozent angezeigt"
|
||||||
fi
|
|
||||||
ok "XFCE Terminal: MesloLGS NF Schriftart"
|
# 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
|
fi
|
||||||
|
|
||||||
# ── Autostart entfernen ─────────────────────────────────────────────────
|
# ── Autostart entfernen ─────────────────────────────────────────────────
|
||||||
|
|
@ -224,8 +232,8 @@ warn "Noch manuell erledigen:"
|
||||||
echo " 1. Synology Drive Client installieren (falls ARM64-Version verfuegbar)"
|
echo " 1. Synology Drive Client installieren (falls ARM64-Version verfuegbar)"
|
||||||
echo " 2. Thunderbird starten -> Profil aus Synology Drive einbinden"
|
echo " 2. Thunderbird starten -> Profil aus Synology Drive einbinden"
|
||||||
echo " 3. Brave starten -> Synchronisation einrichten"
|
echo " 3. Brave starten -> Synchronisation einrichten"
|
||||||
echo " 4. Falls p10k-Icons fehlen: Terminal-Schriftart auf 'MesloLGS NF' setzen"
|
echo " 4. API-Key aus Bitwarden in ~/.secrets eintragen:"
|
||||||
echo " 5. API-Key aus Bitwarden in ~/.secrets eintragen:"
|
|
||||||
echo " echo 'export ANTHROPIC_API_KEY=\"sk-ant-...\"' > ~/.secrets && chmod 600 ~/.secrets"
|
echo " echo 'export ANTHROPIC_API_KEY=\"sk-ant-...\"' > ~/.secrets && chmod 600 ~/.secrets"
|
||||||
echo " 6. Falls PrusaSlicer fehlt: aus Source bauen (kein ARM64-Flatpak)"
|
echo " 5. Falls PrusaSlicer fehlt: aus Source bauen (kein ARM64-Flatpak)"
|
||||||
echo " 7. PlatformIO testen: ESP32-Toolchains evtl. nur x86 verfuegbar"
|
echo " 6. PlatformIO testen: ESP32-Toolchains evtl. nur x86 verfuegbar"
|
||||||
|
echo " 7. Dash to Panel konfigurieren: Rechtsklick auf Leiste -> Einstellungen"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue