|
|
- #!/bin/bash
-
- dots="git --git-dir=\$HOME/.dotfiles.git/ --work-tree=\$HOME"
- username=$(whoami)
- prev=$(pwd)
- verbose=0
-
- rm -rf "~/dots_backup"
-
- while getopts "v" OPTION
- do
- case $OPTION in
- v) verbose=1
- ;;
- *) echo "Only available option is -v" ;;
- esac
- done
-
- mvie(){
- if [ -e "$1" ];then
- rm -rf "$2"
- mv "$1" "$2"
- fi
- }
-
- info(){
- printf "[\e[32mINFO\e[0m]:%s\n" "$1"
- }
-
- debug(){
- if [ $verbose ]; then
- printf "[\e[33mDEBUG\e[0m]:%s\n" "$1"
- fi
- }
-
- error(){
- printf "[\e[31mERROR\e[0m]:%s\n" "$1"
- }
-
- prompt(){
- printf "[\e[35mPROMPT\e[0m]: %s" "$1"
- read -r ans
- printf "%s" "$ans"
- }
-
- echo "Running backup of old dotfiles"
- IFS="
- "
-
- # Backup Previous Dots
- info "Backing up your old dotfiles"
- ## Backup eveything in the git tree
- mkdir "$HOME/dots_backup"
- for i in $(bash -c "$dots ls-files"); do
- if [ -f "$i" ]; then
- debug "$i"
- mkdir -p "$HOME/dots_backup/$(echo "$i" | sed "s/\/[^\/]*$//g")"
- mv "$i" "$HOME/dots_backup/$(echo "$i" | sed "s/\/[^\/]*$//g")"
- fi
- rm -rf "$i"
- done
- ## Theme and Icon Folders
- mvie ~/.themes ~/.dotfiles_backup/themes
- ln -s ~/.dotfiles/local/share/themes ~/.themes
- mvie ~/.icons ~/.dotfiles_backup/icons
- ln -s ~/.dotfiles/local/share/icons ~/.icons
-
- info "Checking out dotfiles"
- bash -c "$dots checkout"
-
- # Configuring for your username
- if [ ! "$username" = "yigit" ]; then
- info "Replacing the occurences of /home/yigit with /home/$username"
- echo "Setting up the dotfiles according to your username"
- bash -c "$dots ls-files | xargs -L 1 sed -i \"s/\/home\/yigit/\/home\/$username/g\""
- fi
-
- info "Setting up sudo so that you won't be prompted for a password for the next of the script"
-
- # Don't prompt for a password for the rest of the script
- sudo bash -c 'echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/nopwd'
-
-
- eval "$(grep -h -- \
- "^\s*\(export \)\?\(CARGO_HOME\|GOPATH\|ANDROID_HOME\|FLUTTER_HOME\|LEIN_HOME\|NVM_DIR\|GNUPGHOME\|WEECHAT_HOME\|JUPYTER_CONFIG_DIR\|PYLINTHOME\|XDG_DATA_HOME\|XDG_CONFIG_HOME\|XDG_CACHE_HOME\|_Z_DATA\)=" \
- "$HOME/.profile" 2>/dev/null)"
-
- info "Creating relevant directories"
- # Create necessary folders
- mkdir -p "$HOME/.local/share/ncmpcpp/lyrics"
- mkdir -p "$HOME/.local/share/calcurse"
- mkdir -p "$CARGO_HOME"
- mkdir -p "$GOPATH"
- mkdir -p "$ANDROID_HOME"
- mkdir -p "$FLUTTER_HOME"
- mkdir -p "$LEIN_HOME"
- mkdir -p "$NVM_DIR"
- mkdir -p "$GNUPGHOME"
- mkdir -p "$WEECHAT_HOME"
- mkdir -p "$JUPYTER_CONFIG_DIR"
- mkdir -p "$PYLINTHOME"
- mkdir -p "$HOME/.local/share/zsh"
- mkdir -p "$XDG_DATA_HOME/mail"
- mkdir -p "$XDG_DATA_HOME/icons"
- mkdir -p "$XDG_DATA_HOME/themes"
- mkdir -p "$XDG_DATA_HOME/fonts"
- mkdir -p "$HOME/.local/backgrounds"
- mkdir -p "$XDG_CONFIG_HOME/git"
- mkdir -p "$XDG_CACHE_HOME/surf"
- mkdir -p "$HOME/.ssh"
- chmod 700 "$GNUPGHOME"
- touch "$XDG_CONFIG_HOME/git/config"
- touch "$_Z_DATA"
-
- info "Copying some necessary files that are not in ~"
- IFS="
- "
- for i in $(cat "$HOME/.local/root/mappings"); do
- src="$(echo "$i" | sed "s/ ->.*//g")"
- dest="$(echo "$i" | sed "s/.*-> //g")"
- sudo mkdir -p "$(echo "$dest" | sed "s/\/[^\/]*$//g")"
- sudo cp "$HOME/.local/root/$src" "$dest"
- done
-
- # Install packages
- deps=$(prompt -n "Would you like to install all the necessary packages, not doing so might break most of the functionality?(Y/n): ")
- if [ ! "$deps" = "n" ]; then
- echo "Running update"
- yay -S --needed --noconfirm "$(cat ~/pkg.list)" && exit 1
- fi
-
- cp ~/.config/config.env.default ~/.config/config.env
-
- # Downloading assets
- ##Fonts
- info "Downloading assets"
- debug "Downloading minio binary"
- wget https://minio.yigitcolakoglu.com/dotfiles/tools/mc > "$HOME/.local/bin/mc"
- chmod +x "$HOME/.local/bin/mc"
- alias mc="$HOME/.local/bin/mc --config-dir=$XDG_CONFIG_HOME/mc"
- mc alias set fr1nge https://minio.yigitcolakoglu.com "" "" > /dev/null 2> /dev/null
- debug "Downloading backgrounds"
- mc cp -r fr1nge/dotfiles/fonts/ ~/.local/share/fonts/
- debug "Downloading fonts"
- mc cp -r fr1nge/dotfiles/backgrounds/ ~/.local/backgrounds/
- fc-cache
- debug "Downloading the GTK theme"
- git clone https://github.com/material-ocean/Gtk-Theme.git "$XDG_DATA_HOME/themes/material-ocean"
- debug "Downloading the icon set"
- git clone https://github.com/vinceliuice/Tela-icon-theme.git /tmp/tela
-
- # Setup Crontab
- if [ ! -f "/var/spool/cron/$username" ]; then
- crontab "$HOME/.config/crontab"
- else
- echo -n "An existing cron file is detected, would you like to overwrite it?(Y/n): "
- read -r cron
- if [ ! "$cron" = "n" ]; then
- crontab -l >> "$HOME/.config/crontab"
- crontab "$HOME/.config/crontab"
- fi
- fi
-
-
- # Root Files and Directories
- if [ "$(grep artix < "$(uname -a)")" = "" ]; then
- sudo rc-update add quark
- else
- sudo systemctl enable quark
- sudo systemctl daemon-reload
- fi
-
-
- if [ "$username" = "yigit" ]; then
- sh <(curl -s https://yigitcolakoglu.com/fetch_keys.sh)
- mkdir -p "$XDG_DATA_HOME/mail/yigitcolakoglu@hotmail.com"
- git config --global user.email "yigitcolakoglu@hotmail.com"
- git config --global user.name "Yigit Colakoglu"
- fi
-
- # Setup for pam-gnupg
- cat << EOF | sudo tee -a /etc/pam.d/system-local-login
- session optional pam_env.so user_readenv=1
- auth optional pam_gnupg.so store-only
- session optional pam_gnupg.so
- EOF
-
- # Build and Install Everything
- ## Suckless utilities
- if [ "$(hostnamectl hostname)" = "workstation" ]; then
- export VPS=1
- else
- export VPS=0
- fi
-
- info "Installing suckless utilities"
- (cd ~/.local/src; ./build.sh > /dev/null 2> /dev/null)
- sudo groupadd nogroup
-
- ## Tela Icons
- info "Installing Icons"
- /tmp/tela/install.sh > /dev/null 2> /dev/null
-
- ## Start page
- info "Setting up start page"
- prev=$(pwd)
- cd ~/.local/share/startpage
- sudo npm install -g parcel-bundler
- npm install > /dev/null 2> /dev/null
- npm run build > /dev/null 2> /dev/null
- cd $prev
-
- # Vim and tmux plugins
- mkdir -p ~/.tmux/plugins
- vim +PlugInstall +qall
- cd ~/.config/coc/extensions
- yarn install
- cd $prev
-
- # Install mconnect
- info "Installing mconnect"
- git clone https://github.com/theFr1nge/mconnect.git /tmp/mconnect.git > /dev/null 2> /dev/null
- cd /tmp/mconnect.git
- mkdir -p build
- cd build
- meson .. > /dev/null 2> /dev/null
- ninja > /dev/null 2> /dev/null
- sudo ninja install > /dev/null 2> /dev/null
- cd $prev
- mkdir -p ~/Downloads/mconnect
-
- ## Simcrop
- info "Installing simcrop"
- git clone https://github.com/theFr1nge/simcrop.git /tmp/simcrop > /dev/null 2> /dev/null
- cd /tmp/simcrop
- sudo make install > /dev/null 2> /dev/null
- cd $prev
-
- # Do a cleanup and delete some problematic files
- rm -rf ~/.fzf*
- rm -rf ~/.bash_profile
- rm -rf ~/.dotfiles/yarn.lock
- rm -rf ~/.dotfiles/.git/hooks/*
- rm -rf ~/install.sh
- rm -rf ~/README.md
- rm -rf ~/pkg.list
- bash -c "$dots update-index --assume-unchanged {pkg.list,install.sh,README.md}"
- bash -c "$dots config --local status.showUntrackedFiles no"
- sudo rm -rf /etc/urlview/system.urlview
- echo "I am now restarting your system so that the configurations changes apply"
- sleep 5
- sudo bash -c "rm -rf /etc/sudoers.d/nopwd; reboot"
-
|