Skip to content

feat: multi-user scalability for dotfiles profiles - #139

Closed
dsaikou618 wants to merge 3 commits into
masterfrom
feature/multi-user-scalability
Closed

dsaikou618 wants to merge 3 commits into
masterfrom
feature/multi-user-scalability

Conversation

@dsaikou618

Copy link
Copy Markdown
Collaborator

Add per-person profile support so dotfiles and Claude config can be used by different people, not just Tri.

This adds:

  • Profile resolution via env var or file
  • Profile bootstrap from template
  • Claude config overlay support ( / )
  • Profile file linking (gitconfig.local, zshrc.local, nvim.lua, ghostty.conf, settings.local.json, CLAUDE.local.md)
  • target to bootstrap and link everything

The directory (gitignored) holds per-person customizations that never reach the repository, keeping private data local.

@dsaikou618
dsaikou618 requested a review from TriTacLe as a code owner October 27, 2026 09:59
Saikou Amed Thidiane Diallo and others added 2 commits October 27, 2026 12:00
… guard

profile.env set DOTFILES_PROFILE, so sourcing it via config.sh exported
the profile's own stale copy over the selector, locking every session
onto whichever profile loaded first. Also dropped the non-interactive
unalias guard and the x alias referenced an undefined agy command.
@TriTacLe

Copy link
Copy Markdown
Owner

Reviewed and pushed fixes for three bugs that broke the multi-user goal:

  • profiles/example/profile.env hardcoded DOTFILES_PROFILE="example". config.sh sources that file with set -a, so after the first bootstrap every later shell exports DOTFILES_PROFILE=example and locks onto the example profile instead of the real one. Dropped the line, since the selector has no business living inside the thing it selects.
  • shared.zsh dropped the non-interactive unalias guard entirely, so any script or agent sourcing it would hit the interactive rm/mv/cp/cd/ls aliases. Restored it.
  • the x alias got repointed at an undefined agy command (also a new agyy alias with no definition anywhere in the repo). Reverted both to claude.

Also dropped GIT_NAME/GIT_EMAIL from profile.env since nothing reads them, the real identity goes through gitconfig.local.

Not touched, worth a look before merge: the Ghostty shader files, Brewfile edits, zsh colorscheme default, and the STM32 nvim filetype removal are unrelated to the profiles feature and ride along in this diff.

@TriTacLe

Copy link
Copy Markdown
Owner

Follow-up: this branch is now 16 commits behind master and has a real merge conflict. Master's own #119 already fixed the same non-interactive-alias-guard bug independently, so it collides with the fix I pushed here. Conflicts also touch .gitconfig, Brewfile, config.sh, and .gitignore. Needs a rebase onto current master before this can merge, not just more edits on top.

Note: I pushed a commit (96c1c14) directly to this branch earlier fixing the three bugs described above, before realizing this PR is from a collaborator account rather than the repo owner's own branch. Flagging that in case it's unexpected - happy to have it reverted if you'd rather land your own fix.

Copy link
Copy Markdown
Owner

Closing in favour of a single re-cut branch. Full review is on #141.

This PR shares its two base commits (e7c5e231, 3b875287) with #140 and #141, so it carries the same four reverts against current master: the repo owner's git identity replaced with yours in .gitconfig, the NTNU gitconfig and git.ntnu.no credential helper removed, the STM32 main.c[1-6] filetype mapping deleted from options.lua, and stow-pkg claude-config reverted. It also conflicts with master (mergeable_state: dirty).

The profiles feature is worth having and the implementation is sound. It needs a branch cut from current master with only the profile files in it. #141 lists exactly what that should contain.

Your unique commit here, 96c1c142 "close profile self-poisoning loop, restore non-interactive alias guard", is not in #140 or #141. Please carry it into the re-cut.


Generated by Claude Code

@TriTacLe TriTacLe closed this Oct 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants