Skip to content

Commit

Permalink
Fix a bunch of stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
mortenfyhn committed Jun 21, 2024
1 parent 9895f81 commit ce344e2
Showing 1 changed file with 57 additions and 11 deletions.
68 changes: 57 additions & 11 deletions .config/dotfiles/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
set -Eeuo pipefail
shopt -s expand_aliases

# Echo bold text (green)
bold() {
echo -e "\e[1;32m$*\e[0m"
}

headless=false
while [[ $# -gt 0 ]]
do
Expand All @@ -16,17 +21,20 @@ done

if [[ "$headless" = false ]]
then
# Add Vivaldi repos
# Add Vivaldi repo
# https://help.vivaldi.com/desktop/install-update/manual-setup-vivaldi-linux-repositories/
bold "Adding Vivaldi repository"
wget -qO- https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo dd of=/usr/share/keyrings/vivaldi-browser.gpg
echo "deb [signed-by=/usr/share/keyrings/vivaldi-browser.gpg arch=$(dpkg --print-architecture)] https://repo.vivaldi.com/archive/deb/ stable main" | sudo dd of=/etc/apt/sources.list.d/vivaldi-archive.list

# Add Sublime Text repos
# Add Sublime Text repo
# https://www.sublimetext.com/docs/linux_repositories.html
bold "Adding Sublime Text repository"
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/sublimehq-archive.gpg > /dev/null
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list

# Install Iosevka font (for my editor)
bold "Installing Iosevka font"
pushd "$(mktemp --directory)" > /dev/null
wget -qO iosevka.zip https://github.com/be5invis/Iosevka/releases/download/v16.3.4/super-ttc-iosevka-16.3.4.zip
unzip iosevka.zip
Expand All @@ -36,9 +44,12 @@ then
fi

# Add git repo
bold "Adding git repository"
sudo add-apt-repository -y ppa:git-core/ppa
echo "Done"

# Install system packages
bold "Installing apt packages"
sudo apt-get update -qq
sudo apt-get upgrade -qq
sudo apt-get install -qq \
Expand All @@ -53,6 +64,7 @@ sudo apt-get install -qq \
cmake \
curl \
git \
gparted \
htop \
less \
meld \
Expand All @@ -73,7 +85,6 @@ sudo apt-get install -qq \
wget \
xclip \
zsh

if [[ "$headless" = false ]]
then
sudo apt-get install -qq \
Expand All @@ -85,40 +96,54 @@ then
vlc \
xbacklight
fi
echo "Done"

# Install and configure fd-find
# Do nothing if unavailable
bold "Installing fd-find"
if sudo apt-get install -qq fd-find
then
mkdir -p ~/.local/bin
ln --force --symbolic "$(which fdfind)" ~/.local/bin/fd
else
echo "Cannot install fd-find, continuing..."
fi
echo "Done"

# Install Python packages
bold "Installing Python packages"
pip3 install -q \
black \
cmakelang
echo "Done"

# Setup ccache
bold "Setting up ccache"
sudo /usr/sbin/update-ccache-symlinks
echo "Done"

# Setup ZSH with oh-my-zsh
if [[ ! -d ~/.oh-my-zsh ]]
bold "Setting up Oh My Zsh"
if [[ -d ~/.oh-my-zsh ]]
then
echo "Oh My Zsh already installed"
else
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
fi
echo "Done"

# Set ZSH as default shell
bold "Make ZSH default shell"
if [[ "$SHELL" != "/usr/bin/zsh" && ! -f /.dockerenv ]]; then
echo "Changing login shell to ZSH..."
chsh -s "$(command -v zsh)"
fi
echo "Done"

# Setup ZSH themes and plugins
bold "Configuring ZSH"
ZSH_CUSTOM=~/.oh-my-zsh/custom
wget -q -O "$ZSH_CUSTOM/themes/bullet-train.zsh-theme" https://raw.githubusercontent.com/caiogondim/bullet-train.zsh/master/bullet-train.zsh-theme
wget -qO "$ZSH_CUSTOM/themes/bullet-train.zsh-theme" https://raw.githubusercontent.com/caiogondim/bullet-train.zsh/master/bullet-train.zsh-theme
if [[ ! -d "$ZSH_CUSTOM/plugins/zsh-autosuggestions" ]]; then
git clone --quiet https://github.com/zsh-users/zsh-autosuggestions "$ZSH_CUSTOM/plugins/zsh-autosuggestions"
fi
Expand All @@ -127,8 +152,10 @@ if [[ ! -d "$ZSH_CUSTOM/plugins/zsh-256color" ]]; then
fi
font_dir=$(mktemp -d)
git clone --quiet --depth=1 https://github.com/powerline/fonts.git "$font_dir" && "$font_dir/install.sh"
echo "Done"

# Clone dotfiles
bold "Cloning dotfiles repo"
grep -sqxF ".dotfiles" ~/.gitignore || echo ".dotfiles" >> ~/.gitignore
if [[ ! -d ~/.dotfiles ]]; then
git clone -q --bare [email protected]:mortenfyhn/dotfiles.git ~/.dotfiles
Expand All @@ -138,8 +165,10 @@ if [[ ! -d ~/.dotfiles ]]; then
dots config --local --add remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
dots fetch
fi
echo "Done"

# Load dconf settings
bold "Load MATE desktop environment settings"
if command -v dconf > /dev/null
then
dconf load /org/mate/terminal/profiles/default/ < ~/.config/dotfiles/dconf/mate-terminal
Expand All @@ -148,20 +177,37 @@ then
else
echo "Cannot find dconf, won't load dconf settings"
fi
echo "Done"

# Remap keyboard (use caps lock key as alt gr)
# Patch returns 1 if the patch already has been applied, so I hide the exit code and then check the text output to make this idempotent
# Remap keyboard
# Note: Patch returns 1 if the patch already has been applied, so I hide the exit code and then check the text output to make this idempotent
bold "Remapping keyboard"
# Patch 1: Remap caps lock to alt gr
if patch_output=$(sudo patch --unified --backup --forward --reject-file=- /usr/share/X11/xkb/symbols/pc --input="$HOME"/.config/dotfiles/remap-caps-lock.patch)
then
echo "Applied keyboard patch"
echo "Applied keyboard patch 1"
else
if echo "$patch_output" | grep -q "Reversed (or previously applied) patch detected!"
then
echo "Keyboard patch 1 already applied"
else
echo "Failed to apply keyboard patch 1"
exit 1
fi
fi
# Patch 2: Don't spit out non-breaking space for alt gr + space (common "mistake" when typing a space after a bracket)
if patch_output=$(sudo patch --unified --backup --forward --reject-file=- /usr/share/X11/xkb/symbols/no --input="$HOME"/.config/dotfiles/non-breaking-space.patch)
then
echo "Applied keyboard patch 2"
else
if echo "$patch_output" | grep -q "Reversed (or previously applied) patch detected!"
then
echo "Keyboard patch already applied"
echo "Keyboard patch 2 already applied"
else
echo "Failed to apply keyboard patch"
echo "Failed to apply keyboard patch 2"
exit 1
fi
fi
echo "Done"

echo "Done! Log out and back in again."
bold "All done! Log out and back in again."

0 comments on commit ce344e2

Please sign in to comment.