feature/chezmoi-setup-organisation #1

Merged
huantrinh1802 merged 24 commits from feature/chezmoi-setup-organisation into main 2026-09-16 19:28:51 +10:00
No description provided.
Why:
- Centralise macOS package lists so the Brewfile generator and chezmoi install script use the same data source.
- Prepare for machine provisioning via chezmoi.

What:
- Add .chezmoidata/{brew_packages,packages,notify-provider}.yaml.
- Update run_onchange_darwin-install-packages.sh.tmpl to consume the manifests.
- Update utils_scripts/brewfile_generator.py to write brew_packages.yaml.
- Modernise utils_scripts/pyproject.toml metadata.

Impact:
- No breaking change; install script now actually installs packages on Darwin.
Why:
- Align AWS config with current accounts, SSO sessions, and role names used for work.
- Keep actual credentials out of the repo by continuing to source them from 1Password.

What:
- Rename credential profiles and add new SSO-based profiles in dot_aws/private_config.
- Add corresponding template entries in .chezmoitemplates/aws_credentials.tmpl.

Impact:
- No plaintext secrets committed; credentials still resolved via onepasswordRead at apply time.
Why:
- Reflect current shell workflow (jj completions, AWS profile switcher, Bitwarden helpers).
- Stop tracking Taskwarrior config that is no longer used.

What:
- Update dot_zshrc with go/bin PATH, AWS_SHARED_CREDENTIALS_FILE, and jj completions.
- Add AWS profile switcher aliases and helpers in dot_config/zsh/alias.sh.
- Add AICHAT_CONFIG_DIR in dot_config/zsh/env.sh.
- Update get-weather script.
- Switch git email to noreply, add osxkeychain credential helper and defaultBranch main.
- Tweak ripgrep ignore globs for mobile build dirs.
- Delete dot_taskrc.tmpl.

Impact:
- No breaking change for fresh installs; existing taskwarrior users lose the template.
Why:
- Switch window manager from yabai to aerospace and align terminal tooling.

What:
- Replace yabai hotkeys with aerospace toggle in skhd.
- Enable tmux passthrough and pbcopy integration.
- Update wezterm default shell to fish, leader key, and tab title behaviour.

Impact:
- Breaking change for users relying on the old yabai skhd bindings.
Why:
- Keep application configs in sync with recent versions and personal preferences.

What:
- Refresh yazi keymap, theme and main config for newer schema.
- Update zellij keybindings and layout for vim-zellij-navigator plugin.
- Add lazygit commit movement keybindings and commented macOS open hooks.
- Add extra addressbooks to khard.

Impact:
- No breaking change beyond updated keybindings.
Why:
- Simplify plugin structure by splitting plugins into technical/nth/firenvim categories and removing unused ones.

What:
- Delete obsolete extra_plugins and plugins (debug, lsp, telescope, linting, diagnostics, etc.).
- Move retained plugins into nth_plugins/ and technical_plugins/.
- Update lazy-lock.json, keymaps, and user config.
- Add new tree-sitter queries for elixir, htmldjango, jinja and markdown.
- Update python injections, snippets and spell files.

Impact:
- Breaking change for workflows relying on deleted plugins.
Why:
- Prevent .DS_Store files from being tracked in the chezmoi source tree.

What:
- Add patterns for .DS_Store and dot_DS_Store.
- Remove tracked dot_config/nvim/lua/dot_DS_Store from the index.

Impact:
- No behaviour change.
Why:
- Complete the cleanup of .DS_Store files from the chezmoi source tree.

What:
- Remove dot_config/nvim/dot_DS_Store, dot_config/nvim/lua/custom/dot_DS_Store, and dot_config/nvim/lua/kickstart/dot_DS_Store from the index.

Impact:
- No behaviour change.
Why:
- Document how the repository is organised, how to apply it, and how secrets are handled.

What:
- Add README.md covering quick start, managed tools, encryption with age/SSH identity, secret providers, package management, and layout.

Impact:
- No behaviour change.
Introduce .chezmoiignore to prevent macOS-only config dirs (sketchybar,
aerospace, yabai, skhd, private_Library) from deploying on Linux.

Add machine.yaml with per-machine flags (nvim_profile, install_extra)
that can be overridden via [data] in ~/.config/chezmoi/chezmoi.toml.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Reorganise packages.yaml into essential/extra tiers for darwin brews and
casks. Add linux sections for Arch (pacman + AUR) and Ubuntu (apt +
linuxbrew). Install scripts now respect the install_extra flag from
machine.yaml and are gated by OS/distro detection via .chezmoi.osRelease.id.

Deprecate brew_packages.yaml (was a duplicate of packages.yaml).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add setup.sh as a master entry point that auto-detects OS and delegates
to setup-macos.sh, setup-arch.sh, or setup-ubuntu.sh. Each platform
script runs the scripts in its respective folder sequentially.

setup-arch.sh accepts --tailscale-network <subnet> for optional Tailscale
setup. All scripts print next-steps (chezmoi apply, pass.sh) on completion.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
lazy.lua.tmpl now reads nvim_profile from chezmoi data to control which
plugin groups are loaded:
  full    -> plugins + technical_plugins + nth_plugins + firenvim_plugins
  dev     -> plugins + technical_plugins
  minimal -> plugins only

