#!/bin/bash echo "Setting up the stuff..." git submodule init git submodule update ! command -v git &> /dev/null && echo "Ensure git is install before running this" && exit -1 [[ ! -d ~/git ]] && echo "Creating git directory in $HOME" && mkdir ~/git # Wayland + Hyprland is quite nice setup_hyprland_arch() { echo "Setting up Hyprland..." sudo pacman -S wayland hyprland waybar wofi dunst pipewire pipewire-pulse wireplumber polkit-kde-agent qt5-wayland qt6-wayland hyprpaper # grim + slurp + swappy for screenshots sudo pacman -S grim slurp swappy wl-clipboard # wdisplays is a decent looking GUI similar to arandr but for Wayland, and xdg-desktop-portal-hyprland is useful for screensharing paru -S wdisplays xwaylandvideobridge-bin xdg-desktop-portal-hyprland-git } # AwesomeWM (X11) - not a bad tiling WM setup_awesomewm() { if [[ "$(cat /etc/os-release)" == *"Ubuntu"* ]]; then sudo apt install awesome else sudo pacman -S awesome fi } # SDDM # Uses Wayland is display server. Requires weston by default setup_sddm() { echo "Installing SDDM" if [[ "$(cat /etc/os-release)" == *"Ubuntu"* ]]; then sudo apt install sddm weston else sudo pacman -S sddm weston fi echo "Setting SDDM to use wayland" # Set sddm to use wayland sudo tee /etc/sddm.conf.d/10-wayland.conf < /dev/null [General] DisplayServer=wayland SDDMWayland } # bspwm - it's okay setup_bspwm() { if [[ "$(cat /etc/os-release)" == *"Ubuntu"* ]]; then echo "TODO: Figure out how to setup bspwm on Ubuntu" else sudo pacman -S bspwm sxhkd polybar fi } setup_bluetooth() { echo "Setting up bluetooth" if [[ "$(cat /etc/os-release)" == *"Ubuntu"* ]]; then echo "TODO: Figure out how to setup bluetooth on Ubuntu" else sudo pacman -S bluez bluez-utils fi sudo systemctl enable --now bluetooth } # Setup paru setup_paru() { if ! command -v paru &> /dev/null; then echo "Setting up paru..." pushd ~/git sudo pacman -S --needed base-devel git clone https://aur.archlinux.org/paru.git cd paru makepkg -si popd else echo "paru is already installed" fi } # Intel specific setup # TODO: Auto detect intel and run this setup_intel() { echo "Setting up thermald for Intel" if [[ "$(cat /etc/os-release)" == *"Ubuntu"* ]]; then sudo apt install thermald else sudo pacman -S thermald fi sudo systemctl enable --now thermald sudo thermald --systemd } if [[ "$(cat /etc/os-release)" == *"Ubuntu"* ]] then echo "Updating Ubuntu" sudo apt update && sudo apt upgrade echo "Installing tools/utils" sudo apt install ripgrep fd-find make stow tmux lxsession thunar power-profiles-daemon playerctl network-manager-gnome volumeicon-alsa picom autorandr arandr neofetch echo "Installing arc-icon-theme" mkdir -p ~/git git clone https://github.com/horst3180/arc-icon-theme --depth 1 ~/git/arc-icon-theme && cd ~/git/arc-icon-theme ./autogen.sh --prefix=/usr sudo make install echo "Installing starship prompt" curl -sS https://starship.rs/install.sh | sh else echo "Updating Arch" sudo pacman -Syyu echo "Installing tools/utils" sudo pacman -S ripgrep fd neovim make stow tmux dmenu arandr autorandr volumeicon picom nitrogen network-manager-applet lxsession thunar lxappearance-gtk3 power-profiles-daemon acpi arc-icon-theme playerctl xorg-xsetroot ttf-jetbrains-mono-nerd ttf-mononoki-nerd ttf-nerd-fonts-symbols-mono ttf-nerd-fonts-symbols ttf-nerd-fonts-symbols-common starship breeze breeze-gtk breeze-icons pass nushell neofetch man-db python wget qemu-audio-jack jack-example-tools sudo systemctl enable --now power-profiles-daemon # Install paru setup_paru # Install wayland + hyprland setup_hyprland_arch fi setup_bluetooth setup_sddm # tmux plugin manager and theme if [[ ! -d ~/.tmux/plugins/tpm ]]; then echo "Installing tmux plugin manager... Don't forget to press in a new tmux session later" git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm fi add_to_file() { if grep -Fxq "$1" $2 then echo "Found existing line '$1' in file '$2'" else echo "Adding line \"$1\" to file \"$2\"" echo "$1" >> $2 fi } # Add aliases to zshrc add_to_file "alias nv='nvim'" "$HOME/.zshrc" add_to_file 'eval "$(starship init bash)"' "$HOME/.bashrc" add_to_file 'eval "$(starship init zsh)"' "$HOME/.zshrc" add_to_file 'export PATH="$PATH:$HOME/.scripts"' "$HOME/.zshrc" add_to_file 'export PATH="$PATH:$HOME/.scripts"' "$HOME/.bashrc" # Set GTK_THEME add_to_file 'export GTK_THEME=Breeze:dark' "$HOME/.zshrc" add_to_file 'export GTK_THEME=Breeze:dark' "$HOME/.bashrc" gsettings set org.gnome.desktop.interface gtk-theme 'Breeze-dark' gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' # Run neofetch when we open a terminal coz it's cool add_to_file 'neofetch' "$HOME/.bashrc" add_to_file 'neofetch' "$HOME/.zshrc" # I suppose we might as well just try setting up nvim # I am commenting this out for now coz it's annoying # echo "Running PackerSync in neovim..." # nvim --headless -c 'autocmd User PackerComplete quitall' -c 'PackerSync'