From 4e31a234703ba30b14d25d444aa6704ffc65c44e Mon Sep 17 00:00:00 2001 From: Mathias Schneider Date: Sat, 5 Sep 2026 12:59:33 +0200 Subject: [PATCH] term: rework of setup script --- AGENTS.md | 2 +- Makefile | 4 +- _install_skripte/install_terminal_pcks.sh | 73 ---------- term/packages.txt | 46 +++++++ term/setup.sh | 154 ++++++++++++++++++++++ 5 files changed, 203 insertions(+), 76 deletions(-) delete mode 100755 _install_skripte/install_terminal_pcks.sh create mode 100644 term/packages.txt create mode 100755 term/setup.sh diff --git a/AGENTS.md b/AGENTS.md index 435e720..8837464 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -15,7 +15,7 @@ Only entries that would be missed without explicit help are included. | Task | Command | Why it matters | |------|---------|----------------| -| **Install required programs** | `bash .install_skripte/install_terminal_pcks.sh`
`bash .install_skripte/install_basic_pcks.sh`
`bash .install_skripte/install_hypr_pcks.sh`
`bash .install_skripte/install_kreation_pcks.sh` | These scripts install Neovim, hyprland, VST runtime, and other utilities. | +| **Install required programs** | `bash term/setup.sh`
`bash .install_skripte/install_basic_pcks.sh`
`bash .install_skripte/install_hypr_pcks.sh`
`bash .install_skripte/install_kreation_pcks.sh` | These scripts install Neovim, hyprland, VST runtime, and other utilities. Edit `term/packages.txt` to add/remove terminal packages. | | **Link configuration directories** | `ln -s ~/.dotfiles/hypr/.config/hypr ~/.config/hypr`
`ln -s ~/.dotfiles/term/.config/nvim ~/.config/nvim` | The repository expects the configs to live in `~/.config`. | | **Add VST plugin** | Copy `kreation/.vst3/MT-PowerDrumKit.vst3` into your DAW’s plugins folder (usually `~/.vst`). | The repo contains a pre‑built VST for use in audio software. | diff --git a/Makefile b/Makefile index 6a2eb22..4ef81fd 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ # setup ist ein Kommando-Target (keine Datei) und soll immer ausgeführt werden. .PHONY: basic -termn: - bash _install_skripte_install_terminal_pcks.sh +term: + bash term/setup.sh stow term basic: term bash _install_skripte_install_basic_pcks.sh diff --git a/_install_skripte/install_terminal_pcks.sh b/_install_skripte/install_terminal_pcks.sh deleted file mode 100755 index fa30103..0000000 --- a/_install_skripte/install_terminal_pcks.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash - -# multilib aktivieren in /etc/pacman.conf -sudo sed -i.bak '/^#\[multilib\]/,+1 s/^#//' /etc/pacman.conf -# Für Noobs wie mich -# - erstellt Sicherheitskopie pacman.conf.bak vor der Änderung -# - sucht nach "[multilib]" -# - bezieht die nächste Zeile mit ein -# - Ersetzt ^# mit nüscht -> Kommentar entfernt :-) - -sudo pacman -Syu - -# Install yay -if pacman -Q yay &>/dev/null; then - echo "yay bereits installiert; fahre fort." -elif pacman -Si yay &>/dev/null; then - echo "Installiere yay mit pacman ..." - sudo pacman -S --needed yay -else - sudo pacman -S --needed base-devel git - echo "installiere yay via git ..." - git clone https://aur.archlinux.org/yay.git - ( - cd yay || { - echo "Fehler: CD in yay-Verzeichnis fehlgeschlagen"; - exit 1; - } - makepkg -si - ) - rm -rf yay -fi - -sudo pacman -S --needed \ - fish \ - vim \ - nvim \ - openssh \ - rclone \ - rsync \ - unison \ - stow \ - nodejs \ - npm \ - starship \ - fastfetch \ - tree-sitter-cli \ - python \ - python-pip \ - extra/ttf-jetbrains-mono-nerd \ - unzip \ - ruff \ - python-ruff \ - python-debugpy \ - chromium \ - selene \ - opencode \ - tmux \ - yazi \ - zoxide \ - fzf \ - locate \ - ttf-jetbrains-mono-nerd \ - ttf-font-awesome - -# fish as standard terminal -chsh -s /usr/bin/fish - -git clone https://github.com/jimeh/tmuxifier.git ~/.tmuxifier - -npm install -g vscode-js-debug -npm install -g eslint_d -ya pkg add yazi-rs/plugins:git -sudo updatedb diff --git a/term/packages.txt b/term/packages.txt new file mode 100644 index 0000000..685dd3e --- /dev/null +++ b/term/packages.txt @@ -0,0 +1,46 @@ +# --------------------------------------------------------------------------- +# Terminal package list for term/setup.sh +# +# Maintenance: +# - Add / remove packages on separate lines. +# - Lines starting with '#' and blank lines are ignored. +# - Use "@pacman", "@aur" or "@npm" markers to switch section. +# - The default section is @pacman. +# --------------------------------------------------------------------------- + +@pacman +fish +extra/kitty +neovim +openssh +rclone +rsync +unison +stow +nodejs +npm +starship +fastfetch +tree-sitter-cli +python +python-pip +unzip +ruff +python-ruff +python-debugpy +chromium +selene +tmux +yazi +zoxide +fzf +locate +ttf-jetbrains-mono-nerd +ttf-font-awesome + +@aur +opencode + +@npm +eslint_d +vscode-js-debug diff --git a/term/setup.sh b/term/setup.sh new file mode 100755 index 0000000..b491dad --- /dev/null +++ b/term/setup.sh @@ -0,0 +1,154 @@ +#!/bin/bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PACKAGES_FILE="$SCRIPT_DIR/packages.txt" + +# --------------------------------------------------------------------------- +# Enable multilib in /etc/pacman.conf (with a safety backup) +# --------------------------------------------------------------------------- +enable_multilib() { + sudo sed -i.bak '/^#\[multilib\]/,+1 s/^#//' /etc/pacman.conf +} + +# --------------------------------------------------------------------------- +# Ensure yay (AUR helper) is installed. +# --------------------------------------------------------------------------- +install_yay() { + if pacman -Q yay &>/dev/null; then + echo "yay bereits installiert; fahre fort." + return + fi + if pacman -Si yay &>/dev/null; then + echo "Installiere yay mit pacman ..." + sudo pacman -S --needed yay + return + fi + echo "installiere yay via git ..." + sudo pacman -S --needed base-devel git + local tmp + tmp="$(mktemp -d)" + git clone https://aur.archlinux.org/yay.git "$tmp/yay" + ( + cd "$tmp/yay" + makepkg -si + ) + rm -rf "$tmp" +} + +# --------------------------------------------------------------------------- +# Read packages.txt, split into pacman / aur / npm sections. +# --------------------------------------------------------------------------- +read_packages() { + local section="pacman" + local current + current="" + while IFS= read -r line || [[ -n "$line" ]]; do + current="${line%%#*}" + current="${current##*( )}" + current="${current%%*( )}" + [[ -z "$current" ]] && continue + case "$current" in + @pacman) section="pacman" ;; + @aur) section="aur" ;; + @npm) section="npm" ;; + *) + case "$section" in + pacman) pacman_pkgs+=("$current") ;; + aur) aur_pkgs+=("$current") ;; + npm) npm_pkgs+=("$current") ;; + esac + ;; + esac + done < "$PACKAGES_FILE" +} + +declare -a pacman_pkgs=() aur_pkgs=() npm_pkgs=() + +# --------------------------------------------------------------------------- +# Install sections. +# --------------------------------------------------------------------------- +install_pacman() { + if ((${#pacman_pkgs[@]})); then + echo "==> Installiere Pacman-Pakete: ${pacman_pkgs[*]}" + yay -S --needed "${pacman_pkgs[@]}" + fi +} + +install_aur() { + if ((${#aur_pkgs[@]})); then + echo "==> Installiere AUR-Pakete: ${aur_pkgs[*]}" + yay -S --needed "${aur_pkgs[@]}" + fi +} + +install_npm() { + if ((${#npm_pkgs[@]})); then + echo "==> Installiere globale npm-Pakete: ${npm_pkgs[*]}" + npm install -g "${npm_pkgs[@]}" + fi +} + +# --------------------------------------------------------------------------- +# Post-install configuration. +# --------------------------------------------------------------------------- +set_fish_default_shell() { + if command -v fish >/dev/null 2>&1; then + if [[ "$SHELL" != "/usr/bin/fish" ]]; then + echo "Setze fish als Standard-Shell ..." + chsh -s /usr/bin/fish + else + echo "fish ist bereits die Standard-Shell." + fi + else + echo "Warnung: fish wurde nicht installiert; ueberspringe chsh." + fi +} + +install_tmuxifier() { + if [[ -d "$HOME/.tmuxifier" ]]; then + echo "tmuxifier bereits installiert; fahre fort." + else + echo "Klone tmuxifier ..." + git clone https://github.com/jimeh/tmuxifier.git "$HOME/.tmuxifier" + fi +} + +add_yazi_git_plugin() { + if command -v yazi >/dev/null 2>&1 && command -v ya >/dev/null 2>&1; then + echo "Fuege yazi git-Plugin hinzu ..." + ya pkg add yazi-rs/plugins:git + fi +} + +# --------------------------------------------------------------------------- +# Main +# --------------------------------------------------------------------------- +main() { + echo "==> Aktiviere multilib ..." + enable_multilib + + echo "==> System aktualisieren ..." + sudo pacman -Syu + + echo "==> Sicherstelle yay ..." + install_yay + + echo "==> Lese Paketliste: $PACKAGES_FILE" + read_packages + + install_pacman + install_aur + install_npm + + set_fish_default_shell + install_tmuxifier + add_yazi_git_plugin + + echo "==> Aktualisiere locate-Datenbank ..." + sudo updatedb + + echo "Fertig. Starte ein neues Terminal, damit fish und die Umgebung greifen." +} + +main