You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(config): unify all user choices into one canonical mios.toml dotfile
Single source of user truth across the entire stack
====================================================
Every script in mios.git and mios-bootstrap.git that needs a username,
hostname, base image, AI endpoint, flatpak list, profile features, or
free-form env var now resolves through ONE file with three layers:
/usr/share/mios/mios.toml vendor defaults (this commit -- new)
/etc/mios/mios.toml host overlay (bootstrap-staged)
~/.config/mios/mios.toml per-user overlay (XDG)
The user's editable canonical copy lives at mios-bootstrap.git/mios.toml
(repo root). Higher layers shadow lower layers field-by-field; user-set
fields supersede defaults.
UNIFIED SCHEMA
==============
The two pre-existing schemas (lightweight [user]/[image]/[build] in
~/.config/mios/mios.toml read by userenv.sh, vs. rich [identity]/
[locale]/[auth]/[network]/[ai]/[desktop]/[image]/[bootstrap]/[quadlets]
in profile.toml read by bootstrap install.sh) are folded into ONE
schema -- the rich one. mios.toml now covers all of:
[identity] username, fullname, hostname, shell, groups
[locale] timezone, keyboard_layout, language
[auth] ssh_key_action, password_policy, secrets refs
[network] firewalld_default_zone, allow_ssh/cockpit/libvirt_bridge
[ai] endpoint, model, embed_model, api_key,
enable_ollama/localai, mcp_registry, system_prompt_file
[desktop] session, color_scheme, flatpaks
[image] ref, branch, base, bib, name, tag, local_tag
[bootstrap] mode, mios_repo, bootstrap_repo, install_packages,
reboot_on_finish
[profile] role, features
[quadlets.enable] per-Quadlet first-boot enable flags
[env] free-form KEY = VALUE exported verbatim
NEW VENDOR DEFAULTS: usr/share/mios/mios.toml
=============================================
Byte-identical to mios-bootstrap.git/mios.toml; ships in the image as
the lowest layer. The previous usr/share/mios/profile.toml is left in
place untouched so legacy install paths keep working.
UPGRADED RESOLVER: tools/lib/userenv.sh
=======================================
- Reads three TOML layers via Python tomllib + deep-merge.
- Expanded MIOS_* keymap (39 typed slots) covering every section.field
in the unified schema, plus legacy aliases ([user]/[build]/
[flatpaks].install) so older user files keep resolving.
- Free-form [env] table still exported verbatim.
- Legacy split files (env.toml/images.toml/build.toml/flatpaks.list/
bare 'env') now read only when no mios.toml exists at any layer.
UPDATED ENTRY POINT
===================
- Justfile, install scripts, all entry-point scripts continue to source
tools/lib/userenv.sh; no caller-side changes needed.
DOCUMENTATION
=============
- AGREEMENTS.md gains a new section 8 (single-source-of-user-truth)
documenting the three-layer overlay, the canonical edit path
(mios-bootstrap.git/mios.toml), and the per-user re-init workflow.
0 commit comments