Compare commits

...

10 Commits

Author SHA1 Message Date
70dd5613b2 Added editor aliases
Removed git alias, as I use ssh now on Darwin
2026-02-12 08:10:34 +01:00
2718b03ab7 Aliase für git hinzugefügt 2026-02-10 16:40:18 +01:00
25b2a4478a Token caching 2026-02-10 16:24:38 +01:00
4fe26a23af Token caching 2026-02-10 16:17:29 +01:00
b4658f3279 README.de.md aktualisiert 2026-02-10 13:34:55 +00:00
6d6a0772e2 README.de.md aktualisiert 2026-02-10 13:28:03 +00:00
7893e8546b Weiterentwicklung 2026-02-10 14:24:47 +01:00
769b6bc936 Weiterentwicklung 2026-02-10 14:24:38 +01:00
4c585d24bd template aufgeräumt 2026-02-10 14:03:30 +01:00
aedd6a2258 install.sh erweitert um error checks und so 2026-02-10 14:03:15 +01:00
9 changed files with 222 additions and 159 deletions

View File

@@ -15,11 +15,13 @@ sudo apt update && sudo apt upgrade -y
sudo apt install -y jq curl git micro
# Bitwarden CLI installieren (via NPM oder direktes Binary)
# Empfohlener Weg via NPM:
# via NPM
sudo apt install -y nodejs npm
sudo npm install -g @bitwarden/cli
```
Bitwarden kann auch als bin direkt installiert werden. Lade das zip von [https://bitwarden.com/help/cli/] herunter und entpacke das enthaltene `bw` an einen Ort im `$PATH`, vorzugsweise `~/.local/bin`
## 2. Bitwarden Initialisierung
Damit der Git-Helper funktioniert, muss die CLI mit deinem Server verbunden sein.
@@ -66,3 +68,29 @@ Damit das Skript auf dem Rock 5B nicht abbricht, kannst du am Anfang prüfen, ob
command -v bw >/dev/null 2>&1 || echo "⚠️ Bitwarden CLI fehlt!"
command -v jq >/dev/null 2>&1 || echo "⚠️ jq fehlt!"
```
## 5. Zusatz-Tools (Optional, aber empfohlen)
### eza (Moderner ls-Ersatz)
Um die erweiterten Aliase mit Icons und Git-Status nutzen zu können, muss `eza` installiert sein.
#### macOS (via Homebrew)
```bash
brew install eza
```
#### Armbian/Debian/Ubuntu (via offiziellen Repos)
Nur falls nicht in den Standard-Repos enthalten:
```bash
sudo mkdir -p /etc/apt/keyrings
wget -qO- [https://raw.githubusercontent.com/eza-community/eza/main/deb.asc](https://raw.githubusercontent.com/eza-community/eza/main/deb.asc) | sudo gpg --dearmor -o /etc/apt/keyrings/gza.gpg
echo "deb [signed-by=/etc/apt/keyrings/gza.gpg] [http://deb.gza.com/dev/](http://deb.gza.com/dev/) /" | sudo tee /etc/apt/sources.list.d/gza.list
sudo apt update
```
Dann:
```bash
sudo apt install -y eza
```
#### Nerd Fonts (Für Icons im Terminal)
**Empfehlung:** ```FiraCode Nerd Font Mono``` von [nerdfonts.com] herunterladen und installieren.

View File

@@ -1,21 +1,43 @@
#!/usr/bin/env bash
if [ "$1" = "get" ]; then
# Prüfen, ob die Session-Variable da ist
if [ -z "$BW_SESSION" ]; then
echo "FEHLER: Bitwarden ist gesperrt! Bitte 'unlock' ausführen." >&2
exit 1
CACHE_FILE="/tmp/git_bw_token_$USER"
TOKEN_NAME="Token"
get_credentials() {
# 1. Versuch: Cache laden
if [ -f "$CACHE_FILE" ]; then
cat "$CACHE_FILE"
return
fi
# Das gesamte Item einmal holen, um nicht mehrfach anfragen zu müssen
ITEM_JSON=$(bw get item gitea.iten.pro 2>/dev/null)
# 2. Versuch: Bitwarden abfragen
if [ -n "$BW_SESSION" ]; then
ITEM_JSON=$(bw get item gitea.iten.pro 2>/dev/null)
if [ -n "$ITEM_JSON" ]; then
# Benutzername extrahieren
USER=$(echo "$ITEM_JSON" | jq -r '.login.username')
# Token aus den Custom Fields extrahieren
TOKEN=$(echo "$ITEM_JSON" | jq -r '.fields[] | select(.name=="Token") | .value')
if [ -n "$ITEM_JSON" ]; then
# Wir nutzen BW_USER, um die System-Variable $USER nicht zu überschreiben
BW_USER=$(echo "$ITEM_JSON" | jq -r '.login.username')
echo "username=$USER"
echo "password=$TOKEN"
# Korrekte Übergabe der Variable an jq via --arg
TOKEN=$(echo "$ITEM_JSON" | jq -r --arg TNAME "$TOKEN_NAME" '.fields[] | select(.name==$TNAME) | .value')
if [ -n "$TOKEN" ] && [ "$TOKEN" != "null" ]; then
# Hier die Variablen nutzen, die wir oben gefüllt haben
OUT="username=$BW_USER\npassword=$TOKEN"
echo -e "$OUT" > "$CACHE_FILE"
chmod 600 "$CACHE_FILE"
echo -e "$OUT"
return
fi
fi
fi
fi
# Fehlermeldung nur, wenn kein Cache da war und BW Abfrage scheiterte
printf "\033[1;31mFEHLER:\033[0m Bitwarden ist gesperrt oder Token nicht gefunden! Bitte '\033[1munlock\033[22m' ausführen.\n" >&2
exit 1
}
case "$1" in
get) get_credentials ;;
store|erase) ;;
esac

