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