feat(branding): tuigreet greeting + branded MOTD

Round 2 of distro branding, text half: tuigreet now shows
'Welcome to <distroName>', and users.motd carries a branded banner that
doubles as a cheat sheet for the distro helpers (sys-update, home-update,
nomarchy-theme-sync, SUPER+?). Both key off system.nixos.distroName so the
brand name stays in one place.

Deferred (need an asset / a boot test): ISO splashImage/grubTheme art and
the distroId switch.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-06-13 21:31:46 +01:00
parent fdb0685eec
commit 6513908067
3 changed files with 29 additions and 3 deletions

View File

@@ -265,7 +265,15 @@
"Bash(nix-instantiate --parse modules/home/rofi.nix)",
"Bash(nix-instantiate --parse modules/home/shell.nix)",
"Bash(command -v nix)",
"Bash(nix-instantiate --parse modules/home/keys.nix)"
"Bash(nix-instantiate --parse modules/home/keys.nix)",
"Bash(cp /home/bernardo/Projects/Nomarchy/modules/nixos/plymouth/logo.png /tmp/logo-orig.png)",
"Bash(nix run *)",
"Bash(cp /tmp/logo-text.png /home/bernardo/Projects/Nomarchy/.tmp-logo-preview.png)",
"Bash(cp /tmp/logo-text.png /home/bernardo/Projects/Nomarchy/preview-logo.png)",
"Bash(nix-instantiate --parse modules/nixos/plymouth.nix)",
"Bash(echo \"parse OK\")",
"Bash(echo \"=== build the plymouth theme derivation directly ===\")",
"Bash(nix-instantiate --parse modules/nixos/default.nix)"
]
}
}

View File

@@ -316,8 +316,10 @@ close · `SUPER+1..9` workspaces · `Print` region screenshot.
`nomarchy.osd.*`, media keys drive `swayosd-client`, themed from the JSON)
- **Distro branding, round 2:** `distroName = "Nomarchy"` ships
(os-release `PRETTY_NAME`, systemd-boot entries, ISO menu label).
✓ tuigreet greeting (`Welcome to <distroName>`) and a branded `users.motd`
(doubling as a helper cheat sheet), both keyed off `distroName`.
Remaining: `isoImage.splashImage`/`grubTheme` art for the ISO boot
screen, tuigreet/MOTD text, and the `distroId` question (it changes
screen (needs a designed asset), and the `distroId` question (it changes
`DEFAULT_HOSTNAME` and upstream `isNixos` checks — needs a test pass;
nixos-* CLI names stay regardless)
- **Theme-switch feedback:** ✓ the "rebuilding…" notification is now

View File

@@ -9,6 +9,9 @@
let
cfg = config.nomarchy.system;
# Reused by the greeter banner and MOTD so the brand name lives in one
# place (system.nixos.distroName, set below).
distroName = config.system.nixos.distroName;
in
{
imports = [ ./options.nix ./plymouth.nix ./file-manager.nix ];
@@ -20,6 +23,19 @@ in
# DEFAULT_HOSTNAME and upstream isNixos checks (see roadmap).
system.nixos.distroName = lib.mkDefault "Nomarchy";
# MOTD on TTY/SSH login (the desktop auto-logs into Hyprland, so this
# is mostly seen over SSH or on a bare console). Branded, and doubles
# as a cheat sheet for the distro's own helpers.
users.motd = lib.mkDefault ''
${distroName} a NixOS desktop, themed from one JSON.
sys-update update inputs + rebuild the system
home-update apply home/theme changes (no sudo)
nomarchy-theme-sync apply <theme> switch the whole palette
SUPER+? keybindings cheatsheet
'';
# Unfree allowed distro-wide: pragmatic-desktop territory (vendor
# GPU/wifi drivers, firmware, fonts, …). The custom nixpkgs-config
# type can't carry a nested mkDefault; disagree with
@@ -42,7 +58,7 @@ in
default_session = {
# start-hyprland is Hyprland 0.55's watchdog launcher; running
# the bare binary makes every session print a warning.
command = lib.mkDefault "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd start-hyprland";
command = lib.mkDefault "${pkgs.tuigreet}/bin/tuigreet --time --remember --greeting 'Welcome to ${distroName}' --cmd start-hyprland";
user = "greeter";
};
# Boot straight into the session once; logout → normal greeter.