aboutsummaryrefslogtreecommitdiffstatshomepage
Commit message (Collapse)AuthorAgeFilesLines
...
* fix(zsh): drop 'curl=curlie' alias (curlie removed from base)Libravatar sommerfeld2 days1-1/+0
|
* refactor(meta): audit and clean up package listsLibravatar sommerfeld2 days8-33/+13
| | | | | | | | | | | | | | | | | | 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'.
* refactor(doas): widen setenv allowlist (PATH TERM PAGER)Libravatar sommerfeld2 days1-1/+1
|
* feat: deploy /etc/doas.conf via chezmoiLibravatar sommerfeld2 days2-0/+9
| | | | | Added to the etc/ deploy loop plus a post-copy chown/chmod to 0400 root:root since doas refuses to parse otherwise.
* refactor: move create-efi.sh into dot_local/bin/Libravatar sommerfeld2 days2-1/+1
| | | | | Aligned with the other personal scripts; chezmoi will deploy it as ~/.local/bin/create-efi (executable, no .sh extension).
* fix: 'just remove' only edits the list, never uninstallsLibravatar sommerfeld2 days1-2/+1
| | | | | Package may belong to other groups; uninstall is the user's call (use 'just undeclared | paru -Rs -' afterward if desired).
* feat: add 'just remove' to drop packages from a group and uninstallLibravatar sommerfeld2 days6-0/+27
|
* feat: 'just add' accepts multiple packagesLibravatar sommerfeld2 days1-9/+11
|
* fix: pass --ask=4 to piped paru installs to auto-resolve conflictsLibravatar sommerfeld2 days1-3/+3
| | | | | | Needed so the first 'just init' on a stock Arch system (sudo preinstalled) can swap sudo for doas-sudo-shim without a prompt pacman refuses to emit under --noconfirm.
* chore: drop --noconfirm from 'just add' (stdin-less invocations can prompt)Libravatar sommerfeld2 days1-1/+1
|
* chore: add --noconfirm to all 'paru -S' invocations in justfileLibravatar sommerfeld2 days1-4/+4
|
* feat: 'just undeclared' now considers only active (≥50%) groupsLibravatar sommerfeld2 days1-16/+18
| | | | | | | | A package only listed in unadopted groups (e.g. steam in gaming on a non-gaming machine) now counts as undeclared. Extracts a hidden _active-packages helper so pkg-drift and undeclared share the same 'active list' logic.
* fix: align 'just groups' signalling with ≥50% thresholdLibravatar sommerfeld2 days1-3/+3
| | | | | | - ✓ fully installed (100%) - ~ adopted but partial (≥50%, <100%) - ✗ not adopted (<50%, includes 0%)
* fix: 'just init' now deploys dotfiles after regenerating configLibravatar sommerfeld2 days1-2/+2
|
* docs: fix 'just undeclared' doc comment (was collapsed by just)Libravatar sommerfeld2 days1-2/+1
|
* feat: split drift recipes and add 'just undeclared'Libravatar sommerfeld2 days2-8/+20
| | | | | | | | - 'just status' now a thin wrapper for 'pkg-drift + dotfile-drift' - 'just pkg-drift' and 'just dotfile-drift' are individually addressable - 'just undeclared' prints undeclared packages unindented, one per line, so they pipe cleanly into 'paru -Rs -' - pkg-drift reuses 'just undeclared' via sed to avoid duplicating logic
* feat: add 'just diff' and 'just merge' for chezmoi drift investigationLibravatar sommerfeld2 days2-1/+14
| | | | | | Both accept an optional file path. 'just merge' without an argument runs chezmoi merge-all (interactive across all modified files); with an argument it merges just that one target.
* style: drop redundant [private] attribute (_-prefix already hides recipes)Libravatar sommerfeld2 days1-2/+0
|
* refactor: reorganize justfile with sync wrapper and generalized initLibravatar sommerfeld2 days2-39/+74
| | | | | | | | | | | | | - 'just sync' now wraps apply + fix for combined dotfile + package reconciliation - 'just init' generalized for first-time machine setup: regenerate chezmoi config, install git hooks, install base packages - Hidden helper recipes (_chezmoi-init, _install-hooks) via [private] so they don't clutter 'just --list' - Section banners organize the justfile into Setup, Day-to-day, Inspection, Package management, and Hidden helpers - Default recipe (bare 'just') shows the list - Doc comments reworded for clarity in the autocomplete menu
* refactor: revert auto-init, add dedicated 'just init' recipeLibravatar sommerfeld2 days3-5/+8
| | | | | | chezmoi init is only needed when .chezmoi.toml.tmpl changes, so running it on every apply is unnecessary overhead. Run 'just init' manually when the template changes.
* fix: use 'chezmoi init --apply' to regenerate config on template changesLibravatar sommerfeld2 days2-3/+4
| | | | | | | When .chezmoi.toml.tmpl changes (e.g. adding [status] exclude=scripts), plain 'chezmoi apply' warns and keeps using the stale config. Using 'init --apply' regenerates the config from the template and applies in one step. Status does a silent init first for the same reason.
* fix: pass -S . to chezmoi so apply/status work from any CWDLibravatar sommerfeld2 days2-3/+3
| | | | | | Without an explicit source, chezmoi defaults to ~/.local/share/chezmoi which doesn't exist on this setup. The post-commit hook uses git rev-parse so it works even if the hook is run from a subdirectory.
* refactor: 'just status' only reports missing for groups ≥50% installedLibravatar sommerfeld2 days1-3/+18
| | | | | | Unadopted groups (e.g. gaming, nvidia on non-gaming/non-nvidia machines) no longer spam 'missing:' lines. Undeclared detection is unchanged — any installed package not in any list is still reported.
* refactor: raise 'just fix' threshold from ≥1 to ≥50% installedLibravatar sommerfeld2 days1-6/+8
| | | | | | Avoids triggering on groups where only a single transitive dep happens to be installed. Also skips fully-installed groups (nothing to do).
* feat: add 'just fix' to top up partially-installed meta groupsLibravatar sommerfeld2 days2-1/+16
| | | | | For each group with at least one package installed, install the rest via paru --needed. Never-installed groups (✗) stay untouched.
* feat: 'just groups <name>' shows per-package breakdown for one groupLibravatar sommerfeld2 days1-2/+17
|
* docs: document sandboxed container execution environmentLibravatar sommerfeld2 days1-0/+4
|
* feat: add 'just groups' recipe to show per-group install coverageLibravatar sommerfeld2 days2-1/+21
| | | | | | | Shows install status for each meta group: ✓ (green) fully installed ~ (yellow) partially installed ✗ (red) nothing installed
* feat: add 'just add <group> <pkg>' recipeLibravatar sommerfeld2 days2-1/+18
| | | | | Appends the package to meta/<group>.txt (if not already present) and installs it via paru --needed. Equivalent to chezmoi add for packages.
* refactor: replace meta/ PKGBUILDs with plain text package listsLibravatar sommerfeld2 days59-649/+272
| | | | | | | | | | - 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
* docs: update copilot instructions for etc2 merge and hooksLibravatar sommerfeld2 days1-3/+6
|
* feat: add tracked git hooks and justfileLibravatar sommerfeld2 days3-0/+11
| | | | | | - .githooks/post-commit: runs chezmoi apply after every commit - justfile: 'just install-hooks' sets core.hooksPath - Added justfile and .githooks/ to .chezmoiignore
* refactor: merge etc2/ into etc/, add content hashes to run scriptsLibravatar sommerfeld2 days5-29/+23
| | | | | | | | - etc2/ only existed because stow used symlinks and reflector refused them. Chezmoi copies files, so no reason to keep them separate. - Run scripts are now .tmpl files with sha256sum hashes of deployed files. chezmoi only re-runs them when file content actually changes, avoiding unnecessary doas prompts on every apply.
* fix: use cp --remove-destination in firefox deploy scriptLibravatar sommerfeld2 days1-2/+2
|
* fix: use cp --remove-destination in etc deploy scriptLibravatar sommerfeld2 days1-2/+2
| | | | | Old stow symlinks in /etc/ point back to the repo, making source and dest the same file. --remove-destination removes the symlink first.
* fix: use CHEZMOI_SOURCE_DIR env var in run scriptsLibravatar sommerfeld2 days2-6/+6
| | | | | | Cannot call 'chezmoi source-path' from within a run script — it deadlocks on the persistent state lock. Use the CHEZMOI_SOURCE_DIR env var that chezmoi provides to run scripts instead.
* fix: use chezmoi source-path in run scriptsLibravatar sommerfeld2 days2-6/+6
| | | | | | chezmoi executes run scripts from a temp directory, so $(dirname $0) resolves to /tmp instead of the repo. Use 'chezmoi source-path' to locate etc/, etc2/, and firefox/ files.
* docs: update README and copilot instructions for chezmoiLibravatar sommerfeld2 days2-15/+25
|
* feat: add chezmoi config, ignore, and deploy scriptsLibravatar sommerfeld2 days4-0/+57
| | | | | | | - .chezmoi.toml.tmpl: minimal config with hostname data - .chezmoiignore: exclude repo-only files from deployment - run_onchange_after_deploy-etc.sh: deploy etc/ and etc2/ to /etc - run_onchange_after_deploy-firefox.sh: deploy firefox overrides to profile
* refactor: restructure to chezmoi source stateLibravatar sommerfeld2 days99-0/+4709
| | | | | | | | | 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
* refactor: remove stow home/ directory (preparing for chezmoi source state)Libravatar sommerfeld2 days99-4709/+0
|
* chore: gitignore .worktrees/ for chezmoi migrationLibravatar sommerfeld2 days1-0/+1
|
* chore: remove .pam_environment (only needed by pam-gnupg)Libravatar sommerfeld6 days1-1/+0
|
* fix: set GPG_TTY per interactive shell, not just at loginLibravatar sommerfeld6 days2-2/+3
| | | | | | GPG_TTY was set in .zprofile (login shell) to /dev/tty1, but terminal emulator shells get /dev/pts/N. Move the export to .zshrc so each interactive shell sets the correct TTY before telling the agent.
* refactor: remove pam-gnupg and simplify gpg-agent configLibravatar sommerfeld6 days3-15/+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)
* refactor: revert GNUPGHOME to default ~/.gnupgLibravatar sommerfeld6 days14-22/+0
| | | | | | | | | | | | | | Drop custom GNUPGHOME=~/.local/share/gnupg which required 6 systemd socket/service overrides with hardcoded directory hashes. GnuPG periodically changes its hash algorithm on updates, silently breaking systemd socket activation and pam-gnupg passphrase presetting. With default GNUPGHOME, stock systemd units work out of the box. - Move gpg.conf, gpg-agent.conf, sshcontrol to home/.gnupg/ - Delete all gpg-agent socket/service/dirmngr override dirs - Remove GNUPGHOME from .zprofile, .pam_environment, pam-gnupg - Remove GNUPGHOME from vdirsyncer and bridge service overrides
* fix: update stale gpg-agent socket hash in systemd overridesLibravatar sommerfeld6 days4-4/+4
| | | | | | | GnuPG changed its socket directory hash from d.hmaqciuk8y8ye3gwt9b6eth1 to d.199epr64wmzkrnk8u8qgricf. The mismatch broke systemd socket activation and pam-gnupg passphrase presetting, causing SSH auth failures after reboot.
* fix: move GNUPGHOME before SSH_AUTH_SOCK in zprofileLibravatar sommerfeld6 days1-1/+1
| | | | | | gpgconf --list-dirs agent-ssh-socket needs GNUPGHOME set to return the correct hashed socket path. Without it, SSH_AUTH_SOCK pointed to a non-existent socket, breaking GPG agent SSH authentication.
* fix: use blkid -s UUID for reliable UUID extraction in create-efi.shLibravatar sommerfeld6 days1-2/+1
| | | | | The previous 'cut -f 2 -d " "' parsing was fragile and produced incorrect results depending on blkid output format.
* docs: clarify firefox/ deployment target in copilot instructionsLibravatar sommerfeld6 days1-1/+1
| | | | Stow target is the Firefox/LibreWolf user profile directory, not home.