- Nix 100%
| hardware-configs | ||
| modules | ||
| overlays | ||
| .envrc.example | ||
| .gitignore | ||
| AGENTS.md | ||
| flake.lock | ||
| flake.nix | ||
| README.md | ||
Nix Configuration
Declarative, reproducible system configuration using Nix for macOS (nix-darwin) and NixOS. Includes cross-platform development environments for VA projects.
Architecture
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, openclaw (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.
Hosts
mbp (personal macOS)
Features: fonts, nix-settings, zsh, homebrew, editors, git, cli-tools
Services: syncthing
Host-specific: bambu-studio, discord, monal, rectangle-pro, steam, zen, node, pandoc, texlive, syncthing
Location: modules/hosts/mbp.nix
a6mbp (work macOS)
Features: fonts, nix-settings, zsh, homebrew, editors, git, cli-tools
Services: syncthing
Host-specific: awscli2, docker-compose, ddev, claude, claude-code, docker-desktop, notion, rectangle-pro, slack, syncthing, zoom
Location: modules/hosts/a6mbp.nix
studio (media server macOS)
Features: fonts, nix-settings, zsh, homebrew, editors, git, cli-tools
Services: ollama, open-webui, monitoring, smb-mount, syncthing, icloud-backup, openclaw
Host-specific: cloudflared, node, ollama, podman, prometheus, grafana, python@3.11, syncthing, zen
Location: modules/hosts/studio.nix
gnarbox (NixOS desktop)
Features: fonts, nix-settings, zsh, editors, git, cli-tools
Desktop: gnome, gaming, audio
Services: syncthing
Host-specific: redis, libpq, gnupg, vlc, discord, obsidian, claude-code, opencode, yaak, firefox, steam (with proton-ge-bin)
Location: modules/hosts/gnarbox.nix
Shared Configuration
All darwin hosts share these packages via feature modules:
Nix packages: vim, neovim, alacritty, ripgrep, fd, wget, tree, htop, bat, eza, fzf, direnv, nix-direnv, stow, tmux, ncurses, nixd, bun, delta, jq, zoxide, shellcheck, tea Homebrew brews: powerlevel10k, zsh-autosuggestions, zsh-syntax-highlighting, bat, bind, ca-certificates, delta, direnv, eza, ffmpeg, fzf, gnupg, jq, just, lazydocker, lazygit, libpq, marksman, ncurses, opencode, pinentry-mac, redis, shellcheck, stow, tlrc, tmux, zoxide Homebrew casks: obsidian, opencode-desktop, sol, sublime-text, yaak Font: MesloLGS Nerd Font
Prerequisites
macOS only: Install Determinate Nix Installer:
curl -fsSL https://install.determinate.systems/nix | sh -s -- install --determinate
NixOS: Nix comes pre-installed.
Installation
Clone the repository:
git clone https://git.snowboardtechie.com/bryan/nix-configs.git ~/code/nix-configs
cd ~/code/nix-configs
Build 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'
Usage
Apply Changes
macOS:
darwin-rebuild switch --flake '~/code/nix-configs#mbp'
NixOS:
sudo nixos-rebuild switch --flake '~/code/nix-configs#gnarbox'
Update Dependencies
nix flake update
# then rebuild using commands above
Development Environments
Cross-platform development environments for VA projects:
- vets-website: Node 14.15.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
Activate manually:
nix develop '~/code/nix-configs#vets-website'
Development environment definitions are located in modules/dev-envs/.
OpenCode & oh-my-opencode
OpenCode is installed via Homebrew on all darwin systems. The oh-my-opencode plugin is automatically installed on rebuild (via activation script in each host module).
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 login
Follow the prompts to authenticate with:
- Anthropic (Claude) - select "Claude Team"
- OpenAI (ChatGPT) - select "ChatGPT Team"
Usage:
Start OpenCode:
opencode
The 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:
Resources
3 gits, one repo
This repository syncs to multiple remotes. The primary repository is at git.snowboardtechie.com, with backups on Codeberg and GitHub.
License
This configuration is free to use and modify for your own purposes.