feat(branding): fastfetch logo + Nomarchy.ttf glyph in the Waybar button

Two branding follow-ups, using the vendored legacy assets:

- fastfetch (modules/home/fastfetch.nix, nomarchy.fastfetch.enable): the
  vector logo recolored to the palette accent and rendered to compact
  block-art via chafa at build time (so it tracks the theme), fronting a
  curated module list. Replaces the oversized legacy ASCII.
- Waybar logo glyph: vendor Nomarchy.ttf (modules/nixos/branding/),
  install it via fonts.packages, and switch the summer-day/night menu
  buttons to its U+F000 mark with `font-family: Nomarchy` pinned in CSS
  (Nerd Fonts also occupy U+F000, so the pin is required). Glyph stored as
  the  JSON escape for robustness.

Also log a roadmap item for a quality-of-life alias collection.

Verified: font family resolves as "Nomarchy" and the ttf maps U+F000;
both summer jsonc parse; chafa logo builds headless; nix flake check passes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-06-13 22:07:28 +01:00
parent 4017b6cff6
commit 69f7ae9051
11 changed files with 87 additions and 13 deletions

View File

@@ -277,7 +277,8 @@
"Bash(cp /nix/store/f18ij42lmpg07fn1m29aplayakx7kqpz-splash-test.png/* preview-splash-built.png)", "Bash(cp /nix/store/f18ij42lmpg07fn1m29aplayakx7kqpz-splash-test.png/* preview-splash-built.png)",
"Bash(cp /nix/store/f18ij42lmpg07fn1m29aplayakx7kqpz-splash-test.png preview-splash-built.png)", "Bash(cp /nix/store/f18ij42lmpg07fn1m29aplayakx7kqpz-splash-test.png preview-splash-built.png)",
"Bash(nix-instantiate --parse hosts/live.nix)", "Bash(nix-instantiate --parse hosts/live.nix)",
"Bash(nix-instantiate --parse modules/home/stylix.nix)" "Bash(nix-instantiate --parse modules/home/stylix.nix)",
"Bash(nix-shell -p fontconfig --run \"fc-scan --format '%{family}\\\\n' modules/nixos/branding/Nomarchy.ttf\")"
] ]
} }
} }

View File

@@ -325,16 +325,20 @@ close · `SUPER+1..9` workspaces · `Print` region screenshot.
(needs a full grub theme dir), and the `distroId` question (it changes (needs a full grub theme dir), and the `distroId` question (it changes
`DEFAULT_HOSTNAME` and upstream `isNixos` checks — needs a test pass; `DEFAULT_HOSTNAME` and upstream `isNixos` checks — needs a test pass;
nixos-* CLI names stay regardless) nixos-* CLI names stay regardless)
- **fastfetch branding:** legacy ships an ASCII-art logo - **fastfetch branding:** `modules/home/fastfetch.nix`
(`core/branding/logo.txt` on the legacy branch) intended as the fastfetch (`nomarchy.fastfetch.enable`) — the vendored vector logo, recolored to
image. Vendor it, resize to a sensible terminal width, and color it from the palette accent and rendered to compact block-art via chafa at build
the palette (accent), then wire a `fastfetch` config that uses it. (No time (tracks the theme), fronting a curated module list. Replaces the
fastfetch config in v1 yet.) oversized legacy ASCII with a themed, sized logo.
- **Nomarchy logo font in Waybar:** legacy's `core/branding/Nomarchy.ttf` - **Nomarchy logo font in Waybar:** vendored `Nomarchy.ttf`
is a glyph font whose logo codepoint was used as the Waybar main-menu (`modules/nixos/branding/`), installed via `fonts.packages`, and the
button (e.g. the summer-night bar). Vendor the font, install it, and set summer-day/night menu buttons now use its `U+F000` glyph with
the `custom/nomarchy` button's `format` to that glyph (currently `󱄅`, a `font-family: Nomarchy` pinned in their CSS (Nerd Fonts also occupy
Nerd Font icon) so the button shows the real Nomarchy mark. U+F000, so the pin is required). The other themes have no logo button.
- **Quality-of-life command aliases:** assemble a curated collection of
shell aliases/abbreviations for common operations (git, nix, navigation,
the nomarchy helpers, …), themed into the zsh shell experience
(`modules/home/shell.nix`). Decide scope and which to ship on by default.
- **Theme-switch feedback:** ✓ the "rebuilding…" notification is now - **Theme-switch feedback:** ✓ the "rebuilding…" notification is now
persistent (timeout 0) and replaced in place by "applied ✓" / failure persistent (timeout 0) and replaced in place by "applied ✓" / failure
via a synchronous tag, so a multi-minute switch never reads as a failed via a synchronous tag, so a multi-minute switch never reads as a failed

