aboutsummaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAgeFilesLines
* chore: prune stale/redundant chezmoi configLibravatar sommerfeld46 hours2-12/+1
| | | | | | | | | | | | .chezmoiignore: - remove create-efi.sh (deleted in UKI migration) - remove dot-prefixed entries (.editorconfig, .github/, .worktrees/, .githooks/, .stylua.toml, .prettierrc.json, .ruff_cache); chezmoi already ignores source paths beginning with '.' by default (reserved chezmoi names aside) .chezmoi.toml.tmpl: - drop unused data.hostname (not referenced by any template)
* chore: ignore bootstrap.sh in chezmoi, mask xdg-user-dirs-updateLibravatar sommerfeld46 hours2-0/+2
| | | | | | | | | bootstrap.sh is host-only bootstrapping and should not deploy into $HOME. The xdg-user-dirs-update.service user unit (shipped enabled by the xdg-user-dirs package) rewrites ~/.config/user-dirs.dirs on login, clobbering the tracked short-path variant (docs/dl/pics/vids). Mask it by symlinking to /dev/null.
* waybar: use iwd D-Bus + /proc for wifi instead of scraping iwctlLibravatar sommerfeld46 hours1-18/+35
| | | | | | | Replace iwctl ANSI-stripping with busctl calls against net.connman.iwd (a formally stable, documented D-Bus API) to get state and SSID, and read signal strength directly from /proc/net/wireless. No more parser fragility if iwctl's human-readable layout changes.
* sway: manage mako, poweralertd, display-watcher via systemd user unitsLibravatar sommerfeld46 hours4-3/+25
| | | | | | | Replace sway exec launches with a sway-session.target that BindsTo graphical-session.target and Wants mako, poweralertd, and a new display-watcher.service. Services now get restart-on-failure, journal integration, and clean shutdown when sway exits.
* efistub -> UKI migrationLibravatar sommerfeld46 hours6-66/+16
| | | | | | | Track /etc/kernel/cmdline and enable default_uki/fallback_uki in linux.preset. Remove create-efi helper (UKI is self-contained; only needed once at install time). Update bootstrap to print the one-off efibootmgr command instead of launching create-efi.
* system: add zram swap via zram-generatorLibravatar sommerfeld46 hours3-0/+9
| | | | | Cap at 8 GiB, zstd compression. Tune VM for RAM-backed swap: high swappiness, no read-ahead clustering.
* sway: auto-toggle display layout on external plug/unplugLibravatar sommerfeld46 hours2-0/+21
|
* sway: display-toggle re-enables laptop screen when no external presentLibravatar sommerfeld46 hours1-0/+6
|
* UPower: PowerOff critical action (no swap, no hibernate)Libravatar sommerfeld46 hours2-4/+7
|
* hibernate: add resume mkinitcpio hook, UPower critical actionLibravatar sommerfeld46 hours2-1/+9
|
* sway: add poweralertd for battery notifications via makoLibravatar sommerfeld46 hours2-0/+2
|
* waybar: add disk module, heat-colour VOL, move window title to leftLibravatar sommerfeld46 hours2-2/+37
|
* waybar: heat-colour CPU/memory/wifi %/temperature values via pangoLibravatar sommerfeld46 hours3-4/+60
|
* waybar: use iwctl (from iwd) instead of iw for wifi statusLibravatar sommerfeld46 hours2-9/+16
|
* waybar: custom/wifi via iw for bond-slaved wlan; drop wg; shorter memoryLibravatar sommerfeld46 hours5-35/+29
|
* waybar: wifi interface is wlan0 on this hostLibravatar sommerfeld46 hours1-1/+1
|
* waybar: split network into wifi/bond/wg, reorder, add gruvbox accentsLibravatar sommerfeld46 hours3-9/+78
|
* waybar: add free% to memory, slow network updates to 10sLibravatar sommerfeld46 hours2-6/+7
|
* waybar: show memory used/free and wifi SSID + signal + throughputLibravatar sommerfeld46 hours1-5/+7
|
* docs: add high-level overview of stack and principlesLibravatar sommerfeld46 hours1-0/+34
|
* revert(zprofile): drop DISPLAY=:0 hack now that xorg-xwayland is installedLibravatar sommerfeld46 hours1-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 sommerfeld46 hours1-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 sommerfeld46 hours1-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 sommerfeld46 hours2-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 sommerfeld46 hours2-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 sommerfeld46 hours1-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 sommerfeld46 hours2-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 sommerfeld46 hours1-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 sommerfeld46 hours1-0/+62
|
* ci: run just check on push and PRsLibravatar sommerfeld46 hours1-0/+57
|
* refactor(justfile): extract fmt/lint helpers into just-lib.sh; add doctor recipeLibravatar sommerfeld46 hours3-90/+63
|
* chore: remove webtorrent mpv hook; gitignore cachesLibravatar sommerfeld46 hours2-159/+3
|
* feat(justfile): add check-fmt and check recipes; pre-commit hookLibravatar sommerfeld46 hours3-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 sommerfeld46 hours1-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 sommerfeld46 hours5-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 sommerfeld46 hours2-57/+24
| | | | Also removes a stray ANSI escape in treesitter.lua.
* refactor(mpv): use local capture() instead of monkey-patching osLibravatar sommerfeld46 hours1-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 sommerfeld46 hours4-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 sommerfeld46 hours5-99/+124
|
* style(md): apply prettierLibravatar sommerfeld46 hours6-223/+233
|
* style(shell): apply shfmt (-i 2 -ci -s)Libravatar sommerfeld46 hours9-190/+192
|
* style(lua): apply stylua formattingLibravatar sommerfeld46 hours6-136/+212
|
* docs: mention fmt and lint recipes in copilot-instructionsLibravatar sommerfeld46 hours1-1/+1
|
* feat(justfile): add fmt and lint recipesLibravatar sommerfeld46 hours1-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 sommerfeld46 hours5-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 sommerfeld46 hours1-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 sommerfeld46 hours2-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 sommerfeld46 hours1-2/+2
|
* chore(etc): stop tracking resolved.conf (identical to pristine)Libravatar sommerfeld46 hours1-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 sommerfeld46 hours2-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.