What do y'all use to manage/backup your dotfiles? Why'd ya pick it?

I've been meaning to set something up, but I keep falling into choice-paralysis and putting it off.

Leading contenders include:

YADM (bash) https://thelocehiliosan.github.io/yadm/
dot (rust) https://github.com/ubnt-intrepid/dot
GNU Stow (perl) https://www.gnu.org/software/stow/
doing it manually with shell aliases: https://developer.atlassian.com/blog/2016/02/best-way-to-store-dotfiles-git-bare-repo/
chezmoi: (go) https://github.com/twpayne/chezmoi

Currently leaning towards chezmoi (because most features) or YADM (because pure bash)

Yet Another Dotfiles Manager

When you live in a command line, configurations are a deeply personal thing. They are often crafted over years of experience, battles lost, lessons learned, advice followed, and ingenuity rewarded. When you are away from your own configurations, you are an orphaned refugee in unfamiliar and hostile surroundings. You feel clumsy and out of sorts. You are filled with a sense of longing to be back in a place you know. A place you built. A place where all the short-cuts have been worn bare by your own travels. A place you proudly call… $HOME.

^^^ cc @kungtotte —your recent toot about YADM was what reminded me that I really ought to get this set up.

@codesections I looked through the list on the Arch wiki when I was deciding, and the reasons I listed in my other toot were the main ones. I want my files to stay in their proper place and still be managed, and I don't want to track all of my ~

YADM solves those easily. Its main downside is it doesn't let you track files outside of ~. It does have a bootstrap feature that you might be able to abuse with symlinking things from /etc to files in ~

@kungtotte

Hmm, when you say it doesn't track files outside of ~, do you mean "just in the ~ dir itself" or "~ and it's subdirectories"? (I.e., can it still track files in `~/.config` ?

@codesections oh yeah, it tracks anything inside /home/user/ and below, but it can't track things in /etc for example.
@codesections another neat feature (AFAIK chezmoi does this too) is per system/user/whatever files. I run Void on my desktop and Manjaro on my laptop for example, so I can have different dotfiles based on their hostnames in this case. YADM solves this by using files named e.g. .bashrc##%.hostname and then symlinking .bashrc->.bashrc##%.hostname

@kungtotte

> don't want to track all of ~

I've had at least some success for dirs I don't want to track as a whole by putting * in .gitignore

then I add exceptions, eg

!.bashrc

@codesections

@codesections Just git with a script that copies my dotfiles into the local repository.

@trawzified @kensanata @chozron

How do y'all deal with secrets in your config files? Or has that not come up?

Minimalist approaches like that sound good to me, but the secrets issue is what pushes me towards other solutions (thinking particularly of my `.muttrc` file)

@codesections @[email protected] @chozron I have a .gitignore for some files, but I never had to hide individual lines in a file.
@codesections stow + git. It's simple and ubiquitous.