mirror of
https://github.com/harivansh-afk/nix.git
synced 2026-04-15 18:01:29 +00:00
3.4 KiB
3.4 KiB
Nix Config
Approach
This repo is the source of truth for the machine's reproducible developer environment:
home/contains the Home Manager modules for user-facing toolsconfig/contains the repo-owned config trees copied from your daily setupmodules/contains host-levelnix-darwinpolicy and package layersmodules/homebrew.nixis intentionally narrow and only exists for GUI apps that are still easier to keep in Brew on macOShome/migration.nixcontains one-time ownership handoff logic from~/dotsinto Home Manager so the steady-state modules can stay focused on real config
Layout
flake.nix: top-level flake and host wiringhosts/hari-macbook-pro/default.nix: this machine's host configmodules/base.nix: Nix settings and core packagesmodules/macos.nix: macOS defaults and host-level settingsmodules/packages.nix: system packages and fontsmodules/homebrew.nix: the remaining Homebrew-managed GUI appshome/: Home Manager modules for shell, editor, CLI tools, and app confighome/migration.nix: transitional cleanup for old~/dotssymlinksconfig/: repo-owned config files consumed by Home Manager
Ownership Boundaries
- Nix owns packages, dotfiles, shell/editor config, launchd services, and selected macOS defaults
- Homebrew is retained only for a narrow GUI cask boundary
- Keychain items, TCC/privacy permissions, browser history, and most
~/Library/Application Supportstate are intentionally outside declarative Nix ownership
Dedicated Inputs
Most tools come from nixpkgs. Fast-moving CLIs that you want to update on
their own cadence are pinned as dedicated flake inputs:
googleworkspace-cliclaudeCode
Bitwarden note:
bwis installed via Homebrew asbitwarden-clibwsis not currently managed in this repo because I did not find a supported nixpkgs or Homebrew package for it on macOS during verification- daily shell secrets are synced from Bitwarden into
~/.config/secrets/shell.zshviajust secrets-sync - vault items are currently the source of truth for imported machine secrets and SSH material
Commands
First switch:
nix run github:LnL7/nix-darwin/master#darwin-rebuild -- switch --flake .#hari-macbook-pro
After the first successful switch:
just switch
just build
just check
Update everything pinned by the flake:
nix flake update
just switch
Update only Codex or Claude:
nix flake lock --update-input claudeCode
just switch
Update Codex:
brew upgrade --cask codex
just switch
Sync Bitwarden-backed shell secrets:
export BW_SESSION="$(bw unlock --raw)"
just secrets-sync
Restore file-based secrets from Bitwarden:
export BW_SESSION="$(bw unlock --raw)"
just secrets-restore-files
What Still Needs Manual Handling
- Promoting vault-backed secrets into Bitwarden Secrets Manager machine-account flows, if you want fully non-interactive sandbox secret injection later
- App state under
~/Library/Application Support - Anything that depends on local credentials, keychains, or encrypted stores
- Manual cleanup of old non-Nix installs that are no longer wanted
Current Homebrew Scope
The current Homebrew boundary is only:
capcodexraycastriptide-devthebrowsercompany-diawispr-flow
Homebrew activation is currently cleanup = "uninstall", so anything outside
that list is treated as drift and removed on darwin-rebuild switch.