View File

@@ -19,6 +19,7 @@
./osd.nix # swayosd volume/brightness OSD, themed ./osd.nix # swayosd volume/brightness OSD, themed
./shell.nix # zsh + starship + bat/eza/zoxide, themed ./shell.nix # zsh + starship + bat/eza/zoxide, themed
./keys.nix # gpg-agent (fronts SSH) + pinentry-qt ./keys.nix # gpg-agent (fronts SSH) + pinentry-qt
./fastfetch.nix # system info with the themed Nomarchy logo
]; ];
# Clipboard history (wl-paste watcher); browsed via the SUPER+CTRL+V # Clipboard history (wl-paste watcher); browsed via the SUPER+CTRL+V

View File

@@ -0,0 +1,50 @@
# fastfetch — system summary fronted by the Nomarchy monogram. The logo is
# rendered from the vendored vector mark (modules/nixos/branding/logo.svg)
# via chafa at build time, recolored to the palette accent — so it's a
# compact, themed block-art logo that tracks the theme on each
# home-manager switch (rather than the oversized legacy ASCII).
{ config, lib, pkgs, ... }:
let
cfg = config.nomarchy;
c = cfg.theme.colors;
logo = pkgs.runCommand "nomarchy-fastfetch-logo"
{ nativeBuildInputs = [ pkgs.imagemagick pkgs.librsvg pkgs.chafa ]; } ''
rsvg-convert -w 220 ${../nixos/branding/logo.svg} > logo.png
magick logo.png -fill "${c.accent}" -colorize 100 logo-c.png
chafa --format symbols --symbols block --size 20x10 --colors full --polite on logo-c.png > $out
'';
in
{
config = lib.mkIf cfg.fastfetch.enable {
programs.fastfetch = {
enable = true;
settings = {
logo = {
type = "file-raw";
source = "${logo}";
padding = { top = 1; left = 2; right = 3; };
};
display.separator = " ";
modules = [
"break"
{ type = "os"; key = "distro"; keyColor = "blue"; }
{ type = "kernel"; key = "kernel"; keyColor = "blue"; }
{ type = "uptime"; key = "uptime"; keyColor = "blue"; }
{ type = "packages"; key = "pkgs"; keyColor = "blue"; }
{ type = "wm"; key = "wm"; keyColor = "blue"; }
{ type = "shell"; key = "shell"; keyColor = "blue"; }
{ type = "terminal"; key = "term"; keyColor = "blue"; }
"break"
{ type = "cpu"; key = "cpu"; keyColor = "magenta"; }
{ type = "gpu"; key = "gpu"; keyColor = "magenta"; }
{ type = "memory"; key = "memory"; keyColor = "magenta"; }
{ type = "disk"; key = "disk"; keyColor = "magenta"; }
"break"
{ type = "colors"; symbol = "circle"; }
];
};
};
};
}

View File

