Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

nix-config

Reproducible system configuration for macOS and Linux using Nix flakes, nix-darwin, system-manager, and home-manager.

Built on flake-parts with easy-hosts for auto-discovered host management. Tasks are managed with mise.

Platforms

PlatformSystem ConfigUser ConfigPackage Manager
macOS (Apple Silicon)nix-darwinhome-managerHomebrew + Nix
macOS (Intel)nix-darwinhome-managerHomebrew + Nix
Ubuntu Linux (headless)system-managerhome-managerNix

Quick Start

Bootstrap a fresh machine with a single command:

sh -c 'curl -sSfL https://raw.githubusercontent.com/RobertDeRose/nix-config/main/bootstrap.sh | bash -s -- <hostname>'

Or from a local clone:

./bootstrap.sh <hostname>

See Bootstrapping for details.

Key Design Decisions

  • No flake.nix editing to add hosts – drop a directory into hosts/ and it’s auto-discovered.
  • Shared modules, per-host overrides – global config in modules/ and home/, host-specific additions in hosts/<arch>-darwin/<hostname>/ or systems/<arch>-linux/<hostname>/.
  • Declarative Homebrew – casks, brews, and Mac App Store apps are managed via Nix and cleaned up automatically.
  • Consistent Ayu Mirage theme – terminal, editor, multiplexer, and prompt all share the same color palette.