aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/meta
Commit message (Collapse)AuthorAgeFilesLines
* refactor(meta): flatten groups; only break out optional/hw-specificLibravatar sommerfeld2026-05-1313-173/+180
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Drop the per-domain group fragmentation in meta/ and the parallel group-per-file structure in systemd-units/. meta/ (18 -> 6 groups): keep base, flatpak (magic), intel, nvidia, work, btc fold browser, bt, cpp, dev, extra, fonts, mail, media, nix, sound, wayland -> base (with `# --- section ---` comments preserving at-a-glance structure) drop fortran (niche; install ad-hoc when needed) systemd-units/: flatten to a single system.txt + user.txt; .ignore files move up one level; group concept and pairing rule removed. justfile: unit-list/unit-apply/unit-status no longer take a group argument. unit-add/unit-forget infer scope by probing `systemctl [--user] cat <unit>` (system wins on tie). Top-level add/forget dispatcher updated: any unit-suffixed arg routes to unit-* without requiring a leading GROUP. docs: .github/copilot-instructions.md and README.md updated to describe the new flat layout. Pairing rule and group-token grammar gone. Pure layout refactor - no package contents change.
* feat(privesc): migrate from opendoas to sudo-rsLibravatar sommerfeld2026-05-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* feat: vim nav in wofi, bemoji, clip picker, webcam glyph fixLibravatar sommerfeld2026-05-131-0/+3
| | | | | | | | | | | | | | | | | | | | | | | - wofi config: key_up/key_down accept Up,k / Down,j; Ctrl-u/Ctrl-d for page jumps. Picker scripts auto-load this since they only pass --style. - waybar webcam glyph: U+F0D5D (camera/photo, looked Instagram-y) -> U+F0567 nf-md-video (handheld video camera). - Clipboard picker migrated from fuzzel to wofi for consistency with the notification picker. New driver dot_config/waybar/clip-picker.sh: pick (Mod+p) Enter pastes, Alt-d deletes delete (Mod+Shift+p) Enter deletes No clipboard "read" indicator: Wayland has no API for observing reads. - Emoji picker: bemoji on Mod+period, driven through wofi (so vim nav applies there too) and configured to type + copy via wtype. - LibreWolf flatpak: --device=all override so v4l2 webcams work. Flatpak has no finer-grained device flag. - KEYBINDS.md updated: Mod+p / Mod+Shift+p now describe wofi behavior; Mod+period documented.
* feat(notifications): persistent-pending model + wofi history pickerLibravatar sommerfeld2026-05-131-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Notifications now behave like a phone: pop briefly, auto-disappear, and remain "pending" until the user explicitly acknowledges them. The waybar count reflects pending only; idle uses a quieter glyph. State model: pending = ids in mako history/list MINUS dismissed-set state file: $XDG_RUNTIME_DIR/mako-dismissed (per-session id list) Glyph change: idle (0 pending) bell_outline U+F009C has pending bell_ring U+F009E (the previous bell_check_outline U+F11E8 "history present but nothing pending" branch is gone — there is no separate history concept now) Bindings (all now go through wrappers that maintain the dismissed-set): Super+n dismiss top visible + mark seen Super+Shift+n dismiss all visible + mark seen Super+Ctrl+n restore most recent + pop it from dismissed-set XF86Favorites history picker (rewritten on wofi) History picker (dot_config/waybar/executable_mako-history.py): - wofi --hide-search: arrow-only navigation, no fuzzy input - lines tagged [pending] / [seen] with app + summary + body - Enter re-emit via notify-send (re-shows the bubble) + mark seen - Alt-c copy "summary\nbody" to clipboard via wl-copy - Alt-d mark seen without re-showing - empty history shows a sentinel, no-op on Enter New scripts: executable_dismiss-visible.sh capture id(s) then makoctl dismiss executable_restore-pending.sh capture top-of-history id, restore, then drop that id from dismissed-set executable_mako-history.py Python rewrite (parses makoctl text output, drives wofi) Other: meta/wayland.txt add wofi (only used by this picker) dot_config/wofi/style.css minimal gruvbox style; hides input row as belt-and-suspenders even though --hide-search already does it
* feat(flatpak): add Signal desktopLibravatar sommerfeld2026-05-131-0/+1
|
* feat(flatpak): switch Chromium -> ungoogled-chromiumLibravatar sommerfeld2026-05-131-1/+1
| | | | | | | | Same sandbox model, but the Google-phone-home bits (Safe Browsing pings, sync, FLoC/topics, variation seed, etc.) are patched out at build time. Better aligned with the LibreWolf+arkenfox philosophy applied to the primary browser. Update lag vs upstream Chromium is acceptable since this is only the fallback browser.
* feat(flatpak): sandbox zathura + add mpv hybrid for browser/mail handoffsLibravatar sommerfeld2026-05-133-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | Defense-in-depth for the cross-sandbox handoff vector: when the LibreWolf/Thunderbird flatpaks open a downloaded PDF or video via the OpenURI portal, the receiving app currently runs natively with full $HOME access — defeating part of the browser/mail isolation. - meta/flatpak.txt: add org.pwmt.zathura, io.mpv.Mpv - meta/wayland.txt: drop native zathura + zathura-pdf-mupdf - meta/media.txt: keep native mpv (streamlink, /tmp/mpvsocket IPC, fast yt-dlp) — flatpak mpv is *additional*, only as the mimeapps default for video/audio to receive sandboxed handoffs - dot_config/mimeapps.list: rewrite mpv.desktop -> io.mpv.Mpv.desktop, zathura-pdf-mupdf.desktop -> org.pwmt.zathura.desktop, and replace stale userapp-Thunderbird-* entries with org.mozilla.Thunderbird.desktop - run_onchange_after_deploy-flatpak-overrides.sh.tmpl (new): --filesystem=xdg-config/{zathura,mpv}:ro so the flatpaks read our chezmoi-managed configs as a single source of truth - README: media row + new deploy-script row Manual one-shot on host: chezmoi apply -v. The pteid bridge already iterates a flatpak app list, so cartão de cidadão remains correctly registered for the Mozilla flatpaks. Native mpv config (input-ipc-server) keeps working since each flatpak has its own /tmp; no socket collision.
* feat(thunderbird): migrate to flatpak with NMH + PKCS#11 bridgesLibravatar sommerfeld2026-05-132-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | Move Thunderbird from native pacman to org.mozilla.Thunderbird flatpak, mirroring the LibreWolf migration. Bubblewrap isolates the mail client from the rest of $HOME (ssh keys, password store, gpg sockets); intra-process isolation regression is real but minor (same tradeoff as the browser). Three cross-sandbox glue points handled in repo: - run_onchange_after_deploy-thunderbird.sh.tmpl: profile path moves from ~/.thunderbird to ~/.var/app/org.mozilla.Thunderbird/.thunderbird - run_onchange_after_deploy-pteid-pkcs11.sh.tmpl: refactored to iterate over (LibreWolf, Thunderbird) instead of hard-coding LibreWolf, so cartão de cidadão signing/encryption works for S/MIME in TB - run_onchange_after_deploy-tb-eer.sh.tmpl (new): bridges external-editor-revived's native messaging host into the sandbox via a flatpak-spawn --host wrapper + relocated manifest Other surfaces (Bridge, Radicale, libsecret, mako, OpenPGP) are covered by Flathub default permissions. Manual one-shot migration on host (after pulling + just sync): close TB, copy ~/.thunderbird/. into ~/.var/app/org.mozilla.Thunderbird/.thunderbird/, chezmoi apply -v, then xdg-mime default org.mozilla.Thunderbird.desktop x-scheme-handler/mailto. Once verified working, archive the old profile via mv ~/.thunderbird ~/.thunderbird.pre-flatpak.bak.
* fix(pkg): pcsclite is the Arch package name (no dash)Libravatar sommerfeld2026-05-131-1/+1
|
* feat(pteid): bridge PKCS#11 into LibreWolf flatpakLibravatar sommerfeld2026-05-131-0/+5
| | | | | | | | | | | | | | | | | | | | | | Cartão de cidadão web authentication needs the libpteidpkcs11.so module loaded into LibreWolf's NSS database. With both apps now sandboxed in separate flatpaks, neither can see the other by default. Add a chezmoi onchange script that, when both flatpaks are installed: - Resolves the pt.gov.autenticacao install dir + .so path on the host - Grants LibreWolf flatpak read-only filesystem access to that dir, --socket=pcsc, and an LD_LIBRARY_PATH so the bundled deps (libxerces, libcjose, etc.) resolve at dlopen time - Registers the module in each LibreWolf NSS profile via modutil, with the path rewritten to /run/host/... as seen from inside the sandbox - Skips silently when LibreWolf is running (modutil would corrupt the DB) Hash gate includes the pt.gov.autenticacao line from meta/flatpak.txt so the override + registration auto-refresh on bundle bumps. Idempotent. Also explicit pcsc-lite + ccid in meta/extra.txt — they were transitive deps of the removed autenticacao-gov-pt-bin AUR package; pcscd.socket in systemd-units/system/base.txt would otherwise fail to activate.
* feat(flatpak): support .flatpak bundle URLs; migrate autenticacao-gov-ptLibravatar sommerfeld2026-05-132-3/+14
| | | | | | | | | | | | | | | | | | | | | | | | Extend meta/flatpak.txt format to allow per-line URL for non-Flathub .flatpak bundles. Lines are now either '<id>' (Flathub) or '<id> <url>' (downloaded + installed via 'flatpak install <file>'). Bundle entries are skipped on pkg-apply/pkg-fix when already installed, and re-fetched on flatpak-update only when the version embedded in the URL differs from the installed version. Use this to migrate Portuguese Citizen Card (pteid-mw) off the AUR 'autenticacao-gov-pt-bin' pseudo-flatpak unpack to the upstream-shipped flatpak bundle from amagovpt/autenticacao.gov GitHub releases — same codebase the AUR PKGBUILD already vendors, but properly sandboxed. Refactors duplicated install logic in pkg-apply/pkg-fix into a private _flatpak-install helper. ID-only contexts (pkg-status, undeclared, pkg-list) now extract the first whitespace-separated token instead of treating each line as a single ID. Caveat: PKCS#11-based Citizen Card web auth in the LibreWolf flatpak remains unsolved — the .so lives inside the autenticacao-gov sandbox and would need a 'flatpak override' + 'modutil' bridge to be loaded across sandboxes. The CLI/GUI eID app works as expected.
* feat(browser): migrate librewolf to flatpak for host-isolationLibravatar sommerfeld2026-05-132-1/+1
| | | | | | | | | | | | | | | | | | | | Move LibreWolf from native librewolf-bin to Flathub io.gitlab.librewolf-community. Bubblewrap isolates the browser from $HOME (\\.ssh, password-store, gnupg, ssh-agent socket) at the cost of namespace chroot + IPC/network namespace isolation between content processes (mozilla bug 1756236, P3, considered defense-in-depth). seccomp-bpf — the dominant sandbox layer — is preserved. - meta/flatpak.txt: + io.gitlab.librewolf-community - meta/browser.txt: - librewolf-bin - run_onchange_after_deploy-firefox.sh.tmpl: profile path moves to ~/.var/app/io.gitlab.librewolf-community/.librewolf - dot_config/mimeapps.list: librewolf.desktop -> flatpak app id - dot_local/bin/executable_linkhandler: flatpak run wrapper - README.md: blurb + new profile path arkenfox-user.js + chezmoi user-overrides.js deploy keep working unchanged because the flatpak profile is still on the host fs.
* refactor(packages): drop gaming, manage select GUI apps via flatpak groupLibravatar sommerfeld2026-05-135-19/+10
| | | | | | | | | | | | | | | - Delete meta/gaming.txt entirely (no longer used; takes discord with it) - Delete now-empty meta/office.txt; LibreOffice and Okular move to flatpak - Trim meta/browser.txt: chromium and torbrowser-launcher now flatpaks - New meta/flatpak.txt: 4 Flathub app IDs (chromium, okular, libreoffice, torbrowser-launcher), under --user scope - Add flatpak runtime to meta/extra.txt - Teach pkg-apply / pkg-list / pkg-fix / pkg-add / pkg-status / undeclared to branch on the magic 'flatpak' group name (no parallel recipe namespace) - New flatpak-update recipe; update aggregate now refreshes flatpaks too - _active-packages now skips flatpak.txt (it remains pacman-only) - pkg-apply (no args) installs pacman groups together, then flatpaks - First flatpak install auto-adds the flathub --user remote
* feat(nix): hybrid setup with flakes + direnv for per-project dev shellsLibravatar sommerfeld2026-05-132-0/+17
| | | | | | | | | | | | | | | | | | Install Nix (multi-user daemon) on Arch and wire up direnv so any project can declare its toolchain in a flake.nix and get a hermetic dev shell on cd. No NixOS, no home-manager, no migration off paru/chezmoi — just one new package manager scoped to project dev shells. - meta/nix.txt: nix from extra repo - meta/dev.txt: direnv (general-purpose, not nix-specific) - systemd-units/system/nix.txt: nix-daemon.socket (socket-activated) - etc/nix/nix.conf: enable flakes + nix-command, trusted-users=@wheel, auto-optimise-store, keep-outputs/derivations so direnv envs survive GC - dot_config/direnv/direnvrc: load nix-direnv 3.1.1 via source_url with pinned sha256 (not packaged for Arch; refusing -git AUR) - dot_config/nix/templates/{flake.nix,dev/}: flake template usable via 'nix flake init -t ~/.config/nix/templates' - dot_config/zsh/dot_zshrc: 'eval "$(direnv hook zsh)"'
* feat(mail): add external-editor-revived for kernel-style patch reviewLibravatar sommerfeld2026-05-131-0/+2
| | | | | | | | | | | | | | | Adds the AUR package which deploys both the Thunderbird XPI (as a system extension under /usr/lib/thunderbird/extensions) and the native messaging host. After restart, TB picks up the extension automatically. Use case: review kernel-style patches received by email and reply with inline review comments without TB mangling tabs/spaces or auto-wrapping. The addon bypasses TB's compose editor entirely, so the existing format=flowed/wraplength=72/reply_on_top prefs don't apply to messages composed through it. A pointer comment in thunderbird/user.js explains the relationship.
* feat(git): configure git send-email via ProtonMail BridgeLibravatar sommerfeld2026-05-131-0/+4
| | | | | | | | | | | Add a [sendemail] block targeting the local Bridge SMTP listener (127.0.0.1:1025, STARTTLS) and a credential helper scoped to that URL that fetches the password from pass (proton/bridge-smtp). The helper command is public; the secret stays in the password store. The bridge SMTP username (sensitive but not secret) goes in the per-identity private overlay (~/doxfiles), not here. Also pull in the Perl SMTP modules git send-email needs at runtime.
* chore(pkg): switch whisper.cpp -> whisper.cpp-vulkanLibravatar sommerfeld2026-05-131-1/+1
| | | | | | Drops the libggml-git transitive dependency in favor of llama.cpp-vulkan (versioned release). Vulkan acceleration on UHD 620 is unlikely to help with the base model, but this gets us off a rolling -git package.
* perf(dictate): switch default model to base for ~5x speedupLibravatar sommerfeld2026-05-131-1/+3
| | | | | | | | | | large-v3-turbo-q5_0 ran ~1-2x realtime on the T490's CPU, making push-to-talk feel sluggish. The base multilingual model is ~142 MB (vs 547 MB) and runs ~7-10x realtime, dropping perceived latency on short utterances from a few seconds to near-instant. Quality on short EN/PT dictation remains usable; bump WHISPER_MODEL to small or large-v3-turbo if accuracy matters more than latency.
* feat(sway): add dictate (whisper.cpp) and ocr (tesseract) keybindsLibravatar sommerfeld2026-05-132-0/+12
| | | | | | | | | | | | Push-to-talk dictation toggle on Super+i: parecord captures 16 kHz mono WAV, whisper-cli transcribes (auto language), output is typed via wtype and copied to the clipboard. Region OCR on Super+Shift+o: slurp + grim feed tesseract (eng+por), result lands in the clipboard with a notification preview. Adds wtype to wayland.txt; tesseract (+eng/por data) and whisper.cpp + the large-v3-turbo-q5_0 model package to extra.txt.
* feat(sway): wire XF86 media keys (Display/Tools/Keyboard/Favorites)Libravatar sommerfeld2026-05-131-0/+1
| | | | | | | | | | - XF86Display replaces F7 for display-toggle.sh (dedicated HW key) - XF86Tools opens floating pulsemixer (audio mixer TUI) - XF86Keyboard opens KEYBINDS.md in glow (floating pager) - XF86Favorites takes over mako history picker (from Super+Alt+n) Adds generic [app_id="floating"] window rule so ghostty --class=floating windows open floating. Adds glow to meta/base.txt.
* feat(net): nftables laptop firewallLibravatar sommerfeld2026-05-131-0/+1
| | | | | | | | | | | | | Default-deny inbound, allow outbound. Scoped to 'inet filter' with 'destroy table' on reload so podman/netavark tables are preserved. - meta/base.txt: add nftables - systemd-units/system/base.txt: enable nftables.service - etc/nftables.conf: laptop ruleset (loopback, ct state, ICMP/ICMPv6 essentials, DHCPv6 client, default-drop input/forward, accept output) - etc/sysctl.d/99-sysctl.conf: rp_filter=2, no redirects, no source-route, log_martians - README.md: firewall section with reload caveat
* feat(sway): bind brightness and ThinkPad XF86 multimedia keysLibravatar sommerfeld2026-05-131-0/+1
| | | | | | | | | | | | | | Install brightnessctl and bind all seven ThinkPad multimedia keys: - XF86MonBrightnessUp/Down → brightnessctl ±5% - XF86AudioMicMute → pactl source mute - XF86Bluetooth → bt-toggle.sh (bluetoothctl + notify-send) - XF86ScreenSaver (Fn+F2) → same as $mod+Shift+s (pause + swaylock) - XF86Sleep → systemctl suspend - XF86WLAN / XF86RFKill → rfkill toggle Note: rfkill may need a passwordless doas rule (permit nopass :wheel cmd rfkill) or group membership to write /dev/rfkill without privileges; not wired speculatively.
* feat(wayland): install qt6ct for Qt6 themingLibravatar sommerfeld2026-05-131-0/+1
| | | | | | zprofile already exports QT_QPA_PLATFORMTHEME=qt6ct, so installing the package is all that's needed for Qt6 apps to pick up the theme. Run qt6ct once to configure fonts/icons.
* feat(wayland): install xdg-desktop-portal-gtkLibravatar sommerfeld2026-05-131-0/+1
| | | | | | | Complements xdg-desktop-portal-wlr: wlr covers Screenshot/ScreenCast (Wayland-native), gtk covers FileChooser/Print/Settings/AppChooser. With both installed, portal auto-discovery picks the right backend per interface. No routing file needed unless conflicts show up.
* feat(wayland): add cliphist clipboard historyLibravatar sommerfeld2026-05-131-0/+1
| | | | | | Install cliphist and wire two user services (text + image watchers) into sway-session.target. Bind $mod+v to pick an entry via fuzzel and $mod+Shift+v to delete one.
* feat(thunderbird): track non-private config in dotfilesLibravatar sommerfeld2026-05-131-0/+1
| | | | | | | | | | | | | | | Mirror the firefox/ pattern for Thunderbird: - thunderbird/user.js: telemetry off, safe-browsing off, remote images blocked, read receipts disabled, plain-text compose with flowed wrap at 72, vertical pane, calendar on Monday start - run_onchange_after_deploy-thunderbird.sh.tmpl: detects default profile and copies tracked files in on any change - meta/mail.txt: add thunderbird package (official repo) - .chezmoiignore: exclude thunderbird/ from $HOME deployment - README: mention Thunderbird + Bridge + Radicale stack Accounts/credentials/mailbox data stay local per profile.
* fix(mail): switch to extra/protonmail-bridge-core (paid account)Libravatar sommerfeld2026-05-131-1/+1
|
* fix(mail): rename protonmail-bridge-nogui to protonmail-bridge-free-coreLibravatar sommerfeld2026-05-131-1/+1
| | | | | | The nogui variant was deleted from the AUR; the maintained headless package is now protonmail-bridge-free-core (same /usr/bin/protonmail-bridge binary, just no Qt GUI components).
* refactor(mail): drop TUI stack, add headless proton-bridgeLibravatar sommerfeld2026-05-131-4/+0
| | | | | | | | | Remove aerc, khal, khard, vdirsyncer from meta/mail.txt and delete their configs (aerc/, vdirsyncer systemd override, aerc .desktop handler). Point linkhandler mailto at xdg-open until a GUI client is set up. Add systemd user unit for protonmail-bridge --noninteractive, tied to graphical-session.target so it starts with the sway session.
* feat(wayland): tune Qt/SDL/Electron backendsLibravatar sommerfeld2026-05-131-0/+2
| | | | | | | | | | | - zprofile: set QT_QPA_PLATFORM="wayland;xcb" (xcb fallback for bundled Qt), SDL_VIDEODRIVER="wayland,x11" (SDL2 defaults to X11). Drop MOZ_ENABLE_WAYLAND (Firefox 121+ default). - meta/wayland: add qt5-wayland and qt6-wayland so QT_QPA_PLATFORM=wayland actually resolves. - electron-flags.conf: global --ozone-platform=wayland, Wayland window decorations, GTK4. Applies to all apps using the Arch electron wrapper. Bundled-electron apps (slack-desktop, etc.) unaffected.
* feat(sway): auto-lock on idle and before suspendLibravatar sommerfeld2026-05-131-0/+1
| | | | | | | | | | | - logind: IdleAction=lock, IdleActionSec=5min. systemd emits a lock signal at 5min idle (session becomes locked from logind PoV; swayidle listens and invokes swaylock). - swayidle: lock at 5min, blank display at 6min, lock before sleep. Closes the gap where lid-close or manual suspend would wake to an unlocked session. - swaylock: add -i (--ignore-empty-password) to ignore accidental Enter. - meta/wayland: add swayidle.
* chore(meta): add fwupd, smartmontools; enable oomd, smartd, btrfs-scrub, ↵Libravatar sommerfeld2026-05-131-0/+2
| | | | fwupd-refresh; drop fstrim.timer
* system: add zram swap via zram-generatorLibravatar sommerfeld2026-04-211-0/+1
| | | | | Cap at 8 GiB, zstd compression. Tune VM for RAM-backed swap: high swappiness, no read-ahead clustering.
* sway: add poweralertd for battery notifications via makoLibravatar sommerfeld2026-04-211-0/+1
|
* waybar: use iwctl (from iwd) instead of iw for wifi statusLibravatar sommerfeld2026-04-211-1/+0
|
* waybar: custom/wifi via iw for bond-slaved wlan; drop wg; shorter memoryLibravatar sommerfeld2026-04-211-0/+1
|
* pkg(wayland): add xorg-xwayland for zbarcam previewLibravatar sommerfeld2026-04-211-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.
* Revert partial meta cleanup: restore mold, choose, curlie, dogLibravatar sommerfeld2026-04-213-1/+4
| | | | | | | | | - mold moves cpp→dev (broader home; used by both Rust and C++ builds) - choose/curlie/dog restored to base (actively used) - restore 'alias curl=curlie' to match linux-headers stays only in nvidia.txt (pulled by nvidia-dkms; no other DKMS packages in the set).
* refactor(meta): audit and clean up package listsLibravatar sommerfeld2026-04-217-32/+12
| | | | | | | | | | | | | | | | | | Structural: - Dedupe: drop git/unzip/wget/mold from dev, linux-headers from base, zbar from btc (kept in wayland) - Move thermald base→intel (Intel-only daemon) - Split wayland.txt into wayland (compositor stack), browser, office - Sort base.txt alphabetically Content: - Drop stale: dog, choose, curlie (base); sloccount (dev) - Drop redundant: pipenv, yarn (dev has uv and npm) - Drop niche: irqbalance, libusb-compat (base); go-md2man, flamelens (dev) - Switch doas-sudo-shim-k → doas-sudo-shim (mainline variant) Removed packages are list-only; uninstall afterward with paru -Rsn if they appear in 'just undeclared'.
* feat: add 'just remove' to drop packages from a group and uninstallLibravatar sommerfeld2026-04-215-0/+7
|
* refactor: replace meta/ PKGBUILDs with plain text package listsLibravatar sommerfeld2026-04-2156-647/+237
| | | | | | | | | | - Convert 16 PKGBUILD metapackages to simple .txt files (one package per line) - Delete all PKGBUILD, .SRCINFO, and .pkg.tar.zst binary artifacts - Clean stale packages: lf→yazi, tmux→zellij, neofetch→fastfetch, stow→chezmoi - Remove duplicate rustup in dev, duplicate mesa in intel - Add justfile recipes: install, install-all, status (unified drift detection) - Configure chezmoi to exclude scripts from status/diff output - Update copilot instructions
* refactor: remove pam-gnupg and simplify gpg-agent configLibravatar sommerfeld2026-04-171-1/+0
| | | | | | | | | With GPG key passphrases being removed (LUKS provides at-rest encryption), pam-gnupg is no longer needed. Remove: - pam-gnupg config file and keygrip list - pam-gnupg-git from base metapackage - Cache TTL overrides (defaults are fine without passphrase caching) - allow-preset-passphrase (only needed by pam-gnupg)
* chore: remove old meta package artifactsLibravatar sommerfeld2026-04-1717-0/+0
| | | | | Delete 8 strisemarx-* packages (old username) and 9 old sommerfeld-* versions. Only the latest version of each package is retained.
* chore: remove all X11/Xorg configs and referencesLibravatar sommerfeld2026-04-1714-124/+0
| | | | | | | | | | | | | | | Removed: - home/.config/{X11,bspwm,sxhkd,polybar,rofi,dunst,sxiv,sx,alacritty} - meta/{x-base,x-de,x-extra} metapackages - barscripts/ (polybar GPU scripts) - nvim sxhkdrc ftplugin and treesitter parser Updated: - mimeapps.list: sxiv → imv - ghostty config: bspwm → sway comment - .zshrc: alacritty → xterm-ghostty in TERM check - .zprofile: removed bspwm from comment - copilot-instructions.md: removed X11 references
* fix: simplify display toggle to laptop-off/side-by-sideLibravatar sommerfeld2026-04-171-1/+0
| | | | | | | - Added --no-repeat to F7 binding (key repeat was firing script twice) - Dropped broken mirror mode (sway has no native mirroring support) - Removed wl-mirror dependency - F7 now toggles between laptop-off and side-by-side
* fix: use wl-mirror for true display mirroringLibravatar sommerfeld2026-04-171-0/+1
| | | | | | | | | The pos 0 0 hack created two independent overlapping outputs, causing workspace duplication and fuzzel rendering across wrong boundaries. Now uses wl-mirror to properly duplicate laptop screen to external display. Script runs at startup (with 'init' arg) and cycles on F7. Added wl-mirror to metapackage, fullscreen window rule for wl-mirror.
* feat: add wayland desktop metapackageLibravatar sommerfeld2026-04-171-0/+59
| | | | | | Combines and replaces x-base, x-de, and x-extra metapackages. Includes sway, waybar, fuzzel, mako, swaylock, grim, slurp, wf-recorder, imv, wl-clipboard, ghostty, and desktop apps.
* refactor: replace tmux.nvim with smart-splits.nvim for zellijLibravatar sommerfeld2026-04-1757-7/+373
| | | | | | | | | | - Swap aserowy/tmux.nvim for mrjones2014/smart-splits.nvim in init.lua - Configure Ctrl h/j/k/l navigation keymaps (same keys as before) - Add vim-zellij-navigator WASM plugin keybindings to zellij config - Remove tmux treesitter parser (no longer needed) smart-splits.nvim auto-detects zellij as the multiplexer and provides seamless split/pane navigation across neovim and zellij boundaries.
* meta: remove flang from fortran packageLibravatar sommerfeld2026-04-111-2/+1
| | | | It takes too long to build whenver updating
* meta: Remove just-lspLibravatar sommerfeld2025-10-241-2/+1
| | | | It's now installed through Mason