Profiles: machines, roles and shared layers

The repo was one machine's capture. It is now a set of profiles built from
layers under profiles/:

  machines/  hp-laptop, macbook-air-m2, coder-desktop
  roles/     developer, devops, ai-agents
  features/  handoff (lan-mouse)
  shared     base, personal, personal-desktop

A profile resolves to its includes (depth first), any --roles, then itself;
for a path several layers provide, the last wins. install.sh --show prints
the layers and which one owns each file.

Hyprland settings no longer share a file: base's hyprland.lua loads
~/.config/hypr/layers/*.lua with Omarchy's own require_all, and bindings.lua
stays stock so nothing binds twice. Verified with Hyprland 0.56.2
--verify-config for all three profiles, plus a broken probe layer to prove
the directory is loaded.

packages.txt gains per-line arch (Arch Linux ARM lacks opencode, codex, mise,
shellcheck) and cmd= (skip when dotfiles' ~/.local/bin already provides the
command), and an [ignore] section that replaces capture.sh's hard-coded list.
Tab-separated records would have collapsed empty fields under read, so
package records use the unit separator.

hp-laptop: re-captured. monitors.lua catch-all scale is now 1, shell.json
has four new plugins, fix-stuck-displays has its connector-name fix,
navbar-cat is gone, plugin-manager and omarchy-phone are pinned, the
herdr-hud working tree is re-diffed and bin/herdr-web rides along. Its
handoff peer is now the Air (192.168.1.49); the old default list was the
HP's own addresses, written from the Air's side.

macbook-air-m2: captured read-only over SSH as it is (no themes, plugins
or bar changes). Its LAN_MOUSE_POINTER_SCALE=0.7 moves from the shared unit
into a lan-mouse.service.d drop-in in its own layer.

coder-desktop: the Omarchy settings covert-cloud's image used to patch in
by hand (Virtual-1 at 1920x1080, no animations, stay-awake, Retro 82 once),
for the image to apply at a pinned commit. Roles reach it per workspace via
install.sh --roles ... --no-clobber.

capture.sh writes each file back into the layer that owns it, and refuses
to run before the first layered install unless --force, since the old file
shapes would land in shared layers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0153egowV1Xw2RNjZnSyZicc
This commit is contained in:
2026-10-16 16:01:54 -04:00
co-authored by Claude Opus 5.5
parent b3f3f46b98
commit 87a31858fd
98 changed files with 2010 additions and 532 deletions
@@ -0,0 +1,6 @@
Backgrounds from Wikimedia Commons:
1-rainy-evening.jpg "Porsche 911 on a rainy evening (Unsplash)" — CC0
2-gulf-917.jpg "Gulf Porsche 917" — CC BY 2.0
3-night.jpg "Porsche Porsche at night (8169422529)" — CC BY-SA 2.0
4-carrera-rs.jpg "Porsche 911 Carrera RS, Bj. 1972-73 (2016-07-02 01 Sp)" — CC BY-SA 2.0 de
0-718-cayman-s.jpg "Porsche 718 Cayman S back IMG 0704" by Alexander Migl — CC BY-SA 4.0 (floor extended to 16:9)
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

@@ -0,0 +1,35 @@
# Porsche — Jet Black Metallic body, Chalk interior, Guards Red accents,
# with Racing Yellow, Lava Orange, Python Green, Miami Blue and Gulf livery blue.
mode = "dark"
accent = "#d5001c"
selection = "#33333a"
muted = "#5c5c64"
background = "#121214"
dark_background = "#0c0c0e"
darker_background = "#070708"
lighter_background = "#1f1f23"
foreground = "#e6e1d8"
dark_foreground = "#7a766f"
light_foreground = "#cfc9bd"
bright_foreground = "#f5f1ea"
red = "#d5001c"
yellow = "#f7c600"
orange = "#ff6a13"
green = "#3fae49"
cyan = "#00a3c7"
blue = "#7fb2dd"
magenta = "#c7346a"
brown = "#8b5a2b"
bright_red = "#ff3343"
bright_yellow = "#ffdd4d"
bright_green = "#6fd36f"
bright_cyan = "#4fd2ef"
bright_blue = "#a9cdee"
bright_magenta = "#e9659a"
hyprland_active_border = "rgba(d5001cee) rgba(ff6a13ee) 45deg"
@@ -0,0 +1 @@
Yaru-red-dark