Declarative, reproducible system configuration using Nix for macOS (nix-darwin) and NixOS. Includes cross-platform development environments for VA projects.
This repository uses a dendritic (tree-like) modular architecture with flake-parts and import-tree. Configurations are organized by feature/capability rather than by host:
modules/
├── base/ # Core system: fonts, homebrew, nix-settings, zsh
├── dev/ # Development: cli-tools, editors, git
├── desktop/ # GUI: gnome, gaming, audio (NixOS)
├── services/ # Daemons: ollama, open-webui, monitoring, smb-mount, syncthing, icloud-backup (Darwin)
├── hosts/ # Host-specific: a6mbp, gnarbox, mbp, studio
└── dev-envs/ # VA project environments
Each host imports and composes feature modules. See modules/README.md for detailed structure.
Personal MacBook Pro with syncthing and personal apps (gaming, messaging, document tools).
Location: modules/hosts/mbp.nix
Work MacBook Pro with syncthing and work tools (AWS, Docker, DDEV, Slack, Zoom).
Location: modules/hosts/a6mbp.nix
Media server Mac running the full service stack: ollama, open-webui, monitoring (Prometheus + Grafana), SMB mount, syncthing, and iCloud backup.
Location: modules/hosts/studio.nix
NixOS desktop with GNOME, gaming (Steam + Proton GE), and PipeWire audio. Uses the unstable overlay for select packages.
Location: modules/hosts/gnarbox.nix
All darwin hosts share common packages via feature modules. All hosts (including NixOS) share Nix packages for CLI tools, editors, and fonts.
- Nix packages: See
modules/dev/cli-tools.nix,modules/dev/editors.nix - Homebrew brews/casks: See
modules/base/homebrew.nix - Font: MesloLGS Nerd Font (see
modules/base/fonts.nix)
macOS only: Install Determinate Nix Installer:
curl -fsSL https://install.determinate.systems/nix | sh -s -- install --determinateNixOS: Nix comes pre-installed.
Clone the repository:
git clone https://git.snowboardtechie.com/bryan/nix-configs.git ~/code/nix-configs
cd ~/code/nix-configsBuild and activate:
macOS:
darwin-rebuild switch --flake '.#mbp' # or '.#a6mbp', '.#studio'NixOS (first build requires experimental features flag):
sudo nixos-rebuild switch --flake '.#gnarbox' --extra-experimental-features 'nix-command flakes'macOS:
darwin-rebuild switch --flake '~/code/nix-configs#mbp'NixOS:
sudo nixos-rebuild switch --flake '~/code/nix-configs#gnarbox'nix flake update
# then rebuild using commands aboveCross-platform development environments for VA projects:
- vets-website: Node 22.22.0, Yarn 1.x, Cypress → vets-website
- vets-api: Ruby 3.3.6, PostgreSQL, Redis, Kafka → vets-api
- next-build: Node 24, Yarn 3.x, Playwright → next-build
- component-library: Node 22, Yarn 4.x, Puppeteer → component-library
- content-build: Node 14.15.0, Yarn 1.x, Cypress → content-build
- simpler-grants: Node 20, Python 3.11, pnpm (corepack) → simpler-grants-protocol (Poetry must be installed separately via
brew install poetryorpipx install poetry)
Activate manually:
nix develop '~/code/nix-configs#vets-website'Development environment definitions are located in modules/dev-envs/.
OpenCode is installed via Homebrew on all darwin systems. The oh-my-opencode plugin is automatically installed on rebuild via the shared activation module (modules/base/activation.nix).
Installation:
The oh-my-opencode plugin installs automatically on the first rebuild after adding the configuration. Run:
darwin-rebuild switch --flake '.#mbp'Authentication:
After installation, authenticate your AI providers:
opencode auth loginFollow the prompts to authenticate with:
- Anthropic (Claude) - select "Claude Team"
- OpenAI (ChatGPT) - select "ChatGPT Team"
Usage:
Start OpenCode:
opencodeThe oh-my-opencode plugin provides:
- Sisyphus - Main orchestrator agent with specialized subagents
- Multi-model support - Claude, ChatGPT, Gemini
- Enhanced tools - LSP, AST grep, background agents
- Productivity hooks - Todo enforcement, comment checker, context management
Include ultrawork in your prompts for maximum parallel agent performance.
Documentation:
This repository syncs to multiple remotes. The primary repository is at git.snowboardtechie.com, with backups on Codeberg and GitHub.
This configuration is free to use and modify for your own purposes.