docs: expand roadmap (power, opt-in services, display/UX, control center)

Captures a batch of new roadmap items from a planning pass:
- repo sanitize/organize (incl. the now-redundant console.useXkbConfig /
  boot.initrd.systemd.enable the installer writes, post LUKS-keymap fix)
- laptop power/battery management (PPD-vs-TLP, thermald, charge thresholds)
- opt-in services & integrations (Nextcloud/Syncthing, LM Studio/Ollama,
  containers, Tailscale, Steam/OBS, printing, backups, Flatpak)
- display/monitor management (hotplug profiles, dock story)
- night light (hyprsunset), runtime keyboard-layout switching, swaync DND
- snapshot browse/restore UX, update-awareness indicator
- a "nomarchy" control center + first-boot welcome

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-06-14 12:27:32 +01:00
parent 3f36183021
commit 7da6bb979e

View File

@@ -389,6 +389,82 @@ close · `SUPER+1..9` workspaces · `Print` region screenshot.
no SSH agent, so no socket contention); screen lock doesn't flush the no SSH agent, so no socket contention); screen lock doesn't flush the
cache. Remaining (optional): a session-level `SSH_AUTH_SOCK` export so GUI cache. Remaining (optional): a session-level `SSH_AUTH_SOCK` export so GUI
clients launched outside a shell also see the agent. clients launched outside a shell also see the agent.
- **Sanitize & organize the repo:** a housekeeping pass for consistency
and clarity. Candidate targets (scope still to be defined): prune
now-redundant config (e.g. the installer still writes
`console.useXkbConfig` / `boot.initrd.systemd.enable` into `system.nix`,
which are distro-wide defaults as of the LUKS-keymap fix); reconcile the
README option tables with the actual `nomarchy.*` surface; audit
comments/docs for drift against the code; and re-check that every file
still earns its place under the `modules`/`hosts`/`themes`/`pkgs`/`tools`
rule of thumb.
- **Laptop power / battery management:** today the distro does *no* active
power management — only `services.upower` is on, and that's just battery
*reporting* for the Waybar widget; CPU/thermal/charge behaviour is whatever
the kernel and the nixos-hardware profile default to. Add a real power
story behind a `nomarchy.system.power.*` surface, gated to laptops (the
installer already detects chassis):
- **profiles:** ship `power-profiles-daemon` by default (the upstream-
aligned choice — power-saver/balanced/performance via `powerprofilesctl`),
with a switcher in the rofi menu and a Waybar indicator. Offer **TLP** as
an opt-in for maximum battery life (note: mutually exclusive with PPD, and
more aggressive/opaque). **Decision to make:** PPD-default vs TLP-default.
- **thermal:** `thermald` on Intel (the Latitude is Intel) to avoid
throttling.
- **longevity:** battery charge thresholds (e.g. stop charging at ~80%)
where the hardware supports it.
- **cohere** with `modules/home/idle.nix` (idle lock / display-off /
suspend) and review logind lid handling so the power behaviours line up.
- **Opt-in services & integrations:** the counterpart to the opt-*out*
application suite above — heavier or more personal integrations shipped
**off by default**, each a `nomarchy.services.<name>.enable` toggle a
downstream flips on in one line. Keeps the base lean while making common
additions trivial. Candidates by area:
- **cloud/sync:** Nextcloud client; Syncthing (`services.syncthing`)
- **local AI:** LM Studio (`lmstudio`); Ollama (`services.ollama`, optional
GPU accel) — pairs with the menu's Ask-Claude philosophy
- **containers/VMs:** Docker/Podman; libvirt + virt-manager
- **networking:** Tailscale (`services.tailscale`); WireGuard
- **gaming/media:** Steam (`programs.steam`); OBS Studio
- **devices:** printing (CUPS + Avahi); KDE Connect / phone integration;
OpenRGB
- **backup:** restic/borg (`services.restic`)
- **escape hatch:** Flatpak (`services.flatpak`) for apps outside nixpkgs
Decisions: the curated set; whether system services and GUI apps share one
surface or split (`nomarchy.services.*` system-side vs home-side packages);
and how it relates to `nomarchy.apps.*` (opt-out suite). Unfree entries are
already covered (`allowUnfree = true`).
- **Display / monitor management:** today Hyprland just uses
`monitor = ,preferred,auto,1` (mkDefault). Add a real external-monitor/dock
story: declarative per-output config, hotplug profiles (kanshi-style, or
Hyprland's own monitor rules), and optionally a GUI arranger (nwg-displays
writes Hyprland monitor config). Decide declarative-only vs GUI, and the
option shape (`nomarchy.monitors` vs plain Hyprland `monitor` lists).
- **Night light / blue-light filter:** schedulable colour-temperature shift
via `hyprsunset` (Hyprland-native; wlsunset/gammastep are alternatives) —
sunset/sunrise or a fixed schedule, with a menu + Waybar toggle.
- **Runtime keyboard-layout switching:** the session layout is a single
`nomarchy.keyboard.layout` today. Support a list of layouts with a toggle
bind (`hyprctl switchxkblayout` / xkb `grp:` options) and a Waybar
indicator for the active layout. Natural follow-on to the LUKS-keymap work
— keep the system (console/initrd) and session layouts in sync.
- **Do-Not-Disturb:** a swaync DND toggle (`swaync-client -dn`) wired into
the menu and a Waybar indicator, to silence notifications for
presentations/focus.
- **Snapshot browse/restore UX:** snapper already takes BTRFS timeline
snapshots (`nomarchy.system.snapper`); surface them from the desktop — a
rofi menu (or btrfs-assistant) to browse/diff/restore and boot-from-
snapshot — so rollback isn't CLI-only.
- **Update awareness:** updates are manual today (`sys-update`/`home-update`);
add a Waybar indicator / notification when flake inputs are stale or a new
nixpkgs rev is available (optionally with a pending-change count). Augments,
never replaces, the explicit rebuild flow.
- **"nomarchy" control center:** a single TUI/GUI front-end over the common
toggles — theme, power profile, opt-in services, display, DND — built on
the same `nomarchy-theme-sync` / `nomarchy.*` surface the menu already
uses. Plus a first-boot welcome that lands new installs in a guided "pick
your theme / essentials" flow (ties into the branding work).
## Known issues & follow-ups ## Known issues & follow-ups
-**Yazi TOML parse error on startup:** yazi 26.x made fetchers' -**Yazi TOML parse error on startup:** yazi 26.x made fetchers'