#!/usr/bin/env bash # # SCRIPT NAME: # install # # AUTHOR: # Severin Kaderli # # 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