Initial commit

This commit is contained in:
2020-06-27 15:56:54 +02:00
commit c3200c91db
65 changed files with 2701 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFi5drlM5Uli7GbTZFiKPKnG8RmOyS2eu3c6XkwwJiSk luX@smithers.codesignd.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOBEksH8LMO5jf1QsMH3yRdxSmY2XPk8CH9HNsWfsXVt luX@bart.codesignd.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIETsPbHqAta4E6j9pm/9E4lLurlPoh+p5zOWiZ9GS5ml luX@maggie.codesignd.net
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG9J5FMq9ttUcnuqWhYsiKVuols5uD2Ddv7L3Z93nD2W luX@homer.codesignd.net
@@ -0,0 +1,60 @@
###
# Loader for Oh My Fish! packages
# Loads all packages stored in ~/.config/fish/pkgs/
#
# Inspired by https://github.com/jorgebucaran/fisher
###
set -q pkgs_path; or set -g pkgs_path ~/.config/fish/pkgs
# also search for functions/completions/binaries/manpages within packages
set fish_function_path $fish_function_path[1] $pkgs_path/.functions $pkgs_path/*/functions $fish_function_path[2..-1]
set fish_complete_path $fish_complete_path[1] $pkgs_path/*/completions $fish_complete_path[2..-1]
set -x PATH $pkgs_path/*/bin $PATH
set -x MANPATH $pkgs_path/*/man $MANPATH
# load package key bindings when needed
if functions -q fish_user_key_bindings
functions -c fish_user_key_bindings fish_user_key_bindings_copy
end
function fish_user_key_bindings
for file in $pkgs_path/*/key_bindings.fish
builtin source $file 2>&1 > /dev/null
end
if functions -q fish_user_key_bindings_copy
fish_user_key_bindings_copy
end
end
# load custom config from packages
for file in $pkgs_path/*/conf.d/*.fish $pkgs_path/*/init.fish
builtin source $file 2> /dev/null
end
# ensure that the prompt is loaded (doesn't autoload for some reason)
if test -f $pkgs_path/.functions/fish_prompt.fish
builtin source $pkgs_path/.functions/fish_prompt.fish 2> /dev/null
end
# collect all functions on the top-level of packages into $pkgs_path/.functions
# (run by Ansible after packages have been updated)
function _pkgs_collect_functions
# clear the functions directory as we rebuild it from scratch
if test -d $pkgs_path/.functions
command rm -rf $pkgs_path/.functions
end
command mkdir -p $pkgs_path/.functions
# consider all fish files in the top-level of each package
for src in $pkgs_path/*/*.fish
set -l package (command basename (command dirname $src))
set -l filename (command basename $src)
# we don't care about uninstall.fish;
# init.fish and key_bindings.fish are dynamically handled on runtime above
if not contains $filename {init,key_bindings,uninstall}.fish
# create a relative symlink
command ln -sf ../$package/$filename $pkgs_path/.functions/$filename
end
end
end
@@ -0,0 +1,46 @@
# Environment variables
# ---------------------
set -x PATH $HOME/bin \
$HOME/.composer/vendor/bin \
$HOME/.local/bin \
$HOME/.linuxbrew/bin \
$PATH
set -x MANPATH $HOME/.linuxbrew/share/man \
$MANPATH
# language
set -x LANG de_DE.UTF-8
# editor
set -x VISUAL "$HOME/.config/fish/pkgs/rmate/rmate -p 64364 -w" # Visual Studio Code (wait mode)
set -x EDITOR 'nano -w' # nano as fallback editor
set -x XDG_CONFIG_HOME $HOME/.config
# Aliases
# -------
# Edit file remotely with VS Code
alias code="$HOME/.config/fish/pkgs/rmate/rmate -p 64364"
# Short ls command
alias l='ls -la'
# General Settings
# ----------------
# enforce 24-bit color mode
# (the requried env var is not transmitted via SSH)
set -x COLORTERM truecolor
set -g fish_term24bit 1
# settings for the bobthefish theme
set -g fish_prompt_pwd_dir_length 0
set -g theme_color_scheme solarized-dark
set -g theme_date_format '+%a %d.%m.%y %H:%M:%S'
set -g theme_display_git_master_branch yes
set -g theme_show_exit_status yes
set -g theme_title_use_abbreviated_path no
set -x VIRTUAL_ENV_DISABLE_PROMPT 1
@@ -0,0 +1,3 @@
function fish_greeting
welcome
end
@@ -0,0 +1,21 @@
###
# Looks up the IPv4 address of the given hostname and tries to find the reverse record of that IP
#
# Globals:
# None
# Arguments:
# $domain string Hostname to look up
# Returns:
# None
###
function nsreverse
# lookup IP
set ip (dig "$argv[1]" A +short); or return 1
# lookup reverse record
set reverse (dig -x "$ip" +short); or return 1
# output
echo -e "\033[1mIPv4: \033[0;34m $ip\033[0m"
echo -e "\033[1mReverse lookup:\033[0;34m $reverse\033[0m"
end
@@ -0,0 +1,21 @@
###
# Looks up the IPv6 address of the given hostname and tries to find the reverse record of that IP
#
# Globals:
# None
# Arguments:
# $domain string Hostname to look up
# Returns:
# None
###
function nsreverse6
# lookup IP
set ip (dig "$argv[1]" AAAA +short); or return 1
# lookup reverse record
set reverse (dig -x "$ip" +short); or return 1
# output
echo -e "\033[1mIPv6: \033[0;34m $ip\033[0m"
echo -e "\033[1mReverse lookup:\033[0;34m $reverse\033[0m"
end
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,6 @@
function dateSummarizer() {
echo -n "\033[34m"
date
}
registerSummarizer "Date" dateSummarizer
@@ -0,0 +1,111 @@
function uptimeSummarizer() {
# Get the uptime in seconds depending on the kernel
if [[ "$(uname -s)" == 'Darwin' ]]; then
# OS X
# kern.boottime is an absolute timestamp
bootTime="$(sysctl -n kern.boottime | awk '{print $4}' | sed 's/,//g')"
currentTime="$(date +%s)"
uptime="$(($currentTime - $bootTime))"
elif [[ -f /proc/uptime ]]; then
# Linux
uptime="$(cat /proc/uptime)"
uptime="${uptime%%.*}"
else
# We don't have a handler for that
# If you need one, please create an issue at
# https://github.com/lukasbestle/my-welcome/issues
echo "\033[31mUnsupported environment, can't get uptime. :(\033[0m"
exit 1
fi
# Parse into units
seconds="$((uptime % 60))"
minutes="$((uptime / 60 % 60))"
hours="$(( uptime / 60 / 60 % 24))"
days="$(( uptime / 60 / 60 / 24 % 30))"
months="$(( uptime / 60 / 60 / 24 / 30 % 12))"
years="$(( uptime / 60 / 60 / 24 / 30 / 12))"
# Output depending on the scale of the uptime
if [[ years -ge 1 ]]; then
outputYears=true
outputMonths=true
outputDays=true
elif [[ months -ge 1 ]]; then
outputMonths=true
outputDays=true
elif [[ days -ge 1 ]]; then
outputDays=true
outputHours=true
outputMinutes=true
elif [[ hours -ge 1 ]]; then
outputHours=true
outputMinutes=true
elif [[ minutes -ge 1 ]]; then
outputMinutes=true
outputSeconds=true
else
outputSeconds=true
fi
# Output each element
output=''
if [[ "$outputYears" == true ]]; then
output+="\033[34m$years"
if [[ "$years" == 1 ]]; then
output+=' year\033[0m\n'
else
output+=' years\033[0m\n'
fi
fi
if [[ "$outputMonths" == true ]]; then
output+="\033[34m$months"
if [[ "$months" == 1 ]]; then
output+=' month\033[0m\n'
else
output+=' months\033[0m\n'
fi
fi
if [[ "$outputDays" == true ]]; then
output+="\033[34m$days"
if [[ "$days" == 1 ]]; then
output+=' day\033[0m\n'
else
output+=' days\033[0m\n'
fi
fi
if [[ "$outputHours" == true ]]; then
output+="\033[34m$hours"
if [[ "$hours" == 1 ]]; then
output+=' hour\033[0m\n'
else
output+=' hours\033[0m\n'
fi
fi
if [[ "$outputMinutes" == true ]]; then
output+="\033[34m$minutes"
if [[ "$minutes" == 1 ]]; then
output+=' minute\033[0m\n'
else
output+=' minutes\033[0m\n'
fi
fi
if [[ "$outputSeconds" == true ]]; then
output+="\033[34m$seconds"
if [[ "$seconds" == 1 ]]; then
output+=' second\033[0m\n'
else
output+=' seconds\033[0m\n'
fi
fi
# Replace newlines with a comma
echo "Host up for $(echo -ne "$output" | paste -s -d ';' - | sed "s/\;/\, /g")"
}
registerSummarizer "Uptime" uptimeSummarizer
@@ -0,0 +1,12 @@
function quotaSummarizer() {
# Get current quota information in MB (integers) and % of total
quota_used=$(quota -lgs | grep '/dev/' | sed 's/ \/dev\/[a-z]\+[0-9] \+\([0-9]\+\?\)M.*/\1/')
quota_total=$(quota -lgs | grep '/dev/' | sed 's/ \/dev\/[a-z]\+[0-9] \+[0-9]\+\?M \+\([0-9]\+\?\)M.*/\1/')
quota_free=$(( $quota_total - $quota_used ))
quota_percentage=$(( $quota_used * 100 / $quota_total ))
echo "Used \033[34m$quota_used MB\033[0m of \033[34m$quota_total MB\033[0m (\033[34m$quota_percentage %\033[0m)"
echo -n "\033[34m$quota_free MB\033[0m available"
}
registerSummarizer "Quota" quotaSummarizer
@@ -0,0 +1,8 @@
function ramSummarizer() {
# Get current RAM usage in MB (integer)
ram_used=$(ps -u $USER -o rss= | awk '{rss += $1} END {printf("%0.f", rss / 1000)}')
echo -n "Used \033[34m$ram_used MB\033[0m"
}
registerSummarizer "RAM" ramSummarizer
+3
View File
@@ -0,0 +1,3 @@
---
- name: Collect fish functions from packages
command: fish -c _pkgs_collect_functions
+58
View File
@@ -0,0 +1,58 @@
---
- name: Set authorized SSH keys
authorized_key:
user: "{{ ansible_user_id }}"
state: present
key: "{{ item }}"
with_file: authorized_keys
- name: Get current shell
shell: "getent passwd {{ ansible_user_id }} | cut -d: -f7"
register: current_shell
changed_when: no
- name: Change shell to fish
command: chsh --shell /usr/bin/fish
when: "current_shell.stdout != '/usr/bin/fish'"
- name: Copy dotfiles to home directory
copy:
src: dotfiles/
dest: "{{ ansible_env.HOME }}/"
mode: preserve
- name: Copy Git config to home directory
template:
src: gitconfig.j2
dest: "{{ ansible_env.HOME }}/.config/git/config"
- name: Remove unneeded files
file:
path: "{{ item }}"
state: absent
loop:
- "{{ ansible_env.HOME }}/.bash_history"
- "{{ ansible_env.HOME }}/.bash_logout"
- "{{ ansible_env.HOME }}/.bash_profile"
- "{{ ansible_env.HOME }}/.bashrc"
- "{{ ansible_env.HOME }}/.emacs"
- "{{ ansible_env.HOME }}/.zcompdump"
- "{{ ansible_env.HOME }}/.zshrc"
- name: Download and update iTerm2 shell integration
get_url:
url: https://iterm2.com/shell_integration/fish
dest: "{{ ansible_env.HOME }}/.config/fish/conf.d/iterm2_integration.fish"
force: yes
- name: Download and update Oh My Fish! packages
git:
repo: "{{ item.value }}"
dest: "{{ ansible_env.HOME }}/.config/fish/pkgs/{{ item.key }}"
loop: "{{ omf_pkgs | dict2items }}"
notify: Collect fish functions from packages
- name: Disable Cron MAILTO
cronvar:
name: MAILTO
value: ""
+17
View File
@@ -0,0 +1,17 @@
; user settings
[user]
name = kodos-{{ ansible_user_id }}.codesignd.net
email = hostmaster@codesignd.net
; core settings
[advice]
detachedHead = false
[branch]
autoSetupRebase = always
[core]
editor = code -w
quotepath = false
[help]
autocorrect = 10
[push]
default = upstream