Arch Greybeards Hall Operating System · aghos@agh.edu.pl · aghos.agh.edu.pl
The main build script that produces the AGHOS bootable ISO image. Runs the following stages in order:
mksquashfs, xorriso, mformat, mmd, mcopy), isohdpfx.bin, and GRUB/EFI filesefiboot.img), copies bootx64.efi, writes a GRUB redirect config, and copies isolinux.bin for BIOS bootxorriso supporting both BIOS (isolinux) and UEFI (EFI partition) bootaghos_liveusb.iso symlink so the HTTP server never sees a broken linkResource limits: at most ⅔ of CPU cores, 2 GB RAM, aborts if CPU temperature exceeds 80 °C.
Reads the vlang= kernel command-line parameter and configures the KDE Plasma session language. Supports: pl_PL, en_US, es_ES, de_DE, fr_FR, zh_CN.
~/.config/plasma-localerc with the selected language and locale~/.config/kxkbrc with the appropriate keyboard layoutLANG, LANGUAGE, and LC_ALL for the sessionIf vlang= is absent or unrecognised, the script exits silently.
A PySide6 welcome screen shown on first login. Displays the AGHOS logo and subtitle. Two buttons:
~/.config/autostart/aghos-welcome.desktop) to prevent reappearing on subsequent logins, then closesFixed 650×450 px, non-resizable, no system title bar buttons.
Populates /etc/skel with the AGHOS default KDE Plasma configuration for all new users. Creates a timestamped backup first, then writes:
| File | Purpose |
|---|---|
| plasma-org.kde.plasma.desktop-appletsrc | Panel layout with WPS Office launchers, no weather widget |
| kdeglobals | Breeze Dark colour scheme, single-click disabled |
| kscreenlockerrc | Lock screen wallpaper |
| autostart-scripts/aghos-first-run.sh | First-run initialisation script |
| autostart/aghos-first-run.desktop | Autostart entry that triggers the first-run script |
A PySide6 GUI installer for WPS Office. Downloads and installs the full WPS Office suite from the AUR via paru.
sudo -S -v, reuses the token for the whole installationparu call, streaming output to the console widget.desktop files with firejail --net=none after installationPackages: ttf-ms-fonts, ttf-wps-fonts, wps-office, MUI language packs for DE, EN-GB, ES, FR-CA, FR-FR, PL, PT.
The main installer launcher. Discovers and runs numbered scripts from scripts/ in sequence using QProcess with sudo -E. Handles language selection (PL/EN/DE/ES/FR), streams stdout/stderr from sub-scripts into the console window, and aborts on any non-zero exit code.
Step 1 — Network configuration.
/sys/class/netnmcli, connects with passwordStep 2 — Disk partitioning and mounting. Two modes:
parted + mkfs.* + mount in a background worker. Sets ESP and swap flags automatically for GPT. Uses lsblk -J for safe NVMe/mmcblk path resolution.Continue button activates only after /mnt is confirmed mounted.
Step 3 — Copies the live system to /mnt using rsync.
/proc/*, /sys/*, /dev/*, /run/*, /tmp/*, /mnt/*, /media/*, /lost+found/*, /home/aghos/*, pacman lock fileStep 4 — System configuration inside the installed system via arch-chroot.
| Task | Details |
|---|---|
| /etc/fstab | Generated from findmnt + blkid UUIDs; includes swapfile if present |
| Timezone | Validated, set via symlink in /usr/share/zoneinfo |
| Locale | Writes locale.gen, runs locale-gen, writes locale.conf |
| Vconsole | KEYMAP and FONT written to /etc/vconsole.conf |
| Branding | Writes os-release, hostname, hosts |
| User creation | useradd -m -G wheel,users; passwords via chpasswd -c SHA512 over stdin |
| Sudoers | /etc/sudoers.d/10-wheel with mode 0440 |
| Remove install user | Deletes the aghos live user from the new system |
| SDDM autologin | Removes autologin.conf |
| Machine ID | Removes machine-id and random-seed for fresh generation on first boot |
Step 5 — Bootloader installation in a background thread.
mkinitcpio.conf with AGHOS-specific MODULES and HOOKS, runs mkinitcpio -Pfindmnt + blkid/etc/default/grub with kernel cmdline, root=UUID=..., os-prober toggle, timeoutgrub-install --target=x86_64-efi --bootloader-id=AGHOS --removablelsblk -J (NVMe/mmcblk safe), grub-install --target=i386-pcgrub-mkconfig and post-processes grub.cfg to fix path bugs and UUID mismatchesUI: kernel parameter checklist (rw, TRIM, loglevel, quiet, etc.) plus free-text field for custom parameters.
Step 6 — Final screen with animated rune terminal and installation summary (hostname, mounted partitions, kernel version, start time).
| Button | Action |
|---|---|
| Reboot now | Confirms, then calls reboot |
| Unmount and stay in Live | Unmounts all partitions under /mnt in a background thread, deepest first, with live status updates |
| Close installer | Waits for any running unmount worker, exits with code 0 |
Runs once on first login for every new user. Uses kdialog for a progress bar. Performs:
Desktop, Documents, Downloads, Media/{Video,Photos,Audio}, tmp/{Public,Templates}~/.config/user-dirs.dirs with XDG pathskwriteconfig6~/.config/mimeapps.list: LibreWolf for web, Thunderbird for mail, VLC for videoqdbus PlasmaShell and kwriteconfig6Per-user WPS Office installer. Differences from the system version:
--sudoflags -A to route sudo prompts through SUDO_ASKPASS (ksshaskpass or zenity)wps-office package fails, skips shortcut creation entirely.desktop shortcuts with firejail --net=none in ~/.local/share/applications/| File | Path | Purpose |
|---|---|---|
| aghos-first-run.desktop | /etc/skel/.config/autostart/ | Triggers aghos-first-run.sh on first KDE login (phase 1, after panel) |
| aghos-welcome.desktop | /etc/skel/.config/autostart/ | Launches the welcome screen (aghos_welcome.py) on first login |
| Install_WPS_Office.desktop | /etc/skel/Desktop/ | Desktop shortcut to manually launch the WPS Office installer |
| install_aghos.desktop | /home/aghos/Desktop/ | Live desktop shortcut to launch the AGHOS installer (runs as root via sudo) |
Identifies the distribution to system tools, desktop environments, and package managers.
NAME="Arch Greybeards Hall Linux" PRETTY_NAME="AGHOS" ID=arch BUILD_ID=rolling ANSI_COLOR="38;2;0;105;60" HOME_URL="https://aghos.agh.edu.pl"
The 4_configure.py installer script rewrites this file in the installed system with AGHOS-specific branding and URLs.