I’m wondering if there is a new tool out there that I’m missing out on.
www.chezmoi.io if you’ve got some complexity with your setup. otherwise, could be overkill.
Submitted 1 year ago by no_sle3p@programming.dev to experienced_devs@programming.dev
I’m wondering if there is a new tool out there that I’m missing out on.
www.chezmoi.io if you’ve got some complexity with your setup. otherwise, could be overkill.
Had a homebrew Git setup for ages and recently started using Chezmoi. It’s only been a few weeks, but so far it’s been pretty great!
What I really like about chezmoi is how it can retrieve secrets stored on Bitwarden. Your git history is clean of secrets but you can have them referenced on your dotfiles.
I adore chezmoi
it’s so useful! I used to have some terrible setup going with branches for different OSes in my dotfiles, and chezmoi really simplified the whole thing
I’m all in on nix with home-manager these days. Really seems like an ideal framework for my dotfiles and of all the systems I’ve tried over the years this is the one I’m happiest with.
Hell of a learning curve, though.
Yep it’s like maintaining a codebase that’s getting increasingly better. It’s a rabbit-hole and a timesink (kind of because you’re trying to get the best out of it, and thus configure likely more) but I think it’s worth it. It gets better overtime as well
I prefer to keep tooling for that at a minimum. Therefore I use git only. My approach is taken from here: www.atlassian.com/git/tutorials/dotfiles
The only difference: My git alias is dotfiles
not config
. I find that to be less confusing. Additionally, I source system-specific configs, where appropriate. These are not stored in dotfiles. There is a small todo section in my readme.
I do the same! It works quite well.
i take a Phoenix approach with my dotfiles.
Once a decade when my computer crashes and burns, from the ashes emerges a blank slate (dotfiles) that is purged of all unnecessary hacks that have accumulated. With a tear and a hopeful outlook, I rush to set the settings I am actually dependent on.
I really need to take care in backing up my dotfile 😭
@no_sle3p I have them in a Git repo and I use GNU Stow to symlink things. I also wrote a blog post about this with more details: https://evanhahn.com/a-decade-of-dotfiles/
Are you me? I do the exact same thing… only I also made a Makefile to do all the stow commands for me.
I used bare git repo before, then switch to GNU Stow + Nix home-manager.
I’ve done symlinks into a separate directory before, but I found the best method for me was to let ~
be a git repo.
There are two keys to making this work well:
echo ‘*’ > ~/.gitignore
: This way git status
isn’t full of untracked files. I can still git add -f
what I actually want to track.git branch -m dots
: For clarity in my shell prompt.Tried all the fancy ideas, never stuck with it. I just use git to track changes now and move on with my life. There are like four functions I carry around with me, then whatever path additions and init scripts I pile up. It’s so light it doesn’t really matter when I move to a new machine
I use git (without remote repo, but could be easily added). Actually this simple bare git repo technique is something I enjoy doing in lots of places where config files lie.
Basically, it’s only: alias config=“/usr/bin/git --git-dir=\${HOME}/.myconf/ --work-tree=\${HOME}”
Of course, a first time setup is required:
git init --bare $HOME/.myconf config config status.showUntrackedFiles no
I got this setup from a comment on HackerNews long ago. OP comment was rather insightful: “No extra tooling, no symlinks, files are tracked on a version control system, you can use different branches for different computers, you can replicate you configuration easily on new installation.”
But I never used any branches, prefer to keep it extremely KISS. I even avoid commiting, just staging area that I keep updating with each OS upgrade. Only this bit of extension I use… since I don’t push to any remotes (prefer keeping dotfiles private), I needed a way to copy all of the tracked files (e.g. to have my settings on a work laptop, of course I then go ahead and clean everything before moving such an ‘exported’ folder)…
config_export() { echo "Copying only staged files, it is recommended to run beforehand: $ config add -u ~" mkdir -p ~/.config_export/ CONFIG_FILES=$(config status | /usr/bin/grep 'new file:' | cut -d':' -f2 | sed -E 's/^ +//') printf "%s\n" "${CONFIG_FILES[@]}" | xargs -I {} cp --parent '{}' ~/.config_export/ ls -halt 2 -a ~/.config_export/ }
https://github.com/technicalpickles/homesick
It's a bit old (hasn't been updated in 4 years), but works great.
I still put them in gists, with no real tooling. I pull them in selectively when I get a new machine.
I store them in Dropbox and symlink them to their correct location.
I do that instead of the standard Git method because it means I don’t have to worry about remembering to sync each computer. Everything syncs immediately.
spesk@programming.dev 1 year ago
Git and symbolic links still.
Ive heard good things about GNU Stow.
jmondi@programming.dev 1 year ago
If you’re using symlinks, you should definitely check out Stow.
yads@lemmy.ca 1 year ago
That’s the way I do it, although I have a custom script that generates the symlinks for me. Not sure why I’d need anything more