Skip to content

Commit bc1c9a5

Browse files
Kabuki94claude
andcommitted
feat(toml): lift theming + functionality knobs to mios.toml SSOT
mios.toml is THE global dotfile (per feedback_mios_toml_html_global_ dotfile memory). Every consumer -- Windows scripts, dev VM bash, build pipeline, runtime services, dashboards -- sources from the layered overlay (~/.config > /etc > /usr/share). The HTML configurator edits this file; everything downstream reads it. Added sections (with vendor defaults that match current behavior): - [bootstrap.host_storage] -- M:\ partition spec drive_letter, volume_label, shrink_mb, display_size_gb, filesystem, allocation_unit. shrink_mb DEFAULT IS 262656 (NOT 262144) so the NTFS volume rounds to "256 GB" in Windows Explorer instead of "255 GB" (NTFS reserves ~16 MB for boot sector / alignment / $MFT extents, dropping bare-256-GiB Capacity below the rounding boundary -- captured in feedback_mios_m_drive_visible_size memory). - [bootstrap.dev_vm] -- podman-MiOS-DEV machine spec machine_name, base_image (locked at quay.io/podman/machine-os:6.0+), cpus, memory_mb, disk_size_gb. - [terminal] -- canonical 80x40 dims + 9000-row scrollback. Every spawned shell (wt, conhost fallback, wsl into MiOS-DEV, the elevated bootstrap window, the launcher) opens at this size. - [theme] -- mode, acrylic, opacity, cursor_shape. - [theme.font] -- family, size, weight, url, cell metrics for window pixel sizing. - [theme.terminal] -- WT scheme + profile names. - [theme.prompt] -- oh-my-posh path + segment glyphs. - [branding] + [branding.dashboard] -- logo paths, frame chars, fastfetch config selection. - [apps] + [apps.shortcuts] -- AumID, Start Menu folder, per-verb shortcut display labels + dispatcher args. - [preflight] -- min Windows build, disk free, RAM, virt requirement. - [network.retry] -- transient-error retry schedule (replaces the @(0,5,15,30) hardcoded everywhere). Also bumped [bootstrap].mios_repo to MiOS.git (case-corrected; was already done in build-mios.ps1 + globals but the toml still had the lowercase form) and added [bootstrap].branch. Vendor defaults are sufficient -- the stack works with no user toml present (per feedback_mios_defaults_baseline). Each new key in this commit has a default that matches the prior hardcoded value so this lift is behavior-neutral except where intentionally fixed (the M:\ shrink size). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 8d44942 commit bc1c9a5

1 file changed

Lines changed: 147 additions & 1 deletion

File tree

usr/share/mios/mios.toml

Lines changed: 147 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1245,11 +1245,157 @@ ansi_15_bright_white = "#FFFFFF" # pure white
12451245
# ----------------------------------------------------------------------------
12461246
[bootstrap]
12471247
mode = "auto"
1248-
mios_repo = "https://github.com/mios-dev/mios.git"
1248+
mios_repo = "https://github.com/mios-dev/MiOS.git"
12491249
bootstrap_repo = "https://github.com/mios-dev/mios-bootstrap.git"
1250+
branch = "main"
12501251
install_packages = true # run dnf install on PACKAGES.md after FHS overlay
12511252
reboot_on_finish = true # interactive y/N prompt at end of install
12521253