View File

@@ -1,21 +1,67 @@
#!/usr/bin/env bash
# 1. Plugins installieren (falls nicht vorhanden)
ZSH_CUSTOM=${ZSH_CUSTOM:-~/.oh-my-zsh/custom}
mkdir -p "$ZSH_CUSTOM/plugins"
# Farben für die Ausgabe
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
plugins=(zsh-autosuggestions zsh-syntax-highlighting zsh-completions)
for p in "${plugins[@]}"; do
if [ ! -d "$ZSH_CUSTOM/plugins/$p" ]; then
echo "Installiere $p..."
git clone "https://github.com/zsh-users/$p" "$ZSH_CUSTOM/plugins/$p"
echo -e "${BLUE}🚀 Starte Dotfiles Installation...${NC}"
# 1. Prüfen auf Basistools
echo -e "${BLUE}Prüfe Abhängigkeiten...${NC}"
for tool in bw jq git zsh; do
if ! command -v $tool &> /dev/null; then
echo -e "${YELLOW}⚠️ $tool ist nicht installiert. Bitte installiere es zuerst.${NC}"
fi
done
# 2. Symlinks setzen
ln -sf ~/dotfiles/zsh_func_d ~/.zsh_func_d
# 2. Oh-My-Zsh installieren, falls nicht vorhanden
if [ ! -d "$HOME/.oh-my-zsh" ]; then
echo -e "${BLUE}Installiere Oh-My-Zsh...${NC}"
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
else
echo -e "${GREEN}✅ Oh-My-Zsh ist bereits installiert.${NC}"
fi
# 3. ZSH Plugins installieren
ZSH_CUSTOM=${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}
mkdir -p "$ZSH_CUSTOM/plugins"
plugins=(
"zsh-autosuggestions|https://github.com/zsh-users/zsh-autosuggestions"
"zsh-syntax-highlighting|https://github.com/zsh-users/zsh-syntax-highlighting"
"zsh-completions|https://github.com/zsh-users/zsh-completions"
)
for p in "${plugins[@]}"; do
name="${p%%|*}"
url="${p#*|}"
if [ ! -d "$ZSH_CUSTOM/plugins/$name" ]; then
echo -e "${BLUE}Installiere Plugin: $name...${NC}"
git clone "$url" "$ZSH_CUSTOM/plugins/$name"
else
echo -e "${GREEN}✅ Plugin $name ist bereits da.${NC}"
fi
done
# 4. Symlinks setzen
echo -e "${BLUE}Setze Symlinks...${NC}"
# .zshrc Vorlage (wir überschreiben die Standard-.zshrc)
ln -sf ~/dotfiles/zshrc_template ~/.zshrc
# Funktionen Ordner
ln -sfn ~/dotfiles/zsh_func_d ~/.zsh_func_d
# Git-Helper
mkdir -p ~/.local/bin
ln -sf ~/dotfiles/bin/git-bw-helper ~/.local/bin/git-bw-helper
chmod +x ~/dotfiles/bin/git-bw-helper
echo "✅ Installation abgeschlossen! Bitte 'source ~/.zshrc' ausführen."
# 5. Git Konfiguration für Gitea
echo -e "${BLUE}Konfiguriere Git-Helper für Gitea...${NC}"
git config --global --unset-all credential.https://gitea.iten.pro.helper
git config --global --add credential.https://gitea.iten.pro.helper '!git-bw-helper'
echo -e "${GREEN}✨ Installation abgeschlossen! ✨${NC}"
echo -e "${YELLOW}Bitte führe 'source ~/.zshrc' aus oder starte das Terminal neu.${NC}"

View File

