Skip to content

Development

Michael T. DeGuzis edited this page Mar 10, 2022 · 66 revisions

ChimeraOS Development

About

This page is for holding development documentation and how to get involved

Resources

The main set of repositories can be found here.

  • chimeraos: Primary repository for the operating system.

  • chimera-data: Holds frequently changing data used by chimera (Proton GE lists, game tweaks, game compatibility db); chimera automatically downloads this data at the start of the gaming session through hooks in steamos-compositor-plus. This repo is separated from the chimera repo so we can update the data without rolling new releases of Chimera or ChimeraOS.

  • chimeraos.github.io: Web page content

  • chimera: The ChimeraOS web interface. Formally known as "Steam Buddy".

  • steamos-compositor-plus: A fork of the steamos compositor with some game compatibility fixes

  • install-media: Defines and builds the installation media through GitHub Actions

  • frzr: A deployment and automatic update mechanism for operating systems

Sprint/Kanban Board

The current list of backlog and current task can be found here.

How ChimeraOS Works

  • Installation…​

  • chimera app…​

  • Update mechanism

  • Uses frzr to pull down a compressed image

  • User reboots and the image is put into place

  • Packages and traditional package management system are not used to simplify the user experience and make it as seamless as possible, mimicking a console environment.

  • ChimeraOS boots directly to Steam Big Picture mode with a custom window manager.

ChimeraOS Components

Below is a list of packages/repositories and how they fit together

chimeraos

This repository houses the main underpinnings of how the OS comes together.

  • repos: These are not used anymore, just there in case anyone still has an old version and needs to upgrade. We can probably remove that file.

  • rootfs:

  • …​

frzr

Overview

frzr is the A/B btrfs update system which downloads system images from the ChimeraOS repo. Available channels are unstable, testing, stable. Unstable has completely untested builds directly from GitHub Actions and most poeple should never use it. Testing images have at least been verified to boot, but might contain problems that require manual intervention to recover from. Stable are fully tested images that should be used by everyday users.

  • Compressed image is delivered to user containing the entire basic OS

  • btrfs subvolumes

  • rootfs is read only

  • Additional software

  • Flatpak

  • custom images you can create

  • No usage of pacman (changes are reverted at next update)

File system

The design is split into a physical and user-facing file system design:

filesystem

Physical filesystem

  • / (root)

    • /deployments: Here you’ll find deployments that are downloaded for updates / upgrades.

    • /deployments/gameros_<verzion>: ChimeraOS versions (the entire filesytem for a given version).

  • State volumes: Handle a base state in-between updates

    • /etc: Overlay. Needed to maintain settings (timezone, preferences, and so on)

    • /home: btrfs subvolume

    • /var: btrfs subvolume

User-facing filesystem * Exposed the user * /home and /var mounted * Actual / mounted to /fzr_root for the user (for update machanisms)

Update Mechanism * Update is downloaded into /deployments, extracted into it’s specific /deployments/chimeraos_<version> subfolder * Boot loader is updated to point to this new subvolume (e.g. /deployments/chimeraos_20`) * User reboots at time of their choosing * New state is mounted to the user-facing filesystem side as it was initially upon installation.

Game Compatibility

SteamOS Compositor Plus

  • Forked version of steamcompmgr to work around some issues.

Steam Tweaks

  • Additional features available to bolster game usability with Proton

  • Gamepad support

  • Proton configuration

  • Launch options

  • Patches

Chimera app

  • Formally known as "Steam Buddy".

  • Web frontend

  • Install games (ROMs, Flathub, EPIC Store)

  • System Actions

  • Shortcut management

  • Steam session / system event handling (restart Steam, volume, restart system etc…​)

  • Toggle performance overlay (MangoHUD)

Setting Up a Development System

TODO…​

Contributing

Pull Request

Major Feature work

Collaboration

Most musing and technical chit chat on current/future ongoings takes place on the discord channel: https://discord.gg/e3Crvnew

Clone this wiki locally