mirror of
https://github.com/MorganKryze/.dotfiles.git
synced 2026-11-05 01:33:19 +01:00
Personal dotfiles for my macOS environment.
- Nix 91.1%
- Shell 8.9%
| .github | ||
| dependencies | ||
| docs | ||
| hosts/concord | ||
| modules | ||
| scripts | ||
| .gitignore | ||
| .gitmodules | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE.md | ||
| README.md | ||
.dotfiles
Declarative setup for my Mac (
concord): nix-darwin + Home Manager + Homebrew, one flake.
What's inside
| Area | Tools | Where |
|---|---|---|
| System | macOS defaults, Touch ID sudo, Spotlight aliases for Nix apps | modules/macos/system, modules/macos/user.nix |
| Packages | Homebrew formulae & casks, nix system packages | modules/macos/homebrew.nix, modules/macos/packages.nix |
| Window management | yabai, skhd, SketchyBar, JankyBorders | modules/macos/services/ |
| Shell | zsh, starship, nushell, tmux | modules/home-manager/apps/, modules/home-manager/shell/ |
| Terminals | WezTerm, Ghostty | modules/home-manager/apps/{wezterm,ghostty} |
| Dev | git (+ emoji commit hooks), VS Code, conda | modules/home-manager/apps/{git,vscode,conda} |
| SSH | keychain-backed agent loaded at login | modules/macos/services/ssh-add-keychain |
Layout
flake.nix inputs (nixpkgs / nix-darwin / home-manager 26.05, nix-homebrew)
hosts/concord/ host-specific settings
modules/macos/ nix-darwin: system, packages, Homebrew, launchd services
modules/home-manager/ user config: HM programs + raw symlinks (symlinks.nix)
dependencies/bash-toolbox/ submodule: logging helpers used by the shell scripts
scripts/bootstrap.sh first-install script
docs/ policies and runbooks
Install
Requirements: Apple Silicon Mac on macOS 26 (Tahoe), internet access.
curl -fsSL https://raw.githubusercontent.com/MorganKryze/.dotfiles/main/scripts/bootstrap.sh | zsh
The script sets the hostname, installs the Xcode CLT, Rosetta and Nix, clones this repo to ~/.dotfiles, then
runs the first darwin-rebuild switch. It stops after installing Nix: open a new terminal and run it again.
After the first switch
- Open the Objective-See apps (LuLu, BlockBlock, …) and grant their permissions.
- Open the other apps once to sign in and configure them.
- Once Bitwarden and the browser are set up, create the Git SSH connections:
create-git-ssh-connections. - Start the window manager and grant its permissions:
yabai-start.
Daily use
| Task | Command |
|---|---|
| Update inputs and apply | nix-update |
| Apply local changes only | sudo darwin-rebuild switch --flake ~/.dotfiles#concord |
| Check a change builds, without activating | nix build ~/.dotfiles#darwinConfigurations.concord.system |
| Roll back | sudo darwin-rebuild --rollback |
Warning
Homebrew runs with
cleanup = "zap": anything installed by hand withbrew installis removed on the next switch. Add it tomodules/macos/homebrew.nixinstead.
Docs
- Getting started: how Nix works in this repo, and the everyday recipes (start here)
- Packaging policy: where a tool or a config file should live, and why
- Upgrading: bumping the nix base release, and the pitfalls hit so far
- SSH agent & keychain: the stale-socket trap, and what survives a reboot
Credits
Started from mathiasbynens/dotfiles and supersedes my earlier Easy-Git, Easy-Env, Yabai-Setup and Mac-Setup. Third-party licences are in ACKNOWLEDGMENTS.
License
MIT, see LICENSE.
