Files
dotfiles/install-on-arch.sh
T

276 lines
9.7 KiB
Bash
Executable File

#!/bin/env bash
echo "Welcome!"
DATE=$(date +%s)
system_update(){
echo -e "[*1*] Doing a system update, cause stuff may break if it's not the latest version..."
sudo pacman --noconfirm -Syu
sudo pacman -S --noconfirm --needed base-devel wget git curl gcc make
}
aur_helper(){
cat <<- EOF
[*2*] We need an AUR helper. It is essential.
[*] Choose your AUR helper.
[1] yay
[2] paru
EOF
read -p "[?] Select option: "
if [[ $REPLY == "1" ]]; then
HELPER="yay"
if ! command -v $HELPER &> /dev/null
then
echo -e "\n[*] It seems that you don't have $HELPER installed, I'll install that for you before continuing."
git clone https://aur.archlinux.org/$HELPER.git $HOME/.srcs/$HELPER
(cd $HOME/.srcs/$HELPER/ && makepkg -si )
else
echo -e "\n[*] It seems that you already have $HELPER installed, skipping."
fi
elif [[ $REPLY == "2" ]]; then
HELPER="paru"
if ! command -v $HELPER &> /dev/null
then
echo -e "\n[*] It seems that you don't have $HELPER installed, I'll install that for you before continuing."
git clone https://aur.archlinux.org/$HELPER.git $HOME/.srcs/$HELPER
(cd $HOME/.srcs/$HELPER/ && makepkg -si )
else
echo -e "\n[*] It seems that you already have $HELPER installed, skipping."
fi
else
echo -e "\n[!] Invalid option, exiting...\n"
exit 1
fi
}
install_packages(){
echo -e "[*3*] Installing packages with Pacman."
sudo pacman -S --noconfirm --needed light pulseaudio pulseaudio-alsa pulsemixer alsa-utils pacman-contrib i3-gaps i3blocks xorg xorg-xinit xorg-server feh imagemagick kitty rofi dunst libnotify ranger ncmpcpp mpd papirus-icon-theme btop sddm zsh picom code neovim xclip scrot mpc
echo -e "\n[*] Installing packages with $HELPER."
$HELPER -S acpi \
polybar \
ffcast \
betterlockscreen \
i3lock-color \
cava \
slop \
qt5 \
qt5-quickcontrols2\
qt5-svg
echo -e "\n[*] Chmoding light."
sudo chmod +s /usr/bin/light
echo -e "\n[*] Setting Zsh as default shell."
chsh -s /bin/zsh
sudo chsh -s /bin/zsh
cat <<- EOF
[*3*] Still installing packages.
[*] Do you want to install optional, but useful programs? (VSCode, iwd, LibreOffice, Firefox, etc)
[1] yes
[2] no
EOF
read -p "[?] Select option: "
if [[ $REPLY == "1" ]]; then
sudo pacman -S --noconfirm --needed code iwd dhcpcd ntfs-3g libreoffice firefox nautilus gimp
elif [[ $REPLY == "2" ]]; then
echo -e "\n[*] Skipping."
else
echo -e "\n[!] Invalid option, exiting...\n"
exit 1
fi
cat <<- EOF
[*3*] Still installing packages.
[*] Do you want to install emoji fonts?
[1] yes
[2] nope
EOF
read -p "[?] Select option: "
if [[ $REPLY == "1" ]]; then
sudo pacman -S --noconfirm --needed noto-fonts noto-fonts-emoji noto-fonts-extra noto-fonts-cjk
DATE=$(date +%s)
if [ -f /etc/fonts/local.conf ]; then
echo "[*] Fonts configs detected, backing up..."
sudo mv /etc/fonts/local.conf /etc/fonts/local.conf$DATE
fi
sudo cp -f ./config/local.conf /etc/fonts;
elif [[ $REPLY == "2" ]]; then
echo -e "\n[*] Skipping."
else
echo -e "\n[!] Invalid option, exiting...\n"
exit 1
fi
}
copy_flies(){
DATE=$(date +%s)
echo -e "[*4*] Coping files."
if [ -d $HOME/.config/btop ]; then
echo "[*] btop configs detected, backing up..."
mv $HOME/.config/btop $HOME/.config/btop$DATE
fi
mkdir -p $HOME/.config/btop && cp -r ./config/btop/* $HOME/.config/btop;
if [ -d $HOME/.config/cava ]; then
echo "[*] cava configs detected, backing up..."
mv $HOME/.config/cava $HOME/.config/cava$DATE
fi
mkdir -p $HOME/.config/cava && cp -r ./config/cava/* $HOME/.config/cava;
if [ -d $HOME/.config/dunst ]; then
echo "[*] dunst configs detected, backing up..."
mv $HOME/.config/dunst $HOME/.config/dunst$DATE
fi
mkdir -p $HOME/.config/dunst && cp -r ./config/dunst/* $HOME/.config/dunst;
if [ -d $HOME/.config/gtk-3.0 ]; then
echo "[*] gtk-3.0 configs detected, backing up..."
mv $HOME/.config/gtk-3.0 $HOME/.config/gtk-3.0$DATE
fi
mkdir -p $HOME/.config/gtk-3.0 && cp -r ./config/gtk-3.0/* $HOME/.config/gtk-3.0;
if [ -d $HOME/.config/i3 ]; then
echo "[*] i3 configs detected, backing up..."
mv $HOME/.config/i3 $HOME/.config/i3$DATE
fi
mkdir -p $HOME/.config/i3 && cp -r ./config/i3/* $HOME/.config/i3;
if [ -d $HOME/.config/kitty ]; then
echo "[*] kitty configs detected, backing up..."
mv $HOME/.config/kitty $HOME/.config/kitty$DATE
fi
mkdir -p $HOME/.config/kitty && cp -r ./config/kitty/* $HOME/.config/kitty;
if [ -d $HOME/.config/mpd ]; then
echo "[*] mpd configs detected, backing up..."
mv $HOME/.config/mpd $HOME/.config/mpd$DATE
fi
mkdir -p $HOME/.config/mpd && cp -r ./config/mpd/* $HOME/.config/mpd;
if [ -d $HOME/.config/ncmpcpp ]; then
echo "[*] ncmpcpp configs detected, backing up..."
mv $HOME/.config/ncmpcpp $HOME/.config/ncmpcpp$DATE
fi
mkdir -p $HOME/.config/ncmpcpp && cp -r ./config/ncmpcpp/* $HOME/.config/ncmpcpp;
if [ -d $HOME/.config/neofetch ]; then
echo "[*] neofetch configs detected, backing up..."
mv $HOME/.config/neofetch $HOME/.config/neofetch$DATE
fi
mkdir -p $HOME/.config/neofetch && cp -r ./config/neofetch/* $HOME/.config/neofetch;
if [ -d $HOME/.config/picom ]; then
echo "[*] picom configs detected, backing up..."
mv $HOME/.config/picom $HOME/.config/picom$DATE
fi
mkdir -p $HOME/.config/picom && cp -r ./config/picom/* $HOME/.config/picom;
if [ -d $HOME/.config/polybar ]; then
echo "[*] polybar configs detected, backing up..."
mv $HOME/.config/polybar $HOME/.config/polybar$DATE
fi
mkdir -p $HOME/.config/polybar && cp -r ./config/polybar/* $HOME/.config/polybar;
if [ -d $HOME/.config/ranger ]; then
echo "[*] ranger configs detected, backing up..."
mv $HOME/.config/ranger $HOME/.config/ranger$DATE
fi
mkdir -p $HOME/.config/ranger && cp -r ./config/ranger/* $HOME/.config/ranger;
if [ -d $HOME/.config/rofi ]; then
echo "[*] rofi configs detected, backing up..."
mv $HOME/.config/rofi $HOME/.config/rofi$DATE
fi
mkdir -p $HOME/.config/rofi && cp -r ./config/rofi/* $HOME/.config/rofi;
# files
if [ -f $HOME/.config/Code\ -\ OSS/User/settings.json ]; then
echo "[*] Code - OSS configs detected, backing up..."
mv $HOME/.config/Code\ -\ OSS/User/settings.json $HOME/.config/Code\ -\ OSS/User/settings.json$DATE
fi
cp -f ./config/vsc/* $HOME/.config/Code\ -\ OSS/User;
if [ -f $HOME/.zshrc ]; then
echo "[*] ZSH configs detected, backing up..."
mv $HOME/.zshrc $HOME/.zshrc$DATE
fi
cp -f ./config/.zshrc $HOME/.zshrc;
if [ -f $HOME/.oh-my-zsh/custom/themes/keyitdev.zsh-theme ]; then
echo "[*] Oh my zsh keyitdev theme detected, backing up..."
mv $HOME/.oh-my-zsh/custom/themes/keyitdev.zsh-theme $HOME/.oh-my-zsh/custom/themes/keyitdev.zsh-theme$DATE
fi
cp -f ./config/keyitdev.zsh-theme $HOME/.oh-my-zsh/custom/themes/;
echo -e "\n[*4*] Files copied."
}
copy_other_files(){
echo -e "[*5*] Coping scripts, fonts and wallpapers."
DATE=$(date +%s)
if [ -d /usr/local/bin ]; then
echo "[*] /usr/local/bin configs detected, backing up..."
sudo mkdir /usr/local/bin$DATE
sudo mv /usr/local/bin/* /usr/local/bin$DATE
fi
sudo mkdir -p /usr/local/bin
sudo cp -frd ./scripts/* /usr/local/bin
echo -e "\n[*] Scripts copied."
sudo cp ./fonts/* /usr/share/fonts/
echo -e "\n[*] Fonts copied."
cp ./wallpapers/* $HOME/Pictures/wallpapers/
echo -e "\n[*] Wallpapers copied."
}
make_default_directories(){
echo -e "[*6*] Making default directories."
mkdir -p $HOME/Pictures/wallpapers
mkdir -p $HOME/Pictures/screenshots
mkdir -p $HOME/Videos
mkdir -p $HOME/Music
mkdir -p $HOME/Projects
}
other_dependencies(){
DATE=$(date +%s)
echo -e "[*7*] Installing other dependencies"
if [ -d /usr/share/themes/ant ]; then
echo "[*] gtk theme detected, backing up..."
sudo mv /usr/share/themes/ant /usr/share/themes/ant$DATE
fi
echo -e "\n[*] Installing gtk theme"
git clone https://github.com/EliverLara/ant.git $HOME/ant
sudo mv $HOME/ant /usr/share/themes
if [ -d /usr/share/sddm/themes/sddm-astronaut-theme ]; then
echo "[*] sddm theme detected, backing up..."
sudo mv /usr/share/sddm/themes/sddm-astronaut-theme /usr/share/sddm/themes/sddm-astronaut-theme$DATE
fi
echo -e "\n[*] Installing sddm theme"
git clone https://github.com/keyitdev/sddm-astronaut-theme.git $HOME/sddm-astronaut-theme
sudo cp -fdr $HOME/sddm-astronaut-theme /usr/share/sddm/themes/
sudo cp /usr/share/sddm/themes/sddm-astronaut-theme/Fonts/* /usr/share/fonts/
echo "[Theme]
Current=sddm-astronaut-theme" | sudo tee /etc/sddm.conf
echo -e "\n[*] Installing ohmyzsh (in background)"
kitty sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" &
if [ -d $HOME/.config/nvim ]; then
echo "[*] nvim theme detected, backing up..."
sudo mv $HOME/.config/nvim $HOME/.config/nvim$DATE
fi
echo -e "\n[*] Installing nvim theme"
kitty git clone --depth 10 https://github.com/kabinspace/AstroVim.git $HOME/.config/nvim
kitty nvim +PackerSync
}
system_update
aur_helper
install_packages
copy_flies
copy_other_files
make_default_directories
other_dependencies
echo -e "[*8*] Everything is ready, enjoy :D."