A powerful POSIX shell dotfiles manager program
You can see it in action in my personal dotfiles repository.
./dotfiler.sh or copy it to your
.local/bin or other directory in your
$PATH. Feel free to remove the
.sh extension. You may need to
chmod +x q.
mkdir -p ~/.local/bin && cp dotfiler.sh ~/.local/bin/dotfiler
dotfiler.sh [-h] (-[dipu])+ [system-tags]
-h, --help: Print a complete help text and exit.
-d, --deploy: Deploys dotfiles to the system.
-i, --install: Installs packages and configures the system.
-p, --pull: Copies dotfiles into the repository.
-u, --update: Updates the installed packages list.
-x, --extra: Install dotfiles' extra dependencies.
System tags are optional arguments that MUST NOT start with the dash
- character. They're used to specify a system to work with. Example systems are
Groctel, etc. If no system was specified, Dotfiler will look for list files (explained below) with no system suffixes.
Dotfiler needs a filelist file to keep track of the files in your system. This file should be named
filelist by default or
filelist-SYSTEM for an specific system, e.g.
filelist-desktop. This file keeps track of your dotfiles using the following syntax:
- Regular files: The path to the file from
- Directories: The path to the file from
For example, here are a regular file and a directory:
Dotfiler keeps tracks of your installed packages in a pkglist file that follows the same naming conventions as the filelist file but does not need to be explicitly created by the user. To keep it simple, it only tracks the packages explicitly installed by the user.
You can store some commands to be run by Dotfiler in a deplist file that follows the same naming conventions as the filelist and pkglist files. Commands are parsed line by line and must not contain linefeeds. For example, these are two valid lines containing commands:
curl -fLo $HOME/.antigen.zsh git.io/antigen vim +`so $HOME/.vimrc` +PlugInstall +qa!
Arguments are stored in a list of operations and a list of systems. Dotfiler will run all operations in the order they were passed in all systems in the order they were passed. For example, the following call:
dotfiler.sh -p -u common laptop
Will run the following tasks:
This program only keeps track of your packages with
yay on Arch or
apt on Ubuntu. Pull request the project to add support other managers.