Personal configuration and settings files for macOS. Managed by yadm.
For a very helpful explainer of what dotfiles are, read Lars Kappert's Getting Started With Dotfiles. You can see examples of other dotfiles here, and examples of dotfiles managed by yadm here.
My dotfiles include:
- terminal/shell customizations (uses iTerm2, zsh, and Oh My Zsh with the powerlevel10k theme)
- git settings
- macOS settings (thanks to Mathias Bynens)
- Homebrew Brewfiles for easy installation of desired packages and applications (including App Store apps through MAS)
- R settings
- lists specifying the apps and folders on the Dock
- a bootstrap script for installing from the Brewfiles and applying settings
- profile files for specifying different dotfile configurations (see Customization below)
These dotfiles are customized to my personal needs. This means that you should not simply clone these dotfiles as they are (unless you're me). Instead, feel free to fork this repository and make changes according to your needs.
To make this easy (and also because sometimes I need different dotfile configurations for different situations), a large amount of customization can be done through profiles. These are shell scripts that I use to set the yadm class and specify whether to install certain tools (like conda). You can easily make one of these according to your own needs using the existing profiles as a template.
Further customizations can be made by using yadm's classes (see here.) For example, if I create a profile named "Something" in which the yadm class is set to "Something", then when I run the bootstrap script it will offer to apply the macOS settings specified in the file "macos##Something", if it exists. If a file named for the current yadm class does not exist, or if the yadm class is not set, then it will use the default file ("macos##default), if it exists.
The recommended workflow for customizing these dotfiles is as follows:
- fork this repository
git clone
the forked repository (not to your $HOME directory yet)- create a new profile in .yadm/profiles, customized to your needs
- make sure to name the yadm class set in the new profile file (I recommend giving it the same name as the profile)
- customize each file as needed
- if there are any files of which you may want to have different versions on different systems, then create a customized version with "##" and the yadm class name associated with that profile appended to the filename (for example, I have different Brewfiles for different machines)
- otherwise (if you want to change the file from what I have, but you will not want or need to have different versions on different systems), just edit the file as-is and don't include "##" or any class names in the filename (for example, I use the same .Rprofile on all my machines)
- commit your changes to your forked repository
- follow the installation instructions below
I also recommend browsing other dotfiles repositories (here and here) for ideas and inspiration on how to further customize your dotfiles.
For a fresh install on a new computer, use the fresh install script that will install yadm and use it to set everything up:
# if you're me
sh <(curl -fsSL https://raw.github.com/DedekindCuts/dotfiles/master/.yadm/fresh.sh)
# if you've forked and customized this repository
sh <(curl -fsSL [url of fresh.sh within your forked repository])
Otherwise:
- Install yadm (assuming it's not already installed)
- Remove any currently-existing dotfiles that may cause conflicts
- Clone this repository using yadm:
# if you're me
yadm clone git@github.com:DedekindCuts/dotfiles.git --bootstrap
# if you've forked and customized this repository
yadm clone [url of your forked repository] --bootstrap