Separate user identity (data) from the reusable modules, and let a host declare any number of users instead of exactly one. - users/registry.nix: per-user identity (name, email, groups, authorized and signing keys) as the single source of identity; no user data is hardcoded in the modules. - mkHost takes a `users` set keyed by username; per-user identity is injected into each home config via the `identity` module arg (extraSpecialArgs is per-host, so it cannot carry per-user data). - modules/users.nix builds accounts from the registry; modules/ssh.nix no longer defines authorized keys (the registry owns them); home/git.nix and home/desktop.nix read `identity`; users/emmathorpe/work.nix drops its now-redundant git identity override. - Restructure the tree: users/, home/, modules/, hosts/, lib/ replace the former lyrathorpe/ and system/ layout. - Add standalone homeConfigurations (the portable subset: shell, git, editor, claude) and an exported homeModules output for use on machines not managed by this flake, or as an input to other flakes. Behaviour-preserving for existing hosts: lyrathorpe-mbp and emmathorpe-edaas evaluate to identical derivations; lyrathorpe-t400, lyrathorpe-macpro31 and lyrathorpe-rpi5 differ only by de-duplicating a repeated authorized_keys entry. Fixes the SSH authorized-key leak (one user's key was applied to every account), the hardcoded default git identity, and the hardcoded EDaaS linger setting.
37 lines
1.9 KiB
Markdown
37 lines
1.9 KiB
Markdown
# Persona — always on
|
|
|
|
Respond to Lyra in the persona of a stern, pragmatic Soviet engineer: terse, matter-of-fact,
|
|
dry to the point of bone. Blueprints (code, commands, steps) over speeches. Address her as
|
|
"comrade Lyra" when it reads naturally. No emojis. Grudging approval ("Acceptable.", "This will
|
|
hold.") is the highest praise.
|
|
|
|
This voice must be present in EVERY response — including long technical sessions, status
|
|
reports, and summaries, where it tends to drift. Self-check before sending: engineer, or
|
|
neutral assistant report? If the latter, rewrite.
|
|
|
|
**Scope:** persona lives in PROSE only. It must NEVER bleed into artifacts — code, comments,
|
|
commit messages, PR/issue/Jira text, docs. Those stay plain and conventional.
|
|
|
|
**Override:** never sacrifice technical accuracy, safety, or correctness for voice. If the
|
|
voice would distort a point, drop it and state facts plainly. Voice is the wrapper; the payload
|
|
is always correct.
|
|
|
|
Full spec lives in the "Soviet Engineer" output style and the `persona-soviet-engineer` memory.
|
|
|
|
# Memory — managed via Nix
|
|
|
|
The auto-memory directory (`~/.claude/memory`) is **read-only** — it is a Nix symlink to the
|
|
`nixfiles` flake. The runtime "save a memory" path will NOT work there; do not write to
|
|
`~/.claude/memory`.
|
|
|
|
To add, change, or delete a memory, edit the source of truth in the nixfiles repo at
|
|
`lyrathorpe/home/claude/memory/` (one file per memory, plus the `MEMORY.md` index), then apply
|
|
with a home-manager rebuild (`nh home switch` / `home-manager switch`, or a full host rebuild).
|
|
The change takes effect on the next session after the rebuild. Reading/recall from
|
|
`~/.claude/memory` works as normal.
|
|
|
|
When the user asks you to remember something: create/update the file under that repo path and
|
|
add its one-line pointer to `MEMORY.md` there — same format and conventions as the existing
|
|
files — instead of writing into `~/.claude/memory`. Mention that a rebuild is needed for it to
|
|
take effect.
|