Initial commit

This commit is contained in:
Jan Jastrow 2022-02-10 20:11:56 +01:00
parent afcbb7f004
commit 8bf8ae5e18
11 changed files with 428 additions and 0 deletions

7
ReadMe.md Normal file
View File

@ -0,0 +1,7 @@
# dotfiles
## Install
Clone repo do your user directory.
```~/.dotfiles```

14
install.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
rm ~/.zshrc
ln -s ~/.dotfiles/zshrc ~/.zshrc
touch ~/.dotfiles/credentials
touch ~/.dotfiles/zsh/device-specific
sudo chsh -s $(which zsh) $USER
echo "Include ~/.dotfiles/ssh/hosts" >> ~/.ssh/config
chmod 600 ~/.dotfiles/ssh/hosts
chmod 600 ~/.ssh/config
rm ~/.bashrc
rm ~/.bash_logout
rm ~/.bash_history
zsh

3
ssh/hosts Normal file
View File

@ -0,0 +1,3 @@
# Add the following to ~/.ssh/config
# Include ~/.dotfiles/ssh/hosts

20
ssh/settings Normal file
View File

@ -0,0 +1,20 @@
# Add the following to ~/.ssh/config
# Include ~/.dotfiles/ssh/settings
host *
IdentityFile ~/.ssh/id_ed25519
UseKeychain yes
AddKeysToAgent yes
PubkeyAuthentication yes
PasswordAuthentication yes
ServerAliveInterval 5
ServerAliveCountMax 3
ChallengeResponseAuthentication no
ForwardX11 no
HashKnownHosts yes
Compression yes
SendEnv LANG LC_*
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr
#MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-ripemd160-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,hmac-ripemd160,umac-128@openssh.com

69
zsh/alias Normal file
View File

@ -0,0 +1,69 @@
#--------------------------------
# filename: /zsh/alias
#--------------------------------
# Better LS
if [[ $platform == 'Linux' ]]; then
alias bls='pwd; ls -lahp --color=auto --group-directories-first'
elif [[ $platform == 'macOS' && -x `which gls` ]]; then
alias bls='pwd; gls -lahpG --group-directories-first'
elif [[ $platform == 'macOS' ]]; then
alias bls='/bin/ls -lahG'
fi
# Better exa
if [[ -x `which exa` ]]; then
alias exa='pwd; exa -la --group-directories-first --git -g'
fi
# Better lsd
if [[ -x `which lsd` ]]; then
alias lsd='pwd; lsd -laF --group-dirs=first --icon=never'
fi
# Update aliases
if [[ -x `which brew` ]]; then
alias brewupdate='brew update; brew upgrade; brew upgrade --cask; brew cleanup'
fi
if [[ $platform == 'Linux' ]]; then
alias aptupdate='sudo apt update; sudo apt upgrade; sudo apt autoremove; sudo apt autoclean'
fi
# For fun
alias fucking='sudo'
alias please='sudo'
# aria2c
alias a2='aria2c -x4 -c -m3'
# screen reconnect/init
alias sc='screen -R'
# Only download mp4 version of youtube
alias ytmp4='youtube-dl -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4"'
# rsync; archive, progress, partial, relative, humanreadable (add -z for compression)
alias rrsync='rsync -avhP'
# better scp
alias bcp='rsync -avzuh --progress --partial'
# generate pseudo-random hash
alias random32="echo $(date +%s | md5sum | head -c 32)"
# tar
alias targz='tar -czvf'
alias untargz='tar -xzvf'
# linux stuff
alias journ='journalctl -xfe -t'
# own this dir (+subs)
alias makeitmine='sudo chown -R $(whoami) ./'
# ---
# .dotfiles
alias dotf='cd ~/.dotfiles'
alias dotfu='cd ~/.dotfiles; git pull; cd -; source ~/.zshrc'

13
zsh/bindings Normal file
View File

@ -0,0 +1,13 @@
#--------------------------------
# filename: /zsh/bindings
#--------------------------------
#if [[ $platform == 'Linux' ]]; then
# bindkey "^[[1;5C" forward-word
# bindkey "^[[1;5D" backward-word
# bindkey "^[[1;5A" history-beginning-search-backward
# bindkey "^[[1;5B" history-beginning-search-forward
#fi
bindkey "^[[A" 'history-search-backward'
bindkey "^[[B" 'history-search-forward'

82
zsh/env Normal file
View File

