Compare commits
No commits in common. "3ca7eea87dd7555a44ee388d9e1c27d15b77c3d4" and "62df51f36323d6594a71d8994a0fc5d336d9b887" have entirely different histories.
3ca7eea87d
...
62df51f363
28 changed files with 12 additions and 1069 deletions
9
LICENSE
Normal file
9
LICENSE
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2024 velvettear
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
11
README.md
11
README.md
|
@ -1,8 +1,3 @@
|
||||||
```
|
# .dots
|
||||||
_ _
|
|
||||||
| | | |
|
personal dot files
|
||||||
__| | ___ | |_ ___
|
|
||||||
/ _` |/ _ \| __/ __|
|
|
||||||
| (_| | (_) | |_\__ \
|
|
||||||
(_)__,_|\___/ \__|___/
|
|
||||||
```
|
|
|
@ -1,20 +0,0 @@
|
||||||
foreground #fffff6
|
|
||||||
background #0E111C
|
|
||||||
cursor #fffff6
|
|
||||||
|
|
||||||
color0 #0E111C
|
|
||||||
color8 #1e253d
|
|
||||||
color1 #EEDCA1
|
|
||||||
color9 #ffffb4
|
|
||||||
color2 #C7C7C6
|
|
||||||
color10 #ffffe4
|
|
||||||
color3 #EED277
|
|
||||||
color11 #ffff83
|
|
||||||
color4 #7C7E83
|
|
||||||
color12 #909cba
|
|
||||||
color5 #ADADAF
|
|
||||||
color13 #cacafa
|
|
||||||
color6 #BFC0C2
|
|
||||||
color14 #dff1ff
|
|
||||||
color7 #eeebdf
|
|
||||||
color15 #fffff6
|
|
|
@ -1,50 +0,0 @@
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# https://sw.kovidgoyal.net/kitty/overview/#configuring-kitty
|
|
||||||
|
|
||||||
# pointer settings
|
|
||||||
default_pointer_shape arrow
|
|
||||||
|
|
||||||
# background and color settings
|
|
||||||
background_opacity 0.9
|
|
||||||
include ./colors.conf
|
|
||||||
|
|
||||||
# font settings
|
|
||||||
font_family Fira Code Nerd Font
|
|
||||||
bold_font auto
|
|
||||||
italic_font auto
|
|
||||||
bold_italic_font auto
|
|
||||||
font_size 12
|
|
||||||
|
|
||||||
# cursor settings
|
|
||||||
shell_integration no-cursor
|
|
||||||
cursor_shape underline
|
|
||||||
cursor_blink_interval 1
|
|
||||||
cursor_underline_thickness 1.0
|
|
||||||
|
|
||||||
# tab settings
|
|
||||||
tab_bar_edge bottom
|
|
||||||
tab_bar_align left
|
|
||||||
tab_bar_style powerline
|
|
||||||
tab_powerline_style slanted
|
|
||||||
|
|
||||||
# url settings
|
|
||||||
detect_urls yes
|
|
||||||
url_color #f6d66e
|
|
||||||
url_style dashed
|
|
||||||
|
|
||||||
# bell settings
|
|
||||||
enable_audio_bell no
|
|
||||||
|
|
||||||
# refresh settings
|
|
||||||
sync_to_monitor yes
|
|
||||||
|
|
||||||
# scrollback settings
|
|
||||||
scrollback_lines 10000
|
|
||||||
|
|
||||||
# keyboard shortcuts
|
|
||||||
map ctrl+shift+c no_op
|
|
||||||
map ctrl+shift+v no_op
|
|
||||||
map ctrl+alt+c copy_to_clipboard
|
|
||||||
map ctrl+alt+v paste_from_clipboard
|
|
|
@ -1,49 +0,0 @@
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# https://sw.kovidgoyal.net/kitty/overview/#configuring-kitty
|
|
||||||
|
|
||||||
# pointer settings
|
|
||||||
default_pointer_shape arrow
|
|
||||||
|
|
||||||
# background and color settings
|
|
||||||
background_opacity 0.9
|
|
||||||
|
|
||||||
# font settings
|
|
||||||
font_family Fira Code Nerd Font
|
|
||||||
bold_font auto
|
|
||||||
italic_font auto
|
|
||||||
bold_italic_font auto
|
|
||||||
font_size 12
|
|
||||||
|
|
||||||
# cursor settings
|
|
||||||
shell_integration no-cursor
|
|
||||||
cursor_shape underline
|
|
||||||
cursor_blink_interval 1
|
|
||||||
cursor_underline_thickness 1.0
|
|
||||||
|
|
||||||
# tab settings
|
|
||||||
tab_bar_edge bottom
|
|
||||||
tab_bar_align left
|
|
||||||
tab_bar_style powerline
|
|
||||||
tab_powerline_style slanted
|
|
||||||
|
|
||||||
# url settings
|
|
||||||
detect_urls yes
|
|
||||||
url_color #aa0000
|
|
||||||
url_style dashed
|
|
||||||
|
|
||||||
# bell settings
|
|
||||||
enable_audio_bell no
|
|
||||||
|
|
||||||
# refresh settings
|
|
||||||
sync_to_monitor yes
|
|
||||||
|
|
||||||
# scrollback settings
|
|
||||||
scrollback_lines 10000
|
|
||||||
|
|
||||||
# keyboard shortcuts
|
|
||||||
map ctrl+shift+c no_op
|
|
||||||
map ctrl+shift+v no_op
|
|
||||||
map ctrl+alt+c copy_to_clipboard
|
|
||||||
map ctrl+alt+v paste_from_clipboard
|
|
|
@ -1,10 +0,0 @@
|
||||||
# Automatically generated file; DO NOT EDIT!
|
|
||||||
# The purpose is to snapshot the settings used when psd was activated.
|
|
||||||
# Any edits to the live config: /home/velvettear/.config/psd/psd.conf
|
|
||||||
# will be applied the _next_ time psd is activated.
|
|
||||||
#
|
|
||||||
USE_OVERLAYFS="yes"
|
|
||||||
USE_SUSPSYNC=""
|
|
||||||
BROWSERS="firefox"
|
|
||||||
USE_BACKUPS="yes"
|
|
||||||
BACKUP_LIMIT="1"
|
|
|
@ -1,70 +0,0 @@
|
||||||
#
|
|
||||||
# $XDG_CONFIG_HOME/psd/psd.conf
|
|
||||||
#
|
|
||||||
# For documentation, refer man 1 psd or to the wiki page
|
|
||||||
# https://wiki.archlinux.org/index.php/Profile-sync-daemon
|
|
||||||
|
|
||||||
## NOTE the following:
|
|
||||||
## To protect data from corruption, in the event that you do make an edit while
|
|
||||||
## psd is active, any changes made will be applied the next time you start psd.
|
|
||||||
|
|
||||||
# Uncomment and set to "yes" to use overlayfs instead of a full copy to reduce
|
|
||||||
# the memory costs and to improve sync/unsync operations. Note that your kernel
|
|
||||||
# MUST have this module available in order to use this mode.
|
|
||||||
#
|
|
||||||
USE_OVERLAYFS="yes"
|
|
||||||
|
|
||||||
# Uncomment and set to "yes" to resync on suspend to reduce potential data loss.
|
|
||||||
# Note that your system MUST have gdbus from glib2 installed to use this mode.
|
|
||||||
#
|
|
||||||
#USE_SUSPSYNC="no"
|
|
||||||
|
|
||||||
# List any browsers in the array below to have managed by psd. Useful if you do
|
|
||||||
# not wish to have all possible browser profiles managed which is the default if
|
|
||||||
# this array is left commented.
|
|
||||||
#
|
|
||||||
# Possible values:
|
|
||||||
# chromium
|
|
||||||
# chromium-dev
|
|
||||||
# conkeror.mozdev.org
|
|
||||||
# epiphany
|
|
||||||
# falkon
|
|
||||||
# firefox
|
|
||||||
# firefox-trunk
|
|
||||||
# google-chrome
|
|
||||||
# google-chrome-beta
|
|
||||||
# google-chrome-unstable
|
|
||||||
# heftig-aurora
|
|
||||||
# icecat
|
|
||||||
# inox
|
|
||||||
# luakit
|
|
||||||
# midori
|
|
||||||
# opera
|
|
||||||
# opera-beta
|
|
||||||
# opera-developer
|
|
||||||
# opera-legacy
|
|
||||||
# otter-browser
|
|
||||||
# qupzilla
|
|
||||||
# qutebrowser
|
|
||||||
# palemoon
|
|
||||||
# rekonq
|
|
||||||
# seamonkey
|
|
||||||
# surf
|
|
||||||
# vivaldi
|
|
||||||
# vivaldi-snapshot
|
|
||||||
#
|
|
||||||
BROWSERS=("firefox")
|
|
||||||
|
|
||||||
# Uncomment and set to "no" to completely disable the crash recovery feature.
|
|
||||||
#
|
|
||||||
# The default is to create crash recovery backups if the system is ungracefully
|
|
||||||
# powered-down due to a kernel panic, hitting the reset switch, battery going
|
|
||||||
# dead, etc. Some users keep very diligent backups and don't care to have this
|
|
||||||
# feature enabled.
|
|
||||||
USE_BACKUPS="yes"
|
|
||||||
|
|
||||||
# Uncomment and set to an integer that is the maximum number of crash recovery
|
|
||||||
# snapshots to keep (the oldest ones are deleted first).
|
|
||||||
#
|
|
||||||
# The default is to save the most recent 5 crash recovery snapshots.
|
|
||||||
BACKUP_LIMIT=1
|
|
|
@ -1,53 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# usage:
|
|
||||||
# notify.sh <topic> <payload> [options]
|
|
||||||
# documentation @ https://docs.ntfy.sh/publish
|
|
||||||
|
|
||||||
url="https://notify.velvettear.de"
|
|
||||||
user="velvettear"
|
|
||||||
password="\$Velvet90"
|
|
||||||
|
|
||||||
[[ -z "$1" ]] && printf "error: no topic specified\n" 1>&2 && exit 1
|
|
||||||
[[ -z "$2" ]] && printf "error: no payload specified\n" 1>&2 && exit 1
|
|
||||||
|
|
||||||
url="$url/$1"
|
|
||||||
payload="$2"
|
|
||||||
|
|
||||||
# check if payload is a file
|
|
||||||
if [[ -e "$payload" ]]; then
|
|
||||||
args+=("-T" "$(realpath $payload)" "-H" "Filename: $(basename $payload)")
|
|
||||||
else
|
|
||||||
args+=("-d" "$payload")
|
|
||||||
fi
|
|
||||||
|
|
||||||
# check for valid priority level
|
|
||||||
function checkPriority() {
|
|
||||||
prio="$(printf "$1" | tr '[:upper:]' '[:lower:]')"
|
|
||||||
if [[ "$prio" == "min" ]] || [[ "$prio" == "low" ]] || [[ "$prio" == "default" ]] || [[ "$prio" == "high" ]] || [[ "$prio" == "max" ]] || [[ "$prio" == "urgent" ]]; then
|
|
||||||
args+=("-H" "Priority: $prio")
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# check arguments
|
|
||||||
index=1
|
|
||||||
for arg in "$@"; do
|
|
||||||
((index++))
|
|
||||||
value="${@[$index]}"
|
|
||||||
case "$arg" in
|
|
||||||
-e|--emoji|-i|--icon)
|
|
||||||
args+=("-H" "Tags: $value")
|
|
||||||
;;
|
|
||||||
-p|--priority)
|
|
||||||
checkPriority "$value"
|
|
||||||
;;
|
|
||||||
-t|--title)
|
|
||||||
args+=("-H" "Title: $value")
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
curl -s -u $user:$password ${args[@]} $url
|
|
|
@ -1,80 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
url="https://notify.velvettear.de/ups"
|
|
||||||
user="velvettear"
|
|
||||||
password="\$Velvet90"
|
|
||||||
|
|
||||||
[[ -z "$1" ]] && printf "error: no argument specified\n" 1>&2 && exit 1
|
|
||||||
|
|
||||||
ups="eaton"
|
|
||||||
|
|
||||||
charge="$(upsc $ups battery.charge 2> /dev/null)"
|
|
||||||
time="$(upsc $ups battery.runtime 2> /dev/null)"
|
|
||||||
time="$(date -d@$time -u '+%H:%M:%S')"
|
|
||||||
|
|
||||||
title="$(printf "$1" | tr '[:upper:]' '[:lower:]')"
|
|
||||||
prio="default"
|
|
||||||
|
|
||||||
if [[ "$title" == "online" ]]; then
|
|
||||||
msg="$ups is running on line power
|
|
||||||
battery @ $charge% | $time"
|
|
||||||
emoji="electric_plug"
|
|
||||||
elif [[ "$title" == "onbatt" ]]; then
|
|
||||||
msg="$ups is running on battery
|
|
||||||
battery @ $charge% | $time"
|
|
||||||
prio="high"
|
|
||||||
emoji="battery"
|
|
||||||
elif [[ "$title" == "lowbatt" ]]; then
|
|
||||||
msg="$ups's battery is running low battery @ $charge% | $time"
|
|
||||||
prio="max"
|
|
||||||
emoji="exclamation"
|
|
||||||
elif [[ "$title" == "fsd" ]]; then
|
|
||||||
msg="forced shutdown in progress"
|
|
||||||
prio="max"
|
|
||||||
emoji="bangbang"
|
|
||||||
elif [[ "$title" == "commok" ]]; then
|
|
||||||
msg="communication with $ups established"
|
|
||||||
emoji="heavy_check_mark"
|
|
||||||
elif [[ "$title" == "commbad" ]]; then
|
|
||||||
msg="communication with $ups lost"
|
|
||||||
prio="high"
|
|
||||||
emoji="x"
|
|
||||||
elif [[ "$title" == "shutdown" ]]; then
|
|
||||||
msg="shutdown in progress"
|
|
||||||
prio="max"
|
|
||||||
emoji="bangbang"
|
|
||||||
elif [[ "$title" == "replbatt" ]]; then
|
|
||||||
msg="$ups's battery is dying and needs to be replaced"
|
|
||||||
prio="urgent"
|
|
||||||
emoji="skull_and_crossbones"
|
|
||||||
elif [[ "$title" == "nocomm" ]]; then
|
|
||||||
msg="$ups is currently unavailable"
|
|
||||||
prio="high"
|
|
||||||
emoji="interrobang"
|
|
||||||
elif [[ "$title" == "noparent" ]]; then
|
|
||||||
msg="upsmon parent process died and no further actions are possible"
|
|
||||||
prio="high"
|
|
||||||
emoji="skull"
|
|
||||||
elif [[ "$title" == "cal" ]]; then
|
|
||||||
msg="$ups is currently calibrating"
|
|
||||||
emoji="gear"
|
|
||||||
elif [[ "$title" == "off" ]]; then
|
|
||||||
msg="$ups is administratively off or asleep"
|
|
||||||
emoji="grey_exclamation"
|
|
||||||
elif [[ "$title" == "notoff" ]]; then
|
|
||||||
msg="$ups is no longer administratively off or asleep"
|
|
||||||
emoji="grey_exclamation"
|
|
||||||
elif [[ "$title" == "bypass" ]]; then
|
|
||||||
msg="$ups is currently bypassed"
|
|
||||||
emoji="grey_exclamation"
|
|
||||||
elif [[ "$title" == "notbypass" ]]; then
|
|
||||||
msg="$ups is no longer bypassed"
|
|
||||||
emoji="grey_exclamation"
|
|
||||||
else
|
|
||||||
printf "error: argument unknown\n" 1>&2 && exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
curl -u $user:$password -d "$msg" -H "Title: $title" -H "Priority: $prio" -H "Tags: $emoji" $url
|
|
|
@ -1,35 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# check if we're running in a subshell, forbid direct execution
|
|
||||||
[[ "$ZSH_EVAL_CONTEXT" == "toplevel" ]] && printf "error: direct execution of this script is forbidden!\n" >&2 && exit 1
|
|
||||||
|
|
||||||
# get the "home" directory
|
|
||||||
home="$(dirname $(realpath "$0"))"
|
|
||||||
|
|
||||||
# check if .env file exists and source it
|
|
||||||
env="$home/$(hostname).env"
|
|
||||||
[[ ! -r "$env" ]] && printf "error: config file '"$env"' does not exist!\n" >&2 && exit 1
|
|
||||||
source "$env"
|
|
||||||
|
|
||||||
# check if backup directories are defined
|
|
||||||
[[ -z "$RESTIC_DIRECTORIES" ]] && printf "error: config file '"$env"' does not define any backup directories!\n" >&2 && exit 1
|
|
||||||
|
|
||||||
printf ">> starting restic backup to repository '"$RESTIC_REPOSITORY"'...\n"
|
|
||||||
|
|
||||||
# execute "pre" action if defined
|
|
||||||
[[ -n "$RESTIC_BACKUP_PRE" ]] && eval "$RESTIC_BACKUP_PRE"
|
|
||||||
|
|
||||||
for directory in ${RESTIC_DIRECTORIES[@]}; do
|
|
||||||
seconds="$SECONDS"
|
|
||||||
printf "\n> backing up '"$directory"'...\n"
|
|
||||||
sudo --preserve-env -u "$RESTIC_USER" restic backup --verbose --no-scan --retry-lock 3h --no-cache "$directory"
|
|
||||||
printf "> backup of '"$directory"' finished after "$(( $SECONDS - $seconds ))" seconds!\n"
|
|
||||||
done
|
|
||||||
|
|
||||||
# execute "post" action if defined
|
|
||||||
[[ -n "$RESTIC_BACKUP_POST" ]] && eval "$RESTIC_BACKUP_POST"
|
|
||||||
|
|
||||||
printf "\n>> restic backup finished after "$SECONDS" seconds!\n"
|
|
|
@ -1,26 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# check if we're running in a subshell, forbid direct execution
|
|
||||||
[[ "$ZSH_EVAL_CONTEXT" == "toplevel" ]] && printf "error: direct execution of this script is forbidden!\n" >&2 && exit 1
|
|
||||||
|
|
||||||
# define title and icon for the notification
|
|
||||||
export RESTIC_NTFY_TITLE="prune"
|
|
||||||
export RESTIC_NTFY_ICON="red_circle"
|
|
||||||
|
|
||||||
# clear cache directory
|
|
||||||
rm -rf "/var/cache/restic"
|
|
||||||
|
|
||||||
printf ">> pruning repository '"$RESTIC_REPOSITORY"'...\n\n"
|
|
||||||
|
|
||||||
# execute "pre" action if defined
|
|
||||||
[[ -n "$RESTIC_PRUNE_PRE" ]] && eval "$RESTIC_PRUNE_PRE"
|
|
||||||
|
|
||||||
sudo --preserve-env -u "$RESTIC_USER" restic forget --keep-daily 7 --keep-weekly 1 --keep-monthly 1 --prune --retry-lock 3h --no-cache
|
|
||||||
|
|
||||||
# execute "post" action if defined
|
|
||||||
[[ -n "$RESTIC_PRUNE_POST" ]] && eval "$RESTIC_PRUNE_POST"
|
|
||||||
|
|
||||||
printf "\n>> repository pruned after "$SECONDS" seconds!\n"
|
|
|
@ -1,35 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# define user
|
|
||||||
export RESTIC_USER="restic"
|
|
||||||
|
|
||||||
# override default repository
|
|
||||||
export RESTIC_REPOSITORY="/mnt/restic"
|
|
||||||
|
|
||||||
# define pre and post backup actions
|
|
||||||
export RESTIC_BACKUP_PRE="printf '\n> mounting remote storage...\n' && mount -t nfs -o vers=4,soft,noatime,nolock,retrans=1,timeo=10 192.168.100.1:/mnt/storage /mnt/n100"
|
|
||||||
export RESTIC_BACKUP_POST="printf '\n> unmounting remote storage...\n' && umount /mnt/n100"
|
|
||||||
|
|
||||||
# define pre and post prune actions
|
|
||||||
export RESTIC_PRUNE_PRE=""
|
|
||||||
export RESTIC_PRUNE_POST=""
|
|
||||||
|
|
||||||
# define title and icon for the notification
|
|
||||||
export RESTIC_NTFY_TITLE="storage"
|
|
||||||
export RESTIC_NTFY_ICON="yellow_circle"
|
|
||||||
|
|
||||||
# define backup directories
|
|
||||||
export RESTIC_DIRECTORIES=(
|
|
||||||
"/mnt/n100/audiobooks"
|
|
||||||
"/mnt/n100/comics"
|
|
||||||
"/mnt/n100/documents"
|
|
||||||
"/mnt/n100/ebooks"
|
|
||||||
"/mnt/n100/images"
|
|
||||||
"/mnt/n100/music"
|
|
||||||
"/mnt/n100/software"
|
|
||||||
"/mnt/n100/syncthing"
|
|
||||||
"/mnt/n100/videos"
|
|
||||||
)
|
|
|
@ -1,48 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# exit on error
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# check permissions
|
|
||||||
[[ "$EUID" != 0 ]] && printf "error: permission denied!\n" >&2 && exit 1
|
|
||||||
|
|
||||||
# check which action to execute
|
|
||||||
[[ -n "$1" ]] && action="$1" || action="backup"
|
|
||||||
|
|
||||||
# check if script exists
|
|
||||||
script="$(dirname $(realpath "$0"))/$action.sh"
|
|
||||||
[[ ! -x "$script" ]] && printf "error: script '"$script"' does not exist or is not executable!\n" >&2 && exit 1
|
|
||||||
|
|
||||||
# get the "home" directory
|
|
||||||
home="$(dirname $(realpath "$0"))"
|
|
||||||
|
|
||||||
# setup restic
|
|
||||||
export RESTIC_USER="$(whoami)"
|
|
||||||
export RESTIC_REPOSITORY="rest:http://192.168.100.101:8000"
|
|
||||||
export RESTIC_PASSWORD="\$Velvet90"
|
|
||||||
export RESTIC_COMPRESSION="auto"
|
|
||||||
export RESTIC_CACHE_DIR="/var/cache/restic"
|
|
||||||
export RESTIC_LOG="/var/log/restic-$action.log"
|
|
||||||
|
|
||||||
# check if .env file exists and source it
|
|
||||||
env="$home/$(hostname).env"
|
|
||||||
[[ -r "$env" ]] && source "$env"
|
|
||||||
|
|
||||||
# set default values for the notification if undefined
|
|
||||||
[[ -z "$RESTIC_NTFY_TITLE" ]] && RESTIC_NTFY_TITLE="$(hostname)"
|
|
||||||
[[ -z "$RESTIC_NTFY_ICON" ]] && RESTIC_NTFY_ICON="white_circle"
|
|
||||||
|
|
||||||
# execute "pre" action if defined
|
|
||||||
[[ -n "$RESTIC_ACTION_PRE" ]] && eval "$RESTIC_ACTION_PRE"
|
|
||||||
|
|
||||||
# source / execute restic script
|
|
||||||
source "$script" > >(tee "$RESTIC_LOG") 2>&1
|
|
||||||
|
|
||||||
# execute "post" action if defined
|
|
||||||
[[ -n "$RESTIC_ACTION_POST" ]] && eval "$RESTIC_ACTION_POST"
|
|
||||||
|
|
||||||
# send a notification
|
|
||||||
/etc/velvettear/scripts/notify.sh "restic" "$RESTIC_LOG" --title "$RESTIC_NTFY_TITLE" --icon "$RESTIC_NTFY_ICON" > /dev/null
|
|
|
@ -1,39 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
trap 'printf "\n>> batch scan aborted after $SECONDS seconds!\n" && exit 0' SIGINT
|
|
||||||
|
|
||||||
directory="$1"
|
|
||||||
tmp="$(mktemp -d)"
|
|
||||||
[[ -z "$directory" ]] && directory="$tmp"
|
|
||||||
|
|
||||||
mkdir -p "$directory"
|
|
||||||
[[ ! -d "$directory" ]] && printf "error: directory '"$directory"' does not exist and can not be created!\n" >&2 && exit 1
|
|
||||||
|
|
||||||
printf ">> batch scan started...\n"
|
|
||||||
|
|
||||||
postprocess() {
|
|
||||||
ocr="$(/home/velvettear/.dots/scripts/ocr.sh "$file")"
|
|
||||||
printf "> #"$3": ocr for file '"$file"' finished!\n"
|
|
||||||
printf "$ocr" > "$file.ocr"
|
|
||||||
if [[ "$directory" != "$tmp" ]]; then
|
|
||||||
mv "$file" "$directory"
|
|
||||||
mv "$file.ocr" "$directory"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
counter=1
|
|
||||||
while true; do
|
|
||||||
sleep 1
|
|
||||||
file="$tmp/$(date '+%Y-%m-%d_%H%M%S.png')"
|
|
||||||
scanimage --format="png" --output-file "$file" --resolution "300" --mode "Color" 2> /dev/null
|
|
||||||
if [[ "$?" != "0" ]]; then
|
|
||||||
rm -rf "$file" 2> /dev/null
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
printf "> #"$counter": scanning to '"$file"' finished!\n"
|
|
||||||
#postprocess "$file" "$directory" "$counter"
|
|
||||||
((counter++))
|
|
||||||
done
|
|
|
@ -1,11 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
file="$1"
|
|
||||||
[[ ! -f "$file" ]] && printf "error: specified file '"$file"' does not exist!\n" >&2 && exit 1
|
|
||||||
|
|
||||||
export OMP_THREAD_LIMIT=1
|
|
||||||
|
|
||||||
tesseract "$file" - -l "deu+eng"
|
|
|
@ -1,27 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
name="$1"
|
|
||||||
directory="$2"
|
|
||||||
[[ -z "$directory" ]] && directory="$(mktemp -d)"
|
|
||||||
|
|
||||||
[[ -z "$name" ]] && name="$(date '+%Y-%m-%d_%H%M%S').png"
|
|
||||||
[[ "$name" != *".png" ]] && name="$name.png"
|
|
||||||
|
|
||||||
mkdir -p "$directory"
|
|
||||||
[[ ! -d "$directory" ]] && printf "error: directory '"$directory"' does not exist and can not be created!\n" >&2 && exit 1
|
|
||||||
|
|
||||||
output="$directory/$name"
|
|
||||||
|
|
||||||
scanimage --format="png" --output-file "$output" --resolution "300" --mode "Color" 2> /dev/null
|
|
||||||
|
|
||||||
[[ ! -e "$output" ]] && printf "error: no document was scanned!\n" >&2 && exit 1
|
|
||||||
if [[ "$(du "$output" | awk '{print $1}')" == "0" ]]; then
|
|
||||||
printf "error: scanned document '"$output"' is empty!\n" >&2
|
|
||||||
rm -rf "$output"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "$output\n"
|
|
|
@ -1,60 +0,0 @@
|
||||||
#!/usr/bin/env ash
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# exit on ctrl-c
|
|
||||||
trap 'printf ""$font_colored_bold"\n>> system update aborted!"$font_default"\n" && exit 1' SIGINT
|
|
||||||
|
|
||||||
# font styles & colors
|
|
||||||
font_default="\e[0m"
|
|
||||||
font_colored="\e[32;1m"
|
|
||||||
font_colored_bold="\e[31;1m"
|
|
||||||
|
|
||||||
[[ "$(id -u)" != "0" ]] && printf ""$font_colored_bold">> error: permission denied!"$font_default"\n" && exit 1
|
|
||||||
|
|
||||||
for arg in "$@"; do
|
|
||||||
case "$arg" in
|
|
||||||
-n|--noconfirm)
|
|
||||||
noconfirm="true"
|
|
||||||
;;
|
|
||||||
-r|--reboot)
|
|
||||||
reboot="true"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
printf ""$font_colored_bold">> system update started..."$font_default"\n"
|
|
||||||
|
|
||||||
printf ""$font_colored"> updating packages..."$font_default"\n"
|
|
||||||
[[ "$noconfirm" ]] && apk --update-cache upgrade --progress || apk --update-cache upgrade --progress --interactive
|
|
||||||
|
|
||||||
orphans="$(apk list --orphaned | awk '{print $1}' 2> /dev/null)"
|
|
||||||
if [[ "$orphans" ]]; then
|
|
||||||
orphans="$(printf "$orphans" | tr '\n' ' ')"
|
|
||||||
printf ""$font_colored"> removing orphaned packages..."$font_default"\n"
|
|
||||||
[[ "$noconfirm" ]] && apk del --purge --progress $orphans || apk del --purge --progress --interactive $orphans
|
|
||||||
fi
|
|
||||||
|
|
||||||
[[ -f "/etc/motd" ]] && printf ""$font_colored"> removing '/etc/motd'..."$font_default"\n" && rm -f "/etc/motd"
|
|
||||||
|
|
||||||
script="$(dirname $(realpath $0))/conf.d/$(hostname).sh"
|
|
||||||
[[ -x "$script" ]] && printf ""$font_colored"> executing script "$script"..."$font_default"\n" && (. "$script")
|
|
||||||
|
|
||||||
printf ""$font_colored"> cleaning cache..."$font_default"\n"
|
|
||||||
apk cache clean &> /dev/null
|
|
||||||
rm -rf "/var/cache/apk/*"
|
|
||||||
|
|
||||||
printf ""$font_colored_bold">> system updated finished!"$font_default"\n"
|
|
||||||
|
|
||||||
[[ ! "$reboot" ]] && exit 0
|
|
||||||
|
|
||||||
timeout="5"
|
|
||||||
printf ""$font_colored"> rebooting system in "
|
|
||||||
while [[ "$timeout" -gt "0" ]]; do
|
|
||||||
printf "$timeout... "
|
|
||||||
timeout="$(( timeout - 1 ))"
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
printf "now!"$font_default"\n"
|
|
||||||
reboot
|
|
|
@ -1,74 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# font styles & colors
|
|
||||||
DEFAULT=$(tput sgr0)
|
|
||||||
BOLD=$(tput bold)
|
|
||||||
RED=$(tput setaf 1)
|
|
||||||
GREEN=$(tput setaf 2)
|
|
||||||
YELLOW=$(tput setaf 3)
|
|
||||||
|
|
||||||
# exit on ctr-c
|
|
||||||
trap 'printf ""${BOLD}${RED}"\n>> system update aborted after "$SECONDS" seconds!"${DEFAULT}"\n" && exit 1' SIGINT
|
|
||||||
|
|
||||||
# parse arguments
|
|
||||||
for arg in "$@"; do
|
|
||||||
case "$arg" in
|
|
||||||
-n|--noconfirm)
|
|
||||||
noconfirm="--noconfirm"
|
|
||||||
;;
|
|
||||||
-r|--reboot)
|
|
||||||
reboot="true"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# sudo
|
|
||||||
sudo id -u 2&> /dev/null
|
|
||||||
|
|
||||||
printf "${BOLD}${YELLOW}>> starting system update...${DEFAULT}\n"
|
|
||||||
|
|
||||||
# upgrade installed packages
|
|
||||||
printf "${YELLOW}> upgrading packages...${DEFAULT}\n"
|
|
||||||
paru -Syu --sudoloop --combinedupgrade --devel --cleanafter $noconfirm
|
|
||||||
[[ "$?" != "0" ]] && printf "${RED}>> encountered an error upgrading packages!${DEFAULT}\n" && exit 1
|
|
||||||
printf "${GREEN}> packages successfully upgraded!${DEFAULT}\n"
|
|
||||||
|
|
||||||
# remove unused packages
|
|
||||||
unused="$(paru -Qtdq --sudoloop)"
|
|
||||||
if [[ -n "$unused" ]]; then
|
|
||||||
printf "${YELLOW}> removing unused packages...${DEFAULT}\n"
|
|
||||||
paru -Rns --sudoloop --devel --cleanafter $noconfirm $unused
|
|
||||||
[[ "$?" != "0" ]] && printf "${RED}>> encountered an error removing unused packages!${DEFAULT}\n" && exit 1
|
|
||||||
printf "${GREEN}> successfully removed unused packages!${DEFAULT}\n"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# clean the pacman cache
|
|
||||||
printf "${YELLOW}> cleaning pacman & paru cache directories...${DEFAULT}\n"
|
|
||||||
sudo rm -rf "/var/cache/pacman/*"
|
|
||||||
sudo rm -rf "$HOME/.cache/paru"
|
|
||||||
[[ "$?" != "0" ]] && printf "${RED}>> encountered an error cleaning the pacman & paru cache directories!${DEFAULT}\n" && exit 1
|
|
||||||
printf "${GREEN}> successfully cleaned the pacman & paru cache directories!${DEFAULT}\n"
|
|
||||||
|
|
||||||
printf "${BOLD}${YELLOW}>> system updated finished after "$SECONDS" seconds!${DEfAULT}\n"
|
|
||||||
|
|
||||||
[[ -z "$reboot" ]] && exit 0
|
|
||||||
|
|
||||||
# reboot the system
|
|
||||||
timeout="5"
|
|
||||||
while [[ "$timeout" -gt "0" ]]; do
|
|
||||||
if [[ "$timeout" -gt "3" ]]; then
|
|
||||||
color="${GREEN}"
|
|
||||||
elif [[ "$timeout" -gt "1" ]]; then
|
|
||||||
color="${YELLOW}"
|
|
||||||
else
|
|
||||||
color="${RED}"
|
|
||||||
fi
|
|
||||||
printf "\r${color}> system reboot in ${BOLD}$timeout${DEFAULT} seconds..."
|
|
||||||
timeout="$((timeout - 1))"
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
printf "\r${color}> system going down for reboot ${BOLD}NOW!${DEFAULT}\n"
|
|
||||||
sudo systemctl reboot 2> /dev/null
|
|
|
@ -1,41 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
ariang="/srv/ariang"
|
|
||||||
user="nginx"
|
|
||||||
|
|
||||||
[[ ! -e "$ariang" ]] && printf "> error: directory '"$ariang"' does not exist\n" 1>&2 && exit 1
|
|
||||||
|
|
||||||
file="$(find $ariang -type f -iname 'aria-ng*.min.js' -exec realpath {} \;)"
|
|
||||||
[[ -z "$file" ]] && printf "> error: could not determine file to extract the current version from\n" 1>&2 && exit 1
|
|
||||||
current_version="$(awk -F'buildVersion:"|\",buildCommit' '{print $2}' "$file" | xargs | cut -d "v" -f2)"
|
|
||||||
[[ -z "$current_version" ]] && printf "> error: could not determine current version\n" 1>&2 && exit 1
|
|
||||||
|
|
||||||
latest_release="$(curl -s -L https://api.github.com/repos/mayswind/AriaNg/releases/latest | grep tag_name | cut -d "\"" -f4 | cut -d "v" -f2)"
|
|
||||||
[[ -z "$latest_release" ]] && printf "> error: could not determine latest release\n" 1>&2 && exit 1
|
|
||||||
|
|
||||||
[[ "$current_version" == "$latest_release" ]] && printf "> current version '"$current_version"' is already up to date\n" && exit 0
|
|
||||||
|
|
||||||
tmp="$(mktemp -d)"
|
|
||||||
printf "> downloading latest release '"$latest_release"' to temporary directory '"$tmp"'..."
|
|
||||||
curl -s -L -o "$tmp/ariang-$latest_release.zip" "https://github.com/mayswind/AriaNg/releases/download/$latest_release/AriaNg-$latest_release.zip" &> /dev/null
|
|
||||||
[[ "$?" != "0" ]] && printf " error!\n" 1>&2 && exit 1
|
|
||||||
printf " done!\n"
|
|
||||||
|
|
||||||
printf "> extracting downloaded archive..."
|
|
||||||
cd "$tmp"
|
|
||||||
unzip "ariang-$latest_release.zip" &> /dev/null
|
|
||||||
[[ "$?" != "0" ]] && printf " error!\n" 1>&2 && exit 1
|
|
||||||
rm -rf "ariang-$latest_release.zip" &> /dev/null
|
|
||||||
printf " done!\n"
|
|
||||||
|
|
||||||
printf "> moving extracted files..."
|
|
||||||
rm -rf "$ariang" &> /dev/null
|
|
||||||
mv "$tmp" "$ariang" &> /dev/null
|
|
||||||
printf " done!\n"
|
|
||||||
|
|
||||||
printf "> setting correct permissions..."
|
|
||||||
chown -R "$user":"$user" "$ariang"
|
|
||||||
printf " done!\n"
|
|
|
@ -1,47 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
snappymail="/srv/snappymail"
|
|
||||||
user="nginx"
|
|
||||||
|
|
||||||
[[ ! -e "$snappymail" ]] && printf "> error: directory '"$snappymail"' does not exist\n" 1>&2 && exit 1
|
|
||||||
|
|
||||||
current_version="$(ls -ltr "$snappymail/snappymail/v" | tail -n 1 | awk '{print $NF}')"
|
|
||||||
[[ -z "$current_version" ]] && printf "> error: could not determine current version\n" 1>&2 && exit 1
|
|
||||||
|
|
||||||
latest_release="$(curl -s -L https://api.github.com/repos/the-djmaze/snappymail/releases/latest | grep tag_name | cut -d "\"" -f4 | cut -d "v" -f2)"
|
|
||||||
[[ -z "$latest_release" ]] && printf "> error: could not determine latest release\n" 1>&2 && exit 1
|
|
||||||
|
|
||||||
[[ "$current_version" == "$latest_release" ]] && printf "> current version '"$current_version"' is already up to date\n" && exit 0
|
|
||||||
|
|
||||||
printf "> updating snappymail...\n"
|
|
||||||
|
|
||||||
tmp="$(mktemp -d)"
|
|
||||||
printf "> downloading latest release '"$latest_release"' to temporary directory '"$tmp"'..."
|
|
||||||
curl -s -L -o "$tmp/snappymail-$latest_release.tar.gz" "https://github.com/the-djmaze/snappymail/releases/download/v$latest_release/snappymail-$latest_release.tar.gz" &> /dev/null
|
|
||||||
[[ "$?" != "0" ]] && printf " error!\n" 1>&2 && exit 1
|
|
||||||
printf " done!\n"
|
|
||||||
|
|
||||||
printf "> extracting downloaded archive..."
|
|
||||||
tar -xzf "$tmp/snappymail-$latest_release.tar.gz" -C "$snappymail" --overwrite &> /dev/null
|
|
||||||
[[ "$?" != "0" ]] && printf " error!\n" 1>&2 && exit 1
|
|
||||||
printf " done!\n"
|
|
||||||
|
|
||||||
printf "> getting custom themes..."
|
|
||||||
git clone "https://git.velvettear.de/velvettear/snappymail-themes.git" "/tmp/snappymail-themes"
|
|
||||||
themes="$(find "$snappymail/snappymail/v/$latest_release" -type d -iname "themes")"
|
|
||||||
find "/tmp/snappymail-themes" -mindepth 1 -maxdepth 1 ! -iname ".git" -type d -exec mv {} "$themes/" \;
|
|
||||||
rm -rf "/tmp/snappymail-themes"
|
|
||||||
|
|
||||||
printf "> setting correct permissions..."
|
|
||||||
find "$snappymail" -type d -exec chmod 755 {} \;
|
|
||||||
find "$snappymail" -type f -exec chmod 644 {} \;
|
|
||||||
chown -R "$user":"$user" "$snappymail"
|
|
||||||
printf " done!\n"
|
|
||||||
|
|
||||||
printf "> cleaning up..."
|
|
||||||
find "$snappymail/snappymail/v" -type d -maxdepth 1 ! -iname "v" ! -iname "$latest_release" -exec rm -rf {} \; &> /dev/null
|
|
||||||
rm -rf "$tmp"
|
|
||||||
printf " done!\n"
|
|
|
@ -1,52 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# exit on ctrl-c
|
|
||||||
trap 'printf ""$font_colored_bold"\n>> system update aborted after "$SECONDS" seconds!"$font_default"\n" && exit 1' SIGINT
|
|
||||||
|
|
||||||
# font styles & colors
|
|
||||||
font_default="\e[0m"
|
|
||||||
font_colored="\e[32;1m"
|
|
||||||
font_colored_bold="\e[31;1m"
|
|
||||||
|
|
||||||
[[ "$EUID" != "0" ]] && printf ""$font_colored_bold">> error: permission denied"$font_default"\n" && exit 1
|
|
||||||
|
|
||||||
for arg in "$@"; do
|
|
||||||
case "$arg" in
|
|
||||||
-n|--noconfirm)
|
|
||||||
noconfirm="true"
|
|
||||||
;;
|
|
||||||
-r|--reboot)
|
|
||||||
reboot="true"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
printf ""$font_colored_bold">> system update started..."$font_default"\n"
|
|
||||||
|
|
||||||
printf ""$font_colored"> updating packages..."$font_default"\n"
|
|
||||||
/usr/bin/apt-get update
|
|
||||||
[[ "$noconfirm" ]] && /usr/bin/apt-get upgrade -y || /usr/bin/apt-get upgrade
|
|
||||||
|
|
||||||
printf ""$font_colored"> cleaning cache..."$font_default"\n"
|
|
||||||
rm -rf "/var/cache//usr/bin/apt-get/*"
|
|
||||||
[[ "$noconfirm" ]] && /usr/bin/apt-get clean -y || /usr/bin/apt-get clean
|
|
||||||
|
|
||||||
printf ""$font_colored"> removing orphaned packages..."$font_default"\n"
|
|
||||||
[[ "$noconfirm" ]] && /usr/bin/apt-get autoremove --purge -y || /usr/bin/apt-get autoremove --purge
|
|
||||||
|
|
||||||
printf ""$font_colored_bold">> system updated finished after "$SECONDS" seconds!"$font_default"\n"
|
|
||||||
|
|
||||||
[[ ! "$reboot" ]] && exit 0
|
|
||||||
|
|
||||||
timeout="5"
|
|
||||||
printf ""$font_colored"> rebooting system in "
|
|
||||||
while [[ "$timeout" -gt "0" ]]; do
|
|
||||||
printf "$timeout... "
|
|
||||||
timeout="$(( timeout - 1 ))"
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
printf "now!"$font_default"\n"
|
|
||||||
systemctl reboot
|
|
|
@ -1,27 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# get distro and update script path
|
|
||||||
distro="$(grep "^ID" /etc/*release | cut -d "=" -f2)"
|
|
||||||
script="$(dirname $(realpath $0))/$distro.sh"
|
|
||||||
|
|
||||||
# check if update script exists
|
|
||||||
[ ! -x "$script" ] && printf "error: update script '"$script"' does not exist or is not executable!\n" >&2 && exit 1
|
|
||||||
|
|
||||||
args=""
|
|
||||||
for arg in "$@"; do
|
|
||||||
[ -n "$args" ] && args="$args "
|
|
||||||
args="$args$arg"
|
|
||||||
done
|
|
||||||
|
|
||||||
# execute update script
|
|
||||||
#if [ "$distro" == "arch" ]; then
|
|
||||||
# "$script" $args
|
|
||||||
if [ "$(id -u)" -eq 0 ] || [ "$distro" == "arch" ]; then
|
|
||||||
#elif [ "$(id -u)" -eq 0 ]; then
|
|
||||||
"$script" $args
|
|
||||||
else
|
|
||||||
sudo "$script" $args
|
|
||||||
fi
|
|
|
@ -1,11 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=Wake-on-LAN for %i
|
|
||||||
Requires=network.target
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/usr/bin/ethtool -s %i wol g
|
|
||||||
Type=oneshot
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
|
@ -1,50 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
# __ _ _ _
|
|
||||||
# / _| (_|_) |
|
|
||||||
# | |_ _ _ _ _| |_ ___ _ _
|
|
||||||
# | _| | | | | | __/ __| | | |
|
|
||||||
# | | | |_| | | | |_\__ \ |_| |
|
|
||||||
# |_| \__,_| |_|\__|___/\__,_|
|
|
||||||
# _/ |
|
|
||||||
# |__/
|
|
||||||
#
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# ----- general aliases ----- #
|
|
||||||
alias eza='eza --icons --group --time-style long-iso --octal-permissions --git'
|
|
||||||
alias ls='eza'
|
|
||||||
alias ll='eza --long'
|
|
||||||
alias la='eza --all'
|
|
||||||
alias lla='eza --long --all'
|
|
||||||
alias df='duf'
|
|
||||||
alias du='gdu'
|
|
||||||
alias grep='rg -P'
|
|
||||||
alias grepa='rg -P --hidden'
|
|
||||||
alias find='fd'
|
|
||||||
alias findf='fd --type file'
|
|
||||||
alias findd='fd --type directory'
|
|
||||||
alias findl='fd --type symlink'
|
|
||||||
alias finds='fd --type socket'
|
|
||||||
alias findp='fd --type pipe'
|
|
||||||
alias findx='fd --type executable'
|
|
||||||
alias finde='fd --type empty'
|
|
||||||
alias bat='bat --style header-filename,header-filesize,grid,snip,changes,numbers'
|
|
||||||
alias cat='bat'
|
|
||||||
alias batp='bat --style plain'
|
|
||||||
alias catp='batp'
|
|
||||||
alias pfetch='printf "\n" && pfetch'
|
|
||||||
alias fetch='pfetch'
|
|
||||||
alias stats='pfetch'
|
|
||||||
alias icat='kitten icat'
|
|
||||||
|
|
||||||
# ----- non-ssh aliases ----- #
|
|
||||||
if [[ -z "$SSH_TTY" ]]; then
|
|
||||||
alias ssh='kitty +kitten ssh'
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ----- pfetch ----- #
|
|
||||||
export PF_INFO="ascii title host kernel memory wm shell editor pkgs uptime palette"
|
|
||||||
|
|
||||||
# ----- kde ----- #
|
|
||||||
[[ -z "${DISPLAY}" ]] && [[ "${XDG_VTNR}" -eq 1 ]] && exec /usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland &> /dev/null
|
|
|
@ -1,48 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
# _____ ______
|
|
||||||
# | _ ||___ /
|
|
||||||
# _ __ | |_| | / /
|
|
||||||
# | '_ \ \____ | / /
|
|
||||||
# | | | |.___/ /./ /
|
|
||||||
# |_| |_|\____/ \_/
|
|
||||||
#
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# ----- general aliases ----- #
|
|
||||||
alias eza='eza --icons --group --time-style long-iso --octal-permissions --git'
|
|
||||||
alias ls='eza'
|
|
||||||
alias ll='eza --long'
|
|
||||||
alias la='eza --all'
|
|
||||||
alias lla='eza --long --all'
|
|
||||||
alias df='duf'
|
|
||||||
alias du='gdu'
|
|
||||||
alias grep='rg -P'
|
|
||||||
alias grepa='rg -P --hidden'
|
|
||||||
alias find='fd'
|
|
||||||
alias findf='fd --type file'
|
|
||||||
alias findd='fd --type directory'
|
|
||||||
alias findl='fd --type symlink'
|
|
||||||
alias finds='fd --type socket'
|
|
||||||
alias findp='fd --type pipe'
|
|
||||||
alias findx='fd --type executable'
|
|
||||||
alias finde='fd --type empty'
|
|
||||||
alias bat='bat --style header-filename,header-filesize,grid,snip,changes,numbers'
|
|
||||||
alias cat='bat'
|
|
||||||
alias batp='bat --style plain'
|
|
||||||
alias catp='batp'
|
|
||||||
alias pfetch='printf "\n" && pfetch'
|
|
||||||
alias fetch='pfetch'
|
|
||||||
alias stats='pfetch'
|
|
||||||
alias icat='kitten icat'
|
|
||||||
|
|
||||||
# ----- non-ssh aliases ----- #
|
|
||||||
if [[ -z "$SSH_TTY" ]]; then
|
|
||||||
alias ssh='kitty +kitten ssh'
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ----- pfetch ----- #
|
|
||||||
export PF_INFO="ascii title host kernel memory wm shell editor pkgs uptime palette"
|
|
||||||
|
|
||||||
# ----- kde ----- #
|
|
||||||
[[ -z "${DISPLAY}" ]] && [[ "${XDG_VTNR}" -eq 1 ]] && exec /usr/lib/plasma-dbus-run-session-if-needed /usr/bin/startplasma-wayland &> /dev/null
|
|
|
@ -1,21 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
# ___
|
|
||||||
# / |
|
|
||||||
# __ ___ _ / /| | __ _
|
|
||||||
# \ \/ / | | / /_| |/ _` |
|
|
||||||
# > <| |_| \___ | (_| |
|
|
||||||
# /_/\_\\__,_| |_/\__, |
|
|
||||||
# | |
|
|
||||||
# |_|
|
|
||||||
#
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# ----- general aliases ----- #
|
|
||||||
alias pfetch='printf "\n" && pfetch'
|
|
||||||
alias fetch='pfetch'
|
|
||||||
alias stats='pfetch'
|
|
||||||
alias icat='kitten icat'
|
|
||||||
|
|
||||||
# ----- pfetch ----- #
|
|
||||||
export PF_INFO="ascii title host kernel memory wm shell editor pkgs uptime palette"
|
|
37
zsh/zprofile
37
zsh/zprofile
|
@ -1,37 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
# __ _ _
|
|
||||||
# / _(_) |
|
|
||||||
# _____ __ _ __ ___ | |_ _| | ___
|
|
||||||
# |_ / '_ \| '__/ _ \| _| | |/ _ \
|
|
||||||
# _ / /| |_) | | | (_) | | | | | __/
|
|
||||||
# (_)___| .__/|_| \___/|_| |_|_|\___|
|
|
||||||
# | |
|
|
||||||
# |_|
|
|
||||||
#
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# ----- prompt ----- #
|
|
||||||
export PROMPT="%(!.%F{red}.)%n@%m > %/%(!.#.$) %f"
|
|
||||||
|
|
||||||
# ------ general ----- #
|
|
||||||
export USER="$(whoami)"
|
|
||||||
export HOST="$(hostname)"
|
|
||||||
export HOSTNAME="$HOST"
|
|
||||||
export TMP="/tmp"
|
|
||||||
export TEMP="/tmp"
|
|
||||||
export TMPDIR="/tmp"
|
|
||||||
export EDITOR="nvim"
|
|
||||||
export VISUAL="nvim"
|
|
||||||
if [[ "$(which bat 2> /dev/null)" ]]; then
|
|
||||||
export PAGER="bat"
|
|
||||||
else
|
|
||||||
export PAGER="less"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ----- history ----- #
|
|
||||||
export HISTFILE="$HOME/.zhistory"
|
|
||||||
export SAVEHIST="10000"
|
|
||||||
export HISTSIZE="10000"
|
|
||||||
export HISTTIMEFORMAT="%d.%m.%Y %H:%M:%S"
|
|
||||||
export HISTCONTROL="ignoredups"
|
|
40
zsh/zshrc
40
zsh/zshrc
|
@ -1,40 +0,0 @@
|
||||||
#!/usr/bin/env zsh
|
|
||||||
# _
|
|
||||||
# | |
|
|
||||||
# _______| |__ _ __ ___
|
|
||||||
# |_ / __| '_ \| '__/ __|
|
|
||||||
# _ / /\__ \ | | | | | (__
|
|
||||||
# (_)___|___/_| |_|_| \___|
|
|
||||||
#
|
|
||||||
# author: Daniel Sommer <daniel.sommer@velvettear.de>
|
|
||||||
# license: MIT
|
|
||||||
|
|
||||||
# ----- keybindings ----- #
|
|
||||||
bindkey "^[[1;3C" forward-word
|
|
||||||
bindkey "^[[1;3D" backward-word
|
|
||||||
|
|
||||||
# ----- history ----- #
|
|
||||||
setopt SHARE_HISTORY
|
|
||||||
|
|
||||||
# ----- aliases ----- #
|
|
||||||
alias c='clear'
|
|
||||||
alias ..='cd ..'
|
|
||||||
alias whereami='realpath .'
|
|
||||||
alias ll='ls -l'
|
|
||||||
alias la='ls -a'
|
|
||||||
alias lla='ls -la'
|
|
||||||
alias rmr='rm -r'
|
|
||||||
alias rmrf='rm -rf'
|
|
||||||
alias cpr='cp -R'
|
|
||||||
alias cprf='cp -Rf'
|
|
||||||
alias mkdirp='mkdir -p'
|
|
||||||
alias vi='nvim'
|
|
||||||
alias vim='nvim'
|
|
||||||
alias diff='diff --color=auto'
|
|
||||||
alias update='$HOME/.dots/scripts/update/update.sh'
|
|
||||||
|
|
||||||
# ----- conf.d ----- #
|
|
||||||
. "$HOME/.dots/zsh/conf.d/$(hostname)" &> /dev/null
|
|
||||||
|
|
||||||
# ----- root ----- #
|
|
||||||
[[ "$EUID" != "0" ]] && return
|
|
Loading…
Reference in a new issue