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,5 @@
Backgrounds from Wikimedia Commons (cropped to 3840x2160):
1-giallo-studio.jpg "2009 Ferrari 458 Italia Museo Nazionale dell'Automobile Torino 01" by Rahil Rupawala — CC BY 2.0
2-london-nights.jpg "Ferarri F458 Version 2 (8138264334)" by Ben — CC BY-SA 2.0
3-light-trails.jpg "Ferarri White 458 (8157299104)" by Ben — CC BY-SA 2.0
4-at-speed.jpg "Ferrari 458 (8925562883)" by emperornie — CC BY-SA 2.0
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

@@ -0,0 +1,35 @@
# Ferrari 458 Italia — Nero Daytona body, Crema leather interior, Rosso Corsa
# accents, Giallo Modena shield, Tricolore green, Azzurro California and Blu Tour de France.
mode = "dark"
accent = "#d40000"
selection = "#3a2a28"
muted = "#665b57"
background = "#141110"
dark_background = "#0d0b0a"
darker_background = "#070606"
lighter_background = "#221c1a"
foreground = "#ece2d0"
dark_foreground = "#857a6c"
light_foreground = "#d6cab6"
bright_foreground = "#f8f1e4"
red = "#d40000"
yellow = "#fcd116"
orange = "#ff5a1f"
green = "#009246"
cyan = "#3aa0c8"
blue = "#5b7fc7"
magenta = "#c2185b"
brown = "#a0522d"
bright_red = "#ff2800"
bright_yellow = "#ffe45c"
bright_green = "#3cc47c"
bright_cyan = "#6fcbea"
bright_blue = "#8fa9e0"
bright_magenta = "#e8578f"
hyprland_active_border = "rgba(d40000ee) rgba(fcd116ee) 45deg"
@@ -0,0 +1 @@
Yaru-red-dark
@@ -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
@@ -0,0 +1,14 @@
# The Simpsons theme — real wallpapers pulled from the internet (wallhaven.cc),
# palette derived from them.
Backgrounds:
1-springfield-wasteland.jpg Homer & Bart, desert/RV scene (wallhaven 43pr6n,
source: thomasjakeross.deviantart.com, SFW)
2-bart-sunset.jpg Bart mid-air skateboard trick, purple-pink sunset
sky over Springfield (wallhaven 4vm36m)
3-duff-wall.jpg Homer surrounded by a wall of Duff, donuts and
Krusty burgers (wallhaven o4d1m4)
All images fetched via the wallhaven.cc public API, SFW-rated, kept at native
resolution (1920x1200 / 1920x1080). Preview is the wasteland shot plus a
palette swatch strip.
Binary file not shown.

After

Width:  |  Height:  |  Size: 326 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

