Declarative macOS configuration using nix-darwin and home-manager.
git clone https://github.com/Dieman89/systems.git ~/systems
cd ~/systems
./setup.shAfter setup, use rebuild to apply changes.
| Category | Tools |
|---|---|
| Shell | zsh, starship, atuin, eza, bat, zoxide, ripgrep, fd, fzf, thefuck |
| Dev | git, delta, gh, direnv, mise, btop, nil, nixd |
| Languages | go, rust, node, python, zig, elixir, sbt |
| Cloud | kubectl, helm, k9s, kubectx, terraform, argocd, awscli, granted |
| Security | trivy, nmap, age |
| Apps (Nix) | Zen Browser |
| Category | Apps |
|---|---|
| Productivity | Raycast, 1Password, Fantastical, Craft |
| Communication | Discord, Telegram, WhatsApp, Proton Mail, Proton Drive, ProtonVPN |
| Development | VS Code, Zed, Ghostty, Claude Code, Docker, LocalCan, Bruno, Antigravity |
| Media | Spotify, CleanShot, Eagle, IINA, Blip |
| Utilities | Alcove, AlDente, AltTab, Bartender, IsThereNet |
| App | Description |
|---|---|
| RunCat | CPU monitor in menu bar |
Switch themes system-wide with a single command. Uses Berkeley Mono font.
| Theme | Style |
|---|---|
ristretto |
Monokai Pro Ristretto (warm, dark) - default |
latte |
Catppuccin Latte (light) |
frappe |
Catppuccin Frappé (muted dark) |
macchiato |
Catppuccin Macchiato (medium dark) |
mocha |
Catppuccin Mocha (darkest) |
rebuild mocha # Switch to Catppuccin Mocha
rebuild ristretto # Switch back to Monokai Ristretto
themes # Show all available themesTheme applies to: Ghostty, VS Code, Zed, Zen Browser, starship, bat, delta, borders, eza.
Berkeley Mono is encrypted (paid font). On a new machine, decrypt once:
./scripts/decrypt.sh assets/fonts.zip.age # Requires 1Password# Encrypt any file (uses public key)
./scripts/encrypt.sh <file> # Creates <file>.age
# Decrypt any .age file (requires 1Password)
./scripts/decrypt.sh <file.age> # Creates <file>modules/
├── home-manager/ # User config (shell, git, apps)
├── nix-darwin/ # System config (preferences, homebrew)
└── shared/ # Theme colors, helper functions- 1Password → Settings → Developer
- Enable "Use the SSH agent" and "Sign Git commits with SSH"
- Copy your SSH public key
- Update the key in
modules/home-manager/git.nix - Add the key to GitHub/GitLab
Add ~/Applications/Home Manager Apps to Raycast's application search:
Raycast Settings → Extensions → Applications → Add Folder
Show ProtonVPN icon when disconnected:
-
Bartender → Triggers → Add Trigger
-
Show: "Proton VPN"
-
Script condition (every 30s):
scutil --nc list | grep -c -e "\\(Disconnected\\).*ProtonVPN"
Install hooks to auto-format and lint before commits:
pre-commit installGitHub Actions runs on every push/PR:
nix flake check- validates the flakestatix check- lints nix filesnixfmt --check- checks formatting
rebuild # Apply configuration (notifies on complete)
rebuild-update # Update extensions + rebuild
decrypt-fonts # Decrypt Berkeley Mono (once per machine)
nix-health # Verify system matches config
nix flake update # Update nix inputs
nix-lint # Check for issues
nix-fmt # Format nix filesPermission errors: sudo chown -R $(whoami):admin ~/systems
