From 50a26be6a789ff2524eaec314680078bae609f3d Mon Sep 17 00:00:00 2001 From: Kros Dai Date: Sat, 26 Sep 2026 22:56:12 -0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=9D=20docs(region):=20scope=20the=20cn?= =?UTF-8?q?=20profile=20to=20repositories?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - :memo: frame USTC and ArchLinuxCN as a bridge until an official China mirror exists - :memo: record that language, timezone, and input defaults follow as separate changes Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01K3Jna1ogUUviYLJzhsG6Vr --- docs/regions.md | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/docs/regions.md b/docs/regions.md index 725d6163..2bbf3d59 100644 --- a/docs/regions.md +++ b/docs/regions.md @@ -8,9 +8,9 @@ The ISO installer writes the selected region to `/etc/omarchy/region` before tar `omarchy-apply-pacman [target-root]` restores the selected channel's two pacman templates and appends `default/regions//pacman/{pacman.conf.append,mirrorlist.append}`. Both files are generated before either live file is replaced. Existing files are backed up with `.bak`. Dev uses the edge pacman channel, as before. -Both installation finalization and `omarchy-refresh-pacman` use this command. Explicit refreshes and channel changes restore regional defaults; ordinary updates do not enforce them. The existing `pre-refresh-pacman` user hook runs after regeneration and before the update, so users can maintain overrides there. Switching to the dev channel refuses a checkout that lacks this machine's region profile, because that checkout's own refresh would otherwise drop the regional repositories. Users can edit the files directly or set the region to `global` before a refresh to stop applying regional repository defaults. This does not uninstall packages or rewrite user input-method settings. +Both installation finalization and `omarchy-refresh-pacman` use this command. Explicit refreshes and channel changes restore regional defaults; ordinary updates do not enforce them. The existing `pre-refresh-pacman` user hook runs after regeneration and before the update, so users can maintain overrides there. Switching to the dev channel refuses a checkout that lacks this machine's region profile, because that checkout's own refresh would otherwise drop the regional repositories. Users can edit the files directly or set the region to `global` before a refresh to stop applying regional repository defaults. This does not uninstall packages or rewrite anything in existing home directories. -The China profile keeps the channel's Omarchy Arch mirror first, appends USTC's regular Arch mirror, and adds the USTC ArchLinuxCN community repository. It does not change the `[omarchy]` package repository. USTC is not a stable/RC snapshot replica: missing old packages and newer fallback databases remain compatibility risks. +The China profile keeps the channel's Omarchy Arch mirror first, appends USTC's regular Arch mirror, and adds the USTC ArchLinuxCN community repository. It does not change the `[omarchy]` package repository. USTC's mirror, run by the University of Science and Technology of China, and ArchLinuxCN, a long-standing community repository, are a practical bridge until Omarchy runs its own mirror in China. USTC is not a stable/RC snapshot replica: missing old packages and newer fallback databases remain compatibility risks. ## ISO builder contract @@ -20,24 +20,16 @@ Regional content comes from the same runtime used by the ISO: either the `--loca - `packages`: additional target packages, one name per line, with blank lines and `#` comments allowed. The builder merges these into the ISO's copy of `omarchy-base.packages`, so they are both included in the offline repository and installed on the target. The source manifest is not modified. - `pacman/`: repository fragments used by the runtime finalizer. The builder also adds the community repository to its writable online config to obtain regional packages; it does not change its Arch channel mirrors. -- `skel/`: new-user defaults. Required: a regional build fails without it rather than shipping an ISO that lacks the advertised defaults. The ISO installer overlays these onto target `/etc/skel` after the base settings packages and before user creation, including installations that defer user creation until first boot. It never overlays existing home directories. Region selection does not itself set locale, timezone, or keyboard layout. +- `skel/` (optional): new-user defaults. The ISO installer overlays these onto target `/etc/skel` after the base settings packages and before user creation, including installations that defer user creation until first boot. It never overlays existing home directories. For China, the builder installs `archlinuxcn-keyring` using the existing Arch trust chain before downloading other regional packages. Signature or keyring failures abort the build; no unverified keyserver trust or online signature bypass is added. The keyring is also installed on the target from the offline package set, then initialized and populated before online repositories are enabled. The ISO's existing offline repository verification policy is unchanged. -## Chinese input defaults +## Scope of the China profile -The China profile adds `fcitx5-chinese-addons`. Its `libime` dependency supplies the offline Pinyin dictionary and language model; no cloud service or extra dictionary download is required. Upstream Pinyin defaults to Simplified Chinese with Cloud Pinyin disabled. The base system already includes Fcitx5, GTK/Qt integration, and `omarchy-fcitx5.service`; the region neither starts another daemon nor changes the session environment. - -New users start in direct input. `Alt+Space` toggles Pinyin. `Ctrl+Space` remains available for the shipped tmux and Herdr prefixes; lone Shift and Ctrl+Shift do not switch input methods, and CapsLock remains Compose. Applications may assign their own `Alt+Space` shortcut; users can change the trigger in `~/.config/fcitx5/config`. Selecting `global` later does not remove or reset this personal configuration. - -Fcitx requires a nonempty group layout, so the profile pairs `Default Layout=us` with `keyboard-us`. This is an Fcitx group identifier, not a system keyboard selection: no per-item layout override is set, and the base `fcitx5/conf/xcb.conf` disables overriding system XKB settings. The compositor continues to use the keyboard selected during installation. Non-US layouts still need coverage in the installed Hyprland session. - -Upstream references: [Pinyin registration](https://github.com/fcitx/fcitx5-chinese-addons/blob/master/im/pinyin/pinyin.conf.in), [local dictionary loading](https://github.com/fcitx/fcitx5-chinese-addons/blob/master/im/pinyin/pinyin.cpp), [global hotkey configuration](https://github.com/fcitx/fcitx5/blob/master/src/lib/fcitx/globalconfig.cpp), and [Arch package dependencies](https://archlinux.org/packages/extra/x86_64/fcitx5-chinese-addons/). +The China profile currently provides repository defaults only. System language (Simplified Chinese), timezone (Asia/Shanghai), and input-method defaults are planned as separate changes on top of this mechanism: `packages` and `skel/` carry them into the ISO, and the installer stages `skel/` before any user exists. ## Remaining release validation -Unit tests cover region/channel independence, package-list augmentation, keyring failure handling, pre-user defaults, generated pacman contents, repeat application, refresh hook ordering, and the shipped Pinyin configuration. They do not establish live mirror availability, real package trust, or successful offline installation. Before distribution or a Show & Tell announcement, build from matching local checkouts on an x86_64 builder and run the disposable-VM acceptance workflow in `agents/skills/acceptance-tests.md`. +Unit tests cover region/channel independence, package-list augmentation, keyring failure handling, pre-user defaults, generated pacman contents, repeat application, and refresh ordering; refresh itself is exercised only inside the sudo-boundary sandbox. They do not establish live mirror availability, real package trust, or successful offline installation. Before distribution, build from matching local checkouts on an x86_64 builder and run the disposable-VM acceptance workflow in `agents/skills/acceptance-tests.md`. -The China acceptance run must install without network access, boot to a new user, and type Chinese using physical/VM key events in a terminal, Chromium/Electron, and fullscreen windows. Check candidate-window placement, `Alt+Space` in both directions, tmux/Herdr `Ctrl+Space`, lone Shift, CapsLock Compose, and a non-US keyboard. Also check deferred first-boot user creation and preservation of customized input settings through a channel refresh. An ARM64 Ubuntu/X11 Fcitx smoke test cannot replace these installed-system checks. - -The Omarchy menu is not part of this gate. It handles key presses itself instead of using an input-method-aware text field, so it cannot accept Pinyin composition until upstream [omacom/omarchy#11682](https://github.com/omacom/omarchy/issues/11682) is fixed. +The China acceptance run must install without network access, boot to a new user, including deferred first-boot user creation, and keep the regional mirrors, repository, marker, and keyring trust through `stable`, `rc`, and `edge` refreshes.