# First-session welcome toast (nomarchy.firstBootWelcome) — one dismissible # "you're set" notification pointing at SUPER+M / SUPER+T / SUPER+? and # Network, then writes settings.firstBootShown into the flake checkout # (GOALS: no state outside the checkout). Live ISO keeps its own toast # (hosts/live.nix); the script self-skips on hostname nomarchy-live. { config, lib, pkgs, ... }: { config = lib.mkIf config.nomarchy.firstBootWelcome.enable { systemd.user.services.nomarchy-first-boot = { Unit = { Description = "Nomarchy first-session welcome toast"; PartOf = [ "graphical-session.target" ]; # After the session (and preferably the notification daemon) is up. After = [ "graphical-session.target" "graphical-session-pre.target" ]; }; Service = { Type = "oneshot"; # PATH: real notify-send + theme-sync; VM check shims both via PATH. # NOMARCHY_PATH matches home.sessionVariables so the marker lands # in the user's flake checkout. Environment = [ "PATH=${lib.makeBinPath [ pkgs.libnotify pkgs.nomarchy-theme-sync pkgs.coreutils ]}" "NOMARCHY_PATH=%h/.nomarchy" ]; # Brief settle so swaync is accepting toasts (live ISO uses sleep 3). ExecStartPre = "${pkgs.coreutils}/bin/sleep 2"; ExecStart = "${pkgs.nomarchy-first-boot}/bin/nomarchy-first-boot"; }; Install.WantedBy = [ "graphical-session.target" ]; }; }; }