Commit Graph

16 Commits

Author SHA1 Message Date
d4b7b6354d Fix clean target to remove all symlinks, not just dangling ones
-xtype l only catches broken symlinks; a stale symlink pointing to a
file that still exists (e.g. leftover from stow laptop on a work PC)
would survive clean and then block the next stow run.

Also add .zshrc/.zshenv to the clean sweep.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 10:50:27 -04:00
88c9e165b0 Add clean target to Makefile for migration from old stow structure
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 10:46:21 -04:00
541564775a Split laptop/work into independent stow packages with shared/ base
- Remove work/laptop detection logic from nvim and emacs configs; each
  package now has a self-contained init that requires no runtime checks
- Create shared/ stow package containing nvim/init.lua, emacs/init.el,
  common-dev-settings.el, org-bindings.el, tmux, ghostty, and ranger
- Rename laptop-languages.lua / work-languages.lua → languages.lua in
  each package; shared/init.lua uses require('languages') generically
- Rename work-dev-settings.el → dev-settings.el to match laptop naming
- Expand work/ to include the full set of dev tools (tmux, ghostty,
  ranger, emacs, neovim) without email/calendar tooling
- Add Makefile with `make laptop` and `make work` targets (each runs
  a single `stow shared <profile>` invocation)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 10:45:41 -04:00
2a0813b861 Gate laptop/work language packs behind stow-loaded modules
Neovim now loads either laptop-languages.lua or work-languages.lua
depending on which stow packages are active. Work mode suppresses
Rust/Go/C/C++/LaTeX servers, DAP, and vimtex entirely via cond guards.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 09:58:28 -04:00
6a58f82501 Add work nvim language pack, switch tmux prefix to Ctrl-Space
Work language support (C#, TS, JS, CSS, HTML, Prettier) is now gated
behind a stow-loaded work-languages.lua module so it only activates
when the work package is stowed. Tmux prefix changed from Ctrl-b to
Ctrl-Space to match the neovim Space-leader feel.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 09:52:33 -04:00
5c334a8b74 Add neovim config, migrate tmux to vim-style bindings
- Add kickstart-based neovim config with catppuccin, telescope, LSP,
  treesitter, DAP, vimtex, harpoon, and lazygit integration
- Remap tmux pane navigation and splits to hjkl / s / v

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 14:00:06 -04:00
64ddb18129 Remove calendar tooling (vdirsyncer, khal, calsync)
Calendar handling left to phone. Mail-only setup going forward.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:22:43 -04:00
ec2f3afb1b Fix Fastmail Inbox IMAP conflict
Same Inbox/INBOX collision as Outlook. Exclude 'Inbox' from Patterns.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:13:31 -04:00
661f5e002c Fix Outlook Inbox IMAP conflict, add PipelineDepth 1
Outlook IMAP lists 'Inbox' as a folder AND uses INBOX as the special inbox,
causing mbsync to fail with 'cannot use unqualified Inbox'. Excluding 'Inbox'
from Patterns lets the MaildirStore Inbox directive handle it correctly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 15:12:50 -04:00
0f0ee16ebd Add Fastmail email and calendar, multi-account neomutt
- mbsync: add Fastmail IMAP channel (rbw for credentials)
- msmtp: add Fastmail SMTP account
- neomutt: add fastmail account file, F2/F3 account switching macros
- vdirsyncer + khal: Fastmail CalDAV calendar sync
- zshrc: restore calsync alias

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:58:48 -04:00
a923165370 Remove gpg-agent.conf, use default cache TTL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:54:38 -04:00
6061cb5698 Replace keychain GPG with gpg-agent cache TTL
keychain's GPG key management is incompatible with GnuPG 2.4 keyboxd.
gpg-agent handles key caching natively; set 24h TTL so it unlocks once per day.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:53:44 -04:00
1a30f62ad9 Fix keychain GPG key syntax
This version of keychain uses gpgk: prefix rather than --gpg flag.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:52:08 -04:00
bbe6c1f7d1 Add .gitignore for emacs temp files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:48:36 -04:00
2763011158 Add mail setup guide, remove calendar configs
Documents the full Outlook.com OAuth2 mail setup (rbw, Azure app registration,
GPG, mutt-oauth2, mbsync, msmtp, neomutt) for reinstall reference.
Removes vdirsyncer/khal configs and calsync alias.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:47:46 -04:00
a0abf9705f Initial dotfiles commit
Laptop config: zsh, emacs (with WSL detection for work), ghostty, tmux, ranger,
newsboat, neomutt + mbsync + msmtp (Outlook OAuth2), neomutt signature.
Work config: emacs with C#/TS/JS/CSS/HTML dev settings for WSL.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:39:23 -04:00