All checks were successful
Check / eval (push) Successful in 3m22s
BACKLOG #103. Bernardo, live ISO 2026-07-14: still no browser, no office — "that makes a live iso useful". He is right, and it is the thing a user judges the distro by before installing, and what they boot to rescue a machine that won't start. It could do neither. The live HM user now names its own set: chromium, libreoffice-fresh, gnome-text-editor, amberol, snapshot. Firefox deliberately excluded (Bernardo's call): chromium already owns the HTTP mime default and ships in the installed template, so it is the browser that matches what a user gets post-install. I asked him to choose on a "~+2 GB" premise. The premise was wrong, and measuring rather than assuming is what corrected it: system.extraDependencies ALREADY pins the template's HM closure into the ISO for offline installs, so chromium/libreoffice/amberol were already in the image's store — merely absent from the live user's profile, so nothing put them on PATH or in the launcher. The live and template chromium resolve to the SAME store path, verified, so reusing the template's exact `chromium.override { enableWideVine = true; }` costs zero; a plain `chromium` would have been a second 2.5 GiB closure. Only gnome-text-editor and snapshot are new: 9 paths, 133 MiB uncompressed. His Firefox call still held for the right reason — it was the one item genuinely unpinned. V2. Measured ISO delta, both built from the same tree — the item's pass condition: 8.038 → 8.078 GiB = +41.2 MiB (+0.50%). New checks.live-baseline-apps asserts each app is on PATH *and* has a .desktop the launcher can see (a binary without one is invisible, which is the failure that matters), that HTTPS resolves to a chromium entry actually PRESENT (#94's exact trap — a mime default naming a package nothing ships), and that firefox has not crept back, since that is a size decision not a drive-by. The guard was proved to fail: dropping snapshot makes it name the missing entry. flake check, live-install-entry, option-docs, template-sot green. V3 pending: that the apps LAUNCH needs hardware — queued on the Acer M5-481T, from the launcher only, since that is the claim a file-level check cannot make. Also filed, from measuring the 8 GiB rather than speculating about it: * #120 (NEXT, Bernardo's call) — a netinstall ISO beside the offline one. Starts from numbers: the offline pin is only 4.02 of 18.03 GiB uncompressed (~22%), so dropping it still leaves a 14 GiB desktop (~6.3 GiB compressed). "No pin" is not the lighter ISO; and without a binary cache for Nomarchy's own outputs a netinstall trades a download for a from-source install. * #121 — the Widevine wrapper drags a SECOND 687 MiB unwrapped chromium in for its share/applications alone. Pre-existing, on every installed machine. * #119 — text/plain names vscode, which the live ISO never ships. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
65 lines
2.8 KiB
Nix
65 lines
2.8 KiB
Nix
# Default applications (xdg mimeapps.list) — without this, "open a
|
|
# PDF/photo" falls to whatever GTK guesses first (GIMP for images).
|
|
# Every association is mkDefault AND degrades gracefully by design: an
|
|
# entry whose .desktop file isn't installed is skipped by GIO/xdg-open,
|
|
# which then falls through to whatever else claims the type — so
|
|
# deleting an app from the template suite (or never uncommenting the
|
|
# browser) leaves no broken "open" behaviour, just the old guessing.
|
|
{ config, lib, ... }:
|
|
|
|
lib.mkIf config.nomarchy.mime.enable {
|
|
xdg.mimeApps = {
|
|
enable = lib.mkDefault true;
|
|
defaultApplications = lib.mapAttrs (_: v: lib.mkDefault v) {
|
|
"application/pdf" = "org.pwmt.zathura.desktop";
|
|
|
|
"image/png" = "imv.desktop";
|
|
"image/jpeg" = "imv.desktop";
|
|
"image/gif" = "imv.desktop";
|
|
"image/webp" = "imv.desktop";
|
|
"image/avif" = "imv.desktop";
|
|
"image/bmp" = "imv.desktop";
|
|
"image/tiff" = "imv.desktop";
|
|
"image/svg+xml" = "imv.desktop";
|
|
|
|
# Video → mpv (the template's media player).
|
|
"video/mp4" = "mpv.desktop";
|
|
"video/webm" = "mpv.desktop";
|
|
"video/x-matroska" = "mpv.desktop";
|
|
"video/quicktime" = "mpv.desktop";
|
|
|
|
# Audio → Amberol (the template's GTK4 music player). Amberol
|
|
# registers these types itself, so this only sets the preference over
|
|
# mpv, which also claims them. Both x- and canonical names because
|
|
# files report either. Degrades to mpv/whatever if Amberol is dropped.
|
|
"audio/mpeg" = "io.bassi.Amberol.desktop";
|
|
"audio/flac" = "io.bassi.Amberol.desktop";
|
|
"audio/x-flac" = "io.bassi.Amberol.desktop";
|
|
"audio/ogg" = "io.bassi.Amberol.desktop";
|
|
"audio/x-vorbis+ogg" = "io.bassi.Amberol.desktop";
|
|
"audio/opus" = "io.bassi.Amberol.desktop";
|
|
"audio/wav" = "io.bassi.Amberol.desktop";
|
|
"audio/x-wav" = "io.bassi.Amberol.desktop";
|
|
"audio/mp4" = "io.bassi.Amberol.desktop";
|
|
"audio/x-m4a" = "io.bassi.Amberol.desktop";
|
|
"audio/aac" = "io.bassi.Amberol.desktop";
|
|
|
|
# The template's active editor; degrades if you drop vscode.
|
|
"text/plain" = "code.desktop";
|
|
|
|
# The system-side Thunar (nomarchy.system.fileManager).
|
|
"inode/directory" = "thunar.desktop";
|
|
|
|
# Template ships chromium (chromium-browser.desktop), and since #103
|
|
# so does the live ISO — an entry naming a package nothing installs is
|
|
# silently skipped by GIO, which is exactly how the live session ended
|
|
# up with no default browser at all (#94). Delete the package and the
|
|
# entry goes quiet again; install another browser and/or override these
|
|
# keys to retarget.
|
|
"text/html" = "chromium-browser.desktop";
|
|
"x-scheme-handler/http" = "chromium-browser.desktop";
|
|
"x-scheme-handler/https" = "chromium-browser.desktop";
|
|
};
|
|
};
|
|
}
|