My personal dotfiles. Inspired by ThePrimagen's dotfiles.
- Fish shell (At least v3.6.0)
- GNU stow (Only if you want to use the install script)
- NotoSansMono Nerd Font on linux (Regular, Bold, Italic and Bold Italic)
- JetBrainsMono Nerd Font on mac (Regular, Bold, Italic and Bold Italic)
- glow
- delta
- eza
- bat
- zoxide
- rust-analyzer: Install with
rustup component add rust-analyzer
- rustfmt: Install with
rustup component add rustfmt
- Clone this repo:
git clone https://github.com/askoufis/dotfiles.git
- 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.
-
Run
./install
-
(Optional but recommended) Run
sf
to source theconfig.fish
. This will add useful abbreviations and set up your environment correctly.
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.
-
Install fisher
-
Run
fisher update
-
Open
nvim
. It should install lazy.nvim and plugins automatically. -
Close
nvim
, then re-open it and open some files to confirm that all plugins are installed correctly -
Clone
tpm
, but not to the usual place:
git clone https://github.com/tmux-plugins/tpm ~/.local/share/tmux/plugins/tpm
- Restart tmux, then press prefix + I to install all tmux plugins
- Run
./clean
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.