# Live ISO host — boot the full Nomarchy desktop from a USB stick or QEMU # without touching the disk. No installer yet (see roadmap); this target # exists to test the distro end-to-end on real hardware. { lib, pkgs, username, nomarchySrc, ... }: { networking.hostName = "nomarchy-live"; isoImage.volumeID = lib.mkForce "NOMARCHY_LIVE"; isoImage.edition = lib.mkForce "live"; # Do NOT touch networking.wireless here: since NixOS 26.05 the # NetworkManager module drives its wifi backend through it # (wireless.enable = true + dbusControlled). Force-disabling it # kills NM's supplicant — wifi devices vanish from nmtui even # though the driver is loaded (seen on a Latitude 5410 / AX201). # ── Live user: no password, straight into the desktop ────────────── users.users.${username} = { isNormalUser = true; initialHashedPassword = ""; extraGroups = [ "wheel" "networkmanager" "video" "render" "audio" "input" ]; }; security.sudo.wheelNeedsPassword = false; services.getty.autologinUser = lib.mkForce username; # Boot straight into Hyprland once; logging out lands on tuigreet. services.greetd.settings.initial_session = { command = "start-hyprland"; user = username; }; # ── Hardware breadth ──────────────────────────────────────────────── # Force-loading every GPU driver in the initrd (amdgpu+radeon+nouveau+ # i915) panics most machines — only one of them can claim the GPU and # the others explode. `availableKernelModules` lets udev load just the # one that matches; virtio_gpu covers QEMU (tools/test-live-iso.sh). boot.initrd.availableKernelModules = [ "amdgpu" "radeon" "nouveau" "i915" "virtio_gpu" ]; services.qemuGuest.enable = lib.mkDefault true; # ── The Nomarchy flake on board ───────────────────────────────────── # Read-only copy in /etc (also pins the flake source into the ISO # closure); seeded writable into the live home so theme switching — # state write + `home-manager switch` — works exactly like on an # installed system. $NOMARCHY_PATH already defaults to ~/.nomarchy. environment.etc."nomarchy".source = nomarchySrc; systemd.services.nomarchy-seed-flake = { description = "Seed a writable Nomarchy flake into the live user's home"; wantedBy = [ "multi-user.target" ]; serviceConfig.Type = "oneshot"; script = '' home=/home/${username} if [ ! -e "$home/.nomarchy" ]; then cp -r ${nomarchySrc} "$home/.nomarchy" chmod -R u+w "$home/.nomarchy" chown -R ${username}:users "$home/.nomarchy" fi ''; }; services.getty.helpLine = lib.mkForce '' Welcome to the Nomarchy live environment. The graphical session autologins as '${username}' (no password). Theme switching: nomarchy-theme-sync apply (or SUPER+T) Wallpapers: nomarchy-theme-sync bg next (or SUPER+SHIFT+T) Install to disk: nomarchy-install The flake lives at ~/.nomarchy. ''; # ── Live-session desktop tweaks ───────────────────────────────────── home-manager.users.${username} = { wayland.windowManager.hyprland.settings = { # QEMU (and some panels) report a tiny "preferred" mode; ask for # the highest resolution instead. monitor = lib.mkForce [ ",highres,auto,1" ]; # Welcome toast once the session is up (concatenated onto the # base exec-once list). exec-once = [ "sh -c 'sleep 3; notify-send -a Nomarchy \"Welcome to Nomarchy\" \"SUPER+Return terminal · SUPER+T themes · install with nomarchy-install\"'" ]; }; }; system.stateVersion = "26.05"; }