dotinstall
makes it easier to completely setup a fresh install. By grouping your configs into
'packages', you can use dotinstall
to quickly symlink your files, install dependencies, and setup
your system. You might have a particularly hard time setting up your windows manager. For example, I
use i3-gaps and i3blocks-gaps on Ubuntu so I have to install those from source. By having a package
defined as i3, I can associate dependencies and scripts to run to setup my windows manager.
Features:
- Easy integration into existing dotfiles by installing as submodules.
- Association of dependencies with packages.
- Globbing for specifying targets to symlink in each package.
- Prelink, and postlink scripts to run before symlinking and dependency installation.
- Easy configuration setup using yaml.
mkdir dotfiles
cd dotfiles
pip3 install dotinstall
dotinstall
Run dotinstall -h
for more details.
The config file (default config.yaml
) has the following possible entries.
link: If specified as an item, it will link all the items in the package to the specified
location. If specified as a list, it will link the specific items to their specified location. Note
that each item will at most be linked once. For example, if you have three files 1.txt
,
2.txt
, 3.txt
and you first link 1.txt
, it will only link 2.txt
and
3.txt
when you later try to link *.txt
.
prelink: A list of scripts that will run before dependency installation and linking.
postlink: A list of scripts that will run after dependency installation and linking.
dependencies: A list of dependencies of each package that will be installed by the detected package manager. Dependency installation will occur before linking.
overwrite: If true (default), the symlinking will forcibly remove existing files, symlinks, and directories.
clean: If true (default), dotinstall will remove all broken symlinks in all target directories.
The order of the commands will be: prelink -> dependencies -> link -> postlink -> clean.
Each submodule will be installed in the order that it is listed in the config file.
Please see my personal dotfile config.
Please fork the repository and submit a PR. New plugins are very easy to create, by adding a new
class with a execute
command.
Currently implemented package managers are:
apt-get
brew
pacman
eopkg
Feel free to add other package managers.
dotinstall
is dual-licensed under the terms of either the MIT License or the Apache License
(Version 2.0).
See LICENSE-APACHE and LICENSE-MIT for more details.