Default is full; override per-machine via [data] in chezmoi.toml.
Also track technical_plugins/git.lua.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Migrate treesitter to new branch=main API with on-demand parser
installation via FileType autocmd. Add spreview plugin (local dev) to
nth_plugins for Python formatter preview.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add env_select / set_env / env_list helpers that read a JSON registry at
~/.config/env/registry.json. On interactive shell start the current env
is reapplied (or a selection prompt shown when none is set). Env vars
from the previous environment are unset before applying a new one.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Track configs for mail (aerc, mutt, neomutt, isync/mbsync), calendar/contacts
(khal/khard via vdirsyncer), shell (fish), editor tooling (jj), status bar
(sketchybar), window manager (aerospace), AI CLI (aichat), database (sqls),
and encrypted taskrc.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Track eilmeldung and opencode tool configs, restic exclude list, stylua
formatter config, myterm terminfo, monorepo layout, and utils_scripts
(arc export, zellij session migration, uv lock).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace config.fish and env.fish with templated versions that handle
three cases:
  darwin  → /opt/homebrew (existing behaviour, unchanged)
  ubuntu  → Linuxbrew at /home/linuxbrew/.linuxbrew (shellenv + SHELL)
  arch    → no brew (pacman/AUR covers all tooling)

macOS-only blocks (ssh-add --apple-use-keychain, brew --prefix paths,
DYLD_FALLBACK_LIBRARY_PATH, Library/* paths) are guarded with OS checks.
gdate vs date difference for millisecond timing is abstracted into a
_ms_now helper that detects gdate at runtime instead of via template.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
env.fish.tmpl: set SSH_AUTH_SOCK only when the Bitwarden desktop agent
socket is live (~/.bitwarden-ssh-agent.sock on Linux,
~/Library/Containers/…/bitwarden-ssh-agent.sock on macOS), so SSH
doesn't fail when the app is not running.

packages.yaml: add bitwarden-bin to Arch AUR essentials for the desktop
app (CLI was already there).

setup-ubuntu.sh: install Bitwarden via snap as part of bootstrap and
print a reminder to enable the SSH agent in Settings.

README: full rewrite covering multi-OS setup flow, Bitwarden SSH agent
setup steps, machine flags (nvim_profile, install_extra), package tiers,
encryption, and repository layout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Install and start tailscaled unconditionally. Only configure IP
forwarding and --advertise-routes when a subnet argument is given;
otherwise just run tailscale up.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add machine_type flag (laptop | server, default: laptop) to machine.yaml.
Override per-machine via [data] in ~/.config/chezmoi/chezmoi.toml.

tailscale systray is an official beta feature bundled with the Tailscale
client (no separate package needed). It works on D-Bus desktops that
support StatusNotifierItem — including waybar (Omarchy/Hyprland) and KDE.
GNOME requires the AppIndicator Support extension.

On laptop: deploy dot_config/autostart/tailscale-systray.desktop so the
systray starts with the session (supports freedesktop autostart and
systemd user service via Tailscale 1.96+).
On server / macOS: dot_config/autostart/** is excluded via .chezmoiignore.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
remote_clipboard.lua (from Omarchy):
  Activates when SSH_TTY/SSH_CONNECTION or TMUX is detected. Every yank
  is emitted as OSC 52 so it reaches the local terminal/tmux buffer. On
  Wayland, wl-copy/wl-paste are used for paste (falls back to OSC 52
  query otherwise). Set vim.g.remote_clipboard_osc52 = false to suppress
  OSC 52 emission while keeping Wayland sync.

Theme hot-reload (adapted from Omarchy, without LazyVim dependency):
  - color_scheme.lua: all ~20 themes registered lazily (pool to pick from)
  - theme.lua: single active theme file — edit plugin + colorscheme() call
    here and save; lazy.nvim change detection fires LazyReload which
    reloads the module, unloads old plugin lua cache, and reloads the
    plugin so its config() reruns and reapplies the colorscheme
  - theme_hotreload.lua: LazyReload autocmd that drives the above
  - after/plugin/transparency.lua: clears bg on 30+ UI groups; sourced
    automatically by Neovim after plugins and re-sourced after each reload

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
color_scheme.lua: add name="nightfox" to the pool entry so it matches
the name used in theme.lua and lazy.core.config.plugins lookup.

theme.lua: document all seven nightfox variants (nightfox, dayfox,
dawnfox, duskfox, nordfox, terafox, carbonfox) and add quick-reference
examples for catppuccin, tokyonight, rose-pine, kanagawa, gruvbox.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
huantrinh1802 force-pushed feature/chezmoi-setup-organisation from 72aa7dbc4f to 980c71dc23 2026-09-16 19:27:40 +10:00 Compare
huantrinh1802 deleted branch feature/chezmoi-setup-organisation 2026-09-16 19:28:52 +10:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
huantrinh1802/dotfiles!1
No description provided.