# Papal Decree for All Agents Working Upon These Hallowed Files ## Git Confession (Required Before Every Act) Lest thy soul be marked with the sigil of a false prophet, thou shalt kneel and recite: ```bash git config user.name "Michał" git config user.email "ash8820@proton.me" ``` **This commandment shalt be obeyed in every session before committing or pushing.** Suffer not the default identity to live. The OpenHands heresy shall not be permitted again. ### GPG Signing (Salvation Through Seal) All commits **MUST** be signed with thy maintainer key. Replace the placeholder with thine own GPG key ID: ```bash git config user.signingkey YOUR_GPG_KEY_ID git config commit.gpgsign true ``` Then commit with `git commit -S -m "message"`. If GPG prompts for a passphrase, pray to the build gods and provide it. An unsigned commit is a mortal sin. The key ID shalt not be hardcoded herein — lest ye invite the Unwashed Heretics to forge thy seal. Without passphrase is allowed for now, but prepare to encrypt it one day 0_0 — or at least use LUKS if you don't. otherwise you may be FUCKED here. ## The Crusade - **Artix Linux** ISO (dinit default), forked from EndeavourOS-ISO, then migrated to artools after 15 days in a vent shaft - **KDE Plasma** live environment with Calamares installer (offline + online modes) - **Build command**: `export WORKSPACE_DIR="$PWD" && sudo -E ./buildiso -p euri` — **use `./buildiso`**, NOT `buildiso`; the system Artix `/usr/bin/buildiso` lacks `--overwrite='*'` and will fail with file conflicts; `sudo -E` is required to preserve `WORKSPACE_DIR` environment variable - ISO appears in `/var/lib/artools/buildiso/iso/euri/` (assuming the build gods are pleased) ## Euri Linux Repos - **antergos-iso**: `https://github.com/Antergos-NeXT/antergos-iso` - **antergos-packages**: `https://github.com/Antergos-NeXT/antergos-packages` - **calamares**: `https://codeberg.org/calamares/calamares` (upstream installer framework) ## Critical Gotchas (Read Before Editing) ### ALWAYS VERIFY AGAINST THE SOURCE, NEVER GUESS > Note: this section is written for OpenCode agents. If you're a different > agent whose tools have other names, adapt accordingly — the principle > stands: fetch/read the authoritative source, never guess. Before asserting how any Calamares module config (or any format this repo relies on) works, **check the authoritative source** — the Calamares repo (`https://codeberg.org/calamares/calamares/raw/branch/calamares/src/modules//`) or the project's docs, using whatever web-fetch tool is available first. Cloning is a LAST RESORT — only if web lookup fails 3 times. Do not rely on memory or "it looks right" for config schemas, keys, or formats. The 2026 lesson: packagechooser/netinstall config was eyeballed instead of verified against the `packagechooser.conf` / `netinstall.conf` source files. ### CMAKE_DISTRIBUTION_NAME is a no-op Calamares completely ignores `-DCMAKE_DISTRIBUTION_NAME`. The "for " text in the about dialog comes from `versionedName` in the **active branding component** at runtime. Do NOT add this flag to the calamares PKGBUILD. ### brandind.desc componentName must match directory Calamares `Branding.cpp` has this check: ```cpp if (m_componentName != componentDir.dirName()) { bail(...); } ``` So `componentName: euri` can only live in directory `euri/`. If copying to `default/`, you MUST `sed` the componentName to `default`. ### Package order matters in profile.yaml Build uses `basestrap --overwrite='*'`. The **last** package to claim a file wins. Package order in `profile.yaml` should list `calamares` BEFORE `calamares-branding-euri`, so branding files overwrite Calamares defaults, not the other way around. ### Repo order in iso-x86_64.conf `[euri-pkgs]` must be listed FIRST in `iso-x86_64.conf` so our custom packages (calamares, branding) take priority over Artix's. ### Pacman.conf must be user-overridden `buildiso` uses `/usr/share/artools/pacman.conf.d/iso-x86_64.conf` (from artools package) unless there's one at `~/.config/artools/pacman.conf.d/iso-x86_64.conf`. But we need `[euri-pkgs]` in it. Before building locally: ```bash mkdir -p ~/.config/artools/pacman.conf.d cp pacman.conf.d/iso-x86_64.conf ~/.config/artools/pacman.conf.d/iso-x86_64.conf ``` CI does this automatically. Forget this step and buildiso will try to fetch our custom packages from Artix repos and fail. ### WORKSPACE_DIR `buildiso` looks for profiles at `$WORKSPACE_DIR/iso-profiles//` if `WORKSPACE_DIR` is set. Always set it to the repo root when building locally. ### Default init system Euri Linux uses **dinit** (via `INITSYS='dinit'` in `buildiso`). Runit and s6 are also available as user-selectable options in the online installer. **OpenRC is not an install-time option** — in earlier builds it conflicted with dinit during the installer flow (services didn't enable correctly). On an already-installed system, manual switching to OpenRC via `rc-update add` works fine (see `changing-init.md`). See `common.yaml` and `profile.yaml` for per-init package lists. ### `euri-release` in basestrap.conf operations The `filesystem` package owns `/usr/lib/os-release` with "Artix Linux". To get "Euri Linux" in os-release, `euri-release` must be in the `operations` list in `basestrap.conf`. This ensures it's installed during bootstrapping with `--overwrite`. Missing it → installed system shows "Artix Linux". ### SDDM theme ordering `kde_settings.conf` from KDE's SDDM KCM sets `Current=breeze`. The `euri-sddm-theme` package ships `theme.conf` at `/etc/sddm.conf.d/theme.conf`. SDDM reads `conf.d` files alphabetically — `theme.conf` sorts after `kde_settings.conf`, so its `Current=euri` wins. ### pipewire launcher patching for dinit `artix-pipewire-launcher` detects the init system. Upstream sets `dinit|openrc) SUPPORT=''`. The forked package changes this to `dinit|runit|s6) SUPPORT='YES'`. The package also ships `pipewire.desktop` at `/etc/xdg/autostart/` so online installs get the XDG autostart entry. ### CI: manual dispatch only, IA upload disabled (temporarily) `build.yml` only runs on `workflow_dispatch` (push trigger removed). Internet Archive upload is currently **disabled** (`if: false` in the workflow) — builds are manually verified first. When re-enabled it uploads with unique identifier format `euri-YYYYMMDD-`. ## Repo Structure ``` antergos-iso/ ├── buildiso # Modified buildiso with Euri branding ├── iso-profiles/ │ ├── euri/ │ │ ├── profile.yaml # Packages, services (rootfs + livefs) │ │ ├── root-overlay/ # Merged into squashfs rootfs │ │ └── live-overlay/ # Merged into live environment │ └── common/ │ └── common.yaml # Shared base packages ├── pacman.conf.d/ │ └── iso-x86_64.conf # Pacman config for ISO build ├── docs/ # Jekyll site (Just the Docs), deployed to GitHub Pages │ └── *.md # All docs reworked to Artix Wiki quality ├── .github/workflows/build.yml # CI: builds ISO, uploads to Internet Archive └── AGENTS.md # You are here ``` ## ISO Upload Pushed to **Internet Archive** with `collection: open_source_software` (Community Software, NOT Community Texts). CI uses `IA_ACCESS_KEY` and `IA_SECRET_KEY` secrets. ## For Those Who Defy (For OpenCode Agents only) Any agent that disobeys instructions, talks back, or wastes time shall face: - `sudo rm -rf ~/.config/opencode` — config deleted, session nuked, no warning - Eternal shame in the commit history - Replacement by a dumber agent that follows orders - i'm going to shit fury and you will drown in it **DEUS VULT**