aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/.github
diff options
context:
space:
mode:
authorLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:32 +0100
committerLibravatar sommerfeld <sommerfeld@sommerfeld.dev>2026-05-13 13:43:32 +0100
commit2970b9dddc6b89705a6836fa0864fb841925ff6f (patch)
tree34b73db29f72950c8f62a1eccec57943d0be8f7a /.github
parente00ad35dd4adcc21dd83ca063a2e306f8ae8b512 (diff)
downloaddotfiles-2970b9dddc6b89705a6836fa0864fb841925ff6f.tar.gz
dotfiles-2970b9dddc6b89705a6836fa0864fb841925ff6f.tar.bz2
dotfiles-2970b9dddc6b89705a6836fa0864fb841925ff6f.zip
refactor(meta): flatten groups; only break out optional/hw-specific
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.
Diffstat (limited to '.github')
-rw-r--r--.github/copilot-instructions.md4
1 files changed, 2 insertions, 2 deletions
diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index d56fa93..34ea40b 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -14,8 +14,8 @@ The repo root is a chezmoi source directory. Files targeting `$HOME` use chezmoi
- `dot_config/`, `private_dot_gnupg/`, `private_dot_ssh/`, etc. — chezmoi source state mapping to `$HOME`. Prefix meanings: `dot_` → leading `.`, `private_` → restricted permissions, `executable_` → `+x` bit.
- `etc/` contains system-level configs (`/etc/` targets) — systemd units, pacman hooks, sysctl tunables, kernel module loading. Deployed by `run_onchange_after_deploy-etc.sh.tmpl`.
-- `meta/` contains plain text package lists for Arch Linux (one package per line, `#` comments). Each `.txt` file represents a group (e.g. `base.txt`, `dev.txt`, `wayland.txt`). Install with `just pkg-apply base dev` or `just pkg-apply` (all groups). Detect drift with `just pkg-status` (or `just status` for the aggregate).
-- `systemd-units/` contains plain text systemd unit lists split by scope: `systemd-units/system/<group>.txt` for system units (enabled via `sudo systemctl`) and `systemd-units/user/<group>.txt` for user units (enabled via `systemctl --user`). System groups are paired by name with `meta/` groups (e.g. `systemd-units/system/base.txt` ↔ `meta/base.txt`); user groups stand alone. Units listed here are enabled by `just unit-apply` (run automatically by `just init`, walks both scopes). Inspect with `just unit-list`, detect drift with `just unit-status`. The recipe group token is `<name>` or `system:<name>` (both → `system/<name>.txt`) or `user:<name>` (→ `user/<name>.txt`). E.g. `just unit-add user:graphical kanshi.service`.
+- `meta/` contains plain text package lists for Arch Linux (one package per line, `#` comments). Each `.txt` file represents a group. The layout is intentionally flat: `base.txt` holds everything universal; the only other groups are truly optional / per-machine — `flatpak.txt` (magic name; per-user flatpak app IDs), `intel.txt`/`nvidia.txt` (hardware-specific), `work.txt`/`btc.txt` (per-machine policy). Install with `just pkg-apply base intel` or `just pkg-apply` (all groups). Detect drift with `just pkg-status` (or `just status` for the aggregate).
+- `systemd-units/` contains two flat plain-text files: `system.txt` (enabled via `sudo systemctl`) and `user.txt` (enabled via `systemctl --user`). One unit per line, `#` comments OK. Sibling `system.ignore` / `user.ignore` files suppress distro-default units from `unit-status` uncurated output. Units listed here are enabled by `just unit-apply` (run automatically by `just init`, walks both scopes). Inspect with `just unit-list`, detect drift with `just unit-status`. `just unit-add <unit>...` and `just unit-forget <unit>...` infer scope by probing `systemctl [--user] cat <unit>` — no group/scope argument.
- `firefox/` contains Firefox/LibreWolf hardening overrides (`user-overrides.js`) and custom CSS (`chrome/userChrome.css`). Deployed by `run_onchange_after_deploy-firefox.sh.tmpl`.
- `bootstrap.sh` at the repo root is a POSIX shell script that takes a fresh minimal Arch install (only `base`) to a fully deployed state. It installs prerequisites, enables `%wheel` sudoers, bootstraps `paru-bin` from the AUR, clones the repo, and runs `just init`. On EFI systems missing an Arch boot entry it prints the `efibootmgr` command to register the UKI. Designed to be curlable: `curl -fsSL .../bootstrap.sh | sh`.
- `.chezmoiignore` excludes non-home files (`etc/`, `meta/`, `systemd-units/`, `firefox/`, docs) from deployment to `$HOME`.