Find it on GitHub

Tuckr is a dotfile manager inspired by Stow and Git. Tuckr aims to make dotfile management less painful. It follows the same model as Stow, symlinking files onto $HOME. It works on all the major OSes (Windows, MacOS, Linux).

Most dotfile managers out there rely on some sort of configuration file to be able manage your dotfiles, this project came about because I couldn’t find any dotfile manager that was simple enough that you could just jump into it and start using it, with no need for reading lengthy documentation and dotfile manager specific things.

A lot of people have been using Stow + Git to manage their dotfiles, while this approach is fine, Stow was not made for this, so it’s not a perfect solution and it lacks features that are dotfile management specific, thus this project was born.

What makes tuckr different?

Built With:

Usage

$ tuckr add \* # adds all dotfiles to the system
$ tuckr add neovim zsh # adds the neovim and zsh dotfiles only
$ tuckr set \* # adds all the dotfiles and runs their hooks (scripts)
$ tuckr rm \* # removes all dotfiles from your system
Super powered GNU Stow replacement

Usage: tuckr <COMMAND>

Commands:
  set        Setup a program and run their hooks hooks
  add        Deploy dotfiles for PROGRAM
  rm         Remove configuration for a program on the system
  status     Check symlink status
  init       Initialize a dotfile folder
  from-stow  Converts a stow repo into a tuckr one
  help       Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help information
  -V, --version  Print version information

How it works

Tuckr works without having to use a configuration file by making a few minor choices for you. As long as you follow the file structure for tuckr repos it will do everything else for you automatically.

.
├── Configs # Dotfiles go here
├── Encrypts # Encrypted files go here
└── Hooks # Setup scripts go here

Your dotfiles should be one folder by program, the folder name will become how that program is named by tuckr.

.
├── Configs
│   ├── Program1
│   ├── Program2
├── Encrypts
└── Hooks
    ├── Program1
    └── Program2

As long as the names align between Configs, Hooks and Encrypts, they will work together.

Using Hooks

Hooks are run before and after adding every program. Hooks that run before the program addition are prefixed with pre, scripts that run afterward are prefixed with post, as long as this is true you can name the file whatever you want.

Hooks
├── Program1
│   ├── post.sh
│   └── pre.sh
└── Program2
    ├── post.sh
    └── pre.sh

To run scripts for a program run tuckr set <program_name> or alternatively use a wildcard like so: tuckr set \* to run all hooks.