#!/bin/sh # Sets up a custom environment in an Arch installation getPackageGroup() { packagesFile="$HOME/repos/privconfigs/packages.txt" [ -f "$packagesFile" ] || exit 1 group="$1" sed -n "/^# ${group}/,/^# /p" "$packagesFile" | sed '/^#/d;/^\s*$/d;s/\s*#.*$//' } installPackageGroup() { getPackageGroup "$1" | sudo pacman -S --needed - } prompt() { echo "$1" shift read answer echo "$answer" | grep -E -q '^[yY]' && eval "$@" } # Initialization server="taamas@taamas.xyz" installAudio="" installGraphic="" # Setup is done from the $HOME directory cd # Directory structure mkdir -p "$HOME/downloads/videos" mkdir -p "$HOME/downloads/audios" mkdir -p "$HOME/media/images/screenshots" mkdir -p "$HOME/media/images/wallpapers/shufs/current" mkdir "$HOME/logs" mkdir "$HOME/repos" # Connect to server #sshKey="$HOME/.ssh/id_rsa_$(hostnamectl hostname)ForXyz" #ssh-keygen -f "$sshKey" || exit 1 #ssh-copy-id -i "$sshKey" "$server" || exit 1 # Install git to get needed repos if ! type git; then echo "Installing git" type git || sudo pacman -S git fi gitName="InigoGutierrez" gitEmail="inigogf.95@gmail.com" echo "Setting up git config" echo "Name: $gitName" echo "mail: $gitEmail" git config --global user.name "$gitName" git config --global user.email "$gitEmail" echo "" # Clone scripts and configs repos if [ ! -d "scripts" ]; then echo "Cloning scripts repo" git clone https://git.taamas.xyz/Taamas/scripts.git echo "" fi if [ ! -d "repos/configs" ]; then echo "Cloning configs repo" ( cd repos git clone https://git.taamas.xyz/Taamas/configs.git echo "" ) fi if [ ! -d "repos/privconfigs" ]; then echo "Cloning private configs repo" ( cd repos git clone taamas@taamas.xyz:~/repos/remotes/privconfigs echo "" ) fi # Stop the satanic bell sudo echo 'blacklist pcspkr' >/etc/modprobe.d/nobeep.conf # Pacman config if ! grep -q 'ILoveCandy' /etc/pacman.conf; then echo "Adding color and candy to /etc/pacman.conf" sudo sed -i 's/^#Color.*$/Color\nILoveCandy/' /etc/pacman.conf fi if grep -Eq '^#\[multilib\]' /etc/pacman.conf; then echo "Enabling pacman multilib repositories." sudo sed -i '/^#\[multilib]$/{N;s/#//g}' /etc/pacman.conf fi # Read programs to install from file installPackageGroup base echo "Heavy packages are:" getPackageGroup heavy prompt "Install heavy packages? [y/N]" installPackageGroup heavy prompt "Install audio packages? [y/N]" installPackageGroup audio prompt "Install graphic packages? [y/N]" installPackageGroup graphic # Clone specific programs sources to be compiled and installed later ( cd "$HOME/repos" [ ! -d "dmenu" ] && git clone "https://git.suckless.org/dmenu" [ ! -d "sxiv" ] && git clone "https://github.com/muennich/sxiv" [ ! -d "yay" ] && git clone "https://aur.archlinux.org/yay.git" ) # Put config files in place echo "Putting config files in place" ( cd "$HOME/repos/configs/stow" if [ -f "$HOME/.bashrc" ]; then prompt "Remove .bashrc? If it is the installation default it will prevent stow from loading configs. [y/N]" \ rm "$HOME/.bashrc" fi stow -t "$HOME" calcurse stow -t "$HOME" neofetch stow -t "$HOME" newsboat stow -t "$HOME" nvim stow -t "$HOME" pandoc stow -t "$HOME" ranger stow -t "$HOME" rcs stow -t "$HOME" tmux stow -t "$HOME" vim if ! [ -z "$installAudio" ]; then stow -t "$HOME" cmus fi if ! [ -z "$installGraphic" ]; then stow -t "$HOME" bspwm stow -t "$HOME" colorschemes stow -t "$HOME" dunst stow -t "$HOME" emoji stow -t "$HOME" mpv stow -t "$HOME" picom stow -t "$HOME" qutebrowser stow -t "$HOME" sxhkd stow -t "$HOME" sxiv stow -t "$HOME" XserverDotfiles stow -t "$HOME" zathura fi echo "" ) # Compile specific programs echo "Installing some program repos." ( cd "$HOME/repos" if ! type dmenu; then ( echo "Installing dmenu." echo cd dmenu git remote add xyz "${server}:~/repos/remotes/dmenu" git checkout xyz/taamas git switch -c taamas git branch --set-upstream-to=xyz/taamas taamas make sudo make install make clean ) fi if ! type sxiv; then ( echo "Installing sxiv." echo cd sxiv make sudo make install make clean ) fi if ! type yay; then ( echo "Installing yay." echo cd yay makepkg -si ) fi echo "" ) # Install programs with yay prompt "Install yay packages? [y/N]" getPackageGroup 'yay' '|' yay -S - # Mainpage if [ ! -d "$HOME/.mainpage" ]; then ( cd "$HOME/repos" git clone "https://git.taamas.xyz/Taamas/mainpage" cp -r "mainpage" "$HOME/.mainpage" rm -rf "$HOME/.mainpage/.git" ) fi # Remove default .bash_profile as it avoids .profile execution if [ -f ".bash_profile" ]; then prompt "Remove .bash_profile? It prevents .profile from being executed. [y/N]" \ rm .bash_profile fi