Skip to content

Nix flakes for my machines and dev environments

Notifications You must be signed in to change notification settings

bryan-thompsoncodes/nix-configs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

158 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 (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)

Personal MacBook Pro with syncthing and personal apps (gaming, messaging, document tools). Location: modules/hosts/mbp.nix

a6mbp (work macOS)

Work MacBook Pro with syncthing and work tools (AWS, Docker, DDEV, Slack, Zoom). Location: modules/hosts/a6mbp.nix

studio (media server macOS)

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

gnarbox (NixOS desktop)

NixOS desktop with GNOME, gaming (Steam + Proton GE), and PipeWire audio. Uses the unstable overlay for select packages. Location: modules/hosts/gnarbox.nix

Shared Configuration

All darwin hosts share common packages via feature modules. All hosts (including NixOS) share Nix packages for CLI tools, editors, and fonts.

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 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 poetry or pipx install poetry)

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 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 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.

About

Nix flakes for my machines and dev environments

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages