aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/nvim/lua
Commit message (Collapse)AuthorAgeFilesLines
* feat(waybar,nvim): update-staleness reminder; nvim update visibleLibravatar sommerfeld2026-05-131-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | Two related changes around the 'just update' UX: 1. nvim-update no longer runs --headless. The diff buffer that vim.pack.update opens *is* the per-plugin changelog, and that was being thrown away under headless. Drop --headless from the justfile recipe and the trailing :qa! from config.update.run() so the buffer stays open until the user reviews and quits manually. Mason output was already visible because mason-tool-installer print()s. 2. New waybar 'custom/update' module + matching mako notification as a gentle staleness reminder, replacing any temptation to run unattended pacman -Syu (a bad idea on Arch: rolling, news-driven manual interventions, AUR rebuilds, partial-upgrade hazards). Source of truth: /var/log/pacman.log — last '[PACMAN] starting full system upgrade'. No daemon, no -Sy poll, no extra state file beyond a per-session notify-throttle stamp in $XDG_RUNTIME_DIR. Tiers (hours since last full upgrade): < 24h hidden (":empty" via #custom-update.fresh padding 0) 24-168h yellow + normal-urgency mako, throttled to 1/24h >= 168h red + critical-urgency mako, throttled to 1/24h Click runs 'just update' in a floating ghostty.
* feat(privesc): migrate from opendoas to sudo-rsLibravatar sommerfeld2026-05-131-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | doas's one-shot password and absent 'sudo -v' kept wasting hour-long paru AUR builds. sudo-rs is a memory-safe Rust rewrite (ISRG/Ferrous Systems), drop-in CLI compatible, and the same one Ubuntu 25.10 ships as default. We follow the Arch wiki 'Using sudo-rs without the sudo package' recipe verbatim — no custom shims. - meta/base.txt: -doas-sudo-shim +sudo-rs - etc/sudoers-rs (mode 0440): wiki minimal config + NOPASSWD reboot/poweroff - etc/pam.d/sudo: 4-line copy of upstream sudo's PAM file - run_onchange_after_deploy-etc.sh.tmpl: use real sudo, deploy sudoers-rs at 0440, create /etc/pam.d/sudo-i and /usr/local/bin/{sudo,sudoedit, su,visudo} → sudo-rs symlinks idempotently - delete etc/doas.conf, dot_local/bin/{doasedit,sudo} - zshrc: drop sudo=doas/sudoedit=doasedit aliases; rewrite ss/gimme/ pacdiff/ssys to call sudo - justfile: s/doas/sudo/g (status/diff/restore helpers) - nvim: rename :DoasWrite → :SudoWrite (uses sudo -S) - sway config: reboot/poweroff buttons call sudo - bootstrap.sh: update step-5 comment - README/KEYBINDS/copilot-instructions: flip the privesc convention No Defaults overrides: sudo's defaults (passwd_tries=3, timestamp_timeout=5) already fix the doas pain, and paru SudoLoop (kept) refreshes the 5-min window via real sudo -v.
* fix(nvim): drop overseer task-bundle integration from auto-sessionLibravatar sommerfeld2026-05-131-29/+3
| | | | | | | | | | | overseer.nvim removed save/load_task_bundle in the "task bundles get the axe" refactor, which caused auto-session to error on every session restore: /lua/plugins/session.lua:27: attempt to call field 'load_task_bundle' (a nil value) Remove the pre_save/pre_restore/post_restore hooks that called the removed API. DAP breakpoint save/restore via save_extra_data is preserved.
* fix(nvim): use print() in update.lua to satisfy seleneLibravatar sommerfeld2026-05-131-8/+3
| | | | | selene's neovim stdlib doesn't expose io.stdout:write/:flush. print() goes to the same place in headless mode and is already allowed.
* feat(just): add 'update' recipe — system + nvim plugins + masonLibravatar sommerfeld2026-05-131-0/+47
| | | | | | | | | | | | | | | New recipes (new 'Updates' section after 'Day-to-day'): - update: pkg-update nvim-update - pkg-update: paru -Syu - nvim-update: nvim --headless +'lua require("config.update").run()' New dot_config/nvim/lua/config/update.lua drives the headless session: clean orphan plugins, vim.pack.update with force=true (skips the confirm buffer since this is unattended; changes still go to nvim-pack.log), then :MasonToolsUpdateSync — the blocking variant intended for headless Interactive :PackSync stays unchanged (confirm buffer remains visible for reviewed updates).
* refactor(nvim): keep PackUpdate confirm buffer visibleLibravatar sommerfeld2026-05-131-11/+4
| | | | | | Auto-writing it defeated the purpose — no feedback on what changed. Now :PackUpdate and :PackSync show the confirm buffer; user reviews and :w to apply or :q to cancel. Matches vim.pack's intended UX.
* refactor(nvim): drop refactoring.nvimLibravatar sommerfeld2026-05-132-35/+0
| | | | | | | | | Upstream broke itself today by adding require('async') without shipping lua/async.lua. I never use these mappings anyway. Removed the plugin spec, setup call, <leader>r* keymaps, and the which-key group entry. plenary.nvim stays — neogit still depends on it. Run :PackClean afterwards to prune the on-disk plugin.
* refactor(nvim): simplify PackUpdate — vim.pack.update is effectively syncLibravatar sommerfeld2026-05-131-13/+3
| | | | | | | It drives its async git ops with internal vim.wait and makes the confirm buffer current before returning. No need for a FileType autocmd: just write the buffer if the filetype matches (guards the 'Nothing to update' case where no buffer is created).
* fix(nvim): auto-confirm PackUpdate preview buffer instead of forcingLibravatar sommerfeld2026-05-131-2/+15
| | | | | | Using force=true hid all feedback. Now we let vim.pack.update open its confirmation buffer (showing pending changes) and auto-:write it via a one-shot FileType=nvim-pack autocmd. User sees what updated.
* feat(nvim): add :PackList to show managed plugins with rev and versionLibravatar sommerfeld2026-05-131-0/+36
| | | | | Uses vim.pack.get() and prints one line per plugin: ● (active) or ○ (orphan), name, short rev, version spec.
* feat(nvim): add :PackClean, :PackUpdate, :PackSync user commandsLibravatar sommerfeld2026-05-131-0/+41
| | | | | | | | | | Wraps vim.pack for a more ergonomic workflow: - :PackClean - delete plugins no longer declared in vim.pack.add() (computed from vim.pack.get() where active == false) - :PackUpdate - run vim.pack.update(nil, { force = true }); skips the confirmation buffer - :PackSync - :PackClean followed by :PackUpdate
* chore(mason): ensure selene and taplo are installedLibravatar sommerfeld2026-04-211-0/+2
| | | | | Required by the 'just lint' and 'just fmt' recipes for lua linting and TOML format/lint respectively.
* style(nvim): drop unused nvmap helper; reformat treesitter keymapsLibravatar sommerfeld2026-04-212-57/+24
| | | | Also removes a stray ANSI escape in treesitter.lua.
* style(lua): apply stylua formattingLibravatar sommerfeld2026-04-215-40/+96
|
* refactor: restructure to chezmoi source stateLibravatar sommerfeld2026-04-2115-0/+1450
Rename home/ contents to chezmoi naming conventions: - dot_ prefix for dotfiles and dot-dirs - private_dot_ for .gnupg and .ssh directories - private_ for 0600 files (nym.pub) - executable_ for scripts in .local/bin and display-toggle.sh - symlink_ for mimeapps.list symlink