docs: README for the v1 QA batch (menu, swaync, idle, Plymouth, sys-update)
Options/keybinds/layout tables, sys-update/home-update workflow, the new module tree, and roadmap updates (menu system + nm-applet shipped; theme parity, branding round 2, swayosd, ask-Claude module remain). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
83
README.md
83
README.md
@@ -54,7 +54,10 @@ Flat on purpose. Two module trees, one options file each, no hidden layers.
|
||||
│ ├── hyprland.nix # all JSON-driven
|
||||
│ ├── waybar.nix
|
||||
│ ├── ghostty.nix
|
||||
│ └── btop.nix
|
||||
│ ├── btop.nix
|
||||
│ ├── fuzzel.nix # launcher + nomarchy-menu (power, clip)
|
||||
│ ├── swaync.nix # notifications, same JSON
|
||||
│ └── idle.nix # hyprlock + hypridle, same JSON
|
||||
├── hosts/
|
||||
│ ├── default/ # reference machine (thin: boot, user, hostname)
|
||||
│ └── live.nix # bootable live ISO (try the distro, no install)
|
||||
@@ -144,6 +147,13 @@ sudo nixos-rebuild switch --flake .#default # system: rare
|
||||
home-manager switch --flake .#me # desktop: every theme change, no sudo
|
||||
```
|
||||
|
||||
Day-to-day you'll use the shipped shortcuts instead:
|
||||
|
||||
```sh
|
||||
sys-update # nix flake update + system rebuild (BTRFS snapshot first when available)
|
||||
home-update # home-manager switch (no flake update, no sudo)
|
||||
```
|
||||
|
||||
Override anything with plain NixOS/HM options (the distro uses `mkDefault`
|
||||
throughout) or the `nomarchy.*` surface:
|
||||
|
||||
@@ -151,12 +161,18 @@ throughout) or the `nomarchy.*` surface:
|
||||
|---|---|---|
|
||||
| `nomarchy.stateFile` | — (required) | Path to your theme-state.json |
|
||||
| `nomarchy.terminal` | `"ghostty"` | Terminal for keybinds and `$TERMINAL` |
|
||||
| `nomarchy.keyboard.layout` | `"us"` | XKB layout for the Hyprland session (installer writes it; pairs with xkb + `console.useXkbConfig` in system.nix) |
|
||||
| `nomarchy.keyboard.variant` | `""` | XKB variant for the session |
|
||||
| `nomarchy.hyprland.enable` | `true` | Nomarchy's Hyprland config |
|
||||
| `nomarchy.waybar.enable` | `true` | Nomarchy's Waybar |
|
||||
| `nomarchy.fuzzel.enable` | `true` | Themed fuzzel + `nomarchy-menu` (power menu) |
|
||||
| `nomarchy.swaync.enable` | `true` | swaync notifications, themed |
|
||||
| `nomarchy.idle.enable` | `true` | hyprlock + hypridle (idle lock 5 min, display off 10, suspend 30) |
|
||||
| `nomarchy.ghostty.enable` | `true` | Nomarchy's Ghostty |
|
||||
| `nomarchy.btop.enable` | `true` | btop with per-theme colors |
|
||||
| `nomarchy.stylix.enable` | `true` | GTK/Qt/cursor theming |
|
||||
| `nomarchy.themesDir` | Nomarchy's `themes/` | Where per-theme app overrides are probed |
|
||||
| `nomarchy.system.plymouth.enable` | `true` | Branded boot splash, background from the theme JSON (recolors on system rebuilds) |
|
||||
| `nomarchy.system.greeter.enable` | `true` | greetd/tuigreet |
|
||||
| `nomarchy.system.audio.enable` | `true` | Pipewire stack |
|
||||
| `nomarchy.system.bluetooth.enable` | `true` | Bluetooth + blueman |
|
||||
@@ -199,6 +215,7 @@ per theme — a single place to look, unlike the old distro's split:
|
||||
| `btop.theme` | baked into the generation (generated from the palette when absent) |
|
||||
| `waybar.css` | **whole-swap**: replaces the generated bar style entirely (probed at eval time, self-contained) |
|
||||
| `waybar.jsonc` | whole-swap for the bar *layout* (must be plain JSON) |
|
||||
| `fuzzel.ini` | **whole-swap**: replaces the generated launcher/menu config entirely |
|
||||
|
||||
Six ported themes ship a `waybar.css` identity (catppuccin, lumon, nord,
|
||||
retro-82, summer-day, summer-night). Custom user themes can live in
|
||||
@@ -214,11 +231,14 @@ nomarchy-theme-sync set ui.gapsOut 16 # tweak one knob (also a switch)
|
||||
nomarchy-theme-sync bg next # cycle wallpapers — instant, no rebuild
|
||||
nomarchy-theme-sync bg auto # back to the theme's default wallpaper
|
||||
nomarchy-theme-sync get colors.accent
|
||||
sys-update # update inputs + rebuild the system (snapshots first)
|
||||
home-update # rebuild just the desktop layer
|
||||
```
|
||||
|
||||
Keybinds: `SUPER+Return` terminal · `SUPER+D` launcher · `SUPER+T` theme
|
||||
picker · `SUPER+SHIFT+T` next wallpaper · `SUPER+Q` close · `SUPER+1..9`
|
||||
workspaces · `Print` region screenshot.
|
||||
picker · `SUPER+SHIFT+T` next wallpaper · `SUPER+Escape` power menu ·
|
||||
`SUPER+N` notifications · `SUPER+CTRL+V` clipboard history · `SUPER+Q`
|
||||
close · `SUPER+1..9` workspaces · `Print` region screenshot.
|
||||
|
||||
## 6. Extending
|
||||
|
||||
@@ -234,40 +254,45 @@ workspaces · `Print` region screenshot.
|
||||
on fuzzel — already shipped for SUPER+D/SUPER+T, dmenu mode does nested
|
||||
menus and per-entry icons, and its INI theme can be baked from
|
||||
theme-state.json like every other app:
|
||||
- `modules/home/fuzzel.nix`: colors/fonts from the theme JSON (today the
|
||||
launcher is the one surface that ignores the theme)
|
||||
- `nomarchy-menu` dispatcher script over `fuzzel --dmenu`, Omarchy-style
|
||||
nesting: Theme ▸ (apply/wallpaper) · Network ▸ nmtui · Bluetooth ▸
|
||||
blueman · Power ▸ lock/suspend/reboot/poweroff · Capture ▸ screenshot;
|
||||
actions delegate to nomarchy-theme-sync and friends
|
||||
- script modules (each a small dmenu pipeline, no plugin framework):
|
||||
calculator (`--prompt-only` → `qalc -t` → result re-shown via `--mesg`,
|
||||
Enter copies / chains; needs libqalculate) · clipboard history
|
||||
(cliphist ⇄ fuzzel ⇄ wl-copy; also adds clipboard persistence) · file
|
||||
open (`fd . ~` → xdg-open) · web search (query → xdg-open) · **ask
|
||||
Claude**: `--prompt-only` → `$TERMINAL -e claude "<question>"` — the
|
||||
claude CLI auths via OAuth against a Pro/Max subscription (no API
|
||||
key); REPL stays open for follow-ups (claude-code in nixpkgs is
|
||||
unfree — needs a per-package allowUnfree)
|
||||
- ✓ shipped: `modules/home/fuzzel.nix` (palette/fonts/border from the
|
||||
theme JSON, `themes/<slug>/fuzzel.ini` whole-swap) and the
|
||||
`nomarchy-menu` dispatcher: root picker (no args) · `power`
|
||||
(lock/logout/suspend/hibernate/reboot/shutdown, SUPER+Escape) ·
|
||||
`theme` (SUPER+T) · `clipboard` (cliphist, SUPER+CTRL+V) · `calc`
|
||||
(qalc, copy/chain) · `files` (fd → xdg-open) · `web` (DuckDuckGo)
|
||||
- next modules: Network ▸ nmtui · Bluetooth ▸ blueman · Capture ▸
|
||||
screenshot · **ask Claude**: `--prompt-only` →
|
||||
`$TERMINAL -e claude "<question>"` — the claude CLI auths via OAuth
|
||||
against a Pro/Max subscription (no API key); REPL stays open for
|
||||
follow-ups (claude-code in nixpkgs is unfree — allowUnfree is on)
|
||||
- known limits accepted for now: no live-as-you-type results (dmenu
|
||||
input is static per invocation) and no image previews
|
||||
- decision record: this resolves the old Walker/Lua question in favor of
|
||||
simplicity — no GTK4 launcher, no second theming pipeline, no image
|
||||
previews (instant `bg next` covers wallpaper browsing); the dispatcher
|
||||
owns the menu structure, so the renderer stays swappable
|
||||
- We need to add networkManager applet to waybar so user can easily connect to internet
|
||||
- **Theme parity with legacy:** summer-day/night now carry their legacy
|
||||
bar layouts as `waybar.jsonc` whole-swaps (adapted: dead legacy script
|
||||
modules dropped, Nerd-Fonts-v2 codepoints remapped to FontAwesome/v3,
|
||||
logo button opens nomarchy-menu); the other four identity themes are
|
||||
palette recolors and already match. Remaining: a visual pass over all
|
||||
six on the live ISO
|
||||
- **Per-theme fuzzel identity:** the `themes/<slug>/fuzzel.ini` whole-swap
|
||||
mechanism ships; what remains is authoring the inis for the six identity
|
||||
themes from their legacy rofi.rasi files (per-element colors like
|
||||
summer-night's green inputbar aren't expressible in fuzzel's flat
|
||||
scheme — approximate, note the rest as a renderer limitation)
|
||||
- **Faster switches:** move `backgrounds/` out of the flake source (the 86 MB
|
||||
re-copy on every state write is the main eval tax), then pre-built theme
|
||||
variants if still needed
|
||||
- Plymouth + SDDM/greeter theming from the same JSON
|
||||
- Greeter (tuigreet/SDDM) theming from the same JSON (Plymouth ships since
|
||||
v1: `nomarchy.system.plymouth.*`, background tinted from the state file)
|
||||
- Installer round 2: multi-disk BTRFS RAID, impermanence, BIOS/legacy
|
||||
boot (v1 `nomarchy-install` is single-disk UEFI — see `pkgs/nomarchy-install`)
|
||||
- `hyprlock`/`hypridle`, swayosd, launch-or-focus UX scripts
|
||||
- swaync notification center (notify-send currently renders bare)
|
||||
- **Distro branding:** replace the NixOS brand with Nomarchy everywhere it
|
||||
surfaces — `system.nixos.distroName`/`distroId` (flows into
|
||||
`/etc/os-release`, the live ISO's boot-menu label and the installed
|
||||
system's systemd-boot entries), `isoImage.splashImage`/`grubTheme` for
|
||||
the ISO boot screen, tuigreet/MOTD text. Caveats: `distroId` also
|
||||
changes `DEFAULT_HOSTNAME` and some upstream `isNixos` checks, and
|
||||
nixos-* CLI names stay (renaming tooling is not worth the drift)
|
||||
- swayosd (volume/brightness OSD), launch-or-focus UX scripts
|
||||
- **Distro branding, round 2:** `distroName = "Nomarchy"` ships
|
||||
(os-release `PRETTY_NAME`, systemd-boot entries, ISO menu label).
|
||||
Remaining: `isoImage.splashImage`/`grubTheme` art for the ISO boot
|
||||
screen, tuigreet/MOTD text, and the `distroId` question (it changes
|
||||
`DEFAULT_HOSTNAME` and upstream `isNixos` checks — needs a test pass;
|
||||
nixos-* CLI names stay regardless)
|
||||
|
||||
Reference in New Issue
Block a user