/dotfiles

My dotfiles, originally designed for Ubuntu (WSL 2)

Primary LanguageShell

Dotfiles

Table of contents

Dependencies

System Packages

Ubuntu

  • autojump (Ubuntu 20.10 or earlier)
  • zoxide (Ubuntu 21.04 or later)
  • neofetch
  • zsh
  • zsh-syntax-highlighting
  • zsh-autosuggestions
  • cargo (Ubuntu 20.04 or earlier)
  • exa (Ubuntu 20.10 or later)
  • bat

Arch

Pacman
AUR

Git repositories

(These are NOT needed for arch users - There are already arch packages for them)

Other Packages

Cargo

  • exa (Ubuntu 20.04 or earlier)

Installation script

Ubuntu

Automatic

Script

Manual
# ---
# Ubuntu 20.04 or earlier
sudo apt install cargo
cargo install exa

# Ubuntu 20.10 or later
sudo apt install exa
# ---

# ---
# Ubuntu 20.10 or earlier
sudo apt install autojump

# Ubuntu 21.04 or later
sudo apt install zoxide
# ---

sudo apt install neofetch bat zsh zsh-syntax-highlighting zsh-autosuggestions 
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k

For the MesloLGS NF font, it's probably better to just follow the instructions from the powerlevel10k README.

Arch

Automatic

Script

Manual

(these commands use paru to install AUR packages)

sudo pacman -S zoxide neofetch exa bat zsh zsh-syntax-highlighting zsh-autosuggestions zsh-theme-powerlevel10k
paru -S ttf-meslo-nerd-font-powerlevel10k

Change shell to ZSH (optional)

chsh $USER -s /bin/zsh

How to clone this repo

Packages needed

This method requires stow for creating symlinks and ed for custom .bashrc support.

Note: The automatic scripts for installing dependencies also install these packages.

Ubuntu

sudo apt install stow ed

Arch

sudo pacman -S --needed stow ed

Script

Automatic

Script

Manual

git clone https://github.com/algono/dotfiles ~/dotfiles

if [ -f ~/.bashrc ]; then mv -f ~/.bashrc ~/dotfiles/bash
elif [ -f /etc/skel/.bashrc ]; then cp -f /etc/skel/.bashrc ~/dotfiles/bash
elif uname -r | grep -iq manjaro; then cp ~/dotfiles/.bash-presets/.bashrc-manjaro ~/dotfiles/bash/.bashrc
else cp ~/dotfiles/.bash-presets/.bashrc-wsl ~/dotfiles/bash/.bashrc
fi

[ -f ~/.zshrc ] && mv ~/.zshrc ~/.zshrc.bak

ed ~/dotfiles/bash/.bashrc < ~/dotfiles/.patches/bashrc-patch.ed

find ~/dotfiles/* -maxdepth 1 -name ".*" -o -type d -prune -printf "%f\n" | xargs /usr/bin/stow -d ~/dotfiles -t ~

Explanation

Clone repo in dotfiles directory

git clone https://github.com/algono/dotfiles ~/dotfiles

If there is a custom .bashrc (either in the user's personal folder or in the system's skel folder), use it as a base. As a fallback, if the system is detected as manjaro, use the default manjaro .bashrc, and if it wasn't use the default WSL one

if [ -f ~/.bashrc ]; then mv -f ~/.bashrc ~/dotfiles/bash 
elif [ -f /etc/skel/.bashrc ]; then cp -f /etc/skel/.bashrc ~/dotfiles/bash
elif uname -r | grep -iq manjaro; then cp ~/dotfiles/bash/.bashrc-manjaro ~/dotfiles/bash/.bashrc
else cp ~/dotfiles/bash/.bashrc-wsl ~/dotfiles/bash/.bashrc
fi

If there is a .zshrc file in the home folder, rename it (stow would fail if it finds a file there)

[ -f ~/.zshrc ] && mv ~/.zshrc ~/.zshrc.bak

Use the ed command to apply the relevant changes to the custom .bashrc file (Note: You should backup ~/.bashrc first if you have that file, as this method has not been extensively tested and it could break it)

ed ~/dotfiles/bash/.bashrc < ~/dotfiles/.patches/bashrc.patch.ed

Create symlinks for our dotfiles into the home directory (this command matches all non-hidden directories inside the 'dotfiles' folder)

find ~/dotfiles/* -maxdepth 1 -name ".*" -o -type d -prune -printf "%f\n" | xargs /usr/bin/stow -d ~/dotfiles -t ~

The last command didn't work. It told me that some files were going to be overwritten and failed.

If you already have some of the files from this repo, the last command will warn you and won't run.

Stow does not have any option to overwrite files, so you can either make backups of these files (example: mv .dotfile .dotfile.bak), or just delete them, and then re-run the last command.