1254+
# ----------------------------------------------------------------------------
1255+
# [bootstrap.host_storage] -- Windows-side dedicated data partition.
1256+
# Get-MiOS.ps1's Initialize-MiosDataDisk shrinks C:\ by `shrink_mb` and
1257+
# creates a partition labeled `volume_label` at drive `drive_letter`.
1258+
# ALL MiOS install paths redirect onto this disk (M:\MiOS, M:\etc\mios,
1259+
# M:\podman\machine, M:\MiOS\repo\mios + mios-bootstrap, BIB output).
1260+
#
1261+
# Why shrink_mb = 262656 (not 262144)?
1262+
# 262144 MB = 256 GiB exactly, but NTFS reserves ~16 MB at the start
1263+
# for boot sector + alignment + initial $MFT extents. The resulting
1264+
# "Capacity" in Windows Explorer falls 16-32 MB shy of the boundary,
1265+
# rounding DOWN to "255 GB". 262656 MB (= 256 GiB + 512 MB buffer)
1266+
# guarantees Explorer shows "256 GB".
1267+
# ----------------------------------------------------------------------------
1268+
[bootstrap.host_storage]
1269+
drive_letter = "M"
1270+
volume_label = "MIOS-DEV"
1271+
shrink_mb = 262656 # produces "256 GB" in Windows Explorer
1272+
display_size_gb = 256 # what the operator should see (informational)
1273+
filesystem = "NTFS"
1274+
allocation_unit = 4096 # NTFS default cluster size
1275+
1276+
# ----------------------------------------------------------------------------
1277+
# [bootstrap.dev_vm] -- podman-MiOS-DEV machine specifics. The VM that
1278+
# IS the builder (per feedback_mios_dev_is_the_builder memory).
1279+
# ----------------------------------------------------------------------------
1280+
[bootstrap.dev_vm]
1281+
machine_name = "MiOS-DEV" # podman derives "podman-MiOS-DEV"
1282+
base_image = "quay.io/podman/machine-os:6.0" # LOCKED base
1283+
cpus = 4
1284+
memory_mb = 8192
1285+
disk_size_gb = 100
1286+
1287+
# ----------------------------------------------------------------------------
1288+
# [terminal] -- canonical MiOS terminal dimensions. EVERY spawned shell
1289+
# (wt.exe new-tab, conhost fallback, wsl.exe into MiOS-DEV, the
1290+
# auto-elevated bootstrap window, the native-app launcher) opens at
1291+
# exactly cols × rows so the dashboard's 80-col frame renders cleanly.
1292+
# Per memory feedback_mios_terminal_dimensions.
1293+
# ----------------------------------------------------------------------------
1294+
[terminal]
1295+
cols = 80
1296+
rows = 40
1297+
scrollback_rows = 9000
1298+
1299+
# ----------------------------------------------------------------------------
1300+
# [theme] -- visual styling tokens. The [colors] table above defines
1301+
# the palette; this section names the typography, opacity, prompt,
1302+
# and per-host theme switches that consumers (WT settings.json patcher,
1303+
# oh-my-posh renderer, GTK/Adwaita, KDE Plasma) read.
1304+
# ----------------------------------------------------------------------------
1305+
[theme]
1306+
mode = "dark" # "dark" | "light" (rare; vendor=dark)
1307+
acrylic = true # WT background acrylic ON
1308+
opacity = 0.85 # 0.0 transparent .. 1.0 opaque
1309+
cursor_shape = "filledBox" # WT cursorShape
1310+
1311+
[theme.font]
1312+
family = "GeistMono Nerd Font Mono"
1313+
size = 12
1314+
weight = "normal"
1315+
url = "https://github.com/ryanoasis/nerd-fonts/releases/latest/download/GeistMono.zip"
1316+
# Cell metrics at 100% DPI (used to compute window pixel size for
1317+
# centering): cell_w * cols + chrome_w, cell_h * rows + chrome_h.
1318+
cell_w_px = 10
1319+
cell_h_px = 20
1320+
chrome_w_px = 20
1321+
chrome_h_px = 12
1322+
1323+
[theme.terminal]
1324+
# Windows Terminal "MiOS" scheme name -- the WT settings.json patcher
1325+
# stamps a scheme block whose colors come from the [colors] table above.
1326+
scheme_name = "MiOS"
1327+
profile_name = "MiOS"
1328+
dev_profile_name = "MiOS-DEV"
1329+
1330+
[theme.prompt]
1331+
# oh-my-posh renderer config. The mios.omp.json on disk is the source
1332+
# of truth for segment shapes; this table sets the "knobs" the
1333+
# configurator surfaces to operators (palette, separators, segments).
1334+
omp_path = "/usr/share/mios/oh-my-posh/mios.omp.json"
1335+
separator = "" # PowerLine right separator
1336+
prompt_symbol = "" #
1337+
prompt_symbol_root = "" #
1338+
1339+
# ----------------------------------------------------------------------------
1340+
# [branding] -- assets the dashboard / fastfetch / splash screens use.
1341+
# Paths resolve relative to /usr/share/mios on Linux and to the
1342+
# corresponding M:\MiOS\usr\share\mios on Windows.
1343+
# ----------------------------------------------------------------------------
1344+
[branding]
1345+
logo_ascii = "fastfetch/mios.txt"
1346+
logo_image = "branding/mios-logo.png"
1347+
icon_ico = "branding/mios.ico"
1348+
fastfetch_config = "fastfetch/config.jsonc"
1349+
1350+
[branding.dashboard]
1351+
frame_width_cols = 80
1352+
frame_chars = "╭─╮│╰╯" # WT-only Unicode box-drawing
1353+
frame_color = "blue" # ANSI name resolves through [colors]
1354+
show_fastfetch = true
1355+
show_logo = true
1356+
1357+
# ----------------------------------------------------------------------------
1358+
# [apps] -- Windows native-app surface. Get-MiOS.ps1's
1359+
# Install-MiOSNativeApp creates Start Menu + Desktop shortcuts using
1360+
# these names + the AumID below.
1361+
# ----------------------------------------------------------------------------
1362+
[apps]
1363+
aumid = "MiOS.Workstation"
1364+
start_menu_folder = "MiOS"
1365+
hub_shortcut_name = "MiOS"
1366+
1367+
[apps.shortcuts]
1368+
# Each verb gets its own .lnk under Start Menu/MiOS/. Keys are the
1369+
# verb names; values are the display label + arg passed to `mios <verb>`.
1370+
mios_dev = { label = "MiOS-DEV", verb = "dev" }
1371+
mios_build = { label = "MiOS Build", verb = "build" }
1372+
mios_dashboard = { label = "MiOS Dashboard", verb = "dash" }
1373+
mios_configurator = { label = "MiOS Configurator", verb = "config" }
1374+
mios_update = { label = "MiOS Update", verb = "update" }
1375+
mios_pull = { label = "MiOS Pull", verb = "pull" }
1376+
1377+
# ----------------------------------------------------------------------------
1378+
# [preflight] -- minimum host requirements. Get-MiOS.ps1 checks these
1379+
# before starting the install; a violation aborts with a clear message
1380+
# pointing at which knob the operator can lower (e.g. via mios.html).
1381+
# ----------------------------------------------------------------------------
1382+
[preflight]
1383+
min_windows_build = 22000 # Windows 11 21H2 minimum
1384+
min_disk_free_gb = 280 # 256 GB partition + headroom
1385+
min_ram_gb = 8
1386+
require_virt = true # Hyper-V + WSL2 require virtualization
1387+
require_admin = true # auto-elevation handles this; check is informational
1388+
1389+
# ----------------------------------------------------------------------------
1390+
# [network.retry] -- transient-error retry schedules (seconds). Used by
1391+
# anywhere we hit upstream services (quay.io image pulls, GitHub raw
1392+
# fetches, winget repository sync, dnf metadata refresh).
1393+
# ----------------------------------------------------------------------------
1394+
[network.retry]
1395+
delays_seconds = [0, 5, 15, 30] # 4 attempts: immediate, 5s, 15s, 30s
1396+
http_status_retry = [502, 503, 504] # only these status codes trigger retry
1397+
total_timeout_sec = 120
1398+
12531399
# ----------------------------------------------------------------------------
12541400
# [profile] -- developer-vs-server-vs-kiosk flavor and feature toggles.
12551401
# Maps to MIOS_PROFILE_ROLE, MIOS_PROFILE_FEATURES (comma-joined).

0 commit comments

Comments
 (0)