aboutsummaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAgeFilesLines
* sway: auto-toggle display layout on external plug/unplugLibravatar sommerfeld2 days2-0/+21
|
* sway: display-toggle re-enables laptop screen when no external presentLibravatar sommerfeld2 days1-0/+6
|
* UPower: PowerOff critical action (no swap, no hibernate)Libravatar sommerfeld2 days2-4/+7
|
* hibernate: add resume mkinitcpio hook, UPower critical actionLibravatar sommerfeld2 days2-1/+9
|
* sway: add poweralertd for battery notifications via makoLibravatar sommerfeld2 days2-0/+2
|
* waybar: add disk module, heat-colour VOL, move window title to leftLibravatar sommerfeld2 days2-2/+37
|
* waybar: heat-colour CPU/memory/wifi %/temperature values via pangoLibravatar sommerfeld2 days3-4/+60
|
* waybar: use iwctl (from iwd) instead of iw for wifi statusLibravatar sommerfeld2 days2-9/+16
|
* waybar: custom/wifi via iw for bond-slaved wlan; drop wg; shorter memoryLibravatar sommerfeld2 days5-35/+29
|
* waybar: wifi interface is wlan0 on this hostLibravatar sommerfeld2 days1-1/+1
|
* waybar: split network into wifi/bond/wg, reorder, add gruvbox accentsLibravatar sommerfeld2 days3-9/+78
|
* waybar: add free% to memory, slow network updates to 10sLibravatar sommerfeld2 days2-6/+7
|
* waybar: show memory used/free and wifi SSID + signal + throughputLibravatar sommerfeld2 days1-5/+7
|
* docs: add high-level overview of stack and principlesLibravatar sommerfeld2 days1-0/+34
|
* revert(zprofile): drop DISPLAY=:0 hack now that xorg-xwayland is installedLibravatar sommerfeld2 days1-4/+0
| | | | | | | | Sway sets DISPLAY in its own environment at compositor startup when xwayland support is enabled and the Xwayland binary is available, so all children (terminals, scripts) inherit it automatically. The zprofile override was only needed as a workaround while xorg-xwayland was missing.
* fix(justfile): strip inline '# ...' comments in meta/ and systemd-units/ parsingLibravatar sommerfeld2 days1-10/+10
| | | | | | | | | | The grep-based filter only dropped lines starting with '#' and blank lines, so 'xorg-xwayland # note' got passed to paru verbatim and failed with 'could not find all required packages'. Replace all 11 call sites with a single sed that strips trailing '# ...' comments AND blank lines, so both full-line and inline comments are supported consistently across pkg-apply, pkg-add, pkg-forget, pkg-status, pkg-list, and unit-apply / unit-list / unit-status.
* pkg(wayland): add xorg-xwayland for zbarcam previewLibravatar sommerfeld2 days1-0/+1
| | | | | | | zbarcam opens an X11 preview window and bails with "unable to open X display" on a pure-Wayland sway without an X server. xorg-xwayland is ~2MB and demand-spawned by sway, so the runtime cost when not scanning is zero.
* fix(zprofile): export DISPLAY=:0 for XWayland before exec swayLibravatar sommerfeld2 days2-4/+4
| | | | | | | | | | | | | | Sway's XWayland is lazy — DISPLAY isn't set in sway's env until the first X client connects, which means systemctl/dbus import-environment runs too early and nothing downstream sees DISPLAY. Setting DISPLAY=:0 in zprofile before 'exec sway' ensures sway itself inherits it, and therefore so do all its child processes (terminals, scripts, systemd user services via import-environment). XWayland will spawn on demand when a client actually connects to :0. Also drop the redundant fallback from rqr now that the session-wide export covers it.
* fix(rqr): restore zbarcam preview and propagate DISPLAY to XWaylandLibravatar sommerfeld2 days2-3/+7
| | | | | | | | | | | zbarcam needs an X11 display for the live camera preview, which sway provides via XWayland. Two changes to make that reliable: - sway/config: add DISPLAY to the systemd/dbus user-environment imports, so anything launched through those paths (not just direct sway execs) can reach XWayland. - rqr: default DISPLAY to :0 (sway's default XWayland socket) when unset, as a belt-and-suspenders fallback.
* fix(rqr): use --nodisplay to avoid X11 dependency on WaylandLibravatar sommerfeld2 days1-1/+1
| | | | | | | zbarcam defaults to opening an X11 preview window, which fails on Sway without XWayland ("unable to open X display"). --nodisplay runs the scanner headlessly; we don't need the preview since -1 exits on the first barcode anyway.
* docs: update recipe vocabulary in README and copilot-instructionsLibravatar sommerfeld2 days2-31/+37
| | | | | Reflect the new DOMAIN-VERB scheme and shape dispatchers introduced in the justfile refactor.
* refactor(justfile): streamline recipes to DOMAIN-VERB scheme with shape ↵Libravatar sommerfeld2 days1-120/+338
| | | | | | | | | | | | | | | | | | | | | dispatchers Adopt chezmoi-aligned vocabulary (add, forget, re-add, apply, diff, merge, status) uniformly across four domains (dotfiles, etc, pkg, unit). Add top-level dispatchers that sniff argument shape and delegate: - contains '/': path -> etc-* (^/?etc) or dotfiles-* - ends with .service/.timer/.socket/.mount/.target/.path: unit-* - bare words: pkg-* Fill in missing recipes: dotfiles-add/forget/re-add/diff/merge/status, etc-merge, etc-forget (was etc-rm), unit-add/forget. Rename: services-* -> unit-*, *-drift -> *-status, install/install-all -> pkg-apply, fix -> pkg-fix, groups -> pkg-list, readd -> re-add, add/remove -> pkg-add/forget, etc -> etc-status, etc-readd -> etc-re-add. Top-level apply stays monolithic (chezmoi apply deploys dotfiles + /etc atomically via the onchange template). sync = apply + pkg-fix + unit-apply.
* docs(readme): expand with layout, recipes, drift workflow, recovery guideLibravatar sommerfeld2 days1-0/+62
|
* ci: run just check on push and PRsLibravatar sommerfeld2 days1-0/+57
|
* refactor(justfile): extract fmt/lint helpers into just-lib.sh; add doctor recipeLibravatar sommerfeld2 days3-90/+63
|
* chore: remove webtorrent mpv hook; gitignore cachesLibravatar sommerfeld2 days2-159/+3
|
* feat(justfile): add check-fmt and check recipes; pre-commit hookLibravatar sommerfeld2 days3-11/+98
| | | | | | | | | | Split concerns: fmt-check (check-fmt) from lint. check-fmt mirrors fmt with each tool's --check/-d flag. check runs both as a single quality gate. A new .githooks/pre-commit runs 'just check' on every commit; bypass with git commit --no-verify. Also drop just --fmt --check and prettier --check from the lint recipe (they're format checks, belong in check-fmt).
* chore(mason): ensure selene and taplo are installedLibravatar sommerfeld2 days1-0/+2
| | | | | Required by the 'just lint' and 'just fmt' recipes for lua linting and TOML format/lint respectively.
* style: silence false-positive lint warningsLibravatar sommerfeld2 days5-1/+9
| | | | | | | | | | Inline directives for cases where the linter's shell/language dialect doesn't match reality: - init.lua: _G.P helper is intentional - dot_zprofile: zsh tied arrays, $+commands, optional sourcing - dot_zshrc: zsh brace-group-as-function-body - ipython_config: 'c' is injected by IPython at load time - doasedit: /bin/sh on Arch is bash, -O test is supported
* style(nvim): drop unused nvmap helper; reformat treesitter keymapsLibravatar sommerfeld2 days2-57/+24
| | | | Also removes a stray ANSI escape in treesitter.lua.
* refactor(mpv): use local capture() instead of monkey-patching osLibravatar sommerfeld2 days1-4/+5
| | | | | | Module-local function avoids selene's incorrect_standard_library_use lint and stops polluting the os namespace. Inner url variable renamed to remove shadowing warning.
* chore(selene): rename globals file, add mp, allow mixed_tableLibravatar sommerfeld2 days4-7/+15
| | | | | | Rename nvim.yml to selene-globals.yml (more accurate scope). Add the mpv scripting 'mp' global alongside neovim's 'vim'. Allow mixed_table since it's idiomatic in lazy.nvim/which-key specs.
* style: apply prettier and taplo to css/json/jsonc/tomlLibravatar sommerfeld2 days5-99/+124
|
* style(md): apply prettierLibravatar sommerfeld2 days6-223/+233
|
* style(shell): apply shfmt (-i 2 -ci -s)Libravatar sommerfeld2 days9-190/+192
|
* style(lua): apply stylua formattingLibravatar sommerfeld2 days6-136/+212
|
* docs: mention fmt and lint recipes in copilot-instructionsLibravatar sommerfeld2 days1-1/+1
|
* feat(justfile): add fmt and lint recipesLibravatar sommerfeld2 days1-0/+179
| | | | | | | | | | | | | | | | | | | | | | Two recipes with matching shape: just fmt # format the whole repo just fmt <path> # format one file (dispatch by ext/filename/shebang) just lint # lint the whole repo just lint <path> # lint one file Dispatch: .lua stylua / selene *.sh + sh shebang shfmt / shellcheck .zshrc/.zprofile (no fmt) / shellcheck --shell=bash (best-effort) .py ruff format / ruff check justfile just --fmt / just --fmt --check .toml taplo format / taplo lint .md/.json/.jsonc/.yaml/.yml/.css prettier --write / --check If a required tool is missing, the recipe aborts with an install hint naming the package. Whole-repo mode aggregates non-zero exits in lint so you see every issue in one pass.
* chore: add stylua/selene/prettier config filesLibravatar sommerfeld2 days5-0/+22
| | | | | | | | | | | | | Add minimal config for the upcoming fmt/lint recipes: - .stylua.toml: stylua-specific knobs only; indent/line-length/eol continue to come from .editorconfig (stylua reads it natively). - selene.toml + nvim.yml: lua51 base plus a 'vim' global so neovim config files don't get flagged as undefined. - .prettierrc.json: double quotes, trailing commas, 80-col, preserve prose wrap (avoid reflowing markdown). All four ignored by chezmoi so they stay repo-only.
* fix(etc-restore): preserve mtime so pacman -Qkk sees file as unmodifiedLibravatar sommerfeld2 days1-1/+3
| | | | | | | | | | 'bsdtar -xOf | doas tee' wrote pristine content but with mtime=now, which caused 'pacman -Qkk' (and therefore 'just etc') to still flag the file as drifted — pacman compares stored metadata, not content. Switch to 'doas bsdtar -xpf <archive> -C / <file>', which extracts the single file in place with its original owner, mode, and mtime from the package archive.
* feat(etc-restore): reset live /etc/<path> to pristine without repo round-tripLibravatar sommerfeld2 days2-1/+36
| | | | | | | | | | Sibling to etc-reset but operates directly on /etc (via doas tee) and never touches the repo. Use when a live file has drifted from pristine but you don't want to track it: just etc-restore /etc/systemd/resolved.conf Previously this required a 2-step dance (etc-add + etc-untrack).
* chore(justfile): include services-drift in statusLibravatar sommerfeld2 days1-2/+2
|
* chore(etc): stop tracking resolved.conf (identical to pristine)Libravatar sommerfeld2 days1-44/+0
| | | | | | | | | All 44 lines are comments/section headers — zero active settings. Tracking was useless: no real state to preserve, and 'just etc' would surface any future drift anyway. The live /etc/systemd/resolved.conf on the host is unaffected; chezmoi's deploy-etc script only installs files, never removes.
* docs(etc/networkd): document Type= match breadth for bond0Libravatar sommerfeld2 days2-0/+6
| | | | | | | Type=ether and Type=wlan match every interface of that class. Add comments pointing out that future USB/Thunderbolt dongles would get auto-enslaved into bond0, and how to narrow the match if that becomes undesirable.
* fix(etc/mkinitcpio): restore fallback presetLibravatar sommerfeld2 days1-4/+3
| | | | | | | Having only the 'default' preset means no safety net if the main initramfs ever fails to boot (broken firmware update, microcode regression, hook misconfig). The fallback image is ~40 MB and regenerates with every kernel update — cheap insurance.
* fix(etc/reflector): restore --protocol https; drop redundant flagLibravatar sommerfeld2 days1-1/+1
| | | | | | | | Pristine /etc/xdg/reflector/reflector.conf sets '--protocol https'. Dropping it reverts to reflector's permissive default (http, https, rsync, ftp), which could let non-HTTPS mirrors into the mirrorlist. Also drop '--completion-percent 100' — that's reflector's default.
* feat(etc,readd): rename etc-drift to etc; add etc-readd + readdLibravatar sommerfeld2 days2-4/+54
| | | | | | | | | | | - etc-drift → etc (the main entry point to the /etc subsystem). - New etc-readd: pull changes from live /etc back into tracked repo files (the /etc analog of 'chezmoi re-add'). No args refreshes all tracked files; explicit paths error if the file isn't already tracked (use etc-add to adopt). Skips unchanged files silently; runs 'just apply' only when something changed. - New top-level readd: 'chezmoi re-add' + 'just etc-readd'. One command to mirror live state back into the repo.
* feat(etc): auto-apply in etc-reset/etc-rm + add etc-untrackLibravatar sommerfeld2 days2-6/+9
| | | | | | | | | | - etc-reset and etc-rm now chain 'just apply' at the end, so a single invocation leaves both repo and /etc consistent. - New etc-untrack recipe = etc-reset + etc-rm. One command to cleanly stop tracking an owned /etc file: before: just etc-reset X && just apply && just etc-rm X && just apply after : just etc-untrack X (etc-untrack doesn't apply to unowned files — use etc-rm.)
* feat(etc): track drifted host configsLibravatar sommerfeld2 days11-0/+797
| | | | | | | Adopted via 'just etc-add' after 'just etc-drift' surfaced them: locale.conf, locale.gen, mkinitcpio.conf, mkinitcpio.d/linux.preset, pacman.conf, resolved.conf, systemd/network/30-bond*, and the shokz udev blacklist rule.
* feat(justfile): add etc-rm recipeLibravatar sommerfeld2 days2-1/+24
| | | | | | | | | | | Removes one or more files from the repo's etc/ tree and tidies any now-empty parent directories (bounded to inside etc/). Leaves the live /etc copy untouched. Composes with etc-reset to stop tracking a file cleanly: just etc-reset /etc/foo.conf # repo → pristine just apply # deploy pristine to /etc just etc-rm etc/foo.conf # stop tracking; /etc unchanged