@ -0,0 +1,82 @@
#--------------------------------
# filename: /zsh/env
#--------------------------------
# set default editor
export EDITOR="nano"
# set `ll` command - b(etter)ls per default
alias ll=bls
if [[ -x `which /usr/local/bin/exa` || -x `which /opt/homebrew/bin/exa` ]]; then
alias ll=exa
fi
if [[ -x `which /usr/local/bin/lsd` || -x `which /opt/homebrew/bin/lsd` ]]; then
alias ll=lsd
fi
# set language
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_TYPE=en_US.UTF-8
#
# Path additions
#
if test -d "/opt/homebrew/"; then
export PATH="/opt/homebrew/bin/:$PATH"
eval "$(/opt/homebrew/bin/brew shellenv)"
fi
if test -d "$HOME/go"; then
export PATH="$HOME/go/bin:$PATH"
fi
if test -d "$HOME/.rbenv"; then
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
fi
if test -d "$HOME/.cargo"; then
export PATH="$HOME/.cargo/bin:$PATH"
eval "$(rbenv init -)"
fi
if test -d "$HOME/.local"; then
export PATH="$HOME/.local/bin:$PATH"
fi
# Add syncthing synced binary folder to $PATH
if [[ $platform == 'macOS' ]]; then
if [[ $arch == 'arm' ]]; then
export PATH="$HOME/SyncMac/Apps/bin/arm64:$PATH"
export PATH="$HOME/SyncMac/Apps/bin/universal:$PATH"
export PATH="$HOME/SyncMac/Apps/bin/x86_64_rosetta2:$PATH"
elif [[ $arch == 'i386' ]]; then
export PATH="$HOME/SyncMac/Apps/bin/universal:$PATH"
export PATH="$HOME/SyncMac/Apps/bin/x86_64:$PATH"
export PATH="$HOME/SyncMac/Apps/bin/x86_64_rosetta2:$PATH"
fi
fi
if test -d "/usr/local/opt/ruby"; then
export PATH="/usr/local/opt/ruby/bin:$PATH"
fi
if test -d "/usr/local/sbin"; then
export PATH="/usr/local/sbin:$PATH"
fi
#
# evals
#
# TheFuck
if [[ -x `which thefuck` ]]; then
eval "$(thefuck --alias)"
# You can use whatever you want as an alias, like for Mondays:
eval "$(thefuck --alias FUCK)"
alias fuck='eval $(thefuck $(fc -ln -1 | tail -n 1)); fc -R'
fi

62
zsh/ffmpeg Normal file
View File

@ -0,0 +1,62 @@
#--------------------------------
# filename: /zsh/ffmpeg
#--------------------------------
# ffmpeg-recontainer
# source: https://yohanes.gultom.me/2016/05/21/bash-script-to-batch-convert-mkv-to-mp4-linux/
function ff-mp4() {
findpath=$1
: ${findpath:="."}
find "$findpath" \( -iname '*.mkv' -o -iname '*.flv' -o -iname '*.mov' \) | while read f ; do
dir=$(dirname "$f");
file=$(basename "$f");
# ext="${filename##*.}";
name="${file%.*}";
ffmpeg -i "$f" -map 0 -c copy -movflags faststart "$dir/$name.mp4" </dev/null;
# rm -f "$f";
done
}
# ffmpeg-convert
# source: https://yohanes.gultom.me/2016/05/21/bash-script-to-batch-convert-mkv-to-mp4-linux/
function ff-ac3-to-stereo() {
findpath=$1
: ${findpath:="."}
find "$findpath" \( -iname '*.mkv' -o -iname '*.flv' -o -iname '*.mov' -o -iname '*.mp4' \) | while read f ; do
dir=$(dirname "$f");
file=$(basename "$f");
# ext="${filename##*.}";
name="${file%.*}";
ffmpeg -i "$f" -map 0 -c:v copy -c:a libfdk_aac -b:a 192k -ac 2 -af volume=2 -movflags faststart "$dir/$name.mp4" </dev/null;
# rm -f "$f";
done
}
# ffmpeg audio-to-ac3
function ff-input-to-ac3() {
ffmpeg -i "$1" -movflags faststart -map 0 -c:v copy -c:s copy -c:a ac3 -b:a 448k "_$1"
}
# ffmpeg fix 16:9 AR
function ff-ar16-9() {
ffmpeg -i "$1" -c copy -bsf:v "h264_metadata=sample_aspect_ratio=4/3" -aspect 16:9 -movflags faststart "_$1"
}
# ffmpeg fix Non-monotonous DTS
function ff-dts() {
ffmpeg -fflags +igndts -i "$1" -c copy -movflags faststart "_$1"
}
## ffmpeg wma-to-m4a
function ff-wma-m4a() {
findpath=$1
: ${findpath:="."}
find "$findpath" -name '*.wma' | while read f ; do
dir=$(dirname "$f");
file=$(basename "$f");
# ext="${filename##*.}";
name="${file%.*}";
ffmpeg -i "$f" -map 0 -vn -b:a 160k -c:a libfdk_aac "$dir/$name.m4a" </dev/null;
# rm -f "$f";
done
}

