mirror of
				https://github.com/WarrenHood/dotfiles.git
				synced 2025-11-04 01:38:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			161 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
#!/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 wireplumber polkit-kde-agent qt5-wayland qt6-wayland
 | 
						|
 | 
						|
    # 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 <<SDDMWayland > /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 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
 | 
						|
 | 
						|
    sudo systemctl enable --now power-profiles-daemon
 | 
						|
 | 
						|
    # Install paru
 | 
						|
    setup_paru
 | 
						|
 | 
						|
    # Install wayland + hyprland
 | 
						|
    setup_hyprland_arch
 | 
						|
fi
 | 
						|
 | 
						|
setup_sddm
 | 
						|
 | 
						|
 | 
						|
# tmux plugin manager and theme
 | 
						|
if [[ ! -d ~/.tmux/plugins/tpm ]]; then
 | 
						|
    echo "Installing tmux plugin manager... Don't forget to press <C-a><S-i> 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'
 |