Install essential dependencies: 1. homebrew 2. git - with homebrew 3. stow - with homebrew
- Clone this repo to location ~/Developer/dotfiles
- Link files by running script
./link.sh
Install apps, packages, tools with homebrew
- In command line ensure that the working directory is the base of this project
- Run command
cd ~ && brew bundle install --file=~/Brewfile
- Configure git, see git setup instructions
- Setup ZSH config
- Install tpm - Tmux Plugin Manager
- Maybe?: Install current font - see font install instructions and setup guide
- Install SDKMan
- Install appropriate JVM version - via sdk
- Scala - via sdk
- SBT - via sdk
- Scala-CLI - via sdk
- Install Scala-CLI.
- Configure shell completions
- Create a local
.gitconfig
file and add the username, email, and ... ssh for signing - Configure git by adding the following line to the
.gitconfig
[include]
path = ~/.gitconfig_extension
- Add basic config to
~/.gitconfig
[user]
name = <name>
email = <email>
[commit].
gpgsign = true
[gpg]
format = ssh
- For folder specific / project specific git config, create a different config file
.gitconfig_${folder_name}
and link to that for that folder in.gitconfig
. For example to use a different user details for signing commits in folder~/code/foo
then add the following
// ~/.gitconfig
[includeIf "gitdir:code/foo/"]
path = .gitconfig_foo
// ~/.gitconfig_foo
[user]
name = <Name>
email = <Email>
signingKey = <SigningKey>
- Add the following line to the
.zshrc
. ~/.zshrc_extension
- Install font:
brew install --cask ???
- Change font for each profile to use installed font
- Configure font in VSCode
- Change font familty:
"editor.fontFamily": "'FiraCode Nerd Font Mono', Menlo, Monaco, 'Courier New', monospace"
- Enable ligatures:
"editor.fontLigatures": true
- Change font familty:
See Nerd Fonts for more options.
- In command line ensure that the working directory is the base of this project
- Uninstall command:
stow -t ~ -v -D home
stow -t ~/.config -v -D config
The aim is to:
- make the configs resiliant to breakage. For example, by having the
.gitconfig_extension
file referenced from the.gitconfig
, if the.gitconfig_extension
is removed, the core parts of the.gitconfig
will still be able to run, just without the customisations in the.gitconfig_extension
- allow other tools that automattically add to dotfiles to do so without requiring that to synced everywhere. For example oh-my-zsh creates a
.zshrc
when installed which wipes the exisiting.zshrc
. By splitting this means that the stuff that oh-my-zsh adds doesn't clutter the config I care about backing up.
The main folders are
home
which is symlinked to the home folder (~
)config
which is symlinked to.config
folder in the home folder (~/.config
)