@@ -70,6 +70,7 @@
osd.enable = lib.mkEnableOption "swayosd on-screen display for volume/brightness/mute" // { default = true; }; osd.enable = lib.mkEnableOption "swayosd on-screen display for volume/brightness/mute" // { default = true; };
shell.enable = lib.mkEnableOption "the zsh shell experience (starship prompt, bat/eza/zoxide)" // { default = true; }; shell.enable = lib.mkEnableOption "the zsh shell experience (starship prompt, bat/eza/zoxide)" // { default = true; };
keys.enable = lib.mkEnableOption "the SSH + GPG agent (gpg-agent fronting SSH, pinentry-qt)" // { default = true; }; keys.enable = lib.mkEnableOption "the SSH + GPG agent (gpg-agent fronting SSH, pinentry-qt)" // { default = true; };
fastfetch.enable = lib.mkEnableOption "fastfetch system info fronted by the themed Nomarchy logo" // { default = true; };
ghostty.enable = lib.mkEnableOption "Nomarchy's Ghostty configuration" // { default = true; }; ghostty.enable = lib.mkEnableOption "Nomarchy's Ghostty configuration" // { default = true; };
btop.enable = lib.mkEnableOption "btop with the per-theme nomarchy theme" // { default = true; }; btop.enable = lib.mkEnableOption "btop with the per-theme nomarchy theme" // { default = true; };
stylix.enable = lib.mkEnableOption "Stylix theming for the long tail of apps (GTK, Qt, cursors)" // { default = true; }; stylix.enable = lib.mkEnableOption "Stylix theming for the long tail of apps (GTK, Qt, cursors)" // { default = true; };

Binary file not shown.

View File

@@ -12,6 +12,14 @@ let
# Reused by the greeter banner and MOTD so the brand name lives in one # Reused by the greeter banner and MOTD so the brand name lives in one
# place (system.nixos.distroName, set below). # place (system.nixos.distroName, set below).
distroName = config.system.nixos.distroName; distroName = config.system.nixos.distroName;
# The Nomarchy glyph font: a single-glyph face (the logo at U+F000) used
# by the Waybar menu button in the summer themes. Pinned via
# `font-family: Nomarchy` in their CSS, since Nerd Fonts also occupy
# U+F000 (a glass icon) and would otherwise win.
nomarchyLogoFont = pkgs.runCommandLocal "nomarchy-logo-font" { } ''
install -Dm444 ${./branding/Nomarchy.ttf} $out/share/fonts/truetype/Nomarchy.ttf
'';
in in
{ {
imports = [ ./options.nix ./plymouth.nix ./file-manager.nix ]; imports = [ ./options.nix ./plymouth.nix ./file-manager.nix ];
@@ -157,6 +165,8 @@ in
# The legacy-ported waybar identities (summer-day/night) use # The legacy-ported waybar identities (summer-day/night) use
# FontAwesome codepoints in their layouts and list it in css. # FontAwesome codepoints in their layouts and list it in css.
font-awesome font-awesome
# The Nomarchy logo glyph (U+F000) for the summer menu button.
nomarchyLogoFont
]; ];
fontconfig.defaultFonts = { fontconfig.defaultFonts = {
monospace = lib.mkDefault [ "JetBrainsMono Nerd Font" ]; monospace = lib.mkDefault [ "JetBrainsMono Nerd Font" ];

View File

@@ -90,6 +90,10 @@ window#waybar {
margin-left: 15px; margin-left: 15px;
padding-left: 20px; padding-left: 20px;
padding-right: 21px; padding-right: 21px;
/* The Nomarchy mark lives at U+F000 in the dedicated "Nomarchy" font;
pin the family or the Nerd Font's glass icon at U+F000 wins. */
font-family: Nomarchy;
font-size: 18px;
} }
#custom-powermenu { #custom-powermenu {

View File

@@ -23,7 +23,7 @@
"custom/launcher": { "custom/launcher": {
"interval": "once", "interval": "once",
"format": "󰣇", "format": "\uf000",
"on-click": "nomarchy-menu", "on-click": "nomarchy-menu",
"tooltip-format": "Nomarchy menu" "tooltip-format": "Nomarchy menu"
}, },

View File

@@ -99,6 +99,9 @@ window#waybar {
margin-left: 15px; margin-left: 15px;
padding-left: 20px; padding-left: 20px;
padding-right: 21px; padding-right: 21px;
/* The Nomarchy mark lives at U+F000 in the dedicated "Nomarchy" font;
pin the family or the Nerd Font's glass icon at U+F000 wins. */
font-family: Nomarchy;
font-size: 20px; font-size: 20px;
} }

View File

@@ -23,7 +23,7 @@
"custom/nomarchy": { "custom/nomarchy": {
"interval": "once", "interval": "once",
"format": "󱄅", "format": "\uf000",
"on-click": "nomarchy-menu", "on-click": "nomarchy-menu",
"tooltip-format": "Nomarchy menu" "tooltip-format": "Nomarchy menu"
}, },