nix-darwin Configuration

SkillDev tools

nix-darwin dotfiles configuration for macOS with Nix flakes and home-manager. Use when: adding/modifying programs, writing nix modules, editing host configs (workstation/homelab), debugging darwin-rebuild errors, managing homebrew packages via nix, or improving nix architecture.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the nix-darwin Configuration skill

What this skill tells your AI

The instructions your AI receives, as published by ahonn/dotfiles in .claude/skills/nix-darwin/SKILL.md and read by ahel’s review.

Two hosts (workstation, homelab) are built by mkDarwinConfig in flake.nix from three layers: darwin modules (system) → home-manager (user) → nix-homebrew (GUI apps and taps). Both hosts share nixpkgs-unstable. Read the host's home.nix and homebrew.nix for what is currently enabled; do not rely on remembered program lists.

Conventions

New programs follow templates/program-module.md: an options.my.<program>.enable module under modules/home-manager/programs/, imported by the host's home.nix and enabled there. Shared programs are imported by modules/home-manager/base.nix instead.

Config deliveryWhen to useExample
mkOutOfStoreSymlinkConfig edited often, applied without rebuildneovim, aerospace
builtins.readFileConfig copied into the Nix storezed-editor
Inline Nix settingsSmall, Nix-native configghostty, starship

Naming: kebab-case.nix files and host names, my.<program>.enable options, symlink/<name>.symlink dotfiles, and conventional commit scopes such as feat(neovim): or fix(darwin):.

Read by problem

Problem or decisionReference
Where a module is wired in, or why the layout is shaped this wayarchitecture.md
Build, rollback, generations, input updates, garbage collectioncommands.md
darwin-rebuild or evaluation failure, Homebrew DSL or tap errors, macOS compatibilitygotchas.md
The user asks how to restructure or improve the configurationcommunity-patterns.md — check each pattern's status in this repo first

Complete the change

Evaluate each affected host with nix eval --raw .#darwinConfigurations.<host>.system.drvPath. nix flake check only checks formatting and passes even when a host fails to evaluate; nix fmt fixes formatting. Changes under modules/, hosts/, or flake.nix take effect only after darwin-rebuild switch; follow the project CLAUDE.md for when that needs confirmation.

Signals

GitHub stars
62
Forks
2
Last commit
Sep 2026

ahel review

  • K1info
    remote-installer-piped-to-shell (in references/gotchas.md)

Automated review, not a security audit. Ruleset v1+k2.

Advanced
Catalog kind
skill
Gateway key
nix-darwin
Source
github.com/ahonn/dotfiles