36
zsh/scripts Normal file
View File

@ -0,0 +1,36 @@
#--------------------------------
# filename: /zsh/scripts
#--------------------------------
# Search for string in all files in pwd
function f() {
grep -rnw ./ -e "$1"
}
# mkdir and cd
function mkcd() {
mkdir -p "$@" && cd "$_";
}
# pushover notification
function pushover() {
curl -s \
--form-string "token=$pushover_token" \
--form-string "user=$pushover_user" \
--form-string "title=$HOST" \
--form-string "message=$1" \
https://api.pushover.net/1/messages.json
}
# png to jpg 85
function png2web() {
findpath=$1
: ${findpath:="."}
find "$findpath" -name '*.png' | while read f ; do
dir=$(dirname "$f");
file=$(basename "$f");
name="${file%.*}";
magick convert "$f" pnm:- | cjpeg -progressive -quality 85 > "$dir/$name.jpg" </dev/null
rm -f "$f";
done
}

77
zsh/settings Normal file
View File

@ -0,0 +1,77 @@
#--------------------------------
# filename: /zsh/settings
#--------------------------------
# Set up the prompt
# Share shell history between sessions
setopt histignorealldups sharehistory
# Use emacs keybindings even if our EDITOR is set to vi
bindkey -e
# Keep 10000 lines of history within the shell and save it to ~/.dotfiles/zsh/history:
HISTSIZE=10000
SAVEHIST=10000
HISTFILE=$HOME/.dotfiles/zsh/history
# zstyle completion
zstyle ':completion:*' auto-description 'specify: %d'
zstyle ':completion:*' completer _expand _complete _correct _approximate
zstyle ':completion:*' format 'Completing %d'
zstyle ':completion:*' group-name ''
zstyle ':completion:*' menu select=2
zstyle ':completion:*' list-colors "=(#b) #([0-9]#)*=36=31"
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'
zstyle ':completion:*' menu select=long
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s
zstyle ':completion:*' use-compctl false
zstyle ':completion:*' verbose true
# pasting with tabs doesn't perform completion
zstyle ':completion:*' insert-tab pending
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'
#
# Basic (recommended) zsh setup above
# Additional setup below
#
# This makes cd=pushd
setopt AUTO_PUSHD
# why would you type 'cd dir' if you could just type 'dir'?
setopt AUTO_CD
# blank pushd goes to home
setopt PUSHD_TO_HOME
# 10 second wait if you do something that will delete everything. I wish I'd had this before...
setopt RM_STAR_WAIT
# Don't overwrite, append!
setopt APPEND_HISTORY
# Killer: share history between multiple shells
setopt SHARE_HISTORY
# If I type cd and then cd again, only save the last one
setopt HIST_IGNORE_DUPS
# Even if there are commands inbetween commands that are the same, still only save the last one
setopt HIST_IGNORE_ALL_DUPS
# Pretty Obvious. Right?
setopt HIST_REDUCE_BLANKS
# Save the time and how long a command ran
setopt EXTENDED_HISTORY
# Don't log commands beginning with space
# (+ Hack to exclude jrnl)
setopt HIST_IGNORE_SPACE
alias jrnl=" jrnl"

45
zshrc Normal file
View File

@ -0,0 +1,45 @@
#--------------------------------
# filename: /zshrc
#--------------------------------
autoload -Uz promptinit && promptinit
autoload -U compinit && compinit
# Default prompt design (color)
prompt fade red
# Load zsh settings
source $HOME/.dotfiles/credentials
source $HOME/.dotfiles/zsh/settings
# Define platform
platform='Unknown'
if [[ $(uname) == 'Linux' ]]; then
platform='Linux'
elif [[ $(uname) == 'Darwin' ]]; then
platform='macOS'
fi
arch='Unknown'
if [[ $(uname -p) == 'arm' ]]; then
arch="arm"
elif [[ $(uname -p) == 'i386' ]]; then
arch="i386"
elif [[ $(uname -p) == 'x86_64' ]]; then
arch="x86_64"
fi
# Load additional settings
source $HOME/.dotfiles/zsh/env
source $HOME/.dotfiles/zsh/alias
source $HOME/.dotfiles/zsh/bindings
source $HOME/.dotfiles/zsh/scripts
source $HOME/.dotfiles/zsh/ffmpeg
source $HOME/.dotfiles/zsh/device-specific
# Addons addons
## NNotes
nnotesaddon="$HOME/.nnotes/.zsh-integration"
if [[ -f $nnotesaddon ]]; then
source $nnotesaddon
fi