feat(session): first-boot welcome toast (#81)
All checks were successful
Check / eval (push) Successful in 4m23s
All checks were successful
Check / eval (push) Successful in 4m23s
One-shot user unit fires a dismissible "You're set" notification on the first graphical session (SUPER+M / SUPER+T / SUPER+? + Network + Doctor), then writes settings.firstBootShown into the flake checkout. Skips the live ISO hostname (hosts/live.nix keeps its own toast). Toggle: nomarchy.firstBootWelcome.enable. checks.first-boot covers the gate. Verified: V2 — flake check --no-build; checks.first-boot green; local shim smoke; downstream-template-home ships the unit.
This commit is contained in:
37
modules/home/first-boot.nix
Normal file
37
modules/home/first-boot.nix
Normal file
@@ -0,0 +1,37 @@
|
||||
# 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" ];
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user