89 lines
2.3 KiB
Bash
Executable file
89 lines
2.3 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
CONFIGFILES_REPOSITORY="https://git.pew.io/technowitch/elas-arch-config.git"
|
|
CONFIGFILES_DIRECTORY="${HOME}/dotfiles"
|
|
|
|
# This script installs these dotfiles.
|
|
|
|
set -e -u
|
|
|
|
printf '\e[1mInstalling dotfiles\e[0m\n'
|
|
|
|
case "$(uname)" in
|
|
|
|
'Linux')
|
|
if [ ! -x "$(command -v pacman)" ]; then
|
|
printf '\e[1mArch Linux is the only distro currently supported for automated setup\e[0m\n'
|
|
exit 1
|
|
fi
|
|
|
|
# Install Git if not installed
|
|
if [ ! -x "$(command -v git)" ]; then
|
|
printf '\e[1mInstalling Git\e[0m\n'
|
|
sudo pacman -S --noconfirm --needed git
|
|
fi
|
|
|
|
# git clone these dotfiles if not done yet
|
|
if [ ! -d "$CONFIGFILES_DIRECTORY" ]; then
|
|
printf '\e[1mCloning dotfiles repo\e[0m\n'
|
|
git clone "$CONFIGFILES_REPOSITORY" "$CONFIGFILES_DIRECTORY"
|
|
fi
|
|
|
|
# Install Stow if not installed
|
|
sudo pacman -S --noconfirm --needed stow
|
|
|
|
|
|
# Stow subdirectories of dotfiles
|
|
printf '\e[1mLinking dotfiles to your home directory\e[0m\n'
|
|
for dir in "$CONFIGFILES_DIRECTORY"/*/; do
|
|
stow --dir "$CONFIGFILES_DIRECTORY" --target "$HOME" "$(basename "${dir}")"
|
|
done
|
|
|
|
# Install Paru if not installed
|
|
if [ ! -x "$(command -v paru)" ]; then
|
|
printf '\e[1mInstalling Paru\e[0m\n'
|
|
git clone https://aur.archlinux.org/paru-bin.git /tmp/paru
|
|
(cd /tmp/paru && makepkg -si)
|
|
fi
|
|
|
|
# Set colors for pacman
|
|
sudo sed -i 's/#Color/Color\nILoveCandy/' /etc/pacman.conf
|
|
|
|
# Install Pacmanfile if not installed
|
|
if [ ! -x "$(command -v pacmanfile)" ]; then
|
|
printf '\e[1mInstalling Pacmanfile\e[0m\n'
|
|
paru -S --noconfirm --needed pacmanfile
|
|
fi
|
|
|
|
# Install packages using Pacmanfile
|
|
printf '\e[1mInstalling desired packages using Pacmanfile\e[0m\n'
|
|
pacmanfile sync --noconfirm
|
|
|
|
# Change npm folder
|
|
if [ -x "$(command -v npm)" ]; then
|
|
npm set prefix="$HOME/.local"
|
|
fi
|
|
;;
|
|
|
|
# Default
|
|
*)
|
|
printf '\e[1mOS not supported for automated setup. Please install manually.\e[0m\n'
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Install prezto
|
|
if [ ! -d "${ZDOTDIR:-$HOME}/.zprezto" ]; then
|
|
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
|
|
fi
|
|
|
|
# Use zsh
|
|
if [ -x "$(command -v zsh)" ] && [ "$SHELL" != "$(command -v zsh)" ]; then
|
|
chsh -s "$(command -v zsh)"
|
|
fi
|
|
|
|
# Run full system upgrade
|
|
. "$CONFIGFILES_DIRECTORY/zsh/.zsh.d/functions.zsh"
|
|
EDITOR=nvim pacu
|
|
|
|
printf '\e[1mYour config is successfully installed. Please reboot to finalize.\e[0m\n'
|