====== MAC Initial install ======
Ich habe mir die Tage einen M1 MAC zugelegt, da dies mein erstes mal in der Apple Welt war und ich ein paar Sachen von Anfang an vermisste, habe ich im Zuge meines Einrichtungs und Kennenlernprozesses einfach ein paar Stichpunkte aufgeschrieben.\\
====== ======
Als erstes wollte ich ein paar linux tools haben. Relativ schnell stieß ich auf [[https://brew.sh/index_de |Homebrew]], einen Paketmanager außerhalb des App Stores, für so ziemlich alle Opensource tools.\\
Wofür man aber erstmal Xcode benötigt, welches man wie folgt installiert:
sudo xcode-select --install
(Lustig war, ich habe hier seit Jahren mal wieder eine Zeiteinschätzung der Installation von mehr als ein Jahr gesehen.)\\
\\
Schließlich kann man Homebrew selber installieren:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Jetzt hat man Homebrew zwar, aber leider funktioniert der noch nicht, da MAC OS mit seiner zsh leider nicht von Haus aus die PATH Variable setzt.\\
\\
Da wir es jetzt eh anfassen müssen und wir glücklicherweise bereits default die zsh haben, habe ich selbstverständlich sofort [[https://ohmyz.sh/| oh my zsh]] installiert:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
und an unsere bedürfnisse angepasst:
vim .zshrc
folgende Sachen sind zu ändern:
export PATH=/opt/homebrew/bin:$HOME/bin:/usr/local/bin:$PATH
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/X11R6/bin:$HOME/.scripts
export PYTHONPATH=/usr/lib/python3.9/site-packages
ZSH_THEME="ys"
zstyle ':omz:update' mode auto
plugins=(git macos macports brew colored-man-pages colorize zsh-interactive-cd)
alias vi="nvim"
alias ducks="du -cksh * | sort -rn | head"
# function to detect ddos attacks
function detect-ddos {
sudo netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
}
fdir() {
local dir
dir=$(find ${1:-.} -path '*/\.*' -prune \
-o -type d -print 2> /dev/null | fzf +m) &&
cd "$dir"
}
#fuzzyfind zsh history and execute this command
fhist() {
print -z $( ([ -n "$ZSH_NAME" ] && fc -l 1 || history) | fzf +s --tac | sed -E 's/ *[0-9]*\*? *//' | sed -E 's/\\/\\\\/g')
}
# fuzzykill process but only show those who are killable by you
fkill() {
local pid
if [ "$UID" != "0" ]; then
pid=$(ps -f -u $UID | sed 1d | fzf -m | awk '{print $2}')
else
pid=$(ps -ef | sed 1d | fzf -m | awk '{print $2}')
fi
if [ "x$pid" != "x" ]
then
echo $pid | xargs kill -${1:-9}
fi
}
# tmux functions
# zsh; needs setopt re_match_pcre.
tmuxkillf () {
local sessions
sessions="$(tmux ls|fzf --exit-0 --multi)" || return $?
local i
for i in "${(f@)sessions}"
do
[[ $i =~ '([^:]*):.*' ]] && {
echo "Killing $match[1]"
tmux kill-session -t "$match[1]"
}
done
}
# tm - create new tmux session, or switch to existing one. Works from within tmux too. (@bag-man)
# `tm` will allow you to select your tmux session via fzf.
# `tm irc` will attach to the irc session (if it exists), else it will create it.
tm() {
[[ -n "$TMUX" ]] && change="switch-client" || change="attach-session"
if [ $1 ]; then
tmux $change -t "$1" 2>/dev/null || (tmux new-session -d -s $1 && tmux $change -t "$1"); return
fi
session=$(tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf --exit-0) && tmux $change -t "$session" || echo "No sessions found."
}
# docker
# Select a docker container to start and attach to
function da() {
local cid
cid=$(docker ps -a | sed 1d | fzf -1 -q "$1" | awk '{print $1}')
[ -n "$cid" ] && docker start "$cid" && docker attach "$cid"
}
# Select a running docker container to stop
function ds() {
local cid
cid=$(docker ps | sed 1d | fzf -q "$1" | awk '{print $1}')
[ -n "$cid" ] && docker stop "$cid"
}
# Select a docker container to remove
function drm() {
local cid
cid=$(docker ps -a | sed 1d | fzf -q "$1" | awk '{print $1}')
[ -n "$cid" ] && docker rm "$cid"
}
# Same as above, but allows multi selection:
function drm() {
docker ps -a | sed 1d | fzf -q "$1" --no-sort -m --tac | awk '{ print $1 }' | xargs -r docker rm
}
# Select a docker image or images to remove
function drmi() {
docker images | sed 1d | fzf -q "$1" --no-sort -m --tac | awk '{ print $3 }' | xargs -r docker rmi
}
Das nächste was wir installieren, ist ein neues Terminal, da ich als Colorscheme gruvbox sehr mag, laden wir das Colorscheme direkt runter:
wget https://raw.githubusercontent.com/mbadolato/iTerm2-Color-Schemes/master/schemes/Gruvbox%20Dark.itermcolors -o ~/Documents/Gruvbox_Dark.itermcolors
nun folgt die Installation von iterm:
brew install --cask iterm2
Installiere nun das gruvbox color theme:\\
(als erstes importieren wir das zuvor heruntergeladene Colorscheme und wählen es anschließend ganz normal aus)\\
{{:blog:2022:bildschirmfoto_2022-06-04_um_01.32.47.png?1000|}}
was mich bis hierhin sehr störte, ich kann mit shortcuts die Fenster nicht arrangieren, also habe ich hierfür eine Möglichkeit gesucht. Jedoch kennt MAC OS tatsächlich von Haus aus keine Möglichkeit die Fenster zu arrangieren.\\
Also muss auch hierfür eine Lösung her:
sudo brew install --cask rectangle
vor einiger Zeit habe ich von [[http://www.wox.one/ |Wox]] gelesen, welches Alfred nachempfunden ist und einem die Spotlight Funktionalität nochmal aufgebohrt zur Verfügung stellt und die Produktivität unglaublich erhöht.\\
Mit:
brew install alfred
installiert ihr [[https://www.alfredapp.com/ |Alfred 4]].
als nächstes wollen wir neovim und eine gui dafür:
brew install --cask vimr
sowie den fuzzy finder, um die Funktionen aus der zsh auch nutzen zu können:
brew install fzf
Dann installieren wir uns noch ein paar tools:
brew install tree
brew install bat
brew install delta
und tmux darf natürlich auch nicht fehlen:
brew install tmux
hier mag ich auch immer gern den Paketmanager für tmux mit installieren:
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
vi .tmux.conf
und passen die .conf dazu an:\\
(Wer mehr Anpassungen in tmux oder was auch immer haben will, kann sich gern meine [[https://git.opennerds.org/templis/dotconfs | dotconfs]] anschauen.)
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'egel/tmux-gruvbox'
set -g @tmux-gruvbox 'dark' # or 'light'
run '~/.tmux/plugins/tpm/tpm'
Und initialisieren die Installation der tmux Pakete mit PREFIX+I #(Install)
Hier merkte ich, dass es ganz schön viel ist, was man noch machen muss und wollte meine Erfahrungen in ein Notizblock schreiben.\\
Leider ist die App sehr unnütz, also brauchte ich auch hierfür eine extra App.\\
Disclaimer; ab jetzt wird es GUI lastig. :)
Meine Wahl viel auf [[https://joplinapp.org/ | Joplin]]:
brew install joplin
Außerdem brauche ich auch meine altbewährte Passwortverwaltung:
brew install keepassxc
Ich mag nach wie vor nicht meine Passwörter mit einer fremden Firma teilen.\\
Außerdem für remotesupport:
brew install anydesk
Meine Nextcloud:
brew install nextcloud
Und ein VPN Client für OpenVPN:
sudo softwareupdate --install-rosetta
brew install openvpn-connect
Das war es soweit erstmal von mir. Falls mir noch etwas einfällt, ergänze ich diesen Artikel, damit alles schön beisammen bleibt.