# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Overview Personal NixOS flake-based configuration using [Numtide Blueprint](https://github.com/numtide/blueprint) for multi-host management. Manages three hosts with Home Manager for user environments. ## Commands ```bash # Rebuild and switch the current host sudo nixos-rebuild switch --flake .#$(hostname) # Test without applying sudo nixos-rebuild test --flake .#$(hostname) # Apply home-manager for a user home-manager switch --flake .#julien@LAPTOP-032 home-manager switch --flake .#jhemono@gwiad # Update flake inputs nix flake update nix flake update nixpkgs-unstable # single input ``` ## Architecture Blueprint auto-discovers hosts and modules — no manual registration needed. ``` flake.nix (Blueprint orchestrator) modules/ nixos/ base.nix — common system settings (bootloader, timezone, Nix store GC, system packages) jhemono.nix — jhemono user account + SSH authorized keys home/ user.nix — custom options: user.name, user.email base.nix — shell (Fish), editor (Helix) git.nix — Git + Jujutsu + GitHub CLI hosts/ gwiad/ — ThinkPad T14 AMD workstation, Sway/Wayland sesame/ — home server (Forgejo, Nextcloud, Mailu, Nginx, sops-nix secrets) LAPTOP-032/ — work laptop, GNOME ``` ## Hosts **gwiad** — personal workstation - nixos-hardware: `lenovo-thinkpad-t14-amd-gen3` - Sway + Waybar, btrbk snapshots, syncthing **sesame** — home server (`*.hemono.fr` domains) - Services: Forgejo (`git`), Nextcloud (`suite`), Mailu (`mail`), Transmission, Syncthing - All HTTPS via ACME; SSH-key-only access - Secrets via sops-nix (private `mysecrets` repo) **LAPTOP-032** — work laptop - GNOME/GDM, Docker (rootless), claude-code (from `nixpkgs-unstable`), UV, Node.js ## Key Conventions - `nixpkgs-unstable` overlay is used when a package isn't available or outdated in the stable channel (e.g., `claude-code`) - Home Manager modules receive user info via the custom `user.name` / `user.email` options defined in `modules/home/user.nix` - Host-specific files live entirely under `hosts//`; shared logic goes in `modules/`