Files
omarchy-setup/profiles/machines/coder-desktop/setup.sh
T
noconnorandClaude Opus 5.5 87a31858fd 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
2026-10-16 16:01:54 -04:00

43 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# coder-desktop setup, run by install.sh's `setup` step after the files are in
# place. Everything here is state outside ~/.config. Idempotent; honours
# OMARCHY_SETUP_DRY=1.
set -uo pipefail
run() { if [[ ${OMARCHY_SETUP_DRY:-0} == 1 ]]; then echo " ? would: $*"; else "$@"; fi; }
state=$HOME/.local/state/omarchy-setup
export OMARCHY_PATH=${OMARCHY_PATH:-/usr/share/omarchy}
# No idle lock or screensaver: Omarchy's stay-awake mode. The desktop user has
# no password (the image locks it), so a locked screen could never be unlocked,
# and an idle lock would darken the stream. The image build checks for this.
marker=$HOME/.local/state/omarchy/indicators/stay-awake
if [[ -e $marker ]]; then
echo " = stay-awake"
else
run mkdir -p "${marker%/*}" && run touch "$marker" && echo " + stay-awake"
fi
# Reduced motion, so Chromium reports prefers-reduced-motion and pages that
# honour it stop animating (see layers/80-coder-desktop.lua for why). No
# session during the image build, hence dbus-run-session.
if command -v gsettings >/dev/null; then
gs=(gsettings); [[ -n ${DBUS_SESSION_BUS_ADDRESS:-} ]] || gs=(dbus-run-session -- gsettings)
if [[ $("${gs[@]}" get org.gnome.desktop.interface enable-animations 2>/dev/null) == false ]]; then
echo " = gtk animations off"
else
run "${gs[@]}" set org.gnome.desktop.interface enable-animations false && echo " + gtk animations off"
fi
fi
# Default theme: Omarchy's Retro 82. Only on the first apply, because install.sh
# also runs at every workspace start (for the roles parameter) and must not undo
# a theme the developer picked. The image also installs the Covert Cloud themes
# for anyone who chooses them.
if [[ -e $state/coder-desktop-theme ]]; then
echo " = default theme already set once (left alone)"
else
run env OMARCHY_THEME_HEADLESS=1 "$OMARCHY_PATH/bin/omarchy-theme-set" "Retro 82" \
&& run mkdir -p "$state" && run touch "$state/coder-desktop-theme" && echo " + theme: Retro 82"
fi