#!/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' # }}} # Update system and install basic packages {{{ CHAOTIC='https://cdn-mirror.chaotic.cx/chaotic-aur' sudo pacman-key --init sudo pacman-key --populate archlinux sudo pacman-key --refresh-keys sudo pacman -U "$CHAOTIC"/chaotic-{keyring,mirrorlist}.pkg.tar.zst sudo pacman -Syyu --noconfirm sudo pacman -S git aria2 yay --noconfirm unset CHAOTIC # }}} # Clone dotfiles {{{ git clone https://git.disroot.org/PKGBUILDS/dotfiles-alfunx-git \ /tmp/dotfiles-alfunx-git --depth=1 (cd /tmp/dotfiles-alfunx-git; makepkg -sic) rm -rf /tmp/dotfiles-alfunx-git dotfiles clone https://github.com/ObserverOfTime/home.files \ "${XDG_DATA_HOME:=$HOME/.local/share}/dotfiles" dotfiles checkout --force dotfiles submodule update --init # }}} # 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 <> "$DIRECTORY/ffmpeg" printf '\ncomplete -o default -F _clang clang++\n' >> "$DIRECTORY/clang" for key in "${!ALIASES[@]}"; do ln -fvs "$DIRECTORY/${ALIASES[$key]}" "$DIRECTORY/$key" done 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 -c \ 'autocmd User PackerComplete qa' \ -c 'PackerSync' >/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-tkg-pds # }}} # vim:fdm=marker:fdl=0: