From 1e34655bace14e26565dfb5107f5b22ba66c39b7 Mon Sep 17 00:00:00 2001 From: Tobias Reisinger Date: Tue, 9 Jan 2024 16:52:53 +0100 Subject: [PATCH] Move some scripts to external repo --- .bin/autoinstall | 168 --------------------------------------- .bin/autostart-manage | 138 -------------------------------- .bin/source-remote-file | 6 -- .config/autoinstall.toml | 83 +++++++++++++++++++ .config/completionsrc | 31 +++++--- .config/environment | 1 + 6 files changed, 102 insertions(+), 325 deletions(-) delete mode 100755 .bin/autoinstall delete mode 100755 .bin/autostart-manage create mode 100644 .config/autoinstall.toml diff --git a/.bin/autoinstall b/.bin/autoinstall deleted file mode 100755 index 001fe44..0000000 --- a/.bin/autoinstall +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env sh - -_autoinstall_base () { - _autoinstall_file "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" \ - "$HOME/.config/vim/autoload/plug.vim" \ - && [ -x "$(command -v vim)" ] && yes | vim +'PlugInstall --sync' +qa --not-a-term - - _autoinstall_git "https://github.com/wbthomason/packer.nvim" \ - "$HOME/.local/share/nvim/site/pack/packer/start/packer.nvim" \ - && [ -x "$(command -v nvim)" ] && nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync' - - [ ! -x "$(command -v starship)" ] \ - && curl -sS "https://starship.rs/install.sh" | BIN_DIR="$HOME/.local/bin" FORCE=1 sh - - [ ! -x "$(command -v "git-fire")" ] \ - && _autoinstall_exe \ - "https://raw.githubusercontent.com/qw3rtman/git-fire/master/git-fire" \ - "$HOME/.local/bin/git-fire" - - [ ! -x "$(command -v "yadm")" ] \ - && _autoinstall_exe \ - "https://github.com/TheLocehiliosan/yadm/raw/master/yadm" \ - "$HOME/.local/bin/yadm" \ - - [ ! -x "$(command -v "eza")" ] \ - && _autoinstall_exe \ - "https://github.com/eza-community/eza/releases/download/v0.17.0/eza_x86_64-unknown-linux-gnu.tar.gz" \ - "$HOME/.local/bin/eza" \ - "tar xzO" - - return 0 -} - -_autoinstall_graphical () { - _autoinstall_file \ - "https://raw.githubusercontent.com/dracula/alacritty/master/dracula.toml" \ - "$HOME/.config/alacritty/dracula.toml" - - _autoinstall_file \ - "https://raw.githubusercontent.com/dracula/duckduckgo/master/monkeyscript.user.js" \ - "$HOME/.local/share/qutebrowser/greasemonkey/ddg-dracula.user.js" - - _autoinstall_git \ - "https://github.com/dracula/qutebrowser.git" \ - "$HOME/.config/qutebrowser/dracula" - - _autoinstall_git \ - "https://github.com/dracula/gtk.git" \ - "$HOME/.themes/Dracula" - - _autoinstall_archive \ - "https://github.com/dracula/gtk/releases/download/v3.0/Dracula-cursors.tar.xz" \ - "$HOME/.icons/Dracula-cursors.tar.xz" - - _autoinstall_archive \ - "$(curl -fsSL 'https://data.services.jetbrains.com/products?code=TBA&release.type=release&fields=releases' | jq -r '.[0].releases[0].downloads.linux.link')" \ - "$HOME/.local/bin/jetbrains-toolbox.tar.gz" \ - && mv -f "$HOME/.local/bin/jetbrains-toolbox-"*"/jetbrains-toolbox" "$HOME/.local/bin/" \ - && rm -rf "$HOME/.local/bin/jetbrains-toolbox-"* - - return 0 -} - -_autoinstall_ssh () { - _autoinstall_text \ - "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCkmWZmum4cVeDy5+9N1HdUzfnjEHSJ900ucD8F0wAy4MV1cdPYnZ4u5PFv5XMfmvA9SJ+VFsr0lhYlr+GQBG9aCCAdMJVVmEz3SccT6dp6ZYywT158RNshzfCe9ylWKK80+W7XnDXhdkec7aK+BQn5wOER3A3mUqRR0JDXWga9jyakH1K6OwXmQOO419bJWs2uCT1ZEgndHxKJEt2pEvoSz7z8p1SS2zyro+R3YtvL9WiDo3+0yPFYficNDr7s39yF5IJE+KTqAlCn5R2+kJ54lRmzB8oNS2jGwK2Q6wtph4AmfnlJTMODG2U2RjUltH2MIDXIYe2epATWL8qhkI4LTr38C7QR3DeJQsel/yTWdYqGakvU6Ge/xkbsaWOrSDTV3bPgKHzlL+dIKaGpV+5usZN4fpOLOb/nmYy3ekLpobzxza7rBRT2CxXS72DoPFaRE1ye7SxhcsLBNwre9YQFE4VvUZwJYkWz2V7eqGrk8VYnmQmT/bnUnMnVwMpeDc7pFKAFndIUxifoOj77c98Tdy3ncdS7SOd7+zRbLG+7k0UU1k89o1+tfREAddUJYR4RvB6g0kCyjpwOf1Pt4zhJR3y/zpsCCc5UnzK9X2kEo/8TSyvTr+GBiFVp5yLYgwCPJSNna33YX7+c3oLRM1QGgtqZk9qnGX9hgP8qpF8Akw== openpgp:0xAB920993" \ - "$HOME/.ssh/authorized_keys" - - return 0 -} - -_autoinstall_all () { - _autoinstall_base - _autoinstall_graphical - - return 0 -} - -# $1: URL -# $2: path -_autoinstall_git () { - if [ ! -d "$2" ] - then - echo "Installing repo $1 to $2" - mkdir -p "$2" - git clone --depth=1 "$1" "$2" >/dev/null 2>&1 - return 0 - fi - return 1 -} - -# $1: URL -# $2: path -# $3: curl pipe -_autoinstall_file () { - if [ ! -f "$2" ] - then - echo "Installing file $1 to $2" - file_path=$(dirname "$2") - mkdir -p "$file_path" - cd "$file_path" || exit - curl -fsSL "$1" | eval "${3:-cat}" > "$2" - return 0 - fi - return 1 -} - -# $1: text -# $2: path -_autoinstall_text() { - if [ ! -f "$2" ] - then - echo "Installing text to $2" - file_path=$(dirname "$2") - mkdir -p "$file_path" - cd "$file_path" || exit - echo "$1" > "$2" - return 0 - fi - return 1 -} - -# $1: URL -# $2: path -# $3: curl pipe -_autoinstall_exe () { - _autoinstall_file "$1" "$2" "$3" && chmod +x "$2" -} - -# $1: URL -# $2: path -_autoinstall_archive () { - if [ ! -f "$2" ] - then - echo "Installing archive $1 to $2" - file_path=$(dirname "$2") - mkdir -p "$file_path" - cd "$file_path" || exit - curl -fsSLo "$2" "$1" - tar xaf "$2" - return 0 - fi - return 1 -} - -# $1: template -# $2: path -_autoinstall_env () { - if [ -x "$(command -v envsubst)" ] - then - envsubst < "$1.tpl" > "$1" - return 0 - fi - return 1 -} - -action="${1:-base}" -case $action in - all) _autoinstall_all ;; - base) _autoinstall_base ;; - ssh) _autoinstall_ssh ;; - graphical) _autoinstall_graphical ;; - git) _autoinstall_git "$2" "$3" ;; - file) _autoinstall_file "$2" "$3" ;; - archive) _autoinstall_archive "$2" "$3" ;; - env) _autoinstall_env "$2" ;; - *) echo "'$action' is not a valid action." ;; -esac diff --git a/.bin/autostart-manage b/.bin/autostart-manage deleted file mode 100755 index 020db32..0000000 --- a/.bin/autostart-manage +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/env bash - -hostname=$(cat /proc/sys/kernel/hostname) - -_systemctl () { - systemctl --user "${@:2}" "autostart@$1.service" -} - -_query_autostart_toml() { - tomlq -r --arg host "$hostname" \ - '.hosts[$host].groups as $groups | .apps | to_entries[] | select( - (.value.hosts | contains([$host])) or - ([.value.group] | inside($groups)) - ) | '"$1" \ - "$XDG_CONFIG_HOME/autostart.toml" -} - -_list () { - _query_autostart_toml '.value.alias // .key' -} - -_echo_table () { - for unit in "$@" - do - printf "%s\t%s\t%s\t%s\n" \ - "$unit" \ - "$(_systemctl "$unit" is-enabled)" \ - "$(_systemctl "$unit" is-active)" \ - "$(_get_autostart_cmd "$unit")" - done -} - -_autostart_manage_list () { - _list -} - -_autostart_manage_info () { - autostart_units=() - while IFS='' read -r line - do - autostart_units+=("$line") - done < <(_list) - - _echo_table "${autostart_units[@]}" | column -t -s$'\t' --table-columns 'Unit,Enabled?,Active?,Command' -} - -_autostart_manage_log () { - journalctl --user -fu "autostart@$1.service" -} - -_autostart_manage_sync () { - rm "$HOME/.config/systemd/user/autostart.target.wants/"* - - autostart_units=() - while IFS='' read -r line - do - autostart_units+=("$line") - done < <(_list) - - for unit in "${autostart_units[@]}" - do - _systemctl "$unit" add-wants autostart.target - done -} - - -_get_autostart_cmd () { - _query_autostart_toml 'select((.key == "'"$1"'") or (.value.alias == "'"$1"'")) | .value.command' -} - -_get_autostart_delay () { - _query_autostart_toml 'select((.key == "'"$1"'") or (.value.alias == "'"$1"'")) | .value.delay // 0' -} - -_autostart_manage_exec () { - cmd=$(_get_autostart_cmd "$1") - sleep "$(_get_autostart_delay "$1")" - bash -c "$cmd" -} - -_autostart_run_graphical () { - pass x # Try to unlock yubikey asap - - start-audio pipewire - wait-for-service "network-online.target" - - # Execute only if not already running - # Don't match keepassxc-proxy - if ! (pgrep -l keepassxc | grep -v prox) >/dev/null - then - if pass x - then - (pass keepass | head -n 1 | keepassxc --pw-stdin ~/sync/passwords.kdbx) & - fi - fi - - autoinstall graphical - autostart-manage run - -} - -_autostart_run_wayland () { - _autostart_run_graphical - - killall -SIGUSR2 waybar -} - -_autostart_run_xorg () { - - feh --bg-fill "$XDG_PICTURES_DIR/wallpaper/active_wallpaper" - - "$HOME/.config/polybar/launch.sh" & - "$HOME/.config/bspwm/focus-voip.py" & - - numlockx on - xsetroot -cursor_name left_ptr - xrdb "$HOME/.Xresources" - - _autostart_run_graphical -} - -case $1 in - list) _autostart_manage_list ;; - info) _autostart_manage_info ;; - sync) _autostart_manage_sync ;; - enable) _systemctl "$2" add-wants autostart.target ;; - disable) _systemctl "$2" disable ;; - restart) _systemctl "${2:-*}" restart;; - log) _autostart_manage_log "$2";; - start) _systemctl "${2:-*}" start;; - status) _systemctl "${2:-*}" status ;; - stop) _systemctl "${2:-*}" stop ;; - run) systemctl --user start autostart.target ;; - run-xorg) _autostart_run_xorg ;; - run-wayland) _autostart_run_wayland ;; - exec) _autostart_manage_exec "$2" ;; - *) echo "'$1' is not valid" ;; -esac diff --git a/.bin/source-remote-file b/.bin/source-remote-file index 00b1077..c919949 100755 --- a/.bin/source-remote-file +++ b/.bin/source-remote-file @@ -4,12 +4,6 @@ base_path="$HOME/.cache/remote-sources" file_path="$base_path/$2" autoinstall file "$1" "$file_path" -mkdir -p "$base_path" -if [ ! -f "$file_path" ] -then - echo "Installing file $2" - curl -fsSL -o "$file_path" "$1" -fi # shellcheck disable=SC1090 . "$file_path" diff --git a/.config/autoinstall.toml b/.config/autoinstall.toml new file mode 100644 index 0000000..33b0eeb --- /dev/null +++ b/.config/autoinstall.toml @@ -0,0 +1,83 @@ +[[autoinstall]] +type = "file" +source = "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" +target = "$HOME/.config/vim/autoload/plug.vim" +hook = '[ -x "$(command -v vim)" ] && yes | vim +"PlugInstall --sync" +qa --not-a-term' +group = "base" + +[[autoinstall]] +type = "git" +source = "https://github.com/wbthomason/packer.nvim" +target = "$HOME/.local/share/nvim/site/pack/packer/start/packer.nvim" +hook = '[ -x "$(command -v nvim)" ] && nvim --headless -c "autocmd User PackerComplete quitall" -c "PackerSync"' +group = "base" + +[[autoinstall]] +type = "exe" +source = "https://github.com/starship/starship/releases/download/v1.17.1/starship-x86_64-unknown-linux-gnu.tar.gz" +target = "startship" +pipe = "tar xzO" +group = "base" + +[[autoinstall]] +type = "exe" +source = "https://raw.githubusercontent.com/qw3rtman/git-fire/master/git-fire" +target = "git-fire" +group = "base" + +[[autoinstall]] +type = "exe" +source = "https://github.com/TheLocehiliosan/yadm/raw/master/yadm" +target = "yadm" +group = "base" + +[[autoinstall]] +type = "exe" +source = "https://github.com/eza-community/eza/releases/download/v0.17.0/eza_x86_64-unknown-linux-gnu.tar.gz" +target = "eza" +pipe = "tar xzO" +group = "base" + +[[autoinstall]] +type = "file" +source = "https://raw.githubusercontent.com/dracula/alacritty/master/dracula.toml" +target = "$HOME/.config/alacritty/dracula.toml" +group = "graphical" + +[[autoinstall]] +type = "file" +source = "https://raw.githubusercontent.com/dracula/duckduckgo/master/monkeyscript.user.js" +target = "$HOME/.local/share/qutebrowser/greasemonkey/ddg-dracula.user.js" +group = "graphical" + +[[autoinstall]] +type = "git" +source = "https://github.com/dracula/qutebrowser.git" +target = "$HOME/.config/qutebrowser/dracula" +group = "graphical" + +[[autoinstall]] +type = "git" +source = "https://github.com/dracula/gtk.git" +target = "$HOME/.themes/Dracula" +group = "graphical" + +[[autoinstall]] +type = "file" +source = "https://github.com/dracula/gtk/releases/download/v3.0/Dracula-cursors.tar.xz" +target = "$HOME/.icons/Dracula-cursors" +pipe = "tar xJ" +group = "graphical" + +[[autoinstall]] +type = "exe" +source = "$(curl -fsSL 'https://data.services.jetbrains.com/products?code=TBA&release.type=release&fields=releases' | jq -r '.[0].releases[0].downloads.linux.link')" +target = "jetbrains-toolbox" +pipe = "tar xzO" +group = "graphical" + +[[autoinstall]] +type = "text" +source = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCkmWZmum4cVeDy5+9N1HdUzfnjEHSJ900ucD8F0wAy4MV1cdPYnZ4u5PFv5XMfmvA9SJ+VFsr0lhYlr+GQBG9aCCAdMJVVmEz3SccT6dp6ZYywT158RNshzfCe9ylWKK80+W7XnDXhdkec7aK+BQn5wOER3A3mUqRR0JDXWga9jyakH1K6OwXmQOO419bJWs2uCT1ZEgndHxKJEt2pEvoSz7z8p1SS2zyro+R3YtvL9WiDo3+0yPFYficNDr7s39yF5IJE+KTqAlCn5R2+kJ54lRmzB8oNS2jGwK2Q6wtph4AmfnlJTMODG2U2RjUltH2MIDXIYe2epATWL8qhkI4LTr38C7QR3DeJQsel/yTWdYqGakvU6Ge/xkbsaWOrSDTV3bPgKHzlL+dIKaGpV+5usZN4fpOLOb/nmYy3ekLpobzxza7rBRT2CxXS72DoPFaRE1ye7SxhcsLBNwre9YQFE4VvUZwJYkWz2V7eqGrk8VYnmQmT/bnUnMnVwMpeDc7pFKAFndIUxifoOj77c98Tdy3ncdS7SOd7+zRbLG+7k0UU1k89o1+tfREAddUJYR4RvB6g0kCyjpwOf1Pt4zhJR3y/zpsCCc5UnzK9X2kEo/8TSyvTr+GBiFVp5yLYgwCPJSNna33YX7+c3oLRM1QGgtqZk9qnGX9hgP8qpF8Akw== openpgp:0xAB920993" +target = "$HOME/.ssh/authorized_keys" +group = "ssh" diff --git a/.config/completionsrc b/.config/completionsrc index f208638..3f3e44e 100644 --- a/.config/completionsrc +++ b/.config/completionsrc @@ -28,18 +28,23 @@ _dott_completions() compgen -f "${COMP_WORDS[2]}" fi } -complete -o filenames -F _dott_completions ".t" +complete -F _dott_completions ".t" -_autostart_manage_completions() -{ - if [ "${#COMP_WORDS[@]}" == "2" ]; then - return - fi +#_autostart_manage_completions() +#{ +# if [ "${#COMP_WORDS[@]}" == "2" ]; then +# return +# fi +# +# COMPREPLY=() +# while IFS='' read -r line +# do +# COMPREPLY+=("$line") +# done < <(compgen -W "$(autostart-manage list)" "${COMP_WORDS[1]}") +#} +#complete -F _autostart_manage_completions "autostart-manage" - COMPREPLY=() - while IFS='' read -r line - do - COMPREPLY+=("$line") - done < <(compgen -W "$(autostart-manage list)" "${COMP_WORDS[1]}") -} -complete -F _autostart_manage_completions "autostart-manage" +for additional_completions in "$XDG_CONFIG_HOME/completionsrc.d/"*; do + # shellcheck disable=1090 + . "$additional_completions" +done diff --git a/.config/environment b/.config/environment index 12990dd..6b865ef 100644 --- a/.config/environment +++ b/.config/environment @@ -9,6 +9,7 @@ set +a export AUTOSTART_DISPLAY='' +export BASH_COMPLETION_USER_DIR="$XDG_DATA_HOME" export BEMENU_OPTS="--tb '#6272a4'\ --tf '#f8f8f2'\ --fb '#282a36'\