@@ -0,0 +1,93 @@
# Main background
theme[main_bg]="#1c1712"
# Main text color
theme[main_fg]="#efe6d4"
# Title color for boxes
theme[title]="#ffd12e"
# Highlight color for keyboard shortcuts
theme[hi_fg]="#56b6c2"
# Background color of selected item in processes box
theme[selected_bg]="#3a3148"
# Foreground color of selected item in processes box
theme[selected_fg]="#ffd12e"
# Color of inactive/disabled text
theme[inactive_fg]="#6b6478"
# Color of text appearing on top of graphs
theme[graph_text]="#efe6d4"
# Background color of the percentage meters
theme[meter_bg]="#2a241c"
# Misc colors for processes box
theme[proc_misc]="#efe6d4"
# CPU, Memory, Network, Proc box outline colors
theme[cpu_box]="#6b6478"
theme[mem_box]="#6b6478"
theme[net_box]="#6b6478"
theme[proc_box]="#6b6478"
# Box divider line and small boxes line color
theme[div_line]="#96705a"
# Temperature graph color (Green -> Yellow -> Red)
theme[temp_start]="#6db567"
theme[temp_mid]="#ffd12e"
theme[temp_end]="#e2584a"
# CPU graph colors (Blue -> Cyan -> Magenta)
theme[cpu_start]="#5c8fd6"
theme[cpu_mid]="#56b6c2"
theme[cpu_end]="#c76ba0"
# Mem/Disk free meter (Reversed "Available" colors: Cyan -> Blue -> Purple)
theme[free_start]="#56b6c2"
theme[free_mid]="#5c8fd6"
theme[free_end]="#c76ba0"
# Mem/Disk cached meter
theme[cached_start]="#5c8fd6"
theme[cached_mid]="#56b6c2"
theme[cached_end]="#efe6d4"
# Mem/Disk available meter (Purple -> Blue -> Cyan)
theme[available_start]="#c76ba0"
theme[available_mid]="#5c8fd6"
theme[available_end]="#56b6c2"
# Mem/Disk used meter
theme[used_start]="#e2584a"
theme[used_mid]="#96705a"
theme[used_end]="#6b6478"
# Download graph colors
theme[download_start]="#6db567"
theme[download_mid]="#56b6c2"
theme[download_end]="#efe6d4"
# Upload graph colors
theme[upload_start]="#5c8fd6"
theme[upload_mid]="#56b6c2"
theme[upload_end]="#efe6d4"
# Process box color gradient
theme[process_start]="#56b6c2"
theme[process_mid]="#5c8fd6"
theme[process_end]="#e2584a"
# Graph gradient colors
theme[gradient_color_0]="#1c1712"
theme[gradient_color_1]="#6b6478"
theme[gradient_color_2]="#96705a"
theme[gradient_color_3]="#e2584a"
theme[gradient_color_4]="#6db567"
theme[gradient_color_5]="#5c8fd6"
theme[gradient_color_6]="#56b6c2"
theme[gradient_color_7]="#ffe45e"
@@ -0,0 +1 @@
28,23,18
@@ -0,0 +1,37 @@
# The Simpsons — Springfield sky. Signature cartoon yellow over desert sand
# and blue sky (breaking-bad frame), Bart's sunset sky, and the loud
# Duff-pink of a junk-food wall.
mode = "dark"
accent = "#ffd12e"
selection = "#3a3148"
muted = "#6b6478"
background = "#1c1712"
dark_background = "#14100c"
darker_background = "#0c0a07"
lighter_background = "#2a241c"
foreground = "#efe6d4"
dark_foreground = "#8a8294"
light_foreground = "#d8cfbd"
bright_foreground = "#f8f2e2"
red = "#e2584a"
yellow = "#ffd12e"
orange = "#f2a04e"
green = "#6db567"
cyan = "#56b6c2"
blue = "#5c8fd6"
magenta = "#c76ba0"
brown = "#96705a"
bright_red = "#ff7a6b"
bright_yellow = "#ffe45e"
bright_green = "#8fd48a"
bright_cyan = "#7cd6e0"
bright_blue = "#7fabef"
bright_magenta = "#e291c0"
hyprland_active_border = "rgba(ffd12eee) rgba(56b6c2ee) 45deg"
hyprland_inactive_border = "rgba(3a3148aa)"
@@ -0,0 +1,17 @@
local active_border_color = { colors = { "rgba(ffd12eee)", "rgba(56b6c2ee)" }, angle = 45 }
local inactive_border_color = "rgba(3a3148aa)"
hl.config({
general = {
col = {
active_border = active_border_color,
inactive_border = inactive_border_color,
},
},
group = {
col = {
border_active = active_border_color,
border_inactive = inactive_border_color,
},
},
})
@@ -0,0 +1 @@
Yaru-yellow-dark
@@ -0,0 +1 @@
ffd12e
@@ -0,0 +1,13 @@
return {
{
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
},
{
"LazyVim/LazyVim",
opts = {
colorscheme = "catppuccin-mocha",
},
},
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 450 KiB

@@ -0,0 +1,6 @@
text = "#efe6d4"
placeholder = "#8a8294"
text-error = "#efe6d4"
border = "#efe6d4"
border-active = "#ffd12e"
border-error = "#e2584a"