#!/bin/bash -e # Enable multilib & add extra repos {{{ sudo cp /etc/pacman.conf{,.bak} sudo sed -i /etc/pacman.conf \ -e 's/^#\(Color\)/\1\nILoveCandy/' \ -e '/\[multilib\]/,/Include/s/^#//' \ -e '$ a \n[chaotic-aur]\nInclude = /etc/pacman.d/chaotic-mirrorlist' sudo curl -LSsfo /etc/pacman.d/chaotic-mirrorlist \ 'https://aur.archlinux.org/cgit/aur.git/plain/mirrorlist?h=chaotic-mirrorlist' # }}} # Update system and install basic packages {{{ sudo pacman-key --init sudo pacman-key --populate archlinux sudo pacman-key --recv-keys 0x3056513887B78AEB sudo pacman-key --refresh-keys sudo pacman -Syyu --noconfirm sudo pacman -S git aria2 yay --noconfirm # }}} # Clone dotfiles {{{ (cd /tmp; yay -G dotfiles.sh-git) pushd /tmp/dotfiles.sh-git >/dev/null patch -n PKGBUILD <<'EOF' 12,13c12,14 < source=("${pkgname%-git}::git+$url") < md5sums=("SKIP") --- > source=("${pkgname%-git}::git+$url" "sparse-edit.patch::$url/pull/10.diff") > md5sums=("SKIP" "6ecafcc0206a730aa40cc751435922ef") > prepare() (git -C "$srcdir/${pkgname%-git}" apply "$srcdir/sparse-edit.patch") EOF makepkg -sic popd >/dev/null rm -r /tmp/dotfiles.sh-git dotfiles clone https://github.com/ObserverOfTime/home.files \ "${XDG_DATA_HOME:=$HOME/.local/share}/dotfiles" dotfiles checkout --force # }}} # Use aria2 for makepkg & set packager {{{ NAME="$(getent passwd "$USER" | awk -F'[:,]' '{print $5}')" PACKAGER="${NAME:=ObserverOfTime} " ARIA='::/usr/bin/aria2c --conf-path=/etc/aria2.conf -o %o %u' sudo tee /etc/aria2.conf >/dev/null </dev/null </dev/null <> "$DIRECTORY/ffmpeg" printf 'complete -o default -F _clang clang++\n' >> "$DIRECTORY/clang" printf 'complete -o default -F __bundle bundler\n' >> "$DIRECTORY/bundle" 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" ln -fvs /usr/share/fzf/completion.bash "$DIRECTORY/fzf" unset DIRECTORY ALIASES # }}} # Configure grub {{{ THEME=/boot/grub/themes/Lain git clone https://git.disroot.org/chronobserver/grub2-theme-lain \ /tmp/grub2-theme-lain --depth=1 rm -rf /tmp/grub2-theme-lain/{.git*,README.md} sudo cp -r /tmp/grub2-theme-lain "$THEME" sudo cp /etc/default/grub{,.bak} sudo tee /etc/default/grub >/dev/null </dev/null <<< $'[Theme]\nCurrent=patema' # }}} # Make maven use XDG_CACHE_HOME {{{ sudo sed -i /opt/maven/conf/settings.xml \ -e "\%xsi:schema%a \\ \\ \${env.XDG_CACHE_HOME}/maven/repository\\ " # }}} # Setup neovim {{{ nvim --headless +q >/dev/null nvim --headless +PlugInstall +qa >/dev/null sudo ln -s /usr/bin/nvim /usr/local/bin/vi sudo ln -s /usr/bin/nvim /usr/local/bin/vim # }}} # Create wrapper scripts {{{ sudo tee /usr/local/bin/jarwrapper >/dev/null <<'EOF' #!/bin/sh exec "${JAVA_HOME:-/usr/lib/jvm/default}/bin/java" -jar "$@" EOF sudo tee /usr/local/bin/sqlite3 >/dev/null <<'EOF' #!/bin/sh exec env \ SQLITE_HISTORY="${XDG_CACHE_HOME:-$HOME}/.sqlite_history" \ /usr/bin/sqlite3 "$@" EOF sudo tee /usr/local/bin/wget >/dev/null <<'EOF' #!/bin/sh exec /usr/bin/wget "$@" \ --hsts-file="${XDG_CACHE_HOME:-$HOME}/.wget-hsts" EOF sudo chmod +x /usr/local/bin/{jarwrapper,sqlite3,wget} # }}} # Configure binfmt {{{ sudo tee /etc/binfmt.d/jar.conf >/dev/null \ <<< ':JAR:E::jar::/usr/local/bin/jarwrapper:' sudo ln -s /etc/binfmt.d/wine.conf /dev/null # }}} # Set user dirs {{{ mkdir -p "$HOME"/.local/{templates,public} xdg-user-dirs-update --set TEMPLATES "$HOME/.local/templates" xdg-user-dirs-update --set PUBLICSHARE "$HOME/.local/public" # }}} # Set tty font {{{ sudo tee /etc/vconsole.conf >/dev/null <<'EOF' KEYMAP=us FONT=ter-v22n FONT_MAP=8859-2 EOF sudo sed -i /etc/mkinitcpio.conf \ -re 's/(^HOOKS="[^"]*)"/\1 consolefont"/' sudo mkinitcpio -p linux-zen # }}} # vim:fdm=marker:fdl=0: