Skip to content

tnthi115/dotfiles

Repository files navigation

dotfiles

These are my personal configuration files.

Tokyonight macos tokyonight

Gruvbox Material gruvbox material

Installation

Warning: I am not responsible for any changes to your system. Make sure you understand what you are doing before installing any dependencies and using my dotfiles.

Make sure to install the dependencies listed below.

# On Arch (pkglist.txt is a WIP and not complete)
sudo pacman -S --needed - < pkglist.txt

# On MacOS
brew bundle --file=~/dotfiles/Brewfile

Warning: The package names may vary or some may not exist depending on your package manager. If so, just look up how to install the packages on your system.

You will need Git and GNU Stow to clone and symlink the dotfiles.

# On Arch
sudo pacman -S git stow

# On Ubuntu
sudo apt update
sudo apt-get install git stow

# On MacOS/OS X
brew install git stow

Clone into your $HOME or ~ directory:

git clone https://github.com/tnthi115/dotfiles.git

Important: Remove or backup your old config files before running stow. For example:

mv ~/.zshrc ~/.zshrc.bak

Within ~/dotfiles/, run stow to symlink everything (not recommended) or just select what you want:

stow */ # Everything (the '/' grabs all directories and ignores files (e.g. README.md))
stow zsh # Just my zsh config

Note: stow doesn't assume $HOME (~) as the target directory, and instead defaults to the parent of the current directory, which is why the above commands work properly. If for some reason you want to clone to another directory rather than your home directory (e.g. ~/repos/, ~/Git/, etc.), you should run stow with the --target flag to specify your home directory:

stow --target=${HOME} zsh

Dependencies

The following list is not comprehensive, but it includes what is important. It is broken down by OS:

Shared

Fonts

Install a Nerd Font. My current favorites are CaskaydiaCove Nerd Font and Hack Nerd Font.

Wallpapers

You can clone my wallpapers repo if you want to use the same collections I've created.

Neovim

I used to use Lunarvim as a base config for neovim. Now I prefer LazyVim.

Tmux

I use tmux for "sessionizing" different projects so that I can quickly context switch without overhead and easily pick up where I left off.

Lazygit

Lazygit is super convenient and can be launched within neovim, but learn how to use git on the command line first! Lazygit should be used a time saving tool, not a crutch. Delta makes diffs prettier.

Kitty

Kitty supports ligatures, so I like it over alacritty for now. Fzf is a must have as well.

Wezterm

Wezterm is another GPU accelerated terminal written in Rust (btw) that also supports ligatures and is configured in Lua (like Neovim, which is fun). Currently, I'm actually liking this better than Kitty because the newest versions of Kitty are giving me issues with fonts rendering in all bold for whatever reason.

Zsh

I like to use zsh over bash because of two plugins:

I use starship for my prompt. For some bling, I run neofetch and DT's colorscripts in my .zshrc.

Firefox

Use the Arkenfox user.js to harden. Librewolf and Brave are okay alternatives.

Extensions

Linux

Awesomewm

I use awesomewm for my tiling window manager. It has a built in application launcher, but you can use rofi universally. Compton is preinstalled on Ubuntu. Use picom on Arch.

I will probably switch to bspwm or qtile in the future.

MacOS

Raycast

Raycast is an blazingly fast, batteries-included run launcher for MacOS only (unfortunately). I really enjoy its extensibility and the workflow it allows me to have, especially combined with Yabai.

Yabai

Yabai is a tiling window manager for MacOS, with very similar architecture to bspwm + sxhkd on Linux and komorebi + whkd on Windows.

Keybindings

Note: I don't use this anymore.

stow KeyBindings
  • Remap mission control to alt + up in keyboard shortcut settings
    • Remap space swapping to alt + {1,2,3,4}

TODO

  • add links
  • flesh out dependencies more
  • add brew packages file
  • maybe organize directories into shared, macos, linux
  • add section on yazi and other tools I haven't added