From 0d0bb37d4c669840bc57f1b2f014850029fe0148 Mon Sep 17 00:00:00 2001 From: Eduard Iten Date: Tue, 10 Feb 2026 13:42:21 +0100 Subject: [PATCH] Initialer Dotfiles Setup mit Bitwarden-Helper --- bin/git-bw-helper | 21 +++++ install.sh | 21 +++++ zsh_func_d/bw_logic.zsh | 15 ++++ zshrc_template | 165 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 222 insertions(+) create mode 100755 bin/git-bw-helper create mode 100644 install.sh create mode 100644 zsh_func_d/bw_logic.zsh create mode 100644 zshrc_template diff --git a/bin/git-bw-helper b/bin/git-bw-helper new file mode 100755 index 0000000..f243980 --- /dev/null +++ b/bin/git-bw-helper @@ -0,0 +1,21 @@ +#!/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 + fi + + # Das gesamte Item einmal holen, um nicht mehrfach anfragen zu müssen + 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') + + echo "username=$USER" + echo "password=$TOKEN" + fi +fi diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..fc7d5fa --- /dev/null +++ b/install.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# 1. Plugins installieren (falls nicht vorhanden) +ZSH_CUSTOM=${ZSH_CUSTOM:-~/.oh-my-zsh/custom} +mkdir -p "$ZSH_CUSTOM/plugins" + +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" + fi +done + +# 2. Symlinks setzen +ln -sf ~/dotfiles/zsh_func_d ~/.zsh_func_d +ln -sf ~/dotfiles/zshrc_template ~/.zshrc +mkdir -p ~/.local/bin +ln -sf ~/dotfiles/bin/git-bw-helper ~/.local/bin/git-bw-helper + +echo "✅ Installation abgeschlossen! Bitte 'source ~/.zshrc' ausführen." diff --git a/zsh_func_d/bw_logic.zsh b/zsh_func_d/bw_logic.zsh new file mode 100644 index 0000000..225625d --- /dev/null +++ b/zsh_func_d/bw_logic.zsh @@ -0,0 +1,15 @@ +# Bitwarden Funktionen +unlock() { + export BW_SESSION=$(bw unlock --raw) + if [ -n "$BW_SESSION" ]; then + echo "🔓 Tresor entsperrt. Session aktiv." + else + echo "❌ Fehler beim Entsperren." + fi +} + +lock() { + bw lock > /dev/null + unset BW_SESSION + echo "🔒 Tresor gesperrt und Session gelöscht." +} diff --git a/zshrc_template b/zshrc_template new file mode 100644 index 0000000..419b0cc --- /dev/null +++ b/zshrc_template @@ -0,0 +1,165 @@ +# 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. +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" ) + +# Uncomment the following line to use case-sensitive completion. +# CASE_SENSITIVE="true" + +# 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 + zsh-completions + zsh-syntax-highlighting +) + +source $ZSH/oh-my-zsh.sh + +# User configuration + +# Home & End keys for SSH connections +bindkey "\e[1~" beginning-of-line +bindkey "\e[4~" end-of-line +bindkey "\eOH" beginning-of-line +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 + +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" + +# 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 + +export EDITOR=micro +export VISUAL=micro + +# Autocompletion setup +# Schnellerer Shell-Start durch Caching der Completion-Datenbank +autoload -Uz compinit +if [[ -n ${ZDOTDIR:-$HOME}/.zcompdump(#qN.mh+24) ]]; then + compinit +else + compinit -C +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 +if [ -d "$HOME/.zsh_func_d" ]; then + for func_file in "$HOME/.zsh_func_d"/*; do + 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'