My dotfiles, built to work with GNU stow in a ~/.dotfiles
directory.
The main dependency is GNU stow. Install it using your distribution's package manager.
sudo pacman -S stow curl wget desktop-file-utils
sudo apt-get install stow curl wget build-essential desktop-file-utils
Then clone this repository into a directory that's directly under ~
, for example:
git clone git@github.com:fnune/dotfiles.git ~/.dotfiles
Then symlink the packages you need:
cd ~/.dotfiles
stow zsh fzf git tmux
Finally, you can run the install script, which will bootstrap dependencies for stowed packages only. For example, it will install fzf
and tmux
if you've stowed their packages.
~/.dotfiles/install
Requirements of the install script: git
and other basics such as bash
, sudo
and wget
.
Some packages source files in drop-in directories, inspired by systemd drop-in units. Here's a summary of them:
- The zsh package creates a
~/.zsh/includes
directory in which other packages can add files. They are sourced at the end of~/.zshrc
. - The dependencies package creates a
~/.dependencies/includes
directory. Files in it are run from the install script and should be executable.
For example, after stowing some packages, these directories look like this:
➜ ~ ls ~/.zsh/includes
fzf fzf-theme volta
➜ ~ ls ~/.dependencies/includes
antigen arch base16-fzf base16-shell fzf tpm debian volta
For example, the fzf package adds files to both the zsh
and dependencies
drop-in directories:
fzf
├── .dependencies
│ └── includes
│ ├── base16-fzf
│ └── fzf
└── .zsh
└── includes
├── fzf
└── fzf-theme
GNU stow will take care of symlinking partially without overwriting the .dependencies
and .zsh
directories with those from other packages.