My dotfiles including management system. Dotfiles or config folders are symlinked to their normal spot from this repository. This allows choosing a subset of files to install. Groups are also supported, allowing for quick installation of often used together configurations.
./install.sh install [TARGET] [...]
TARGET
can be either a specific target or a set.
./install add <PATH>
Add a new line in config.csv
<name>;<path relative to $HOME>
Add a new line in sets.csv
<NAME>;[TRAGET] [...]
Sets can be used recursively.
install.sh
calls hook scripts for some actions.
they are stored in hooks/
.
Hooks have to be named <Name>.hook
and be executable.
Currently supported hooks:
Name | Arguments | Called when | Notes |
---|---|---|---|
housekeeping |
before the script quits | Used to ensure everything is in order. | |
installed.<target> |
Full target path | After successful install of | For specific targets |
installed |
Full target path | After successful install of any config | For all targets |
post_add |
Name, Target path | After config was added to the database |
Hooks can be manually called with ./install.sh hook <name>
If .bashrc
and .bash_profile
are managed, config is loaded from bash/
.
*.profile
is sourced after an interactive login, *.bash
on ervery launch of a new shell.
An external configuration to allow host specific settings, without tainting the git repo, is created at $HOME/.files.config
.
It is populated from config.default
if it does not exist.
Scripts in bash/
use its variables as configuration.
If the variables do not exist in .files.config
, the default values from config.default
are used.