Configurations for my terminal, shell, and editor managed by git and GNU Stow
git clone https://github.com/epilande/dotfiles.git ~/.dotfiles
Create symlinks for all configurations:
stow --target=$HOME */
Create a symlink for a specific individual package (e.g., Neovim):
stow --target=$HOME nvim # ... and any other configuration you want
Install specified packages, casks, and taps listed in the Brewfile (requires Homebrew):
brew bundle
Check if all dependencies listed in the Brewfile are installed:
brew bundle check --verbose
Generate a Brewfile from the list of currently installed Homebrew pakcages, casks, and taps:
brew bundle dump
All files in ~/.config/zsh/*
are automatically sourced.
Local configuration files for sensitive settings are ignored via .gitignore
:
zsh/.config/zsh/*local*.zsh
This allows you to have local configuration files for any sensitive configurations that should not be included in source control.
Install Tmux Plugin Manager (TPM):
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
Once TPM is installed, press prefix I
to install plugins listed in tmux/.config/tmux/plugins.conf
.
Similarly to Zsh, local Tmux configurations are sourced if ~/.config/tmux/local.conf
exists.
My primary Neovim configuration uses LazyVim as a base, located in nvim/.config/nvim-lazyvim
, and for quick access I have aliased it as lv
.
In addition to LazyVim, I have several other Neovim configurations that I can easily switch between using the nvims
function. This function provides a menu for selecting different configurations, allowing me to test and experiment with various Neovim setups.
If you see boxes □
, this means your current font doesn't support Powerline and Nerd Fonts. Install a Nerd Font from https://www.nerdfonts.com/ for shell and Neovim icons. After installation, you will need to configure your GUI/Terminal to use the font.
Local configurations are managed separately, kept outside of source control. This is particularly useful for storing sensitive settings or configurations that are specific to individual computers and not needed on other systems.
Here is the directory structure of my local configurations:
❯ tree -P '*local*' --prune -aC
.
├── nvim
│ └── .config
│ └── nvim-lazyvim
│ └── lua
│ └── plugins
│ └── local.lua
├── tmux
│ └── .config
│ └── tmux
│ └── local.conf
└── zsh
└── .config
└── zsh
├── local-aliases.zsh
└── local.zsh