Add common dotfiles
This commit is contained in:
parent
f7a5064cf8
commit
a79b5de5ff
7 changed files with 596 additions and 0 deletions
26
.gitconfig
Normal file
26
.gitconfig
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
[alias]
|
||||||
|
amend = commit --amend
|
||||||
|
# Prettier git log
|
||||||
|
graph = log --graph --color --abbrev-commit --pretty=format:"%C(yellow)%h%C(green)%d%C(reset)%n%cd%n%cn%C(blue)%x20(%ce)%x20%C(cyan)[gpg:%GK%x20%G?]%C(reset)%n%B%n"
|
||||||
|
|
||||||
|
[commit]
|
||||||
|
gpgsign = false
|
||||||
|
|
||||||
|
[diff]
|
||||||
|
colormoved = default
|
||||||
|
|
||||||
|
[gui]
|
||||||
|
diffops = --color-moved
|
||||||
|
|
||||||
|
[init]
|
||||||
|
defaultBranch = master
|
||||||
|
|
||||||
|
[pull]
|
||||||
|
rebase = true
|
||||||
|
|
||||||
|
[rebase]
|
||||||
|
autosquash = true
|
||||||
|
|
||||||
|
[user]
|
||||||
|
name = Casper V. Kristensen
|
||||||
|
email = <EMAIL>
|
457
.zshrc
Normal file
457
.zshrc
Normal file
|
@ -0,0 +1,457 @@
|
||||||
|
#!/bin/zsh
|
||||||
|
|
||||||
|
# http://zsh.sourceforge.net/Doc/Release/Options.html
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# History
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# If this is set, zsh sessions will append their history list to the history
|
||||||
|
# file, rather than replace it.
|
||||||
|
setopt APPEND_HISTORY
|
||||||
|
|
||||||
|
# Save each command’s beginning timestamp and the duration to the history file.
|
||||||
|
setopt EXTENDED_HISTORY
|
||||||
|
|
||||||
|
# When searching for history entries in the line editor, do not display
|
||||||
|
# duplicates of a line previously found.
|
||||||
|
setopt HIST_FIND_NO_DUPS
|
||||||
|
|
||||||
|
# Remove command lines from the history list when the first character on the
|
||||||
|
# line is a space, or when one of the expanded aliases contains a leading space.
|
||||||
|
setopt HIST_IGNORE_SPACE
|
||||||
|
|
||||||
|
# Number of lines of history kept within the shell.
|
||||||
|
HISTSIZE=10000
|
||||||
|
|
||||||
|
# Number of lines of history to save to $HISTFILE.
|
||||||
|
SAVEHIST=10000
|
||||||
|
|
||||||
|
# File where history is saved.
|
||||||
|
HISTFILE=~/.histfile
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Input/Output
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# Allow comments even in interactive shells.
|
||||||
|
setopt INTERACTIVE_COMMENTS
|
||||||
|
|
||||||
|
# Don't beep on error.
|
||||||
|
setopt NO_BEEP
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Changing Directories
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# If a command is issued that can’t be executed as a normal command, and the
|
||||||
|
# command is the name of a directory, perform the cd command to that directory.
|
||||||
|
setopt AUTO_CD
|
||||||
|
|
||||||
|
# Make cd push the old directory onto the directory stack (cd -<tab complete>).
|
||||||
|
setopt AUTO_PUSHD
|
||||||
|
|
||||||
|
# Don’t push multiple copies of the same directory onto the directory stack.
|
||||||
|
setopt PUSHD_IGNORE_DUPS
|
||||||
|
|
||||||
|
# Global aliases for fast directory navigation. Global aliases are substituted
|
||||||
|
# anywhere on a line.
|
||||||
|
alias ...='../..'
|
||||||
|
alias ....='../../..'
|
||||||
|
alias .....='../../../..'
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Environment
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# Add ~/.local/bin to $PATH.
|
||||||
|
export PATH="${HOME}/.local/bin:${PATH}"
|
||||||
|
|
||||||
|
# Automatically remove duplicates from these arrays.
|
||||||
|
typeset -U path PATH cdpath CDPATH fpath FPATH manpath MANPATH
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Job Control
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# Report the status of background jobs immediately, rather than waiting until
|
||||||
|
# just before printing a prompt.
|
||||||
|
setopt NOTIFY
|
||||||
|
|
||||||
|
# Print job notifications in the long format (show e.g. PIDs) by default.
|
||||||
|
setopt LONG_LIST_JOBS
|
||||||
|
|
||||||
|
# Don't send SIGHUP to background processes when the shell exits.
|
||||||
|
setopt NO_HUP
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Colours
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# Inside tmux TERM must be "screen", "tmux", or "tmux-256color".
|
||||||
|
# See https://github.com/tmux/tmux/wiki/FAQ and https://github.com/tmux/tmux/issues/625.
|
||||||
|
if [[ -v TMUX ]]; then
|
||||||
|
export TERM="tmux-256color"
|
||||||
|
else
|
||||||
|
export TERM="xterm-256color"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Evaluate dircolors to populate $LS_COLORS
|
||||||
|
eval "$(dircolors)"
|
||||||
|
|
||||||
|
# Add colour to common applications using aliases.
|
||||||
|
# https://wiki.archlinux.org/index.php/Color_output_in_console
|
||||||
|
alias diff='diff --color=auto'
|
||||||
|
alias grep='grep --color=auto'
|
||||||
|
alias egrep='egrep --color=auto'
|
||||||
|
alias fgrep='fgrep --color=auto'
|
||||||
|
alias ip='ip --color=auto'
|
||||||
|
|
||||||
|
|
||||||
|
# Add source code highlighting to less.
|
||||||
|
# https://www.gnu.org/software/src-highlite/source-highlight.html#Using-source_002dhighlight-with-less
|
||||||
|
if [[ -x "$(command -v source-highlight-esc.sh)" ]]; then # debian
|
||||||
|
export LESSOPEN="| source-highlight-esc.sh %s --tab=4"
|
||||||
|
export LESS=' -R '
|
||||||
|
elif [[ -x "$(command -v /usr/share/source-highlight/source-highlight-esc.sh)" ]]; then # ubuntu
|
||||||
|
export LESSOPEN="| /usr/share/source-highlight/source-highlight-esc.sh %s --tab=4"
|
||||||
|
export LESS=' -R '
|
||||||
|
else
|
||||||
|
print -P '%F{8}Warning: source-highlight package missing.'
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Aliases
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# Better ls
|
||||||
|
alias ls='ls --color=auto --classify --group-directories-first -v'
|
||||||
|
alias ll='ls -lh'
|
||||||
|
alias lla='ll -a'
|
||||||
|
|
||||||
|
# Nice-to-have aliases for (in)frequently used or hard-to-remember commands.
|
||||||
|
alias upgrade='sudo apt update && sudo apt upgrade && sudo apt autoremove'
|
||||||
|
alias rcheck='rhash --check --recursive --percents .'
|
||||||
|
alias rsynca='rsync --archive --compress --partial --human-readable --progress'
|
||||||
|
alias serve='python3 -m http.server'
|
||||||
|
|
||||||
|
function speedtest() {
|
||||||
|
function f() {
|
||||||
|
echo "================================= $1 ================================="
|
||||||
|
curl --max-time 10 --output /dev/null $2
|
||||||
|
}
|
||||||
|
f "Datapacket" http://fra.download.datapacket.com/10000mb.bin
|
||||||
|
f "Cachefly" http://cachefly.cachefly.net/100mb.test
|
||||||
|
f "OVH" http://www.ovh.net/files/1Gio.dat
|
||||||
|
f "Digital Ocean" http://speedtest-ams3.digitalocean.com/100mb.test
|
||||||
|
f "Linode" http://speedtest.frankfurt.linode.com/100MB-frankfurt.bin
|
||||||
|
f "Online.net" http://ping.online.net/10000Mo.dat
|
||||||
|
f "Hetzner" https://speed.hetzner.de/1GB.bin
|
||||||
|
f "Vultr" https://fra-de-ping.vultr.com/vultr.com.1000MB.bin
|
||||||
|
f "LeaseWeb" https://mirror.de.leaseweb.net/speedtest/1000mb.bin
|
||||||
|
f "Ramnode" http://lg.nl.ramnode.com/static/1000MB.test
|
||||||
|
f "OVH GRA" http://gra.proof.ovh.net/files/1Gio.dat
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Keybinds
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# Enable searching through history for commands matching everything up to the
|
||||||
|
# current cursor position. (https://coderwall.com/p/jpj_6q/zsh-better-history-searching-with-arrow-keys).
|
||||||
|
autoload -U up-line-or-beginning-search
|
||||||
|
autoload -U down-line-or-beginning-search
|
||||||
|
zle -N up-line-or-beginning-search
|
||||||
|
zle -N down-line-or-beginning-search
|
||||||
|
|
||||||
|
# Use Emacs-style keybinds.
|
||||||
|
bindkey -e
|
||||||
|
|
||||||
|
# Bind keys as one would expect them to be bound.
|
||||||
|
# Use 'cat -v' to character sequences.
|
||||||
|
bindkey "$terminfo[kbs]" backward-delete-char # BackSpace
|
||||||
|
bindkey "$terminfo[khome]" beginning-of-line # Home
|
||||||
|
bindkey "$terminfo[kend]" end-of-line # End
|
||||||
|
bindkey "$terminfo[kich1]" overwrite-mode # Insert
|
||||||
|
bindkey "$terminfo[kdch1]" delete-char # Delete
|
||||||
|
bindkey "$terminfo[kcuu1]" up-line-or-beginning-search # Up
|
||||||
|
bindkey "$terminfo[kcud1]" down-line-or-beginning-search # Down
|
||||||
|
bindkey "$terminfo[kcub1]" backward-char # Left
|
||||||
|
bindkey "$terminfo[kcuf1]" forward-char # Right
|
||||||
|
#bindkey "$terminfo[kpp]" x # PageUp
|
||||||
|
#bindkey "$terminfo[knp]" x # PageDown
|
||||||
|
bindkey "^[[1;5D" backward-word # Ctrl+Left
|
||||||
|
bindkey "^[[1;5C" forward-word # Ctrl+Right
|
||||||
|
bindkey "^H" backward-delete-word # Ctrl+Backspace
|
||||||
|
bindkey "^[[3;5~" delete-word # Ctrl+Delete
|
||||||
|
bindkey "^[[Z" reverse-menu-complete # Shift+Tab
|
||||||
|
|
||||||
|
# Additional keybinds.
|
||||||
|
bindkey "^[?" run-help # Alt+?
|
||||||
|
bindkey "^[+" run-help # Alt++ (simpler on Danish keyboards)
|
||||||
|
|
||||||
|
# Remove '/' from WORDCHARS, making Ctrl+{Right,Left,Backspace} work correctly
|
||||||
|
# on path segments instead of operating on the entire path at once.
|
||||||
|
WORDCHARS=${WORDCHARS:s@/@}
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Completion
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
autoload -Uz compinit
|
||||||
|
compinit
|
||||||
|
|
||||||
|
#
|
||||||
|
# Options
|
||||||
|
#
|
||||||
|
|
||||||
|
# If a completion is performed with the cursor within a word, and a full
|
||||||
|
# completion is inserted, the cursor is moved to the end of the word.
|
||||||
|
setopt ALWAYS_TO_END
|
||||||
|
|
||||||
|
# Automatically list choices on an ambiguous completion.
|
||||||
|
setopt AUTO_LIST
|
||||||
|
|
||||||
|
# Automatically use menu completion after the second consecutive request for
|
||||||
|
# completion, for example by pressing the tab key repeatedly.
|
||||||
|
setopt AUTO_MENU
|
||||||
|
|
||||||
|
# If unset, the cursor is set to the end of the word if completion is started.
|
||||||
|
# Otherwise it stays there and completion is done from both ends.
|
||||||
|
setopt COMPLETE_IN_WORD
|
||||||
|
|
||||||
|
# If a parameter is completed whose content is the name of a directory, then
|
||||||
|
# add a trailing slash instead of a space.
|
||||||
|
setopt AUTO_PARAM_SLASH
|
||||||
|
|
||||||
|
# On an ambiguous completion, list possibilities instead of inserting the first
|
||||||
|
# match immediately.
|
||||||
|
setopt NO_MENU_COMPLETE
|
||||||
|
|
||||||
|
#
|
||||||
|
# Styles
|
||||||
|
#
|
||||||
|
|
||||||
|
# Group matches and describe.
|
||||||
|
zstyle ':completion:*:*:*:*:*' menu select
|
||||||
|
zstyle ':completion:*:matches' group 'yes'
|
||||||
|
zstyle ':completion:*:options' description 'yes'
|
||||||
|
zstyle ':completion:*:options' auto-description 'specify: %d'
|
||||||
|
zstyle ':completion:*:corrections' format ' %F{green}-- %d (errors: %e) --%f'
|
||||||
|
zstyle ':completion:*:descriptions' format ' %F{yellow}-- %d --%f'
|
||||||
|
zstyle ':completion:*:messages' format ' %F{purple} -- %d --%f'
|
||||||
|
zstyle ':completion:*:warnings' format ' %F{red}-- no matches found --%f'
|
||||||
|
zstyle ':completion:*:default' list-prompt '%S%M matches%s'
|
||||||
|
zstyle ':completion:*' format ' %F{yellow}-- %d --%f'
|
||||||
|
zstyle ':completion:*' group-name ''
|
||||||
|
zstyle ':completion:*' verbose yes
|
||||||
|
|
||||||
|
# Try smart-case completion, then case-insensitive, then partial-word, and then
|
||||||
|
# substring completion.
|
||||||
|
# See http://zsh.sourceforge.net/Doc/Release/Completion-Widgets.html#Completion-Matching-Control.
|
||||||
|
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Z}{a-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*'
|
||||||
|
|
||||||
|
# Use the same colors as 'ls' in completion
|
||||||
|
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
|
||||||
|
|
||||||
|
# Keep directories and files separated
|
||||||
|
zstyle ':completion:*' list-dirs-first true
|
||||||
|
|
||||||
|
# The value of this style is used in completion listing to separate the string
|
||||||
|
# to complete from a description when completing options.
|
||||||
|
zstyle ':completion:*:options' list-separator \|
|
||||||
|
|
||||||
|
# This makes it so that the option descriptions are gray instead of the same
|
||||||
|
# colour as the options themselves to avoid confusion. This code itself,
|
||||||
|
# however, is very confusing and I have no idea how it works.
|
||||||
|
zstyle ':completion:*:options' list-colors \
|
||||||
|
"=(#b)(-##)([^ ]#) #(\\|)(*)=0=38;5;23=${color[bold]}=38;5;237=38;5;242" \
|
||||||
|
"=(#b)(-##)([^ ]#)(*)=0=38;5;23=${color[bold]}" \
|
||||||
|
"=(#b) #(\\|)(*)=0=38;5;237=38;5;242"
|
||||||
|
|
||||||
|
# Enable completion for '../'
|
||||||
|
zstyle ':completion:*' special-dirs true
|
||||||
|
|
||||||
|
# Behave as if there were a ‘*’ between sequences of slashes in filename paths.
|
||||||
|
# E.g., foo//bar will be treated as foo/*/bar.
|
||||||
|
zstyle ':completion:*' squeeze-slashes false
|
||||||
|
|
||||||
|
# Make completions for apt etc. usable by activating completion caching layer.
|
||||||
|
zstyle ':completion::complete:*' use-cache on
|
||||||
|
|
||||||
|
# Don't complete hosts from /etc/hosts
|
||||||
|
zstyle -e ':completion:*' hosts 'reply=()'
|
||||||
|
|
||||||
|
# Provide more processes in completion of programs like kill and killall
|
||||||
|
zstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w'
|
||||||
|
zstyle ':completion:*:processes-names' command "ps -eo cmd= | sed 's:\([^ ]*\).*:\1:;s:\(/[^ ]*/\)::;/^\[/d'"
|
||||||
|
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01'
|
||||||
|
zstyle ':completion:*:*:kill:*' menu yes select
|
||||||
|
zstyle ':completion:*:*:kill:*' force-list always
|
||||||
|
zstyle ':completion:*:*:kill:*' insert-ids single
|
||||||
|
|
||||||
|
# Man
|
||||||
|
zstyle ':completion:*:manuals' separate-sections true
|
||||||
|
zstyle ':completion:*:manuals.(^1*)' insert-sections true
|
||||||
|
zstyle ':completion:*:man:*' menu yes select
|
||||||
|
|
||||||
|
# Pasting with tabs doesn't perform completion
|
||||||
|
zstyle ':completion:*' insert-tab pending
|
||||||
|
|
||||||
|
# SSH/SCP/RSYNC tag order
|
||||||
|
zstyle ':completion:*:(scp|rsync):*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
|
||||||
|
zstyle ':completion:*:(scp|rsync):*' group-order users files all-files hosts-domain hosts-host hosts-ipaddr
|
||||||
|
zstyle ':completion:*:ssh:*' tag-order 'hosts:-host:host hosts:-domain:domain hosts:-ipaddr:ip\ address *'
|
||||||
|
zstyle ':completion:*:ssh:*' group-order users hosts-domain hosts-host users hosts-ipaddr
|
||||||
|
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-host' ignored-patterns '*(.|:)*' loopback ip6-loopback localhost ip6-localhost broadcasthost
|
||||||
|
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-domain' ignored-patterns '<->.<->.<->.<->' '^[-[:alnum:]]##(.[-[:alnum:]]##)##' '*@*'
|
||||||
|
zstyle ':completion:*:(ssh|scp|rsync):*:hosts-ipaddr' ignored-patterns '^(<->.<->.<->.<->|(|::)([[:xdigit:].]##:(#c,2))##(|%*))' '127.0.0.<->' '255.255.255.255' '::1' 'fe80::*'
|
||||||
|
|
||||||
|
# Ignore internal shell functions
|
||||||
|
zstyle ':completion:*:functions' ignored-patterns '_*'
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Prompting
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
# Prompt expansion 101: (http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html)
|
||||||
|
# %F => color dict (https://wiki.archlinux.org/index.php/Zsh#Colors)
|
||||||
|
# %f => reset color
|
||||||
|
# %~ => current path
|
||||||
|
# %n => username
|
||||||
|
# %m => shortname host
|
||||||
|
# %(?..) => prompt conditional - %(condition.true.false)
|
||||||
|
# vcs_info:
|
||||||
|
# %b => current branch
|
||||||
|
# %a => current action (rebase/merge)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Options
|
||||||
|
#
|
||||||
|
|
||||||
|
# Enable command substitution and arithmetic expansion in prompts using '$()'.
|
||||||
|
setopt PROMPT_SUBST
|
||||||
|
|
||||||
|
# Disallow virtual envirnments from updating the prompt.
|
||||||
|
export VIRTUAL_ENV_DISABLE_PROMPT=1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Git
|
||||||
|
# http://zsh.sourceforge.net/Doc/Release/User-Contributions.html
|
||||||
|
#
|
||||||
|
|
||||||
|
# Load vcs_info git module
|
||||||
|
autoload -Uz vcs_info
|
||||||
|
zstyle ':vcs_info:*' enable git
|
||||||
|
|
||||||
|
# Only export the one 'vcs_info_msg_0_' message variable.
|
||||||
|
zstyle ':vcs_info:*' max-exports 1
|
||||||
|
|
||||||
|
# Set formats
|
||||||
|
zstyle ':vcs_info:git*' formats '@%F{yellow}%b%f'
|
||||||
|
|
||||||
|
# actionformats is used if there is a special action going on in the current
|
||||||
|
# repository; like an interactive rebase or a merge conflict.
|
||||||
|
zstyle ':vcs_info:git*' actionformats '@%F{yellow}%b%f|%F{magenta}%a%f'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Prompt
|
||||||
|
#
|
||||||
|
|
||||||
|
# Define the precmd hook function, which is executed before each prompt.
|
||||||
|
precmd () {
|
||||||
|
vcs_info # makes sure we have up-to-date vcs info
|
||||||
|
}
|
||||||
|
|
||||||
|
PROMPT=''
|
||||||
|
|
||||||
|
# Show '(venv)' in gray if in virtual environment.
|
||||||
|
PROMPT+='$([[ -v VIRTUAL_ENV ]] && print "%F{8}(`basename $VIRTUAL_ENV`)%f ")'
|
||||||
|
|
||||||
|
# Show 'hostname:' if logged in through SSH. Only checked once since it cannot
|
||||||
|
# change mid-session, unlike a virtual environment, like configured above.
|
||||||
|
# https://upload.wikimedia.org/wikipedia/commons/1/15/Xterm_256color_chart.svg
|
||||||
|
if [[ -v SSH_CONNECTION ]]; then
|
||||||
|
PROMPT+='%F{010}%m%f:'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add the current working directory.
|
||||||
|
PROMPT+='%F{12}%~%f'
|
||||||
|
|
||||||
|
# Add version control info
|
||||||
|
PROMPT+='${vcs_info_msg_0_}'
|
||||||
|
|
||||||
|
# Make the prompt character green if last command successful, otherwise red.
|
||||||
|
PROMPT+='%(?.%F{green}.%F{red})'
|
||||||
|
|
||||||
|
# Add the actual prompt character: '#' if running with privileges, '❯' if not.
|
||||||
|
PROMPT+='%(!.#.❯)%f '
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Xterm Title
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
autoload -Uz add-zsh-hook
|
||||||
|
function xterm_title_precmd () {
|
||||||
|
print -Pn '\e]2;%n@%m %1~\a'
|
||||||
|
}
|
||||||
|
function xterm_title_preexec () {
|
||||||
|
print -Pn '\e]2;%n@%m %1~ %# '
|
||||||
|
print -n "${(q)1}\a"
|
||||||
|
}
|
||||||
|
if [[ "$TERM" == (screen*|xterm*|rxvt*) ]]; then
|
||||||
|
add-zsh-hook -Uz precmd xterm_title_precmd
|
||||||
|
add-zsh-hook -Uz preexec xterm_title_preexec
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# =============================================================================
|
||||||
|
# Plugins -- Must be loaded last
|
||||||
|
# =============================================================================
|
||||||
|
|
||||||
|
#
|
||||||
|
# zsh syntax highlighting: Fish shell like syntax highlighting for Zsh
|
||||||
|
# https://github.com/zsh-users/zsh-syntax-highlighting/blob/master/docs/highlighters.md
|
||||||
|
#
|
||||||
|
|
||||||
|
if [[ -e /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ]]; then
|
||||||
|
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||||
|
|
||||||
|
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern cursor)
|
||||||
|
|
||||||
|
## Main
|
||||||
|
|
||||||
|
## Pattern
|
||||||
|
ZSH_HIGHLIGHT_PATTERNS+=('sudo rm' 'fg=white,bold,bg=red')
|
||||||
|
ZSH_HIGHLIGHT_PATTERNS+=('sudo dd' 'fg=white,bold,bg=red')
|
||||||
|
|
||||||
|
## Cursor
|
||||||
|
ZSH_HIGHLIGHT_STYLES[cursor]='underline'
|
||||||
|
|
||||||
|
else
|
||||||
|
print -P '%F{8}Warning: zsh-syntax-highlighting package missing.'
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# zsh auto-suggestions
|
||||||
|
#
|
||||||
|
|
||||||
|
if [[ -e /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh ]]; then
|
||||||
|
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||||
|
|
||||||
|
ZSH_AUTOSUGGEST_STRATEGY=(match_prev_cmd completion)
|
||||||
|
#ZSH_AUTOSUGGEST_COMPLETION_IGNORE="(|sudo )apt install *"
|
||||||
|
else
|
||||||
|
print -P '%F{8}Warning: zsh-autosuggestions package missing.'
|
||||||
|
fi
|
2
authorized_keys
Normal file
2
authorized_keys
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPB/qr63FB0ZqOe/iZGwIKNHD8a1Ud/mXVjQPmpIG7pM caspervk@omega
|
||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICCQmHqqyPepTjCuDv5aVvaVd7UxgF0xxwwGRKfx4Ftn caspervk@zeta
|
6
install/README.md
Normal file
6
install/README.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# Scripts
|
||||||
|
This was originally a bunch of convoluted `ansible` code, but honestly it's way
|
||||||
|
easier to treat all my computers and servers as pets, since I don't have that
|
||||||
|
many them anyway.
|
||||||
|
|
||||||
|
**These scripts should be run from the repository root, e.g. `install/common.sh`.**
|
46
install/common.sh
Executable file
46
install/common.sh
Executable file
|
@ -0,0 +1,46 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Packages
|
||||||
|
sudo apt update
|
||||||
|
sudo apt upgrade
|
||||||
|
sudo apt install -y \
|
||||||
|
openssh-server \
|
||||||
|
git \
|
||||||
|
curl \
|
||||||
|
wget \
|
||||||
|
dnsutils \
|
||||||
|
rsync \
|
||||||
|
htop \
|
||||||
|
tmux \
|
||||||
|
ufw \
|
||||||
|
vnstat \
|
||||||
|
ntp \
|
||||||
|
pwgen \
|
||||||
|
fish \
|
||||||
|
source-highlight
|
||||||
|
#zsh \
|
||||||
|
#zsh-syntax-highlighting \
|
||||||
|
#zsh-autosuggestions \
|
||||||
|
|
||||||
|
|
||||||
|
# Shell
|
||||||
|
#chsh -s /bin/zsh
|
||||||
|
#ln -sr .zshrc ~/
|
||||||
|
chsh -s /usr/bin/fish
|
||||||
|
|
||||||
|
|
||||||
|
# SSH
|
||||||
|
read -p "Please set sshd port to 222"
|
||||||
|
sudo nano /etc/ssh/sshd_config
|
||||||
|
|
||||||
|
ssh-keygen -t ed25519
|
||||||
|
ln -sr authorized_keys ~/.ssh/authorized_keys
|
||||||
|
ln -sr ssh_config ~/.ssh/config
|
||||||
|
|
||||||
|
|
||||||
|
# Firewall
|
||||||
|
sudo ufw default deny incoming
|
||||||
|
sudo ufw default allow outgoing
|
||||||
|
sudo ufw allow 222/tcp comment "sshd"
|
41
install/desktop.sh
Executable file
41
install/desktop.sh
Executable file
|
@ -0,0 +1,41 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Packages
|
||||||
|
sudo apt update
|
||||||
|
sudo apt upgrade
|
||||||
|
sudo apt install -y \
|
||||||
|
vlc \
|
||||||
|
keepassxc \
|
||||||
|
filelight \
|
||||||
|
meld \
|
||||||
|
peek \
|
||||||
|
gimp \
|
||||||
|
filezilla \
|
||||||
|
qbittorrent \
|
||||||
|
nfoview \
|
||||||
|
audacity \
|
||||||
|
tor \
|
||||||
|
torbrowser-launcher \
|
||||||
|
libnotify-bin
|
||||||
|
|
||||||
|
|
||||||
|
# DNS
|
||||||
|
sudo rm /etc/resolv.conf # clear potential symlink
|
||||||
|
echo "nameserver 159.69.4.2" | sudo tee /etc/resolv.conf
|
||||||
|
|
||||||
|
|
||||||
|
# Git
|
||||||
|
ln -sr .gitconfig ~/
|
||||||
|
read -p "Git email: " email # avoid web scraping of email address
|
||||||
|
sed -i "s/<EMAIL>/$email/" .gitconfig
|
||||||
|
|
||||||
|
|
||||||
|
# Syncthing
|
||||||
|
sudo apt install -y syncthing
|
||||||
|
sudo ufw allow syncthing
|
||||||
|
systemctl --user enable syncthing.service
|
||||||
|
systemctl --user start syncthing.service
|
||||||
|
systemctl --user status syncthing.service
|
||||||
|
firefox http://localhost:8384
|
18
ssh_config
Normal file
18
ssh_config
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
Host alpha
|
||||||
|
HostName alpha.caspervk.net
|
||||||
|
Port 222
|
||||||
|
|
||||||
|
Host delta
|
||||||
|
HostName delta.caspervk.net
|
||||||
|
Port 222
|
||||||
|
|
||||||
|
Host lambda
|
||||||
|
HostName lambda.caspervk.net
|
||||||
|
Port 222
|
||||||
|
|
||||||
|
Host sigma
|
||||||
|
HostName sigma.caspervk.net
|
||||||
|
Port 222
|
||||||
|
|
||||||
|
Host git.caspervk.net
|
||||||
|
Port 222
|
Reference in a new issue