feat: make VM and live ISO match an installed Nomarchy

- Migrate VM and graphical ISO to home-manager.nixosModules.home-manager;
  drop the standalone-HM sudo-based activation script (ran HM against
  /root because HOME wasn't reset) in flake.nix, core/system/vm-guest.nix,
  hosts/live-iso.nix.
- Run swaybg as nomarchy-wallpaper.service instead of a silent Hyprland
  exec-once so failures surface in systemctl.
- Skip the battery monitor unit on hosts without /sys/class/power_supply/BAT*
  (VMs, desktops).
- Don't wrap walker --dmenu in uwsm-app; redirect setsid background std-fds
  in nomarchy-launch-walker so $(menu ...) in nomarchy-menu doesn't hang.
- Restart waybar/walker via systemctl --user rather than pkill + uwsm-app
  to stop the post-theme-switch color race.
- Wire nomarchy-restart-walker/-waybar into nomarchy-theme-set so themes
  that only change the imported CSS reload correctly.
- Waybar: pin #custom-nomarchy to the Nomarchy font and use the U+F000
  codepoint so the logo shows across all themes.
- Auto-install the correct icon-theme package per palette via a new
  nomarchyLib.iconThemePackage helper in lib/default.nix; Everforest now
  actually renders for summer-night.
- Pre-cache every theme's HM generation: new packages.allThemeVariants
  flake output and nomarchy-themes-prebuild script so theme switches are
  cache-only (no Stylix rebuild, no downloads).
- Add nomarchy-test-live-iso to boot the graphical ISO in QEMU the same
  way nomarchy-test-vm does, with virtio-gpu support added to live-iso.nix.
- Installer-generated home.nix/system.nix now ship a curated, commented
  app menu (btop/fastfetch/chromium on by default) plus optional system
  services (Docker, libvirtd, Tailscale, Syncthing, Flatpak, Steam).
- nomarchy-test-vm now wipes the stale nomarchy.qcow2 before launch.
- Remove obsolete GEMINI.md and PLAN.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-04-24 18:20:54 +01:00
parent 096124c04a
commit 877da19770
21 changed files with 368 additions and 148 deletions

View File

@@ -2,7 +2,8 @@ exec-once = uwsm-app -- hypridle
exec-once = uwsm-app -- mako
# exec-once = uwsm-app -- waybar
exec-once = uwsm-app -- fcitx5 --disable notificationitem
exec-once = uwsm-app -- swaybg -i ~/.config/nomarchy/current/background -m fill
# swaybg is started as a systemd user service (nomarchy-wallpaper.service)
# so failures surface in logs and the wallpaper survives Hyprland restarts.
exec-once = uwsm-app -- swayosd-server
exec-once = nomarchy-on-boot

View File

@@ -1,19 +1,10 @@
{ inputs, lib, pkgs, homeActivationPackage ? null, ... }:
{ inputs, lib, pkgs, ... }:
{
# Pre-activate standalone home-manager if provided
system.activationScripts.home-manager-activate = lib.mkIf (homeActivationPackage != null) {
text = ''
USER_HOME="/home/nomarchy"
if [ ! -d "$USER_HOME" ]; then
mkdir -p "$USER_HOME"
chown nomarchy:users "$USER_HOME"
fi
# Run activation as the nomarchy user
${pkgs.sudo}/bin/sudo -u nomarchy ${homeActivationPackage}/activate
'';
deps = [ "users" ];
};
# Home Manager activation is provided by the home-manager.nixosModules.home-manager
# module wired up in flake.nix. It runs as a systemd user service per user and
# deploys ~/.config/hypr, ~/.config/nomarchy, ~/.config/waybar, etc. before the
# graphical session starts.
# Shared VM configuration
virtualisation.vmVariant = {