dotfiles/install
Severin Kaderli 02a1abe903
Update installation scripts
Signed-off-by: Severin Kaderli <severin@kaderli.dev>
2019-03-07 19:20:19 +01:00

166 lines
No EOL
3.7 KiB
Bash
Executable file

#!/usr/bin/env bash
#
# SCRIPT NAME:
# install
#
# AUTHOR:
# Severin Kaderli <severin@kaderli.dev>
#
# DESCRIPTION:
# This is the main installation script for my dotfiles. It setups the symlinks
# to the neeeded files, creates new directories, enables systemd services,
# installs pacman packages and gives out the correct permissions to files.
#
# USAGE:
# ./install
. ./system/.local/bin/utils
###############################################################################
# Configuration variables #
###############################################################################
# The user for the installation
USER="severin"
# Directories which should be created
DIRECTORIES=(
".local/log"
"Build"
"Downloads"
"Projects"
"Videos"
"Pictures"
"Music"
)
# Files which should be symlinked in the home folder
LINKED_FILES_HOME=(
".config/autokey"
".config/bat"
".config/cmus"
".config/compton"
".config/cron"
".config/custom"
".config/dconf"
".config/dunst"
".config/git"
".config/gtk-2.0"
".config/gtk-3.0"
".config/httpie"
".config/i3"
".config/mpv"
".config/newsboat"
".config/npm"
".config/polybar"
".config/python"
".config/redshift"
".config/streamlink"
".config/termite"
".config/Trolltech.conf"
".config/vim"
".config/vue"
".config/wget"
".config/X11"
".config/zsh"
".local/bin"
)
# Symlinks which will be created
declare -A LINKED_FILES
LINKED_FILES=(
["${HOME}/Music"]="${HOME}/Documents/Media/Music"
["${HOME}/Pictures"]="${HOME}/Documents/Media/Pictures"
)
# Permissions to set for folders and files
declare -A PERMISSIONS
PERMISSIONS=(
["${XDG_BIN_HOME}"]="744"
)
# Groups the user should be added to
ADD_GROUPS=(
"bumblebee"
)
# Array of systemd services which should be enabled
SYSTEMD_SERVICES=(
"bumblebeed"
"cronie"
"NetworkManager"
"org.cups.cupsd"
)
#######################################
# Main code
#######################################
print_header "Installing requirements"
sudo pacman -S git base-devel --noconfirm --needed
print_header "Creating directories"
for dir in "${DIRECTORIES[@]}"
do
create_directory "${dir}"
done
print_header "Installing yay"
is_yay_installed=$(command -v yay)
# Install yay if not already installed
if [ -z "${is_yay_installed}" ]; then
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si --noconfirm --skippgpcheck
cd ..
rm -rf yay
else
print_log "yay is already installed"
fi
print_header "Installing packages"
package_count=$(cat "${PACKAGES_DIR}/packages.list" | wc -l)
print_log "Installing "${package_count}" packages"
# Install packages
#yay -S --noconfirm $(cat "${PACKAGES_DIR}/packages.list")
print_header "Creating symlinks"
for file in "${LINKED_FILES_HOME[@]}";
do
create_link "${file}"
done
for file in "${!LINKED_FILES[@]}"; do
print_log "Linking ${YELLOW}${file}${RESET} -> ${YELLOW}${LINKED_FILES[${file}]}${RESET}"
rm -rf "${file}"
ln -fs "${LINKED_FILES[${file}]}" "${file}"
done
print_header "Give permissions"
for permission in "${!PERMISSIONS[@]}"; do
set_permission "${USER}" "${PERMISSIONS[${permission}]}" "${permission}"
done
print_header "Add user to groups"
for group in "${ADD_GROUPS[@]}"
do
add_to_group "${USER}" "${group}"
done
print_header "Enabling systemd services"
for service in "${SYSTEMD_SERVICES[@]}"
do
enable_service "${service}"
done
print_header "Copy custom udev rules"
for file in ${SYSTEM_DIR}/etc/udev/rules.d/*.rules
do
copy_udev_rule "${file}"
done
sudo udevadm control --reload-rules
print_header "Copy sudoers content"
for file in ${SYSTEM_DIR}/etc/sudoers.d/*
do
copy_sudoers_content "${file}"
done