cyberme0w's Cat logo 🐾MEOW🐾

doot 📯

doot is a bash script (doot.sh) which doots your doot files into their respective doot folders, for better doot portability and easier doot setup.

But why? Aren’t there already tools for that?

I’ve tried a couple alternatives to manage my dotfiles and while some of them are better than others, none of them really behaved the way I need. Some close calls over the years have been:

With the enumeration out of the way, I’d like to emphasize that all these are great tools in their own right and might suit your use-case perfectly. As with anything, make sure to test and check them out yourself before taking my word for it.

In any case, I sat down and wrote doot. Personally, I blame XKCD.

XKCD-927

How to doot

tl;dr:

Clone the repository, add your doot files under user or root, run ./doot.sh and your doots will be copied/linked to their places. For the adventurous, there are also some settings at the top of the script.

ts;mt (too short; more text):

  1. Clone doot to where you’d like to keep track of your doots (optionally, fork it first, for easier VCS later). For instance,

    git clone https://codeberg.org/cyberme0w/doot ~/.doot`
  2. Understand the difference between user-doots and root-doots:

    1. user-doots are owned by the non-root user, and are placed in ~/.doot/user, which maps to the user’s $HOME. E.g. ~/.doot/user/.config/mutt/muttrc maps to $HOME/.config/mutt/muttrc

    2. root-doots are owned by root, and are placed in ~/.doot/root, which maps to /. E.g. ~/.doot/root/etc/default/grub maps to /etc/default/grub.

  3. Copy your configuration files into their respective ~/.doot/ folders and optionally track them with VCS (a fork of the repo works just fine).

  4. Double check the doot settings in the first lines of ~/.doot/doot.sh. These are pretty self explanatory, but for completeness sake:

  5. Run doot.sh from within the dots folder and your files will be deployed.