Issues with sourcing colour configs, now files are concatenated into final config
This commit is contained in:
169
install.sh
Executable file
169
install.sh
Executable file
@@ -0,0 +1,169 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPTS_DIR="$HOME/scripts"
|
||||
CONFIG_DIR="$HOME/.config"
|
||||
BACKUP_DIR=""
|
||||
|
||||
usage() {
|
||||
echo "Usage: $(basename "$0") [OPTIONS] <target>..."
|
||||
echo
|
||||
echo "Targets:"
|
||||
echo " hyprland Hyprland + waybar + wofi"
|
||||
echo " sway Sway + waybar + wofi"
|
||||
echo " i3 i3 + i3blocks + i3status"
|
||||
echo " cursor Miku cursor theme"
|
||||
echo " shell Source bashrc/zshrc and add sh/ to PATH"
|
||||
echo " alacritty Add import to alacritty.toml"
|
||||
echo " tmux Source tmux.conf"
|
||||
echo " nvim Neovim (LazyVim) config"
|
||||
echo " vim Source vimrc"
|
||||
echo " all Everything (uses hyprland as WM)"
|
||||
echo
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help"
|
||||
}
|
||||
|
||||
backup() {
|
||||
local path="$1"
|
||||
if [ -e "$path" ] || [ -L "$path" ]; then
|
||||
if [ -z "$BACKUP_DIR" ]; then
|
||||
BACKUP_DIR="$SCRIPTS_DIR/backups/$(date +%Y%m%d_%H%M%S)"
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
echo "Backing up existing configs to $BACKUP_DIR"
|
||||
fi
|
||||
local name
|
||||
name=$(basename "$path")
|
||||
cp -a "$path" "$BACKUP_DIR/$name"
|
||||
echo " Backed up $path"
|
||||
fi
|
||||
}
|
||||
|
||||
link() {
|
||||
local src="$1" dest="$2"
|
||||
backup "$dest"
|
||||
rm -rf "$dest"
|
||||
ln -sf "$src" "$dest"
|
||||
echo " Linked $dest -> $src"
|
||||
}
|
||||
|
||||
append_if_missing() {
|
||||
local file="$1" line="$2"
|
||||
if [ ! -f "$file" ]; then
|
||||
echo "$line" > "$file"
|
||||
echo " Created $file with: $line"
|
||||
elif ! grep -qF "$line" "$file"; then
|
||||
echo "" >> "$file"
|
||||
echo "$line" >> "$file"
|
||||
echo " Appended to $file: $line"
|
||||
else
|
||||
echo " Already in $file: $line"
|
||||
fi
|
||||
}
|
||||
|
||||
install_hyprland() {
|
||||
echo "Installing Hyprland configs..."
|
||||
"$SCRIPTS_DIR/hypr/build.sh"
|
||||
"$SCRIPTS_DIR/waybar/build.sh"
|
||||
"$SCRIPTS_DIR/wofi/build.sh"
|
||||
mkdir -p "$CONFIG_DIR"
|
||||
link "$SCRIPTS_DIR/hypr" "$CONFIG_DIR/hypr"
|
||||
link "$SCRIPTS_DIR/waybar" "$CONFIG_DIR/waybar"
|
||||
link "$SCRIPTS_DIR/wofi" "$CONFIG_DIR/wofi"
|
||||
}
|
||||
|
||||
install_sway() {
|
||||
echo "Installing Sway configs..."
|
||||
"$SCRIPTS_DIR/sway/build.sh"
|
||||
"$SCRIPTS_DIR/waybar/build.sh"
|
||||
"$SCRIPTS_DIR/wofi/build.sh"
|
||||
mkdir -p "$CONFIG_DIR"
|
||||
link "$SCRIPTS_DIR/sway" "$CONFIG_DIR/sway"
|
||||
link "$SCRIPTS_DIR/waybar" "$CONFIG_DIR/waybar"
|
||||
link "$SCRIPTS_DIR/wofi" "$CONFIG_DIR/wofi"
|
||||
}
|
||||
|
||||
install_i3() {
|
||||
echo "Installing i3 configs..."
|
||||
"$SCRIPTS_DIR/i3/build.sh"
|
||||
mkdir -p "$CONFIG_DIR"
|
||||
link "$SCRIPTS_DIR/i3" "$CONFIG_DIR/i3"
|
||||
link "$SCRIPTS_DIR/i3blocks" "$CONFIG_DIR/i3blocks"
|
||||
link "$SCRIPTS_DIR/i3status" "$CONFIG_DIR/i3status"
|
||||
}
|
||||
|
||||
install_cursor() {
|
||||
echo "Installing cursor theme..."
|
||||
mkdir -p "$HOME/.local/share/icons"
|
||||
link "$SCRIPTS_DIR/hatsune-miku-windows-linux-cursors/miku-cursor-linux" "$HOME/.local/share/icons/Miku Cursor"
|
||||
}
|
||||
|
||||
install_shell() {
|
||||
echo "Installing shell configs..."
|
||||
if [ -f "$HOME/.zshrc" ] || [ "$SHELL" = *zsh* ]; then
|
||||
append_if_missing "$HOME/.zshrc" "source ~/scripts/zshrc"
|
||||
append_if_missing "$HOME/.zshrc" 'export PATH="$HOME/scripts/sh:$PATH"'
|
||||
fi
|
||||
if [ -f "$HOME/.bashrc" ] || [ "$SHELL" = *bash* ]; then
|
||||
append_if_missing "$HOME/.bashrc" "source ~/scripts/bashrc"
|
||||
append_if_missing "$HOME/.bashrc" 'export PATH="$HOME/scripts/sh:$PATH"'
|
||||
fi
|
||||
}
|
||||
|
||||
install_alacritty() {
|
||||
echo "Installing Alacritty config..."
|
||||
local conf="$CONFIG_DIR/alacritty/alacritty.toml"
|
||||
mkdir -p "$CONFIG_DIR/alacritty"
|
||||
append_if_missing "$conf" 'import = ["~/scripts/alacritty.toml"]'
|
||||
}
|
||||
|
||||
install_tmux() {
|
||||
echo "Installing tmux config..."
|
||||
append_if_missing "$HOME/.tmux.conf" "source ~/scripts/tmux.conf"
|
||||
}
|
||||
|
||||
install_nvim() {
|
||||
echo "Installing Neovim config..."
|
||||
mkdir -p "$CONFIG_DIR"
|
||||
link "$SCRIPTS_DIR/nvim" "$CONFIG_DIR/nvim"
|
||||
}
|
||||
|
||||
install_vim() {
|
||||
echo "Installing vim config..."
|
||||
append_if_missing "$HOME/.vimrc" "source ~/scripts/vimrc"
|
||||
}
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
targets=()
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
-h|--help) usage; exit 0 ;;
|
||||
all) targets+=(hyprland cursor shell alacritty tmux nvim vim) ;;
|
||||
*) targets+=("$arg") ;;
|
||||
esac
|
||||
done
|
||||
|
||||
for target in "${targets[@]}"; do
|
||||
case "$target" in
|
||||
hyprland) install_hyprland ;;
|
||||
sway) install_sway ;;
|
||||
i3) install_i3 ;;
|
||||
cursor) install_cursor ;;
|
||||
shell) install_shell ;;
|
||||
alacritty) install_alacritty ;;
|
||||
tmux) install_tmux ;;
|
||||
nvim) install_nvim ;;
|
||||
vim) install_vim ;;
|
||||
*) echo "Unknown target: $target"; usage; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -n "$BACKUP_DIR" ]; then
|
||||
echo
|
||||
echo "Backups saved to: $BACKUP_DIR"
|
||||
fi
|
||||
echo "Done!"
|
||||
Reference in New Issue
Block a user