These are my dotfiles. I recently found this article about how to manage your dotfiles with stow. Such a great find!
I manage a couple of lists for various platforms that contain the files I want to have on the systems. E.g. debian, arch, macos etc.
These are called *.stows
and are in the root folder. You can then run
cat debian.stows | xargs -I {} stow -t ~ {}
which runs stow on all the matching folders.
The more complete bootstrapping of a system is available in
bootstrap, which also installs various packages
for the applicable platform. I use brew
a lot on macos so I got used to using that also
for systems where I otherwise need to add various repositories to the package managers.
For arch I will stick with pacman
or yay
.
I have a second dotfiles
repository hosted in a private repo. This one I keep private but I can share the setup there. I use git-crypt
together with a .gitattributes
file containing the line
_**/* filter=git-crypt diff=git-crypt
There I place all applications in folders just like here but prefixed with an underscore. That way, the files are encrypted before pushing to github, giving me an extra level of security. For the complete (including GPG key usage) setup check the readme of git-crypt.
This btw is also a great way to store secrets in git and share them with other people. The concept is rather simple:
- generate encryption key
- encrypt encryption key with public GPG key of people
- store encrypted key in repo given people's GPG IDs
⋊> ~/dotfiles_private on main ↑ tree .git-crypt/
.git-crypt/
└── keys
└── default
└── 0
└── BB6E506D63C258297A2ADA481C49A27D63A8B5A0.gpg
3 directories, 1 file
a very simple way to share secrets with colleagues if one doesn't have a password vault etc.
Overall flow
- Brew install
- Install all brew packages and casks
- set up dotfiles with stow and make
- sync settings from previous device that are not in config files
- cleanshot
- brave browser
- karabiner elements
- bitwarden
- setapp
- chatgpt
- bartender
- raycast: Export settings left, copy over to right via iCloud drive
- Cursor: export profile & import again through dotfiles-private