@@ -9,7 +9,8 @@ unlock() {
}
lock() {
rm -f "/tmp/git_bw_token_$USER"
bw lock > /dev/null
unset BW_SESSION
echo "🔒 Tresor gesperrt und Session gelöscht."
echo "🔒 Tresor gesperrt, Cache geleert und Session gelöscht."
}

7
zsh_func_d/darwin.zsh Normal file
View File

@@ -0,0 +1,7 @@
# Aliasses, die nur auf MacOS gebraucht werden.
if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS spezifisch
alias nrf-env="export PATH='/opt/nordic/ncs/toolchains/322ac893fe/bin:\$PATH'"
# git alias ist nötig, da unter Sequoia sonst git http auf lokale server nicht mehr funktioniert
# alias git="/usr/bin/git"
fi

View File

@@ -0,0 +1,7 @@
if (( $+commands[micro] )); then
alias nano="micro"
alias vi="micro"
alias vim="micro"
export EDITOR="micro"
export VISUAL="micro"
fi

13
zsh_func_d/git_alias.zsh Normal file
View File

@@ -0,0 +1,13 @@
if [ -x "$(command -v git)" ]; then
alias gs="git status -sb"
alias gss="eza --long --header --git --icons"
alias gl="git log --oneline --graph --decorate"
alias gp="git push"
alias gpf="git push --force-with-lease" # Die sichere Variante von force
alias glp="git pull"
alias gd="git diff"
alias gc="git commit -v"
alias gca="git commit -v -a"
alias gtoday="git log --since='00:00:00' --all-match --format='%C(bold blue)%as%Creset %C(yellow)%h%Creset %s'"
alias glol="git log --graph --pretty=format:'%C(yellow)%h%Creset -%C(auto)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
fi

33
zsh_func_d/ls.zsh Normal file
View File

@@ -0,0 +1,33 @@
# --- eza (Modern ls) Konfiguration ---
if command -v eza >/dev/null 2>&1; then
# Basis-Befehl mit Icons und sinnvoller Sortierung
alias ls='eza --icons --group-directories-first'
# Deine spezifischen Wünsche:
alias ll='eza -lh --icons --git --group-directories-first'
alias la='eza -a --icons --group-directories-first'
alias lla='eza -lah --icons --git --group-directories-first'
# Spezial-Filter:
alias ldot='eza -ld --icons .*' # Nur Dotfiles
alias lsize='eza -lh --icons --sort=size' # Sortiert nach Größe
alias ltime='eza -lh --icons --sort=modified' # Sortiert nach Zeit
alias ldir='eza -d --icons */' # Nur Verzeichnisse
alias lignore='eza -lh --icons --git-ignore --git' # Nur gitignore
# Bonus: Baumansicht (ersetzt 'tree')
alias lt='eza --tree --level=2 --icons'
else
# Fallback auf Standard ls, falls eza nicht installiert ist
alias lla="ls -lah"
alias ldot='ls -ld .*'
alias lsize='ls -lhS'
alias ltime='ls -lht'
alias ldir='ls -d */'
if [[ "$OSTYPE" == "darwin"* ]]; then
alias ls='ls -G'
else
alias ls='ls --color=auto'
fi
fi

View File

