aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/.github
Commit message (Collapse)AuthorAgeFilesLines
* feat(etc): auto-apply in etc-reset/etc-rm + add etc-untrackLibravatar sommerfeld46 hours1-1/+1
| | | | | | | | | | - 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(justfile): add etc-rm recipeLibravatar sommerfeld46 hours1-1/+1
| | | | | | | | | | | 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
* feat(etc): diff/upstream-diff/add/reset recipes + ignore fstabLibravatar sommerfeld46 hours1-1/+1
| | | | | | | | | | | | | - etc-diff: diff repo-managed etc/<path> vs live /etc (defaults to all) - etc-upstream-diff: diff live /etc vs pristine pacman archive (defaults to pacman -Qkk modified set) - etc-add: copy /etc/<path> into the repo's etc/ tree - etc-reset: restore pristine via bsdtar -xpf, or rm if unowned; refuses managed paths without --force - ignore /etc/fstab (host-specific UUIDs/layout) - path-traversal guards on all recipe inputs - regular-file-only enforcement (no symlinks/dirs) - fail-fast with clear message if mirror can't supply installed version
* feat(etc): drift detection + auto-enumerating deploy templateLibravatar sommerfeld46 hours1-2/+2
| | | | | | | | | | | - `just etc-drift` reports /etc files modified from pacman defaults (via pacman -Qii) and user-created files (via pacman -Qo), subtracting already-managed paths and patterns listed in etc/.ignore. - Refactor run_onchange_after_deploy-etc.sh.tmpl to enumerate files under etc/ automatically via find; single combined hash via chezmoi output + sha256sum, so new files only need to be dropped into etc/. - etc/.ignore seeds noise filters: machine-id, ssh host keys, pacman keyring, mirrorlist, shadow/passwd backups, sbctl keys, ca-certs.
* feat(services): curated systemd units via just recipesLibravatar sommerfeld46 hours1-2/+3
| | | | | | | | | | | | | | | | Introduce systemd-units/<group>.txt files paired by name with meta groups (systemd-units/base.txt <-> meta/base.txt). Units listed there are enabled by a new 'just services-enable' recipe, wired into 'just init' so bootstrap.sh no longer needs its own systemctl loop. New justfile recipes (Services section): services list curated units with enabled/active state services-enable idempotent 'systemctl enable --now', soft-fail per unit services-drift two-way diff vs systemctl list-unit-files bootstrap.sh drops its hardcoded 9-unit loop and laptop TLP block (~22 lines); 'just init' now handles it. tlp.service lives directly in systemd-units/base.txt (no laptop gating).
* feat: add bootstrap.sh for fresh Arch installsLibravatar sommerfeld46 hours1-0/+1
| | | | | | | | | | | | Takes a minimal Arch system (only 'base' installed) to the point where 'just init' has run and dotfiles are deployed. Installs prerequisites (sudo, git, base-devel, chezmoi, just, efibootmgr), enables %wheel in sudoers, bootstraps paru-bin from the AUR, clones the repo, runs 'just init' (which swaps sudo for doas-sudo-shim via the existing base meta list), and launches create-efi if no Arch EFI boot entry exists. Designed to be curlable: curl -fsSL https://raw.githubusercontent.com/sommerfelddev/dotfiles/master/bootstrap.sh | sh
* refactor(meta): audit and clean up package listsLibravatar sommerfeld46 hours1-1/+1
| | | | | | | | | | | | | | | | | | 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: move create-efi.sh into dot_local/bin/Libravatar sommerfeld46 hours1-1/+1
| | | | | Aligned with the other personal scripts; chezmoi will deploy it as ~/.local/bin/create-efi (executable, no .sh extension).
* feat: split drift recipes and add 'just undeclared'Libravatar sommerfeld46 hours1-1/+1
| | | | | | | | - '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 sommerfeld46 hours1-1/+1
| | | | | | 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.
* refactor: reorganize justfile with sync wrapper and generalized initLibravatar sommerfeld46 hours1-2/+2
| | | | | | | | | | | | | - '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 sommerfeld46 hours1-1/+1
| | | | | | 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.
* feat: add 'just fix' to top up partially-installed meta groupsLibravatar sommerfeld46 hours1-1/+1
| | | | | For each group with at least one package installed, install the rest via paru --needed. Never-installed groups (✗) stay untouched.
* docs: document sandboxed container execution environmentLibravatar sommerfeld46 hours1-0/+4
|
* feat: add 'just groups' recipe to show per-group install coverageLibravatar sommerfeld46 hours1-1/+1
| | | | | | | Shows install status for each meta group: ✓ (green) fully installed ~ (yellow) partially installed ✗ (red) nothing installed
* feat: add 'just add <group> <pkg>' recipeLibravatar sommerfeld46 hours1-1/+1
| | | | | 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 sommerfeld46 hours1-2/+2
| | | | | | | | | | - 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 sommerfeld46 hours1-3/+6
|
* docs: update README and copilot instructions for chezmoiLibravatar sommerfeld46 hours1-14/+16
|
* docs: clarify firefox/ deployment target in copilot instructionsLibravatar sommerfeld6 days1-1/+1
| | | | Stow target is the Firefox/LibreWolf user profile directory, not home.
* docs: clarify etc/ vs etc2/ and remove stale directory refsLibravatar sommerfeld6 days1-3/+3
| | | | | | - etc/: stow-deployable symlinks to /etc - etc2/: manual-copy configs for tools that reject symlinks - Remove references to deleted lists/ and barscripts/ directories
* chore: remove all X11/Xorg configs and referencesLibravatar sommerfeld6 days1-4/+3
| | | | | | | | | | | | | | | 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
* docs: update keybinds and copilot instructions for swayLibravatar sommerfeld6 days1-2/+6
| | | | | | | - Add sway keybinds section to KEYBINDS.md - Update cross-tool conflict matrix with sway column - Add sway architecture to copilot instructions - Mark old X11 configs as legacy
* docs: add comprehensive keybinds reference and copilot update ruleLibravatar sommerfeld6 days1-0/+4
|
* docs: add zellij section to copilot-instructionsLibravatar sommerfeld6 days1-0/+4
| | | | | Document the terminal multiplexer setup: zellij config location, vim-zellij-navigator + smart-splits.nvim integration.
* docs: update copilot-instructions for new shell layoutLibravatar sommerfeld6 days1-0/+40
Rewrite shell config section to reflect the zsh-only 3-file architecture (.zshenv, .zprofile, .zshrc). Remove references to deleted files (.profile, .bashrc, envrc, aliases, shinit).