fonts.md: Font notessoftware.md: Software notesstow:stow-deployable user config files and scriptsbash: Bash configelixir: Elixir REPL configemacs: Emacs configgit: Gitnvm: nvm scriptspandoc: Pandoc scriptspsql: PostgreSQLpsqlconfigpython: Python Flake8 (linter), Pylint (linter), and pdb configsscreen: GNU Screen configtmux: tmux configutils: Other utility scriptsvi: Vi config for nvi, nvi2 and openvivim: Vim configvis: Vis configxxdiff: xxdiff configzsh: Zsh config
- Acme
- Emacs (old config) or a simpler alternative
Install GNU Stow (on a
Debian-derived distribution use sudo apt install stow ; on macOS use
sudo port install stow if MacPorts is installed).
Make sure that the installed version of GNU Stow is at least 2.4.0
(earlier versions have buggy --dotfiles option behavior). If
necessary, compile from source. On macOS, this means installing XCode
CLI tools, setting the environment variable
PERL5LIB=/Library/Developer/CommandLineTools/usr/share/git-core/perl
and making sure to set the right prefix in the configuration stage,
e.g., ./configure --prefix=$HOME/.local if $HOME/.local/bin/ is a
$PATH directory.
Git clone the repository, and symlink each package's config files to
the user home directory using stow. Each repository subdirectory in
stow/ (e.g.stow/package) corresponds to a package of the same
name, and stow with the --no-folding and --dotfiles options will
create the directory structure within the package at the target
destination if it does not exist and symbolically link each file in
the package to the corresponding location in the target destination,
creating any required directories as needed and changing dot-XYZ
names to .XYZ. Note that stow does not support slashes in the
package names, so it should be run from within the stow/ directory.
Two examples (tmux and fish) are shown as follows.
$ git clone https://github.com/matheuristic/dotfiles.git
$ cd dotfiles/stow
$ stow -t $HOME --dotfiles --no-folding tmux
$ stow -t $HOME --dotfiles --no-folding fish
...References:
There are different shell types, discussed using Bash since that is the default shell for most distributions. A shell can be of multiple types, for instance a login interactive shell.
- Login shell. A login Bash shell reads
~/.bash_profile(or~/.profileif~/bash_profiledoes not exist) on start and~/.bash_logouton exit. - Non-interactive shell. A non-interactive Bash shell reads the file
specified by
$BASH_ENVon start. - Interactive shell. A interactive Bash shell reads ~/.bashrc on start.
Note that while Bash is the default shell on most Linux systems, Zsh is the default shell on macOS systems.