| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
| |
- tor.service -> systemd-units/btc.txt (pairs with tor in meta/btc.txt)
- pcscd.socket -> systemd-units/base.txt (smartcards, used by GPG)
- services-drift now filters @-template units (getty@ etc.), which
are abstract and can't be curated meaningfully anyway
systemd-networkd.{service,socket,wait-online} remain uncurated;
that's a real decision (conflicts with iwd) left to disable by hand.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
| |
Make the 'wheel user must already exist' prerequisite explicit with a
three-line useradd/passwd snippet, rather than leaving it implicit in
bootstrap.sh's preconditions.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
After 'just init' the script now:
- enables recommended systemd units that base.txt installs but nothing
was activating: fstrim.timer, systemd-timesyncd, systemd-resolved,
reflector.timer, paccache.timer, pkgstats.timer, acpid, cpupower, iwd
- enables tlp.service only when a battery is present
(/sys/class/power_supply/BAT*)
- refreshes the pacman mirrorlist via reflector using the already-
deployed /etc/xdg/reflector/reflector.conf
- runs xdg-user-dirs-update to create ~/Documents, ~/Downloads, etc.
Each step is soft-fail: warns and continues on failure rather than
aborting the whole bootstrap.
pacman.conf tuning is intentionally left out (should be managed via
chezmoi's etc/ pipeline). User creation is also out of scope; the
script continues to require the wheel user to exist beforehand, per
the Arch installation guide.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
| |
- 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).
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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'.
|
| | |
|
| |
|
|
|
| |
Added to the etc/ deploy loop plus a post-copy chown/chmod to 0400
root:root since doas refuses to parse otherwise.
|
| |
|
|
|
| |
Aligned with the other personal scripts; chezmoi will deploy it as
~/.local/bin/create-efi (executable, no .sh extension).
|
| |
|
|
|
| |
Package may belong to other groups; uninstall is the user's call (use
'just undeclared | paru -Rs -' afterward if desired).
|
| | |
|
| | |
|
| |
|
|
|
|
| |
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.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
- ✓ fully installed (100%)
- ~ adopted but partial (≥50%, <100%)
- ✗ not adopted (<50%, includes 0%)
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
- '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
|
| |
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- '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
|
| |
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
Avoids triggering on groups where only a single transitive dep
happens to be installed. Also skips fully-installed groups
(nothing to do).
|
| |
|
|
|
| |
For each group with at least one package installed, install the rest
via paru --needed. Never-installed groups (✗) stay untouched.
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
Shows install status for each meta group:
✓ (green) fully installed
~ (yellow) partially installed
✗ (red) nothing installed
|
| |
|
|
|
| |
Appends the package to meta/<group>.txt (if not already present) and
installs it via paru --needed. Equivalent to chezmoi add for packages.
|
| |
|
|
|
|
|
|
|
|
| |
- 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
|
| | |
|
| |
|
|
|
|
| |
- .githooks/post-commit: runs chezmoi apply after every commit
- justfile: 'just install-hooks' sets core.hooksPath
- Added justfile and .githooks/ to .chezmoiignore
|
| |
|
|
|
|
|
|
| |
- 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.
|
| | |
|
| |
|
|
|
| |
Old stow symlinks in /etc/ point back to the repo, making source and
dest the same file. --remove-destination removes the symlink first.
|
| |
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
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.
|
| | |
|
| |
|
|
|
|
|
| |
- .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
|
| |
|
|
|
|
|
|
|
| |
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
|
| | |
|
| | |
|
| | |
|