diff --git a/.claude/settings.local.json b/.claude/settings.local.json index f78f76e..354cf9b 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -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(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\")" ] } } diff --git a/README.md b/README.md index e3654ca..4c50913 100644 --- a/README.md +++ b/README.md @@ -325,16 +325,20 @@ close · `SUPER+1..9` workspaces · `Print` region screenshot. (needs a full grub theme dir), and the `distroId` question (it changes `DEFAULT_HOSTNAME` and upstream `isNixos` checks — needs a test pass; nixos-* CLI names stay regardless) -- **fastfetch branding:** legacy ships an ASCII-art logo - (`core/branding/logo.txt` on the legacy branch) intended as the fastfetch - image. Vendor it, resize to a sensible terminal width, and color it from - the palette (accent), then wire a `fastfetch` config that uses it. (No - fastfetch config in v1 yet.) -- **Nomarchy logo font in Waybar:** legacy's `core/branding/Nomarchy.ttf` - is a glyph font whose logo codepoint was used as the Waybar main-menu - button (e.g. the summer-night bar). Vendor the font, install it, and set - the `custom/nomarchy` button's `format` to that glyph (currently `󱄅`, a - Nerd Font icon) so the button shows the real Nomarchy mark. +- ✓ **fastfetch branding:** `modules/home/fastfetch.nix` + (`nomarchy.fastfetch.enable`) — the vendored vector logo, recolored to + the palette accent and rendered to compact block-art via chafa at build + time (tracks the theme), fronting a curated module list. Replaces the + oversized legacy ASCII with a themed, sized logo. +- ✓ **Nomarchy logo font in Waybar:** vendored `Nomarchy.ttf` + (`modules/nixos/branding/`), installed via `fonts.packages`, and the + summer-day/night menu buttons now use its `U+F000` glyph with + `font-family: Nomarchy` pinned in their CSS (Nerd Fonts also occupy + 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 persistent (timeout 0) and replaced in place by "applied ✓" / failure via a synchronous tag, so a multi-minute switch never reads as a failed diff --git a/modules/home/default.nix b/modules/home/default.nix index 4539e79..5b22305 100644 --- a/modules/home/default.nix +++ b/modules/home/default.nix @@ -19,6 +19,7 @@ ./osd.nix # swayosd volume/brightness OSD, themed ./shell.nix # zsh + starship + bat/eza/zoxide, themed ./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 diff --git a/modules/home/fastfetch.nix b/modules/home/fastfetch.nix new file mode 100644 index 0000000..6d2422e --- /dev/null +++ b/modules/home/fastfetch.nix @@ -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"; } + ]; + }; + }; + }; +} diff --git a/modules/home/options.nix b/modules/home/options.nix index 234cb09..0a328b7 100644 --- a/modules/home/options.nix +++ b/modules/home/options.nix @@ -70,6 +70,7 @@ 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; }; 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; }; 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; }; diff --git a/modules/nixos/branding/Nomarchy.ttf b/modules/nixos/branding/Nomarchy.ttf new file mode 100644 index 0000000..b09cd9f Binary files /dev/null and b/modules/nixos/branding/Nomarchy.ttf differ diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index ebc9231..03ccd68 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -12,6 +12,14 @@ let # 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; + + # 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 { imports = [ ./options.nix ./plymouth.nix ./file-manager.nix ]; @@ -157,6 +165,8 @@ in # The legacy-ported waybar identities (summer-day/night) use # FontAwesome codepoints in their layouts and list it in css. font-awesome + # The Nomarchy logo glyph (U+F000) for the summer menu button. + nomarchyLogoFont ]; fontconfig.defaultFonts = { monospace = lib.mkDefault [ "JetBrainsMono Nerd Font" ]; diff --git a/themes/summer-day/waybar.css b/themes/summer-day/waybar.css index aa1a4e8..85617ca 100755 --- a/themes/summer-day/waybar.css +++ b/themes/summer-day/waybar.css @@ -90,6 +90,10 @@ window#waybar { margin-left: 15px; padding-left: 20px; 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 { diff --git a/themes/summer-day/waybar.jsonc b/themes/summer-day/waybar.jsonc index 8fb252e..7909d2c 100644 --- a/themes/summer-day/waybar.jsonc +++ b/themes/summer-day/waybar.jsonc @@ -23,7 +23,7 @@ "custom/launcher": { "interval": "once", - "format": "󰣇", + "format": "\uf000", "on-click": "nomarchy-menu", "tooltip-format": "Nomarchy menu" }, diff --git a/themes/summer-night/waybar.css b/themes/summer-night/waybar.css index a52bda3..da7538c 100644 --- a/themes/summer-night/waybar.css +++ b/themes/summer-night/waybar.css @@ -99,6 +99,9 @@ window#waybar { margin-left: 15px; padding-left: 20px; 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; } diff --git a/themes/summer-night/waybar.jsonc b/themes/summer-night/waybar.jsonc index ffa36e2..875a96d 100644 --- a/themes/summer-night/waybar.jsonc +++ b/themes/summer-night/waybar.jsonc @@ -23,7 +23,7 @@ "custom/nomarchy": { "interval": "once", - "format": "󱄅", + "format": "\uf000", "on-click": "nomarchy-menu", "tooltip-format": "Nomarchy menu" },