Commit Graph
35 Commits
Author SHA1 Message Date
Marcelo Alcantara 45fb64fedb omarchy-settings-dev: check for the detector copy on aarch64 only
The guard and its detector copy now ship on aarch64 only (#691), so the check that 00-omarchy-hooks.conf has its detector failed every x86_64 build from a source that carries the HOOKS baseline. x86_64 keeps the busybox line without a detector. Same scoping as omarchy-settings in #638.
2026-09-28 13:51:12 +10:00
Marcelo Alcantara 7f77d82c0f omarchy-settings-dev: ship the platform guard on aarch64 only
No platform package is built for x86_64 and pacman refuses another architecture's package there, so x86 transactions gain nothing from the guard. The x86 HOOKS baseline keeps the busybox line without a detector, so the detector copy goes too. omarchy-settings gets the same change in #638.
2026-09-28 13:40:50 +10:00
Marcelo Alcantara 4d6b627a13 Merge remote-tracking branch 'upstream/master' into spark/aarch64-settings-boot-dropins 2026-09-28 07:54:08 +10:00
Marcelo Alcantara caac8448be omarchy-settings: pass #13362's platform-aware hooks through on aarch64
omacom/omarchy#13362 sets HOOKS per platform inside 00-omarchy-hooks.conf,
with no column-0 HOOKS= line, so the aarch64 build failed on it; settings-dev
tracks quattro automatically and would break as soon as it lands. Wrap only a
single-line HOOKS=(...), refuse any other column-0 HOOKS=, then source the
shipped files onto a Mac line and a stock line: the Mac line must come through
unchanged and the stock one must not. Back up 00-omarchy-hooks.conf when it
ships, and refuse it without the omarchy-hw-platform copy it asks.

The test now uses the real v4.0.4 hooks file, #13362's two files and
omarchy-mac-boot's 90-94 fragments, and covers upgrades over a hand-restored
file.
2026-09-28 07:53:14 +10:00
Marcelo Alcantara 919b084b93 Merge remote-tracking branch 'upstream/master' into spark/aarch64-settings-boot-dropins 2026-09-28 07:42:17 +10:00
ryanrhughes 62f3df2378 Track upstream branches: omarchy-dev 4.0.0.r6663.g3faafba, omarchy-settings-dev 4.0.0.r6663.g3faafba 2026-09-27 21:31:46 +00:00
Ryan Hughes 3de5f0af4b Pin the tracked packages to today's upstream tips
The first pins (quattro ee8ebf6, omasnap eb22bfe) date from 2026-09-21.
Edge has since published omarchy-dev from quattro 7b336b1 through a
manual rebuild, so merging the old pin would ship older code under a
higher version. Moved with the tracker's own code:
  bin/sync-upstream --lane auto-merge (BYPASS_MIN_RELEASE_AGE=1)
2026-09-27 12:41:43 -04:00
Ryan Hughes d87686ca4f Track upstream branches as pinned releases on an unattended lane
Since publishing moved to CI on merge, a package whose PKGBUILD never
changes while its source moves was never rebuilt: omarchy-dev and
omarchy-settings-dev followed quattro through "#branch=" and a pkgver()
function, and nothing in this repository changed when quattro did. The
host timers that used to notice are off, so edge fell days behind.

The rule now: no git source without a commit or tag pin
(tests/pinned-sources.sh, run in CI). A package that has to follow a
branch declares a git_branch upstream watch, and the pin moves through
the same PR/build/publish path as every other version bump.

Watch (helpers/upstream-watch.py)
  git_branch gains tag_pattern: the newest release tag in the pinned
  commit's own history, exposed as {tag}/{version}/{distance}, so a
  branch build is versioned <tag>.r<n>.g<sha>, above the release it
  follows and below the next one. One blobless clone per branch per
  run, shared by every package on it. min_release_age selects the
  newest commit older than the window, so a push burst builds once.

Lane (helpers/package-metadata.sh, bin/sync-upstream --lane)
  "auto_merge": true moves a package from the reviewed 6-hourly sync
  PR to the unattended lane. Packages pinned from the same branch move
  together: a failure on one restores the others and fails the group,
  so the dev pair can never ship from two quattro commits.

Tracker (.github/workflows/track-branches.yml)
  Every two hours: pin, open one PR with a GitHub App token, enable
  auto-merge. Branch protection still gates the merge on result,
  self-tests and build-isolation. A tip that fails to build stays an
  open red PR until the next tick supersedes it. The App is required:
  a PR opened with GITHUB_TOKEN has its checks held for approval and
  its auto-merge would not fire publish.yml.

The reviewed workflows (sync-upstream, sync-rebuilds) open their PRs
with the same App so their builds start without a maintainer clicking
"Approve workflows to run"; without the App they fall back to
GITHUB_TOKEN and behave as before.

Recipes
  The dev pair pins _commit and a real sha256sum, keeps the OMARCHY_SRC
  override, and drops pkgver(). Its r-number stays the branch's total
  commit count because the published history used it and pacman must
  never see the version go down. omasnap-git is new: omacom/omasnap
  main, versioned <tag>.r<distance>.g<sha>, provides/conflicts omasnap.
2026-09-27 12:39:53 -04:00
Jim Martin 21f3c4a8c4 omarchy-settings: keep the Mac initramfs hooks on aarch64
Apple Silicon Macs install the aarch64 package too, and an unconditional
HOOKS= line would replace their asahi hooks. Apply Omarchy's HOOKS line only
when the incoming hooks lack asahi, in whichever drop-in carries it, and
rebuild omarchy-settings (4.0.4-3) so existing installs get the fix.
2026-09-27 09:08:49 -05:00
Jim Martin 9d05b3fb06 Merge remote-tracking branch 'upstream/master' into spark/aarch64-settings-boot-dropins 2026-09-26 17:38:24 -05:00
Marcelo Alcantara e841c87036 omarchy-settings-dev: rebuild so the dev pair shares one quattro commit 2026-09-26 11:18:24 +10:00
Marcelo Alcantara fb2ade61fc Give the platform guard its own detector copy instead of moving it
Moving omarchy-hw-platform from omarchy to omarchy-settings loses the file
when the dev pair installs in separate transactions, since omarchy-dev does
not pin omarchy-settings-dev's version. Settings now installs a copy beside
the guard script and omarchy keeps its detector, so no file changes owner.
2026-09-25 20:01:13 +10:00
Marcelo Alcantara 0a65168b09 Move the platform detector to omarchy-settings with the guard
The settings package's platform guard runs omarchy-hw-platform before the
omarchy runtime is installed. omarchy leaves the detector out of its bin/
loop and settings ships it, with the /usr/share/omarchy/bin link the Apple
predicate and the CLI router use, whenever the source has it.
2026-09-25 19:56:22 +10:00
Marcelo Alcantara 00fac82ad3 omarchy-settings: ship the pacman platform guard when the source has it
The guard hook and the script it runs install together from omarchy-settings,
so they are resident before the runtime and hardware packages. Conditional, so
builds from sources without them are unchanged.
2026-09-25 19:23:36 +10:00
Birk Skyum 39722554db Refresh dev settings version and package revision
Record the current quattro-derived version before bumping pkgrel, so makepkg does not discard the revision bump when updating a stale pkgver.
2026-09-16 20:37:43 +02:00
Birk Skyum 6a6e170fe4 Merge current master into ARM settings boot fix
Preserve the v4.0.4 source pin and checksum while retaining the settings package revision bump. Keep Jim Martin’s boot-configuration fix and original commit intact.
2026-09-16 20:30:59 +02:00
David Heinemeier HanssonandClaude Fable 5.1 28da766fba Protect the kyber I/O scheduler udev rule on upgrade (#425)
basecamp/omarchy#11653 added etc/udev/rules.d/60-omarchy-io-scheduler.rules. package() already ships the whole etc/ tree, so the rule lands on new installs with the next build; list it in backup= so pacman keeps a user's local edit of the rule across upgrades, like the other package-owned /etc drop-ins.


Claude-Session: https://claude.ai/code/session_01EqYNBv5cERVom2zox5epyE

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-13 17:58:22 +02:00
Jim Martin ccecdbde56 omarchy-settings: keep the Limine and mkinitcpio drop-ins on aarch64
The aarch64 packages removed etc/mkinitcpio.conf.d and
etc/limine-entry-tool.d wholesale. On an encrypted aarch64 install that boots
with Limine (DGX Spark, Snapdragon X), installing the published package
therefore drops omarchy_hooks.conf, HOOKS falls back to /etc/mkinitcpio.conf,
and the next kernel update builds an initramfs with no encrypt hook: the
machine hangs waiting for /dev/mapper/root with no prompt.

Ship both drop-in directories on aarch64 and remove only
thunderbolt_module.conf, whose module ARM kernels do not have. Keep the
Limine template and the snapper notifier autostart for the same reason. The
memory-stack removals (zram, oomd, zswap, USB autosuspend) are unchanged.
2026-09-09 22:36:53 -05:00
Ryan Hughes 397cf6f527 Package the locate service options 2026-09-06 21:46:40 -04:00
Marcelo Alcantara 4ed5f14629 Build the omarchy package pair for aarch64
The Omarchy payload is architecture-independent, but the package is not.
On x86_64 omarchy pulls the Limine + mkinitcpio hook + Snapper boot stack;
on Apple Silicon the system boots through m1n1 + GRUB from the Asahi
packages on Arch Linux ARM's kernel, so that stack does not apply, and
Wi-Fi on the Broadcom parts needs the iwd backend. The shipped /etc tree
differs too: mkinitcpio reads every file under /etc/mkinitcpio.conf.d/,
so shipping omarchy_hooks.conf on aarch64 injects the Limine hooks into
the Asahi kernel's initramfs, and the zram/zswap/oomd drop-ins and the
zram-tuned vm.* sysctls belong to the x86_64 memory stack.

makepkg only honours depends_<arch> and optdepends_<arch> on
arch-specific packages, so arch=('any') becomes ('x86_64' 'aarch64').
backup=() has no arch-suffixed form, so the x86_64-only entries are
appended under CARCH and each of those paths is removed from the aarch64
package in package(). The x86_64 package keeps exactly the contents it
had; only its filename suffix changes.

The install scriptlet applies the hardened cups-files.conf on every
platform, then on Apple Silicon keeps the Arch Linux ARM system identity
(/etc/os-release stays the distribution's symlink) instead of the
etc-overrides. The -dev pair carries the same change so the pairs stay in
lockstep.
2026-09-02 21:59:45 +10:00
Ryan Hughes 6daa7c90e4 Stage CUPS authorization as settings override (#237) 2026-08-29 02:19:29 -04:00
Ryan Hughes 26bde8fae3 Add channels metadata: membership and build-channel rules for edge/rc/stable
A package's .omarchy/package.json may now pin where it lives with
"channels": [...]. With the key present the package builds in each listed
channel except stable (stable is only fed by promotion); without it, today's
defaults hold (build for edge; fast-ring also builds stable directly).

package_moves_to_channel() is the advance/promote eligibility rule: a member
of the destination channel that is not built there natively.

The release pair (omarchy, omarchy-settings) is edge+rc+stable — edge stays
during the client-migration overlap window and drops later. The dev pair is
pinned to edge only.
2026-08-27 01:10:33 -04:00
David Heinemeier Hansson bbe7beeb2d Install the omarchy-crash-watch user unit
Ships with the crash notifier added in basecamp/omarchy, which offers an AI
diagnosis when a process dumps core.
2026-08-12 13:54:18 +02:00
David Heinemeier HanssonandClaude Fable 5 eb0cce3d5c Ship systemd-oomd app.slice policy in omarchy-settings-dev
Installs the upstream app.slice oomd drop-in so memory pressure kills an
app scope instead of the compositor session, and protects user edits to
etc/systemd/oomd.conf.d/10-omarchy.conf on upgrade.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 22:03:55 -05:00
David Heinemeier HanssonandClaude Opus 5 6d4502f3d7 Own the zram-generator config in omarchy-settings
The settings package now ships /etc/systemd/zram-generator.conf, so it needs
a backup entry to protect user edits across upgrades like every other file it
places in /etc, and an optdepends line pointing at the package that reads it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 10:54:35 -07:00
David Heinemeier HanssonandClaude Opus 5 9921c30b7f Install the fcitx5 input method unit
omarchy moves fcitx5 off Hyprland's fire-and-forget autostart onto a
supervised systemd user service, so ~/.XCompose compose sequences stop
dying silently when it goes away. Ship the unit.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 09:49:57 -07:00
David Heinemeier HanssonandClaude Opus 5 95d1f3c251 Install the Taildrop receive unit
omarchy-tailscale-receive.service was in default/systemd/user/ but never
installed, so `systemctl --user enable` found no unit for it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-26 19:03:23 -07:00
David Heinemeier HanssonandClaude Opus 5 5d92390cd9 Ship the migration notifier as a login-only unit
omarchy renamed omarchy-update-user-notify to omarchy-migrate-notify and
dropped the .path watcher that fired during every package update.

Keep the old service name as a symlink onto the new unit. Existing users hold
an absolute graphical-session.target.wants symlink to the old path, and the
migration that repoints it only runs for users who run an update, which is the
opposite of who the notifier is for. Without the alias their symlink dangles
and they are never told about pending migrations.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-26 14:50:15 -07:00
David Heinemeier HanssonandClaude Opus 5 82c90022b7 Install zram tuning as a vendor drop-in
/etc/systemd/zram-generator.conf collided with the copy archinstall writes on
every ISO install. zram-generator.conf(5) reserves /etc for the local admin and
has vendors ship snippets under /usr/lib/systemd/zram-generator.conf.d/, where
drop-ins outrank the main config file.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LjeyQZsNBxqyYy9z8KaKm7
2026-07-25 14:00:43 -07:00
David Heinemeier HanssonandClaude Opus 5 ebe4f9a71f Seed Tensaku's annotation size state for new users
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 08:44:21 -07:00
David Heinemeier HanssonandClaude Opus 5 6a463b71a6 Back up the logind inhibit-delay drop-in
omarchy ships etc/systemd/logind.conf.d/20-inhibit-delay.conf, which raises
InhibitDelayMaxSec so the pre-suspend lock can finish securing the session
before logind stops honouring its inhibitor and suspends anyway.

package() already installs it along with the rest of the etc tree, so this
changes nothing about whether the file lands. Listing it here is what keeps
pacman from clobbering a user's edit to it on upgrade, matching every other
/etc path this package owns.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 07:12:41 -07:00
Ryan Hughes ba0292e4cb Clarify Snapper packaging ownership 2026-06-21 02:25:11 -04:00
Ryan Hughes acda4cae37 Also build from quattro 2026-06-08 12:06:51 -04:00
Ryan Hughes 7ab6f84f99 Update font config 2026-06-07 14:22:48 -04:00
Ryan Hughes c1aed0d8f1 Squash merge omarchy-4 into master 2026-06-02 22:25:07 -04:00