Personal system config files for my local (macOS) development environment and remote virtual machines.
- This repo uses nix-darwin (
nix-darwin/flake.nix) to manage Homebrew and other OS-level system config. - The nix config links config from this repo into
$HOMEusing GNU Stow.
Once the dotfiles are installed on this machine, the day-to-day loop is just two steps:
-
Edit the config. Make your changes — most often in
nix-darwin/flake.nix(add a Homebrew package, tweak a macOS default, etc.), or in any of the stowed dotfile packages. -
Apply it. Run
compyfrom anywhere:compy
compyis an alias (defined inzsh/aliases-macos.zsh) for:cd ~/src/dotfiles/nix-darwin && sudo env PATH="$PATH" darwin-rebuild switch --flake .#simple
This rebuilds the system, applies Homebrew/macOS changes, and re-stows your dotfiles into
$HOME.
Note: Flakes only see Git-tracked files, so
git addany new or changedflake.nix/flake.lockbefore runningcompy, or the rebuild won't see your edits.
Bootstrapping a fresh macOS machine (clone, nix-darwin rebuild, Antidote bundle, verification) lives in docs/SETUP.md.
I use a curated selection of these configs on my remote headless Linux VMs. It bundles vim, tmux, git, and core aliases — no macOS dependencies. See docs/REMOTE.md for the one-line install plus what gets installed, updating, per-VM customization, and alias architecture.
Repository layout — the full list of stow packages and what each one configures, app setup scripts, shared sources, and manual-stow instructions — lives in docs/STRUCTURE.md. Note that this repo is a first pass, not a complete mirror of $HOME: some manually-installed apps keep their own configs that aren't tracked here.
- Zellij - Too heavy for my simple tmux usage. Don't need floating panes.
- Oh my zsh - Too heavy. Used to use, but the terminal started slowing down after a few years.