Nix configs for my machines
Find a file
2026-02-09 13:06:46 -08:00
hardware-configs feat: migrate to dendritic pattern with flake-parts (#1) 2026-01-28 15:37:28 +00:00
modules ensure openssl is available during Ruby compilation 2026-02-04 11:31:28 -08:00
overlays add pinentry and nix-direnv 2025-11-13 19:07:22 -08:00
.envrc.example cleanup/reduce-duplication (#2) 2026-01-29 21:29:48 +00:00
.gitignore Initial commit 2025-10-27 20:21:42 -07:00
AGENTS.md refactor: move claude cask to a6mbp, sync docs with codebase 2026-02-01 11:10:53 -08:00
flake.lock upgrade gnarbox 2026-02-09 13:06:46 -08:00
flake.nix feat: migrate to dendritic pattern with flake-parts (#1) 2026-01-28 15:37:28 +00:00
README.md refactor: move claude cask to a6mbp, sync docs with codebase 2026-02-01 11:10:53 -08:00

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.