Skip to content

askoufis/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

My personal dotfiles. Inspired by ThePrimagen's dotfiles.

Requirements

Installation

  1. Clone this repo:
git clone https://github.com/askoufis/dotfiles.git
  1. Set the $STOW_FOLDERS environment variable to a space-separated list of folders you want to install:
set -x -g STOW_FOLDERS alacritty alacritty-linux git nvim fish fish-linux tmux

A valid folder names is any top-level folder in this repo.

  1. Run ./install

  2. (Optional but recommended) Run sf to source the config.fish. This will add useful abbreviations and set up your environment correctly.

Bootstrapping

After installing dotfiles to a machine for the first time, there's a few things you need to do in order to bootstrap the plugins for various programs.

  1. Install fisher

  2. Run fisher update

  3. Open nvim. It should install lazy.nvim and plugins automatically.

  4. Close nvim, then re-open it and open some files to confirm that all plugins are installed correctly

  5. Clone tpm, but not to the usual place:

git clone https://github.com/tmux-plugins/tpm ~/.local/share/tmux/plugins/tpm
  1. Restart tmux, then press prefix + I to install all tmux plugins

Cleanup

  1. Run ./clean

Folder structure

Top-level folder names don't really matter, but in most cases they are the same as whatever the app's config folder name is. Each top-level folder contains a .config folder as that's my $XDG_CONFIG_HOME folder name, and hence where all my config is actually stored.

Inside each .config folder is the app's config folder; this folder is where the actual config file(s) are. For example, the alacritty top-level folder contains the following structure: alacritty/.config/alacritty/alacritty.yml.

The exception to this is for OS-specific config. In those cases, a suffix of -{OS} is appended to the folder. For example alacritty-linux contains the linux-specific configuration for alacritty, whereas alacritty-mac contains the macOS-specific configuration for alacritty. OS-specific configuration is usually included into the main configuration file via some method exposed by the app you're configuring. For example, alacritty supports including other .toml files within your man config file.