Compare commits

...

5 Commits

Author SHA1 Message Date
608447e127 Add 'lah' alias 2023-10-12 18:08:12 -05:00
952cc12ec5 Remove test messages from color.sh 2023-06-20 23:56:55 -05:00
f9d7c98916 Improve setup and update scripts pt.2 2023-06-20 23:12:12 -05:00
1a7c8c160d Improve setup and update scripts 2023-06-20 23:10:19 -05:00
acd746d711 Add patch script support 2023-06-20 21:41:19 -05:00
11 changed files with 127 additions and 91 deletions

5
patches/ssh-acd746d.sh Executable file
View File

@ -0,0 +1,5 @@
#!/bin/bash
cd /etc/ssh
ln -sf /etc/toolkit/ssh/sshd_config .

52
scripts/setup.sh Normal file → Executable file
View File

@ -3,29 +3,55 @@
set -e
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
TOOLKIT_DIR="$SCRIPT_DIR"/..
# Load default shell scripts
. $SCRIPT_DIR/../sh/load.sh
# Load package manager script
. "$SCRIPT_DIR"/util/pkg-mgr.sh
update_default_shell() {
/usr/sbin/usermod -sf /usr/bin/zsh $1
# Load color script
. "$SCRIPT_DIR"/util/color.sh
update_user_shell() {
/usr/sbin/usermod -s /usr/bin/zsh "$1"
}
install_shell_config() {
/usr/bin/ln -s /etc/toolkit/sh/.zshrc $1
install_user_config() {
/usr/bin/ln -s /etc/toolkit/sh/"$1" "$2"
}
print_info Installing necessary packages...
install_package zsh
update_default_shell root
update_default_shell coby
print_info Setting up user shells...
install_shell_config /root/.zshrc
install_shell_config /home/coby/.zshrc
update_user_shell root
update_user_shell coby
install_user_config .zshrc /root/.
install_user_config .zshrc /home/coby/.
install_user_config .vimrc /root/.
install_user_config .vimrc /home/coby/.
# Replace old ssh server config
rm /etc/ssh/sshd_config
ln -sf /etc/toolkit/sshd/sshd_config /etc/ssh/.
if [[ -d /etc/ssh ]]; then
ln -sf "$TOOLKIT_DIR"/ssh/sshd_config /etc/ssh/.
elif
print_warn /etc/ssh does not exist, failed to install sshd config
fi
# Install cronjobs
if [[ -d /etc/cron.d ]]; then
ln -sf "$TOOLKIT_DIR"/cron/* /etc/cron.d/.
elif
print_warn /etc/cron.d does not exist, failed to install cronjobs
print_warn Are you running a debian-based distro?
fi
print_info Installing necessary submodules...
# Pull submodules
. $SCRIPT_DIR/update.sh
git submodule update --init --recursive
print_info Setup complete

View File

@ -1,13 +0,0 @@
# Setup tasks
- Determine which package manager to use based on distro
- Update & upgrade system
- Install necessary packages (zsh)
- Ask which user wants shell and dotfiles & install them
- Ask to install cronjobs & install them
- Ask to install SSH configurations & install them

33
scripts/update.sh Normal file → Executable file
View File

@ -1,6 +1,39 @@
#!/bin/bash
# Only begin update process if necessary
if [[ -z "$(git remote show origin | grep "out of date")" ]]; then
exit 0
fi
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
TOOLKIT_DIR="$SCRIPT_DIR"/..
# Load color script
. "$SCRIPT_DIR"/util/color.sh
last_hash=$( git rev-parse HEAD )
recent_hashes=$( git log --format=format:%H | grep -B 100 $last_hash)
print_info Resetting repo and pulling latest commits...
# Resets the repo to last state
git reset --hard
# Pulls new commits
git pull
# Downloads or updates repo submodules
git submodule update --init --recursive
# Removes untracked files and directories
git clean -fd --force
# Runs patch scripts to ensure machine state
# matches toolkit state
while IFS= read -r hash; do
short_hash=$( echo "$hash" | cut -c -7 )
print_info Running patch script \'"$short_hash"\'
. "$SCRIPT_DIR"/../patches/*-"$short_hash".sh 2>/dev/null
done <<< "$recent_hashes"
print_info Update complete

23
scripts/util/color.sh Executable file
View File

@ -0,0 +1,23 @@
#!/bin/bash
BLACK="\033[30m"
RED="\033[31m"
GREEN="\033[32m"
YELLOW="\033[33m"
BLUE="\033[34m"
PINK="\033[35m"
CYAN="\033[36m"
WHITE="\033[37m"
RESET="\033[0;39m"
print_info() {
echo -e "$RESET"["$BLUE"i"$RESET"] $@
}
print_warn () {
echo -e "$RESET"["$YELLOW"!"$RESET"] $@
}
print_error () {
echo -e "$RESET"["$RED"x"$RESET"] $@
}

23
scripts/util/pkg-mgr.sh Executable file
View File

@ -0,0 +1,23 @@
declare -A osInfo;
osInfo[/etc/redhat-release]=yum
osInfo[/etc/arch-release]=pacman
osInfo[/etc/gentoo-release]=emerge
osInfo[/etc/SuSE-release]=zypp
osInfo[/etc/debian_version]=apt-get
osInfo[/etc/alpine-release]=apk
for key val in "${(@kv)osInfo}"; do
if [[ -f $key ]]; then
PACKAGE_MANAGER=$val
fi
done
install_package() {
if [ "$PACKAGE_MANAGER" == "yum" ]; then yum install -y "$@"
elif [ "$PACKAGE_MANAGER" == "pacman" ]; then pacman -S --noconfirm "$@"
elif [ "$PACKAGE_MANAGER" == "emerge" ]; then emerge "$@"
elif [ "$PACKAGE_MANAGER" == "zypp" ]; then zypper install "$@"
elif [ "$PACKAGE_MANAGER" == "apt-get" ]; then apt-get install -y "$@"
elif [ "$PACKAGE_MANAGER" == "apk" ]; then apk add "$@"; fi
}

View File

@ -5,7 +5,8 @@
" \ \ / / \ \ \ \ \ \ \ \ \ \\ \\ \ \____
" \ \__/ / \ \__\ \__\ \ \__\ \__\\ _\\ \_______\
" \|__|/ \|__|\|__| \|__|\|__|\|__|\|_______|
" by Coby Powers (inspired by https://www.freecodecamp.org/news/vimrc-configuration-guide-customize-your-vim-editor/)
" by Coby Powers
" (inspired by https://www.freecodecamp.org/news/vimrc-configuration-guide-customize-your-vim-editor/)
" Remove compatibility with vi
set nocompatible

View File

@ -10,6 +10,7 @@ alias ll='ls -l'
alias la='ls -A'
alias lf='ls -F'
alias l.='ls -d .*'
alias lah='ls -lah'
alias lh='ls -lh'
alias lr='ls -R'
alias l='ls'
@ -18,28 +19,16 @@ alias md='mkdir -p'
alias rd='rm -rf'
alias q='exit'
alias c='clear'
alias journal='journalctl -xe'
alias journal-err='journalctl -p 3 -b'
alias fstab='sudo vim /etc/fstab'
alias fstab='_ vim /etc/fstab'
alias rcron='sudo crontab -e'
alias cron='crontab -e'
alias upd-arch='paru -S archlinux-keyring && paru'
alias upd-ubt='sudo apt update -y && sudo apt upgrade -y'
if [[ "$OS" == "Arch Linux" ]]; then
alias upd='upd-arch'
elif [[ $OS == "Ubuntu" ]]; then
alias upd='upd-ubt'
else
alias upd='echo Failed to detect distribution. The script needs to be able to determine the distribution to know which package manager to use'
fi
alias reload='source ~/.zshrc'
alias aliases='cat $ALIASES'

View File

@ -1,29 +0,0 @@
if [ -f /etc/os-release ]; then
# freedesktop.org and systemd
. /etc/os-release
OS=$NAME
VER=$VERSION_ID
elif type lsb_release >/dev/null 2>&1; then
# linuxbase.org
OS=$(lsb_release -si)
VER=$(lsb_release -sr)
elif [ -f /etc/lsb-release ]; then
# For some versions of Debian/Ubuntu without lsb_release command
. /etc/lsb-release
OS=$DISTRIB_ID
VER=$DISTRIB_RELEASE
elif [ -f /etc/debian_version ]; then
# Older Debian/Ubuntu/etc.
OS=Debian
VER=$(cat /etc/debian_version)
elif [ -f /etc/SuSe-release ]; then
# Older SuSE/etc.
...
elif [ -f /etc/redhat-release ]; then
# Older Red Hat, CentOS, etc.
...
else
# Fall back to uname, e.g. "Linux <version>", also works for BSD, etc.
OS=$(uname -s)
VER=$(uname -r)
fi

View File

@ -1,22 +0,0 @@
declare -A osInfo;
osInfo[/etc/redhat-release]=yum
osInfo[/etc/arch-release]=pacman
osInfo[/etc/gentoo-release]=emerge
osInfo[/etc/SuSE-release]=zypp
osInfo[/etc/debian_version]=apt-get
osInfo[/etc/alpine-release]=apk
for key val in "${(@kv)osInfo}"; do
if [[ -f $key ]];then
PACKAGE_MANAGER=$val
fi
done
install_package() {
if [ "$PACKAGE_MANAGER" == "yum" ]; then yum install -y $1
elif [ "$PACKAGE_MANAGER" == "pacman" ]; then pacman -S --noconfirm $1
elif [ "$PACKAGE_MANAGER" == "emerge" ]; then emerge $1
elif [ "$PACKAGE_MANAGER" == "zypp" ]; then zypper install $1
elif [ "$PACKAGE_MANAGER" == "apt-get" ]; then apt-get install -y $1
elif [ "$PACKAGE_MANAGER" == "apk" ]; then apk add $1; fi
}