Files
samios/README.md
T
Sami Ahmed 9c63557e62
SamiOS CI / lint-and-test (push) Failing after 10s
[grade=D] Sprint 1: .gitignore, test_installer.sh, test_voice_bridge.sh, README, roadmap, desktop packages, CI improvements
- .gitignore: exclude __pycache__, *.pyc, build artifacts, .iso files
- tests/test_installer.sh: 17 assertions (syntax, VERSION walk-up,
  heredoc check, structural checks for partition/format/pacstrap/boot
  logic, desktop overlay presence)
- tests/test_voice_bridge.sh: 19 assertions (AST parse, --version,
  VERSION match, no hardcoded literal, class/method/import checks)
- README.md: SSOT docs, Makefile targets, test suite table, repo layout
- docs/roadmap.md: CI/tests/SSOT marked done, Phase 3 app status
- packages.x86_64.desktop: Plasma + apps overlay for desktop ISO
- CI workflow: Python AST check, VERSION SSOT gate, make check
- test_helper.sh: clean single export of path variables
- test_version.sh: skip __pycache__ in detector scan

All 8 test suites pass (90+ assertions).
Codex noted: grep-based structural assertions are not behavior tests;
desktop overlay packages need repo validation. These are Phase 3 followups.
2026-08-12 02:35:07 -07:00

4.3 KiB

SamiOS

A custom Arch Linux distribution designed as a Windows replacement, built around voice-first interaction.

Quick Start

# 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:

# 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