This repo is ~/.config. One branch, main, serves both an Arch Linux
(amd64, hyprland) machine and a macOS (Apple silicon) one. Platform
differences are expressed by where a file lives, not by which branch you are
on.
~/.config/
setup.sh # the only thing you run
common/ # everything that works on both systems
linux/ # Wayland stack and Linux-only overrides
macos/ # macOS-only overrides
os -> linux # symlink, created by setup, gitignored
nvim -> common/nvim # per-tool symlinks, created by setup, gitignored
hypr -> linux/hypr
...
A tool goes in common/ if it can run on both systems, even when it is
only used on one today. It goes in linux/ or macos/ only when it cannot
exist on the other.
setup.sh creates a symlink per tool, so every program still finds its
config at the usual ~/.config/<tool> path.
~/.config/os points at linux/ or macos/. Shared configs reference that
one stable path rather than detecting the OS themselves:
# common/zsh/.zshrc
for f in "$XDG_CONFIG_HOME"/os/zsh/*.zsh(N); do source "$f"; done# common/tmux/tmux.conf
source-file ~/.config/os/tmux/local.conftmux cannot read shell variables, so a symlink is the only mechanism both zsh and tmux can follow without bespoke logic on each side.
-
Set up the password manager and a browser, and check the browser plugin works.
-
Set up SSH keys in GitHub following the official instructions. On macOS you will be prompted to install the Xcode command line tools on first
gitinvocation; accept, and wait. -
Clone this repo over
~/.config:git clone git@github.com:kinbiko/dotfiles.git ~/.config -
Run it:
~/.config/setup.shThis creates the symlinks, points zsh at the repo, and installs packages.
-
Create
~/.local.gitconfigwith this machine's email address. The repo deliberately sets nouser.email, so commits fail loudly until you do:[user] email = your@email.com -
Open a new shell.
gh auth loginto authenticate the GitHub CLI.- Set up GPG and configure commit signing, following the GitHub instructions. Always check that these steps still follow best security practices.
- Set
GOPRIVATEfor private Go modules. - Set up Yomitan and Anki for Japanese study.
- Enable the display manager:
sudo systemctl enable sddm.
Additional tools not yet in the setup script (install via brew):
uv(Python toolchain)git-lfsdocker(Docker Desktop cask)google-cloud-sdk(cask)kubectlkubectx(provideskubectxandkubens)claude-code
Install Better Snap Tool from the App Store.
- Disable the spotlight cmd + space shortcut in keyboard -> shortcuts -> spotlight
- Set the Wox query hotkey to
cmd + space. - Grant Accessibility and (if you use the screenshot plugin) Screen Recording permissions when prompted.
- Add a theme.
- Set up clipboard history. Map to
cmd + p(who prints these days anyway?)
Run macos/setup/system-config.sh.
Also run:
defaults write -g ApplePressAndHoldEnabled -bool false(then logout/login) to disable letter variations on key hold.touch ~/.hushloginto remove the "Last login" line from new shells.
Do the rest manually for now, until I figure out the command-line commands to run for all of these.
- Set up the Mac dock:
- Move it to the left-hand side
- Make icons much smaller
- Pretty decent zoom
- Don't animate opening apps
- Don't show recent application in dock
- Automatically hide and show dock (to get back some screen real estate)
- Remove most apps from the dock.
- Set system-wide theme.
- Automatically hide the menu bar.
- Keep track of 'none' recent items.
- Revert scroll direction
- Trackpad:
- Lookup and data detectors -> tap with three fingers
- Disable tap to click
- Accessibility (this is where the good bits are):
- System voice to fast, and start speaking with
CMD + ESC - Zoom with ctrl + scroll
- Pointer control -> trackpad -> 3-finger drag
- System voice to fast, and start speaking with
- Change language with alt + space, and have only two input sources:
- American English
- Hiragana
- Keyboard:
- Turn caps lock into ctrl
- Disable auto-correct
- Add the relevant
repos/*directories (e.g.repos/kinbiko) to the Finder sidebar.