dotfiles/.local/arch/init.sh

222 lines
6.1 KiB
Bash
Raw Normal View History

2019-05-28 17:44:30 +02:00
#!/bin/bash -e
# Enable multilib & add extra repos {{{
2019-05-28 17:44:30 +02:00
sudo cp /etc/pacman.conf{,.bak}
sudo sed -i /etc/pacman.conf \
-e 's/^#\(Color\)/\1\nILoveCandy/' \
-e '/\[multilib\]/,/Include/s/^#//' \
-e '$ a [quarry]\nServer = https://pkgbuild.com/~anatolik/quarry/x86_64/'
2019-05-28 17:44:30 +02:00
# }}}
# Update system and install basic packages {{{
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman -Syyu
sudo pacman -S base-devel git aria2 reflector go --noconfirm
git clone https://aur.archlinux.org/yay.git /tmp/yay
(cd /tmp/yay && makepkg -sic --noconfirm)
2019-10-30 10:01:14 +01:00
git clone https://github.com/alfunx/dotfiles.sh \
--single-branch --branch=sparse-edit /tmp/dotfiles.sh
(cd /tmp/dotfiles.sh && sudo make install)
# }}}
# Clone dotfiles {{{
mkdir -p ~/Documents/Code/GitHub
dotfiles clone https://github.com/ObserverOfTime/home.files \
~/Documents/Code/GitHub/home.files && dotfiles checkout -f
2019-05-28 17:44:30 +02:00
# }}}
# Rank pacman mirrors {{{
sudo cp /etc/pacman.d/mirrorlist{,.bak}
REF_OPTS=('--country GR' '--country DE' '--country FR'
'--protocol https' '--protocol ftp' '--age 12'
'--sort rate' '--save /etc/pacman.d/mirrorlist')
# shellcheck disable=SC2068
sudo reflector ${REF_OPTS[@]}
sudo mkdir -p /etc/pacman.d/hooks
sudo tee /etc/pacman.d/hooks/mirrorupgrade.hook >/dev/null <<EOF
[Trigger]
Operation = Upgrade
Type = Package
Target = pacman-mirrorlist
[Action]
Description = Updating pacman-mirrorlist with reflector
When = PostTransaction
Depends = reflector
2019-10-30 10:01:14 +01:00
Exec = /usr/bin/reflector ${REF_OPTS[*]}
2019-05-28 17:44:30 +02:00
EOF
unset REF_OPTS
# }}}
# Use aria2 for makepkg & set packager {{{
NAME="$(awk -F'[:,]' -vu="$USER" '$1 == u {print $5}' /etc/passwd)"
PACKAGER="${NAME:-ObserverOfTime} <chronobserver@disroot.org>"
2019-10-30 10:01:14 +01:00
ARIA='::/usr/bin/aria2c --conf-path=/etc/aria2.conf -o %o %u'
2019-05-28 17:44:30 +02:00
WGET="$(wget -V | awk 'NR == 1 {print $2"/"$3}')"
sudo tee /etc/aria2.conf >/dev/null <<EOF
user-agent=${WGET:-Wget}
summary-interval=0
file-allocation=none
split=4
EOF
sudo cp /etc/makepkg.conf{,.bak}
sudo sed -i /etc/makepkg.conf \
-e "s#'ftp::.*'#'ftp$ARIA'#" \
-e "s#'http::.*'#'http$ARIA'#" \
-e "s#'https::.*'#'https$ARIA'#" \
2019-10-30 10:01:14 +01:00
-e "s/^#PACKAGER.*/PACKAGER='$PACKAGER'/"
2019-05-28 17:44:30 +02:00
unset NAME PACKAGER ARIA WGET
# }}}
# Install packages via yay {{{
# shellcheck disable=SC2046,SC2086
2019-09-25 20:07:56 +02:00
_yay() (yay -S --$1 --needed ${*:2} $(<~/.local/arch/packages.$1.txt))
2019-05-28 17:44:30 +02:00
_yay repo --noconfirm && _yay aur
unset -f _yay
# }}}
2019-09-25 20:07:56 +02:00
# Install node packages {{{
yarn global install
2019-05-28 17:44:30 +02:00
# }}}
# Download binaries from github {{{
2019-09-25 20:07:56 +02:00
ghdl() (curl -L https://git.io/"$1" -o ~/.local/bin/"$2"; chmod +x "$_")
2019-05-28 17:44:30 +02:00
ghdl vhMor aria2magnet
ghdl fjlNS lnk-parse
unset -f ghdl
# }}}
# Install bash completions {{{
2019-11-11 18:44:44 +01:00
DIRECTORY="$XDG_DATA_HOME/bash-completion/completions"
declare -A ALIASES=(
[adb]=android
[emulator]=android
[fastboot]=android
[clang++]=clang
[ffprobe]=ffmpeg
[goapp]=go
[godoc]=go
[gradlew]=gradle
)
mkdir -p "$DIRECTORY"
2019-09-25 20:07:56 +02:00
raw() (printf 'https://raw.githubusercontent.com/%s' "$1/$2/master/$3")
2019-11-11 18:44:44 +01:00
aria2c -d "$DIRECTORY" -i - <<EOF
$(raw mbrubeck android-completion android)
$(raw clerk67 ffmpeg-completion ffmpeg)
$(raw gradle gradle-completion gradle-completion.bash)
out=gradle
$(raw omakoto go-completion.bash go-completion.bash)
out=go
$(raw llvm-mirror clang utils/bash-autocomplete.sh)
out=clang
EOF
printf 'complete -o default -F _ffmpeg ffprobe\n' >> "$DIRECTORY/ffmpeg"
printf 'complete -o default -F _clang clang++\n' >> "$DIRECTORY/clang"
for key in "${!ALIASES[@]}"; do
ln -fvs "$DIRECTORY/${ALIASES[$key]}" "$DIRECTORY/$key"
done
grunt --completion=bash > "$DIRECTORY/grunt"
gulp --completion=bash > "$DIRECTORY/gulp"
pandoc --bash-completion > "$DIRECTORY/pandoc"
poetry completions bash > "$DIRECTORY/poetry"
unset -f DIRECTORY ALIASES raw
2019-05-28 17:44:30 +02:00
# }}}
# Install from github reporisotories {{{
clone() { hub clone --depth=1 "$@" "/tmp/${1##*/}"; }
clone eli-schwartz/dotfiles.sh
(cd /tmp/dotfiles.sh && sudo make)
clone rkitover/vimpager
(cd /tmp/vimpager && sudo make PREFIX=/usr/local docs install)
clone ObserverOfTime/sddm-patema
sudo -E /tmp/sddm-patema/install.sh
# clone ObserverOfTime/PKGBUILDS
# TODO: wait for Jguer/yay#694
# }}}
# Configure grub {{{
THEME=/boot/grub/themes/Lain
2019-09-25 20:07:56 +02:00
SWAP="$(swapon --show=NAME --noheadings)"
SWAP="${SWAP+ resume=$SWAP}"
2019-05-28 17:44:30 +02:00
clone ObserverOfTime/grub2-theme-lain
sudo cp -r /tmp/grub2-theme-lain/Lain "$THEME"
sudo cp /etc/default/grub{,.bak}
sudo tee /etc/default/grub >/dev/null <<EOF
GRUB_DEFAULT=0
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR="Arch"
2019-09-25 20:07:56 +02:00
GRUB_CMDLINE_LINUX_DEFAULT="profile ipv6.disable=1${SWAP}"
2019-05-28 17:44:30 +02:00
GRUB_CMDLINE_LINUX=""
GRUB_TERMINAL_INPUT=console
GRUB_GFXMODE=1600x1200x24
GRUB_GFXPAYLOAD_LINUX=keep
GRUB_DISABLE_RECOVERY=true
GRUB_DISABLE_SUBMENU=true
GRUB_THEME=$THEME/theme.txt
GRUB_FONT=$THEME/fonts/DejaVuSansMono14.pf2
2019-10-21 09:51:06 +02:00
# vim:set ft=cfg et sw=4 ts=4:
2019-05-28 17:44:30 +02:00
EOF
sudo cp /boot/grub/grub.cfg{,.bak}
sudo grub-mkconfig -o /boot/grub/grub.cfg
2019-09-25 20:07:56 +02:00
unset -f URL THEME SWAP clone
2019-05-28 17:44:30 +02:00
# }}}
# Setup neovim {{{
nvim --headless +q >/dev/null
nvim --headless +PlugInstall +qa >/dev/null
sudo update-alternatives --set editor /usr/bin/nvim
sudo tee --append /etc/sudoers <<< \
'Defaults env_keep += "EDITOR"' >/dev/null
# }}}
# Setup mozilla profiles {{{
mkdir -p ~/.thunderbird ~/.mozilla/firefox
2019-10-30 10:01:14 +01:00
rclone sync -vv Mega:/Thunderbird \
2019-05-28 17:44:30 +02:00
~/.thunderbird/o8q08m34.default
cat > ~/.thunderbird/profiles.ini <<'EOF'
[Profile0]
Name=default
IsRelative=1
Path=o8q08m34.default
EOF
2019-10-30 10:01:14 +01:00
rclone sync -vv Mega:/Firefox \
2019-05-28 17:44:30 +02:00
~/.mozilla/firefox/6fgcqba8.dev-edition-default
cat > ~/.mozilla/firefox/profiles.ini <<'EOF'
[Profile0]
Name=dev-edition-default
IsRelative=1
Path=6fgcqba8.dev-edition-default
EOF
sudo tee /etc/pacman.d/hooks/firefox.hook >/dev/null <<EOF
[Trigger]
Operation = Upgrade
Type = File
Target = usr/bin/firefox-developer-edition
[Action]
2019-10-21 09:51:06 +02:00
Description = Setting GTK_USE_PORTAL=1 for Firefox...
2019-05-28 17:44:30 +02:00
When = PostTransaction
2019-06-11 15:44:42 +02:00
Exec = /bin/sed -i /usr/bin/firefox-developer-edition \
2019-09-25 20:07:56 +02:00
-e 's/exec/GTK_USE_PORTAL=1 &/;s/"\$@"/-allow-downgrade &/'
2019-05-28 17:44:30 +02:00
EOF
# }}}
# Set tty font {{{
sudo tee /etc/vconsole.conf >/dev/null <<'EOF'
KEYMAP=us
FONT=ter-v18n
FONT_MAP=8859-2
EOF
sudo sed -i /etc/mkinitcpio.conf \
-re 's/(^HOOKS="[^"]*)"/\1 consolefont"/'
sudo mkinitcpio -p linux
# }}}
# vim:fdm=marker:fdl=0: