# SamiOS A custom Arch Linux distribution designed as a Windows replacement, built around voice-first interaction. ## Quick Start ```bash # Clone git clone https://git.sami/sami7777/samios.git cd samios # Run the full test suite (lint + tests) make check # Build the ISO (requires Arch Linux + archiso) cd packaging/archiso && sudo bash build.sh ``` ## Version Management SamiOS uses a **single-source-of-truth** VERSION system. One file at the repo root controls the version everywhere: ```bash # Change the version across all 7 components (CLI, installer, PKGBUILD, etc.) make version-set NEW=X.Y.Z # Sync the canonical VERSION to the airootfs mirror make version-sync # Print the current version make version ``` No component hardcodes a version literal — they all derive from `./VERSION` via a walk-up lookup pattern. ## Makefile Targets | Target | Description | |--------|-------------| | `make check` | Run shellcheck + full test suite | | `make test` | Run test suite only | | `make lint` | Run shellcheck on all shell scripts | | `make version` | Print the current SamiOS version | | `make version-set NEW=X` | Set VERSION to X (e.g. `X.Y.Z` or `X.Y.Z-prerelease`) | | `make version-sync` | Mirror VERSION to `packaging/archiso/airootfs/etc/samios-version` | ## Test Suite 8 test suites with 85+ assertions covering: | Suite | Coverage | |-------|----------| | `test_version.sh` | SSOT invariant: one VERSION file, no hardcoded literals, all components agree | | `test_installer.sh` | Installer syntax, VERSION resolution, partition/format/pacstrap/bootloader logic | | `test_voice_bridge.sh` | Python AST, version resolution, class/method structure, imports | | `test_samios_cli.sh` | CLI commands, version output, help text | | `test_profiledef.sh` | Arch ISO profile structure and metadata | | `test_packages.sh` | Package list completeness | | `test_pacman_conf.sh` | Pacman configuration sections | | `test_font_policy.sh` | Font exclusion policy (no "7777" fonts) | ## Repository Layout ``` . ├── VERSION # Canonical version (single source of truth) ├── Makefile # Build, test, version management targets ├── .gitea/workflows/ci.yml # CI pipeline (shellcheck + tests) ├── branding/ # Logos, icons, GRUB theme, SDDM theme, wallpapers ├── docs/ # Installation, roadmap, voice architecture docs ├── packaging/ │ ├── archiso/ # Arch ISO profile (profiledef, packages, airootfs) │ │ ├── airootfs/ # Root filesystem overlay │ │ │ ├── etc/ # System config (hostname, hosts, locale, fonts) │ │ │ └── usr/local/bin/ # samios CLI │ │ ├── grub/ # GRUB boot config │ │ └── profiledef.sh # Arch ISO metadata │ ├── packages/ │ │ └── samios-branding/ # PKGBUILD for branding package │ └── scripts/ │ ├── samios-installer.sh # Automated disk installer │ ├── samios-desktop-setup.sh # WSL desktop environment setup │ ├── voice-bridge.py # Voice command bridge (prototype) │ └── samios-voice.service # systemd unit for voice bridge ├── tests/ # Bash test suite (test_helper.sh + test_*.sh) └── .gitignore ``` ## Voice Integration (Phase 4) SamiOS is being developed with voice-first interaction as the north star: - **`voice-bridge.py`** — Prototype bridge connecting SamiType STT to system commands - Supports command mode ("Computer, open Firefox") and dictation mode - Routes to Hermes for complex queries - See `docs/voice-integration-architecture.md` for the full design ## CI/CD Gitea Actions pipeline runs on every push to master: 1. Shellcheck on all shell scripts 2. Python AST validation (voice-bridge.py) 3. VERSION SSOT consistency check (canonical = mirror = PKGBUILD pkgver) 4. Arch ISO profile structure validation 5. Full test suite (`make check`) ## Branding - **Logo:** Cobalt blue pyramid (#1424CE) with face - **Fonts:** Sami Grotesk (primary), Sami Sans (secondary) — excludes "7777" branding fonts - **Boot:** Custom GRUB theme with SamiOS colors - **Login:** SDDM theme with cobalt blue pyramid wallpaper ## License GPL3