@@ -1,91 +1,31 @@
# If you come from bash you might have to change your $PATH.
# export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH
# Path to your Oh My Zsh installation.
# --- OH MY ZSH SETUP ---
export ZSH="$HOME/.oh-my-zsh"
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time Oh My Zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
# ZSH_THEME="robbyrussell"
ZSH_THEME="agnoster"
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
# Plugins dynamisch nach Plattform laden
plugins=(git common-aliases)
# Uncomment the following line to use case-sensitive completion.
# CASE_SENSITIVE="true"
if [[ "$OSTYPE" == "darwin"* ]]; then
plugins+=(macos brew)
fi
# Uncomment the following line to use hyphen-insensitive completion.
# Case-sensitive completion must be off. _ and - will be interchangeable.
# HYPHEN_INSENSITIVE="true"
# Uncomment one of the following lines to change the auto-update behavior
# zstyle ':omz:update' mode disabled # disable automatic updates
# zstyle ':omz:update' mode auto # update automatically without asking
# zstyle ':omz:update' mode reminder # just remind me to update when it's time
# Uncomment the following line to change how often to auto-update (in days).
# zstyle ':omz:update' frequency 13
# Uncomment the following line if pasting URLs and other text is messed up.
# DISABLE_MAGIC_FUNCTIONS="true"
# Uncomment the following line to disable colors in ls.
# DISABLE_LS_COLORS="true"
# Uncomment the following line to disable auto-setting terminal title.
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f"
# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765)
# COMPLETION_WAITING_DOTS="true"
# Uncomment the following line if you want to disable marking untracked files
# under VCS as dirty. This makes repository status check for large repositories
# much, much faster.
# DISABLE_UNTRACKED_FILES_DIRTY="true"
# Uncomment the following line if you want to change the command execution time
# stamp shown in the history command output.
# You can set one of the optional three formats:
# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd"
# or set a custom format using the strftime function format specifications,
# see 'man strftime' for details.
# HIST_STAMPS="mm/dd/yyyy"
# Would you like to use another custom folder than $ZSH/custom?
# ZSH_CUSTOM=/path/to/new-custom-folder
# Which plugins would you like to load?
# Standard plugins can be found in $ZSH/plugins/
# Custom plugins may be added to $ZSH_CUSTOM/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(
git
brew
macos
common-aliases
zsh-autosuggestions
plugins+=(
zsh-completions
zsh-autosuggestions
zsh-syntax-highlighting
)
# Wichtig: zsh-completions FPATH setzen vor OMZ source
fpath+=${ZSH_CUSTOM:-${ZSH:-~/.oh-my-zsh}/custom}/plugins/zsh-completions/src
source $ZSH/oh-my-zsh.sh
# User configuration
# --- SYSTEM CONFIG ---
setopt INTERACTIVE_COMMENTS
export EDITOR=micro
export VISUAL=micro
# Home & End keys for SSH connections
# Keybindings für Home/End (wichtig für SSH & Rock 5B)
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
bindkey "\eOH" beginning-of-line
@@ -93,25 +33,26 @@ bindkey "\eOF" end-of-line
bindkey "\e[H" beginning-of-line
bindkey "\e[F" end-of-line
# Allow comments directly in shell input
setopt INTERACTIVE_COMMENTS
# --- PATH CONFIG (Universal) ---
export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"
export PATH="$PATH:/Users/edi/.local/bin"
export PATH="$PATH:$HOME/flutter/bin"
export PATH=$PATH:$(go env GOPATH)/bin
export GOOGLE_API_KEY="AIzaSyCEb9lPmXWypNejqDTvO1l5QL3N_1-KuZA"
# Flutter (nur wenn Verzeichnis existiert)
if [ -d "$HOME/flutter/bin" ]; then
export PATH="$PATH:$HOME/flutter/bin"
fi
# Go (Universal)
if command -v go &>/dev/null; then
export PATH="$PATH:$(go env GOPATH)/bin"
fi
# Android SDK
export ANDROID_HOME=$HOME/Android/sdk
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/emulator
if [ -d "$ANDROID_HOME" ]; then
export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/emulator"
fi
export EDITOR=micro
export VISUAL=micro
# Autocompletion setup
# Schnellerer Shell-Start durch Caching der Completion-Datenbank
# --- COMPLETION CACHING ---
autoload -Uz compinit
if [[ -n ${ZDOTDIR:-$HOME}/.zcompdump(#qN.mh+24) ]]; then
compinit
@@ -120,46 +61,11 @@ else
fi
zstyle ':completion:*' menu select
# export MANPATH="/usr/local/man:$MANPATH"
# You may need to manually set your language environment
# export LANG=en_US.UTF-8
# Preferred editor for local and remote sessions
# if [[ -n $SSH_CONNECTION ]]; then
# export EDITOR='vim'
# else
# export EDITOR='nvim'
# fi
# Compilation flags
# export ARCHFLAGS="-arch $(uname -m)"
# Set personal aliases, overriding those provided by Oh My Zsh libs,
# plugins, and themes. Aliases can be placed here, though Oh My Zsh
# users are encouraged to define aliases within a top-level file in
# the $ZSH_CUSTOM folder, with .zsh extension. Examples:
# - $ZSH_CUSTOM/aliases.zsh
# - $ZSH_CUSTOM/macos.zsh
# For a full list of active aliases, run `alias`.
#
# Example aliases
# Load functions
# --- FUNKTIONEN & ALIASE LADEN ---
# Dies lädt alles aus deinem neuen modularen Ordner
if [ -d "$HOME/.zsh_func_d" ]; then
for func_file in "$HOME/.zsh_func_d"/*; do
source "$func_file"
# Nur reguläre Dateien sourcen
[ -f "$func_file" ] && source "$func_file"
done
fi
alias ll="ls -lh"
alias la="ls -a"
alias lla="ls -lah"
alias zshconfig="nano ~/.zshrc"
alias ohmyzsh="nano ~/.oh-my-zsh"
alias git="/usr/bin/git"
alias mcu-leader="mcumgr --conntype serial --connstring 'dev=/dev/tty.usbmodem83301'"
alias nrf-env="export PATH='/opt/nordic/ncs/toolchains/322ac893fe/bin:$PATH'"
alias nano='micro'
alias vi='micro'
alias vim='micro'