From 0777b209678b4607cc03e6b982868c770d1c4fa0 Mon Sep 17 00:00:00 2001 From: Ryan Hughes Date: Wed, 20 May 2026 17:47:55 -0400 Subject: [PATCH] Make profile.d prefer /usr/share/omarchy-dev when present MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sets up the shadow-dir pattern that omarchy-dev-link will use: when /usr/share/omarchy-dev exists (as a symlink to a local checkout), $OMARCHY_PATH resolves there instead of /usr/share/omarchy. The PATH prepend then makes the checkout's bin/ override the package's /usr/bin copies. This covers every hot-edit surface that resolves via $OMARCHY_PATH: bin/, default/, shell/, and themes/. Things that don't go through $OMARCHY_PATH (udev rules, systemd drop-ins, /etc-installed configs, plymouth themes, /etc/skel seeds) remain unaffected by dev-link and require omarchy-dev-pkg-test to verify changes — which is also what you'd want before shipping any of those anyway. --- etc/profile.d/omarchy.sh | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/etc/profile.d/omarchy.sh b/etc/profile.d/omarchy.sh index 0af8bf13..01e89366 100644 --- a/etc/profile.d/omarchy.sh +++ b/etc/profile.d/omarchy.sh @@ -1,16 +1,24 @@ -# Default OMARCHY_PATH for non-install shells. install.sh overrides this -# during the install flow to point at the checkout under -# $HOME/.local/share/omarchy when running in script-install (boot.sh) mode. -# omarchy-dev-link (Chunk 4) manages a symlink at /usr/share/omarchy that -# points at a local checkout when active. -export OMARCHY_PATH="${OMARCHY_PATH:-/usr/share/omarchy}" +# Default OMARCHY_PATH for non-install shells. +# +# - install.sh sets OMARCHY_PATH to $HOME/.local/share/omarchy during the +# script-install (boot.sh) flow; that wins because of the :- guards. +# - omarchy-dev-link manages /usr/share/omarchy-dev as a symlink to a local +# checkout. When present, it shadows the package install for everything +# that resolves via $OMARCHY_PATH (bin/, default/, shell/, themes/). +# - Otherwise: the package install at /usr/share/omarchy. +if [ -z "${OMARCHY_PATH:-}" ]; then + if [ -d /usr/share/omarchy-dev ]; then + export OMARCHY_PATH=/usr/share/omarchy-dev + else + export OMARCHY_PATH=/usr/share/omarchy + fi +fi # Prepend $OMARCHY_PATH/bin if it exists. In normal package mode this is a # no-op: bins ship to /usr/bin (already on PATH), and /usr/share/omarchy/bin -# doesn't exist. The case that matters is omarchy-dev-link, which makes -# /usr/share/omarchy a symlink to a local checkout; then this prepend lets -# the checkout's bin/omarchy-* override the /usr/bin copies installed by -# the package. +# doesn't exist. The case that matters is omarchy-dev-link, which exposes the +# checkout's bin/ at /usr/share/omarchy-dev/bin so it can override the +# /usr/bin copies the package installed. case ":$PATH:" in *":$OMARCHY_PATH/bin:"*) ;; *) [ -d "$OMARCHY_PATH/bin" ] && export PATH="$OMARCHY_PATH/bin:$PATH" ;;