For the past few years all my important work has been stored in git repositories. Thanks to the mr tool I have a single configuration file that allows me to pull/maintain a bunch of repositories with ease.
Having recently wiped & reinstalled a pair of desktop systems I'm now wondering if I can switch to using a totally transient home-directory.
The basic intention is that:
- Every time I login "rm -rf $HOME/*" will be executed.
I see only three problems with this:
- Every time I login I'll have to reclone my "dotfiles", passwords, bookmarks, etc.
- Some programs will need their configuration updated, post-login.
- SSH key management will be a pain.
My dotfiles contain my my bookmarks, passwords, etc. But they don't contain setup for GNOME, etc.
So there might be some configuration that will become annoying - For example I like "Ctrl-Alt-t" to open a new gnome-terminal command. That's configured on each new system I login to the first time.
My images/videos/books are all stored beneath /srv and not in my home directory - so the only thing I'll be losing is program configuration, caches, and similar.
Ideally I'd be using a smartcard for my SSH keys - but I don't have one - so for the moment I might just have to rsync them into place, but that's grossly bad.
I'll be interesting to see how well this works out, but I see a potential gain in portability and discipline at the very least.
Tags: management. configuration-management, revision-control 10 comments
I have been doing it for almost 8 years now, with a mix of svn, bzr, git, git-annex and a dozen of scripts being replaced by mr.
Total setup time a working $HOME in a new PC is about 2 minutes + 10 minutes of downloads.
The biggest problem? Applications that do not follow the XDG Base dir spec. They mix cache, data, state and configuration in the same file. Either you ignore those settings or you end up committing a lot of garbage every day. I filed so many bugs in the past years, most have been successfully received.
Private data is all encrypted and pushed to a private repo.