#!/bin/bash PWD=$(dirname $0) pacman="sudo pacman --needed --noconfirm -S" pacaur="sudo pacaur --needed --noconfirm -y" exists() { command -v "$1" >/dev/null; } install() { echo "==> Installing: $@" sudo pacmaur --needed --noconfirm -S $@ } ######################################## # # Bootstrap # ######################################## if ! echo -e "GET http://google.com HTTP/1.0\n\n" | nc google.com 80 > /dev/null 2>&1; then >&2 echo "No internet connection detected!" exit 1 fi ## Datetime sudo timedatectl set-ntp true sudo timedatectl set-timezone America/Toronto # Use localtime b/c I expect to dualboot with windows (hisssss) sudo hwclock --systohc --localtime # Set locale sed -i '/^#en_US\.UTF-8/s/^#//' /etc/locale.gen locale-gen ln -sfv /usr/share/zoneinfo/America/Toronto /etc/localtime # Be verbose about package updates sed -i 's/^#\(VerbosePkgLists.*\)/\1/' /etc/pacman.conf ## AUR helper install git if ! command -v pacaur >/dev/null; then pushd $(mktemp -d) gpg --recv-keys --keyserver hkp://pgp.mit.edu 1EB2638FF56C0C53 git clone https://aur.archlinux.org/cower.git && cd cower && makepkg -sri git clone https://aur.archlinux.org/pacaur.git && cd pacaur && makepkg -sri TEMP=$(pwd) popd rm -rf "$TEMP" fi ## Fontconfig if ! grep infinality /etc/pacman.conf >/dev/null; then echo <>/etc/pacman.conf [infinality-bundle] Server = http://bohoomil.com/repo/\$arch [infinality-bundle-multilib] Server = http://bohoomil.com/repo/multilib/\$arch [infinality-bundle-fonts] Server = http://bohoomil.com/repo/fonts EOL fi sudo pacman-key -r 962DDE58 sudo pacman-key -lsign-key 962DDE58 sudo pacman -Sy install ttf-droid-ib ttf-opensans otf-fira-{mono,sans}-ibx terminus-font-td1 ######################################## # # GUI+Desktop # ######################################## # Essentials install nvidia \ xorg-init xorg-server \ rxvt-unicode \ bspwm sxhkd compton xdotool \ dosfstools ntfs-3g \ wget curl tree rsync openssh dnsutils # Window manager install bspwm sxhkd compton lightdm lightdm-webkit2-greeter xdotool # Taskbar install lemonbar-xft-git siji-git xtitle sutils-git # Install pacman hooks hookdest=/etc/pacman.d/hooks mkdir -p "$hookdest" for hook in $PWD/$hookdest/*.hook; do [[ -f $hookdest/${hook##*/} ]] || sudo ln -svf $hook $hookdest/ done # Configure lightdm sudo sed -i 's/^#\?\(user-session=\).*/\1bspwm/; s/^#\?\(greeter-allow-guest=\).*/\1false/; s/^#\?\(greeter-session=\).*/\1lightdm-webkit2-greeter/' \ /etc/lightdm/lightdm.conf sudo sed -i 's/^#\?\(webkit-theme = \).*/\1vnought/' \ /etc/lightdm/lightdm-webkit2-greeter.conf [ -d /usr/share/lightdm-webkit/themes/vnought ] || \ sudo git clone https://github.com/hlissner/lightdm-webkit2-vnought /usr/share/lightdm-webkit/themes/vnought ######################################## # # System/Shell # ######################################## # Tools install hub # convient git wrapper install bc # my calculator install rsync # replaces dropbox install pass # password manager install maim slop # screenshots + selection install neofetch-git # for unixporn install rofi # dmenu replacement install mpd mpc ncmpcpp # music server + player install redshift # display color shift based on time of day install feh # wallpaper setter + image previewer install the_silver_searcher # fast file searching install tmux # terminal multiplexer install fasd # quick filesystem navigation install git-crypt install youtube-dl # cron install cronie [[ -f $PWD/crontab ]] && crontab $PWD/crontab sudo systemctl enable cronie.service ######################################## # # Apps & Customization # ######################################## # Applications install rxvt-unicode install termite install obs-studio install chromium firefox # browsers # virtual machines install virtualbox-host-dkms virtualbox # GTK theme [[ -d /usr/share/themes/Arc-Dark ]] || install gtk-theme-arc ######################################## # # Security # ######################################## # SSH: no root login + only pubkey auth sudo sed -i 's/^#\?\(PasswordAuthentication \).*/\1no/; \ s/^#\?\(PermitRootLogin ).*/\1no/; \ s/^#\?\(X11Forwarding ).*/\1yes/; \ ' \ /etc/ssh/sshd_config # Fix permissions sudo chmod 700 /etc/iptables # Prompts for password! gpg -d $PWD/.config/panel/panel.secrets.gpg > $PWD/.config/panel/panel.secrets