Skip to content

About

My system configuration using nix/nix-darwin/home-manager

Resources

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

System Config

Manage macOS using Nix, nix-darwin and Home Manager.

Prerequisites

Set hostname to a known (configured) value:

  • m4-mbp (macOS)
  • macos-virtual (macOS)
  • drummer (NixOS)
  • xcel (Debian, Home Manager)
  • omarchy (Arch/Omarchy, standalone Home Manager)

For Omarchy, use the standalone Home Manager guide, not the macOS bootstrap or shared dotfile setup below. Its login is johna, not john.allen. See the Fish guide for the shared shell setup, the agent guide for Pi and Claude Code work/personal profiles, and the VNC guide for direct Tailscale access to its existing desktop.

Install Nix:

sh <(curl -L https://nixos.org/nix/install) --daemon

Install command line tools for git (brute force):

xcode-select --install

Give Terminal.app "Full Disk Access" in System Preferences > Privacy & Security > Privacy > Full Disk Access. This is required for some of the nix-darwin system settings to apply successfully. I've disabled this for now.

Install Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Clone system-config

mkdir -p ~/dev/src
cd ~/dev/src
git clone https://github.com/johnallen3d/system-config.git
cd system-config

Secrets

Secrets are managed in the Doppler system-config project. After authenticating the Doppler CLI, initialize this repository using its checked-in defaults:

doppler login
doppler setup

Run commands that need secrets with doppler run -- <command>.

Install nix-darwin and initial apply:

nix \
  --extra-experimental-features "flakes nix-command" \
  run nix-darwin \
  -- switch --flake ~/dev/src/system-config

Apply Changes

# on macOS (run from this repository)
mise update-system
# skip flake input update
mise update-system --switch-only
# also refresh Pi packages and the work Claude Code agent-kit plugin
mise update-system --switch-only --harness-refresh
# refresh both harnesses without rebuilding (or run mise run harness-refresh)
mise update-system --harness-only
# restart Claude Code to load the updated plugin

# on NixOS
sudo nixos-rebuild switch --impure --flake ~/dev/src/system-config/.#

# on Debian/Orb (using home-manager)
home-manager switch -b backup --flake ~/dev/src/system-config/.#john.allen@xcel --impure

Update Installed Packages

nix flake update --commit-lock-file
# or from another directory
pushd ~/dev/src/system-config; nix flake update --commit-lock-file; nixswitch; popd

About

My system configuration using nix/nix-darwin/home-manager

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages