Central place for ssh config settings to enabling access to external servers in the same way from macbook and my Devbox
- JavaScript 36.6%
- Shell 32%
- PowerShell 31.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .docker | ||
| claude | ||
| kitty | ||
| pi/agent | ||
| ranger | ||
| scripts | ||
| ssh | ||
| zed | ||
| .bash_profile | ||
| .gitconfig | ||
| .gitignore | ||
| .zshrc | ||
| NEW_MAC_SETUP.md | ||
| package.json | ||
| README.md | ||
dotfiles
Personal dotfiles for SLB Mac and mitx (CachyOS).
Contents
| Module | Description |
|---|---|
ssh/ |
SSH config, keys, and auto-load on login |
kitty/ |
Kitty terminal config |
ranger/ |
Ranger file manager config |
zed/ |
Zed editor settings |
pi/ |
pi coding agent settings, models, and permissions |
claude/ |
Claude Code settings |
scripts/bootstrap-mac.sh |
Full Mac onboarding script |
NEW_MAC_SETUP.md |
Step-by-step new Mac setup guide |
Machines
| Machine | OS | Notes |
|---|---|---|
| SLB Mac | macOS 26 | Primary workstation |
| SLB PC | Windows 11 | Windows workstation |
| mitx | CachyOS (Arch) | Devbox / desktop |
Branch Strategy
This repository uses a multi-branch approach to handle OS-specific configurations:
| Branch | Purpose | Contains |
|---|---|---|
main |
Common configs | Cross-platform dotfiles that work on macOS, Linux, and Windows |
mac |
macOS-specific | macOS-only configs (e.g., Kitty, ranger for macOS) |
linux |
Linux-specific | CachyOS/Arch configs (e.g., alternative terminal emulators) |
windows |
Windows-specific | Windows Terminal settings, PowerShell profile |
Workflow:
- OS-specific configs go in their respective branches (
mac,linux, orwindows) - Common, cross-platform configs go in
main - Periodically merge OS branches into
mainto resolve conflicts
Quick start
macOS / Linux:
git clone https://git.smrfldt.com/emil/ssh-config.git ~/dotfiles
cd ~/dotfiles && npm run sync
Windows 11 (elevated PowerShell — no git needed):
Copy scripts/setup-windows.ps1 to the new PC (e.g. via OneDrive), then:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
.\setup-windows.ps1 # full setup
.\setup-windows.ps1 -DryRun # preview only
The script installs git, clones this repo to $HOME\dotfiles, then sets up everything else.
Then follow the README in each module you want to set up.
Scripts
Two npm scripts (run from the repo root) replace the manual record/sync flow:
| Command | Does |
|---|---|
npm run log |
Re-export package list, capture non-symlinked configs (e.g. vibe/config.toml), commit all changes, and push to the current branch's upstream |
npm run sync |
Pull the current branch (fast-forward), re-symlink every dotfile into $HOME, and install missing packages |
Both are platform-aware: Linux-only modules (fish, vibe, packages) are
skipped on macOS. Run npm run log after changing config on one machine, then
npm run sync on the other to pick it up.