Declarative environment for:
| Host | How it is managed |
|---|---|
MacBook M4 (aarch64-darwin) |
nix-darwin + home-manager + nix-homebrew |
| Linux | home-manager only (Ubuntu / WSL2 / Omarchy) |
Apply is impure so USER / HOME resolve.
flake.nix # darwinConfigurations.mac + homeConfigurations.me-*
bootstrap-mac.sh # first-time Mac apply
bootstrap-linux.sh # first-time Linux apply
rebuild.sh # daily: re-apply after edits
packages/ # pinned CLI tools (moon, bun, herdr, …)
modules/
darwin/ # Determinate Nix + Homebrew (cleanup = none)
home/ # common / linux / omarchy
hosts/mac/ # Mac host glue
files/ # seed copies into $HOME when missing
scripts/source-overlays.sh
| Host | Flake attr |
|---|---|
| macOS | .#mac |
| Ubuntu / WSL2 x86_64 | .#me-linux |
| Ubuntu / WSL2 aarch64 | .#me-linux-aarch64 |
| Omarchy x86_64 | .#me-omarchy |
| Omarchy aarch64 | .#me-omarchy-aarch64 |
--impure is required so the flake can read SUDO_USER / USER for your home path.
Login shells source (later wins):
$HOME/local.env$HOME/.config/local.env$HOME/.config/me/local.env(non-empty keys only)
ME_INSTALL_PATH defaults to ~/Desktop/Me.
ME_KEEP_BASH=1 keeps Bash on Linux instead of exec'ing Zsh.
Secrets stay out of the Nix store.
cd ~/.dotfiles
./bootstrap-mac.shLater:
sudo env HOME=/var/root USER="$USER" SUDO_USER="$USER" PATH="$PATH" \
darwin-rebuild switch --impure --flake ~/.dotfiles#maccd ~/.dotfiles
./bootstrap-linux.shLater:
home-manager switch -b before-hm --impure --flake ~/.dotfiles#me-linuxcd ~/.dotfiles
./rebuild.sh # mac on Darwin, me-linux on Linux
./rebuild.sh mac
./rebuild.sh linuxmodules/darwin/homebrew.nix sets onActivation.cleanup = "none". Ghostty is a cask. Undeclared brew packages stay installed.
- zsh via home-manager (autosuggestions + syntax highlighting + oh-my-zsh git)
- starship + zoxide
- auto fast-forward of a clean local
mainthat tracksorigin/main
Personal config — use / fork freely.