Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
466c2ca14a
|
No files matched your search
@@ -96,6 +96,11 @@ Exceptions are allowed for migration and package-helper scripts where the helper
|
|||||||
- Do not add `aliases` to new menu entries. Aliases are reserved for
|
- Do not add `aliases` to new menu entries. Aliases are reserved for
|
||||||
established alternate names users already type, kept for compatibility.
|
established alternate names users already type, kept for compatibility.
|
||||||
|
|
||||||
|
# Region
|
||||||
|
|
||||||
|
- `/etc/omarchy/region` holds the region the installer derived from the timezone (`cn`); no file means Global. The profile lives in `default/regions/cn/`, its contract in `docs/regions.md`.
|
||||||
|
- `install/config/region.sh` links the `cn` developer mirrors into `/etc` and `/.cargo` and refuses to replace a regular file it did not create.
|
||||||
|
|
||||||
# Config Structure
|
# Config Structure
|
||||||
|
|
||||||
- `config/` - default configs copied to `~/.config/`
|
- `config/` - default configs copied to `~/.config/`
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
[source.crates-io]
|
||||||
|
replace-with = "aliyun"
|
||||||
|
|
||||||
|
[source.aliyun]
|
||||||
|
registry = "sparse+https://mirrors.aliyun.com/crates.io-index/"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
NPM_CONFIG_REGISTRY=https://registry.npmmirror.com
|
||||||
|
PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/
|
||||||
|
UV_DEFAULT_INDEX=https://mirrors.aliyun.com/pypi/simple/
|
||||||
|
GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
|
||||||
|
RUSTUP_DIST_SERVER=https://mirrors.aliyun.com/rustup
|
||||||
|
RUSTUP_UPDATE_ROOT=https://mirrors.aliyun.com/rustup/rustup
|
||||||
|
BUNDLE_MIRROR__ALL=https://mirrors.aliyun.com/rubygems/
|
||||||
|
MAVEN_ARGS=--global-settings /usr/share/omarchy/default/regions/cn/maven-settings.xml
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
:sources:
|
||||||
|
- https://mirrors.aliyun.com/rubygems/
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
<settings>
|
||||||
|
<mirrors>
|
||||||
|
<mirror>
|
||||||
|
<id>aliyun</id>
|
||||||
|
<mirrorOf>central</mirrorOf>
|
||||||
|
<url>https://maven.aliyun.com/repository/public</url>
|
||||||
|
</mirror>
|
||||||
|
</mirrors>
|
||||||
|
</settings>
|
||||||
+5
-1
@@ -34,7 +34,11 @@ For China, the builder installs `archlinuxcn-keyring` using the existing Arch tr
|
|||||||
|
|
||||||
## Scope of the China profile
|
## Scope of the China profile
|
||||||
|
|
||||||
The China profile provides repository defaults only. Language is a separate installer choice, not part of a region: a Chinese speaker outside China keeps global mirrors, and a China install in English still gets the regional ones.
|
The China profile provides repository defaults and developer mirrors. Language is a separate installer choice, not part of a region: a Chinese speaker outside China keeps global mirrors, and a China install in English still gets the regional ones.
|
||||||
|
|
||||||
|
## Developer mirrors
|
||||||
|
|
||||||
|
The `cn` profile also points the common package managers at mirrors inside China: `environment.conf` (npm, PyPI and uv, Go, rustup, Bundler, and Maven through `MAVEN_ARGS`), `cargo.toml` for crates.io, `gemrc` for RubyGems, and `maven-settings.xml`, which Maven reads in place. During installation `install/config/region.sh` links the first three to `/etc/environment.d/90-omarchy-china.conf`, `/.cargo/config.toml` and `/etc/gemrc` when the marker says `cn`. It refuses to replace a regular file it did not create. The environment reaches sessions started after login.
|
||||||
|
|
||||||
## Remaining release validation
|
## Remaining release validation
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
run_logged "$OMARCHY_INSTALL/config/region.sh"
|
||||||
run_logged "$OMARCHY_INSTALL/config/theme-system.sh"
|
run_logged "$OMARCHY_INSTALL/config/theme-system.sh"
|
||||||
run_logged "$OMARCHY_INSTALL/config/browser-policy.sh"
|
run_logged "$OMARCHY_INSTALL/config/browser-policy.sh"
|
||||||
run_logged "$OMARCHY_INSTALL/config/increase-lockout-limit.sh"
|
run_logged "$OMARCHY_INSTALL/config/increase-lockout-limit.sh"
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
cn_links=(
|
||||||
|
"environment.conf /etc/environment.d/90-omarchy-china.conf"
|
||||||
|
"cargo.toml /.cargo/config.toml"
|
||||||
|
"gemrc /etc/gemrc"
|
||||||
|
)
|
||||||
|
|
||||||
|
# The installer writes the marker from the timezone.
|
||||||
|
region=global
|
||||||
|
if [[ -e /etc/omarchy/region ]]; then
|
||||||
|
region=$(</etc/omarchy/region)
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $region in
|
||||||
|
global) ;;
|
||||||
|
cn)
|
||||||
|
for link in "${cn_links[@]}"; do
|
||||||
|
read -r _ target <<<"$link"
|
||||||
|
if [[ -e $target && ! -L $target ]]; then
|
||||||
|
echo "Refusing to replace $target, which Omarchy did not create" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for link in "${cn_links[@]}"; do
|
||||||
|
read -r source target <<<"$link"
|
||||||
|
mkdir -p "${target%/*}"
|
||||||
|
ln -sfn "$OMARCHY_PATH/default/regions/cn/$source" "$target"
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown region: $region" >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
||||||
|
|
||||||
|
test_tmp=$(mktemp -d)
|
||||||
|
trap 'rm -rf "$test_tmp"' EXIT
|
||||||
|
|
||||||
|
region_setup="$test_tmp/region.sh"
|
||||||
|
root="$test_tmp/root"
|
||||||
|
sed -e "s|/etc/|$root/etc/|g" -e "s| /\.cargo/| $root/.cargo/|g" "$ROOT/install/config/region.sh" >"$region_setup"
|
||||||
|
export OMARCHY_PATH="$ROOT"
|
||||||
|
mkdir -p "$root/etc/omarchy"
|
||||||
|
|
||||||
|
bash -e "$region_setup"
|
||||||
|
[[ -z $(find "$root" -type l) ]] || fail "no marker links nothing"
|
||||||
|
pass "no marker installs Global"
|
||||||
|
|
||||||
|
echo cn >"$root/etc/omarchy/region"
|
||||||
|
bash -e "$region_setup"
|
||||||
|
for link in "environment.conf etc/environment.d/90-omarchy-china.conf" "cargo.toml .cargo/config.toml" "gemrc etc/gemrc"; do
|
||||||
|
read -r source target <<<"$link"
|
||||||
|
[[ $(readlink "$root/$target") == "$ROOT/default/regions/cn/$source" ]] || fail "China links /$target to the shipped $source"
|
||||||
|
done
|
||||||
|
bash -e "$region_setup"
|
||||||
|
pass "the cn marker links the developer mirror drop-ins, again without error"
|
||||||
|
|
||||||
|
rm "$root/etc/gemrc"
|
||||||
|
echo ":sources: []" >"$root/etc/gemrc"
|
||||||
|
if output=$(bash -e "$region_setup" 2>&1); then
|
||||||
|
fail "China refuses to replace an admin's /etc/gemrc" "$output"
|
||||||
|
fi
|
||||||
|
[[ $output == "Refusing to replace $root/etc/gemrc, which Omarchy did not create" && $(<"$root/etc/gemrc") == ":sources: []" ]] ||
|
||||||
|
fail "China names the file it refuses to replace and leaves it" "$output"
|
||||||
|
rm "$root/etc/gemrc"
|
||||||
|
pass "region setup never replaces mirror config Omarchy did not create"
|
||||||
|
|
||||||
|
echo mars >"$root/etc/omarchy/region"
|
||||||
|
if output=$(bash -e "$region_setup" 2>&1); then
|
||||||
|
fail "an unknown region fails" "$output"
|
||||||
|
fi
|
||||||
|
[[ $output == "Unknown region: mars" ]] || fail "region setup names the unknown region" "$output"
|
||||||
|
pass "region setup rejects an unknown region"
|
||||||
|
|
||||||
|
grep -qx 'run_logged "$OMARCHY_INSTALL/config/region.sh"' "$ROOT/install/config/all.sh" || fail "the install runs region setup"
|
||||||
|
pass "the install runs region setup"
|
||||||
Reference in new issue
Block a user